nicksnyder / go-i18n

Translate your Go program into multiple languages.
MIT License
3.03k stars 277 forks source link

feat: add support for custom path parsing function #346

Open laojianzi opened 1 month ago

laojianzi commented 1 month ago

It allows you to specify a custom function that will parse the file path to obtain language and format information.

e.g.

.
├── go.mod
├── go.sum
├── i18n
│   ├── en-US
│   │   └── app.json
│   ├── zh-CN
│   │   └── app.json
│   └── zh-TW
│       └── app.json
└── main.go
bundle := i18n.NewBundle(language.English)
bundle.RegisterUnmarshalFunc("json", json.Unmarshal)
bundle.SetParsePathFunc(func(path string) (langTag string, format string) {
    langTag, format = filepath.Base(filepath.Dir(path)), strings.TrimPrefix(filepath.Ext(path), ".")
    slog.Info("localize file", "path", path, "langTag", langTag, "format", format)
    return
})