1、在application.properties 添加以下配置:
#国际化配置 spring.messages.basename=i18n/messages/messages spring.messages.fallback-to-system-locale=false
2、添加配置文件在 resources目录下 如下图所示:
这个国际化文件命名有个坑,必须按照小明名称进行 否则部署linux国际化不生效,目前是遇到这个问题,问题修改en_us/zh_cn/es_pa得到解决 。如果有其他方式 ,欢迎留言沟通交流。
3、添加国际化配置文件:
I18nConfig.java
package com.example.cxjgmanagedevice.utils;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;@Configuration public class I18nConfig implements WebMvcConfigurer {@Beanpublic LocaleResolver localeResolver() {SessionLocaleResolver slr = new SessionLocaleResolver();slr.setDefaultLocale(Locale.US); // 设置默认语言为英语return slr;}@Beanpublic ReloadableResourceBundleMessageSource messageSource() {ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();messageSource.setBasenames("classpath:i18n/messages/messages"); // 设置基础名,不带后缀messageSource.setDefaultEncoding("UTF-8");messageSource.setCacheSeconds(5); // 设置缓存刷新间隔(秒)return messageSource;}@Overridepublic void addInterceptors(InterceptorRegistry registry) {LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();localeChangeInterceptor.setParamName("lang"); // 通过URL参数lang来切换语言registry.addInterceptor(localeChangeInterceptor);} }
4、创建控制类 添加属性:
private final MessageSource messageSource;@Autowired public UserController(MessageSource messageSource) {this.messageSource = messageSource; }
5、在对应接口方法上通过下面方式进行国际化
Locale locale = new Locale(lang); String message = null; if (StringUtils.isBlank(mobile) || StringUtils.isBlank(random)) {message = messageSource.getMessage("1004",null , locale);return ResultCodeDataObj.INFO("1004", message,null); }
6、国际化配置文件
至此:你的国际化流程已经顺利完成,中间过程中,如果有任何问题,欢迎骚扰。