クライアントのコンピューター言語を検出する方法はありますか? 英語とドイツ語の 2 つの言語でウェブサイトを開発しました。ドイツのユーザーが私の Web サイトを開くと、ドイツ語版が開きます。それ以外の場合は、他の出身国の英語版が開きます。
Google で検索しようとしましたが、ブラウザ言語の検出機能しかありません。これが最善の方法ですか?
Ps。私はここであなたのコードを求めているのではなく、これを達成する方法についての提案を求めているだけですが、実際の例を見せてくれれば幸いです!
クライアントのコンピューター言語を検出する方法はありますか? 英語とドイツ語の 2 つの言語でウェブサイトを開発しました。ドイツのユーザーが私の Web サイトを開くと、ドイツ語版が開きます。それ以外の場合は、他の出身国の英語版が開きます。
Google で検索しようとしましたが、ブラウザ言語の検出機能しかありません。これが最善の方法ですか?
Ps。私はここであなたのコードを求めているのではなく、これを達成する方法についての提案を求めているだけですが、実際の例を見せてくれれば幸いです!
最近のブラウザでnavigator.language
は、あなたが望むものです:
if (navigator.language == "de") {
alert("Guten Tag!");
} else {
alert("Good Morning!");
}
Accept-Language
ヘッダーを使用します。これは、ユーザーがブラウザーのオプションで設定することによって明示的に要求した言語です (それ以外の場合は、ブラウザーのインストール言語がデフォルトになります)。ヘッダーには、レーティング付きの複数の言語を含めることができます。
fr,ja,de-AT;q=0.8,de;q=0.6
そのため、'en' と 'de' で始まる最も評価の高い (同点の場合は最初にリストされた) 言語を選択する必要があります。
残念ながら、Accept-Language
ヘッダーは JavaScript から簡単にアクセスできません。
最近のバージョンの Firefox ではnavigator.language
、そのリストから最高評価の言語が表示されます。残念ながら、ユーザーが「フランス語、ドイツ語」の順序で言語を要求した場合、fr
.
他のブラウザーでは、ブラウザーのインストール言語を提供します。これは妥当な推測ですが、ユーザーが実際に要求した言語ほどではありません。IEbrowserLanguage
でも同じで、Windows ロケールに関連する と もuserLanguage
ありsystemLanguage
ますが、これは通常、はるかに悪い推測です。
したがって、「英語とドイツ語のうち、ユーザーが構成した言語のうち最も評価の高いもの」が必要な場合はAccept-Language
、サーバー側でヘッダーを読み取って解析し、その言語を文字列で JS コードに返すのが最善の方法です。ヘッダー (から) を適切http_negotiate_language
に解析するのに役立つ PHP 関数です。$_SERVER['HTTP_ACCEPT_LANGUAGE']
何をするにしても、言語を手動で切り替える方法を提供してください。最善の推測でさえ間違っている可能性があるからです。