{%translation s%}传入{%include ... with s = s%}不在.po文件中

问题描述

我有一个基本的供稿,我正在尝试在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") %}