[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