用python解析gettext`.po`文件
我需要从用python解析gettext`.po`文件,python,gettext,Python,Gettext,我需要从.po文件中提取消息。有没有Python模块可以做到这一点?我编写了一个解析器,但它取决于平台(\r\n与\n) 有更好的方法吗?使用内置的gettext模块: 在我看来,这是谷歌在提供python-gettext之后的第一个搜索结果。如果您想知道这是否是您搜索的内容,那么是的。Babel包括一个用Python编写的.po文件解析器: 内置的gettext模块仅适用于二进制.mo文件。在大多数情况下,您不需要自己解析.po文件。开发人员给翻译人员一个.pot模板文件,他们将其重命名为x
.po
文件中提取消息。有没有Python模块可以做到这一点?我编写了一个解析器,但它取决于平台(\r\n
与\n
)
有更好的方法吗?使用内置的gettext模块:
在我看来,这是谷歌在提供
python-gettext
之后的第一个搜索结果。如果您想知道这是否是您搜索的内容,那么是的。Babel包括一个用Python编写的.po文件解析器:
内置的gettext模块仅适用于二进制.mo文件。在大多数情况下,您不需要自己解析
.po
文件。开发人员给翻译人员一个.pot
模板文件,他们将其重命名为xx_xx.po
并翻译字符串。然后,作为开发人员,您只需使用GNU的gettext
工具(或其Python实现,pygettext
)将它们“编译”到.mo
文件中
但是,如果您想/需要自己解析po文件,而不是编译它们,我强烈建议您使用polib
,一个著名的python库来处理po
文件。它被几个大型项目使用,如Mercurial和Ubuntu的Launchpad翻译引擎:
PyPi软件包主页:
代码存储库:
(原始存储库托管在Bitbucket上,不再支持Mercurial:)
文件:
导入模块是一个文件,具有MIT许可证,因此您可以轻松地将其合并到代码中,如下所示:
import polib
po = polib.pofile('path/to/catalog.po')
for entry in po:
print entry.msgid, entry.msgstr
再简单不过了;)
gettext
非常棒,但它只适用于编译的mo
文件,而不适用于纯文本po
ones像polib
这样的书是未维护的:上一个版本是2017年,bitbucket mercurial回购协议已经关闭。@Boris:这是非常不幸的,它一直是一个了不起的项目。关于回购协议,它已经停止了,因为BitBucket不再支持Mercurial存储库,但至少所有者似乎已经在github设置了git存储库:好消息:经过3年的长时间中断,该项目似乎又恢复了活力!作者正在合并一些pull请求并筛选bug报告。到目前为止,只有一对夫妇承诺在2020年,但至少它没有被放弃。