Spring boot国际化
在开发中涉及到国际化时,如果想通过配置多个配置文件形式,将不同语言可以再前台进行显示。那么需要用到的有LocaleResolver和LocaleChangeInterceptor。不需要一个个put,直接在前台读取就行。
springboot中大部分有默认配置所以开发起项目来非常迅速,仅对需求项做单独配置覆盖即可
spring采用的默认区域解析器是AcceptHeaderLocaleResolver,根据request header中的accept-language值来解析locale,并且是不可变的。
那么想要实现国际化,就要使用SessionLocaleResolver或者CookieLocaleResolver。
相关参考:
https://docs.stormpath.com/java/spring-boot-web/i18n.html
http://www.iteye.com/topic/1144591
http://www.cnblogs.com/wqbill/p/5773338.html
http://blog.csdn.net/linxingliang/article/details/52350238
另外还需要进行定制拦截器进行拦截 :http://www.jianshu.com/p/1a54d5ae7904
@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {
//必须是localeChangeInterceptor,localeResolver 这两个名称
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Bean
public LocaleResolver localeResolver() {
CookieLocaleResolver cl = new CookieLocaleResolver();
cl.setCookieName(“lang”); //会像cookie中写入 key为lang的语言值, 类似lang=en这种
return cl;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
注册了localeChangeInterceptor 会识别url上的?lang=en这种形式的参数,并根据这个参数进行页面国际化。