This commit is contained in:
77
2024-05-20 01:18:08 +08:00
parent 74f0f074c1
commit 5bfdde942c
23 changed files with 249 additions and 71 deletions

View File

@@ -0,0 +1,96 @@
package com.ruoyi.web.config;
import com.ruoyi.dk.service.HomeSettingService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
/**
* i18n配置用于处理语言本地化设置。
*
* @author liuyanqiang
* @version 1.0.0
* @since 2023/06/15 09:41
**/
@Configuration
public class I18nConfig implements LocaleResolver {
@Autowired
private HomeSettingService homeSettingService;
/**
* 根据请求中的Accept-Language头部解析出语言设置。
* 如果没有指定语言或语言设置不完整,则默认为中文设置。
*
* @param request HTTP请求对象
* @return {@link Locale } 解析后的语言设置Locale对象
* @author liuyanqiang
* @since 2023/06/15 09:42
**/
@Override
public Locale resolveLocale(HttpServletRequest request) {
// 默认语言设置为中文
String defaultLocal = homeSettingService.getHomeSetting().getDefaultLocal();
Locale locale = null;
// 从请求的头部获取Accept-Language标头该标头指定了客户端期望的语言
String language = request.getHeader("Sass-Language");
String lang = request.getParameter("lang");
if (StringUtils.isNotBlank(lang)) {
language = lang;
}
if(StringUtils.isBlank(language)){
language = defaultLocal;
}
// 检查请求的语言是否非空
if (StringUtils.isNotBlank(language)) {
// 将语言字符串拆分为语言和国家/地区代码
String[] splitLanguage = language.split("_");
// 检查是否有语言和国家/地区代码
if (splitLanguage.length > 1) {
// 根据语言和国家/地区代码创建新的Locale对象
locale = new Locale(splitLanguage[0], splitLanguage[1]);
}
}
if(locale == null){
locale = Locale.CHINA;
}
// 返回解析得到的Locale对象作为解析后的语言设置
return locale;
}
/**
* 设置语言设置时的回调方法。
* 在此实现中,不执行任何操作,忽略对语言设置的更改。
* @param request HTTP请求对象
* @param response HTTP响应对象
* @param locale 语言设置的Locale对象
* @author liuyanqiang
* @since 2023/06/15 09:43
**/
@Override
public void setLocale(
HttpServletRequest request,
HttpServletResponse response,
Locale locale) {
// 此方法不执行任何操作,忽略对语言设置的更改
}
/**
* 创建LocaleResolver bean用于处理语言设置。
*
* @return {@link LocaleResolver }
* @author liuyanqiang
* @since 2023/06/15 09:44
**/
@Bean
public LocaleResolver localeResolver() {
// 返回当前类作为LocaleResolver的实例
return new I18nConfig();
}
}

View File

@@ -195,7 +195,7 @@ mybatis-encryptor:
springdoc:
api-docs:
# 是否开启接口文档
enabled: true
enabled: false
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
@@ -209,11 +209,11 @@ springdoc:
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
enabled: false
# 排除链接(多个用逗号分隔)
excludes: /cai/agreementSetting
excludes: /app/*
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*,/cai/*,/api/*
urlPatterns: /system/*,/monitor/*,/tool/*,/api/*
# 全局线程池相关配置
thread-pool: