是否还有其他比资源包属性文件更好的机制来本地化应用程序?
答案 0 :(得分:3)
实际上,ResourceBundle不一定从属性文件中读取数据。 ResourceBundle有一些逻辑用于解析在何处查找数据,并且查找与bundle名称相同的属性文件是该逻辑的一个方面。从属性文件中读取实际上是由ResourceBundle,PropertyResourceBundle的子类完成的。
您可以实现自己的ResourceBundle,它将按您希望的方式读取(或计算)翻译。 ResourceBundle Javadoc为您提供了此类实现的示例。例如,您可以编写一个ResourceBundle来查找数据库中的翻译。
答案 1 :(得分:2)
这是来自ResourceBundle javadoc的直接引用。
Java平台提供了两个 ResourceBundle的子类, ListResourceBundle和 PropertyResourceBundle,提供一个 创建资源的相当简单的方法。 正如您在之前的简要介绍中所见 例如,ListResourceBundle管理 其资源作为键/值列表 对。 PropertyResourceBundle使用了 属性文件来管理它 资源。
如果是ListResourceBundle或 PropertyResourceBundle不合适 你的需求,你可以自己写 ResourceBundle子类。您的 子类必须覆盖两个方法: handleGetObject和getKeys()。
在我看来,最佳实践是使用某种ResourceBundle子类,最好是不要求你破解代码进行本地化的子类。理由:它存在,它有效,人们理解它,不重新发明轮子等等。