HTTP的Accept-Language头部用于指定客户端程序接受的自然语言的范围。当服务器端程序生成HTTP响应时,会利用该头部提供的语言范围,返回客户端程序能够接受并支持的自然语言。以下是Accept-Language头部的具体取值:
- ISO 639-1 Language Code:ISO 639-1是一种包含两个字母的编码规则,用于代表语言名称。例如简体中文对应的编码是 “zh”。
- ISO 3166-1 Alpha-2 Country Code: ISO 3166-1是一个国家/地区编码体系,两个字母的国家代码能够和ISO 639-1编码搭配使用,用于标识语言环境和区域首选项。例如,美国对应的编码是 “US”。
Accept-Language头部可以包含多个语言范围,范围之间用逗号分隔,且可以指定优先级,例如:
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
以上头部表示请求的语言范围按照以下优先级逐个检查:
- 美式英语
- 其它类型的英语,优先级为0.9
- 简体中文,优先级为0.8
- 其它类型的中文,优先级为0.7
当服务器生成HTTP响应时,会尝试返回如上取值对应的自然语言,如果服务器无法满足客户端请求的范围需求,则可以根据默认配置或者第一项语言范围返回相应的内容。
示例1:请求头部为 “Accept-Language: fr-CA, fr;q=0.9, en;q=0.8″,服务器响应头部为 “Content-Language: fr-CA”。表示服务器生成的响应内容是加拿大法语,如果服务器无法生成加拿大法语的响应内容,则可以生成其它类型的法语或英语内容。
示例2:请求头部为 “Accept-Language: zh-CN,zh;q=0.9,en;q=0.8″,服务器响应头部为 “Content-Language: zh-CN”。服务器生成的响应内容是中文,如果服务器无法生成简体中文的响应内容,则可以生成其它类型的中文或英语内容。