先给出标题中问题的答案: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 定义(扩展巴斯科范式)摘抄如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
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=汉语 Chinese
en=英语 English
za=壮(族)语 Zhuang
zgm=壮语南部方言民话 Minz Zhuang
hak=客家语 Hakka Chinese
cmn=普通话 Mandarin Chinese
我们发现,普通话其实也是汉语的一种,所以汉语又被称为 宏语言(macrolanguage),而用 扩展语言 来细分其中的不同语言。
2 个字母的一般和 ISO 639 二字码是相同的,三字码是额外在 IANA 中登记注册的。IANA 网站可以查到以下条目,表示中文是宏语言,普通话是中文的一种。
1
2
3
4
5
6
7
8
9
10
11
|
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 Chinese
yue=粤语 Cantonese
hak=客家话 Hakka Chinese
zxx=没有语言内容(如用在网页中 audio 标签引用《忐忑》,其中的 lang 属性可以不写,或可以标为 zxx)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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=未编码的
1
2
3
4
5
6
7
8
9
|
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=拉丁美洲
1
2
3
4
5
6
7
8
9
|
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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)
一些用法
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<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>
作者:贺师俊
链接:<a href="https://www.zhihu.com/question/20797118/answer/16809331" rel="nofollow">https://www.zhihu.com/question/20797118/answer/16809331</a>
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
“你” “我们” 用 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 英语 (英国)
作者:荒原守望者
链接:<a href="https://www.zhihu.com/question/20797118/answer/63480740" rel="nofollow">https://www.zhihu.com/question/20797118/answer/63480740</a>
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<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>拼写检查建议改正第二个单词
作者:三日月 綾香
链接:<a href="https://www.zhihu.com/question/20797118/answer/1045722170" rel="nofollow">https://www.zhihu.com/question/20797118/answer/1045722170</a>
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|
建议到引用的链接原文查看效果,原回答有截图
参考资料
Reader Echoes
1 comment