[TOC]

介绍

在我们实际开发中,一个web应用可能要在多个地区使用,面对不同地区的不同语言,为了适应不同的用户,我们可以尝试在前端页面实现多语言的支持,那么同样对于后端返回的一些提示信息,异常信息等,我们后端也可以根据不同的语言环境来进行国际化处理,返回相应的信息。

但是这里我只用于做返回码,因为天启的返回码用得很太笨重

因为国际化会以key-val形式读取配置文件,很方便取,其本质通过流将数据写到properties中再写到map中

@SuppressWarnings({"unchecked", "rawtypes"})
    public PropertyResourceBundle (InputStream stream) throws IOException {
        Properties properties = new Properties();
        properties.load(stream);
        lookup = new HashMap(properties);
    }

只能用properties文件

使用

application.properties

# 指定默认properties文件,
# 默认为 : messages , 形如:
# 1. messages.properties  默认文件(在指定语言中找不到配置时会来找这个文件)
# 2. messages_zh_CN.properties  简体中文
spring.messages.basename=application-responseCode

application-responseCode.properties

JS001=成功
hello=你好:{0} , 你的验证码为 :{1}

controller

@Autowired
private MessageSource msg;

@RequestMapping("hello")
public String hello() {
    String message = msg.getMessage("JS001",null,"默认值" LocaleContextHolder.getLocale());// local写啥都一样,反正用默认配置
    String message1=msg.getMessage("hello", new Object[]{"zhangsan","123456"}, LocaleContextHolder.getLocale());// 会替换配置文件中的两个值
    return message; // 就是配置文件中的值
}

String getMessage(String var1, @Nullable Object[] var2, @Nullable String var3, Locale var4);
用来从MessageSource获取消息的基本方法。如果在指定的locale中没有找到消息,则使用默认的消息。var2中的参数将使用标准类库中的MessageFormat来作消息中替换值。

还有两个方法,反正就是封装的嘛,自己看

来自: https://blog.csdn.net/qq_33619378/article/details/89362747