為了適應經濟的全球一體化,作為開發者,我們需要開發出支援多國語言、國際化的 Web 應用,即同樣的頁面在不同的語言環境下需要顯示不同的效果,也就是說應用程式在執行時能夠根據請求所來自的地域與語言的不同而顯示不同的使用者介面。這樣,當需要在應用程式中新增對新的語言的支援時,無需修改應用程式的程式碼,只需要增加語言套件即可實現。
國際化與本地化(Internationalization and localization,通常用 i18n 和 L10N 表示),國際化是將針對某個地區設計的程式進行重構,以使它能夠在更多地區使用,本地化是指在一個針對國際化的程式中增加對新地區的支援。
目前,Go 語言的標準套件沒有提供對 i18n 的支援,但有一些比較簡單的第三方實現,這一章我們將實現一個 go-i18n 函式庫,用來支援 Go 語言的 i18n。
所謂的國際化:就是根據特定的 locale 資訊,提取與之相應的字串或其它一些東西(比如時間和貨幣的格式)等等。這涉及到三個問題:
1、如何確定 locale。
2、如何儲存與 locale 相關的字串或其它資訊。
3、如何根據 locale 提取字串和其它相應的資訊。
在第一小節裡,我們將介紹如何設定正確的 locale 以便讓訪問站點的使用者能夠獲得與其語言相應的頁面。第二小節將介紹如何處理或儲存字串、貨幣、時間日期等與 locale 相關的資訊,第三小節將介紹如何實現國際化站點,即如何根據不同 locale 回傳不同合適的內容。透過這三個小節的學習,我們將獲得一個完整的 i18n 方案。