需求:页面支持国际化语言的切换
效果图:
一、使用thymeleaf模板引擎
1、引入thymeleaf命名空间
xmlns:th="http://www.thymeleaf.org"
2、动态获取路径参数
<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>
二、配置i18n配置文件
配置要国际化的内容
要添加更多的国际化语言
在yaml中配置国际化文件的真实位置
spring
#国际化配置文件的真实位置
messages:
basename: i18n.login
三、自定义LocaleResolver
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取请求中的语言参数
String language = request.getParameter("l");
Locale locale=Locale.getDefault();//如果没有就使用默认的;
//如果请求的链接携带了国际化的参数
if (!StringUtils.isEmpty(language)){
//zh_CN
String[] split=language.split("_");
//国家,地区
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}
四、注入到Spring中
@Configuration
public class MyConfig implements WebMvcConfigurer {
//自定义的国际化组件就生效了
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
完成!!!