1.工具类:根据请求头中内容匹配是什么语言类型
@Component
public class MessageConfig {
private static List<String> languages = Arrays.asList("zh-CN","en-US");
private static HashMap<String,Properties> mapProperties = new HashMap<>();
static {
for(String s:languages){
mapProperties.put(s,new Properties());
}
for(String s:languages){
String messageConfigFile = String.format("MessageConfig_%s.properties",s);
InputStream ios = MessageConfig.class.getClassLoader().getResourceAsStream(messageConfigFile);
if(ios != null){
try {
mapProperties.get(s).load(ios);
} catch (IOException e) {
throw new RuntimeException("could not find Properties ==> "+ messageConfigFile);
}finally {
try {
ios.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
public static String getMessage(String key){
String language = "";
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
language = request.getHeader("Accept-Language");
if(StringUtils.isEmpty(language)){
language = "en-US";
} else{
if(!language.equals("en-US") && !language.equals("zh-CN")){
language = "en-US";
}
}
String strMessage = "";
if(StringUtils.isNotEmpty(key) && mapProperties.get(language) != null){
strMessage = mapProperties.get(language).getProperty(key);
if(StringUtils.isEmpty(strMessage)){
strMessage = key;
}
}
return strMessage;
}
}
2.在resources文件中增加properties文件
MessageConfig_en-US.properties和MessageConfig_zh-CN.properties两个文件,上面工具类会动态匹配指定的文件