適切な方法は、サーバーに送信されたHTTP Accept-Languageヘッダーを確認することです。これには、ユーザーがブラウザーを優先するように構成した言語の重み付けされた順序付きリストが含まれています。
残念ながら、このヘッダーはJavaScript内で読み取ることはできません。入手できるのはnavigator.language
、ローカライズされたバージョンのWebブラウザーがインストールされていることを通知するだけです。これは、必ずしもユーザーの優先言語と同じではありません。IEでは、代わりにsystemLanguage
(OSインストール言語)、browserLanguage
(と同じlanguage
)、userLanguage
(ユーザー設定のOSリージョン)が表示されますが、これらはすべて同様に役に立ちません。
これらのプロパティのいずれかを選択する必要がある場合は、userLanguage
最初にスニッフィングし、フォールバックしlanguage
、その後に(それらが利用可能な言語に一致しなかった場合のみ)browserLanguage
、最後にを調べsystemLanguage
ます。
Accept-Languageヘッダーを単に読み取り、文字列にヘッダー値を含むJavaScriptファイルとしてそれを吐き出すサーバー側スクリプトをネット上のどこかに置くことができる場合、例えば:
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
次に、その外部サービスを指す<script src>をHTMLに含め、JavaScriptを使用して言語ヘッダーを解析できます。Accept-Language解析はほとんどの場合サーバー側で行われるため、これを行うための既存のライブラリコードはわかりません。
最終的に何をするにしても、一部の人にとっては常に間違っていると推測されるため、ユーザーオーバーライドが必要です。多くの場合、URLに言語設定を配置し(例:http://www.example.com/en/site vs http://www.example.com/de/site)、ユーザーがクリックできるようにします2つの間のリンク。両方の言語バージョンに単一のURLが必要な場合があります。その場合、設定をCookieに保存する必要がありますが、ユーザーエージェントがCookieと検索エンジンをサポートしていないと混乱する可能性があります。