0
点赞
收藏
分享

微信扫一扫

Spring Boot 2.X 国际化

颜娘娘的碎碎念 2022-08-09 阅读 45

 国际化文件的编写

 

​​messages.properties​​

 

​​init project​​

 

7月前

​​messages_en_US.properties​​

 

​​init project​​

 

7月前

​​messages_zh_CN.properties​​

页面非连接配置国际化只需要:

 spring.messages.basename=i18n.login

 

1: 1.5X版本配置的方式 今天发现已久不行了

  链接配置

  编写类 实现LocaleResover

public class LocaleSetting implements LocaleResolver {

@Override

public Locale resolveLocale(HttpServletRequest request) {

/**

* l=('en_US) 取得连接字符串

*/

String lstr = request.getParameter("l");

Locale locale = Locale.getDefault();

if(!StringUtils.isEmpty(lstr)){

String[] split = lstr.split("_");

locale = new Locale(split[0],split[1]);

}

return locale;

}

@Override

public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { }

}

 

 

一个Spring Boot 只需要存在一个继承 WebMvcConfigurationSupport,所以都在这个类 配置

# 在下面这里配置

public class AppConfig extends WebMvcConfigurationSupport

/**

* 配置国际化

*/

@Bean

public LocaleResolver initLocale(){

return new LocaleSetting();

}

2: 2.x版本的配置方式

/**
* 拦截器映射
*/
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
super.addInterceptors(registry);
}
/**
* 配置国际化
*/
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
// 默认使用的语言
slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
return slr;
}

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
// 参数名 用于区别使用语言类型
/**
* <a class="btn btn-sm" th:href="@{index.html(l='en-US')}">中文</a>
* <a class="btn btn-sm" th:href="@{index.html(l='zh-CN')}">English</a>
*/
lci.setParamName("l");
return lci;
}

 

 

 



举报

相关推荐

0 条评论