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

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 ありIE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応

関連情報

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

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