Ant*_*off 43 django translation django-templates internationalization
在Django模板中,您可以使用{{ _("Hello World") }}
或{% trans "Hello World" %}
标记要翻译的字符串.在文档中,"官方"方法似乎是{% trans %}
标记,但_()
语法也提到过一次.
这些方法有何不同(语法除外)以及为什么应该优先于其他方法?
一个区别是你显然不能使用{% trans %}
标签和过滤器.但这是否意味着我可以_()
随处使用,比如{{ _("String") }}
?与使用{% trans "String" %}
独立字符串以及_()
标签和过滤器相比,它更加干净,更加一致.
Ant*_*off 49
所以看起来技术上没有Django 1.5的区别.translate
在两种情况下,模板引擎在内部标记用于转换的变量(通过设置其属性):
{% trans VAR %}
(见TranslateNode
),或_(
并以其结尾)
(请参阅参考资料Variable.__init__
).稍后,当解析变量时,Django将其包装ugettext
或者pgettext
如果它看到该translate
属性.
但是,从源代码可以看出,有一些灵活性考虑因素有利于{% trans %}
标记:
{% trans "String" noop %}
,它会把字符串翻译成.po文件,但在渲染时实际上不会翻译输出(translate
变量没有内部属性,没有ugettext
调用);{% trans "May" context "verb" %}
;{% trans "String" as
translated_string %}
.*自Django 1.4起.
如果我遗漏任何东西,请随时纠正我或发布更好的答案.
归档时间: |
|
查看次数: |
27362 次 |
最近记录: |