Python flask babel:如何翻译变量
我正在使用flask babel翻译一个基于flask的web应用程序。我真的想知道如何翻译变量的内容,比如Python flask babel:如何翻译变量,python,flask,python-babel,flask-babel,Python,Flask,Python Babel,Flask Babel,我正在使用flask babel翻译一个基于flask的web应用程序。我真的想知道如何翻译变量的内容,比如foo 我尝试了{{{(foo)},但是当我更新.po文件时,如下所示: pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot . pybabel update -i messages.pot -d translations 使用foovar的内容进行翻译时,不会显示任何内容 对于常量字符串,如{{{(“goo”)}您不
foo
我尝试了{{{(foo)}
,但是当我更新.po
文件时,如下所示:
pybabel extract -F babel.cfg -k lazy_gettext -o messages.pot .
pybabel update -i messages.pot -d translations
使用foo
var的内容进行翻译时,不会显示任何内容
对于常量字符串,如{{{(“goo”)}
您不能提取变量,因为在表达式{uu(某些变量)
中,某些变量
在运行时被查找。如果从静态值列表中获取某个变量,则将提取静态值。例如:
COLORS_OF_MAGIC = [_("green"), _("red"), _("blue"), _("white"), _("black")]
def color_for_index(index):
if not (0 < index > len(COLORS_OF_MAGIC)):
index = 0
return COLORS_OF_MAGIC[index]
def do_work():
index = get_index_from_user()
some_variable = color_for_index(index)
return _("You chose ") + _(some_variable) + _(" as the color of magic")
魔法的颜色=[[绿色]、[红色]、[蓝色]、[白色]、[黑色]]
def color_用于索引(索引):
如果不是(0绿色
,红色
,蓝色
,白色
,黑色
,您选择的
,以及作为PO文件中的魔法颜色
另一方面,如果您试图翻译用户提供的字符串,则需要另一种解决方案,因为Babel是一种静态翻译服务。遇到了相同的问题。我需要在运行时翻译传递给jinja2的月份名称。我想出的解决办法是传递翻译过的名字。然后我所要做的就是声明一个静态的名字列表,正如在接受的答案中提到的那样。希望这有帮助。如果我尝试:
{%trans%}{{activity.title}{%endtrans%}
,我会得到jinja2.exceptions.TemplateSyntaxError jinja2.exceptions.TemplateSyntaxError:预期的标记是“打印语句结束”,得到“。
那么有什么动态翻译的解决方案吗?说同样的话:巴贝尔不能翻译动态字段,但谁能翻译呢。这是一种应用程序,你可以/应该要求用户为他们的文本提供替代翻译(例如CMS),还是最终用户通常不提供翻译,而有人可能希望看到另一种语言的内容(例如博客)?我从一个文件中得到了变量的值。有什么方法可以翻译吗?我可以定义:COLORS\u of\u MAGIC=yaml.load(file)
?必须构建自定义脚本是很麻烦的。我认为巴贝尔有足够的能力做到这一点。我必须重新发明轮子。。。