我有一个应用程序,其中的主要字符串是英语,然后像往常一样,在各种.po/.mo文件中进行各种翻译(使用Flask和Flask-Babel)。有没有可能在我的Python代码中的某个地方获得所有英文字符串的列表?具体地说,我想在网站上有一个管理界面,让人们登录并选择一个任意的短语在某个地方使用,而不必戳到实际的Python代码或.po/.mo文件。这个短语可能会随着时间的推移而改变,但需要翻译,所以它需要是Babel知道的东西。
我确实可以访问实际的.pot文件,所以我可以直接解析它,但如果可能的话,我希望有一个更干净的方法。
发布于 2013-07-04 22:05:30
如果你已经使用了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。
你可以像@Miguel写的那样使用polib。
发布于 2013-07-04 12:12:43
您可以使用polib来实现这一点。
此section of the documentation展示了如何遍历.po文件内容的示例。下面是摘自该页面的一段代码:
import polib
po = polib.pofile('path/to/catalog.po')
for entry in po:
print entry.msgid, entry.msgstrhttps://stackoverflow.com/questions/17460716
复制相似问题