【问题标题】:Handling percent-sign (%) in Django blocktrans tags处理 Django blocktrans 标签中的百分号 (%)
【发布时间】:2011-03-27 08:59:15
【问题描述】:

我目前正在本地化我的 Django 应用程序。除了blocktrans标签内的百分号外,所有其他翻译都可以正常工作。

在我的模板中我有{% blocktrans %}Original % blocktrans{endblocktrans %}

django-admin makemessages 在 django.po 中生成:

#: templates/index.html:78
#, python-format
msgid "Original %% blocktrans"
msgstr ""

我将其更新为msgstr "Translated %% blocktrans",运行django-admin compilemessages,重新启动开发服务器并刷新页面,但我仍然在输出中看到Original % blocktrans。其他翻译正确显示。

作为参考,{% trans "Original % trans" %} 也可以。在 makemessages 和翻译之后,我有:

#: templates/index.html:72
msgid "Original % trans"
msgstr "Translated % trans"

这按预期工作 - 显示翻译版本。

我必须使用 blocktrans,因为我还需要将变量嵌入到字符串中。我正在使用 Django 1.2.5。

如何使 blocktrans 与百分号一起使用?

【问题讨论】:

    标签: django localization escaping


    【解决方案1】:

    查看this ticket - 这不是一个解决方案,但它揭示了正在发生的事情

    【讨论】:

      【解决方案2】:

      找不到问题的真正解决方案,因此我使用了一种解决方法:创建一个常量 PERCENT_SIGN = u'%' 并将其用作 blocktrans-blocks 中的 {{ PERCENT_SIGN }}。

      【讨论】:

      • 如何使用html实体% ?
      • 这可能行得通,但我认为它比{{ PERCENT_SIGN }} 更令译者困惑,虽然更短。另外,我将它用于纯文本电子邮件模板,因此该实体是不行的。
      • 对.. 好吧,最好的解决方案是在 Django 主干中修复 blocktrans :)
      • 或者就像这样: {% blocktrans with percent="%" %} 这是 100{{ percent }} 工作! {% endblocktrans %}
      【解决方案3】:

      已针对此特定问题打开了另一张票,并带有修复该问题的补丁。希望它会在 Django 1.4 中得到修复。

      https://code.djangoproject.com/ticket/16721

      【讨论】:

        猜你喜欢
        • 2013-08-12
        • 2013-12-18
        • 2020-02-26
        • 2020-01-20
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多