什么是内容语言和接受语言?


82

我已经看到了Content-Language和的HTTP标头Accept-Language,有人可以解释它们的用途以及它们之间的区别吗?我有一个多语言站点,我想知道我是否应该将这两个站点都设置为用户当前选择的语言。


您可能不应该为网站添加Content-Language,因为浏览器通常不使用它们。但是,您可以在HTML中使用lang属性。
james.garriss 2012年

Answers:


103

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设置值,以为您的网站强制使用某种语言。这是因为某些用户可能希望在不更改其语言接受首选项的情况下以某种语言查看您的网站。


13
稍微调整一下您的答案:Content-Language是内容标头,因此无论从服务器到客户端还是从客户端到服务器,它都适用于内容。
james.garriss 2012年

1
RFC2616:“ Content-Language实体标题字段描述了封闭实体的预期受众的自然语言。但是,仅仅是因为实体中存在多种语言,并不意味着它是针对多种语言的受众的。一个例子是初学者的语言入门,例如“拉丁语入门”,显然是供有英语水平的听众使用的。在这种情况下,内容语言将只包含“ en”。” R. Fielding,加州大学欧文分校,J。Gettys,J。Mogul,H。Frystyk,L。Masinter,P。Leach,T。Berners-Lee;1999.
Ucho

因此,页面上的语言绝对不是。参见RFC 2616第14.12节
Ucho

20

Content-Language描述特定内容旨在使用的语言。 Accept-Language是用户代理想要内容使用的语言列表。想到这一点的最佳方法是Content-Language描述内容并Accept-Language传达偏好。




0

Content-Language 实体头用于描述语言(一个或多个),用于对于观众来说,使得其允许用户根据用户自己的优选语言区分。

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

— MDN Web参考-HTTP标头-内容语言

Accept-Language请求的HTTP标头通告哪些语言客户端是能够理解,并且其区域的变体是优选的。(通过语言,我们指的是自然语言,例如英语,而不是编程语言。)

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

— MDN Web参考-HTTP标头-接受语言

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.