SpringBoot国际化英文中文切换实现与疑难
怎样实现国际化?
1. 在resources下面新建文件-login.properties文件
2. 再新建一个login_zh_CN.properties文件
3.
4. 新建一个文件 en.US.properties
5. 点击login.properties文件,点击下方的Resource Bundle(没有的话请下载插件Resource Bundle)
6. 点击login_en_US.properties新建一个值
7. 在配置文件中编写
spring.messages.basename=i18N.login
8. 编写要转换的中文英文
9. 编写web组件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) {
}
}
10. 注册组件,在配置文件--类中
/*注册LocaleResolver 国际化*/
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
11. 完成
12. 国际化不生效的解决办法
1. 解决办法1将bean的名称改为localeResolver
2. 解决办法2将方法名称改为localeResolver
3. 原因:《Spring Boot 2 Recipes: A Problem-Solution Approach》这本书中有写到