1.编写国际化配置文件
配置文件中定义与语言相关的数据
例如login_en_US.properties
#英文
login.btn=Sign In
login.password=Password
login.Remember=Remember Me
login.tip=Please sign in
login.username=UserName
2.页面使用thymeleaf的#{}获取国际化内容
例如th:text="#{login.tip}"
<h1 class="h3 mb-3 font-weight-normal" th:text="#{login.tip}">Please sign in</h1>
3.页面传递信息
传递语言和国家信息(Locale构造方法的参数)
<a class="btn btn-sm" th:href="@{/login.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/login.html(l='en_US')}">English</a>
4.编写LocaleResolver获取区域信息对象Locale
public class MyLocaleResolver implements LocaleResolver {
@Override
//login.html?l=zh_CN zh表示中文 CN表示中国
public Locale resolveLocale(HttpServletRequest request) {
//l = "zh_CN"
String l = request.getParameter("l");
Locale locale = Locale.getDefault();
if(!StringUtils.isEmpty(l)){
String[] s = l.split("_");
//Locale(language,country)
locale = new Locale(s[0],s[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
5.注入MyLocalResolver替代容器中的LocaleResolver
@Configuration
public class Myconfig {
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleResolver();
}
}
6.效果展示
(1)点击中文
(2)点击English