2009-01-04 73 views
2

我正在与其他人一起使用java SE 1.5+ swing应用程序。我想知道管理字符串资源的最佳方式是什么。我理解资源包等背后的原则。我想避免每个需要字符串的类都有一个属性文件,因为这看起来有些过火。特别是当你有很多只能对字符串进行单引用的类时(比如在错误处理程序中)。另一方面,当您与其他人合作时,您可以更轻松地降低合并冲突的风险。Java字符串资源的管理

它似乎特别麻烦,需要加载资源包,每次你需要在错误处理程序,以显示简单的用户反馈,同样,当许多类所涉及的时间。

什么是管理一个相当大的应用程序的字符串与几百个类,其中有许多是没有GUI有关的最有效的方法,但需要在发生异常时,通过翔实的信息备份到GUI。

我使用它一般会为每个GUI类的属性文件的NetBeans,对与按钮的所有文字,标签等

回答

12

是什么让你觉得你必须有一个单独的属性文件,每类?通常你只需要几个(或者只有一个!)属性文件(当然,每种语言)。

只需拨打ResourceBundle.getBundle()适当的参数 - 您可以使用同捆地从多个类。

编辑:每个对话框有一组属性文件可以更容易地看到任何特定的字符串来自哪里,但它使得难以重复使用相同的消息等等。正确的平衡将取决于应用。

0

这可能很幼稚,而是将它们存储在数据库中的东西,无论是嵌入式或外部?这可能会简化管理,并且可以更改语言的可配置性。

2

JSR 296 Swing应用程序框架,对资源管理的支持(和它看起来像将成为Java 7的一部分)。 SAF旨在预先构建Swing应用程序的一部分,这是许多人在封装最佳实践时经常需要的。你可能不想直接与它绑定,但它的价值在于看看它是否给你提供了一些想法。如果我记得,他们使用具有明确定义的命名约定的级联资源包。后者意味着你知道去哪里看,前者意味着你可以在包的层次结构的某个部分重用属性。

很多JSR 296 resources collected here

0

我要实现类似的Launchpad的翻译平台的东西今年: https://launchpad.net/+tour/translation

一言以蔽之:

  • 并发翻译基于以前输入的短语
  • 短语的建议
  • 政策,例如部分限制和结构:任何人都可以提出的翻译,而值得信赖的社区成员审查和批准新的工作

UPDATE

当然,这建立在资源包等的顶部,但是是管理的好方法他们所有的字符串;-)