go-i18n
用最簡單的方法讓你的go程式支援國際化,我們使用介面來支援多種驅動的擴充套件。
目前支援的驅動
- json 格式的語言檔案
- Embed 嵌入式檔案系統 (使用 json格式)
- toml 格式
- yml 格式
- xml 格式
- sqlite
- postgresql
- redis
- 其他你想支援的任何資料來源
語言支援
- 中文
- English
- other
如何使用
import “github.com/guoliang1994/go-i18n”
語言檔案示例
{
"install": {
"success": "{{program}}安裝成功",
"error": "{{program}}安裝失敗, 失敗原因:{{reason}}"
},
"uninstall": {
"success": "{{program}}解除安裝成功",
"error": "{{program}}解除安裝失敗"
},
"start": {
"success": "{{program}}啟動成功",
"error": "{{program}}啟動失敗"
},
"appName": "國際化支援",
"needRoot": "需要root使用者"
}
使用 json 驅動
使用 T 方法獲取語言, 第一個引數是路徑,後面是動態引數,用於替換佔位符號
路徑可以支援無限極,用 「.」 語法,就像JavaScript
取物件屬性
driver := driver.NewJsonFileI18nImpl("..\\lang")
i18n := go_i18n.NewI18N(go_i18n.Chinese, driver)
msg := i18n.T("install.error", i18n.T("appName"), i18n.T("needRoot"))
如何實現其他檔案型別或資料庫驅動
這是 json 的實現,你只需要實現 contract.I18NDriver 中的介面即可
type JsonFileI18NImpl struct {
langDir string
}
func NewJsonFileI18mImpl(langDir string) contract.I18NDriver {
f := JsonFileI18NImpl{
langDir: langDir,
}
return &f
}
func (Self *JsonFileI18NImpl) LoadLang(location string) []byte {
fileName := fmt.Sprintf(Self.langDir + "\\%s.json", location)
data, _ := ioutil.ReadFile(fileName)
return data
}
歡迎各路大神提供不同的驅動
本作品採用《CC 協議》,轉載必須註明作者和本文連結