为什么Django不会从另一个目录中的模板文件生成语言环境文件?

时间:2010-09-16 12:27:56

标签: django localization internationalization django-templates

版本信息:

Django 1.3版pre-alpha SVN-13858

Ubuntu GNU / Linux 10.10

我对Django中的i18n和l10n完全不熟悉,目前我正在尝试用荷兰语提供我的Django项目(除了默认语言:英语)。我尝试应用http://docs.djangoproject.com/en/dev/topics/i18n/translation/http://www.djangobook.com/en/2.0/chapter19/给出的说明,但我没有成功。我不知道这是否与我的目录结构和模板文件在一个完全不同的目录中有关(我的意思不是我的Django项目目录中的子目录)。我的项目目录如下所示:

/home/emre/mydjango/myproject
/home/emre/mydjango/myproject/myapp1
/home/emre/mydjangotemplates
/home/emre/mydjangotemplates/myapp1

在myproject和myapp1目录中,我尝试发出以下命令:

django-admin.py makemessages -l nl

但收到以下错误:

Error: This script should be run from the Django SVN tree or your project or 
app tree. If you did indeed run it from the SVN checkout or your project or 
application, maybe you are just missing the conf/locale (in the django tree)
or locale (for project and application) directory? It is not created automatically,
you have to create it by hand if you want to enable i18n for your project or
application.

所以我尝试在myproject和myapp1目录中创建 locale 目录。之后我再次发出上述命令(一次在项目中,一次在app目录中),这次没有任何错误或警告说:

processing language nl

我检查了语言环境目录并看到它们填充了子目录,但根本没有任何.po文件:

$ tree
.
 `-- nl
     `-- LC_MESSAGES

2 directories, 0 files

我仔细检查了我在home / emre / mydjangotemplates中有我的.html文件(模板文件),它们包括{%load i18n%}和一些像{%trans'这样的一行英文文本“%}。

我错过了什么?我应该使用不同的参数调用django-admin.py makemessages命令吗?为什么Django不会创建.po文件,即使我的.html模板文件中有一些要翻译的文本?

1 个答案:

答案 0 :(得分:9)

makemessages仅查找当前目录下的目录。您可以尝试从项目下的某个位置创建符号链接到模板目录,然后添加-s to make it follow symlinks