Django trans标记可以包括HTML标记吗?
Django trans标记可以包括HTML标记吗?例如,我可以执行Django trans标记可以包括HTML标记吗?,html,django,django-templates,django-1.8,django-tagging,Html,Django,Django Templates,Django 1.8,Django Tagging,Django trans标记可以包括HTML标记吗?例如,我可以执行{%trans”按住Ctrl“%}?或者我必须执行{%trans“Hold”%}{%trans“Ctrl”%}“而不是?我们可以在trans模板标记中包含HTML标记吗? 不,我们不应该像您在第一种方法中那样在模板标记中包含HTML标记{%trans“HoldCtrl“%}。这是一种错误的方法 从 {%trans%}模板标记转换常量字符串或 (用单引号或双引号括起来)或可变内容 如果您的翻译需要带变量的字符串,则无法在{%tra
{%trans”按住Ctrl“%}
?或者我必须执行{%trans“Hold”%}{%trans“Ctrl”%}“
而不是?我们可以在trans
模板标记中包含HTML标记吗?
不,我们不应该像您在第一种方法中那样在模板标记中包含HTML标记{%trans“HoldCtrl“%}
。这是一种错误的方法
从
{%trans%}
模板标记转换常量字符串或
(用单引号或双引号括起来)或可变内容
如果您的翻译需要带变量的字符串,则无法在{%trans%}
中的字符串中混合模板变量
(占位符),改用{%blocktrans%}
。
解决方案2:改用标签
更好的选择是使用blocktrans
模板标记而不是trans
标记来包含HTML标记
blocktrans
标记允许您标记由以下内容组成的复杂句子:
利用文本和可变内容进行翻译
占位符:
然后,您可以执行以下操作:
{% blocktrans %}
Hold <em><strong>Ctrl</strong></em>
{% endblocktrans %}
{%blocktrans%}
按住Ctrl键
{%endblocktrans%}
正如Rahul在回答中所说,不应该在trans-template标记中包含HTML标记。但是,根据(我刚刚发现的),可以将HTML标记放在blocktrans-template标记中。因此,我不必执行{%trans“Hold”%%}{%trans Ctrl”}
。我在中找不到这样的说明。这似乎不符合干燥原则。在某种程度上,你可以说。在我的情况下有相当多。@RahulGupta我对此感到困惑。混合变量和字符串的能力与包含HTML标记(只是常量字符串)有什么关系?也就是说,您应该能够很好地包含它们,但您需要确保它们被正确翻译(即在大多数情况下不被翻译);)解决方案一并不是真正正确的,如果单词是句子的一部分,独立地翻译它们是没有意义的。例如:有些语言需要它们反过来(“Ctrl”然后“Hold”)。是的,我们不能在trans
模板标记中使用HTML标记,但我们可以使用blocktrans
标记。使用trans
模板的解决方案不是最佳解决方案。对于我们的案例,我们可以使用blocktrans
模板标记。我已经更新了ans,请检查。
{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em> # using trans tag
{% blocktrans %}
Hold <em><strong>Ctrl</strong></em>
{% endblocktrans %}