我需要从.po
文件中提取消息。有没有Python模块可以做到这一点?我写了一个解析器,但它依赖于平台(\r\n
vs. \n
)。
还有更好的方法吗?
.po
文件。开发人员为翻译者提供一个 .pot
模板文件,他们将其重命名为 xx_XX.po
并翻译字符串。然后作为开发人员,您只需使用 GNU 的 gettext
工具(或其 Python 实现的 pygettext
)“编译”它们为 .mo
文件。
但是,如果您想要/需要自己解析 po 文件而不是编译它们,我强烈建议您使用 polib
,这是一个知名的用于处理 po
文件的 Python 库。它被许多大规模项目使用,如 Mercurial 和 Ubuntu 的 Launchpad 翻译引擎:
PyPi 包主页: http://pypi.python.org/pypi/polib/
代码存储库: https://github.com/izimobil/polib
(原始存储库托管在不再支持 Mercurial 的 Bitbucket 上: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
再简单不过了 ;)
使用内置的gettext模块:http://docs.python.org/library/gettext.html
在我提供python gettext
后,它作为谷歌搜索结果的第一项出现。如果你想知道这是否是你要搜索的内容,那么是的,就是它。
mo
文件,不能处理纯文本的 po
文件。 - MestreLion
polib
没有维护了:最后一次发布是在 2017 年,而 bitbucket 上的 mercurial 存储库已经失效。 - user3064538