Как обработать динамические локализации сайта?

У меня есть веб-сайт, который в настоящее время является всем на английском языке. Это - онлайн-игра, таким образом, это имеет набор различных страниц со статическим текстом, а также много содержания в базе данных.

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

Я должен хранить переведенные тексты в базе данных, или это должно быть сделано совершенно другим способом? Если это имеет значение вообще, сайт записан в PHP и использует MySQL.

6
задан Ólafur Waage 25 May 2010 в 04:02
поделиться

5 ответов

По моему опыту, выполнение всех переводов вручную может быть настоящим кошмаром! % -)

Я думаю, вы должны сосредоточить свой перевод на командном сайте панели инструментов, таком как меню навигации и все другие настройки профиля пользователя, кнопки вокруг сайта и тому подобное!

сделайте это, включив в свои страницы файл, например:

  include "./includes/languages/english.php";

в файл с именем ex .: english.php поместите как этот ex

define('LAN_USER_LOGIN' , 'User Logged In');
define('LAN_USER_LOGOUT' , 'User Logged Out');
.....

и так далее italian.php, spanish.php, french.php ect ... и в каждом из этих файлов есть одни и те же определенные переменные, но переведенные!

, тогда вы можете позволить пользователю выбирать из списка стран! много способов сделать это кстати!

одним из способов может быть использование сеанса

// if the user haven't selected a language before!!
if (empty($_SESSION['language'])) {
 $_SESSION['language'] = "EN";
} else {
$_SESSION['language'] = YOUR_LANG ;
}

для всего остального контента. Я рекомендую использовать такие инструменты, как

http://code.google.com/intl/it-IT/apis/ajaxlanguage/


ПРИМЕЧАНИЕ : Я рекомендую вам не использовать систему автоматического распознавания, потому что это может привести к очень неприятным результатам, особенно если вы смотрите сайт из другой страны !! или просто вы хотите выбрать из, ненадолго предоставьте пользователю окончательный выбор! ; -)

используйте автоматическое распознавание для регистрации автозаполнения! ; -)

надеюсь это поможет!

1
ответ дан 17 December 2019 в 04:43
поделиться

Я бы рекомендовал использовать gettext с интегрированной средой (например, Zend) и хранить ее в формате файла .po. В формате .po есть редакторы, благодаря которым перевод работает честно. Он также довольно портативен (отсюда и название) и может переместиться с вами в другие игры.

1
ответ дан 17 December 2019 в 04:43
поделиться

Мы используем смешанный подход:

  • База данных для переводов страниц CMS
  • XML для переводов слов / предложений (статические тексты, метки, сообщения об ошибках и т. Д.)

Для базы данных мы обычно используют 2 таблицы: 1 для основного контента, другие переводы форм, поэтому мы можем выбирать, что делать, если перевод недоступен: отображать контент на исходном языке или скрывать его.

Для XML мы используем формат XLIFF , который легко поддерживается многими фреймворками и программным обеспечением

1
ответ дан 17 December 2019 в 04:43
поделиться

Мы используем смешанный подход с фреймворком Zend. Контент страницы (страницы WYSIWYG) хранится в БД (одна запись на каждый язык, нелокализованные данные отделяются от локализованных данных и хранятся в разных таблицах, которые связаны между собой), но метки полей и стандартные сообщения об ошибках / обратной связи хранятся в XML или файлы gettext (по одному на каждый язык).

1
ответ дан 17 December 2019 в 04:43
поделиться

Я бы предложил использовать централизованное хранилище (это может быть таблица базы данных MySQL со столбцом «язык», в котором хранится, на каком языке находится перевод). Это также могут быть файлы XML, по одному для каждого языка.

Если вы ищете еще больше возможных форматов файлов, посмотрите эту страницу документации Zend Framework: http://framework.zend.com/manual/en/zend.translate.adapter.html

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

Другой вариант - использовать стандартные функции PHP. Просто найдите функцию "_ ()". Однако я не работал с этими функциями и только что нашел их, не уверен, насколько хорошо они работают.

1
ответ дан 17 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: