使用django,使用jinja2进行渲染,使用babel进行消息提取
我有一些需要国际化的js文件。我还没有想出一种从它们中提取消息的语法,它也可以让jinja2呈现它们。要么jinja2必须学会阅读可提取的语法,要么我必须从jinja2可以呈现的内容中提取。(或者,完全以另一种方式完成此操作)
提取
如果我用js标记消息
gettext('message')
它提取得很好。
渲染
但是jinja2不会替换js中的gettext调用(我在返回js模板之前用jinja2呈现它们)-它需要类似这样的东西
{% trans %}message{% endtrans %}
但是,该语法不能用于提取消息。
Babel使用babel.messages中的函数extract_javascript来提取消息,这看起来不足以处理这种类型的标记。
发布于 2012-05-18 07:02:34
好吧,看起来我可以这样做:
{{gettext("message")}}
(不定义gettext)
在JS和babel中将提取& jinja2将替换它。
不过,要注意引号。你不能这样做:
'{{gettext("message")}}'
因为extract_javascript不会读它。但是,只要安全地呈现引号,您就可以将引号放入其中:
{{gettext("'message'")|safe}}
所以,让你的译者确保在原文中找到引文的地方留下它们。
https://stackoverflow.com/questions/10647449
复制