如何使用惰性语法在Django模板转换中使用占位符?

时间:2014-10-13 16:02:09

标签: django django-templates django-i18n

关于此事的文件不清楚。根据{{​​3}}部分,可以使用以下语法:

{% some_special_tag _("Page not found") value|yesno:_("yes,no") %}

但是,我想传递占位符以将变量传递给翻译,如:

def my_view(request,m,d):     output = _('今天是%(月)s%(天)s。')%{'月':m,'天':d}     返回HttpResponse(输出)

尝试

我尝试了以下语法:

{% back_link 'core:work_unit' _('Unité de travail #%(id)') % {'id': requested_work_unit.id} %}

给:

  

/ unit / 109 / edit /

中的TemplateSyntaxError      

无法解析余数:'%'来自'%'

这一个

{% back_link 'core:work_unit' _('Unité de travail #%(id)', requested_work_unit.id) %}

给:

  

/ unit / 109 / edit /

中的StopIteration      

未提供任何异常消息

问题

如何在模板标记中使用延迟表示法和占位符?

1 个答案:

答案 0 :(得分:-1)

如果我说得对,你可以将变量放在blocktrans标签中:

<p>{% blocktrans with user.email as email %}Please confirm that <a href="mailto:{{ email }}">{{ email }}</a>.{% endblocktrans %}</p>

在您的翻译文件中:

#: templates/account/email_confirm.html:17
#, python-format
msgid ""
"Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a>"
msgstr ""
"Пожалуйста подтвередите <a href=\"mailto:%(email)s\">%(email)s</a>"

custom tags中,您可以随心所欲:

@register.simpletag
def not_found(case):
    if case:
        return _("Page not found")
    return _("Yeah!")