【问题标题】:django blocktrans and i18n in templates模板中的 django blocktrans 和 i18n
【发布时间】:2010-12-21 06:35:39
【问题描述】:

我在 django 中遇到了 i18n 问题:

这很好用:

{% trans cat.name %}  

cat.name 将被翻译

但这不起作用:

{% blocktrans with cat.name|slugify as cat_slug %}{{ cat_slug }}{% endblocktrans %}  

cat.name 未翻译

如果我改变过滤器:

{% blocktrans with cat.name|capfirst as cat_slug %}{{ cat_slug }}{% endblocktrans %}  

我可以看到过滤器正在工作,但是没有翻译...

【问题讨论】:

    标签: django templates internationalization translation


    【解决方案1】:

    我才刚刚开始使用 Django 国际化,但我认为您误解了 {% blocktrans %} 标记如何处理占位符。

    blocktrans 的意义在于允许对占位符环绕的文本进行翻译。它不会翻译 {{...}} 中的任何内容。

    如果您查看生成的.po 文件,您会看到以下模板代码:

    {% blocktrans %}This is my variable: {{variable}}{% endblocktrans %}
    

    将被转换成如下内容:

    msgid:"This is my variable: %s"
    

    我认为您不能翻译 blocktrans 标记中的变量。你可能可以用{% blocktrans with _("string") as x %}{{x}}{% endblocktrans %} 做常量字符串,但我想不出你为什么要这样做。

    我认为你必须在视图或模型代码中做你想做的事情。

    【讨论】:

      【解决方案2】:

      这行得通:

      {% filter slugify %}{% trans cat.name %}{% endfilter %}
      

      【讨论】:

      • 这对我也有帮助:我想linebreaksbr 一些翻译文本。
      【解决方案3】:

      正如 Tom 指出的那样,blocktrans 将保留您放入 with 语句中的内容,而不是翻译它。您需要做的是在翻译之前使用 with 。在您的示例中,它看起来像这样:

      {% with cat_slug=cat.name|slugify %}
          {% trans cat_slug %}
      {% endwith %}
      

      附:我知道我正在回答一个 6 年前的问题,但我已经多次遇到这种确切的情况,还没有看到可以处理它的 SO 问题/答案。

      【讨论】:

        【解决方案4】:
        {% blocktrans with cat.name as cat_slug %}{{ cat_slug|capfirst }}{% endblocktrans %}
        
        ?
        

        编辑:你是对的,文档说过滤器要放置在 blocktrans 中

        【讨论】:

        • 似乎 var 没有翻译 {% blocktrans with cat.name as cat_slug %}{{ cat_slug }}{% endblocktrans %} 这也没有翻译 ...
        【解决方案5】:
        {% blocktrans with cat_slug=cat.name|capfirst %}{{ cat_slug }}{% endblocktrans %}  
        

        【讨论】:

          猜你喜欢
          • 2013-07-11
          • 2011-03-20
          • 2013-12-07
          • 2015-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多