IANA 语言子标签注册表
lang属性的取值应该遵循 BCP 47 - Tags for Identifying Languages。
单一的 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
《回来》的音频,以国语演唱:audio lang=zh-cmn
《海阔天空》的音频,以粤语演唱:audio lang=yue
《进来白相相》的音频,以沪语演唱:audio lang=wuu
注意上述因为都是音频,所以不应加上 Hans/Hant 标记。
《最终信仰》的音频,双语演唱,因此audio不需要标记lang(如果一定需要标记可以用 lang=mul),但是每个段落的歌词可以分别用 p lang=en 和 p lang=zh-cmn 标记(根据简体或是繁体可用 zh-cmn-Hans 或 zh-cmn-Hant)。
《忐忑》的音频,没有歌词,因此不需要标记lang(如果一定需要标记可用 audio lang=zxx)。
需要加地区代码的情况一般比较少,除非为了强调不同地区汉语使用差异。比如:
<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>
当然,由于历史原因,有时候不得不继续使用zh-CN。比如中文维基百科,沿用了传统的zh-CN/zh-HK/zh-SG/zh-TW(按照标准应该使用 zh-cmn-Hans-CN、zh-cmn-Hant-HK、zh-cmn-Hans-SG、zh-cmn-Hant-TW)。这时候,合理的软件行为,是将 zh-CN 等转化为 zh-cmn-Hans(即转化为最常见的误用所对应的实际标准写法)。
实际上,各相关标准,也存在一定的滞后。例如CSS的:lang选择器,不支持选择仅仅简体/繁体中文(而不管是cmn或是yue或是min等汉语方言)。理想情况是CSS3对:lang选择器的语法进行升级,即BCP 47中的高级匹配算法,支持 :lang(*-Hans)这样的写法。
更新:Selectors Level 4 已经加入了对BCP 47高级匹配算法的支持,即支持 :lang(*-Hans) 的写法。
更多中文标记:
标识符 | 参考名称 | 状态 |
---|---|---|
zho | 中文 | Active |
cdo | 闽东语 | Active |
cjy | 晋语 | Active |
cmn | 普通话或國語 | Active |
cpx | 莆仙语 | Active |
czh | 徽语 | Active |
czo | 闽中语 | Active |
gan | 赣语 | Active |
hak | 客家话 | Active |
hsn | 湘语 | Active |
lzh | 文言文 | Active |
mnp | 闽北语 | Active |
nan | 闽南语 | Active |
wuu | 吴语 | Active |
yue | 粤语 | Active |
cnp | Northern Ping Chinese | Active |
csp | Southern Ping Chinese | Active |
规则如下:
language - extlang - script - region - variant - extension - privateuse
主语言 - 扩展语言(方言) - 书写文字 - 区域 - 变体 - 扩展 - 私有
中文子标签一览
language
zh
中国字或中国话
extlang
cdo
闽东语cjy
晋语cmn
普通话或國語cpx
莆仙语czh
徽语czo
闽中语gan
赣语hak
客家话hsn
湘语mnp
闽北语nan
闽南语wuu
吴语yue
粤语lzh
文言文
script
Hans
简体汉字Hant
繁体汉字
region
CN
CHINA 中国HK
HONG KONG 香港TW
Taiwan 台湾SG
Singapore 新加坡
文字例子
- 圆珠笔
zh-Hans-CN
- 原子筆
zh-Hant-TW
- 它是一个刮胡刀
zh-Hans-CN
- 佢系一个须刨嚟嘅
yue-Hans
- 佢係一個鬚刨嚟嘅
yue-Hant
- 驴不胜怒,蹄之
zh-lzh-Hans
- 驢不勝怒,蹄之
zh-lzh-Hant
- 驴发怒踢他了
zh-Hans-CN
语言标签解释
zh-Hans
简体中文(个人推荐)zh-Hans-CN
以简体中文书写的中国大陆用词zh-Hans-HK
以简体中文书写的香港地区用词zh-Hant
繁體中文zh-Hant-HK
以繁體中文書寫的香港地區用詞zh-Hant-TW
以繁體中文書寫的台灣地區用詞yue
粤语发音cmn
普通话或國語发音yue-Hans
以简体中文书写的粤语用词zh-yue-Hans
以简体中文书写的粤语用词(个人推荐)yue-Hant
以繁體中文書寫的粵語用詞cmn-Hans
以简体中文书写的普通话用词zh-cmn-Hans
以简体中文书写的普通话用词(个人推荐)cmn-Hans-CN
以简体中文书写的中国大陆普通话用词cmn-Hant-HK
以繁體中文書寫的香港地区普通話用詞cmn-Hant-TW
以繁體中文書寫的台湾地区國語用詞
其他栗子
<link rel="alternate" hreflang="ja" lang="ja" href="https://hoge.com/"><!--日本語-->
<link rel="alternate" hreflang="en" lang="en" href="https://hoge.com/en/"><!--英語-->
<link rel="alternate" hreflang="zh-cmn-Hans" lang="zh-cmn-Hans" href="https://hoge.com/zh-cn/"><!--中国語(簡体)-->
<link rel="alternate" hreflang="zh-cmn-Hant" lang="zh-cmn-Hant" href="https://hoge.com/zh-tw/"><!--中国語(繁体)-->
<link rel="alternate" hreflang="ko" lang="ko" href="https://hoge.com/ko/"><!--韓国語-->
<link rel="alternate" hreflang="fr" lang="fr" href="https://hoge.com/fr/"><!--フランス語-->
//言語ごとにfont-familyを指定するmixin
@mixin font_style {
[lang=ja] & {
color: darkred;
}
[lang=en] & {
color: darkcyan;
}
[lang=zh-cmn-Hans] & {
color: darkgreen;
}
[lang=zh-cmn-Hant] & {
color: darkorange;
}
[lang=ko] & {
color: darkviolet;
}
[lang=fr] & {
color: darkslategray;
}
}
font-familyやline-height 言语ごとのCSSo指定します。
参考链接 贺师俊 ISO 639-3 ISO 639 639 Identifier Documentation: zho 多言語サイトで使うlang属性、lang属性を使ったCSS指定 HTML lang 没你想的那么简单