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

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

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

ヘッダー種別 リクエストヘッダー
禁止ヘッダー名 いいえ
CORS 対応リクエストヘッダー はい

構文

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

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

ディレクティブ

<language>

言語タグです (「ロケール識別子」とも呼ばれることがあります)。これは言語を表す2~3文字の基本言語タグと、任意で追加のサブタグを '-' で区切って続けます。追加情報の多くは言語や地域の変化形 ('en-US' または 'fr-CA' など) または使用する文字の種類 ('sr-Latn' など) です。正書法の種類 ('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
BCP 47 Tags for the Identification of Language

ブラウザーの対応

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 完全対応 あり

凡例

完全対応  
完全対応

関連情報

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

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