一、资源

先提供资源。如果我弄错了什么,请以这些文档为准:

W3C文档IANA已登记的子标签BCP 47RFC 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?的更多相关文章

  1. 小强的HTML5移动开发之路(13)——HTML5中的全局属性

    来自:http://blog.csdn.net/dawanganban/article/details/18179483 一.accssskey  快捷键 <!DOCTYPE HTML> ...

  2. HTML5 中的新属性autocomplete="off"失效的解决方法(兼容firefox,IE,360)

    因为业务需求,在写一个注册页面的时候,发现浏览器会自动填充此域名下已经保存的账号密码,给用户带来不便.加了HTML5 中的新属性autocomplete="off" ,但是并没有产 ...

  3. html5中的全局属性

    在html5中,新增了一个"全局属性"的概念,所谓全局属性,是指可以对任何属性都使用的属性.下面列出常用的全局属性. 1.contentEditable属性,是微软开发的,该属性主 ...

  4. 测试开发之前端——No3.HTML5中的标准属性

    HTML5的标准属性 属性 值 描述 accesskey character 规定访问元素的键盘快捷键 class classname 规定元素的类名(用于规定样式表中的类). contentedit ...

  5. HTML5中class选择器属性的解释

    设置有class属性值的元素,可以被css中的选择器调用,也可以在javascript中以getElementsByClassName()方法调用. 可以给各个元素添加class而且名称可以相同与id ...

  6. 测试开发之前端——No4.HTML5中的事件属性

    HTML5的事件属性. 属性 值 描述 onafterprint script 在打印文档之后运行脚本 onbeforeprint script 在文档打印之前运行脚本 onbeforeonload ...

  7. HTML 全局属性 = HTML5 中添加的属性。

    属性 描述 accesskey 规定激活元素的快捷键. class 规定元素的一个或多个类名(引用样式表中的类). contenteditable 规定元素内容是否可编辑. contextmenu 规 ...

  8. 辛星浅析html5中的role属性

    我们使用role属性告诉辅助设备.这个元素所扮演的角色.比方点击的按钮,我们通常就使用role="button",会让这个元素可点击. 可是它很多其它的是用来增强语义性,当现有的h ...

  9. html5 中video标签属性

      <video id="haoroomsvideo" src="haorooms.mp4" poster="images/haorooms.j ...

随机推荐

  1. Spring事务经典案例-银行转账

    1.entity实体类 2.dao层 3.dao实现类 4.service层 5.serviceimpl层 6.大配置.xml <?xml version="1.0" enc ...

  2. ERA-Interim数据学习

    1.气象再分析数据有很多种,看文献里用到的主要有这几种 ECWRF——ERA-Interim,分辨率0.125°,欧洲的 MERRA-2,分辨率0.625°*0.5°,NASA的 GEOS-5FP,分 ...

  3. 迁移学习、fine-tune和局部参数恢复

    参考:迁移学习——Fine-tune 一.迁移学习 就是把已训练好的模型参数迁移到新的模型来帮助新模型训练. 模型的训练与预测: 深度学习的模型可以划分为 训练 和 预测 两个阶段. 训练 分为两种策 ...

  4. docker安装 与 基本配置

    1.安装docker #yum remove docker \ docker-common \ container-selinux \ docker-selinux \ docker-engine \ ...

  5. 冰多多团队-第五次Scrum会议

    冰多多团队-第五次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 zpj 部分Action整合, 接入语音接口,整合项目解决兼容性问题 ASR bug修复 牛雅哲 跑通了科大讯飞语法识别的 ...

  6. Mongodb聚合 时间分组(转载)

    // Requires official MongoShell 3.6+ use MediaNetDB; db.getCollection("TestCollection").ag ...

  7. pg数据库中时间查询的方式

    方法一:select * from user_info where create_date>= '2015-07-01' and create_date < '2015-08-15'; 方 ...

  8. R3300L运行CoreELEC, EmuELEC和Armbian

    R3300L的参数 CPU: S905LRAM: Samsung K4B4G1646E-BCMA 512MB * 2 = 1GBROM: Samsung KLM8G1WEPD-B031 8GB eMM ...

  9. MySQL语句和命令大全

    前言 这里记录的是这两年学习工作过程中遇到的常用的 MySQL 语句和命令,部分是网上收集来的,出处已经不记得了,这里先谢过这些大佬.本文包括常见 SQL 语句,还有部分运维语句和命令,没有做详细的说 ...

  10. LeetCode 100. Same Tree (判断树是否完全相同)

    100. Same Tree Given two binary trees, write a function to check if they are the same or not. Two bi ...