2017-03-22 99 views
0

有沒有什麼方法可以在settings.py中動態改變LANGUAGE_CODE變量的值(單擊按鈕(發送請求))?根據用戶動態設置或更改默認語言 - Django

我希望用戶將自己的「默認語言」設置爲他們的帳戶

現在用戶可以使用下拉列表選擇他們的首選語言,並且網站翻譯得非常完美,而且由於Django採用瀏覽器的語言,用戶在重新打開瀏覽器後不需要重新選擇語言來自同一瀏覽器的網站。

但是,當他們從不同的瀏覽器打開網站,默認語言又是「英語」,因爲在settings.py的LANGUAGE_CODE變量設置爲en-us的。

所以我想要做的是讓每個用戶都有一個選項來選擇他們想要的語言作爲默認值。我想通過製作另一個(類似的)下拉菜單並要求用戶選擇他們想要的語言作爲「默認」並按下按鈕來完成此操作,並且在保存時,我想將LANGUAGE_CODE的值更改爲所選的一個由用戶(即動態地改變它)。但我不知道如何動態改變LANGUAGE_CODE的值。

此外,這種方法還有一個問題。再說就算我能夠動態地改變這種LANGUAGE_CODE變量,它將使該網站有選擇的語言爲默認所有用戶不僅對誰改變了它,根據Django的文檔是一個特定的用戶:

LANGUAGE_CODE:

  • 如果locale中間件不使用,它決定哪種翻譯是提供給所有用戶。

我研究了很多,但找不到解決方案。我對國際化非常陌生。請幫忙。

回答

2

當然有,那就是翻譯的整點。你通過思考「默認」語言來迷惑自己;按照定義,他們選擇的東西不是默認的。

Django文檔解釋瞭如何明確地爲用戶提供set the active language。您可以完全按照您的描述進行設置。

您可能還希望在登錄時重新設置此值,同樣通過傳遞用戶配置文件中的值。

+0

非常感謝你的回答。這是我所尋找的東西:D –

0

ü需要包括{%負載的i18n%}在每個模板文件並在以往文本的/ var必須是在合適的語言傳遞{%反%}

example.html的

{% load i18n %} 
... 
... 
<title>{% trans "This is the title." %}</title> 
<title>{% trans myvar %}</title> 

請參閱Django文檔對於相同的: https://docs.djangoproject.com/en/1.10/topics/i18n/

+0

你完全誤解了我的問題。我的項目中已包含所有這些內容。翻譯都很好。我想要的是能夠根據用戶的需要動態設置「默認」語言。 –