Accept-Language ヘッダー
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
HTTP の Accept-Language リクエストヘッダーは、クライアントがどの言語を理解できるか、どの種類のロケールが推奨されるかを示します。
サーバーはコンテンツネゴシエーションを使用して、提案されたものから一つを選択して使用し、 Content-Language レスポンスヘッダーを使用してクライアントに選択結果を知らせます。
ブラウザーは、アクティブなユーザーインターフェイス言語に基づいて、このヘッダーに要求される値を設定します。
ユーザーはブラウザー設定を通じて、その他の優先言語を追加で設定することも可能です。
Accept-Language ヘッダーには通常、navigator.languages プロパティと同じロケールが、q 値(品質値)が低い順に列挙されます。Chrome や Safari などの一部のブラウザーは、Accept-Language に言語のみの代替タグを追加します。例えば、navigator.languages が ["en-US", "zh-CN"] の場合、en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 となります。プライバシー保護(フィンガープリンティングの低減)のため、Accept-Language と navigator.languages の両方において、ユーザーの環境設定の完全なリストが含まれない場合が考えられます。例えば、Safari(常に)や Chrome のシークレットモードでは、言語が 1 つしか含まれません。
このヘッダーは、サーバーが他の方法(例えば、明示的なユーザーの決定に依存する特定の URL の使用など)で対象コンテンツの言語を判別できない場合のヒントとして機能します。
サーバーは、ユーザーが明示的に選択した言語設定を絶対に上書きしてはなりません。Accept-Language ヘッダーの内容は、ユーザーが制御できない場合(例えば旅行中など)がよくあります。
ユーザーは、ユーザーインターフェースの言語とは異なる言語でページを閲覧したい場合もあるでしょう。
サーバーは一致する言語のコンテンツを提供できない場合は、 406 Not Acceptable エラーコードを送り返すことができますが、これはほとんど実装されていません。
サーバーはこうした場合、Accept-Language ヘッダーを多くの場合無視し、より良い使い勝手のために最も適切なリソースで成功レスポンスを返します。
| ヘッダー種別 | リクエストヘッダー |
|---|---|
| 禁止リクエストヘッダー | いいえ |
| CORS セーフリストリクエストヘッダー | はい* |
* 値は 0-9、A-Z、a-z、空白、*,-.;= の文字のみです。
構文
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') など他の変化形は、通常このヘッダーのコンテキストでは使用されません。 *(ワイルドカード)-
Accept-Languageフィールドに存在する他の言語と一致しない言語です。 ;q=(Q 値の重み)-
重みと呼ばれる、相対的な品質値を使用して表現される優先順位の順序で配置された値です。 品質値はデフォルトで
1です。
例
>Accept-Language ヘッダーの使用
以下のリクエストは、de ベース言語を使用したドイツ語を優先します。
Accept-Language: de
Accept-Language での品質値の使用
次のリクエストはデンマーク語をより強く示していますが、優先度は低いもののイギリス英語やそれ以外の英語も受け入れます。
Accept-Language: da, en-gb;q=0.8, en;q=0.7
仕様書
| Specification |
|---|
| HTTP Semantics> # field.accept-language> |
ブラウザーの互換性
関連情報
- HTTP コンテンツネゴシエーション
- コンテンツネゴシエーションの結果を伴うヘッダー:
Content-Language - 他の同様のヘッダー:
TE,Accept-Encoding,Accept