0

我有一个应用程序,其中主要字符串是英文的,然后像往常一样(使用 Flask 和 Flask-Babel)在各种 .po/.mo 文件中进行各种翻译。是否可以在我的 Python 代码中的某处获取所有英文字符串的列表?具体来说,我想在网站上有一个管理界面,让某人登录并选择要在某个地方使用的任意短语,而无需查看实际的 Python 代码或 .po/.mo 文件。这句话可能会随着时间而改变,但需要翻译,所以它需要是 Babel 知道的东西。

我确实可以访问实际的 .pot 文件,所以我可以解析它,但如果可能的话,我希望有一个更干净的方法。

4

2 回答 2

1

您可以为此使用polib

文档的这一部分显示了如何迭代 .po 文件的内容的示例。这是从该页面获取的一个:

import polib

po = polib.pofile('path/to/catalog.po')
for entry in po:
    print entry.msgid, entry.msgstr
于 2013-07-04T04:12:43.450 回答
0

如果您已经使用 babel,您可以从po文件中获取所有项目:

from babel.messages.pofile import read_po

catalog = read_po(open(full_file_name))
for message in catalog:
    print message.id, message.string

请参阅http://babel.edgewall.org/browser/trunk/babel/messages/pofile.py

您已经可以尝试从mo文件中获取项目:

from babel.messages.mofile import read_mo

catalog = read_po(open(full_file_name))
for message in catalog:
    print message.id, message.string

但是当我上次尝试使用它时,它不可用。请参阅http://babel.edgewall.org/browser/trunk/babel/messages/mofile.py

你可以polib@Miguel写的那样使用。

于 2013-07-04T14:05:29.913 回答