为什么Django的makemessages函数会忽略html文件?
我在一个项目中尝试使用Django的语言本地化功能,但每次运行makemessages时,它总是忽略我模板文件夹里的html模板。
我从项目的根目录运行了 python manage.py makemessages -a
,结果所有在 .py
文件中标记为需要翻译的字符串都成功添加到了 .po
文件里。
但是,html模板中的字符串,比如 {{ trans "String_to_translate" }}
,却被忽略了,没有被添加到 .po
文件中,尽管在模板的顶部我已经加载了必要的模块 {% load i18n %}
。
为了测试整个模板文件夹是否被makemessages功能排除,我创建了一个 .py
文件,并在里面添加了一个需要翻译的字符串,结果它成功地被添加到了 .po
文件中。
综上所述,有人知道可能是什么原因导致这个问题吗?
3 个回答
把 {{ trans "string" }}
的写法改成 {% trans "string" %}
。
这个回答是对问题的一个编辑,问题是为什么Django的makemessages函数会忽略html文件进行语言本地化?,提问者是dlmccoy,内容遵循CC BY-SA 3.0协议。
试着在你的 app
文件夹里为 templates
文件夹创建一个符号链接。然后在你的应用文件夹中使用符号链接选项来调用 makemessages
,命令是 django-admin.py makemessages --all --symlinks
。
cd /myproject
ln -s /myproject/templates /myproject/myapp/templates
cd /myproject/myapp
django-admin.py makemessages --all --symlinks
makemessages
会忽略 TEMPLATE_DIRS
和 INSTALLED_APPS
。模板文件夹需要放在你的应用文件夹里,而且 makemessages
需要在你的应用文件夹中运行。
你的 templates
文件夹要么放在一个已经在 INSTALLED_APPS
列表中的应用里,要么放在一个在 TEMPLATE_DIRS
列表中的目录里,这些设置都在你的 settings.py
文件里。