HTML5中的lang属性,zh-CN还是zh-Hans?
⼀、资源
先提供资源。如果我弄错了什么,请以这些⽂档为准:
W3C⽂档、IANA已登记的⼦标签、BCP 47、RFC 5646。
⼆、格式简介
先上⼀张图⽚:
⼀个Language Tags,由①到⑦⼀共四个⼦标签组成。有什么盘算不清楚的,请参考资源部分提供的⽂档。
三、各部分含义
①language:主语⾔,⽤代码“zh”表⽰汉语,⼩写。好像对于⼤⼩写没有强制要求,习惯⽽已。还是遵循习惯吧,总让别⼈看着别扭不是彰显个性的好办法。
②extlang:翻译成“扩展的语⾔”?对于汉语⽽⾔,这个部分表⽰的是普通话和⽅⾔。⽐如“cmn”表⽰普通
话,“yue”表⽰粤语,“lzh”我也不知道表⽰什么。⼩写。
③script:书写格式,汉语不存在西⽅语⾔的拼写变化,只有“简体”和“繁体”之分。“Hans”表⽰简体,“Hant”表⽰繁体,⾸字母⼤写。
④region:地区,跟汉语有关的地区⼤概就是中国⼤陆(CN)、(TW)、中国⾹港(HK)、中国澳门(MO)、新加坡(SG)这五处。
⑤⑥⑦:你猜……
四、⽅⾔的困扰
我数了⼀下,除了“cmn”表⽰普通话之外,IANA还批准了⾄少13个⽅⾔⼦标签,罗列如下:
cdo、cjy、cpx、czh、czo、gan、hak、hsn、lzh、mnp、nan、wuu、yue
引起困惑的是,这些标签,既可以作为extlang⼦标签表⽰⽅⾔(扩展的语⾔?)也可以放在language位置作为主语⾔。那么这些标签和传统的“zh”标签是什么关系呢?IANA把“zh”定义为“macrolanguage”,搞不清楚怎么翻译,微语⾔?宏语⾔?还是语系?BCP 47的观点认为汉语包含若⼲语⾔,它似乎认为汉语的⽅⾔可以视为独⽴的语⾔。所以,“zh”依然可以作为主语⾔,然后在extlang的位置标⽰⽅⾔,即
<html lang="zh-cdo-Hans”>这样的格式。同时它也⽀持直接把⽅⾔作为主语⾔使⽤,即<html lang="cdo-Hans”>这样的格式。
弄清⽅⾔带来的困惑之后,我个⼈的建议是使⽤“zh”作为主语⾔。我不想进⾏政治讨论也不想研究深奥的学术问题,建议只使⽤“zh”做主语⾔⼦标签的唯⼀理由是避免混乱。现在为数不多(就算不多吧)的⽅⾔标签还是⼀种很幸福的状态。别忘了江湖上有着反击战中⽤⽅⾔当密语的传说,⽽哈尔滨西安成都恐怕⼜是不同的⽅⾔。谁知道IANA的⼤佬们未来会批准出多少个中国的语⾔来,都背下来?或者维护代码的时候,先查⼀下这是中国⽅⾔还是某个犄⾓旮旯的外语?
“zh”表⽰中⽂;“zh-xxx"还是表⽰中⽂,不过需要考虑⽅⾔特性。这样的表达不会带来任何误解。
五、越短越好
W3C的建议是:“The golden rule when creating language tags is to keep the tag as short as possible”。标签的某些部分确实没有必要。⽐如如果不涉及语⾳合成等应⽤,extlang部分存在的意义微乎其微,不管你是什么⽅⾔⼝⾳,写出来的是⼀样的⽂字。⽽region部分对于汉语⽽⾔似乎实意义也不⼤,有⼈知道新加坡⼈说普通话和⼤陆⼈有什么区别吗,我不太清楚。
所以,W3C的⽰例就成了最好的⽤法——“zh-Hans”——中⽂,简体。⾜矣。或者我个⼈觉得只⽤“zh”也可以,混⽤简繁可以有啊。
chrome浏览器是什么浏览器图标六、兼容
传统上,⼀般使⽤“zh-CN”,新的标准是不是被所有的浏览器⽀持,这个我真的没有精⼒去试⼀试,或者⽬前使⽤“zh-Hans-CN”更保险⼀些?
七、免责
不能保证内容的正确性。更可靠的⼿段是阅读标准⽂档。
写这篇⼩⽂,是因为刚刚帮朋友讲了⼀下相关的内容,就顺⼿写下来了。还能帮到别的⽹友的话,那是我的荣幸。
虽然提供了四个资源链接,其实这⼀次我并没有再次阅读。全是靠记忆写的,如果有什么错误的地⽅,还请谅解,也请您向我指出。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。