Java笔记--SpringBoot国际化i18n
2019-12-13 本文已影响0人
汴城码农
1,创建国际化 messages
文件
messages.properties
默认
messages_en_US.properties
美国英文
messages_zh_CN.properties
简体中文
目录结构如下图:

2,配置路径
#指定message的basename,多个以逗号分隔,如果不加包名的话,默认从classpath路径开始,默认: messages
spring.messages.basename=i18n/messages
#设定加载的资源文件缓存失效时间,-1的话为永不过期,默认为-1
#spring.messages.cache-seconds= 3600
spring.messages.cache-duration=-1

3,简单使用
@Autowired
private MessageSource messageSource;
Locale locale = LocaleContextHolder.getLocale();
String string = messageSource.getMessage("hellow",null,locale);
System.out.println("===================" + string);
4,可封装工具类,便于调用
@Component
public class LocaleMessage {
@Autowired
private MessageSource messageSource;
/**
* @param code:对应文本配置的key.
* @return 对应地区的语言消息字符串
*/
public String getMessage(String code){
return this.getMessage(code,new Object[]{});
}
public String getMessage(String code,String defaultMessage){
return this.getMessage(code,null,defaultMessage);
}
public String getMessage(String code,String defaultMessage,Locale locale){
return this.getMessage(code,null,defaultMessage,locale);
}
public String getMessage(String code, Locale locale){
return this.getMessage(code,null,"",locale);
}
public String getMessage(String code,Object[] args){
return this.getMessage(code,args,"");
}
public String getMessage(String code,Object[] args,Locale locale){
return this.getMessage(code,args,"",locale);
}
public String getMessage(String code,Object[] args,String defaultMessage){
Locale locale = LocaleContextHolder.getLocale();
return this.getMessage(code,args, defaultMessage,locale);
}
public String getMessage(String code,Object[]args,String defaultMessage,Locale locale){
return messageSource.getMessage(code,args, defaultMessage,locale);
}
}
5,前端请求头根据语言环境,请求头"Accept-Language"
传"en-US"``"zh-CN
即可返回本地化数据
以iOS为例,如下图:
