web-dev-qa-db-ja.com

Content-LanguageおよびAccept-Languageとは何ですか?

Content-LanguageAccept-LanguageのHTTPヘッダーを見ましたが、誰かがこれらの目的とそれらの違いを説明できますか?多言語サイトがあり、ユーザーが現在選択している言語を両方のサイトに設定する必要があるかどうか疑問に思います。

58
amateur

エンティティヘッダーであるContent-Languageは、ユーザーが自分の好みの言語に応じて区別できるように、対象ユーザー向けの言語を記述するために使用されます。エンティティヘッダーは、HTTP要求と応答の両方で使用されます。1

Accept-Language(リクエストHTTPヘッダー)は、クライアントが理解できる言語、および優先されるロケールバリアントをアドバタイズします。2 複数の言語があり、それぞれにオプションの重みまたは「品質」値があります。例えば:

Accept-Language: da, en-GB;q=0.8, en;q=0.7

(デフォルトの重みは1なので、これはda;q=1, en-GB;q=0.8, en;q=0.7と同等です)。

適切な翻訳が利用可能かどうかを確認するために値と重みを解析し、ユーザーに最も優先される言語の重みで翻訳を提供する必要があります。

サイトに特定の言語を強制するために、Cookieセットの値などの代替をユーザーに提供することをお勧めします。これは、一部のユーザーは、言語の受け入れ設定を変更せずに、特定の言語でサイトを表示したい場合があるためです。

86
onteria_

Content-Languageは、特定のコンテンツが対象とする言語を説明します。 Accept-Languageは、ユーザーエージェントがコンテンツを必要としている言語のリストです。これを考える最良の方法は、Content-Languageはコンテンツを説明し、Accept-Languageは好みを伝えます。

15
D.Shawley

Content-Language は、提供しているページの言語です。 Accept-Language は、受け入れることが好ましい言語のリストです。

13
user539810

Content-Language entity-headerフィールドは、同封されたエンティティの対象オーディエンスの自然言語を示します。これは、エンティティ本体内で使用されるすべての言語と同等ではないことに注意してください。

Accept-Language request-headerフィールドは、要求への応答として優先される自然言語のセットを制限します

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

5
Rana Prathap

Content-Languageエンティティヘッダー は、視聴者向けの言語を記述するために使用されるため、ユーザーは自分の好みの言語に従って区別することができます。

Header type                     Entity header
Forbidden header name           no
CORS-safelisted response-header yes
CORS-safelisted request-header  yes

— MDN Webリファレンス-HTTPヘッダー-Content-Language

Accept-Language request HTTPヘッダーは、クライアントが理解できる言語、および優先されるロケールバリアントを通知します。 (言語とは、プログラミング言語ではなく、英語などの自然言語を意味します。)

Header type                     Request header
Forbidden header name           no
CORS-safelisted request-header  yes

— MDN Webリファレンス-HTTPヘッダー-Accept-Language

0
georgeawg