Переводить Kohana-модули удобным способом?

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

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

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


person jannej    schedule 05.06.2011    source источник


Ответы (2)


Вот как я это сделал. Во-первых, 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 "<?php\n\n";
foreach ($translations as $msgid => $msgstr) {
    echo '\'' . $msgid . '\' => \'' . $msgstr . "',\n";
}
echo "\n?>";

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

person jannej    schedule 15.06.2011

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

person biakaveron    schedule 06.06.2011
comment
Спасибо за совет! Кажется впечатляющим, но, возможно, слишком продвинутым для моих нужд. Позже мы рассмотрим это. - person jannej; 15.06.2011