Django i18n blocktrans vs trans

时间:2013-07-12 18:35:38

标签: django internationalization django-i18n

在Django模板中,这两者之间究竟有什么区别:

{% blocktrans %}My Text{% endblocktrans %}

{% trans 'My Text' %}

1 个答案:

答案 0 :(得分:14)

来自Django Docs

Trans模板标记

  

{%trans%}模板标记转换为常量字符串(用单引号或>双引号括起来)或变量内容:

使用Trans标记,您只能使用单个常量字符串或变量。所以你必须使用

{# These Would Work! #}
title>{% trans "This is the title." %}</title>
<title>{% trans myvar %}</title>

但无法使用

{%trans "This is my title {{ myvar }}" %}

Blocktrans模板标记

  

与trans标签相反,blocktrans标签允许您标记复杂的句子   由文字和可变内容组成,通过使用占位符进行翻译:

使用Blocktrans,这种代码是可能的:

    {% blocktrans with book_t=book|title author_t=author|title %}
       This is {{ book_t }} by {{ author_t }}
    {% endblocktrans %}

所以Blocktrans会让你在输出中变得更加复杂。

但要从字面上回答你的问题:不多。除了演示样式外,两者都将作为字符串'My Text'

发送给翻译者