2009-11-25 74 views
2

是否有任何其他比资源包属性文件更好的机制来本地化应用程序?替代资源包属性文件

+0

你在找什么功能不在属性资源包中? – McDowell 2009-11-25 10:02:03

+0

对不起,我应该清楚。我在同一时间使用资源包时没有任何问题,如果不是资源包,我不应该错过一些最佳实践。 – 2009-11-25 12:45:21

回答

3

实际上,ResourceBundle不一定从属性文件中读取其数据。 ResourceBundle具有某种逻辑来解决在哪里查找数据,并且寻找与该包相同名称的属性文件是该逻辑的一个方面。从属性文件中读取实际上是由ResourceBundle的子类PropertyResourceBundle完成的。

您可以实现自己的ResourceBundle,它将以您想要的方式读取(或计算)翻译。 ResourceBundle Javadoc为您提供了这些实现的示例。例如,您可以编写一个可在数据库中查找翻译的ResourceBundle。

2

以下是直接来自ResourceBundle javadoc的报价。

Java平台提供的ResourceBundle两个 子类, ListResourceBundle的和 的PropertyResourceBundle,提供一个 相当简单的方法来创建资源。 正如您在之前的 示例中简要介绍的那样,ListResourceBundle将其资源作为关键字/值 对的列表管理 。 PropertyResourceBundle使用 属性文件来管理其 资源。

如果ListResourceBundle的或 PropertyResourceBundle无法满足 您的需求,您可以编写自己的 ResourceBundle子类。您的 子类必须重写两个方法: handleGetObject和getKeys()。

在我看来,最好的做法是使用某种ResourceBundle子类,最好不要求你破解代码来做本地化。原因:它存在,它的工作原理,人们了解它,不要重新发明轮子等。