日本語のサイトが日本語で表示される理由
海外の Web サイトにアクセスしたとき、自動的に日本語で表示されることがあります。逆に、海外から日本のサイトにアクセスすると英語で表示されることも。Web サイトはどうやってあなたの言語を判定しているのでしょうか。
実は、あなたのブラウザは毎回のアクセスで「私は日本語を話します」という情報をサーバーに送信しています。この仕組みを知ると、なぜ時々間違った言語で表示されるのか、そしてそれがプライバシーにどう関わるのかが理解できます。
Accept-Language ヘッダー - ブラウザが送る言語の名刺
Web サイトが言語を判定する最も基本的な方法は、HTTP リクエストに含まれる Accept-Language ヘッダーです。
たとえば、日本語環境のブラウザは以下のようなヘッダーを送信します。
Accept-Language: ja,en-US;q=0.9,en;q=0.8
これは「日本語が最優先 (q=1.0、省略時のデフォルト)、次にアメリカ英語 (q=0.9)、その次に英語全般 (q=0.8)」という意味です。q は品質値 (quality value) と呼ばれ、0 から 1 の範囲で言語の優先度を表します。
Web サーバーはこのヘッダーを読み取り、対応できる言語の中から最も優先度の高いものを選んでレスポンスを返します。このサイトも同じ仕組みで、あなたのブラウザの設定に基づいて日本語・英語・中国語・スペイン語を切り替えています。
IP アドレスからの地理的推定
Accept-Language ヘッダーだけでは不十分な場合、Web サイトはGeoIP (IP アドレスから地理的位置を推定する技術) を併用します。
日本の IP アドレスからアクセスしているなら日本語、ドイツの IP アドレスならドイツ語、という推定です。ただし、この方法には限界があります。
- VPN を使っていると、VPN サーバーの所在国の言語が表示される
- 海外在住の日本人は、現地の言語で表示されてしまう
- 多言語国家 (スイス、ベルギーなど) では、IP アドレスだけでは言語を特定できない
そのため、多くのサイトは Accept-Language を第一優先とし、GeoIP はフォールバック (補助的な判定) として使用しています。
言語判定に使われるその他のシグナル
大規模な Web サービスは、より精度の高い言語判定のために複数のシグナルを組み合わせています。
- Cookie / ローカルストレージ: 過去にユーザーが選択した言語を記憶し、次回アクセス時に適用する。最も確実な方法
- ユーザーアカウントの設定: ログイン済みユーザーのプロフィールに設定された言語を使用する
- URL パス:
/ja/、/en/のように URL に言語コードを含める方式。このサイトもこの方式を採用している - ブラウザの
navigator.language: JavaScript で取得できるブラウザの言語設定。Accept-Languageと同じ情報だが、クライアントサイドで利用できる
判定の優先順位は一般的に、ユーザーの明示的な選択 > Cookie > Accept-Language > GeoIP の順です。ユーザーが自分で言語を選んだ場合、それが最も信頼できる情報だからです。
言語設定とプライバシーの関係
Accept-Language ヘッダーは、ブラウザフィンガープリントの一部として利用される可能性があります。
たとえば「日本語が最優先、次にフランス語、その次に英語」という珍しい言語設定は、あなたを特定する手がかりになり得ます。言語の優先順位、品質値の細かい設定、対応言語の数は、ユーザーごとに異なるためです。
このサイトのトップページでは、あなたのブラウザが送信している言語設定を確認できます。IP 確認さんにアクセスして、自分がどんな情報を送信しているか一度チェックしてみてください。
Web の多言語化技術やブラウザの仕組みを詳しく知りたい方には、Web 技術の解説書が参考になります。