首页 > 解决方案 > 如何使我的数据库中的字符串显示在 Django 的本地化 .po 文件中?

问题描述

在我的一个 python 项目中,我正在遍历存储在我的 SQLite 数据库中的国家列表:

            {% if europe %}
                {% for country in europe %}
                            <figcaption>{{ country.Name_fr }}</figcaption>
                {% endfor %}
            {% endif %}

我正在使用本地化,所以我有一个带有 .po 文件的语言环境文件夹,我可以用它来处理不同的翻译。但是,我希望数据库字符串(来自 {{ country.name_fr }})出现在这些 .po 文件中。这意味着我必须包含一个翻译标签,但如果我尝试它,它会显示错误。这个:

<figcaption>{% translate {{ country.Name_fr }} %}</figcaption>

导致:

TemplateSyntaxError at /

Could not parse the remainder: '{{' from '{{'

任何帮助,将不胜感激

标签: djangodjango-templatesinternationalizationdjango-i18n

解决方案


正如translate模板标签文档所述

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

所以你可以使用blocktranslate

{% blocktranslate %}
    {{ country.Name_fr}}
{% endblocktranslate %}

对于您的用例来说,更简单的方法是将变量传递给翻译

{% translate %} 模板标签翻译常量字符串(用单引号或双引号括起来)或变量内容

{% translate  country.Name_fr %}

推荐阅读