- 语言标记是命名口语的标准化字符串短语。英语的标记是 en,德语的标记是 de,韩语的标记是 ko,等等。语言标记能够描述语 言的地区变种和方言,比如巴西葡萄牙语的标记是pt-BR、美式英语的标记是 en-US,汉语中的湖南话的标记是 zh-xiang。
1. Content-Language 首部
- 实体的 Content-Language 首部字段描述实体的目标受众语言。如果内容主要是给法语受众的,其 Content-Language 首部字段就将包含:
Content-Language: fr
- Content-Language 首部不仅限于文本文档。音频片段、电影以及应用程序都有可能是面向特定语言受众的。任何面向特定语言受众的媒体类型都可以有 Content-Language 首部。
- 如果内容是面向多种语言受众的,可以列出多种语言。
Content-Language: fr, en
2. Accept-Language 首部
- 我们绝大多数人至少懂一种语言。HTTP 允许我们把语言方面的限制和优先选择都发送给网站服务器。如果网站服务器有以多种语言表示的资源版本,它就能把内容用我们最优选的语言表示出来。服务器也可以根据 Accept-Language 首部生成适合用户语言的动态内容,或据此选择图像,或选择适合目标语言的商业促销等。
- 可以在 Accept-Language 首部中放入多个语言标记以枚举所支持的全部语言及其优先顺序(从左到右):
Accept-Language: en, de-CH, de
3. 语言标记的类型
- 在 RFC 3066,“Tags for the Identification of Languages”(标识语言的标记)中记录了语言标记的标准化语法。可以用语言标记来表示:
- 一般的语言分类(比如es代表西班牙语);
- 特定国家的语言(比如 en-GB 代表英国英语);
- 语言的方言(比如no-bok指挪威的书面语);
- 地区性的语言(比如 sgn-US-MA 代表美国马撒葡萄园岛上的手语);
- 标准化的非变种语言(比如i-navajo);
- 非标准的语言(比如 x-snowboarder-slang)。
4. 子标记
- 语言标记有一个或多个部分,用连字号分隔,称为子标记:
- 第一个子标记称为主子标记,其值是标准化的;
- 第二个子标记是可选的,遵循它自己的命名标准;
- 其他尾随的子标记都是未注册的。
- 主子标记中只能含有字母(A ~ Z)。其后的子标记可以含有字母和数字,长度最多 8 个字符。
1. 第一个子标记——名字空间
- 第一个子标记通常是标准化的语言记号,选自 ISO 639 中的语言标准集合。不过也可以用字母 i 来标识在 IANA 中注册的名字,或用 x 表示私有的或者扩展的名字。下面是各种规则。
- 如果第一个子标记含有:
- 2 个字符,那就是来自 ISO 63922 和 639-1 标准的语言代码;
- 3 个字符,那就是来自 ISO 639-2 标准及其扩展的语言代码;
- 字母 i,该语言标记是在 IANA 显式注册的;
- 字母 x,该语言标记是私有的、非标准的,或扩展的子标记。
2. 第二个子标记——名字空间
- 第二个子标记通常是标准化的国家记号,选自 ISO 3166 中的国家代码和地区标准集合。不过也可以是在 IANA 注册过的其他字符串。下面是各种规则。
- 如果第二个子标记含有:
- 2 个字符,那就是 ISO 3166 中定义的国家/地区;
- 3~8 个字符,可能是在 IANA 中注册的值;
- 单个字符,这是非法的情况。
3. 其余子标记——名字空间
- 除了最长可以到 8 个字符(字母和数字)之外,第三个和其后的子标记没有特殊规则。
5. 大小写
- 所有的标记都是不区分大小写的,也就是说,标记 en 和 eN 是等价的。但是,习惯上用全小写来表示一般的语言,而用全大写来表示特定的国家。例如,fr 表示所有分类为法语的语言,而 FR 表示国家法国。
6. IANA语言标记注册
- 第一个和第二个语言子标记的值由各种标准文档以及相关的维护组织定义。IANA 依据 RFC 3066 中概括的规则来管理标准的语言标记列表。
- 如果语言标记由标准的国家和语言值组成,标记就不需要专门注册。只有那些无法用标准的国家和语言值构成的语言标记才需要专门向 IANA 注册。