Thymeleaf国际化页面
1、编写多语言国际化文件及配置文件
国际化文件
配置中文的配置信息
login.properties
login_zh_CN.properties
配置英文的配置信息
login.properties
login_en_US.properties
1.1 创建login_zh_CN.properties文件
login.tip=请登录
login.username=用户名
login.password=密码
login.rememberme=记住我
login.button=登录
1.2 创建login_en_US.properties文件
login.tip=Please sign in
login.username=Username
login.password=Password
login.rememberme=Remember me
login.button=Login
2、编写配置文件
打开项目的application.properties全局配置文件,在该文件中添加国际化文件基础名设置
#thymeleaf页面缓存设置(默认为true),开发中方便调试应设置为false,上线稳定后应保持默认true
spring.thymeleaf.cache=false
#模板编码
spring.thymeleaf.encoding=UTF-8
#模板样式
spring.thymeleaf.mode=HTML5
#指定模板页面存放路径
spring.thymeleaf.prefix=classpath:/templates/
#指定模板页面名称的后缀
spring.thymeleaf.suffix=.html
#配置国际化文件基础名
spring.message.basename=<xxx上一级包名>.login
3、定制区域化解析器MyLocalResovel
创建一个用于定制国际化功能区域信息解析器的自定义配置类MyLocalResovel, MyLocalResovel自定义区域解析器配置类实现了LocaleResolver接口,并重写了其中的resolveLocale()方法进行自定义语言解析,最后使用@Bean注解将当前配置类注册成Spring容器中的一个类型为LocaleResolver的Bean组件,这样就可以覆盖默认的LocaleResolver组件。其中,在resolveLocale()方法中,根据不同需求(手动切换语言信息,浏览器请求头自动切换语言信息)分别获取了请求参数1和请求头参数Accept-Language,然后在请求参数1不为空的情况下就以1参数携带的语言为标准进行语言切换,否则就定制通过请求头信息进行自动切换。
举个例子
public class MyLocalResovel implements LocaleResolver{
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest){
//获取页面手动切换传递的语言参数1
String 1 = httpServletRequest.getParameter("1");
//获取请求头自动传递的语言参数Accept-Language
String header = httpServletRequest.getHeader("Accept-Language");
Locale locale=null;
//如果手动切换参数不为空,就根据手动参数进行语言切换,否则默认根据请求头信息切换
if(!StringUtils.isEmpty(1)){
String[] split = 1.split("_");
locale = new Locale(split[0],split[1]);
}
else
{
//Accept-Language:en-US,en; q=0.9,zh-CN;q=0.8,zh;
String[] splits = header.split(",");
String[] split = splits[0].split("-");
locale = new Locale(split[0],split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, @Nullable HttpServletResponse httpServletResponse, @Nullable Locale locale){
}
//将自定义的MyLocalResovel类重新注册成为一个类型LocaleResolver的Bean组件
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResovel();
}
}
4、页面国际化使用
略、具体看个人代码
5、整合测试
略、具体看个人代码
|