【问题标题】:Does Django try to translate template variables?Django 是否尝试翻译模板变量?
【发布时间】:2014-09-24 13:18:08
【问题描述】:

我的模板中有以下代码:

{% blocktrans %}Hello, {{ user.username }}!{% endblocktrans %}

这在我的网站上显示为:

你好!

我确定该变量已填充(因为如果我删除 blocktrans 标记,它会正确显示),所以我的问题是:Django 是否也尝试翻译变量?对我来说有效的代码是:

{% blocktrans with username=user.username %}Hello, {{ username }}!{% endblocktrans %}

但是,在 Django 核心中,在其中一个模板中,有以下代码:

{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}

所以我认为这应该可行,对吧?有没有我没有注意到的明显错误?

【问题讨论】:

    标签: django internationalization django-templates django-1.6


    【解决方案1】:

    您可以在 blocktrans 块中包含变量,但您无法访问对象属性,就像您尝试使用 user.username 一样。您需要根据the documentation 将它们绑定到局部变量:

    {% blocktrans with amount=article.price %}
    That will cost $ {{ amount }}.
    {% endblocktrans %}
    

    编辑:抱歉,我刚刚注意到我误读了您的问题,您确实提到了本地绑定。但这就是你的答案。您从 django 核心显示的示例使用 site_name,而不是 site.name

    【讨论】:

    • 我明白了。不知道你不能使用属性。在某些时候,我怀疑这是问题所在,但不确定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2023-03-09
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2012-10-01
    相关资源
    最近更新 更多