用python解析gettext .po文件

用python解析gettext .po文件

问题描述:

我需要从.po文件中提取消息。有没有一个Python模块来做到这一点?我写了一个解析器,但它依赖于平台(如\ r \ n,\ n),所以也许有一些正常的方法来达到那个目的?用python解析gettext .po文件

通天包括.po文件分析器用Python写的:

http://babel.edgewall.org/

内置gettext的模块只能用二进制的.mo文件。

使用内置的gettext模块:http://docs.python.org/library/gettext.html

看来,我作为谷歌在第一个搜索结果提供python gettext后。如果你想知道这是你搜索的内容,那么是的,它是。

+1

'gettext'是真棒,但它只能编译'mo'文件,而不是纯文本'po'那些 – MestreLion 2013-04-30 23:01:45

在大多数情况下,您不需要自己解析.po文件。开发人员给翻译人员一个.pot模板文件,他们将其重命名为xx_XX.po并翻译字符串。然后,你作为开发者只需要使用GNU的gettext工具(或它的Python实现,pygettext

他们“编译”到.mo文件,但是,如果你想/需要解析的PO文件自己,而不是编译它们,我强烈建议您使用polib,一个知名的python库来处理po文件。它由几个大型项目,如水银和Ubuntu的Launchpad翻译引擎:

的PyPI包家: 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

@saeedgnu作品:也许你可以帮助改善它? 'polib'是用于处理po文件的最广泛使用的库,并且它被主动地维护,所以任何改进都将有益于很多*软件 – MestreLion 2016-03-22 15:02:05

+0

我认为它应该是这样的,使用它的程序可能会添加一些条目加载po文件(或创建一个新的pofile对象),它都在内存中 – saeedgnu 2016-03-23 17:41:04