首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么才能得到Babel知道的所有字符串的列表?

我怎么才能得到Babel知道的所有字符串的列表?
EN

Stack Overflow用户
提问于 2013-07-04 09:49:52
回答 2查看 349关注 0票数 0

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-04 22:05:30

如果你已经使用了babel,你可以从po文件中获得所有的项目:

代码语言:javascript
复制
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文件中获取项目:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2013-07-04 12:12:43

您可以使用polib来实现这一点。

section of the documentation展示了如何遍历.po文件内容的示例。下面是摘自该页面的一段代码:

代码语言:javascript
复制
import polib

po = polib.pofile('path/to/catalog.po')
for entry in po:
    print entry.msgid, entry.msgstr
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17460716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档