2016-04-26 12 views
1

私のウェブサイトはフランス語と英語のバージョンがあります。
* example.comは/私の英語版です。
* example.com/fr /は私のフランス語版です。言語設定に基づいてウェブサイトのバージョンを変更する

フラグをクリックしてウェブサイトのバージョンを変更する可能性がありますが、デフォルトではexample.comに到着すると英語で表示されます。

私はそれらに彼らの言語設定に対応するバージョンをさせていただきたいと思い、私は言語設定を検出:

var language = window.navigator.userLanguage || window.navigator.language; 

しかし、その後、彼らはWebページ上で到着したとき、それが与えるように、どのようなコード私が使うのですかユーザーの言語設定に応じたバージョン?

ウェブサイトがフランス語版を提供しているが、英語版が欲しい場合は、マニュアルを変更する可能性もあります。

答えて

1

あなたがそれらをリダイレクトする必要があります:

if (window.navigator.language === 'fr') { 
    window.location.href = "http://example.com/fr/"; 
} 

window.navigator.languageプロパティがimplemented differently across browsersであり、あなたが(window.navigator.languagesのような)配列における特定の言語を見つけることがありますのでご注意ください。

より良い選択肢は、サーバー側のHTTP要求でAccept-Languageヘッダーをチェックし、それに応じてサーバー側でリダイレクトすることです。

国際化方法はJavaScript-basedですが、通常はサイトのリダイレクトは必要ありません。

+0

しかし、ここで問題となるのは、window.navigator.language == "fr"だからjavascriptがウェブサイトをフランス語版に設定しているが、英語版を使用したいと思っていて、手作業で英語を入れていると言うことです。 その後メインページやそのJavaScriptコードを含むページに戻ると、それはフランス語に戻されます。 – Jackymamouth

+0

その場合、 'wants_english = true'のような追加のJavaScriptパラメータを追加し、if文でそれを確認することもできます。これはサーバー側で行う必要があるため、GETパラメーターを使用してサーバー上のリダイレクト全体を実行することもできます。クライアント側で絶対にしたいのであれば、彼の言語を選択するときに、ユーザのブラウザに 'localStorage'エントリを作成してください。ユーザーがJavaScriptまたはLocalStorageをブロックする可能性があるため、これはサーバー側のソリューションよりはるかに脆弱であることに注意してください。 – KWeiss

関連する問題