为什么Django语言本地化的makemessages功能会忽略html文件?

时间:2011-08-14 00:04:35

标签: python django localization internationalization

我正在尝试在项目上运行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" %}

2 个答案:

答案 0 :(得分:4)

尝试为templates文件夹中的app文件夹创建符号链接。然后使用符号链接开关django-admin.py makemessages --all --symlinks

从app文件夹中调用makemessages
cd /myproject
ln -s /myproject/templates /myproject/myapp/templates    
cd /myproject/myapp
django-admin.py makemessages --all --symlinks

makemessages会忽略TEMPLATE_DIRSINSTALLED_APPS。模板目录需要位于您的应用程序文件夹中,并且需要从您的应用程序文件夹中调用makemessages

答案 1 :(得分:3)

您的templates文件夹要么位于INSTALLED_APPS中列出的应用中,要么位于TEMPLATE_DIRS中列出的目录中 - 位于settings.py文件中