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(); } }