springboot整合i18n—通过请求头传递参数
springboot2.0可以自动化整合i18n
一、配置文件
需要在classpath:下放置国际化文件
- 默认文件:messages.properties(这里可以自定义语言,我们先自定义为中文)
user.name = 张三
- 英文文件:messages_en_US.properties
user.name = zhangsan
- 中文文件:messages_zh_CN.properties
user.name = 张三
二、配置国际化文件的路径
在application.yml文件中加入国际化文件到相对路径,多个文件以逗号隔开
spring
messages:
basename: i18n/messages
三、获取国际化文件的值
通过工具类 MessageUtils 获取国际化文件到中英文值
@Component
public class MessageUtils {
private static MessageSource messageSource;
public MessageUtils(MessageSource messageSource) {
MessageUtils.messageSource = messageSource;
}
/**
* 获取单个国际化翻译值
*/
public static String get(String msgKey) {
try {
return messageSource.getMessage(msgKey, null, LocaleContextHolder.getLocale());
} catch (Exception e) {
return msgKey;
}
}
}
四、controller代码
@RestController
@RequestMapping("/i18n")
public class I18nController {
@GetMapping("/hello")
public String hello() {
String message = MessageUtils.get("user.name");
System.out.println(message);
return message;
}
}
五、测试
用postman进行测试,在请求头中加上Accept-Language