Каков наилучший способ (чтобы избежать изменения повторяющегося кода) для создания многоязычных веб-страниц - PullRequest
1 голос
/ 13 февраля 2010

Каков наилучший способ (чтобы избежать изменения повторяющегося кода) для создания многоязычных веб-страниц? Я знаю, как создать многоязычную веб-страницу без необходимости изменять файлы CSS и Javascript. Но я не могу придумать изящного решения для файлов HTML и Php. Потому что, если у меня есть файлы HTML или Php для каждого языка, мне придется изменить каждый из них, если, например, я добавлю дополнительный div или другой элемент. Я думал, что-то вроде этого:

<div id="multilingual div">
<p><?php echo($multilingual-paragraph); ?></p>
</div>

(Итак, даже если я изменю эти элементы, я просто сделаю это один раз, потому что текст на другом языке будет отображаться из переменной).

Я не знаю Php, поэтому я не знаю, как заставить Php отображать другую переменную в соответствии с языком (я думаю, это как-то связано с условиями IF)

Это хороший способ создания многоязычных веб-страниц или есть другие способы?

(Так что с этим

Ответы [ 3 ]

2 голосов
/ 13 февраля 2010

Проверьте функцию gettext () . Вам не нужно создавать разные файлы для разных языков. Хотя вам придется бороться с файлами переводов.

2 голосов
/ 13 февраля 2010

Вы можете реализовать константное решение для выходных сообщений. Используя функции кэша APC , вы можете хранить несколько сообщений в кэше и загружать их в соответствии с просматриваемыми страницами (хотя это может быть непростым решением, но для этого вам нужно знать php). 1003 *

Это позволит вам поддерживать массив со значениями для каждого языка в кэше. Например:

apc_constants_define('en',array('welcomeMessage'=>'Welcome!'));
apc_constants_define('es',array('welcomeMessage'=>'Bienvenidos!'));
apc_constants_define('de',array('welcomeMessage'=>'Willkommen!'));

через форму AJAX / выберите, вы можете позволить пользователю выбирать язык, который они хотят просматривать ваши страницы. Этот язык будет храниться внутри сессии:

$_SESSION['language'] = 'en';

Далее, в верхней части каждой страницы, вы должны проверить сессию (простую настройку переключателя) и соответственно загрузить константы из кэша.

apc_load_constants($_SESSION['language']);

тогда ваша HTML-страница будет выглядеть так:

<h1><?php echo welcomeMessage; ?></h1>

На мой взгляд, это наиболее эффективный способ интернационализации вашего веб-сайта с легко обслуживаемой системой, который не требует углубления в код, когда вы хотите перевести свою страницу на румынский язык.

1 голос
/ 13 февраля 2010

Как вы сказали, у вас есть языковые файлы php и html, один из способов сделать это:

$lang = '';

switch ($lang_file)
{
   case 'en.php': $lang = 'whatever'; break;
   case 'fr.php': $lang = 'whatever'; break;
   // etc
}

<div id="multilingual div">
<p><?php echo $lang; ?></p>

// or you may include files
<p><?php include_once ($lang); ?></p>
</div>
...