1. 新建 message
2.配置
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
/**
* @Classname InternationalConfig
* @Description TODO
* @Date 2021/6/21 14:21
* @Created by wangjun
*/
@Configuration
public class InternationalConfig {
// @Value(value = "${spring.messages.basename}")
// private String basename;
@Bean(name = "messageSource")
public ResourceBundleMessageSource getMessageResource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
// messageSource.setBasename(basename);
messageSource.setBasename("language/message");
return messageSource;
}
}
2. 工具类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.support.RequestContext;
import org.springframework.web.servlet.support.RequestContextUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Component
public class MessageSourceHandler {
// https://blog.csdn.net/P397226804/article/details/103960592
@Autowired
private HttpServletRequest request;
@Autowired
private MessageSource messageSource;
/**
* 如果是根据Request请求的语言来决定国际化:
* @param messageKey
* @return
*/
public String getMessage(String messageKey) {
String message = messageSource.getMessage(messageKey, null, RequestContextUtils.getLocale(request));
return message;
}
/**
* 如果是根据应用部署的服务器系统来决定国际化:
* @param messageKey
* @return
*/
public String getMessageServer(String messageKey) {
String message = messageSource.getMessage(messageKey, null, LocaleContextHolder.getLocale());
return message;
}
}
4.使用
@Autowired
private MessageSourceHandler messageSourceHandler;
messageSourceHandler.getMessage("api.tip.fail.1")