【问题标题】:Can Django trans tags include HTML tags?Django trans 标签可以包含 HTML 标签吗?
【发布时间】:2015-12-26 02:46:45
【问题描述】:

Django trans 标签可以包含 HTML 标签吗?例如我可以做{% trans "Hold <em><strong>Ctrl</strong></em>" %} 吗?还是我必须改用{% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em>"

【问题讨论】:

    标签: html django django-templates django-1.8 django-tagging


    【解决方案1】:

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

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

    来自docs:

    {% trans %} 模板标签可以转换一个常量字符串 (用单引号或双引号括起来)或可变内容。

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

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

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

    除了将 HTML 代码放在 trans 标记中之外,您还可以执行以下操作来获得所需的结果(尽管这不是推荐的方法)。

    {% trans "Hold" %} <em><strong>{% trans "Ctrl" %}</strong></em> # using trans tag
    

    解决方案2:改用blocktrans标签

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

    blocktrans 标签允许您标记由以下组成的复杂句子 文字和可变内容通过利用 占位符:

    然后你可以这样做:

    {% blocktrans %}
    Hold <em><strong>Ctrl</strong></em>
    {% endblocktrans %}
    

    【讨论】:

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

    正如 Rahul 在他的回答中所说,不应在 trans 模板标签中包含 HTML 标签。但是,根据Translating text blocks with Django .. what to do with the HTML?(我刚刚发现),可以将 HTML 标签放在 blocktrans 模板标签中。因此我不必做{% trans "Hold" %} &lt;em&gt;&lt;strong&gt;{% trans "Ctrl" %}&lt;/strong&gt;&lt;/em&gt;"。我在the Django 1.8 docs 中找不到这样的说明。

    【讨论】:

    • 是的,我们不能在 trans 模板标签中使用 HTML 标签,但我们可以使用 blocktrans 标签。使用trans 模板的解决方案不是最好的解决方案。我们可以使用blocktrans 模板标签代替我们的案例。我已经更新了答案,请检查。
    猜你喜欢
    • 2013-06-14
    • 2014-08-01
    • 2012-07-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多