Разбор файлов gettext `.po` с python - PullRequest
9 голосов
/ 06 марта 2012

Мне нужно извлечь сообщения из .po файлов.Есть ли модуль Python для этого?Я написал парсер, но это зависит от платформы (\r\n против \n).

Есть ли лучший способ сделать это?

Ответы [ 3 ]

21 голосов
/ 03 апреля 2012

В большинстве случаев вам не нужно анализировать .po файлы самостоятельно.Разработчики предоставляют переводчикам файл шаблона .pot, переименовывают его в xx_XX.po и переводят строки.Тогда вам, как разработчику, нужно только «скомпилировать» их в .mo файлы, используя gettext инструменты GNU (или его реализацию на Python, pygettext)

Но, если вы хотите / должны проанализировать po-файлысамостоятельно, вместо того чтобы их компилировать, я настоятельно рекомендую вам использовать polib, хорошо известную библиотеку python для обработки po файлов.Он используется несколькими крупномасштабными проектами, такими как Mercurial и движок Ubuntu для запуска Launchpad:

PyPi package home: http://pypi.python.org/pypi/polib/

Хранилище кода: https://bitbucket.org/izi/polib/wiki/Home

Документация: http://polib.readthedocs.org

Модуль импорта представляет собой один файл с лицензией MIT, так что вы можете легко включить его в свой код следующим образом:

import polib
po = polib.pofile('path/to/catalog.po')
for entry in po:
    print entry.msgid, entry.msgstr

Это не может быть прощечем это;)

1 голос
/ 06 марта 2012

Babel включает парсер файлов .po, написанный на Python:

http://babel.edgewall.org/

Встроенный модуль gettext работает только с двоичными файлами .mo.

0 голосов
/ 06 марта 2012

Использовать встроенный модуль gettext: http://docs.python.org/library/gettext.html

Он показался мне первым результатом поиска в Google после предоставления python gettext. Если вам интересно, это то, что вы искали, то да, это так.

...