HTTP协议中的Content-Language头部用于标识响应消息的自然语言。接受方可以使用这些头部信息来选择合适的语言进行渲染和显示。
Content-Language头部的取值是由ISO 639语言代码组成的,可以包含多个值,使用逗号分隔。以下是常见的Content-Language头部取值:
en
表示英语zh
表示中文zh-CN
表示简体中文zh-TW
表示繁体中文ja
表示日语ko
表示韩语fr
表示法语de
表示德语es
表示西班牙语
当一个响应消息有多个Content-Language头部时,它们的顺序没有影响。但是,如果多个值具有相同的语言,但是使用了不同的内容变体,那么它们的顺序应该按照质量因子进行排列。例如:
Content-Language: fr-CA, fr-FR;q=0.5, en-US;q=0.1
这个例子中,法语(Canada)是首选语言。如果不能支持该语言,那么法语(France)是第二选择,但它只有0.5的质量因子,表示不太适合当前的情况。如果以上两个语言都不可行,那么英语(美国)被视为第三个选择。
下面是两个示例,用于说明Content-Language头部的用法:
示例1
下面是一条HTTP响应消息:
HTTP/1.1 200 OK
Content-Language: en, de
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>示例1</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is an example of how the Content-Language works.</p>
</body>
</html>
这个例子中,响应消息的Content-Language头部具有”en, de”两个取值。这意味着这个响应消息可以使用英语或德语进行渲染。
示例2
下面是另一条HTTP响应消息:
HTTP/1.1 200 OK
Content-Language: zh, en
Content-Type: application/json; charset=utf-8
{
"name": "张三",
"age": 20,
"location": "北京"
}
这个例子中,响应消息的Content-Language头部具有”zh, en”两个取值。这意味着这个响应消息可以使用中文或英文进行渲染。但是由于这个响应消息的Content-Type是application/json,因此这个响应消息中并没有HTML内容。