多语言配置
1.resources包下面准备一个i18n文件夹,里面包含语言的配置文件。ApplicationResources.properties
ApplicationResources_en_US.properties
ApplicationResources_zh_CN.properties
手动配置语言 ,中文需要用ASKII码
在yml文件中加入
messages:
basename: i18n/ApplicationResources
cache-second: 3600
encoding: UTF-8
Locale l = new Locale(“en”,“US”)
en表示国家,US表示语言
需要一个常量文件,或者枚举文件关联properties文件中的key;
枚举: addFail(10000, “msg.addFail”),
properties:msg.addFail=Add failed
工具类方法实现方法:
// An highlighted block
@Component
public class I18nUtil {
@Autowired
private MessageSource messageSource;
/**
* @param code:对应文本配置的key.
* @return 对应地区的语言消息字符串
*/
public String getMessage(String code) {
return getMessage(code, null);
}
public String getMessage(String code, Object[] args) {
return getMessage(code, args, "");
}
public String getMessage(String code, Object[] args, String defaultMsg) {
//这里使用比较方便的方法,不依赖request.
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(code, args, defaultMsg, locale);
}
}
private MessageSource messageSource;如果无法自动注入需要加配置类
@Configuration
public class MessageSourceConfig {
@Bean(name = "messageSource")
public ResourceBundleMessageSource getMessageSource() throws Exception {
ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
resourceBundleMessageSource.setDefaultEncoding("UTF-8");
resourceBundleMessageSource.setBasenames("i18n/ApplicationResources");
return resourceBundleMessageSource;
}
}
最后在需要的地方调用就可以了
i18nUtil.getMessage(ResponseCodeI18n.getDeployedListFailed.getMessage())