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”也可以,混用简繁可以有啊。
六、兼容
传统上,一般使用“zh-CN”,新的标准是不是被所有的浏览器支持,这个我真的没有精力去试一试,或者目前使用“zh-Hans-CN”更保险一些?
七、免责
不能保证内容的正确性。更可靠的手段是阅读标准文档。
写这篇小文,是因为刚刚帮朋友讲了一下相关的内容,就顺手写下来了。还能帮到别的网友的话,那是我的荣幸。
虽然提供了四个资源链接,其实这一次我并没有再次阅读。全是靠记忆写的,如果有什么错误的地方,还请谅解,也请您向我指出。
HTML5中的lang属性,zh-CN还是zh-Hans?的更多相关文章
- 小强的HTML5移动开发之路(13)——HTML5中的全局属性
来自:http://blog.csdn.net/dawanganban/article/details/18179483 一.accssskey 快捷键 <!DOCTYPE HTML> ...
- HTML5 中的新属性autocomplete="off"失效的解决方法(兼容firefox,IE,360)
因为业务需求,在写一个注册页面的时候,发现浏览器会自动填充此域名下已经保存的账号密码,给用户带来不便.加了HTML5 中的新属性autocomplete="off" ,但是并没有产 ...
- html5中的全局属性
在html5中,新增了一个"全局属性"的概念,所谓全局属性,是指可以对任何属性都使用的属性.下面列出常用的全局属性. 1.contentEditable属性,是微软开发的,该属性主 ...
- 测试开发之前端——No3.HTML5中的标准属性
HTML5的标准属性 属性 值 描述 accesskey character 规定访问元素的键盘快捷键 class classname 规定元素的类名(用于规定样式表中的类). contentedit ...
- HTML5中class选择器属性的解释
设置有class属性值的元素,可以被css中的选择器调用,也可以在javascript中以getElementsByClassName()方法调用. 可以给各个元素添加class而且名称可以相同与id ...
- 测试开发之前端——No4.HTML5中的事件属性
HTML5的事件属性. 属性 值 描述 onafterprint script 在打印文档之后运行脚本 onbeforeprint script 在文档打印之前运行脚本 onbeforeonload ...
- HTML 全局属性 = HTML5 中添加的属性。
属性 描述 accesskey 规定激活元素的快捷键. class 规定元素的一个或多个类名(引用样式表中的类). contenteditable 规定元素内容是否可编辑. contextmenu 规 ...
- 辛星浅析html5中的role属性
我们使用role属性告诉辅助设备.这个元素所扮演的角色.比方点击的按钮,我们通常就使用role="button",会让这个元素可点击. 可是它很多其它的是用来增强语义性,当现有的h ...
- html5 中video标签属性
<video id="haoroomsvideo" src="haorooms.mp4" poster="images/haorooms.j ...
随机推荐
- linux 排查cpu负载过高异常
步骤一.找到最耗CPU的进程 工具:top 方法: 执行top -c ,显示进程运行信息列表 键入P (大写p),进程按照CPU使用率排序 图示: 如上图,最耗CPU的进程PID为10765 步骤二: ...
- MP实战系列(十九)之批量新增
批量操作在实际开发中也应用非常多,例如批量下发优惠券.批量添加用户等. 以MyBatis为例,通常实现批量操作,有这么几种方式? 第一,单条插入sql语句,进行for循环遍历,基准条件是根据前端传过的 ...
- mybatis在sql中的CDATA区
示例 <if test="startTime != null"> <![CDATA[ AND rra.create_time >= #{startTime} ...
- tig
/******************************************************************************* * tig * 说明: * tig便于 ...
- Python数据分析学习(一)
转摘:https://segmentfault.com/a/1190000015440560 一.数据初探 首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seabor ...
- 使用 Microsoft.Web.Administration 管理iis
How to Automate IIS 7 Configuration with .NET How to Automate IIS 7 Configuration with .NET Are you ...
- osg geometry清空vertex
_vertices->clear(); _vertices->dirty(); _drawArrays->set(sog::PrimitiveSet::POINTS,0,0); _g ...
- fatal error: sys/videoio.h: No such file or directory
Determining if the include file sys/videoio.h exists failed with the following output:Change Dir: /h ...
- springboot放到linux启动报错:The temporary upload location [/tmp/tomcat.8524616412347407692.8111/work/Tomcat/localhost/ROOT/asset] is not valid
1.背景 笔者的springboot在一个非root用户环境下运行,这种环境下可以保证不被潜在的jar/开源框架漏洞提权. 比如在防火墙上把外网访问来的443端口映射到本地8443的java web端 ...
- bootCDN引用的bootstrap前端框架套件和示例
这是bootCDN上引用的bootstrap前端框架套件,由多个框架组合而成,方便平时学习和测试使用.生产环境要仔细琢磨一下,不要用开发版,而要用生产版.bootCDN的地址是:https://www ...