98 lines
3.2 KiB
Java
98 lines
3.2 KiB
Java
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) {
|
||
return Locale.CHINA;
|
||
/*// 默认语言设置为中文
|
||
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();
|
||
}
|
||
}
|