From b2f44dcea0544d0d407935cc6f81bc1f3947827a Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Mon, 9 Oct 2023 08:18:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90i18n=EF=BC=88=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E6=88=90=EF=BC=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/win/framework/util/MessageUtil.java | 21 +++ .../web/config/WinWebAutoConfiguration.java | 13 ++ .../web/core/filter/MyI18nInterceptor.java | 44 +++++++ .../src/main/resources/i18n/system.properties | 2 + .../resources/i18n/system_en_US.properties | 2 + .../resources/i18n/system_zh_CN.properties | 2 + .../src/main/resources/application.yaml | 7 +- .../static/MP_verify_DKOvVzFP7vPwwHx2.txt | 1 - .../src/main/resources/static/READMD.md | 13 -- .../src/main/resources/static/pay_wx_pub.html | 120 ------------------ 10 files changed, 90 insertions(+), 135 deletions(-) create mode 100644 win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/util/MessageUtil.java create mode 100644 win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/MyI18nInterceptor.java create mode 100644 win-module-system/win-module-system-biz/src/main/resources/i18n/system.properties create mode 100644 win-module-system/win-module-system-biz/src/main/resources/i18n/system_en_US.properties create mode 100644 win-module-system/win-module-system-biz/src/main/resources/i18n/system_zh_CN.properties delete mode 100644 win-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt delete mode 100644 win-server/src/main/resources/static/READMD.md delete mode 100644 win-server/src/main/resources/static/pay_wx_pub.html diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/util/MessageUtil.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/util/MessageUtil.java new file mode 100644 index 00000000..18f754d0 --- /dev/null +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/util/MessageUtil.java @@ -0,0 +1,21 @@ +package com.win.framework.util; + +import cn.hutool.extra.spring.SpringUtil; +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; + +public class MessageUtil { + + /** + * 根据消息键和参数 获取消息 委托给spring messageSource + * + * @param code 消息键 + * @param args 参数 + * @return 获取国际化翻译值 + */ + public static String message(String code, Object... args) { + MessageSource messageSource = SpringUtil.getBean(MessageSource.class); + return messageSource.getMessage(code, args, LocaleContextHolder.getLocale()); + } + +} diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/config/WinWebAutoConfiguration.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/config/WinWebAutoConfiguration.java index 6f7d0ea6..d5dac593 100644 --- a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/config/WinWebAutoConfiguration.java +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/config/WinWebAutoConfiguration.java @@ -4,6 +4,7 @@ import com.win.framework.apilog.core.service.ApiErrorLogFrameworkService; import com.win.framework.common.enums.WebFilterOrderEnum; import com.win.framework.web.core.filter.CacheRequestBodyFilter; import com.win.framework.web.core.filter.DemoFilter; +import com.win.framework.web.core.filter.MyI18nInterceptor; import com.win.framework.web.core.handler.GlobalExceptionHandler; import com.win.framework.web.core.handler.GlobalResponseBodyHandler; import com.win.framework.web.core.util.WebFrameworkUtils; @@ -21,6 +22,8 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; +import org.springframework.web.servlet.config.annotation.InterceptorRegistration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -125,4 +128,14 @@ public class WinWebAutoConfiguration implements WebMvcConfigurer { public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) { return restTemplateBuilder.build(); } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 注册拦截器 + MyI18nInterceptor myHandlerInterceptor = new MyI18nInterceptor(); + InterceptorRegistration loginRegistry = registry.addInterceptor(myHandlerInterceptor); + // 拦截路径 + loginRegistry.addPathPatterns("/**"); + } + } diff --git a/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/MyI18nInterceptor.java b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/MyI18nInterceptor.java new file mode 100644 index 00000000..b987a3a8 --- /dev/null +++ b/win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/filter/MyI18nInterceptor.java @@ -0,0 +1,44 @@ +package com.win.framework.web.core.filter; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Locale; + +@Slf4j +public class MyI18nInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + final String key = "language"; + String language = request.getHeader(key); + // 前端传递的language必须是zh-CN格式的,中间的-必须要完整,不能只传递zh或en + log.info("当前语言={}", language); + if(language == null || language.equals("")) { + language = "zh-CN"; + } + Locale locale = new Locale(language.split("-")[0],language.split("-")[1]); + // 这样赋值以后,MessageUtil.message方法就不用修改了 + LocaleContextHolder.setLocale(locale); + return true; + } + + /** + * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) + */ + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { + } + + /** + * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) + */ + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { + } + +} diff --git a/win-module-system/win-module-system-biz/src/main/resources/i18n/system.properties b/win-module-system/win-module-system-biz/src/main/resources/i18n/system.properties new file mode 100644 index 00000000..3d822273 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/resources/i18n/system.properties @@ -0,0 +1,2 @@ +captcha.code.not.null=\u9a8c\u8bc1\u7801\u4e0d\u80fd\u4e3a\u7a7a +captcha.code.error=\u9a8c\u8bc1\u7801\u9519\u8bef \ No newline at end of file diff --git a/win-module-system/win-module-system-biz/src/main/resources/i18n/system_en_US.properties b/win-module-system/win-module-system-biz/src/main/resources/i18n/system_en_US.properties new file mode 100644 index 00000000..179b1f00 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/resources/i18n/system_en_US.properties @@ -0,0 +1,2 @@ +captcha.code.not.null=The verification code cannot be empty +captcha.code.error=Incorrect verification code \ No newline at end of file diff --git a/win-module-system/win-module-system-biz/src/main/resources/i18n/system_zh_CN.properties b/win-module-system/win-module-system-biz/src/main/resources/i18n/system_zh_CN.properties new file mode 100644 index 00000000..3d822273 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/resources/i18n/system_zh_CN.properties @@ -0,0 +1,2 @@ +captcha.code.not.null=\u9a8c\u8bc1\u7801\u4e0d\u80fd\u4e3a\u7a7a +captcha.code.error=\u9a8c\u8bc1\u7801\u9519\u8bef \ No newline at end of file diff --git a/win-server/src/main/resources/application.yaml b/win-server/src/main/resources/application.yaml index 1f50aff1..0c772068 100644 --- a/win-server/src/main/resources/application.yaml +++ b/win-server/src/main/resources/application.yaml @@ -91,9 +91,12 @@ spring: redis: repositories: enabled: false # 项目未使用到 Spring Data Redis 的 Repository,所以直接禁用,保证启动速度 + # i18 message 配置,对应 MessageSourceProperties 配置类 + messages: + basename: i18n/system # 文件路径基础名 + encoding: UTF-8 # 使用 UTF-8 编码 --- #################### 闻荫相关配置 #################### - win: info: version: 1.0.0 @@ -127,6 +130,8 @@ win: - com.win.module.bpm.enums.ErrorCodeConstants - com.win.module.infra.enums.ErrorCodeConstants - com.win.module.system.enums.ErrorCodeConstants + - com.win.module.system.wms.ErrorCodeConstants + - com.win.module.system.scp.ErrorCodeConstants mq: redis: pubsub: diff --git a/win-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt b/win-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt deleted file mode 100644 index ee06c0a6..00000000 --- a/win-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt +++ /dev/null @@ -1 +0,0 @@ -DKOvVzFP7vPwwHx2 \ No newline at end of file diff --git a/win-server/src/main/resources/static/READMD.md b/win-server/src/main/resources/static/READMD.md deleted file mode 100644 index 2cf46688..00000000 --- a/win-server/src/main/resources/static/READMD.md +++ /dev/null @@ -1,13 +0,0 @@ -## 微信公众号 - -参考文章:https://www.yuque.com/docs/share/0e2966dd-89f8-4b69-980d-b876168725df - -① 访问 social-login.html 选择【微信公众号】 - -② 微信公众号授权完成后,跳转回 social-login2.html,输入手机号 + 密码,进行绑定 - -## 微信小程序 - -参考文章:https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa - -① 暂时使用 mini-program-test 项目 diff --git a/win-server/src/main/resources/static/pay_wx_pub.html b/win-server/src/main/resources/static/pay_wx_pub.html deleted file mode 100644 index b41bb4b6..00000000 --- a/win-server/src/main/resources/static/pay_wx_pub.html +++ /dev/null @@ -1,120 +0,0 @@ - - -
- - -