Перевод модулей Kohana удобным способом?

#php #localization #kohana #gettext

#php #локализация #kohana #gettext

Вопрос:

Я искал удобный способ создания и поддержки переводов моих модулей Kohana. Я поиграл с POEdit и извлек все __() из своих модулей. Действительно нравится, как работает POedit, и это просто для запуска быстрого обновления, чтобы собрать все новые строки и сохранить новый каталог позже. Впоследствии я мог бы преобразовать po-файлы в PHP-массивы для сортировки of…it кажется, что все шаги немного сложны.

Я видел этот подход, но я бы предпочел не устанавливать таблицы и новые модули для переводов, я думаю, что это становится слишком сложным и «друпалишным» ;-).

Как вы управляете локализациями и переводами на разные языки в своих проектах Kohana? Любые подсказки были бы высоко оценены!

Ответ №1:

Вот как я это сделал. Прежде всего POEdit для Mac, к сожалению, очень глючный и странный.

В POEdit создан новый каталог с правильным путем и __ в качестве ключевого слова.

Запустите POEdit, чтобы извлечь все строки.

После этого я запустил этот простой PHP-скрипт поверх сгенерированного PO-файла. Выходные данные скрипта я вставил в файлы в i18n-папке проекта.

 $file = 'sv_SE.po';
$translations = array();
$po = file($file);
$current = null;
foreach ($po as $line) {
    if (substr($line,0,5) == 'msgid') {
        $current = trim(substr(trim(substr($line,5)),1,-1));
    }
    if (substr($line,0,6) == 'msgstr') {
        $translations[$current] = trim(substr(trim(substr($line,6)),1,-1));
    }
}

echo "<?phpnn";
foreach ($translations as $msgid => $msgstr) {
    echo ''' . $msgid . '' => '' . $msgstr . "',n";
}
echo "n?>";
  

С помощью POEdit легко поддерживать локализации проекта, поскольку он синхронизирует все строки, просто нажав «Обновить». Я получу отчет о новых и устаревших строках и смогу обновить локализации через несколько минут. Надеюсь, это кому-то поможет.

Ответ №2:

Попробуйте этот модуль I18n_Plural. Мне нравится, как он обрабатывает формы множественного числа, очень просто и непринужденно. В файле readme есть много примеров (показаны на главной странице модуля).

Комментарии:

1. Спасибо за совет! Кажется довольно впечатляющим, но, возможно, слишком продвинутым для моих нужд. Рассмотрим это позже.