What are Content-Language and Accept-Language?

丶灬走出姿态 提交于 2019-12-17 08:54:28

问题


I have seen the HTTP headers of Content-Language and Accept-Language, could someone explain what these are for and the difference between them? I have a multilingual site and wondering should I be setting both to the sites current selected language, by the user.


回答1:


Content-Language, an entity header, is used to describe the language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language. Entity headers are used in both, HTTP requests and responses.1

Accept-Language, a request HTTP header, advertises which languages the client is able to understand, and which locale variant is preferred.2 There can be multiple languages, each with an optional weight or 'quality' value. For example:

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

(The default weight is 1, so this is equivalent to da;q=1, en-GB;q=0.8, en;q=0.7).

You're going to have to parse the values and weights to see if an appropriate translation is available, and provide the user the translation in the highest preferred language weight.

It is recommended you give the users an alternative, such as a cookie set value, to force a certain language for your site. This is because some users may want to see your site in a certain language, without changing their language acceptance preferences.




回答2:


Content-Language describes the language that a particular piece of content is intended for. Accept-Language is the list of languages that a user agent wants content in. The best way to think of this is that Content-Language describes content and Accept-Language conveys a preference.




回答3:


Content-Language is the language of the page you're serving. Accept-Language is a list of languages you PREFER to accept.




回答4:


The Content-Language entity-header field describes the natural language(s) of the intended audience for the enclosed entity. Note that this might not be equivalent to all the languages used within the entity-body.

The Accept-Language request-header field restricts the set of natural languages that are preferred as a response to the request

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




回答5:


The Content-Language entity header is used to describe the language(s) intended for the audience, so that it allows a user to differentiate according to the users' own preferred language.

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

— MDN Web Reference - HTTP Headers - Content-Language

The Accept-Language request HTTP header advertises which languages the client is able to understand, and which locale variant is preferred. (By languages, we mean natural languages, such as English, and not programming languages.)

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

— MDN Web Reference - HTTP Headers - Accept-Language



来源:https://stackoverflow.com/questions/6157485/what-are-content-language-and-accept-language

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!