<center><font size="5">go+ii8n实现多语言切换</font></center>
-
包
go get github.com/syyongx/ii18n
-
配置文件目录
--config --lang --app --en-US --app.json --zh-CN --app.json --zh-TW --app.json
-
初始化/使用
service
//初始化多语言 func init() { logs.Debug("package service,lang init()...") config := map[string]i18n.Config{ model.AppConfig.SysNo: i18n.Config{ SourceNewFunc: i18n.NewJSONSource, OriginalLang: model.AppConfig.SysDefaultLang, ForceTranslation: true, BasePath: model.AppConfig.SysLangPath + model.AppConfig.SysNo, // model.AppConfig.SysLangPath FileMap: map[string]string{ "web": "web.json", "common": "common.json", "login": "login.json", "setting": "setting.json", }, }, } i18n.NewI18N(config) }
模板方法使用多语言
//router中添加该方法 router.SetFuncMap(template.FuncMap{ "TPFunTi18nLang": common.TPFunTi18nLang, }) //根据参数获取信息 // TPFunTi18nLang // 1、category 如web // 2、lang 如zh-CN // 3、message 如web_title // 4、params 如xxx=xxx func TPFunTi18nLang(lang string, category string, message string, params ...string) string { var paramsMap = &map[string]string{} for _, v := range params { if !common.IsEmpty(v) { paramTmp := strings.Split(v, "=") (*paramsMap)[paramTmp[0]] = paramTmp[1] } } messageRtn := i18n.T(model.AppConfig.SysNo+"."+category, message, *paramsMap, lang) return messageRtn }
网友评论