Лучшие практики для создания различных языковых пакетов на сайте? 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);
(конечно, вы обычно выбираете более короткое имя функции, например "_")