ReloadableResourceBundleMessageSource:消息文件的顺序重要吗?

时间:2013-11-15 14:19:48

标签: java spring messages

我使用ReloadableResourceBundleMessageSource来处理本地化消息。我使用sci-xxx.properties表示英语(默认),sci-xxx_de.properties表示德语版本。

我有一个junit测试,检查消息是否已解析为英文版。在当地它总是很好。 在CI(Jenkins)上,Trick是失败的 - 即使在调用

期间也加载了德语版本
resourceBundleMessageSource.getMessage(code, params, resolveLocale()); 

resolveLocale()的调用会返回“en”。

我发现的差异是resourceBundleMessageSource.toString()输出。在本地,它显示按字母排序的文件列表。在CI上它是混合的,包含我的测试消息的commons_de文件出现在默认文件之前:

basenames=[messages/sci-commons_de,messages/sci-commons,messages/sci-user,messages/sci-user_de]

所以我将我的德语消息从commons_de移到了user_de,最后加载了。猜猜是什么 - 现在测试是绿色的。

我真的很困惑......文件顺序真的很重要吗?我如何强制正确的订单?或者我错过了吗?

我相信,CI服务器有德语区域设置,但应该由我的resolveLocale()覆盖,对吧?

1 个答案:

答案 0 :(得分:0)

当我将文件从_de重命名为_de_DE并使用“两部分”Locale枚举de_DE和en_US in resolveLocale()

时,问题就消失了