【问题标题】:serving i18n js using babel, django, & jinja2使用 babel、django 和 jinja2 服务 i18n js
【发布时间】:2012-05-18 05:58:41
【问题描述】:

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

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

提取

如果我在 js 中用

标记消息
gettext('message')

它提取得很好。

渲染

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

{% trans %}message{% endtrans %}

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

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

【问题讨论】:

    标签: python django internationalization jinja2 python-babel


    【解决方案1】:

    好吧,看来我可以做到:

    {{gettext("message")}} 
    

    (不定义gettext)

    在 JS 和 babel 中会提取 & jinja2 会替换它。

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

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

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

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

    因此,请让您的翻译人员确保在原文中的任何位置留下引文。

    【讨论】:

    • 这会翻译消息,但当您想使用字符串时不起作用(周围没有双引号/单引号)。你知道这是否可能吗?
    猜你喜欢
    • 2014-06-10
    • 2018-03-11
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2021-05-04
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多