修改properties文件的目录:在application.yml或者application.properties中配置 spring.message.basename
spring:
application:
name: test-worklog
messages:
basename: i18n/messages
encoding: UTF-8
MessageSource的使用:
@Autowired
private MessageSource messageSource;
-
无参数
operation.success = 操作成功。 String msg1 = messageSource.getMessage("operation.success", null, Locale.CHINA);
-
动态参数
start.ge.end = 开始日期{0}必须小于结束日期{1}! String [] param = {startDate, endDate}; String msg =messageSource.getMessage("operation.success", param, Locale.CHINA);
-
国际化
public String getMessage(String result, Object[] params) { String message = ""; try { Locale locale = LocaleContextHolder.getLocale(); message = messageSource.getMessage(result, params, locale); } catch (Exception e) { LOGGER.error("parse message error! ", e); } return message; }
-
无法使用注解获取MessageSource时
public String getMessage(String result, Object[] params) { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setCacheSeconds(-1); messageSource.setDefaultEncoding(StandardCharsets.UTF_8.name()); messageSource.setBasenames("/i18n/messages");
String message = ""; try { Locale locale = LocaleContextHolder.getLocale(); message = messageSource.getMessage(result, params, locale); } catch (Exception e) { log.error("parse message error! ", e); } return message;
}
注意:本文归作者所有,未经作者允许,不得转载