先给出标题中问题的答案:zh-CN
=中文(中国),zh-Hans
=简体中文。
- 当要强调 在中国使用的 中文时,用
zh-CN
, 区别于zh-SG
=中文(新加坡) /zh-HK
=中文(香港)/zh-MO
=中文(澳门)/zh-TW
=中文(中国台湾)。 - 当只需要区别简繁体时,可以仅用
zh-Hans
与zh-Hant
表示。Hans 是汉语简体的含义:汉的拼音 Han + 简体(Simplified),Hant 中的 t 则是繁体(Traditional)的意思。 - 当然,需要更进一步区别时,也可以同时附加 书写格式+地区 表示:
zh-Hans-CN
=简体中文(中国),zh-Hans-SG
=简体中文(新加坡)。
这里我们已经引入了语言、书写格式、地区的区别。实际上,一种语言可以用 BCP 47 (RFC 5646) 规范中的 语言标签 来表示,通常语言标签形式是:language-extlang-script-region-variant-extension-privateuse,用这个格式甚至可以表示出「用拼音拼写的普通话(zh-cmn-Latn-pinyin
)」、「简体字书写的文言文(zh-lzh-Hans
)」、「在香港地区使用的繁体字书写的粤语(zh-yue-Hant-HK
)」等各种情况。下面我们来简要看下语言标签及各个 子标签 的含义。
语言标签的格式
language–extlang–script–region–variant–extension–privateuse
完整的 ABNF 定义(扩展巴斯科范式)摘抄如下:
Language-Tag = langtag ; 普通语言标记
/ privateuse ; 或 私有标记
/ grandfathered ; 或 兼容性标记 英文 grandfathered tags 「祖传的标记」
langtag = language ; 必须的语言标记
["-" script] ; 可选的书写格式
["-" region] ; 可选的区域
*("-" variant) ; 0个或多个变体
*("-" extension) ; 0个或多个扩展
["-" privateuse] ; 可选的私有标记
language = 2*3ALPHA ; 最短 ISO 639 代码(中文 zh/zho 应使用 zh)
["-" extlang] ; 有时后接扩展语言标记
/ 4ALPHA ; 或4个字母保留以后使用
/ 5*8ALPHA ; 或已注册的5-8个字母的语言子标签
;(如已过时的规范 RFC-4646 中的 xiang=湘语)
extlang = 3ALPHA ; 3 个字母的 ISO 639 代码
*2("-" 3ALPHA) ; 永久保留
script = 4ALPHA ; ISO 15924 中的代码
region = 2ALPHA ; ISO 3166-1 中的代码
/ 3DIGIT ; UN M.49 中的代码
variant = 5*8alphanum ; 5-8位 IANA 注册的变体
/ (DIGIT 3alphanum)
extension = singleton 1*("-" (2*8alphanum))
; 单个字符,"x" 保留为私有使用
singleton = DIGIT ; 0 - 9
/ %x41-57 ; A - W
/ %x59-5A ; Y - Z
/ %x61-77 ; a - w
/ %x79-7A ; y - z
privateuse = "x" 1*("-" (1*8alphanum))
grandfathered = irregular ; non-redundant tags registered
/ regular ; during the RFC 3066 era
irregular = "en-GB-oed" ; irregular tags do not match
/ "i-ami" ; the 'langtag' production and
/ "i-bnn" ; would not otherwise be
/ "i-default" ; considered 'well-formed'
/ "i-enochian" ; These tags are all valid,
/ "i-hak" ; but most are deprecated
/ "i-klingon" ; in favor of more modern
/ "i-lux" ; subtags or subtag
/ "i-mingo" ; combination
/ "i-navajo"
/ "i-pwn"
/ "i-tao"
/ "i-tay"
/ "i-tsu"
/ "sgn-BE-FR"
/ "sgn-BE-NL"
/ "sgn-CH-DE"
regular = "art-lojban" ; these tags match the 'langtag'
/ "cel-gaulish" ; production, but their subtags
/ "no-bok" ; are not extended language
/ "no-nyn" ; or variant subtags: their meaning
/ "zh-guoyu" ; is defined by their registration
/ "zh-hakka" ; and all of these are deprecated
/ "zh-min" ; in favor of a more modern
/ "zh-min-nan" ; subtag or sequence of subtags
/ "zh-xiang"
alphanum = (ALPHA / DIGIT) ; letters and numbers
每个子标签的取值枚举可以在 IANA 注册管理机构查询。
language: 主要语言
2 或 3 字母表示,通常约定用小写。示例:
zh
=汉语 Chineseen
=英语 Englishza
=状(族)语 Zhuangzgm
=状语南部方言民话 Minz Zhuanghak
=客家语 Hakka Chinesecmn
=普通话 Mandarin Chinese
我们发现,普通话其实也是汉语的一种,所以汉语又被称为 宏语言(macrolanguage),而用 扩展语言 来细分其中的不同语言。
2 个字母的一般和 ISO 639 二字码是相同的,三字码是额外在 IANA 中登记注册的。IANA 网站可以查到以下条目,表示中文是宏语言,普通话是中文的一种。
Type: language
Subtag: zh
Description: Chinese
Added: 2005-10-16
Scope: macrolanguage
Type: language
Subtag: cmn
Description: Mandarin Chinese
Added: 2009-07-29
Macrolanguage: zh
extlang: 扩展语言
3个小写字母表示。示例:
cmn
=普通话 Mandarin Chineseyue
=粤语 Cantonesehak
=客家话 Hakka Chinesezxx
=没有语言内容(如用在网页中 audio 标签引用《忐忑》,其中的 lang 属性可以不写,或可以标为 zxx)
Type: extlang
Subtag: cmn
Description: Mandarin Chinese
Added: 2009-07-29
Preferred-Value: cmn
Prefix: zh
Macrolanguage: zh
Type: language
Subtag: zxx
Description: No linguistic content
Description: Not applicable
Added: 2006-03-08
Scope: special
在可能的情况下不需要主要语言前缀,直接用扩展语言开头即可。如 cmn
就是 zh-cmn
的意思;如果需要主要语言开头,cmn 只能以 zh 为前缀,不存在 en-cmn 英语普通话(条目 cmn
中指明了 Prefix: zh
)。但为了兼容性,实际上个人还是倾向于加上主要语言前缀,毕竟 zh-cmn
至少还能匹配到 zh
, 而 cmn
是 2009 年才登记为语言子标签的。
script: 书写格式
4个字母且首字母大写表示。如
Hans
=简体汉字Hant
=繁体汉字Latn
=拉丁字母Cyrl
=西里尔字母Zxxx
=不是书面内容Zyyy
=不确定Zzzz
=未编码的
Type: script
Subtag: Hans
Description: Han (Simplified variant)
Added: 2005-10-16
Type: script
Subtag: Hant
Description: Han (Traditional variant)
Added: 2005-10-16
仅当有必要时才使用 script 子标签,如通常西班牙语就是用拉丁字母写,因此一般不需要指明 es-Latn
直接用 es
即可。
具体示例:zh-Hans
=简体中文,az-Latn
=阿塞拜疆语-拉丁字母书写的(而不是阿拉伯文书写的)
region: 区域
2个大写字母(ISO-3166区域代码)或3位数字(UN M.49区域代码)表示。示例
CN
=中国大陆HK
=中国香港TW
=中国台湾GB
=英国US
=美国001
=全世界005
=南美030
=东亚419
=拉丁美洲
Type: region
Subtag: CN
Description: China
Added: 2005-10-16
Type: region
Subtag: TW
Description: Taiwan, Province of China
Added: 2005-10-16
仅当有必要时才使用区域子标签,如:要强调 在意大利使用的 意大利语时才用 it-IT
,否则直接用 it
即可)
具体示例:es-005
=南美西班牙语,zh-Hant-HK
=香港使用的繁体中文。
variant: 方言/变体
用于指示语言、脚本、区域组合不能涵盖的方言或变体,在语言/书写格式/区域之后,但其之前可以没有书写格式/区域。示例:
pinyin
=拼音(前缀应为zh-Latn
=汉语-拉丁字母 ,bo-Lantn
=藏语-拉丁字母)jyutping
=粤拼(前缀应为yue
)
Type: variant
Subtag: pinyin
Description: Pinyin romanization
Added: 2008-10-14
Prefix: zh-Latn
Prefix: bo-Latn
Type: variant
Subtag: jyutping
Description: Jyutping Cantonese Romanization
Added: 2010-10-23
Prefix: yue
Comments: Jyutping romanization of Cantonese
Extension-privateuse:扩展名和专用子标签
这部分用得较少,笔者也没有深入理解。扩展名是单个字母并紧跟专用子标签。
扩展名 x
是保留为私人使用的,u
是 Unicode 联盟注册的扩展名。
如 de-DE-u-co-phonebk
=德语且使用电话薄的排序顺序(co=Collation)
一些用法
<p lang="zh-cmn-Hans">
<b lang="zh-cmn-Hans-CN">菠萝</b>
和<b lang="zh-cmn-Hant-TW">鳳梨</b>
其实是同一种水果。
只是大陆和台湾称谓不同,
且新马一带的称谓也是不同的,
称之为<b lang="zh-cmn-Hans-SG">黄梨</b>。
</p>
作者:贺师俊
链接:https://www.zhihu.com/question/20797118/answer/16809331
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
“你” “我们” 用 cmn-Hans 普通话 (简体)
“侬” “啊啦” 用 wuu-Hans 吴语 (简体)
“你” “我哋” 用 yue-Hans 粤语 (简体)
“消息” “黄梨” “自行车” 用 cmn-Hans-SG 普通话 (简体, 新加坡)
“消息” “菠萝” “自行车” 用 cmn-Hans-CN 普通话 (简体, 中国大陆)
“消息” “菠蘿” “自行車” 用 cmn-Hant-CN 普通话 (繁体, 中国大陆)
“訊息” “菠蘿” “單車” 用 cmn-Hant-HK 普通话 (繁体, 香港)
“訊息” “鳳梨” “腳踏車” 用 cmn-Hant-TW 普通话 (繁体, 台湾)
“analyse” “color” “elevator” 用 en-US 英语 (美国)
“analyze” “colour” “lift” 用 en-GB 英语 (英国)
作者:荒原守望者
链接:https://www.zhihu.com/question/20797118/answer/63480740
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
<p lang="zh-CN">骨</p>
<p lang="zh-HK">骨</p>
<p lang="zh-TW">骨</p>
网页默认使用的字体不一样,字型会有差异:第一行的「骨」字上方朝左、下方作两横,第二行上方朝右、下方作两横,第三行上方朝右、下方作「点挑」
<style>.upper { text-transform: uppercase; }</style>
<p class="upper" lang="en-US">shipping</p> 英文中 i 的大写 I 上没有点
<p class="upper" lang="tr">shipping</p> 这里土耳其文 i 的大写 I 上也会有点
<textarea lang="en-GB">center centre</textarea>拼写检查说第一个单词需要改正
<textarea lang="en-US">center centre</textarea>拼写检查建议改正第二个单词
作者:三日月 綾香
链接:https://www.zhihu.com/question/20797118/answer/1045722170
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
建议到引用的链接原文查看效果,原回答有截图
参考资料
- RFC 5646
- IANA 注册的标签列表
- Web 中语言标记的使用
- 中国民族语言
- 网页头部的声明应该是用 lang=”zh” 还是 lang=”zh-cn”?
- Language subtag lookup app
声明
- 本作品采用署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。除非特别注明, 霖博客文章均为原创。
- 转载请保留本文(《一文搞懂语言标签(zh-CN 与 zh-Hans 是什么关系)》)链接地址: https://youthlin.com/?p=1843
- 订阅本站:https://youthlin.com/feed/