一、資源 先提供資源。如果我弄錯了什麼,請以這些文檔為準: W3C文檔、IANA已登記的子標簽、BCP 47、RFC 5646。 二、格式簡介 先上一張圖片: 一個Language Tags,由①到⑦一共四個子標簽組成。有什麼盤算不清楚的,請參考資源部分提供的文檔。 三、各部分含義 ①languag ...
一、資源
先提供資源。如果我弄錯了什麼,請以這些文檔為準:
W3C文檔、IANA已登記的子標簽、BCP 47、RFC 5646。
二、格式簡介
先上一張圖片:
一個Language Tags,由①到⑦一共四個子標簽組成。有什麼盤算不清楚的,請參考資源部分提供的文檔。
三、各部分含義
①language:主語言,用代碼“zh”表示漢語,小寫。好像對於大小寫沒有強制要求,習慣而已。還是遵循習慣吧,總讓別人看著彆扭不是彰顯個性的好辦法。
②extlang:翻譯成“擴展的語言”?對於漢語而言,這個部分表示的是普通話和方言。比如“cmn”表示普通話,“yue”表示粵語,“lzh”我也不知道表示什麼。小寫。
③script:書寫格式,漢語不存在西方語言的拼寫變化,只有“簡體”和“繁體”之分。“Hans”表示簡體,“Hant”表示繁體,首字母大寫。
④region:地區,跟漢語有關的地區大概就是中國大陸(CN)、中國臺灣(TW)、中國香港(HK)、中國澳門(MO)、新加坡(SG)這五處。
⑤⑥⑦:你猜……
四、方言的困擾
我數了一下,除了“cmn”表示普通話之外,IANA還批准了至少13個方言子標簽,羅列如下:
cdo、cjy、cpx、czh、czo、gan、hak、hsn、lzh、mnp、nan、wuu、yue
引起困惑的是,這些標簽,既可以作為extlang子標簽表示方言(擴展的語言?)也可以放在language位置作為主語言。那麼這些標簽和傳統的“zh”標簽是什麼關係呢?IANA把“zh”定義為“macrolanguage”,搞不清楚怎麼翻譯,微語言?巨集語言?還是語系?BCP 47的觀點認為漢語包含若幹語言,它似乎認為漢語的方言可以視為獨立的語言。所以,“zh”依然可以作為主語言,然後在extlang的位置標示方言,即<html lang="zh-cdo-Hans”>這樣的格式。同時它也支持直接把方言作為主語言使用,即<html lang="cdo-Hans”>這樣的格式。
弄清方言帶來的困惑之後,我個人的建議是使用“zh”作為主語言。我不想進行政治討論也不想研究深奧的學術問題,建議只使用“zh”做主語言子標簽的唯一理由是避免混亂。現在為數不多(就算不多吧)的方言標簽還是一種很幸福的狀態。別忘了江湖上有著反擊戰中用方言當密語的傳說,而哈爾濱西安成都恐怕又是不同的方言。誰知道IANA的大佬們未來會批准出多少個中國的語言來,都背下來?或者維護代碼的時候,先查一下這是中國方言還是某個犄角旮旯的外語?
“zh”表示中文;“zh-xxx"還是表示中文,不過需要考慮方言特性。這樣的表達不會帶來任何誤解。
五、越短越好
W3C的建議是:“The golden rule when creating language tags is to keep the tag as short as possible”。標簽的某些部分確實沒有必要。比如如果不涉及語音合成等應用,extlang部分存在的意義微乎其微,不管你是什麼方言口音,寫出來的是一樣的文字。而region部分對於漢語而言似乎實意義也不大,有人知道新加坡人說普通話和大陸人有什麼區別嗎,我不太清楚。
所以,W3C的示例就成了最好的用法——“zh-Hans”——中文,簡體。足矣。或者我個人覺得只用“zh”也可以,混用簡繁可以有啊。
六、相容
傳統上,一般使用“zh-CN”,新的標準是不是被所有的瀏覽器支持,這個我真的沒有精力去試一試,或者目前使用“zh-Hans-CN”更保險一些?
七、免責
不能保證內容的正確性。更可靠的手段是閱讀標準文檔。
寫這篇小文,是因為剛剛幫朋友講了一下相關的內容,就順手寫下來了。還能幫到別的網友的話,那是我的榮幸。
雖然提供了四個資源鏈接,其實這一次我並沒有再次閱讀。全是靠記憶寫的,如果有什麼錯誤的地方,還請諒解,也請您向我指出。