【问题标题】:Django 1.6 Block Trans not working with variableDjango 1.6 Block Trans 不使用变量
【发布时间】:2015-08-21 14:23:03
【问题描述】:

我正在尝试翻译一段带有块 trans 标签的文本,如下所示:

{% url 'mymodel.view.results' result_id as results_url %}
{% blocktrans %}See your results here: <a href='{{results_url}}'>Results</a>{% endblocktrans %}

块 trans 中的文本没有被翻译,即使它周围的所有文本都在被翻译。翻译未标记为模糊,在 .po 文件中的文本如下所示:

#: templates/results.html:10
4
#, python-format
msgid ""
"See your results here: "
"<a href='%(results_url)s'>Results</a>"
msgstr ""
"Para su conveniencia <a "
"href='%(results_url)s'>Resultados </a>"

翻译的显示方式有什么问题吗?我注意到它在块 trans 中显示 %()s 而不是 {{}}。但我假设这是 django 将其标记为 po 文件中的变量的方式。我该怎么做才能使翻译适用于带有变量的块翻译。

【问题讨论】:

    标签: python django internationalization translation


    【解决方案1】:

    您必须将变量传递给blocktrans 才能在其中使用它们。没有那个 django 就无法翻译这句话,因为渲染的时候是这样的:

    sentence = _('See your results here: <a href='%(results_url)s'>Results</a>" % {'results_url': results_url})
    

    换句话说,每次渲染模板时,翻译引擎都会获取已经填充了 results_url 的字符串。

    您必须使其与该代码等效:

    sentence = _('See your results here: <a href='%(results_url)s'>Results</a>") % {'results_url': results_url}
    

    为此,只需将您的变量传递给 blocktrans:

    {% blocktrans with results_url=results_url %}See your results here: <a href='{{results_url}}'>Results</a>{% endblocktrans %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2014-01-18
      • 2013-12-15
      • 2013-07-11
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多