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>"什么呢?
我们可以在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)