Intereting Posts

Что использовать для локализации (приложение php / smarty / pear)?

У меня есть приложение php / smarty / pear, у которого есть собственная реализация локализации, которая включает в себя использование идентификаторов для строк, а строки хранятся в db. в настоящее время приложение доступно только на английском языке, но я начну добавлять другие языки. Текущая реализация очень плохая, и в основном я не большой поклонник повторного изобретения колеса.

Может ли кто-нибудь рекомендовать, что использовать для локализации? Я использовал gettext несколько лет назад, это все еще используется или есть что-то более новое и лучшее?

заранее спасибо.

Я бы использовал gettext, поскольку это зрелая система и предоставляет такие функции, как сингулярные / множественные версии переводов. Чтобы не зависел от доступности расширения php, вы должны вернуться к http://launchpad.net/php-gettext, который обеспечивает чистую PHP-реализацию gettext.

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

Мой лучший совет – посмотреть, как другие приложения (Drupal, Joomla, WordPress) обрабатывают локализацию и реализуют нечто подобное.

Некоторые из приложений, которые я вложил, имеют один файл ini для каждого языка, который содержит определения STRING-ID = «String Value», где STRING-ID аналогичен имени PHP CONSTANT. Эти файлы затем загружаются классом локализации, который имеет функции, которые обрабатывают установку языка, который будет использоваться (на основе значения конфигурации или пользовательских настроек), загрузки файла и обработки перевода STRING-ID в значение строки. Вы в конечном итоге используете его так:

<?php // config.php $lang = "DE"; // languages/de.ini HELLOWORLD="Hallo Welt" OTHERSTRING="Anderer String" // example.php require_once("classes/localization.class.php"); $localize = localization::getInstance(); echo $localize->translate("HELLOWORLD"); ?> 

Это должно произвести нечто вроде Hallo Welt.