跳至內容

IETF語言標籤

維基百科,自由的百科全書

語言標籤語言代碼的縮寫表示,例如en表示英語,pt-BR表示巴西葡萄牙語。由互聯網工程任務組(IETF)的「BCP英語Best Current Practice 47」文檔系列定義。現在標準化為RFC 5646(引用了相關的RFC 5645)與RFC 4647,IANA語言子標籤登記[1][2][3][4]使用的各成分來自ISO 639ISO 15924ISO 3166-1以及UN M.49

這種語言標籤用於許多現代的計算標準,包括IETF的互聯網協議如HTTP[5][6]XML[7]以及PNG[8]SGMLUnicodeANSI以及ECMA。Microsoft的Windows作業系統使用它代替過時的LCID,來表示locale

歷史

[編輯]

IETF語言標籤的最早版本是1995年3月發佈的RFC 1766。使用ISO 639的2字母語言代碼,ISO 3166的2字母國家地區代碼,允許登記的標籤攜帶variant或書寫文字子標籤。

2001年1月發佈RFC 3066, 使用ISO 639-2的3字母語言代碼。

2006年9月發佈RFC 4646 (規範的主體)與RFC 4647 (處理匹配行為)。RFC 4646增加了使用ISO 15924 的4字母書寫文字代碼與UN M.49的3數字地理分區碼。

2009年9月發佈RFC 5646,引入了3字符碼的ISO 639-3與639-5作為語言子標籤。[9]

語言標籤的語法

[編輯]

語言標籤由一個或多個子標籤(subtags)組成,用連字號(-)分隔。子標籤只能由基本拉丁字母或數字組成。子標籤出現順序:

  • 一個主語言子標籤(primary language subtag),ISO 639-1 (2002)的2字母語言代碼,ISO 639-2 (1998)或ISO 639-3 (2007)或ISO 639-5 (2008)的3字母語言代碼, BCP 47登記的5到8個字母的語言代碼。應保持同樣的大小寫。
  • 最多3個可選的extended language subtags,每個由3字母組成。實際上還沒有使用。
  • 1個可選的文字子標籤(script subtag),ISO 15924的4字母書寫文字代碼,通常是title case。
  • 1個可選的地區子標籤(region subtag),ISO 3166-1 alpha-2的2字母地區代碼(通常大寫),或UN M.49的3數字地理區代碼。
  • 可選的variant subtags,每個為5至8個字母,或者4字母後跟1個數字。由IANA登記。
  • 可選的extension subtags,每個為單字符(不允許「x」)開始(這稱為singleton),後跟連字符與2至8個字符組成的文本。[10],[11]
  • 1個可選的private-use subtag, 每個為x-後跟1至8個字符組成文本。

例外情況是x-前綴開頭的私用語言標籤,向後兼容的grandfathered語言標籤(包括i-前綴與以前登記的老的語言標籤)。

上述未指明的子標籤應該小寫。實際上整個語言標籤是大小寫無關的。

可選的script與region子標籤如果沒有提供可辨識信息,則將被忽略。例如拉丁字母拼寫的西班牙語es-Latn,日本的日語ja-JP

並不是所有語言區域都有有效的區域子標籤:主語言的國內方言區被登記為variant子標籤。例如,valencia variant子標籤用於加泰羅尼亞語華倫西亞語方言。由於該方言幾乎只用於西班牙國內,區域子標籤ES通常忽略。

宏語言(macrolanguage)中的語言代碼或者直接用語言子標籤表示,如普通話cmn;或者用語言-擴展子標籤的組合,如zh-cmn

手語用擴展子標籤,前綴為sgn

與其他國際標準的關係

[編輯]

雖然源自ISOUN的標準,但並不是嚴格遵循。特別是ISO 639, ISO 15924, ISO 3166, UN M.49等標準撤回某些編碼,甚至改變某些編碼所指的時候,RFC 4646規定語言標籤仍然保持最初含義不變。

ISO 639-3 與 ISO 639-1

[編輯]

RFC 4646之前登記的語言標籤現在分為"grandfathered"或"redundant",視其是否滿足目前的語法而定。並且是過時的。現在採用ISO 639-3語言子標籤。例如,nan取代了zh-min-nan表示閩南語hak取代了i-hakzh-hakka表示客家話ase取代了sgn-US表示美國手語

ISO 639-5 與 ISO 639-2

[編輯]

