【问题标题】:Resource bundle defaults to parent message资源包默认为父消息
【发布时间】:2014-04-09 07:14:55
【问题描述】:

我有一个英文资源包messages.properties 和一个德文资源包messages_de.properties

当我在德语包中找不到消息,但它存在于英语包中时,REsourceBundle#getString() 方法会返回来自英语的消息(它被设置为德语包的父级)。

我想在测试缺少德语消息的场景时暂时禁用此行为,所以基本上我想在找不到德语消息时抛出异常,但存在英文消息(在我的特定测试环境中)。

最简单的方法是什么?我们正在使用 Spring 并通过应用程序上下文查找消息。

在下图中,它显示了 ResourceBundle 实现如何在父映射中查找,如果它本身没有找到它(并且似乎没有简单的方法来改变这种行为)。

【问题讨论】:

  • this 可以帮到你。
  • 这是我们默认做的...我只是想要一个干净的方法来禁用这个回退。但是 ResourceBundle 没有提供任何简单的方法来做到这一点。 :(
  • 使用 PropertyResourceBundle#handleGetObject() 让它工作
  • @Sumedh 当德语属性文件不包含密钥时,您如何将其配置为回退到英语?

标签: java spring properties internationalization


【解决方案1】:

我认为您需要做的就是将ReloadableResourceBundleMessageSourcefallbackToSystemLocale 属性设置为false

【讨论】:

  • 我们有自己的 MessageSource 实现,但它使用 ResourceBundle#getString() 而不是 Properties api。 ResourceBundle 总是依赖于父级,我想禁用它,但看不到任何方法。 :(
猜你喜欢
  • 1970-01-01
  • 2011-03-06
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 2013-03-01
  • 2014-04-19
  • 1970-01-01
相关资源
最近更新 更多