管理Java字符串资源

时间:2009-01-04 19:16:11

标签: java

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

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

在具有数百个类的相当大的应用程序中管理字符串的最有效方法是什么,其中许多类与GUI无关,但需要在发生异常时将信息性消息传递回GUI。

我正在使用NetBeans,它通常为每个GUI类创建一个属性文件,用于与按钮,标签等相关的所有文本。

4 个答案:

答案 0 :(得分:12)

是什么让你觉得你必须为每个班级都有一个单独的属性文件?通常,您只需要一些(或仅一个!)属性文件(当然,每种语言)。

只需使用适当的参数调用ResourceBundle.getBundle() - 您可以使用多个类中的相同包。

编辑:每个对话框都有一组属性文件,这样可以更容易地看到任何特定字符串的来源,但它使重用相同的消息更加困难等。适当的平衡取决于应用程序

答案 1 :(得分:2)

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

很多JSR 296 resources collected here

答案 2 :(得分:0)

这可能是天真的,但是将它们存储在嵌入式或外部的数据库中呢?这可以简化管理,更改语言更具可配置性。

答案 3 :(得分:0)

今年我将实施类似于Launchpad的翻译平台: https://launchpad.net/+tour/translation

简而言之:

  • 同时翻译
  • 基于之前输入的短语的短语建议
  • 政策,例如部分限制和结构化:任何人都可以建议翻译,而受信任的社区成员审查和批准新工作

<强>更新

当然,这建立在ResourceBundle等之上,但是管理所有字符串的好方法; - )