springboot i18n 國際化

介紹

客戶端經過Accept-Language控制國際化顯示。spring

messageSource

  • getMessage(String code, Object[] args, String defaultMessage, Locale locale)
  • getMessage(String code, Object[] args, Locale locale)
  • getMessage(MessageSourceResolvable resolvable, Locale locale)

使用

一、springboot自帶國際化,不須要單獨引入依賴。springboot

二、在resource下新建 i18n/messages.propertiesspa

image.png

三、在啓動配置文件增長如下內容code

  • properties配置
# locale 國際化
spring.messages.basename=i18n/messages
spring.messages.encoding=UTF-8
spring.messages.cache-duration=-1
  • yml配置
# locale 國際化
spring:
    messages:
       basename: i18n/messages
       encoding: UTF-8
       cache-duration: -1

四、在使用的類中引入 MessageResourceblog

@ControllerAdvice
public class GlobalExceptionHandler {
    @Autowired
    private MessageSource messageSource;
    
    private String getLocaleMessage(HttpServletRequest request, String code, Object[] msgArg) {
        Locale locale = RequestContextUtils.getLocale(request);
        if(locale == null){
            locale = Locale.US;
        }
        return messageSource.getMessage(code, msgArg, locale);
    }
}

五、在靜態類中使用get

public static BaseResponse success(HttpServletRequest request, String requestId, Object object){
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    
    messageSource.setCacheSeconds(-1);
    messageSource.setDefaultEncoding(StandardCharsets.UTF_8.name());
    messageSource.setBasenames("/i18n/messages");
    
    Locale locale = RequestContextUtils.getLocale(request);
    String code = ErrorCode.SUCCESS;
    String message = messageSource.getMessage(code, null, locale);
    BaseResponse res = new BaseResponse();
    res.setRequestId(requestId);
    res.setCode(code);
    res.setMessage(message);
    res.setData(object);
    return res;
}
public static String message(String code, Object... args){
    MessageSource messageSource = SpringUtils.getBean(MessageSource.class); 
    return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
}
相關文章
相關標籤/搜索