2011-10-19 213 views
5

我有一個django應用程序,其默認語言設置爲法語。 代碼和html頁面中的所有翻譯字符串都是法文的。在不同的語言之間切換正常。 但現在我需要隱藏法語,所以我將LANGUAGE_CODE更改爲'en-us',但默認頁面始終以法語顯示,我錯過了什麼嗎?Django默認語言

感謝

+0

試圖改變自己的瀏覽器本地語言,可能是它幫助 – Ahsan

回答

3

我遇到了一些麻煩,這也一度......這是因爲大多數現代網絡瀏覽器在發送請求的區域設置,和Django的自動使用的語言,而不是它是否能。

不幸的是我不記得我做了什麼來解決這個問題,但是我希望它能給你一些指導去尋找或搜索。

+1

謝謝,這是問題,通過改變瀏覽器語言的語言解決 – ark42

1

在您的settings.py文件中,您有一個LANGUAGES元組。

LANGUAGES = (
    ('en', gettext('English')), 
    ('sv', gettext('Swedish')), 
    ('no', gettext('Norwegian')), 
) 

如果您使用Django Multilingual,您還可以設置DEFAULT_LANGUAGE設置:

DEFAULT_LANGUAGE = 1 # the first one in the list 
+2

DEFAULT_LANGUAGE似乎並沒有爲我工作,而該變量沒有[Django配置文件中引用](https://docs.djangoproject.com/zh/dev/ref/settings/) – ark42

+0

你現在在運行什麼版本的Django? – ApPeL

+0

我使用的是1.3版本 – ark42

7

我剛剛遇到這個問題,這裏是我怎麼能設法解決它在不改變任何瀏覽器的語言環境的語言:

的想法是創建一箇中間件基礎上,LANGUAGE_CODE設置強制語言翻譯,這裏的中間件如何可能看起來像:

from django.conf import settings 
from django.utils import translation 

class ForceLangMiddleware: 

    def process_request(self, request): 
     request.LANG = getattr(settings, 'LANGUAGE_CODE', settings.LANGUAGE_CODE) 
     translation.activate(request.LANG) 
     request.LANGUAGE_CODE = request.LANG 

保存此片段在你的主應用程序middleware.py(我假定這就是所謂的主),然後添加main.middleware.ForceLangMiddleware到您的MIDDLEWARE_CLASSES