Java i18n:每个包使用一个ResourceBundle访问器,还是整个项目使用一个?

我对国际化一无所知。

我有一个包含多个包的项目。 我正在使用Eclipse的内置“Externalize Strings”向导将我的类中的String常量提取到属性文件,并将这些字符串替换为对静态访问器的调用。 而不是

System.out.println("Hello, world!"); 

我结束了

 System.out.println(Messages.getString("MyKey")); 

每个包中都有一个Messages实用程序类(它提供了一个静态getString方法,用于从ResourceBundle获取所需的String [在本例中为.properties文件])。 是否最好在每个包中都有一个Messages类,或者为整个项目设置一个Messages类?

我赞成全球本地化文件。 您将拥有需要重复或嵌套的重复键(“确定”,“取消”),并且如果合并资源,则与外部本地化人员的连接会更容易。

我会保持每包一个。 这样维护/重构/unit testing就容易多了。

此外,单个文件没有全局依赖性。