背景知識
現代軟體開發,往往做出的應用程式不止給一個國家的人去使用。不同國家的人往往存在語言文字不通的問題。由此産生了國際化(internationalization)、多語言(multi-language)、本地化(locale)這些詞,它們其實都是一個意思,支援多種語言,提供給不同國家的使用者使用。
語言編碼、國家/地區編碼
做web 開發的朋友可能多多少少接觸過類似 zh-cn, en-us 這樣的編碼字樣。
這些編碼是用來表示指定的國家地區的語言類型的。那麼,這些含有特殊含義的編碼是如何産生的呢?
ISO-639标準使用編碼定義了國際上常見的語言,每一種語言由兩個小寫字母表示。
ISO-3166标準使用編碼定義了國家/地區,每個國家/地區由兩個大寫字母表示。
為什麼要用語言+國家/地區來标示語言呢?
道理很簡單:拿咱們中國來說,同樣是中文,全國各地的方言就多如牛毛,更不要說世界上有那麼多種語言,得有多少方言?
下表列舉了一些常見國家、地區的語言編碼:
國家/地區 | 語言編碼 | 國家/地區 | 語言編碼 |
---|---|---|---|
簡體中文(中國) | zh-cn | 繁體中文(台灣地區) | zh-tw |
繁體中文(香港) | zh-hk | 英語(香港) | en-hk |
英語(美國) | en-us | 英語(英國) | en-gb |
英語(全球) | en-ww | 英語(加拿大) | en-ca |
英語(澳洲) | en-au | 英語(愛爾蘭) | en-ie |
英語(芬蘭) | en-fi | 芬蘭語(芬蘭) | fi-fi |
英語(丹麥) | en-dk | 丹麥語(丹麥) | da-dk |
英語(以色列) | en-il | 希伯來語(以色列) | he-il |
英語(南非) | en-za | 英語(印度) | en-in |
英語(挪威) | en-no | 英語(新加坡) | en-sg |
英語(紐西蘭) | en-nz | 英語(印度尼西亞) | en-id |
英語(菲律賓) | en-ph | 英語(泰國) | en-th |
英語(馬來西亞) | en-my | 英語(阿拉伯) | en-xa |
韓文(南韓) | ko-kr | 日語(日本) | ja-jp |
荷蘭語(荷蘭) | nl-nl | 荷蘭語(比利時) | nl-be |
葡萄牙語(葡萄牙) | pt-pt | 葡萄牙語(巴西) | pt-br |
法語(法國) | fr-fr | 法語(盧森堡) | fr-lu |
法語(瑞士) | fr-ch | 法語(比利時) | fr-be |
法語(加拿大) | fr-ca | 西班牙語(拉丁美洲) | es-la |
西班牙語(西班牙) | es-es | 西班牙語(阿根廷) | es-ar |
西班牙語(美國) | es-us | 西班牙語(墨西哥) | es-mx |
西班牙語(哥倫比亞) | es-co | 西班牙語(波多黎各) | es-pr |
德語(德國) | de-de | 德語(奧地利) | de-at |
德語(瑞士) | de-ch | 俄語(俄羅斯) | ru-ru |
意大利語(意大利) | it-it | 希臘語(希臘) | el-gr |
挪威語(挪威) | no-no | 匈牙利語(匈牙利) | hu-hu |
土耳其語(土耳其) | tr-tr | 捷克語(捷克共和國) | cs-cz |
斯洛文尼亞語 | sl-sl | 波蘭語(波蘭) | pl-pl |
瑞典語(瑞典) | sv-se |
注:由表中可以看出*語言、國家/**地區* *編碼一般都是英文單詞的縮寫。*
字元編碼
在此處,引申一下字元編碼的概念。
是不是有了語言、國家/****地區編碼,計算機就可以識别各種語言了?
答案是否。作為程式員,相信每個人都會遇到過這樣的情況:,期望列印中文,結果輸出的卻是亂碼。
這種情況,往往是因為字元編碼的問題。
計算機在設計之初,并沒有考慮多個國家,多種不同語言的應用場景。當時定義一種ASCII碼,将字母、數字和其他符号編号用7****比特的二進制數來表示。後來,計算機在世界開始普及,為了适應多種文字,出現了多種編碼格式,例如中文漢字一般使用的編碼格式為GB2312、GBK。
由此,又産生了一個問題,不同字元編碼之間互相無法識别。于是,為了一統江湖,出現了 unicode編碼。它為每種語言的每個字元設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平台的文本轉換需求。
有人不禁要問,既然 Unicode 可以支援所有語言的字元,那還要其他字元編碼做什麼?
Unicode 有一個缺點:為了支援所有語言的字元,是以它需要用更多位數去表示,比如ASCII表示一個英文字元隻需要一個位元組,而 Unicode 則需要兩個位元組。很明顯,如果字元數多,這樣的效率會很低。
為了解決這個問題,有出現了一些中間格式的字元編碼:如UTF-8、UTF-16、UTF-32等。中國程式員一般使用UTF-8編碼。
各種系統設定的語言代碼
af 南非荷蘭語 | sq 阿爾巴尼亞語 |
---|---|
ar-sa 阿拉伯語(沙特阿拉伯) | ar-iq 阿拉伯語(伊拉克) |
ar-eg 阿拉伯語(埃及) | ar-ly 阿拉伯語(利比亞) |
ar-dz 阿拉伯語(阿爾及利亞) | ar-ma 阿拉伯語(摩洛哥) |
ar-tn 阿拉伯語(突尼西亞) | ar-om 阿拉伯語(阿曼) |
ar-ye 阿拉伯語(葉門) | ar-sy 阿拉伯語(叙利亞) |
ar-jo 阿拉伯語(約旦) | ar-lb 阿拉伯語(黎巴嫩) |
ar-kw 阿拉伯語(科威特) | ar-ae 阿拉伯語(阿拉伯聯合酋長國) |
ar-bh 阿拉伯語(巴林) | ar-qa 阿拉伯語(卡達) |
eu 巴斯克語 | bg 保加利亞語 |
be 貝勞語 | ca 加泰羅尼亞語 |
zh-tw 中文(中國台灣) | zh-cn 中文(中華人民共和國) |
zh-hk 中文(中國香港特别行政區) | zh-sg 中文(新加坡) |
hr 克羅地亞語 | cs 捷克語 |
da 丹麥語 | nl 荷蘭語(标準) |
nl-be 荷蘭語(比利時) | en 英語 |
en-us 英語(美國) | en-gb 英語(英國) |
en-au 英語(澳洲) | en-ca 英語(加拿大) |
en-nz 英語(紐西蘭) | en-ie 英語(愛爾蘭) |
en-za 英語(南非) | en-jm 英語(牙買加) |
en 英語(加勒比) | en-bz 英語(貝裡斯) |
en-tt 英語(特立尼達) | et 愛沙尼亞語 |
fo 法羅語 | fa 波斯語 |
fi 芬蘭語 | fr 法語(标準) |
fr-be 法語(比利時) | fr-ca 法語(加拿大) |
fr-ch 法語(瑞士) | fr-lu 法語(盧森堡) |
gd 蓋爾語(蘇格蘭) | gd-ie 蓋爾語(愛爾蘭) |
de 德語(标準) | de-ch 德語(瑞士) |
de-at 德語(奧地利) | de-lu 德語(盧森堡) |
de-li 德語(列支敦士登) | el 希臘語 |
he 希伯來語 | hi 北印度語 |
hu 匈牙利語 | is 冰島語 |
in 印度尼西亞語 | it 意大利語(标準) |
it-ch 意大利語(瑞士) | ja 日語 |
ko 北韓語 | ko 北韓語(南韓) |
lv 拉脫維亞語 | lt 立陶宛語 |
mk FYRO 馬其頓語 | ms 馬來西亞語 |
mt 馬耳他語 | no 挪威語(博克馬爾) |
no 挪威語(尼諾斯克) | pl 波蘭語 |
pt-br 葡萄牙語(巴西) | pt 葡萄牙語(葡萄牙) |
rm 拉丁語系 | ro 羅馬尼亞語 |
ro-mo 羅馬尼亞語(摩爾達維亞) | ru 俄語 |
ru-mo 俄語(摩爾達維亞) | sz 薩摩斯語(拉普蘭) |
sr 塞爾維亞語(西裡爾) | sr 塞爾維亞語(拉丁) |
sk 斯洛伐克語 | sl 斯洛文尼亞語 |
sb 索布語 | es 西班牙語(西班牙傳統) |
es-mx 西班牙語(墨西哥) | es 西班牙語(西班牙現代) |
es-gt 西班牙語(瓜地馬拉) | es-cr 西班牙語(哥斯達黎加) |
es-pa 西班牙語(巴拿馬) | es-do 西班牙語(多米尼加共和國) |
es-ve 西班牙語(委内瑞拉) | es-co 西班牙語(哥倫比亞) |
es-pe 西班牙語(秘魯) | es-ar 西班牙語(阿根廷) |
es-ec 西班牙語(厄瓜多) | es-cl 西班牙語(智利) |
es-uy 西班牙語(烏拉圭) | es-py 西班牙語(巴拉圭) |
es-bo 西班牙語(玻利維亞) | es-sv 西班牙語(薩爾瓦多) |
es-hn 西班牙語(洪都拉斯) | es-ni 西班牙語(尼加拉瓜) |
es-pr 西班牙語(波多黎各) | sx 蘇圖語 |
sv 瑞典語 | sv-fi 瑞典語(芬蘭) |
th 泰語 | ts 東加語 |
tn 瓦納語 | tr 土耳其語 |
uk 烏克蘭語 | ur 烏爾都語 |
ve 文達語 | vi 越南語 |
xh 科薩語 | ji 依地語 |
zu 祖魯語 |
Display Text (English) | Display Text (Localized) | SWITCH Locale | DataKey | Primary URL Pattern |
---|---|---|---|---|
Arabic | Arabic | Arabic | Arabic (AR) [Remove "Middle East and Africa"] | ar_EG |
Chinese - Taiwan | 中文 - 台彎 | Chinese | Chinese (ZH) Simplified | zh_CN |
Chinese - China | 中文 - 中國 | Chinese (Taiwan) | Chinese (ZH) Traditional | zh_TW |
Czech | Český | Czech | Czech (CS) | cs_CZ |
Danish | Dansk | Danish | Danish (DA) | da_DK |
Dutch | Nederlands | Dutch | Dutch (NL) | nl_NL |
English - United States | English - United States | English | English (EN) United States | en_US |
English - United Kingdom | English - United Kingdom | English (United Kingdom) | English (EN) United Kingdom | en_GB |
Finnish | Suomi | Finnish | Finnish (FI) | fi_FI |
French - France | Français - France | French | French (FR) France | fr_FR |
French - Canada | Français - Canada | French (Canada) | French (FR) Canada | fr_CA |
French - Switzerland | Français - Suisse | French (Switzerland) | French (FR) Switzerland | fr_CH |
German - Austria | Deutsch - Österreich | German (Austria) | German (DE) Austrian | de_AT |
German - Germany | Deutsch - Deutschland | German | German (DE) Germany | de_DE |
German - Switzerland | Deutsch - Schweiz | German (Switzerland) | German (DE) Switzerland | de_CH |
Greek | Greek | Greek | Greek (EL) | el_GR |
Hungarian | Magyar | Hungarian | Hungarian (HU) | hu_HU |
Italian | Italiano | Italian | Italian (IT) | it_IT |
Japanese | 日本語 | Japanese (Japan) | Japanese (JA) | ja_JP |
Korean | Korean | Korean | Korean (KO) | ko_KR |
Norwegian | Norsk | Norwegian | Norwegian (NB) | nb_NO |
Polish | Polski | Polish | Polish (PL) | pl_PL |
Portuguese - Portugal | Português - Portugal | Portuguese | Portuguese (PT) Portugal | pt_PT |
Portuguese - Brazil | Português - Brasil | Protuguese (Brazil) | Portuguese (PT) Brazil | pt_BR |
Romanian | Romanian | Romanian | Romanian (RO) | ro_RO |
Russian | Russian | Russian | Russian (RU) | ru_RU |
Spanish | Español | Spanish (Spain) | Spanish (ES) | es_ES |
Swedish | Svenska | Swedish | Swedish (SV) -- Sverige | sv_SE |
Thai | Thai | Thai | Thai (TH) | th_TH |
Turkish | Türkçe | Turkish | Turkish (TR) | tr_TR |
Vietnamese | Vietnamese | Vietnamese | Vietnamese (VN) |
國家代号與區号
Countries and Regions | 國家或地區 | 國際域名縮寫 | 電話代碼 | 時差 |
---|---|---|---|---|
Angola | 安哥拉 | AO | 244 | -7 |
Afghanistan | 阿富汗 | AF | 93 | |
Albania | 阿爾巴尼亞 | AL | 355 | -7 |
Algeria | 阿爾及利亞 | DZ | 213 | -8 |
Andorra | 安道爾共和國 | AD | 376 | -8 |
Anguilla | 安圭拉島 | AI | 1264 | -12 |
Antigua and Barbuda | 安提瓜和巴布達 | AG | 1268 | -12 |
Argentina | 阿根廷 | AR | 54 | -11 |
Armenia | 亞美尼亞 | AM | 374 | -6 |
Ascension | 阿森松 | 247 | -8 | |
Australia | 澳洲 | AU | 61 | +2 |
Austria | 奧地利 | AT | 43 | -7 |
Azerbaijan | 阿塞拜疆 | AZ | 994 | -5 |
Bahamas | 巴哈馬 | BS | 1242 | -13 |
Bahrain | 巴林 | BH | 973 | -5 |
Bangladesh | 孟加拉國 | BD | 880 | -2 |
Barbados | 巴貝多 | BB | 1246 | -12 |
Belarus | 白俄羅斯 | BY | 375 | -6 |
Belgium | 比利時 | BE | 32 | -7 |
Belize | 貝裡斯 | BZ | 501 | -14 |
Benin | 貝甯 | BJ | 229 | -7 |
Bermuda Is. | 百慕大群島 | BM | 1441 | -12 |
Bolivia | 玻利維亞 | BO | 591 | -12 |
Botswana | 波紮那 | BW | 267 | -6 |
Brazil | 巴西 | BR | 55 | -11 |
Brunei | 文萊 | BN | 673 | |
Bulgaria | 保加利亞 | BG | 359 | -6 |
Burkina-faso | 布基納法索 | BF | 226 | -8 |
Burma | 緬甸 | MM | 95 | -1.3 |
Burundi | 布隆迪 | BI | 257 | -6 |
Cameroon | 喀麥隆 | CM | 237 | -7 |
Canada | 加拿大 | CA | 1 | -13 |
Cayman Is. | 開曼群島 | 1345 | -13 | |
Central African Republic | 中非共和國 | CF | 236 | -7 |
Chad | 查德 | TD | 235 | -7 |
Chile | 智利 | CL | 56 | -13 |
China | 中國 | CN | 86 | |
Colombia | 哥倫比亞 | CO | 57 | |
Congo | 剛果 | CG | 242 | -7 |
Cook Is. | 庫克群島 | CK | 682 | -18.3 |
Costa Rica | 哥斯達黎加 | CR | 506 | -14 |
Cuba | 古巴 | CU | 53 | -13 |
Cyprus | 塞普勒斯 | CY | 357 | -6 |
Czech Republic | 捷克 | CZ | 420 | -7 |
Denmark | 丹麥 | DK | 45 | -7 |
Djibouti | 吉布地 | DJ | 253 | -5 |
Dominica Rep. | 多米尼加共和國 | DO | 1890 | -13 |
Ecuador | 厄瓜多 | EC | 593 | -13 |
Egypt | 埃及 | EG | 20 | -6 |
EI Salvador | 薩爾瓦多 | SV | 503 | -14 |
Estonia | 愛沙尼亞 | EE | 372 | -5 |
Ethiopia | 埃塞俄比亞 | ET | 251 | -5 |
Fiji | 斐濟 | FJ | 679 | +4 |
Finland | 芬蘭 | FI | 358 | -6 |
France | 法國 | FR | 33 | -8 |
French Guiana | 法屬蓋亞那 | GF | 594 | -12 |
Gabon | 加蓬 | GA | 241 | -7 |
Gambia | 甘比亞 | GM | 220 | -8 |
Georgia | 格魯吉亞 | GE | 995 | |
Germany | 德國 | DE | 49 | -7 |
Ghana | 加納 | GH | 233 | -8 |
Gibraltar | 直布羅陀 | GI | 350 | -8 |
Greece | 希臘 | GR | 30 | -6 |
Grenada | 格瑞那達 | GD | 1809 | -14 |
Guam | 關島 | GU | 1671 | +2 |
Guatemala | 瓜地馬拉 | GT | 502 | -14 |
Guinea | 幾内亞 | GN | 224 | -8 |
Guyana | 蓋亞那 | GY | 592 | -11 |
Haiti | 海地 | HT | 509 | -13 |
Honduras | 洪都拉斯 | HN | 504 | -14 |
Hongkong | 香港 | HK | 852 | |
Hungary | 匈牙利 | HU | 36 | -7 |
Iceland | 冰島 | IS | 354 | -9 |
India | 印度 | IN | 91 | -2.3 |
Indonesia | 印度尼西亞 | ID | 62 | -0.3 |
Iran | 伊朗 | IR | 98 | -4.3 |
Iraq | 伊拉克 | IQ | 964 | -5 |
Ireland | 愛爾蘭 | IE | 353 | -4.3 |
Israel | 以色列 | IL | 972 | -6 |
Italy | 意大利 | IT | 39 | -7 |
Ivory Coast | 科特迪瓦 | 225 | -6 | |
Jamaica | 牙買加 | JM | 1876 | -12 |
Japan | 日本 | JP | 81 | +1 |
Jordan | 約旦 | JO | 962 | -6 |
Kampuchea (Cambodia ) | 高棉 | KH | 855 | -1 |
Kazakstan | 哈薩克斯坦 | KZ | 327 | -5 |
Kenya | 肯亞 | KE | 254 | -5 |
Korea | 南韓 | KR | 82 | +1 |
Kuwait | 科威特 | KW | 965 | -5 |
Kyrgyzstan | 吉爾吉斯坦 | KG | 331 | -5 |
Laos | 寮國 | LA | 856 | -1 |
Latvia | 拉脫維亞 | LV | 371 | -5 |
Lebanon | 黎巴嫩 | LB | 961 | -6 |
Lesotho | 賴索托 | LS | 266 | -6 |
Liberia | 賴比瑞亞 | LR | 231 | -8 |
Libya | 利比亞 | LY | 218 | -6 |
Liechtenstein | 列支敦士登 | LI | 423 | -7 |
Lithuania | 立陶宛 | LT | 370 |