1.首先配置application.properties
spring.messages.basename=static/i18n/messages
spring.messages.encoding=utf-8
2.通过全局配置加载国际化的bean对象
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import java.util.Locale;
/**
* @Author: Devin
* @Date: 2020-03-24 11:16
* @Version 1.0
*/
@Configuration
public class I18nConfig {
@Value(value = "${spring.messages.basename}")
private String basename;
/**
* 设置默认支持语言
* @return
*/
@Bean
public LocaleResolver localeResolver(){
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
//设置默认的语言
sessionLocaleResolver.setDefaultLocale(Locale.CHINA);
return sessionLocaleResolver;
}
@Bean
public WebMvcConfigurer localeInterceptor(){
return new WebMvcConfigurer() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
//通过请求参数 ?lang=cn_ZH 方式获取具体的语言
localeChangeInterceptor.setParamName("lang");
registry.addInterceptor(localeChangeInterceptor);
}
};
}
}
3.增加配置文件其中
************messages.properties是必须存在的无论有没有数据
************Resource Bundle “messages”是自动创建的不需要管理
************m不同的语言通过不同的文件名结尾
4.我们可以通过MessageSource来获取我们的国际化信息
@Autowired
private MessageSource messageSource;
messageSource.getMessage(msgKey, null, LocaleContextHolder.getLocale());