使用babel,django和&amp ;;服务i18n js Jinja2的

时间:2012-05-18 05:58:42

标签: python django internationalization jinja2 babel

使用django,使用jinja2进行渲染& babel for message extraction

我有一些需要国际化的js文件。我无法弄清楚从它们中提取消息的语法,这也会让jinja2渲染它们。要么jinja2必须学会阅读可提取的语法,要么我必须从jinja2可以渲染的东西中提取。 (或者,完全以另一种方式这样做)

提取

如果我使用

标记js中的消息
gettext('message')

它提取得很好。

渲染

但jinja2不会替换js中的gettext调用(我在返回之前使用jinja2渲染js模板) - 它需要像

这样的东西
{% trans %}message{% endtrans %}

但是,该语法不能用于提取消息。

Babel正在使用babel.messages中的extract_javascript函数来提取消息,这些消息看起来并不适合处理这种类型的标记。

1 个答案:

答案 0 :(得分:1)

好吧,看起来我可以这样做:

{{gettext("message")}} 

(没有定义gettext)

在JS和babel中将提取& jinja2将取代它。

请注意引号。你做不到:

'{{gettext("message")}}'

因为extract_javascript不会读取它。但是,只要你安全地渲染它们,你就可以把引号放在里面:

{{gettext("'message'")|safe}}

因此,您的译员必须确保在原始版本的任何地方留下引文。