关于SpringMVC国际化的问题--中文状态下运行正常,英文状态不正常

注意:这是我自己的分析,如有什么不对的地方请评论区指正。

问题描述:

昨天学习了关于SpringMVC国际化的知识,在所有代码完成的情况下,我在配置文件中配置i18n文件之后,浏览器出现在中文环境下好使,而在英文环境下不好使的问题。问题的解决得益于我的好友,他教会了我如何去debug源码。

我们先来看一下浏览器的语言设置:

在这里插入图片描述

再来看一下我的国际化配置文件i18n:

在这里插入图片描述
ps:先忽略掉i18n的第一个配置文件(当初我就是没有配置这个文件,而导致的问题,当然,如果不配置这个文件的话,也可以修改浏览器的语言)
首先来解释一下:中文(简体)在配置文件中的名字是:i18n_zh_CN.properties
英语:i18n_en.properties;
中文:i18n_zh.properties;

解决:

通过分析源码,我们发现,在浏览器发送请求的时候,request中会携带一个locale的属性,里面标注着当前浏览器语言环境;在SpringMVC底层,ResourceBundleMessageSource类主要处理国际化请求,当请求发送过来以后,该类会根据容器中配置的basename找到配置文件中的国际化配置文件,根据该locale值会得到配置文件中配置的键值对来发送给前端使用。相反,如果没找到的话,会采用默认方式展示。

所以当我们出现这种问题的时候,应该查看一下浏览器的语言环境和我们配置的国际化文件是否一致,更改之后从而问题得到解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值