SpringBoot国际化-MessageSource的使用

修改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;
  1. 无参数

    operation.success = 操作成功。 String msg1 = messageSource.getMessage("operation.success", null, Locale.CHINA);

  2. 动态参数

    start.ge.end = 开始日期{0}必须小于结束日期{1}! String [] param = {startDate, endDate}; String msg =messageSource.getMessage("operation.success", param, Locale.CHINA);

  3. 国际化

    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; }

  4. 无法使用注解获取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;
    

    }


已有 0 条评论

    欢迎您,新朋友,感谢参与互动!