學習筆記----html的lang屬性
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,表示簡體中文書寫的普通話/國語。一般而言沒有必要加地區代碼,除非要表示地區特異性,一般是詞匯不一樣(比如維基百科的大陸簡體和新馬簡體)。
如何標記的例子:
1. 簡體中文頁面:html lang=zh-cmn-Hans
2. 繁體中文頁面:html lang=zh-cmn-Hant
3. 英語頁面:html lang=en
4. 《回來》的音頻,以國語演唱:audio lang=zh-cmn
5. 《海闊天空》的音頻,以粵語演唱:audio lang=yue
6. 《進來白相相》的音頻,以滬語演唱:audio lang=wuu
註意上述因為都是音頻,所以不應加上 Hans/Hant 標記。
7. 《最終信仰》的音頻,雙語演唱,因此audio不需要標記lang(如果一定需要標記可以用 lang=mul),但是每個段落的歌詞可以分別用 p lang=en 和 p lang=zh-cmn 標記(根據簡體或是繁體可用 zh-cmn-Hans 或 zh-cmn-Hant)。
8. 《忐忑》的音頻,沒有歌詞,因此不需要標記lang(如果一定需要標記可用 audio lang=zxx)。
需要加地區代碼的情況一般比較少,除非為了強調不同地區漢語使用差異。比如:
-
1
<
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) 的寫法。
學習筆記----html的lang屬性