我已经使用安全性和i18n配置了Spring Boot。 LocaleChangeInterceptor在我登录之前无法正常工作。我想在登录界面上更改语言,也取决于用户浏览器本地。
/ *启动本地化部分* /
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor()).addPathPatterns("/**");
registry.addInterceptor(new WebInterceptor()).addPathPatterns("/**");
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor(){
LocaleChangeInterceptor localeChangeInterceptor=new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}
@Bean(name = "localeResolver")
public LocaleResolver getLocaleResolver(){
return new CookieLocaleResolver();
}
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource ret = new ReloadableResourceBundleMessageSource();
ret.setBasename("classpath:messages");
ret.setDefaultEncoding("UTF-8");
return ret;
}
@Override
public Validator getValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource(messageSource());
return validator;
}
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
CharacterEncodingFilter characterEncodingFilter() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
filter.setForceEncoding(true);
return filter;
}
答案 0 :(得分:0)
如果您使用的是SpringBoot 2.x,请将这些配置添加到application.properties
spring.mvc.locale-resolver=accept_header
spring.mvc.locale=en
要更改请求的语言环境,请将此Accept-Language添加到Http Request Header,例如
Accept-Languate : en_US