Интернационализация в PHP - PullRequest
       0

Интернационализация в PHP

11 голосов
/ 21 сентября 2010

В настоящее время я изучаю лучшие методы интеграции i18n в проекты.

Есть несколько методов, которые я задумал сделать, во-первых, это схема базы данных для хранения строк и соответствующей локали, но проблема в том, что выбрать строки было бы не так просто, потому что я не хотел бы выполнять задания так:

SELECT text FROM locales WHERE locale = 'en_GB' AND text_id = 245543

Или

SELECT text FROM locales WHERE locale = 'en_GB' AND text_primary = 'hello'

Следующим методом будет сохранение их в файлах, таких как locales/en_gb/login/strings.php, а затем попытка доступа к ним через класс, специально разработанный следующим образом:

$Language = Registry::Construct('Language',array('en_GB'));
echo $Language->login->strings->hello;

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

  • Какие существуют другие методы, которые будут полезны для большой системы
  • Есть ли какой-либо автоматический способ сделать «Перевод» как таковой
  • Должен ли я придерживаться метода базы данных и построить систему для пользователей, чтобы переводить строки с рейтингом / предлагать лучшую версию?
  • Какие системы вы пробовали в прошлом, и я должен изучить их или полностью избежать их.

Ответы [ 4 ]

8 голосов
/ 21 сентября 2010

В дополнение к gettext уже упоминалось, PHP 5.3 имеет встроенную поддержку интернационализации

Если это не вариант, рассмотрите возможность использования Zend Framework Zend_Translate, Zend_Locale и связанных с ним компонентов. Zend_Translate поддерживает ряд адаптеров, включая, помимо прочего, простые массивы, gettext, XmlTm и другие.

5 голосов
/ 21 сентября 2010

Самый впечатляющий метод для изучения - реализация Drupal.Вторым лучшим будет Wordpress.Оба используют gettext и .pot / .po / .mo для локализации.И хорошо, что есть красивый редактор Open Source .po, который называется Poedit.Он доступен для пользователей системы Windows, что делает его более привлекательным.Это также доступно для Mac и Linux.Проверьте это здесь: http://www.poedit.net/

5 голосов
/ 21 сентября 2010

Я реализовал утилиту перевода XML как часть большого проекта.Вы можете найти его здесь , а пример файла перевода здесь (en_US).

3 голосов
/ 21 сентября 2010

Взгляните на библиотеку Gettext (http://php.net/manual/en/book.gettext.php).

Не помещайте свой текст в базу данных. Это только усложнит жизнь команде переводчиков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...