首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用babel、django和jinja2服务i18n js

使用babel、django和jinja2服务i18n js
EN

Stack Overflow用户
提问于 2012-05-18 13:58:42
回答 1查看 1.3K关注 0票数 1

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

我有一些需要国际化的js文件。我还没有想出一种从它们中提取消息的语法,它也可以让jinja2呈现它们。要么jinja2必须学会阅读可提取的语法,要么我必须从jinja2可以呈现的内容中提取。(或者,完全以另一种方式完成此操作)

提取

如果我用js标记消息

代码语言:javascript
代码运行次数:0
运行
复制
gettext('message')

它提取得很好。

渲染

但是jinja2不会替换js中的gettext调用(我在返回js模板之前用jinja2呈现它们)-它需要类似这样的东西

代码语言:javascript
代码运行次数:0
运行
复制
{% trans %}message{% endtrans %}

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

Babel使用babel.messages中的函数extract_javascript来提取消息,这看起来不足以处理这种类型的标记。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-18 15:02:34

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

代码语言:javascript
代码运行次数:0
运行
复制
{{gettext("message")}} 

(不定义gettext)

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

不过,要注意引号。你不能这样做:

代码语言:javascript
代码运行次数:0
运行
复制
'{{gettext("message")}}'

因为extract_javascript不会读它。但是,只要安全地呈现引号,您就可以将引号放入其中:

代码语言:javascript
代码运行次数:0
运行
复制
{{gettext("'message'")|safe}}

所以,让你的译者确保在原文中找到引文的地方留下它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10647449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档