0

クライアントのコンピューター言語を検出する方法はありますか? 英語とドイツ語の 2 つの言語でウェブサイトを開発しました。ドイツのユーザーが私の Web サイトを開くと、ドイツ語版が開きます。それ以外の場合は、他の出身国の英語版が開きます。

Google で検索しようとしましたが、ブラウザ言語の検出機能しかありません。これが最善の方法ですか?

Ps。私はここであなたのコードを求めているのではなく、これを達成する方法についての提案を求めているだけですが、実際の例を見せてくれれば幸いです!

4

2 に答える 2

2

最近のブラウザでnavigator.languageは、あなたが望むものです:

if (navigator.language == "de") {
    alert("Guten Tag!");
} else {
    alert("Good Morning!");
}
于 2013-08-12T11:03:21.790 に答える
1

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']

何をするにしても、言語を手動で切り替える方法を提供してください。最善の推測でさえ間違っている可能性があるからです。

于 2013-08-12T11:48:49.570 に答える