Django i18n中的blocktrans与trans比较

13
在Django模板中,这两者之间到底有什么区别:{{ var }}{% block %}
{% blocktrans %}My Text{% endblocktrans %}

{% trans 'My Text' %}
1个回答

18

来自 Django 文档

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' 发送到翻译器。


太好了。我认为对我来说关键在于标签中变量的处理方式。我没有意识到 trans 标签不能混合变量和字符串。谢谢! - tzenderman
同时使用blocktrans有什么不利之处吗? - dietbacon
不是的,这完全是个人喜好问题。 - JcKelley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接