Content-Language

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Content-Language 是一个 entity header(实体消息首部),用来说明访问者希望采用的语言或语言组合,这样的话用户就可以根据自己偏好的语言来定制不同的内容。

举个例子,假如设置了这样一条消息首部( "Content-Language: de-DE" ),那么说明这份文件是为说德语的人提供的(当然这并不意味着文件本身就是用德语写的。比如,它可能是为说德语的人开设的英语教程的一部分,也就是用英语写的)。

如果没有指明 Content-Language,那么默认地,文件内容是提供给所有语言的访问者使用的。多个语言标签也是合法的,同样的,这个首部还可以用来描述不同媒体类型的文件,而不单单局限于文本型文档。

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

语法

Content-Language: de-DE
Content-Language: en-US
Content-Language: de-DE, en-CA

指令

language-tag

多个语言标签需要用逗号隔开。每一个语言标签都是由一个或多个不区分大小写的子标签构成的,子标签之间用连字号 ("-", %x2D) 隔开。通常情况下,一个语言标签是由标识一个大的语言家族的主语言子标签(例如"en" = English),以及后面可选的用来缩小语言范围使更确切的一系列子标签("en-CA" 表示在加拿大范围使用的英语的变种)构成的。

备注: 语言标签在 RFC 5646中被正式定义,它使用的语言代码依赖于 ISO 639 标准 (通常为 ISO 639-1 code list) 。

示例

声明文档的书写语言

全局的 lang 属性使用在 HTML 元素去表达全部的 HTML文档或者部分的语言。

html
<html lang="de"></html>

不要使用这个 meta 元素去声明文档语言:

html
<!-- /!\ This is bad practice -->
<meta http-equiv="content-language" content="de" />

为资源指定目标访问者

Content-Language 请求头用于指定**页面的目标受众,**并且可以指明当前页面存在多种语言。

Content-Language: de, en

规范

Specification
HTTP Semantics
# field.content-language

浏览器兼容性

BCD tables only load in the browser

参见