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 {