【发布时间】:2013-11-15 14:19:47
【问题描述】:
我使用ReloadableResourceBundleMessageSource 来处理本地化消息。我用sci-xxx.properties 表示英语(默认),sci-xxx_de.properties 表示德语版本。
我有一个 junit 测试,它检查消息是否已解析为英文版本。在本地它总是很好。 诀窍是,在 CI (Jenkins) 上它失败了 - 加载了德语版本,即使在调用期间也是如此
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() 覆盖,对吧?
【问题讨论】: