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