dcbot/internal/discord/internal/discordi18n/bundle.go

36 lines
623 B
Go

package discordi18n
import (
"embed"
"encoding/json"
"io/fs"
"github.com/nicksnyder/go-i18n/v2/i18n"
"golang.org/x/text/language"
)
//go:embed locale.*.json
var localeFS embed.FS
func newBundle(defaultLanguage language.Tag) (*i18n.Bundle, error) {
b := i18n.NewBundle(defaultLanguage)
b.RegisterUnmarshalFunc("json", json.Unmarshal)
err := fs.WalkDir(localeFS, ".", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if d.IsDir() {
return nil
}
_, err = b.LoadMessageFileFS(localeFS, path)
return err
})
if err != nil {
return nil, err
}
return b, nil
}