為了適應(yīng)經(jīng)濟(jì)的全球一體化,作為開(kāi)發(fā)者,我們需要開(kāi)發(fā)出支持多國(guó)語(yǔ)言、國(guó)際化的Web應(yīng)用,即同樣的頁(yè)面在不同的語(yǔ)言環(huán)境下需要顯示不同的效果,也就是說(shuō)應(yīng)用程序在運(yùn)行時(shí)能夠根據(jù)請(qǐng)求所來(lái)自的地域與語(yǔ)言的不同而顯示不同的用戶(hù)界面。這樣,當(dāng)需要在應(yīng)用程序中添加對(duì)新的語(yǔ)言的支持時(shí),無(wú)需修改應(yīng)用程序的代碼,只需要增加語(yǔ)言包即可實(shí)現(xiàn)。
國(guó)際化與本地化(Internationalization and localization,通常用i18n和L10N表示),國(guó)際化是將針對(duì)某個(gè)地區(qū)設(shè)計(jì)的程序進(jìn)行重構(gòu),以使它能夠在更多地區(qū)使用,本地化是指在一個(gè)面向國(guó)際化的程序中增加對(duì)新地區(qū)的支持。
目前,Go語(yǔ)言的標(biāo)準(zhǔn)包沒(méi)有提供對(duì)i18n的支持,但有一些比較簡(jiǎn)單的第三方實(shí)現(xiàn),這一章我們將實(shí)現(xiàn)一個(gè)go-i18n庫(kù),用來(lái)支持Go語(yǔ)言的i18n。
所謂的國(guó)際化:就是根據(jù)特定的locale信息,提取與之相應(yīng)的字符串或其它一些東西(比如時(shí)間和貨幣的格式)等等。這涉及到三個(gè)問(wèn)題:
1、如何確定locale。
2、如何保存與locale相關(guān)的字符串或其它信息。
3、如何根據(jù)locale提取字符串和其它相應(yīng)的信息。
在第一小節(jié)里,我們將介紹如何設(shè)置正確的locale以便讓訪問(wèn)站點(diǎn)的用戶(hù)能夠獲得與其語(yǔ)言相應(yīng)的頁(yè)面。第二小節(jié)將介紹如何處理或存儲(chǔ)字符串、貨幣、時(shí)間日期等與locale相關(guān)的信息,第三小節(jié)將介紹如何實(shí)現(xiàn)國(guó)際化站點(diǎn),即如何根據(jù)不同locale返回不同合適的內(nèi)容。通過(guò)這三個(gè)小節(jié)的學(xué)習(xí),我們將獲得一個(gè)完整的i18n方案。
http://wiki.jikexueyuan.com/project/go-web-programming/images/navi10.png?raw=true" alt="" />