语言简码ISO639,ISO3166,RFC 1766,RFC 4646, BCP 47
ISO 639
说到语种有几类标准;
首先说 ISO 639
系列;
ISO 639
是国际标准组织为各语言定制的语言代码;
这个标准用两个字母表示一个语种;
比如说 zh
表示中文、 en
表示英语;
zh
是 zhongwen 这个拼音的缩写;
en
则是 english 这个单词的缩写;
但是我们知道字母也就 26 个;
平方一下两个字母最多也就能表示 676 个语种;
面对世界上几千个语种明显是不够用的;
于是两个字母的 ISO 639
的标准作为 ISO 639-1
;
接着就又扩展一个三个字母的版本 ISO 639-2
;
根据上面的经验我们可以直接蒙对中英文的语种代码 zho
、 eng
;
这套标准对于大多数国家已经够用了;
然鹅制定这套标准的歪果仁明显是不了解中华文化的博大精深;
作为柴那人民我们知道中文可是分为简体中文和繁体中文的;
如果语种还有子类;
当我们需要具体到子类语种的时候;
这个标准明显是又不够我们用了;
我们就不再过多的去研究 ISO 639
的后续版本了;
ISO 639 代码列表
ISO 3166
上面的 ISO 639
规范的是语种代码;
但是我们知道英国和美国都是使用的英语;
如果我想具体表达某个国家地区呢?
ISO 3166
规范就是定义国家和地区代码的; CN 是 China 的简称;
TW 是 Taiwan, Province of China 的简称;
US 是 United States of America 的简称;
ISO 3166
标准还被广泛的应用于域名后缀;
中国的国家顶级域名就是 .cn ;
ISO 3166 代码列表
RFC 1766
有了 ISO 639
语种代码和 ISO 3166
国家地区代码;
我们组合起来就可以同时满足语种和国家的需求了;
RFC 1766
标准就是一个组合方案;
它把 ISO 639
和 ISO 3166
用 – 拼接来表示不同的国家和地区使用的语种;
比如说 zh-CN
表示中国大陆的中文;
那 zh-TW
则表示台湾地区使用的中文;
而 zh-HK
则表示香港地区使用的中文; 在 RFC 1766 标准下;
我们一般使用 zh-CN
表示简体中文;
而用 zh-TW
表示繁体中文;
RFC 1766 还被广泛的用于 HTML 的 lang
RFC4646
上面 RFC 1766
方案已经可以让我们具体到语种和地区了;
但是又有很多时候我们并不是很关系地区;
而是比较关心子语种;
比如说我们可能只需要细化到中文简体和中文繁体就行了;
而并不打算具体到是香港地区使用的繁体还是台湾地区使用的繁体;
虽然 RFC 1766
中人们一般用 zh-TW
表示繁体; 已经满足区分简体中文和繁体中文的需求;
但是面向香港客户给一个 zh-TW
而不是 zh-HK
总还是让人略有不爽;
这时候我们需要一个能用来代表繁体中文又没有歧义的代码;
这就是接下来要讲的 RFC4646
; 这里依然以中文为示例;
在 RFC4646
中代码第一部分同样是 ISO 639-1
的两位字母缩写 zh;
后面跟的是 Hans 和 Hant ;
Han 汉语的意思;
s 是 Simplified 简体;
t 是 Traditional 繁体;
zh-Hans 表示简体中文;
zh-Hant 表示繁体中文;
如果想具体到地区;
RFC4646
标准还可以再加第三部分 ISO 3166
国家代码;
比如说 zh-Hans-CN 表示大陆地区使用的简体中文;
比如说 zh-Hant-TW 表示台湾地区使用的繁体中文;
不过一般不用第三部分;
RFC4646 代码列表: https://www.iana.org/assignments/language-tags/language-tags.xhtml
BCP 47的语言简码:
https://www.techonthenet.com/js/language_tags.php
链接:https://www.jianshu.com/p/2ce4f7855cca
来源:简书