我使用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()
覆盖,对吧?
答案 0 :(得分:0)
当我将文件从_de重命名为_de_DE并使用“两部分”Locale枚举de_DE和en_US in resolveLocale()
时,问题就消失了