Django i18n blocktrans vs trans

tze*_*man 11 django internationalization django-i18n

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

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

{% trans 'My Text' %}
Run Code Online (Sandbox Code Playgroud)

JcK*_*ley 14

来自Django Docs

Trans模板标签

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

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

{# These Would Work! #}
title>{% trans "This is the title." %}</title>
<title>{% trans myvar %}</title>
Run Code Online (Sandbox Code Playgroud)

但无法使用

{%trans "This is my title {{ myvar }}" %}
Run Code Online (Sandbox Code Playgroud)

Blocktrans模板标签

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

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

    {% blocktrans with book_t=book|title author_t=author|title %}
       This is {{ book_t }} by {{ author_t }}
    {% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)

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

但要从字面上回答你的问题:不多.除了演示风格外,两者都将作为字符串发送给翻译者'My Text'