12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package i18n
- import (
- "encoding/json"
- "fmt"
- "io/fs"
- "pms-api-go/pkg/configs"
- "pms-api-go/pkg/utils"
- "pms-api-go/web"
- "github.com/nicksnyder/go-i18n/v2/i18n"
- "github.com/sirupsen/logrus"
- "golang.org/x/text/language"
- )
- var i18nBundle *i18n.Bundle
- func InitBundle() {
- i18nBundle = i18n.NewBundle(language.English)
- i18nBundle.RegisterUnmarshalFunc("json", json.Unmarshal)
- files := []string{"zh_CN", "en_US"}
- for _, file := range files {
- filePath := fmt.Sprintf("%s/%s.json", configs.ConfigGlobal.I18nPath, file)
- if utils.PathExists(filePath) {
- _, err := i18nBundle.LoadMessageFile(filePath)
- if err != nil {
- logrus.Errorf("load i18n file %+v", err)
- }
- continue
- }
- buf, err := fs.ReadFile(web.ResourcesFiles, fmt.Sprintf("resources/%s.json", file))
- if err != nil {
- if err != nil {
- logrus.Errorf("load i18n file %+v", err)
- }
- continue
- }
- i18nBundle.ParseMessageFileBytes(buf, fmt.Sprintf("resources/%s.json", file))
- }
- }
- func Message(lang string, id string) string {
- localizer := i18n.NewLocalizer(i18nBundle, lang)
- result, err := localizer.Localize(&i18n.LocalizeConfig{
- DefaultMessage: &i18n.Message{
- ID: id,
- },
- })
- if err != nil {
- // lfshook.NewLogger().Warn(err)
- return id
- }
- return result
- }
- // func (b *i18n.Bundle) LoadMessageFileFS(fsys fs.FS, path string) (*i18n.MessageFile, error) {
- // buf, err := fs.ReadFile(fsys, path)
- // if err != nil {
- // return nil, err
- // }
- // return b.ParseMessageFileBytes(buf, path)
- // }
|