CookieLocaleResolver国际化(Springboot)

实习期 老板让我改项目的国际化

要求:

  1. 默认根据浏览器Accept-Language中的语言信息判断选择语言版本;
  2. 提供切换语言按钮URL?lang=zh_CN,切换后将语言信息存入cookie;
  3. 若客户浏览器中存在语言cookie则优先使用coolie选择显示语言;

实现:

  • 若无cookie或URL切换请求,CookieLocaleResolver类中resolveLocale(HttpServletRequest request)方法会自动判断浏览器Accept-Language
  • CookieLocaleResolver设置的cookie默认有效期为会话结束,所以我们需要重构,设置cookie的有效期:
public class MyCookieLocaleResolver extends CookieLocaleResolver {
    //重写构造方法,改变cookie信息
    public MyCookieLocaleResolver(){
        this.setCookieName("locale");
        //cookie有效期30天
        this.setCookieMaxAge(30*24*60*60);
        System.out.println("设置cookie参数成功!");
    }
}

  • LocaleChangeInterceptor会结合当前使用的LocaleResolver,使用其setLocale()方法,因此我们可以通过LocaleChangeInterceptor结合URL请求改变及设置cookie中的locale信息;
@Configuration
public class MyConfig implements WebMvcConfigurer {

    @Bean
    public LocaleResolver localeResolver(){
    	//添加自己重写的MyCookieLocaleResolver
        return new MyCookieLocaleResolver();
    }
	//配置拦截器获取URL中的key=“lang” (?lang=zh_CN)
    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        lci.setParamName("lang");
        return lci;
    }
	//注册拦截器到容器中
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
}

至此完成,若有不对之处,望路过的大神指正~

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值