增加配置類:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
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;
/**
* @創建人 yumifen
* @創建時間 2020/5/9
* @描述
**/
@Configuration
public class LocaleConfig {
/**
* 多語言的資源文件路徑,在application.properties中增加配置spring.messages.basename=classpath:i18n/message;classpath:i18n/log
*/
@Value("${spring.messages.basename}")
private String path;
/**
* 功能描述: 加載一下語言資源
*
* @param
* @author wangcanfeng
* @time 2019/3/4 22:03
* @since v1.0
**/
@Bean("messageSource")
@ConditionalOnMissingBean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
// 用分號隔開各個語言資源路徑
String[] paths=path.split(";");
messageSource.setBasenames(paths);
messageSource.setDefaultEncoding("UTF-8");
messageSource.setUseCodeAsDefaultMessage(true);
messageSource.setFallbackToSystemLocale(false);
return messageSource;
}
/**
* 默認解析器 其中locale表示默認語言
*/
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
return localeResolver;
}
/**
* 默認攔截器 其中lang表示切換語言的參數名
*/
@Bean
public WebMvcConfigurer localeInterceptor() {
return new WebMvcConfigurer() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
localeInterceptor.setParamName("lang");
registry.addInterceptor(localeInterceptor);
}
};
}
}
創建可以便捷實用i18n的組件
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
/**
* @創建人 yumifen
* @創建時間 2020/5/9
* @描述
**/
@Component
public class LocalContent {
private static MessageSource messageSource;
public LocalContent(@Qualifier("messageSource") MessageSource messageSource) {
this.messageSource = messageSource;
}
/**
* 獲取單個國際化翻譯值
*/
public static String get(String msgKey) {
try {
return messageSource.getMessage(msgKey, null, LocaleContextHolder.getLocale());
} catch (Exception e) {
return msgKey;
}
}
}