В шаблонах Django вы можете использовать {{ _("Hello World") }} или {% trans "Hello World" %} для обозначения строк, которые нужно перевести. В документах "официальный" подход выглядит как {% trans %}, но синтаксис _() также упоминается один раз.
Как эти подходы отличаются (кроме синтаксиса) и почему это должно быть предпочтительным, а не другим?
Одно отличие состоит в том, что вы, очевидно, не можете использовать {% trans %} с тегами и фильтрами. Но означает ли это, что я могу просто использовать _() везде, например {{ _("String") }}? Он работает и выглядит намного чище и последовательнее, чем при использовании {% trans "String" %} с автономными строками и _() с тегами и фильтрами.