i18n.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package global
  2. import (
  3. "github.com/BurntSushi/toml"
  4. "github.com/nicksnyder/go-i18n/v2/i18n"
  5. "golang.org/x/text/language"
  6. "os"
  7. )
  8. func InitI18n() {
  9. bundle := i18n.NewBundle(language.English)
  10. bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
  11. //读取global.Config.Gin.ResourcesPath下的所有语言文件
  12. dir := Config.Gin.ResourcesPath + "/i18n"
  13. fileInfos, err := os.ReadDir(dir)
  14. if err != nil {
  15. panic(err)
  16. }
  17. for _, fileInfo := range fileInfos {
  18. //如果文件名不是.toml结尾
  19. if fileInfo.IsDir() || fileInfo.Name()[len(fileInfo.Name())-5:] != ".toml" {
  20. continue
  21. }
  22. bundle.LoadMessageFile(Config.Gin.ResourcesPath + "/i18n/" + fileInfo.Name())
  23. }
  24. Localizer = func(lang string) *i18n.Localizer {
  25. if lang == "" {
  26. lang = Config.Lang
  27. }
  28. if lang == "en" {
  29. return i18n.NewLocalizer(bundle, "en")
  30. } else {
  31. return i18n.NewLocalizer(bundle, lang, "en")
  32. }
  33. }
  34. //personUnreadEmails := localizer.MustLocalize(&i18n.LocalizeConfig{
  35. // DefaultMessage: &i18n.Message{
  36. // ID: "PersonUnreadEmails",
  37. // },
  38. // PluralCount: 6,
  39. // TemplateData: map[string]interface{}{
  40. // "Name": "LE",
  41. // "PluralCount": 6,
  42. // },
  43. //})
  44. //personUnreadEmails, err := global.Localizer.LocalizeMessage(&i18n.Message{
  45. // ID: "ParamsError",
  46. //})
  47. //fmt.Println(err, personUnreadEmails)
  48. }