1,如何確定語言環境。
2,如何保存與 locale 相關的字符串或其它信息。
3,如何根據 locale 提取字符串和其它相應的信息。
https://astaxie.gitbooks.io/build-web-application-with-golang/content/zh/10.0.html
地區設定:https://zh.wikipedia.org/wiki/%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE
Unicode 字元平面對映:
https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84
http://www.unicode.org/
讀出一個 character, utf-8 to unicode convert 後的一個 character (not word), 兩個byte 它的值:
# 0000-007F:C0控制符及基本拉丁文 (C0 Control and Basic Latin)
就表示它是拉丁文 character
而英文只用到 128 也就是 7F 所以 0000-007F 的字就必然落在英文的範圍. 但不代表它不會是拉丁語系的 word 中的一個 character
兩個byte 它的值:
# 0080-00FF:C1控制符及拉丁文補充-1 (C1 Control and Latin 1 Supplement)
這就表示這個字是包括了法德葡西意等拉丁字, 但一定不是英文字. 這個word 不可能會是英文字了.
character = 拉丁語中的字符, 如英文的 A,B,C,D... 到 Z
word = 一個字, 例如 apple 為一個字.
如果要開發一個多語系的網站時,其中一種方法可以使用瀏覽器所設定的語系來判斷使用者的網頁語系。
當瀏覽網頁時,瀏覽器會發送給 web 伺服器 HTTP Headers Information ,在表頭資訊裡,包含了這樣一個信息 Accept-Language,這是用來設置瀏覽器可接受的語言選項,可以設置一個以上的語系,再依優先順序使用。
以 PHP 來說,可使用 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 來取得,取得類似 “zh-cn” 這樣子的結果;如果是多語系設定,則類似 “zh-cn,en;q=0.8,ko;q=0.5,zh-tw;q=0.3″ 這樣子的情況。
$lang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if($lang[0]=='zh-tw')
{ //如果瀏覽器使用繁體中文,則為true。
header("Location: ch/index.php"); //轉址到中文網頁。
else
header("Location: en/index.php"); //轉址到英文網頁。
}
用 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 來取得瀏覽器的訊息,此時若瀏覽器設為多語系,$lang 會是陣列,並且以逗號(,)做為陣列值的切割。
explode()
語法 : array explode (string separator, string string [, int limit])
說明 :
傳回一個字串的陣列,以參數 separator 為界線將參數 string 切開,如果有設定參數 limit,則傳回的陣列最多將會包含 limit 個元素,而最後一個元素將會包含 string 全部剩餘的部份。
http://php.net/manual/en/function.explode.php
檢測字串的編碼:
http://us2.php.net/manual/en/function.mb-detect-encoding.php
google 『字串 語系判斷』:
https://www.google.com.tw/search?espv=2&q=%E5%AD%97%E4%B8%B2+%E8%AA%9E%E7%B3%BB%E5%88%A4%E6%96%B7
語系代碼:
https://zh.wikipedia.org/wiki/%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE
http://blog.roodo.com/jessica_bird/archives/10029085.html
http://www.htmldrive.net/items/demo/1312/-jQuery-Useful-freeze-header-row-in-table-plugin
| Culture Name | Display Name | Culture Code | ISO 639x |
| af-ZA | Afrikaans - South Africa | 0x0436 | AFK |
| sq-AL | Albanian - Albania | 0x041C | SQI |
| ar-DZ | Arabic - Algeria | 0x1401 | ARG |
| ar-BH | Arabic - Bahrain | 0x3C01 | ARH |
| ar-EG | Arabic - Egypt | 0x0C01 | ARE |
| ar-IQ | Arabic - Iraq | 0x0801 | ARI |
| ar-JO | Arabic - Jordan | 0x2C01 | ARJ |
| ar-KW | Arabic - Kuwait | 0x3401 | ARK |
| ar-LB | Arabic - Lebanon | 0x3001 | ARB |
| ar-LY | Arabic - Libya | 0x1001 | ARL |
| ar-MA | Arabic - Morocco | 0x1801 | ARM |
| ar-OM | Arabic - Oman | 0x2001 | ARO |
| ar-QA | Arabic - Qatar | 0x4001 | ARQ |
| ar-SA | Arabic - Saudi Arabia | 0x0401 | ARA |
| ar-SY | Arabic - Syria | 0x2801 | ARS |
| ar-TN | Arabic - Tunisia | 0x1C01 | ART |
| ar-AE | Arabic - United Arab Emirates | 0x3801 | ARU |
| ar-YE | Arabic - Yemen | 0x2401 | ARY |
| hy-AM | Armenian - Armenia | 0x042B | |
| Cy-az-AZ | Azeri (Cyrillic) - Azerbaijan | 0x082C | |
| Lt-az-AZ | Azeri (Latin) - Azerbaijan | 0x042C | |
| eu-ES | Basque - Basque | 0x042D | EUQ |
| be-BY | Belarusian - Belarus | 0x0423 | BEL |
| bg-BG | Bulgarian - Bulgaria | 0x0402 | BGR |
| ca-ES | Catalan - Catalan | 0x0403 | CAT |
| zh-CN | Chinese - China | 0x0804 | CHS |
| zh-HK | Chinese - Hong Kong SAR | 0x0C04 | ZHH |
| zh-MO | Chinese - Macau SAR | 0x1404 | |
| zh-SG | Chinese - Singapore | 0x1004 | ZHI |
| zh-TW | Chinese - Taiwan | 0x0404 | CHT |
| zh-CHS | Chinese (Simplified) | 0x0004 | |
| zh-CHT | Chinese (Traditional) | 0x7C04 | |
| hr-HR | Croatian - Croatia | 0x041A | HRV |
| cs-CZ | Czech - Czech Republic | 0x0405 | CSY |
| da-DK | Danish - Denmark | 0x0406 | DAN |
| div-MV | Dhivehi - Maldives | 0x0465 | |
| nl-BE | Dutch - Belgium | 0x0813 | NLB |
| nl-NL | Dutch - The Netherlands | 0x0413 | |
| en-AU | English - Australia | 0x0C09 | ENA |
| en-BZ | English - Belize | 0x2809 | ENL |
| en-CA | English - Canada | 0x1009 | ENC |
| en-CB | English - Caribbean | 0x2409 | |
| en-IE | English - Ireland | 0x1809 | ENI |
| en-JM | English - Jamaica | 0x2009 | ENJ |
| en-NZ | English - New Zealand | 0x1409 | ENZ |
| en-PH | English - Philippines | 0x3409 | |
| en-ZA | English - South Africa | 0x1C09 | ENS |
| en-TT | English - Trinidad and Tobago | 0x2C09 | ENT |
| en-GB | English - United Kingdom | 0x0809 | ENG |
| en-US | English - United States | 0x0409 | ENU |
| en-ZW | English - Zimbabwe | 0x3009 | |
| et-EE | Estonian - Estonia | 0x0425 | ETI |
| fo-FO | Faroese - Faroe Islands | 0x0438 | FOS |
| fa-IR | Farsi - Iran | 0x0429 | FAR |
| fi-FI | Finnish - Finland | 0x040B | FIN |
| fr-BE | French - Belgium | 0x080C | FRB |
| fr-CA | French - Canada | 0x0C0C | FRC |
| fr-FR | French - France | 0x040C | |
| fr-LU | French - Luxembourg | 0x140C | FRL |
| fr-MC | French - Monaco | 0x180C | |
| fr-CH | French - Switzerland | 0x100C | FRS |
| gl-ES | Galician - Galician | 0x0456 | |
| ka-GE | Georgian - Georgia | 0x0437 | |
| de-AT | German - Austria | 0x0C07 | DEA |
| de-DE | German - Germany | 0x0407 | |
| de-LI | German - Liechtenstein | 0x1407 | DEC |
| de-LU | German - Luxembourg | 0x1007 | DEL |
| de-CH | German - Switzerland | 0x0807 | DES |
| el-GR | Greek - Greece | 0x0408 | ELL |
| gu-IN | Gujarati - India | 0x0447 | |
| he-IL | Hebrew - Israel | 0x040D | HEB |
| hi-IN | Hindi - India | 0x0439 | HIN |
| hu-HU | Hungarian - Hungary | 0x040E | HUN |
| is-IS | Icelandic - Iceland | 0x040F | ISL |
| id-ID | Indonesian - Indonesia | 0x0421 | |
| it-IT | Italian - Italy | 0x0410 | |
| it-CH | Italian - Switzerland | 0x0810 | ITS |
| ja-JP | Japanese - Japan | 0x0411 | JPN |
| kn-IN | Kannada - India | 0x044B | |
| kk-KZ | Kazakh - Kazakhstan | 0x043F | |
| kok-IN | Konkani - India | 0x0457 | |
| ko-KR | Korean - Korea | 0x0412 | KOR |
| ky-KZ | Kyrgyz - Kazakhstan | 0x0440 | |
| lv-LV | Latvian - Latvia | 0x0426 | LVI |
| lt-LT | Lithuanian - Lithuania | 0x0427 | LTH |
| mk-MK | Macedonian (FYROM) | 0x042F | MKD |
| ms-BN | Malay - Brunei | 0x083E | |
| ms-MY | Malay - Malaysia | 0x043E | |
| mr-IN | Marathi - India | 0x044E | |
| mn-MN | Mongolian - Mongolia | 0x0450 | |
| nb-NO | Norwegian (Bokmål) - Norway | 0x0414 | |
| nn-NO | Norwegian (Nynorsk) - Norway | 0x0814 | |
| pl-PL | Polish - Poland | 0x0415 | PLK |
| pt-BR | Portuguese - Brazil | 0x0416 | PTB |
| pt-PT | Portuguese - Portugal | 0x0816 | |
| pa-IN | Punjabi - India | 0x0446 | |
| ro-RO | Romanian - Romania | 0x0418 | ROM |
| ru-RU | Russian - Russia | 0x0419 | RUS |
| sa-IN | Sanskrit - India | 0x044F | |
| Cy-sr-SP | Serbian (Cyrillic) - Serbia | 0x0C1A | |
| Lt-sr-SP | Serbian (Latin) - Serbia | 0x081A | |
| sk-SK | Slovak - Slovakia | 0x041B | SKY |
| sl-SI | Slovenian - Slovenia | 0x0424 | SLV |
| es-AR | Spanish - Argentina | 0x2C0A | ESS |
| es-BO | Spanish - Bolivia | 0x400A | ESB |
| es-CL | Spanish - Chile | 0x340A | ESL |
| es-CO | Spanish - Colombia | 0x240A | ESO |
| es-CR | Spanish - Costa Rica | 0x140A | ESC |
| es-DO | Spanish - Dominican Republic | 0x1C0A | ESD |
| es-EC | Spanish - Ecuador | 0x300A | ESF |
| es-SV | Spanish - El Salvador | 0x440A | ESE |
| es-GT | Spanish - Guatemala | 0x100A | ESG |
| es-HN | Spanish - Honduras | 0x480A | ESH |
| es-MX | Spanish - Mexico | 0x080A | ESM |
| es-NI | Spanish - Nicaragua | 0x4C0A | ESI |
| es-PA | Spanish - Panama | 0x180A | ESA |
| es-PY | Spanish - Paraguay | 0x3C0A | ESZ |
| es-PE | Spanish - Peru | 0x280A | ESR |
| es-PR | Spanish - Puerto Rico | 0x500A | ES |
| es-ES | Spanish - Spain | 0x0C0A | |
| es-UY | Spanish - Uruguay | 0x380A | ESY |
| es-VE | Spanish - Venezuela | 0x200A | ESV |
| sw-KE | Swahili - Kenya | 0x0441 | |
| sv-FI | Swedish - Finland | 0x081D | SVF |
| sv-SE | Swedish - Sweden | 0x041D | |
| syr-SY | Syriac - Syria | 0x045A | |
| ta-IN | Tamil - India | 0x0449 | |
| tt-RU | Tatar - Russia | 0x0444 | |
| te-IN | Telugu - India | 0x044A | |
| th-TH | Thai - Thailand | 0x041E | THA |
| tr-TR | Turkish - Turkey | 0x041F | TRK |
| uk-UA | Ukrainian - Ukraine | 0x0422 | UKR |
| ur-PK | Urdu - Pakistan | 0x0420 | URD |
| Cy-uz-UZ | Uzbek (Cyrillic) - Uzbekistan | 0x0843 | |
| Lt-uz-UZ | Uzbek (Latin) - Uzbekistan | 0x0443 | |
| vi-VN | Vietnamese - Vietnam | 0x042A | VIT |









