Как обрабатывать динамические локализации сайта? - PullRequest
6 голосов
/ 25 мая 2010

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

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

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

Ответы [ 5 ]

1 голос
/ 29 мая 2010

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

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

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

  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 и т. д. ... и в каждом из этих файлов есть те же переменные, но переведенные!

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

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

// 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 голос
/ 26 мая 2010

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

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

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

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

1 голос
/ 25 мая 2010

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

1 голос
/ 26 мая 2010

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

1 голос
/ 25 мая 2010

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

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

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

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

...