From 95e0d9a468dbf569daf65abc01c18f8f0f020dc1 Mon Sep 17 00:00:00 2001 From: Hamidreza Ghavami <70919649+hamid-gh98@users.noreply.github.com> Date: Sat, 20 May 2023 19:46:34 +0430 Subject: [PATCH] create LocalizerMiddleware func --- web/locale/locale.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/web/locale/locale.go b/web/locale/locale.go index ba7a30e5..8b32d04d 100644 --- a/web/locale/locale.go +++ b/web/locale/locale.go @@ -6,6 +6,7 @@ import ( "strings" "x-ui/logger" + "github.com/gin-gonic/gin" "github.com/nicksnyder/go-i18n/v2/i18n" "github.com/pelletier/go-toml/v2" "golang.org/x/text/language" @@ -82,6 +83,24 @@ func I18n(i18nType I18nType, key string, params ...string) string { return msg } +func LocalizerMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + var lang string + + if cookie, err := c.Request.Cookie("lang"); err == nil { + lang = cookie.Value + } else { + lang = c.GetHeader("Accept-Language") + } + + LocalizerWeb = i18n.NewLocalizer(i18nBundle, lang) + + c.Set("localizer", LocalizerWeb) + c.Set("I18n", I18n) + c.Next() + } +} + func parseTranslationFiles(i18nFS embed.FS, i18nBundle *i18n.Bundle) error { err := fs.WalkDir(i18nFS, "translation", func(path string, d fs.DirEntry, err error) error {