From 13b31b2ca2a5f8600002a042b536c9d5529842e3 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 09 三月 2026 19:21:18 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/i18n/RequestLocaleInterceptor.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/common/i18n/RequestLocaleInterceptor.java b/src/main/java/com/zy/common/i18n/RequestLocaleInterceptor.java
new file mode 100644
index 0000000..5c59e3f
--- /dev/null
+++ b/src/main/java/com/zy/common/i18n/RequestLocaleInterceptor.java
@@ -0,0 +1,53 @@
+package com.zy.common.i18n;
+
+import com.core.common.Cools;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.util.Locale;
+
+@Component
+public class RequestLocaleInterceptor implements HandlerInterceptor {
+
+    public static final String LANG_COOKIE_NAME = "wcs_lang";
+
+    @Autowired
+    private I18nMessageService i18nMessageService;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        Locale locale = i18nMessageService.resolveLocale(extractLocale(request));
+        org.springframework.context.i18n.LocaleContextHolder.setLocale(locale);
+        request.setAttribute("wcsLocale", locale);
+        return true;
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+        org.springframework.context.i18n.LocaleContextHolder.resetLocaleContext();
+    }
+
+    private String extractLocale(HttpServletRequest request) {
+        String locale = request.getParameter("lang");
+        if (!Cools.isEmpty(locale)) {
+            return locale;
+        }
+        locale = request.getHeader("X-Lang");
+        if (!Cools.isEmpty(locale)) {
+            return locale;
+        }
+        Cookie[] cookies = request.getCookies();
+        if (cookies != null) {
+            for (Cookie cookie : cookies) {
+                if (LANG_COOKIE_NAME.equals(cookie.getName()) && !Cools.isEmpty(cookie.getValue())) {
+                    return cookie.getValue();
+                }
+            }
+        }
+        return request.getHeader("Accept-Language");
+    }
+}

--
Gitblit v1.9.1