package com.xjs.config; import org.apache.commons.lang3.StringUtils; 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; /** * 自定义国际化解析器 * * @author xiejs * @since 2022-02-09 */ @Configuration public class LocaleResolverConfig implements LocaleResolver { @Override public Locale resolveLocale(HttpServletRequest httpServletRequest) { // 获取页面手动切换传递的语言参数l String l = httpServletRequest.getParameter("l"); // 获取请求头自动传递的语言参数Accept-Language String header = httpServletRequest.getHeader("Accept-Language"); Locale locale = null; // 如果手动切换参数不为空,就根据手动参数进行语言切换,否则默认根据请求头信息切换 if (!StringUtils.isEmpty(l)) { String[] split = l.split("_"); locale = new Locale(split[0], split[1]); } else { // Accept-Language: en-US,en;q=0.9 String[] splits = header.split(","); String[] split = splits[0].split("-"); locale = new Locale(split[0], split[1]); } return locale; } @Override public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { } @Bean public LocaleResolver localeResolver(){ return new LocaleResolverConfig(); } }