spring和java国际化资源文件加载顺序

ResourceBundleMessageSource的底层实现

spring可以通过ResourceBundleMessageSource配置国际化支持,其内部实现是使用java的ResourceBundle作为资源本件绑定的实现

ResourceBundle文件的加载顺序

java里面有个官方的说明,简单翻译一下就是:

1代表指定国际化locale (language1, country1, and variant1)
2代表默认国际化locale (language2, country2, and variant2)

  1. baseName + “_”+ language1 + “_” + country1 + “_” + variant1
  2. baseName + “_” + language1 + “_” + country1
  3. baseName + “_” + language1
  4. baseName + “_” + language2 + “_” + country2 + “_” + variant2
  5. baseName + “_” + language2 + “_” + country2
  6. baseName + “_” + language2
  7. baseName

我们可以看出,加载顺序为:
优先加载指定国际化内容,之后加载默认国际化内容,最后加载顶级文件

这里一定要注意,加载过程含有系统默认国际化文件的加载,这可能和预期的加载顺序不一样,举个例子。

配置如下文件:
messages_en.properties
messages.properties 这里默认是中文

当运行在中文环境下,指定加载zh_CN,则加载的是messages.properties文件。
当运行在英文环境下,指定加载zh_CN,则加载的是messages_en.properties文件。

解决方法

可以通过配置 Locale.setDefault(Locale.CHINA); 方法来限制当前运行环境的本地化语言,既可避免意想不到的加载顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘少博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值