HTML5中的lang屬性,zh-CN還是zh-Hans?

来源:https://www.cnblogs.com/cndavidwang/archive/2019/11/04/11790153.html
-Advertisement-
Play Games

一、資源 先提供資源。如果我弄錯了什麼,請以這些文檔為準: W3C文檔、IANA已登記的子標簽、BCP 47、RFC 5646。 二、格式簡介 先上一張圖片: 一個Language Tags,由①到⑦一共四個子標簽組成。有什麼盤算不清楚的,請參考資源部分提供的文檔。 三、各部分含義 ①languag ...


一、資源

先提供資源。如果我弄錯了什麼,請以這些文檔為準:

W3C文檔IANA已登記的子標簽BCP 47RFC 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”更保險一些?

七、免責

不能保證內容的正確性。更可靠的手段是閱讀標準文檔。

寫這篇小文,是因為剛剛幫朋友講了一下相關的內容,就順手寫下來了。還能幫到別的網友的話,那是我的榮幸。

雖然提供了四個資源鏈接,其實這一次我並沒有再次閱讀。全是靠記憶寫的,如果有什麼錯誤的地方,還請諒解,也請您向我指出。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 認識 多表連接查詢 ,我感覺應該是關係型資料庫最能體現其價值和靈活性的地方吧. 我覺得資料庫的作用, 歸納起來無非就是 存儲和查詢 . 一言蔽之,資料庫就是能靈活地存儲和查詢數據. 存儲上, 也是以文件的方式存的(Linux觀點, 一切皆文件), 文件就是存儲數據的載體, 資料庫文件跟其他的數據文件 ...
  • 如果本地自己的電腦沒有安裝Oracle(伺服器端資料庫),那就要單獨安裝HA-Instant Client-v11.2.0.3.0.exe(oracle_client客戶端) 如果本地安裝了Oracle(伺服器端資料庫),就包含了HA-Instant Client-v11.2.0.3.0.exe,不 ...
  • 介紹數據倉庫的的定義及特征,數據倉庫常見的應用和數據倉庫系統的組成部分。 ...
  • 一、DDL、DML、DCL常用語句 1、DDL(Data Definition Language)資料庫定義語言 (1)資料庫模式定義 (2)表定義 2、DML(data manipulation language)資料庫操作語言 3、DCL(Data Control Language)資料庫控制語 ...
  • 一、SQL基本概念: SQL 已經成為關係資料庫的標準語言,是一種資料庫查詢和程式設計語言,用 於存取數據以及查詢、更新和管理關係資料庫系統。 功能不僅僅是查詢,還包括數據定義、數據操縱和數據控制等於資料庫有關的 一系列功能。 四大功能:數據查詢、數據定義、數據操縱和數據控制。 1)嵌入式和動態 S ...
  • @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().i... ...
  • @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.// getMenuInflater()... ...
  • 屬性介紹stretchColumns:列被拉伸shrinkColumns:列被收縮collapseColumns:列被隱藏舉例測試 ... ...
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...