Java 定位技术

Java 定位技术,java,Java,我目前正在开发一款桌面游戏,作为CS课程的一部分。 虽然不是必需的,但我希望我的应用程序支持本地化 因此,我浏览了网页,发现了两种技术 -ResourceBundle -属性文件 但是,我无法决定哪个更适合我,我只需要GUI的本地化消息和标签。 我还不清楚这些文件/类应该如何命名 例如,如果FooBar扩展了ResourceBundle 应该像FooBar\u UNIX\u en\u US一样 顺便说一句,任务是一个纠缠(由gopherwoods studio)克隆(桌面而非小程序) ~Than

我目前正在开发一款桌面游戏,作为CS课程的一部分。
虽然不是必需的,但我希望我的应用程序支持本地化
因此,我浏览了网页,发现了两种技术
-ResourceBundle
-属性文件
但是,我无法决定哪个更适合我,我只需要GUI的本地化消息和标签。
我还不清楚这些文件/类应该如何命名
例如,如果FooBar扩展了ResourceBundle
应该像FooBar\u UNIX\u en\u US一样
顺便说一句,任务是一个纠缠(由gopherwoods studio)克隆(桌面而非小程序)


~Thank

你的方向是正确的,惯例通常是
Name\uuu

ResourceBundle
本身可以使用属性文件来支持本地化字符串,因此您可以使用它。这样,您就不必为希望支持的每个本地化编译新类。只需为该语言创建一个新的属性文件


查看工厂方法。

我相信使用资源包将是最好的技术

Java本身将尝试按从最特定到最不特定(最通用)的顺序引用资源bundel

如果您拥有以下资源:

resource  
resource_en  
resource_en_GB  
resource_fr  
resource_fr_CA 
当地的最终用户是en_NZ(New Zeland),他将看到资源中的内容

但是,来自加拿大魁北克省的人很可能会看到resource_fr_CA中的内容


希望对您有所帮助。

您可以同时使用这两种文件-从程序的角度来看,它们是ResourceBundle,从翻译人员的角度来看,它们是属性文件。ResourceBundle可以从属性文件加载其字符串(但仅限于字符串)

因此,您只需放置文件,如
Messages.properties
(默认)、
Messages\u eo.properties
(世界语翻译)、
Messages\u de.properties
(德语翻译)、
Messages\u de_AT.properties
(奥地利德语的特殊字符串,覆盖常规字符串)

在程序中,您只需执行
ResourceBundle bundle=ResourceBundle.getBundle(“消息”)
,运行时就会根据属性文件为当前语言环境构建资源包

如果需要翻译字符串以外的其他内容,则需要
.class
文件,将ResourceBundle子类化。您甚至可以将两者混合,但我最好将它们拆分为不同的捆绑包(即一个
text
bundle,另一个用于动态资源)