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