【问题标题】:Django: blocktrans entry is not being translatedDjango:blocktrans 条目没有被翻译
【发布时间】:2015-05-01 08:23:40
【问题描述】:

我的 HTML 中有这个块

...
<a class="header" href="{% url 'listing' house_post.id %}">
  {% blocktrans with house_type=house_post.house_type.name trimmed %}
    {{house_type}}
  {% endblocktrans %}
</a>
...

house_type 的一个值是“Condominium”。我在 .po 文件中添加了以下条目。

msgid "Condominium"
msgstr "ኮንዶሚኒየም"

我在 po 文件上运行了 compilemessages,当我切换语言时,其余的翻译工作。我已经确定 house_type 的值设置为“Condominium”。但由于某种原因,它没有被翻译。

此外,当我运行 ma​​kemessages 时,该工具会输出我在 .po 文件中添加的内容。我在运行 compilemessages 之前取消注释它们。我不知道它为什么会这样做,尽管这可能是一个线索。

可以将翻译文本添加到 .po 文件中。不是吗?

【问题讨论】:

  • 当我将变量直接放入 trans 时它可以工作。 {% trans house_post.house_type.name %}

标签: django django-i18n


【解决方案1】:

它没有被翻译,因为{{house_type}} 的值是house_post.house_type.name

blocktrans 实际上在您的代码中没有任何作用。如果您想在句子中添加可翻译的文本,您将需要它。例如:

  {% blocktrans with house_type=house_post.house_type.name trimmed %}
    {{house_type}} Translate this part
  {% endblocktrans %}

如果你想要一个翻译后的变量,你必须将翻译传递给house_post.house_type.name

【讨论】:

    【解决方案2】:

    你的blocktrans的内容很可能是{{house_type}}的内容。不知道它来自哪里,但这是你必须翻译的地方。不要忘记插入类似

    的内容
    from django.utils.translation import ugettext_lazy as _
    

    到你的 py 文件的标题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多