2013-08-20 33 views
0

我寫了下面的代碼顯示在客戶端多語種信息

messages.error(request , 'Authentication Failed.') 

其中一期工程文件服務器方的錯誤消息。我想從消息文件中加載消息,以便將所有消息保留在同一個位置,同時我也希望基於該語言加載圖像。

我探討了DJango中的Message File選項,但它看起來像它自己翻譯字符串,但我想定義自己並加載它們。如何實現它?

回答

2

我不知道我完全瞭解你的問題,而是你的一個例子可能是這樣的:

# file text_messages.py 
from django.utils.translation import ugettext as _ 

MY_MESSAGE = _('Auth failed') 
腳本

那麼,你應該使用消息:

import text_messages 

messages.error(request, text_messages.MY_MESSAGE) 

這全部在the docs

然後,當然,您需要運行django-admin.py makemessages --locale=en,de,並提供一種在視圖中正確切換語言的方法。這是你在哪裏之後?

+0

是的,這是我正在尋找。還有一個問題,這是強制性的django-admin.py makemessages --locale = en,de還是我可以手動創建一個名爲text_messages_de.py的文件並使用它? – syv

+0

如果您使用'makemessages'命令(選項是'--locale'來指定一個locale列表或'--all',它會根據'settings.py'中設置的'LANGUAGE'變量創建語言環境),django會創建爲你的'.mo'文件,它包含原始字符串以及作爲翻譯佔位符的相同字符串的空白版本。您應該使用此方法,因爲之後在語言之間切換更容易。有了'messages_ .py'文件,你必須用一堆'if語言=='de'import ...'來擴充你的腳本,這不是做這件事的最好(也是正確的)方式。 –

+0

非常感謝!所以在視圖中,我應該設置request.session ['django_language'] ='en-US',它將採用美國英文版的Message文件,如果我將此值更改爲request.session ['django_language'] ='zh-CN '它會自動採用UK Message文件。我的理解是否正確? – syv