可能我忽略了一个明显的解决方案或者想错了方法......
我有一个数量有限的文本,数据库中的单词,我希望显示转换为flask / jinja / babel webapp中的用户。例如。 “running”是“活动”列的可能值,对于我的德国用户来说应该是“laufen”。
模板和代码中的单词被提取并放入目录中,但如何将其他单词添加到目录中?是否有简单的文本文件提取器?
我唯一能想到的是,只需创建一个.py文件并在其中放入大量_('...')行,但这感觉错了......是吗?
答案 0 :(得分:4)
我创建了一个messages.txt,其中的“words”就像gettext函数调用一样:
_('cycling')
_('running')
并将其作为python源添加到我的babel.cfg中:
[python: messages.txt]
简单,简单,愚蠢,但有效。
答案 1 :(得分:1)
首先,从http://flask.pocoo.org/snippets/4/开始。
其次,您需要将这些“有限”值存储为数据库中的整数或枚举,然后在代码中为所有这些枚举创建查找表(以便Babel知道它们):
i18n_val = {0: _('running'), ...}
# Or multi-level dict with different categories:
i18n_all = {
'activity': {
0: _('running'), ...
'foo': {
0: _('bar..'), ...
}
}
从模板访问翻译后的字符串现在就像:
一样简单{{ i18n_val[obj.activity] }}
{{ i18n_all['activity'][obj.activity] }}
为了使i18n_val
和i18n_all
变量可用于所有模板,只需使用context processors注册它们。