2017-03-22 6 views
0

ボタンをクリックする(リクエストを送信する)際にsettings.pyの変数LANGUAGE_CODEの値を動的に変更する方法はありますか?デフォルトの言語をユーザに応じて動的に設定または変更する - Django

のアカウント「」に「デフォルト言語」を設定したいとします。

現在、ユーザはドロップダウンリストを使用して好みの言語を選択できます。ウェブサイトは完全に翻訳されます。また、Djangoはブラウザの言語を選択するため、再オープン後に言語を再選択する必要はありません。同じブラウザからのウェブサイト

しかし、彼らは別のブラウザからウェブサイトを開くと、デフォルトの言語があるためsettings.pyにen-usに設定LANGUAGE_CODE変数の再び「英語」です。

だから、私がしたいのは、各ユーザにデフォルトとして希望する言語を選択させることです。私は別の(同様の)ドロップダウンを作って、 "default"としたい言語を選択してsaveボタンを押すように頼み、保存時にLANGUAGE_CODEの値を選択したものに変更したい(すなわち、動的に変更する)ことができます。しかし、LANGUAGE_CODEの値を動的に変更する方法はわかりません。

また、この方法にはもう1つ問題があります。

:だけでなく、Djangoのドキュメントによると、それを変更し、1人の特定のユーザーのALL USERSのデフォルトとして選択された言語を持っている私は、動的にこのLANGUAGE_CODE変数を変更することができたとしても、それはウェブサイトになるだろうと言います

LANGUAGE_CODE:ロケールミドルウェアが使用されていない場合

  • 、それは翻訳がすべてのユーザーに提供されていることを決定。

私は多くを研究しましたが、解決策を見つけることができませんでした。私は国際化について非常に新しいです。助けてください。

答えて

2

それは翻訳の全体のポイントで、そこにあります。あなたは "デフォルト"の言語を考えて自分自身を混乱させました。彼らが選んだものは、定義上、デフォルトではありません。

Djangoドキュメントでは、ユーザーのために明示的にset the active languageを説明しています。これは、記述したとおりに保存すると設定できます。

また、ユーザーのプロファイルから値を渡すことで、この値をログイン時に再設定することもできます。

+0

この回答をありがとうございました。これは私が探していたものです:D –

0

Uは、テンプレートファイルのそれぞれに{%負荷の国際化%}を含める必要があり、これまでテキスト/ 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

あなたは私の質問を完全に誤解しています。私はすでに私のプロジェクトに含まれているこれらのすべてを持っています。翻訳はすべてうまくいっています。私が望むのは、ユーザーが望むように 'default'言語を動的に設定できることです。 –

関連する問題