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

В настоящее время я изучаю лучшие методы интеграции 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; 

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

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

Solutions Collecting From Web of "Интернационализация в PHP"

Помимо уже упомянутого gettext , PHP 5.3 поддерживает поддержку интернационализации

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

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

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

Посмотрите на библиотеку Gettext ( http://php.net/manual/en/book.gettext.php ).

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