【问题标题】:Django i18n blocktrans vs transDjango i18n blocktrans 与 trans
【发布时间】:2013-07-11 09:37:15
【问题描述】:

在Django模板中,这两者到底有什么区别:

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

{% trans 'My Text' %}

【问题讨论】:

    标签: django internationalization django-i18n


    【解决方案1】:

    来自Django Docs

    反模板标签

    {% 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 标签不能混合变量和字符串。谢谢!
    • 对两者都使用 blocktrans 有什么缺点吗?
    • 不。这纯粹是一个偏好问题。
    猜你喜欢
    • 2011-03-20
    • 2010-12-21
    • 2013-05-20
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多