Переводить Kohana-модули удобным способом? - PullRequest
1 голос
/ 06 июня 2011

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

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

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

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Вот как я это сделал. Во-первых, к сожалению, 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 легко поддерживать локализации проекта, поскольку он синхронизирует все строки, но просто нажимает «Обновить». Я получу отчет о новых и устаревших строках и могу обновить локализации через несколько минут. Надеюсь, это кому-нибудь поможет.

0 голосов
/ 06 июня 2011

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

...