问题描述
我有一个基本的供稿,我正在尝试在Django项目中进行渲染。我创建了一个 Feed.html 文件作为基本模板,以对同一类型的Feed进行细微的变化。在这些变体中,有供稿的标题。重要的是,我希望将标题转换为多种语言。
我已经使用{% include "Feed.html" with variation=variation %}
实现了这种“变体”想法。但是,我在翻译这些版本时遇到了问题。
我正在 Feed.html 中尝试以下操作:
{% translate header %}
然后在其中一个模板中,我想要一个 Feed.html 的变体,
{% include "Feed.html" with header="Header" %}
问题是,字符串“ Header”不能将其放入我的.po
文件中,因此无法翻译。
我在做什么错?我应该使用其他语法吗?
解决方法
问题是,字符串“ Header”没有将其放入我的任何.po文件中,因此仍然无法翻译。
如果这意味着makemessages
命令不会提取字符串,则可以,因为没有字符串,所以不会。只有一个变量。该变量可以取任何值,makemessages
可能无法追溯到您可能为header
设置值的所有可能位置。 makemessages
只能提取您在字面上放入{% translate %}
标记或直接_()
函数调用中的内容。
与前两个示例一样,使用变量或计算值的警告是Django的翻译字符串检测实用程序django-admin
makemessages
无法找到这些字符串。https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#standard-translation
您需要在传递标头值之前对其进行转换:
{% include "feed.html" with header=_("Header") %}