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 MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...