36 lines
623 B
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
|
|
}
|