33 lines
801 B
Go
33 lines
801 B
Go
package i18nresource
|
|
|
|
import (
|
|
"embed"
|
|
|
|
"git.artlef.fr/bibliomane/internal/appcontext"
|
|
"github.com/nicksnyder/go-i18n/v2/i18n"
|
|
"github.com/pelletier/go-toml"
|
|
"golang.org/x/text/language"
|
|
)
|
|
|
|
//go:embed locale.*.toml
|
|
var localeFS embed.FS
|
|
|
|
func InitializeI18n() *i18n.Bundle {
|
|
bundle := i18n.NewBundle(language.English)
|
|
bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
|
|
bundle.LoadMessageFileFS(localeFS, "locale.en.toml")
|
|
bundle.LoadMessageFileFS(localeFS, "locale.fr.toml")
|
|
return bundle
|
|
}
|
|
|
|
func GetTranslatedMessage(ac *appcontext.AppContext, messageID string) string {
|
|
localizer := i18n.NewLocalizer(ac.I18n, ac.C.GetHeader("Accept-Language"))
|
|
message, err := localizer.LocalizeMessage(&i18n.Message{
|
|
ID: messageID,
|
|
})
|
|
if err != nil {
|
|
message = err.Error()
|
|
}
|
|
return message
|
|
}
|