Подтвердить что ты не робот

Наиболее эффективный способ работы с несколькими естественными языками

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

echo $trans['MAIN_TITLE'];

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

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

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

Ответ 2

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