5

版本信息:爲什麼Django不能從另一個目錄中的模板文件生成語言環境文件?

Django的1.3版本的α預SVN-13858

Ubuntu的GNU/Linux的10.10

我完全新的在Django,以國際化和本地化,目前我正在努力使我的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目錄內創建區域目錄。從那以後,我再次發出上述命令(在該項目中的應用程序目錄一次,一次),這個時候沒有任何錯誤或警告,它說:

processing language nl 

我檢查了現場目錄,並看到他們填充子目錄,但沒有發現任何.po文件都:

$ tree 
. 
`-- nl 
    `-- LC_MESSAGES 

2 directories, 0 files 

我仔細檢查了,我在家裏/埃姆雷/ mydjangotemplates我的.html文件(模板文件),並且它們包括{%負載國際化%}和一些行,如{%trans「一段英文文本」%}。

我錯過了什麼?我應該用不同的參數調用django-admin.py makemessages命令嗎?爲什麼Django不創建.po文件,即使我有一些文本要在我的.html模板文件中進行翻譯?

回答

9

makemessages僅在當前目錄下的目錄中查找。您可以嘗試從項目下的某個位置創建符號鏈接到您的模板目錄並添加-s to make it follow symlinks

+0

我創建了從項目和應用程序目錄到模板目錄的符號鏈接,然後嘗試了相同的命令,結果相同。然後刪除語言環境子目錄,重新創建它們,嘗試它,得到相同的結果,然後嘗試作爲django-admin.py makemessages -a,但不幸的是我所得到的是我的項目中的空白語言環境/ nl/LC_MESSAGES /目錄和應用文件夾。 – 2010-09-16 14:33:43

+1

嘗試在命令末尾添加--verbosity 2。它應該打印它正在做什麼,也許它會給出一些線索。 – 2010-09-16 14:41:39

+0

我做了,看起來好像它沒有遍歷通過以下符號鏈接通常可訪問的子目錄:使用擴展名檢查文件:.html 處理語言nl 忽略文件models.py〜in。 忽略文件urls.py〜in。 忽略文件views.py〜in。 處理文件__init__.py中。 處理文件models.py中。 處理文件tests.py中。 處理文件urls.py中。 處理文件視圖。py在 – 2010-09-16 14:47:36

相關問題