Django trans标签可以包含HTML标签吗?

Dan*_*iel 9 html django django-templates django-tagging django-1.8

Django trans标签可以包含HTML标签吗?比如我可以{% trans "Hold <em><strong>Ctrl</strong></em>" %}吗?或者我必须做{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em>"什么呢?

Rah*_*pta 9

我们可以在trans模板标签中包含HTML 标签吗?

不,我们不应该trans像在第一种方法中那样在模板标记中包含HTML标记{% trans "Hold <em><strong>Ctrl</strong></em>" %}.这是一种错误的做法

来自文档:

{% trans %}模板标签转换或者一个常数字符串(用单引号或双引号)或可变的内容.

无法在字符串内混合模板变量{% trans %}.如果您的翻译需要带变量的字符串(占位符),请{% blocktrans %}改用.

<title>{% trans "This is the title." %}</title> # example 1

<title>{% trans "myvar" noop %}</title>  # example 2
Run Code Online (Sandbox Code Playgroud)

解决方案-1:使用trans模板标签

trans您可以执行类似下面的操作,而不是将HTML代码放在标记内,以获得所需的结果(尽管这不是推荐的方法).

{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em> # using trans tag
Run Code Online (Sandbox Code Playgroud)

解决方案-2:blocktrans改为使用标签

更好的选择是使用blocktrans模板标签而不是trans标签来包含HTML标签.

blocktrans标签可以让你由文字和通过利用占位符的翻译内容可变的复合句标记:

你可以这样做:

{% blocktrans %}
Hold <em><strong>Ctrl</strong></em>
{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)

  • @RahulGupta 我对此感到困惑。混合变量和字符串的能力与包含 HTML 标签(只是常量字符串)有什么关系?也就是说,您应该能够很好地包含它们,但您需要确保它们被正确翻译(即在大多数情况下没有翻译);) (2认同)
  • 解决方案一并不完全正确,如果单词是句子的一部分,则独立翻译这些单词是没有意义的。例如:某些语言需要相反的方式(“Ctrl”然后“Hold”)。 (2认同)