i18n 国际化的语言代码标准 - Altair's Blog

文章推薦指數: 80 %
投票人數:10人

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。

只要满足需求,在系统内部统一。

就行。



請為這篇文章評分?