1 编写国际化文件
在resources下创建i18n文件夹存放配置文件
i18n.properties
login=登录
password=密码
username=用户名
i18n_zh_CN.properties
login=登录
password=密码
username=用户名
i18n_en_US.properties
login=SIGN IN
password=password
username=username
其他国家地区语音按文件名以此类推
2 配置地区解析器
通过实现LocaleResolver接口实现resolveLocale方法自定义地区解析器,通过request或session中的参数获取地区信息返回Locale对象
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
HttpSession session = httpServletRequest.getSession();
String language = httpServletRequest.getParameter("language");
Locale locale = Locale.getDefault();
if(!StringUtils.isEmpty(language)){
String[] s = language.split("_");
locale = new Locale(s[0], s[1]);
session.setAttribute("language", language);
}
else if(!StringUtils.isEmpty(session.getAttribute("language"))){
String language = (String) session.getAttribute("language");
String[] s = language.split("_");
locale = new Locale(s[0], s[1]);
}
return locale;
}
}
3 在自定义的WebMvcConfig中将地区解析器添加到bean容器中
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
4 在application.yml中配置国际化文件的位置
spring:
messages:
basename: i18n.i18n
5 在thymeleaf中使用#{}获取国际化配置
<label th:text="#{username}"></label>