HTTP の Accept-Language 要求ヘッダーは、クライアントがどの言語を理解できるか、どの種類のロケールが推奨されるかを示します。(言語というのは、英語のような自然言語を意味し、プログラミング言語ではありません。)コンテンツネゴシエーションを使用して、サーバーは提案されたものから一つを選択して使用し、 Content-Language 応答ヘッダーを使用してクライアントに選択結果を知らせます。ブラウザーはユーザーインターフェイスの言語に従って、このヘッダーに適切な値を設定し、ユーザーはこれを変更することができますが、稀です(そして指紋につながるとして難色を示されます)。

このヘッダーはヒントであり、サーバーが言語を判別するための方法として、明示的なユーザーの選択によって制御する特定の URL など、他のものがない場合に使用されます。サーバーは明示的な決定を上書きしないことを推奨します。 Accept-Language の中身はユーザーが制御できないことが良くあります(旅行中で外国のインターネットカフェを使用している場合など)。ユーザーはユーザーインターフェースのロケール以外の言語によるページを訪問したがっているかもしれません。

サーバーが一致する言語を何も提供できない場合は、理論的には 406 (Not Acceptable) エラーコードを送り返すことができます。しかし、ユーザーの使い勝手をより良くするため、これはほとんど行われておらず、このような場合には一般に Accept-Language ヘッダーを無視するという方法が採られます。

ヘッダー種別 要求ヘッダー
禁止ヘッダー名 いいえ
CORS 対応要求ヘッダー はい

構文

Accept-Language: <language>
Accept-Language: <locale>
Accept-Language: *

// 重み値の構文によって重みづけされた複数の種別
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5

ディレクティブ

<language>
2又は3文字の文字列で表現される言語。
<locale>
完全な言語タグ。言語名自身に加え、 '-' の後に追加情報を含めることができます。よくある追加情報としては、国別の違い('en-US' など)や、使用するアルファベットの種類('sr-Lat' など)があります。正書法の種類('de-DE-1996' など)は、通常このヘッダーのコンテキストでは使用されません。
*
任意の言語です。 '*' はワイルドカードとして使用されます。
;q= (Q 値の重み)
重みと呼ばれる、相対的な品質値を使用して表現される優先順位の順序で配置された値です。

Accept-Language: de

Accept-Language: de-CH

Accept-Language: en-US,en;q=0.5

仕様書

仕様書 題名
RFC 7231, セクション 5.3.5: Accept-Language Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context

ブラウザーの対応

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり あり あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり あり あり あり あり

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09
最終更新者: mfuji09,