2011-11-22 56 views
2

好吧,兩小時後嘗試,我也會問...保存用戶首選的語言和Django的localeurl

我有一個應用程序,我有它在幾種語言。如果應用程序的默認語言是瀏覽器語言,但如果用戶可以覆蓋該語言,則會很好。

我的意思是說,你的瀏覽器是英文的,但你是德國人,你點擊德國國旗來改變網頁語言並記住它。

我試着用django-localeurl

它的工作原理確定,它告訴你在URL中的語言,甚至可以設置默認語言爲瀏覽器語言。

當我創建一個選擇框來改變語言,如django-locateurl說,問題來了。選擇的作品,但當我移動到另一個頁面時,語言會更改爲默認的語言。不保存新的選定語言。

我嘗試了一些宣稱解決這個問題的叉子,原來的一個補丁..沒有。

我讀到把SessionMiddleware localeURLMiddleware之前,...

沒有。

那麼,任何人得到這個工作或使用另一個庫爲此?

謝謝。

回答

2

我使用Django-DEV(1.4結束),它建於國際化的網址,因此無需localeurl的。

0

django-cms使用中間件來做到這一點。爲了尋找靈感,看看類MultilingualURLMiddleware這裏:

https://github.com/divio/django-cms/blob/develop/cms/middleware/multilingual.py

它執行以下操作:

  1. 查找在URL的第一部分。如果它與您支持的語言(即settings.LANGUAGES)相匹配,則用該語言代碼調用translation.activate(language)。
  2. 如果不是,請嘗試查看是否設置了request.session.get(「django_language」,「」)。
  3. 如果不是,請嘗試查看是否設置了request.COOKIES.get(「django_language」,「」)。

但我真的建議是,你開始使用Django-CMS)

+1

謝謝,但Django的CMS不適合每個項目..我的應用程序不適合在一個CMS,只是一個月經日曆。 –

+0

即使您不使用django-cms,我仍然可以推薦複製他們的中間件並將其修改爲獨立。 – benjaoming

2

閱讀以下文章。

http://barseghyanartur.blogspot.nl/2013/09/make-django-localeurl-rembember-your.html

總之,隨着最後一個提交到Django的localeurl主枝和一些技巧,這是可能的。

第1步。從源代碼安裝django-localeurl(bitbucket)或從同一地點選擇稍後提交。

$點子安裝汞柱+ https://bitbucket.org/carljm/[email protected]#egg=django-localeurl

第2步:更新你的Django settings.py如下。

中間件類應如下所示(順序非常關鍵)。

請注意,django的SessionMiddleware是第一個!而LocaleURLMiddleware應該在django的CommonMiddleware之前!

請注意,LOCALEURL_USE_SESSION是新的。

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'localeurl.middleware.LocaleURLMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    # ... the rest 
) 

LOCALEURL_USE_SESSION = True 

步驟3.直接語言切換(POST)至{%URL 'localeurl_change_locale' %}圖,其具有設置選擇爲locale PARAM的語言。

就是這樣。請參閱文章中的提示以將其包含在您的模板中。

+0

以下是感謝您的時間。一年前我離開了Django:P –

相關問題