首页 > 解决方案 > {% translate s %} 传入 {% include ... with s=s %} 不在 .po 文件中

问题描述

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

我已经使用{% include "feed.html" with variation=variation %}. 但是,我在翻译这些变体时遇到了问题。

我在feed.html中尝试以下内容:

{% translate header %}

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

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

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

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

标签: pythondjangotranslation

解决方案


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

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

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

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

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

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

推荐阅读