Accept-Language
用法
Accept-Language 头是内容协商的一部分。客户端发送一份按偏好排序的语言标签列表,服务器为所请求的资源选择最合适的可用翻译。
浏览器会根据操作系统的语言设置来填充该头。其值遵循 BCP 47 语言标签语法,支持主语言代码(en、de、fr)和区域子标签(en-US、pt-BR、zh-CN)。当列出多种语言时,质量值用于对偏好进行排序。
服务器通过 Content-Language 响应头传达所返回内容的语言。当不存在匹配的翻译时,大多数服务器会返回默认语言,而不是响应 406 Not Acceptable,因为以回退语言提供内容通常比返回错误更有用。
language-tag
一个 BCP 47 语言标签。像 en 这样的主子标签可匹配任意区域变体。带有区域子标签的标签(如 en-GB)则针对特定的区域设置。
*
一个匹配任意未列出语言的通配符。
;q=(质量值)
一个介于 0 和 1 之间的权重,表示相对偏好。默认为 1.0。值为 0 表示该语言不可接受。
示例
客户端偏好英式英语,以通用英语作为回退,并以较低优先级接受德语。服务器以通用英语内容作为响应。
请求
GET / HTTP/1.1
Host: example.com
Accept-Language: en-GB, en;q=0.9, de;q=0.5
响应
HTTP/1.1 200 OK
Content-Language: en
一个来自配置为法语的浏览器的请求,并以任意语言作为回退。
Accept-Language: fr-FR, fr;q=0.9, *;q=0.5
一份多语言偏好列表,西班牙语第一、葡萄牙语第二、英语第三。
Accept-Language: es, pt;q=0.8, en;q=0.6