在{%include..中传递的{%translate s%},其中s=s%}s不在.po文件中



我有一个基本的提要,我正试图在Django项目中呈现。我创建了一个feed.html文件,作为相同类型提要的轻微变体的基本模板。在这些变体中,是提要的标头。重要的是,我希望这个标题能被翻译成多种语言。

我已经实现了这个";变体";使用CCD_ 1。然而,我在翻译这些变体时遇到了问题。

我正在feed.html中尝试以下操作:

{% translate header %}

然后在我想要feed.html变体的一个模板中,我有:

{% include "feed.html" with header="Header" %}

问题是,字符串";标题";它没有进入我的任何.po文件,因此仍然不可翻译。

我做错了什么?我应该使用不同的语法吗?

问题是,字符串"标题";它没有进入我的任何.po文件,因此仍然无法翻译。

如果这意味着makemessages命令没有提取字符串,那么是的,它不会提取,因为没有字符串。只有一个变量。该变量可以取任何值,makemessages不可能将其追溯到可能为header设置值的所有可能位置。makemessages只能提取字面上直接放入{% translate %}标记或_()函数调用中的内容。

与前两个例子一样,使用变量或计算值的警告是Django的翻译字符串检测实用程序Django-adminmakemessages将无法找到这些字符串。

https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#standard-翻译

您需要在传递标头值之前对其进行翻译:

{% include "feed.html" with header=_("Header") %}

最新更新