我正在尝试在项目上运行Django语言本地化,但makemessages总是忽略我的templates文件夹中的html模板。
我正在从项目根目录运行python manage.py makemessages -a
,并且项目中任何位置的.py文件中标记为要转换的所有字符串都已成功添加到.po文件中。
html模板中的任何字符串,即{{ trans "String_to_translate" }}
都会被忽略,并且不会添加到.po文件中,即使模板顶部加载了必要的模块{% load i18n %}
。 / p>
为了测试从makemessages函数中排除整个模板文件夹的可能性,我制作了一个.py文件,并在那里包含了一个用于翻译的字符串,并且它已成功添加到.po文件中。
说了这么多,有谁知道可能导致这个问题的原因是什么? 在此先感谢您的帮助!
编辑:解决方案仅包括将{{ trans "string" }}
的语法更改为{% trans "string" %}
答案 0 :(得分:4)
尝试为templates
文件夹中的app
文件夹创建符号链接。然后使用符号链接开关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
。
答案 1 :(得分:3)
您的templates
文件夹要么位于INSTALLED_APPS
中列出的应用中,要么位于TEMPLATE_DIRS
中列出的目录中 - 位于settings.py
文件中