package com.zy.common.i18n; import com.core.common.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; @RestControllerAdvice public class I18nResponseBodyAdvice implements ResponseBodyAdvice { @Autowired private I18nMessageService i18nMessageService; @Override public boolean supports(MethodParameter returnType, Class> converterType) { return true; } @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { if (body instanceof R) { R result = (R) body; Object msg = result.get("msg"); if (msg instanceof String) { result.put("msg", i18nMessageService.translateLegacy((String) msg)); } } return body; } }