ISO 639-5使用3字母表示一個語言群中所有的語言。而ISO 639-2使用3字母表示一個語言群中沒有獨立語言標籤的那些語言。例如,ISO 639-2代碼afa表示"Afro-Asiatic (Other)",不包含阿拉伯語。而ISO 639-5中的這個代碼表示"Afro-Asiatic languages",包含亞非語系所有語言。這一變化發生在2009年。[12]

ISO 639-5為了向後兼容ISO 639-2,對於這些老的代碼,定義了grouping type attribute。

BCP 47定義了"Scope"屬性用於語言集子標籤的辨別。但是沒有定義任何inclusive或exclusive屬性,也沒有使用ISO 639-5的grouping type attribute。

ISO 639-5沒有定義哪些語言屬於某個語言集。因此RFC 5646不建議使用語言集,除非是那些非特定的語言集,如"Multiple languages"與 "Undetermined"。

ISO 15924, ISO/IEC 10646 與 Unicode

[編輯]

某些主語言子標籤攜帶了屬性"Suppress-Script",通常某個書寫系統適用於該語言。因此會忽略script子標籤。例如,yi取代了yi-Hebr ,因為意地緒語總是使用希伯來字母書寫。

另一個例子,zh-Hans-SG可被認為等價於zh-Hans,因為新加坡簡體中文與其他簡體中文幾乎一樣。但是,這裏的script子標籤顯然是有意義的。

ISO 3166-1 與 UN M.49

[編輯]

當語言的地區方言有專門的子標籤,這比使用地區子標籤更優。例如,ar-DZ應該被arq代替來表示阿爾及利亞阿拉伯語

擴展

[編輯]

Extension子標籤(不要與extended語言子標籤混淆)允許附加額外的信息,如locale,calendar,currency。

至2014年1月已經分配了兩種擴展。

Extension T

[編輯]

2012年2月,Unicode Consortium在RFC 6497發佈了Extension T用於語言標籤包含信息關於音譯(transliterated),轉寫(transcribed),變換(transformed)。例如,en-t-jp用於從日語翻譯到英語。

Extension U (Unicode Locale)

[編輯]

2010年12月,統一碼聯盟在RFC 6067發佈了Extension U,允許在通用當地數據儲存庫中嵌入了寬屬性,表示很多區域設置數據集。

例如:

Windows作業系統的使用

[編輯]

Windows Vista及以後版本,採用RFC 4646作為locale標籤,字符串最大長度85,包含了結尾的零字符。

只有語言子標籤,稱為中立locale(neutral locale)。加上地區子標籤,稱為specific locale。格式為<language>-<Script>-<REGION>,例如"uz-Latn-UZ"表示烏茲別克斯坦的使用拉丁字母的烏茲別克語。

排序規則應寫為<language>-<Script>-<REGION>_<sort order>

參見

[編輯]

參考文獻

[編輯]
  1. ^ 存档副本. [2017-11-21]. (原始內容存檔於2013-06-20). 
  2. ^ Language subtag lookup app:. r12a.github.io. [28 July 2015]. (原始內容存檔於2015-07-31). 
  3. ^ 存档副本. [2017-11-21]. (原始內容存檔於2013-06-26). 
  4. ^ IANA — Protocol Registries. iana.org. [28 July 2015]. (原始內容存檔於2017-11-10). 
  5. ^ RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. ietf.org. [28 July 2015]. (原始內容存檔於2017-05-25). 
  6. ^ Language information and text direction. w3.org. [28 July 2015]. (原始內容存檔於2008-09-04). 
  7. ^ Extensible Markup Language (XML) 1.0 (Fifth Edition). w3.org. [28 July 2015]. (原始內容存檔於2009-04-01). 
  8. ^ Portable Network Graphics (PNG) Specification (Second Edition). w3.org. [28 July 2015]. (原始內容存檔於2018-06-18). 
  9. ^ Language Tag Registry Update charter. [2017-11-21]. (原始內容存檔於2007-02-10). 
  10. ^ Addison Phillips, Mark Davis. Tags for Identifying Languages (old draft for the revision of RFC 4646, now obsolete and may disappear soon). IETF WG LTRU. 2008 [2008-06-23]. (原始內容存檔於2019-10-17). 
  11. ^ Doug Ewell. Update to the Language Subtag Registry (old draft for the revision of RFC 4645, now obsolete and may disappear soon) (1MB). IETF WG LTRU. 2008 [2008-06-23]. (原始內容存檔於2019-10-17). 
  12. ^ ISO 639-2 Language Code List - Codes for the representation of names of languages (Library of Congress). loc.gov. [28 July 2015]. (原始內容存檔於2018-09-17). 

外部連結

[編輯]