网页头部的声明怎么写?


作者:戴翔
电子邮箱:daixiangcn@outlook.com
简介:中华人民共和国公民,中国共青团员,CSDN博客专家,秦淮区疾控中心托管社会公益组织指南针工作室志愿者,创业公司研发中心负责人,在校大学生。


问题引入

笔者在今天修改网页模板时发现了lang属性,大多是模板都是歪果仁写的,所以,一般大家在网页模板里都会见到 lang=“en” 这样的写法,因为他们的语言是英文,所以这样写无可厚非。

但是我们在修改的时候应该改成什么样子的呢?是 lang=“zh” 还是 lang=“zh-CN” 还是 lang=“zh-cn”

说实话,笔者之前一直没有注意这个,所以在写下本文之前也一直出于懵逼状态。

于是,笔者查找了一些资料,整理成此文。

![这里写图片描述](https://img-blog.csdn.net/20180817170756248?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1YW54aWFuZzAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
图1.网页开发截图

解决方法

HTML 的 lang 属性可用于网页或部分网页的语言。这对搜索引擎和浏览器是有帮助的。

根据 W3C 推荐标准,我们应该通过 标签中的 lang 属性对每张页面中的主要语言进行声明,比如:

<html lang="en">
...
</html>

lang属性的取值应该遵循 《BCP 47 - Tags for Identifying Languages》
对于是否可以使用lang=“zh”[4.1.2. Using Extended Language Subtags] 中说明如下:

![这里写图片描述](https://img-blog.csdn.net/20180817181321424?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1YW54aWFuZzAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
图2.《BCP 47 - Tags for Identifying Languages》摘要
即:

随着本文件的采用,特定的ISO 639-3子标签可用于识别这些不同语言系列或分组中包含的语言。这提供了以前不存在的语言标签选择:

  • 每个包含语言的子标签应该用作主要语言子标签。例如,普通话中的文档将被标记为“cmn”(普通话的子标签),而不是“zh”(中文)。
  • 如果需要或需要兼容性,则包含的子标签可以用作扩展语言子标签。例如,一份文件在普通话中可以标记为“zh-cmn”而不是“cmn”或“zh”。

也就是说,单一的 zh 和 zh-CN 均属于废弃用法。

问题主要在于,zh 现在不是语言code了,而是macrolang,能作为语言code的是cmn(国语)、yue(粤语)、wuu(吴语)等。

通常建议写成 zh-cmn 而不是光写 cmn,主要是考虑兼容性(至少可匹配 zh),有不少软件和框架还没有据此更新。

zh-CN 的问题还在于,其实多数情况下标记的是简体中文,但是不恰当的使用了地区,这导致同样用简体中文的 zh-SG(新加坡)等无法匹配。更典型的是 zh-TW 和 zh-HK。

所以其实应该使用 zh-Hans / zh-Hant 来表示简体和繁体。那么完整的写法就是 zh-cmn-Hans,表示简体中文书写的普通话/国语。一般而言没有必要加地区代码,除非要表示地区特异性,一般是词汇不一样(比如维基百科的大陆简体和新马简体)。


如何标记的例子:

  • 简体中文页面:html lang=zh-cmn-Hans
  • 繁体中文页面:html lang=zh-cmn-Hant
  • 英语页面:html lang=en

参考文档


作者:戴翔
电子邮箱:daixiangcn@outlook.com


daixiangcn CSDN认证博客专家 后端开发工程师 产品体验官
中国公民,中共预备党员,CSDN博客专家,本科大四在读。江苏省第四届“互联网+”大学生创新创业大赛二等奖获得者,第二届、第三届微信小程序应用开发大赛全国三等奖、华东赛区二等奖项目作者,微信小程序《约车吗》、《庆云慈善会》、《锋云速检》项目工程师。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页