【发布时间】:2020-06-30 22:22:59
【问题描述】:
我遇到了来自 django trans 标签的奇怪行为。如您所知,每当我们在标签内使用过滤器时,过滤器首先应用,然后将结果作为输入提供给标签。但这与 trans 标签的顺序相反。
例子:
假设我有这个 django.po 文件:
msgid "msgid-world"
msgstr "world"
msgid "msgid-"
msgstr "message"
现在看看这些标签的结果:
{% trans "msgid-"|add:"world" %}
result: messageworld (first translate then concat)
预期结果:“world”(先concat然后翻译key)
更新:
我的问题是关于一致性。与其他标签(如“if”)的行为相反!
此外,如果我为自己编写一个自定义标签,如下所示:
@register.simple_tag
def customtrans(a):
return _(str(a))
那么它将表现得像其他标签一样。本例的结果(如上例):
{% customtrans "msgid-"|add:"world" %}
将是“世界”。
这就是我想了解的奥秘!
【问题讨论】:
标签: django django-templates django-template-filters django-i18n