springboot 国际化 i18n , 后端提示
前言
i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。
msg.properties 这个默认文件要有,如果不传 lang ,则默认使用这个文件下的语言。
根据请求头的 lang 参数去判断语言,并给相应的提示。
有不对的地方欢迎评论指正。
提示:以下是本篇文章正文内容,下面案例可供参考
一、配置语言文件
sys.pleaseLogin=请登录
二、配置类
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
String lang = request.getHeader("lang");
if (lang == null) {
return Locale.getDefault();
}
if (lang.contains("en_CN")) {
return Locale.US;
} else {
return Locale.CHINA;
}
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
三、消息工具类
@Component
public class MsgUtil {
@Autowired
private MessageSource messageSource;
public String msg(String key) {
try {
return messageSource.getMessage(key, null, LocaleContextHolder.getLocale());
} catch (Exception e) {
e.printStackTrace();
//这里可以抛出自定义异常
}
}
}
四、如何使用
@Autowired
private MsgUtil msgUtil;
@PostMapping("msg")
public String msg() {
return msgUtil.msg("sys.sys.pleaseLogin");
}