add i18n
This commit is contained in:
32
internal/i18nresource/main.go
Normal file
32
internal/i18nresource/main.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package i18nresource
|
||||
|
||||
import (
|
||||
"embed"
|
||||
|
||||
"git.artlef.fr/PersonalLibraryManager/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
|
||||
}
|
||||
Reference in New Issue
Block a user