一,BCP 47算法规范有什么作用?
我认为最大的作用就是为互联网社区提供了一套识别语言的算法规范。
当你需要用到这套算法来解决某些需求的时候,可以直接使用这套算法规范,没必要再花费大量地时间去自己制作一套这样的算法规范。
当大家都认同这套算法规划以后,这套算法规范就成为了解决此类需求的最佳解决方案,最终实现统一标准,共同遵守。
二,为什么需要制定一套这样的BCP 47规范标准?
因为在现实生活中,人类使用着多种多样的语言,为了给这些语言指定一个计算机能识别的标识,或者说为了给这些语言指定一个唯一的标签,也为了解决人们在处理多语言问题上能使用适当的处理算法,所以需要制定一套这样的算法标准。
举个很简单的列子:
在HTML语言中,属性lang是一个全局属性,我们可以用lang属性来定义元素中使用的语言。
如:lang="en",lang="zh-cmn-Hans",这里面lang属性的值就是BCP 47算法规范的结果。
当我们用代码指定了网页使用的语言后,浏览器就可以根据BCP 47标准提供的标签匹配算法对lang的值进行匹配,从而达到精准识别语言的目的。
三,BCP 47的作者和发展历史。
BCP 47这套算法规范其实包含了两个RFC文档(全称Request for Comments - 征求意见),分别是RFC 4647(语言标签的匹配)和RFC 5646(识别语言的标签),这两个RFC文档都是作者Phillips和Davis共同编写的。
RFC 4647(语言标签的匹配)文档发表于2006年9月,本文档和RFC 4646文档一起替换了之前的RFC 3066文档和RFC 1766文档,成为目前最佳的实践方案。
RFC 5646(识别语言的标签)文档发表于2009年9月,替换了2006年9月发表的RFC 4646文档,成为目前最佳的实践方案。
四,BCP 47算法规范有哪些特点?
1>>语言标签的范围:语言标签用于帮助识别语言,包括口语,手语,书面语等方式,但不包括并非主要用于人类交流的语言,比如计算机编程语言。
2>>语法:语言标签由一个或多个“子标签”的序列组成,每个子标签都会细化或缩小整个标签所表示的语言范围。
所有子标签的最大长度为8个字符,语言标签中不允许使用空格,不区分大小写,不得带有任何语义。
如:标签mn-Cyrl-MN与MN-cYRL-mn或mN-cYrL-Mn(或任何其他组合)没有区别,并且这些变体均传达相同的含义:在蒙古使用的用西里尔字母写成的蒙古语。
3>>语言子标签的来源:语言标签及其子标签的命名空间由互联网号码分配局(IANA)根据本文档TODO的规则进行管理。