Помогите решить задачу с реализацией мультиязычности сайта

karen12

Постоялец
Регистрация
26 Фев 2012
Сообщения
108
Реакции
4
Есть сайт на двух языках,
для перевода сайта пользуюсь этим скриптом
PHP:
<?
if (isset( $_REQUEST["lang"])) {
  $_SESSION["lang"] = $_REQUEST["lang"];
}elseif(!isset( $_SESSION["lang"])||( $_SESSION["lang"]=='')){
  $_SESSION["lang"] = 'ru';
}
//тут можно делать проверки всякие на существование файла и вообще регулярные проверки значения этого ланга )
include ('./lang/'.$_SESSION["lang"].'.php');

?>

соотвественно ссылки для перехода между языками
<a href="./main.php?lang=rus" title="Русский">Русский</a>
<a href="./main.php?lang=eng" title="ENG">Английский</a>
файлы хранящие языковые фразы в папке lang
rus.php
eng.php
фразы вывожу <?=$start['title']?> .
Все переводится хорошо, но есть фразы которые находятся в базе, не могу перевести эти фразы например <? echo $_SESSION['content']; ?> (находится в базе mysql) . ?
 
Потому что это не перевод, а вывод заранее подготовленных фраз из файла. Если вам нужен контент на разных языках, то его нужно заранее вносить в базу данных на разных языках и уже потом делать выборку из базы, проверяя, какой язык включен на сайте.
Или установить на сайт какой-нибудь Google Translate, но качество перевода, естественно, будет не на высоте.
 
Так создай в БД 2 таблицы или 2 поля (хз как у тебя архитектура локализации), и в запрос подставляй какое поле исходя из яз. надо выводить:

SELECT content FROM news WHERE lang = '$_GET['lang']' (ну потом ещё на инекцию проверь переменыне)
 
Для языков лучше использовать что то типо этого(используется например в wordpress) Для просмотра ссылки Войди или Зарегистрируйся
 
В том виде, в котором оно у автора, имеет смысл объединить подключаемый файл и результат выборки
То есть если имеем
Подключаемый файл eng.php
PHP:
<?php
    $start = array(
        "title"      => "Main page",
        "b_login"    => "Login",
        "b_register" => "Sign Up"
    );
?>

Таблица `lang_eng`
Код:
+-----------+------------+
|   code    |    text    |
+-----------+------------+
|  phrase1  |    PHP     |
|  phrase2  |  Language  |
+-----------+------------+

То код будет следующим:
PHP:
<?php
if (isset( $_REQUEST["lang"])) {
  $_SESSION["lang"] = $_REQUEST["lang"];
}elseif(!isset( $_SESSION["lang"])||( $_SESSION["lang"]=='')){
  $_SESSION["lang"] = 'ru';
}
//тут можно делать проверки всякие на существование файла и вообще регулярные проверки значения этого ланга )
include ('./lang/'.$_SESSION["lang"].'.php');
$db_result = mysql_fetch_assoc(mysql_query('SELECT * FROM `lang_'.$_SESSION["lang"].'`'));
$locale = array_merge($start, $db_result);
?>

И, соответственно, вывод фраз локализации:
PHP:
<?=$locale['title']?>
<?=$locale['phrase1']?>

В этом случае в таблице новостей может быть например два поля `content_eng` и `content_rus` в каждом из которых своя новость для каждой языковой версии и т.д.

А вообще, это дикий изврат. Так делать (как у автора) локализацию нельзя.
 
Воспади.
Если-бы сейчас работала моя система я бы слил свой скрипт мультиязычности. Всё это у меня прикреплялось к поддоменам: ru.sealink.tk / en.sealink.tk ..... Ну в общем куча языков.
Потом я проверял $_SERVER['REMOTE_HOST'] и выводил то что нужно. Так-же моя система хороша тем что у меня идёт автоматом определение языка пользователя.
Если вам так нужна мультиязычность то уж тогда пишите в ПМ.
Я вам настрокаю её быстро.
 
Назад
Сверху