Получить переводы из.po или.mo файла

Как извлечь все переводы из файла.po или.mo? Мне нужно создать массив всех переводов, которые находятся внутри.

5 ответов

Вы можете использовать модуль Zend Translate из Zend Framework.

$translate = new Zend_Translate('gettext', '/path/to/english.mo', 'en');
$translate->addTranslation('/path/to/german.mo', 'de');

echo $translate->_("Example");

$translate->setLocale('de');

echo $translate->_("Example");

или вы можете использовать модуль php gettext, но Zend гораздо удобнее.

msgunfmt - это инструмент Unix, который читает файлы.mo и создает файл.po.

Я использовал po2csv для преобразования po, затем прочитал csv в php, используя fgetcsv() функция.

В PhpWiki 1.2 есть небольшой извлекающий скрипт AWK, который называется translate.sh. Используйте это (в Linux).
Он очищает все.po файлы и генерирует скрипт.php array().

Вы можете использовать PEAR File_Gettext. Код будет тогда:

$mocreator = new File_Gettext_MO();
$mocreator->load('/path/to/mo/file/file.mo');

foreach ($mocreator->strings as $key => $value) {
  echo "Key is $key \n";
  echo "Value is $value \n";
}
Другие вопросы по тегам