4月阅读周·HTTP权威指南:国际化之语言标记与HTTP篇

举报
叶一一 发表于 2025/04/25 09:27:24 2025/04/25
【摘要】 引言HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不...

引言

HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。

《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。

这本书主要包括以下内容:

  • 第一部分描述了Web的基础构件与HTTP的核心技术
  • 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
  • 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
  • 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
  • 第五部分介绍了发布和传播Web内容的技巧。
  • 第六部分是一些很有用的参考附录,以及相关技术的教程。

国际化

每天有上亿的人用数百种语言写着各种文档。为了真正实现万维网的目标,HTTP要能够传输和处理用多种语言和字母表编写的国际性文档。

网站国际化方面的两个主要问题:字符集编码(character set encoding)和语言标记(language tag)。HTTP应用程序使用字符集编码请求和显示不同字母表中的文本,它们使用语言标记根据用户所理解的语言来说明并限制内容。

语言标记与HTTP

Content-Language首部

实体的Content-Language首部字段描述实体的目标受众语言。如果内容主要是给法语受众的,其Content-Language首部字段就将包含:

Content-Language: fr

Content-Language首部不仅限于文本文档。音频片段、电影以及应用程序都有可能是面向特定语言受众的。任何面向特定语言受众的媒体类型都可以有Content-Language首部。

如果内容是面向多种语言受众的,可以列出多种语言。就像在HTTP规范中建议的,一份同时用英语和毛利语写的“Treaty of Waitangi”(怀唐伊条约)译稿,可以这样描述:

Content-Language: mi, en

不过,不能仅根据有多种语言在实体中出现就认为它是面向多种语言受众的。为初学者编写的语言入门教材,比如“A First Lesson in Latin”(拉丁语第一课),显然是为英语受众准备的,应当只用en来描述。

Accept-Language首部

我们绝大多数人至少懂一种语言。HTTP允许我们把语言方面的限制和优先选择都发送给网站服务器。如果网站服务器有以多种语言表示的资源版本,它就能把内容用我们最优选的语言表示出来。这里有个例子,客户端请求西班牙语内容:

Accept-Language: es

可以在Accept-Language首部中放入多个语言标记以枚举所支持的全部语言及其优先顺序(从左到右)。这里有个例子,客户端首选英语,但也接受瑞士德语(标准语言标记是de-CH)或其他德语变种(标记是de):

Accept-Language: en, de-CH, de

客户端使用Accept-Language首部和Accept-Charset首部请求可以理解的内容。

语言标记的类型

在RFC 3066, “Tags for the Identification of Languages”(标识语言的标记)中记录了语言标记的标准化语法。可以用语言标记来表示:

  • 一般的语言分类(比如es代表西班牙语);
  • 特定国家的语言(比如en-GB代表英国英语);
  • 语言的方言(比如no-bok指挪威的书面语);
  • 地区性的语言(比如sgn-US-MA代表美国马撒葡萄园岛上的手语);
  • 标准化的非变种语言(比如i-navajo);
  • 非标准的语言(比如x-snowboarder-slang)。

子标记

语言标记有一个或多个部分,用连字号分隔,称为子标记:

  • 第一个子标记称为 主子标记,其值是标准化的;
  • 第二个子标记是可选的,遵循它自己的命名标准;
  • 其他尾随的子标记都是未注册的。

主子标记中只能含有字母(A~Z)。其后的子标记可以含有字母和数字,长度最多8个字符。

大小写

所有的标记都是不区分大小写的,也就是说,标记en和eN是等价的。但是,习惯上用全小写来表示一般的语言,而用全大写来表示特定的国家。例如,fr表示所有分类为法语的语言,而FR表示国家法国。

ANA语言标记注册

第一个和第二个语言子标记的值由各种标准文档以及相关的维护组织定义。IANA依据RFC 3066中概括的规则来管理标准的语言标记列表。如果语言标记由标准的国家和语言值组成,标记就不需要专门注册。只有那些无法用标准的国家和语言值构成的语言标记才需要专门向IANA注册。

第一个子标记——名字空间

第一个子标记通常是标准化的语言记号,选自ISO 639中的语言标准集合。不过也可以用字母i来标识在IANA中注册的名字,或用x表示私有的或者扩展的名字。下面是各种规则。如果第一个子标记含有:

  • 2个字符,那就是来自ISO 639和639-1标准的语言代码;
  • 3个字符,那就是来自ISO 639-2标准及其扩展的语言代码;
  • 字母i,该语言标记是在IANA显式注册的;
  • 字母x,该语言标记是私有的、非标准的,或扩展的子标记。

其余子标记——名字空间

除了最长可以到8个字符(字母和数字)之外,第三个和其后的子标记没有特殊规则。

配置和语言有关的首选

项可以在浏览器的配置文件中配置和语言有关的首选项。网景公司的Navigator的设置方法是:编辑→首选项→语言,而微软公司的Internet Explorer浏览器的设置方法是:工具→Internet选项→语言。

总结

语言标记是命名口语的标准化字符串短语。

名字需要标准化,不然的话,有些人会把法语文档打上French标记,而有些其他人会用Français,还有些人可能会用France,更有些懒人可能会用Fra甚至是F。标准化语言标记就可以避免这些混乱。英语的标记是en,德语的标记是de,韩语的标记是ko,等等。语言标记能够描述语言的地区变种和方言,比如巴西葡萄牙语的标记是pt-BR、美式英语的标记是en-US,汉语中的湖南话的标记是zh-xiang。甚至还有个标准语言标记i-klingon是描述克林根语。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。