使用python解析gettext` .po`文件

时间:2012-03-06 08:49:35

标签: python gettext

我需要从.po文件中提取消息。是否有Python模块可以做到这一点?我写了一个解析器,但它取决于平台(\r\n\n)。

有更好的方法吗?

3 个答案:

答案 0 :(得分:21)

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

但是,如果你想/需要自己解析po文件,而不是编译它们,我强烈建议你使用polib,一个众所周知的python库来处理po文件。它被几个大型项目使用,例如Mercurial和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 :(得分:1)

Babel包含一个用Python编写的.po文件解析器:

http://babel.edgewall.org/

内置的gettext模块仅适用于二进制.mo文件。

答案 2 :(得分:-4)

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

在我提供python gettext之后,它似乎是Google中的第一个搜索结果。如果您想知道这是否是您搜索的内容,那么是的,它是。