Я в настоящее время работаю с codeigniter PHP базирующееся приложение и перешел к сути дела, где оно собирается уйти с несколькими языками.
Является codeigniters собственным классом языка самый эффективный способ обработать языки? Есть ли какой-либо определенный language-tools/libraries, которые являются наиболее часто используемыми в приложениях PHP?
Спасибо!
Я никогда не использовал CI_Language, но похоже, что он использует языковые массивы для перевода.
Слишком упрощенный пример такого метода:
$trans = array(
'MAIN_TITLE' => 'Title Here'
);
echo $trans['MAIN_TITLE'];
Лично я нахожу это очень раздражающим, потому что в этом случае вы редактируете представления, которые загромождены именами ключей массивов вместо полезного текста. Что иногда может быть довольно раздражающим. Не говоря уже о том, что вам приходится запоминать, какие ключи соответствуют каким строкам, если вы используете их в нескольких местах.
Я использую Gettext, который мне кажется намного проще. Вы просто должны обернуть свои строки методом translate: _()
. Затем, когда вы закончите работу над приложением, вы откроете PoEdit и создадите новый языковой файл. PoEdit проанализирует все мои исходные файлы в поисках строк, обернутых следующим образом и вставит их в языковой файл .po. Затем вы можете перебирать строку за строкой и легко переводить текст в PoEdit. Преимущество этого способа в том, что исходный перевод находится прямо в PoEdit, а не в бессмысленном массиве имен ключей в каком-то включаемом файле
Все это значительно облегчает мне жизнь, поскольку я могу обновлять языковые файлы каждую пятницу одним щелчком мыши. Все новые или измененные переводы будут автоматически добавлены в мой языковой файл, а все неиспользуемые переводы будут автоматически удалены. Я отправляю файлы в 3 международных филиала для перевода, и в понедельник утром мои изменения и обновленные языковые файлы готовы к развертыванию
.Вы можете заглянуть в библиотеку php intl. http://php.net/intl