springboot国际化配置

项目结构

springboot国际化配置_第1张图片
在resources目录中创建i18n目录
然后再i18n下创建
messages.properties
image.png
messages\_en\_US.properties
image.png
messages\_zh\_CN.properties
image.png
你也可以这样进行编辑操作
springboot国际化配置_第2张图片
在application.yml中配置

spring:
  messages:
    basename: i18n/messages

注:其中Resource Bundle 'messages' 不需要手动创建,只需创建你需要的国际化的配置文件即可
springboot国际化配置_第3张图片

项目代码

创建MyLocaleResolver类

@Configuration
public class MyLocaleResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String language = request.getHeader("accept-language");
        Locale local = Locale.getDefault();
        if (StringUtils.hasText(language)){
            String[] s = language.split("_");
            local = new Locale(s[0],s[1]);
        }
        return local;
    }
    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response,Locale locale) {
    }
}

语言编码比如zh\_CN中zh代表语言(zh:中文),CN代表国家或地区(CN:中国)
image.png
然后注册组件

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    // 注册国际化组件
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }
}

使用

在一个Controller里写一个测试请求
@GetMapping("/hello")
public CommonResult hello() {
String message = MessageUtils.get("user.name");
System.out.println(message);
return CommonResult.success(message);
}
注:CommonResult为自定义的返回数据的工具类,可以自己实现
image.png

测试

测试工具使用Postman
添加Accept-Language请求头
springboot国际化配置_第4张图片
springboot国际化配置_第5张图片

你可能感兴趣的:(springboot国际化配置)