HTTP_ACCEPT_LANGUAGE は、ブラウザーが表示可能な言語の一覧を表します。 皆さんは日本語環境でブラウザーを利用されている方がほとんどかと思いますので、 お使いのブラウザーは HTTP_ACCEPT_LANGAGE に「ja」を入れて送ってきます。 ただし、ブラウザーの表示可能言語が複数設定されている場合には、それぞれがカンマで区切られます。
海外の企業のウェブサイトを見たとき、なぜか自動的に日本語バージョンのサイトが表示されたという経験があるのではないでしょうか。 それは HTTP_ACCEPT_LANGAGE を見て、自動的に振り分けているからです。 このように HTTP_ACCEPT_LANGAGE は、訪問者の主言語に合わせたコンテンツを出力する際の手掛かりになります。
さて、Perl スクリプトで $ENV{'HTTP_ACCEPT_LANGUAGE'} を覗くと、
次のような値が格納されていることが分かります。
ja,fr;q=0.7,de;q=0.3
この値はカンマ区切りで見ていきます。1 つ目の「ja」は日本語を表します。
次の「fr;q=0.7」はフランス語を表します。
「q=0.7」は品質値といい、各言語の優先度を表します。
この値は数が大きいほど優先度が高いことを意味します。
なお、「ja」には品質値がありませんが、これはデフォルト値である「1」が適用されます。
結局のところ、「ja,fr;q=0.7,de;q=0.3」が意味するところは、
「日本語、フランス語、ドイツ語の優先順位で言語を受け付けます。」となります。
言語コードは、プライマリーコードとサブコードで成り立っています。これらは「-(ハイフン)」で区切られます。 サブコードはない場合もあります。
プライマリーコードは言語を指し、サブコードは主に利用国を指します。プライマリーコードは、ISO639 で予約されています。
さて、あなたのブラウザーは何語? こちらで確認できます。
ブラウザーが送ってくる言語コードの意味は、以下のとおりです。
| 言語コード | 言語名 |
|---|---|
| is | アイスランド語 |
| ga | アイルランド語 |
| af | アフリカーンス語 |
| sq | アルバニア語 |
| it | イタリア語 |
| id | インドネシア語 |
| uk | ウクライナ語 |
| nl | オランダ語 |
| nl-BE | オランダ語/ベルギー語 |
| ca | カタロニア語 |
| gl | ガリチア語 |
| el | ギリシア語 |
| hr | クロアチア語 |
| sv | スウェーデン語 |
| gd | スコッチ ゲール語 |
| es | スペイン語 |
| es-AR | スペイン語/アルゼンチン |
| es-CO | スペイン語/コロンビア |
| es-ES | スペイン語/スペイン |
| es-MX | スペイン語/メキシコ |
| sk | スロヴァキア語 |
| sl | スロヴェニア語 |
| sr | セルビア語 |
| cs | チェコ語 |
| da | デンマーク語 |
| de | ドイツ語 |
| de-AU | ドイツ語/オーストリア |
| de-CH | ドイツ語/スイス |
| de-DE | ドイツ語/ドイツ |
| tr | トルコ語 |
| no | ノルウェー語 |
| eu | バスク語 |
| hu | ハンガリー語 |
| fi | フィンランド語 |
| fo | フェロー語 |
| fr | フランス語 |
| fr-CA | フランス語/カナダ |
| fr-CH | フランス語/スイス |
| fr-FR | フランス語/フランス |
| fr-BE | フランス語/ベルギー |
| bg | ブルアリア語 |
| pl | ポーランド語 |
| pt | ポルトガル語 |
| pt-BR | ポルトガル語/ブラジル |
| mk | マケドニア語 |
| ro | ルーマニア語 |
| ru | ロシア語 |
| en | 英語 |
| en-GB | 英語/英国 |
| en-US | 英語/米国 |
| ko | 韓国語 |
| zh | 中国語 |
| zh-TW | 中国語/台湾 |
| zh-CN | 中国語/中国 |
| ja | 日本語 |
| be | 白ロシア語 |