1

使用 django,使用 jinja2 进行渲染和 babel 进行消息提取

我有一些需要国际化的 js 文件。我一直无法弄清楚从它们中提取消息的语法,这也会让 jinja2 呈现它们。jinja2 必须学习阅读可提取的语法,或者我必须从 jinja2 可以呈现的内容中提取。(或者,完全以另一种方式执行此操作)

提取

如果我在js中标记消息

gettext('message')

它提取得很好。

渲染

但是 jinja2 不会替换 js 中的 gettext 调用(我在返回之前用 jinja2 渲染 js 模板)——它需要类似的东西

{% trans %}message{% endtrans %}

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

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

4

1 回答 1

1

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

{{gettext("message")}} 

(没有定义gettext)

在 JS 中,babel 将提取 & jinja2 将替换它。

不过,请注意报价。你不能这样做:

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

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

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

因此,请让您的翻译人员确保在原文中找到引文的任何地方留下引文。

于 2012-05-18T07:02:34.110 回答