1. 程式人生 > >學習筆記----html的lang屬性

學習筆記----html的lang屬性

雙語 ide cin frame ola class 行為 audio fyi

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屬性