如何获得Babel知道的所有字符串列表?

时间:2013-07-04 01:49:52

标签: flask babel

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用polib

section of the documentation显示了如何迭代.po文件内容的示例。这是从该页面中选取的一个:

import polib

po = polib.pofile('path/to/catalog.po')
for entry in po:
    print entry.msgid, entry.msgstr

答案 1 :(得分: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 编写。