ruoyi-admin/src/main/resources/i18n/messages.properties
@@ -81,7 +81,6 @@ menu.mqQueue=mq\u961F\u5217 menu.minio=minio\u5B58\u50A8 menu.minioEvent=\u5B58\u50A8\u4E8B\u4EF6 menu.minioEventQuery=\u5B58\u50A8\u4E8B\u4EF6\u67E5\u8BE2 menu.sysApi=\u7CFB\u7EDF\u63A5\u53E3 menu.tiles3d=\u4E09\u7EF4\u5B9E\u666F @@ -156,6 +155,7 @@ dic.data.sys.oper.type.force.out=\u5F3A\u9000 dic.data.sys.oper.type.gen=\u751F\u6210\u4EE3\u7801 dic.data.sys.oper.type.clear=\u6E05\u7A7A\u6570\u636E dic.data.sys.oper.type.control=\u63A7\u5236 dic.data.sys.common.status.success=\u6210\u529F dic.data.sys.common.status.fail=\u6210\u529F dic.data.camera.type.samll.camera=\u5C0F\u5149\u7535 @@ -183,6 +183,7 @@ dic.data.cameras.priority.user1=\u7528\u6237\u4E00\u7EA7 dic.data.cameras.priority.user2=\u7528\u6237\u4E8C\u7EA7 dic.data.cameras.priority.user3=\u7528\u6237\u4E09\u7EA7 dic.data.cameras.priority.user4=\u7528\u6237\u56DB\u7EA7 dic.data.cameras.priority.sys.app.onekey=sys_app_onekey dic.data.cameras.priority.sys.access.control=sys_access_control dic.data.cameras.priority.sys.external=sys_external ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
@@ -98,8 +98,8 @@ menu.accountUnlock=accountUnlock menu.batchForceOut=batchForceOut menu.singleForceOut=singleForceOut menu.codePreview=preview menu.codeGen=generator menu.preview=preview menu.generator=generator menu.query=query menu.add=add menu.edit=edit @@ -163,6 +163,7 @@ dic.data.sys.oper.type.force.out=forceLogout dic.data.sys.oper.type.gen=genCode dic.data.sys.oper.type.clear=clear dic.data.sys.oper.type.control=control dic.data.sys.common.status.success=success dic.data.sys.common.status.fail=fail dic.data.camera.type.samll.camera=samll ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
@@ -161,6 +161,7 @@ dic.data.sys.oper.type.force.out=\u5F3A\u9000 dic.data.sys.oper.type.gen=\u751F\u6210\u4EE3\u7801 dic.data.sys.oper.type.clear=\u6E05\u7A7A\u6570\u636E dic.data.sys.oper.type.control=\u63A7\u5236 dic.data.sys.common.status.success=\u6210\u529F dic.data.sys.common.status.fail=\u6210\u529F dic.data.camera.type.samll.camera=\u5C0F\u5149\u7535 @@ -188,6 +189,7 @@ dic.data.cameras.priority.user1=\u7528\u6237\u4E00\u7EA7 dic.data.cameras.priority.user2=\u7528\u6237\u4E8C\u7EA7 dic.data.cameras.priority.user3=\u7528\u6237\u4E09\u7EA7 dic.data.cameras.priority.user4=\u7528\u6237\u56DB\u7EA7 dic.data.cameras.priority.sys.app.onekey=sys_app_onekey dic.data.cameras.priority.sys.access.control=sys_access_control dic.data.cameras.priority.sys.external=sys_external ruoyi-common/src/main/java/com/ruoyi/common/filter/MyI18nInterceptor.java
@@ -13,20 +13,27 @@ public class MyI18nInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { final String key = "language"; //String language = "en_US"; //String language = "zh_CN"; String language = request.getHeader(key); if (language == null) { //String language = "en_US"; language = "en_US"; public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){ try { final String key = "language"; //String language = "en-US"; //String language = "zh-CN"; String language = request.getHeader(key); if (language == null) { //String language = "en-US"; language = "en-US"; } // 前端传递的language必须是zh-CN格式的,中间的_必须要完整,不能只传递zh或en log.info("当前语言={}", language); Locale locale = new Locale(language.split("-")[0], language.split("-")[1]); // 这样赋值以后,MessageUtils.message方法就不用修改了 LocaleContextHolder.setLocale(locale); } // 前端传递的language必须是zh_CN格式的,中间的_必须要完整,不能只传递zh或en log.debug("当前语言={}", language); Locale locale = new Locale(language.split("_")[0], language.split("_")[1]); // 这样赋值以后,MessageUtils.message方法就不用修改了 LocaleContextHolder.setLocale(locale); catch (Exception ex) { log.error(ex.getMessage()); return false; } return true; } ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
@@ -1,11 +1,16 @@ package com.ruoyi.framework.security.handle; import java.io.IOException; import java.util.Locale; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ruoyi.common.utils.MessageUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import com.alibaba.fastjson2.JSON; @@ -23,6 +28,7 @@ * * @author ruoyi */ @Slf4j @Configuration public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler { @@ -45,7 +51,17 @@ // 删除用户缓存记录 tokenService.delLoginUser(loginUser.getToken()); // 记录用户退出日志 AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, "退出成功")); //国际化 final String key = "language"; String language = request.getHeader(key); if (language == null) { //String language = "en-US"; language = "en-US"; } log.info("当前语言={}", language); Locale locale = new Locale(language.split("-")[0], language.split("-")[1]); LocaleContextHolder.setLocale(locale); AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT,MessageUtils.message("user.logout.success"))); } ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.success("退出成功"))); }