github.com/speedoops/go-gqlrest-demo@v0.0.0-20220710122636-5c6460aeab4f/graph/utils/i18n/i18n.go (about) 1 package i18n 2 3 import ( 4 "context" 5 "errors" 6 "fmt" 7 8 ki18n "github.com/kataras/i18n" 9 ) 10 11 var instance *ki18n.I18n 12 13 func init() { 14 var err error 15 instance, err = ki18n.New(ki18n.Glob("./config/locales/**/*", ki18n.LoaderConfig{}), "en-US", "zh-CN") 16 if err != nil { 17 panic(err) 18 } 19 20 instance.SetDefault("zh-CN") 21 } 22 23 func T(ctx context.Context, format string, args ...interface{}) string { 24 lang, ok := ctx.Value(LangKey).(string) 25 if !ok || lang == "" { 26 lang = "zh-CN" 27 } 28 29 translated := instance.Tr(lang, format, args...) 30 if translated == "" { 31 translated = fmt.Sprintf(format, args...) 32 } 33 return translated 34 } 35 36 func ErrorT(ctx context.Context, format string, args ...interface{}) error { 37 return errors.New(T(ctx, format, args...)) 38 }