i18n.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. return
  17. }
  18. for _, fileInfo := range fileInfos {
  19. //如果文件名不是.toml结尾
  20. if fileInfo.IsDir() || fileInfo.Name()[len(fileInfo.Name())-5:] != ".toml" {
  21. continue
  22. }
  23. bundle.LoadMessageFile(Config.Gin.ResourcesPath + "/i18n/" + fileInfo.Name())
  24. }
  25. Localizer = func(lang string) *i18n.Localizer {
  26. if lang == "" {
  27. lang = Config.Lang
  28. }
  29. if lang == "en" {
  30. return i18n.NewLocalizer(bundle, "en")
  31. } else {
  32. return i18n.NewLocalizer(bundle, lang, "en")
  33. }
  34. }
  35. //personUnreadEmails := localizer.MustLocalize(&i18n.LocalizeConfig{
  36. // DefaultMessage: &i18n.Message{
  37. // ID: "PersonUnreadEmails",
  38. // },
  39. // PluralCount: 6,
  40. // TemplateData: map[string]interface{}{
  41. // "Name": "LE",
  42. // "PluralCount": 6,
  43. // },
  44. //})
  45. //personUnreadEmails, err := global.Localizer.LocalizeMessage(&i18n.Message{
  46. // ID: "ParamsError",
  47. //})
  48. //fmt.Println(err, personUnreadEmails)
  49. }