springBoot国际化
指页面可以按照中英文切换显示。
例
1,配置国际化文件
2.写国际化类添加组件中
3.页面渲染
前期准备
更改idea的页面编码 不然写好之后都乱码
配置国际化文件
在rescource下创建一个i18n的文件夹
创建三个properties文件
会自动为我们合成到一个文件下
分别为默认配置 英文配置 中文配置
选择其中一个文件 点击这里
会变为这样 我们书写不同语言的配置
配置这个messages的路径
SpringBoot已经自动配置好了管理我们国际化资源文件的组件 ResourceBundleMessageSource我们需要指定文件的位置
指定数据在哪里
spring.messages.basename=i18n.login
写完之后我们用的 Thymeleaf魔板 在前端页面使用标签渲染进去 #{取出数据}
自定义地区解析器
想让我们的国际化资源生效,点击按钮切换语言,就需要让我们自己的Locale生效,需要自己注册进去。
自定义一个解析器MyLocaleResolver
//实现接口重写方法
public class MyLocaleResolver implements LocaleResolver {
//解析请求
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
//获取请求中的语言参数
String language = httpServletRequest.getParameter("l");
Locale locale = Locale.getDefault();//如果没有就使用默认的
// 如果language不是空的 请求的链接携带了国际化的参数
if(!StringUtils.isEmpty(language)){
//zh_CN 分割
String[] strings = language.split("_");
//分解出国家 地区
locale= new Locale(strings[0], strings[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
写好了解析器之后需要交给spring管理
在配置类中注册进去
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//自定义的国际化组件就生效了
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
然后我们让页面的按钮发起请求
我们用的是thymeleaf魔板 国际化的标签是 #{}
href的标签是@{}
测试
中文情况下
点击English后 url变化