Наиболее эффективный способ работы с несколькими естественными языками - PullRequest
12 голосов
/ 30 апреля 2010

В настоящее время я работаю с приложением на базе PHP, разработанным на основе codeigniter, и подошел к моменту, когда оно собирается работать с несколькими языками.

Является ли собственный язык класса codeigniters наиболее эффективным способом работы с языками? Существуют ли какие-либо языковые инструменты / библиотеки, которые обычно используются в приложениях PHP?

Спасибо!

Ответы [ 2 ]

12 голосов
/ 30 апреля 2010

Я никогда не использовал CI_Language, но, похоже, он использует языковые массивы для перевода.

Слишком упрощенный пример метода этого типа:

$trans = array(
    'MAIN_TITLE' => 'Title Here'
);

echo $trans['MAIN_TITLE'];

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

Я использую Gettext , который я считаю намного проще. Вам просто нужно обернуть ваши строки с помощью метода перевода: _(). Затем, как только вы закончите с вашим приложением, вы откроете PoEdit и создадите новый языковой файл. PoEdit проанализирует все мои исходные файлы в поисках строк, обернутых как <?php echo _('Title here') ?>, и вставит их в языковой файл .po. Затем вы можете переходить строка за строкой и легко переводить текст в PoEdit. Преимущество этого в том, что у вас есть исходный перевод прямо внутри PoEdit, вместо бессмысленного имени ключа массива в некоторых файлах включения

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

1 голос
/ 08 мая 2010

Вы можете заглянуть в библиотеку php intl. http://php.net/intl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...