i18n 国际化的语言代码标准 - Altair's Blog
文章推薦指數: 80 %
ISO 3166. 中文可以分为简体中文和繁体中文,ISO 639 明显不够用了。
于是出现了用国家或地区的代码来 ...
秦灭六国统一中国,推行“书同文,车同轨”,标准化了文字。
然而,在做多语言开发的时候,常常会看到这样的字眼:zhcnzh-CNzh-hans。
同样是中文,却搞出这么多种表示方法。
非常的不讲道理,也没有一丝人性。
如果做过多语言需求,你肯定想过到底用哪种才显得比较专业?
ISO639互联网世界是用各种各样的标准和协议作为粘合剂组成的。
Javascript脚本之所以能运行在不同的浏览器,是因为各大浏览器都遵循ECMA标准。
全球互联网之所以能成为现实,是因为所有计算机底层都遵循OSI模型,其中使用到的各种协议你肯定耳熟能详,如著名八股文TCP协议。
语言代码也不例外,ISO639就是为各语言所制定语言代码标准,它定义了zh代表中文。
这种定义方法叫做Alpha-2Code,顾名思义,两个字母表示的代码,它可以表示世界上主要的语言。
比如:中文的拼音是zhongwen,那代码就是zh。
美国的英文是english,那代码就是en。
然而,世界上的语言有数千种,Alpha-2表示法只能表示26x26=676种,是远远不够的,因此产生了Alpha-3Code,顾名思义,三个字母表示的代码,可以表示17576种语言。
它的一般表示方法你可能已经猜到了,就是取前3个字母:zho、eng。
ISO3166中文可以分为简体中文和繁体中文,ISO639明显不够用了。
于是出现了用国家或地区的代码来表示语言的方法,使用的标准是ISO3166。
该标准包括了针对国家、地区、和具有特殊科学价值的地点,以及其子行政区名称的国际标准代码。
cn就来自这个标准,除此之外,hk表示香港,us表示美国。
这样就可以用cn来表示简体中文偏好,hk表示繁体中文偏好,以各国家和地区的使用习惯来分。
IETF语言标签美国和英国使用的都是英文,怎么样才能既表示国家地区又表示偏好语言呢?
把ISO639的Alpha-2和ISO3166用-结合起来,IETF语言标签的最早版本RFC1766应运而生。
zh-CN表示中国大陆的中文,zh-HK表示香港地区的中文。
en-US表示美国的英文,en-GB表示英国的英文。
RFC4646是RFC1766的升级版,它规范了主体,使用zh-Hans表示简体中文,zh-Hant表示繁体中文。
如果想精确到地区,则可以zh-Hant-HK表示香港地区的繁体中文,zh-Hant-TW表示台湾地区的繁体中文。
总结不同需求用不同的标准。
如果只要求中英文版本的话,zh+en足够。
如果要求支持英繁简,则可以en+zh-Hans+zh-Hant,也可以en+zh-CN+zh-HK。
只要满足需求,在系统内部统一。
就行。
延伸文章資訊
- 1語言支援- 內容仲裁API - Azure Cognitive Services - Microsoft ...
- 2ios - 如何将ISO 639语言代码转换为英文全名?
4年前关闭。 我正在寻找将ISO 639代码转换为完整英文名称的任何方法。 ... 请注意,有时中文有两个值,繁体和简体。
- 3簡介i18n
... 與可選的區域編碼(Country code)來指定,其中語言編碼是 ISO-639 定義,由兩個小寫字母代表,例如"ca"表示嘉泰羅尼亞文(Catalan),"zh"表示中文(Chine...
- 4管理- 语言和代码页支持 - IBM
系统提供对以下语言的语言支持和两字符语言代码(如ISO 639 标准中所述): ... 表意文字语言:: 对于简体中文和繁体中文,会使用扩展语言代码而不是两字符代码。
- 5語言支援- 內容仲裁API - GitHub