在Django模板中,您可以使用
一个区别是显然不能在标签和过滤器中使用
{{ _("Hello World") }}
或{% trans "Hello World" %}
来标记要翻译的字符串。在文档中,“官方”方法似乎是{% trans %}
标签,但也提到了_()
语法一次。
这些方法除了语法之外有什么不同,为什么应该优先选择其中一个?一个区别是显然不能在标签和过滤器中使用
{% trans %}
。但这是否意味着我可以随处使用_()
,例如{{ _("String") }}
?它可以工作,并且看起来比在独立字符串中使用{% trans "String" %}
和在标签和过滤器中使用_()
更清洁和一致。
_()
作为ugettext()
的别名,但在模板中不是这样。由于我们都不会在模板中添加类似于from django.utils.translation import ugettext as _
的内容,因此不清楚下划线的工作原理。 - Anton Strogonoff