flask-babel:如何翻译变量
flask-babel: how to translate variables
我正在使用 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
翻译 foo
var.
的内容时不显示任何内容
常量字符串都可以,例如 {{ _("goo")}}
.
您不能提取 变量,因为在表达式 _(some_variable)
中查找 some_variable
run-time。如果您从静态值列表中获取 some_variable
,则将提取静态值 。例如:
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")
将具有以下值:green
、red
、blue
、white
、black
、You chose
和 as the color of magic
在采购订单文件中。
另一方面,如果您正在尝试翻译 user-provided 字符串,那么您将需要另一种解决方案,因为 Babel 是一项静态翻译服务。
运行成同样的问题。我需要翻译在运行时传递给 jinja2 的月份名称。我想到的解决方案是传递翻译后的名称。然后我所要做的就是声明一个静态的名称列表,如接受的答案中提到的那样。希望这有帮助。
我正在使用 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
翻译 foo
var.
常量字符串都可以,例如 {{ _("goo")}}
.
您不能提取 变量,因为在表达式 _(some_variable)
中查找 some_variable
run-time。如果您从静态值列表中获取 some_variable
,则将提取静态值 。例如:
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")
将具有以下值:green
、red
、blue
、white
、black
、You chose
和 as the color of magic
在采购订单文件中。
另一方面,如果您正在尝试翻译 user-provided 字符串,那么您将需要另一种解决方案,因为 Babel 是一项静态翻译服务。
运行成同样的问题。我需要翻译在运行时传递给 jinja2 的月份名称。我想到的解决方案是传递翻译后的名称。然后我所要做的就是声明一个静态的名称列表,如接受的答案中提到的那样。希望这有帮助。