Я столкнулся со странным поведением из тега django trans
. Как вы знаете, всякий раз, когда мы используем фильтр внутри тега, фильтр сначала применяется, а затем выдает результат в качестве входных данных для тега. Но это в обратном порядке для тега trans.
Пример:
Предположим, у меня есть этот django .po файл:
msgid "msgid-world"
msgstr "world"
msgid "msgid-"
msgstr "message"
Теперь посмотрите результат этих теги:
{% trans "msgid-"|add:"world" %}
result: messageworld (first translate then concat)
Ожидаемый результат: "мир" (сначала конкат, затем переведите ключ)
ОБНОВЛЕНИЕ :
Моя проблема заключается в согласованности , Поведение с другими тегами (например, «если») является обратным!
Более того, если я напишу собственный тег для себя, как показано ниже:
@register.simple_tag
def customtrans(a):
return _(str(a))
, тогда он будет вести себя как другие теги. Результат этого примера (как и в приведенном выше примере):
{% trans "msgid-"|add:"world" %}
будет "миром".
Это таинственный момент, который я хочу понять!