中文在 lang 标签的值, 到底是 zh 还是 zh-CN ?

2011-04-08 01:00:26 +08:00
 iugo
http://www.w3school.com.cn/tags/html_ref_language_codes.asp 看到中文的值, 无论是 Chinese (Simplified) 还是 Chinese (Traditional), 都是 zh .而在实际应用中, 我常常在 Google 的 URL 中看到 zh-CN 的字样, V2EX 中 lang 的值也是 zh-CN .

于是我 Google 到这样一篇文章: http://dev.csdn.net/htmls/60/60260.html
但是看完之后我还是不明白该用哪一个.

看到 http://www.w3school.com.cn/tags/html_ref_standardattributes.asphttp://www.google.com/ 中, 均没有 "lang=".

我想, CN 是区域, 而不是语言. 那是不是一些语言要指定区域呢? zh-CN, zh-HK? 美式和英式的语言也有差异, en-US, en-UK?

大家说说, 在网页语言标注中, 用"语言"好呢, 还是用"语言-区域"好?
8050 次点击
所在节点    问与答
12 条回复
keakon
2011-04-08 01:06:45 +08:00
zh-CN。其实写上它有个目的就是让Opera这种傻兮兮的浏览器不要用繁体字体来显示简体中文,这样会导致字体参差不齐。
lianghai
2011-04-08 01:32:54 +08:00
zh 是泛指的「中文」。
而 zh-CN、zh-TW、zh-Hans、zh-Hant……这些都是对 zh 的进一步细化。

具体用哪个要根据你的需求来,像中文维基百科这样的混有各种中文文本的网站就会采用 zh;而豆瓣这样针对中国大陆的网站就会用 zh-CN;而如果你有个网站关注的是简体字,而不关心到底用哪个地区的字形标准,就可以用 zh-Hans。你甚至还可以用 zh-Hans-CN 这样的明确声明。

英语确实也是有这种差异的,英式英语和美式英语分别是 en-GB(不是 en-UK)和 en-US。

遇到这种问题时,建议参考更权威一些的网站:
http://www.w3.org/International/articles/language-tags/
http://www.langtag.net/
lianghai
2011-04-08 01:48:59 +08:00
另外,就像 @keakon 说的一样,lang 会控制浏览器使用的字体。比如在最新的 Windows 里,如果没有明确写明字体,原则上来说 zh-CN 会默认用上微软雅黑或宋体(SimSun),而 zh-TW 就会用上微軟正黑或新細明體。
ilexswam
2011-04-08 01:54:31 +08:00
强调地域,使用 zh-cn(或 zh-hk,zh-tw)
强调字形(简体、繁体),使用 zh-Hans(或 zh-Hant)
强调读音,使用 zh-cmn(或 zh-yue)
如果不强调地域,但强调语言和字形,则 zh-cmn-Hans(中文-普通话-简体)
lianghai
2011-04-08 02:01:43 +08:00
@ilexswam 地区的那一段,一般都用全大写的吧:zh-CN、zh-HK、zh-TW……
其它的同意。
iugo
2011-04-08 19:22:59 +08:00
@ilexswam @lianghai @keakon 谢谢,学到了。
chuangbo
2011-04-08 20:57:01 +08:00
@lianghai 这几天学到很多 Web 字体渲染方面的知识,感谢。
如果能总结总结就好了⋯⋯等着 @jjgod 说的那篇文章呢
Sam
2011-04-08 22:20:38 +08:00
请教一下,lang可以写在body上吗?
lianghai
2011-04-08 22:40:44 +08:00
@Sam 似乎可以写在任何元素里,只是一般都只在 <html> 和 <p>、<span> 那些比较小的元素里见到:
http://www.w3.org/International/tutorials/language-decl/#Slide0090
lianghai
2011-04-08 22:43:26 +08:00
@chuangbo 总结的事情还是交给 @jjgod 了……他对浏览器和字体的了解实在很深。
darasion
2011-04-09 22:48:51 +08:00
如果是任何语言都可能会出现,那么这个应该怎样做???
lianghai
2011-04-10 00:07:23 +08:00
@darasion 标注主要语言就好了。在 <meta> 里可以写明多个语言标签,比如:
<meta http-equiv="Content-Language" content="en,fr,es" />

另外,lang 这个属性在页面的任何地方都可以用,不是仅限于 <html> 或者 <meta> 这样的地方,所以很容易给一个局部标注和整体不一样的语言。可以看一看上面给出的几个链接。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/11135

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX