Лучшие практики для создания различных языковых пакетов на сайте? PHP

Я уже создал языковой пакет для сайта, но не уверен, что лучший способ - это то, что я делаю.

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

Затем код сайта просто включает соответствующий файл на основе флага, а затем выводит соответствующий элемент массива.

Какие способы сделать это, чтобы уменьшить головные боли и производительность обслуживания?

3 ответа

Решение

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

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

Лучший вариант, который вы могли бы иметь с PHP, - это GetText, но не на всех серверах он встроен, так что это может быть ограничителем показа, если вы управляете своим сервером.

Несколько наиболее распространенных способов сделать это:

1) Использование define('SOME_STRING', 'Some string'); - просто иметь разные файлы, заполненные этими определениями для каждого языка. Это очень просто, и вам не нужно использовать "глобальный" повсеместно.

2) Обернуть строки в функцию: translate('My String') - это более гибко, так как вы можете анализировать свой код для создания списков строк для перевода и добавлять такие функции, как переменные, например, translate('I can count to [number]', 10); (конечно, вы обычно выбираете более короткое имя функции, например "_")

Другие вопросы по тегам