本地化技术

时间:2011-04-14 21:53:01

标签: java

我目前正在开发桌面游戏,作为我CS课程的一部分 虽然不是必需的,但我希望我的应用程序支持本地化 所以我浏览了网页,发现了两种技术 - ResourceBundle
- 属性文件
但是我无法确定哪个更适合我,我只需要GUI的本地化消息和标签 我也很困惑这些文件/类应该如何命名为
例如,如果FooBar扩展了ResourceBundle
应该像FooBar_UNIX_en_US
顺便说一句,作业是一个纠缠(由gopherwoods工作室)克隆(桌面不是小程序)

〜感谢

3 个答案:

答案 0 :(得分:1)

您的方向正确,约定通常为Name_<language>_<country>

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

查看ResourceBundle.getBundle()工厂方法。

答案 1 :(得分:1)

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

所以你只需输入Messages.properties(默认),Messages_eo.properties(世界语翻译),Messages_de.properties(德语翻译),Messages_de_AT.properties等文件(奥地利语的特殊字符串)德国人,压倒一般的人。)

在您的程序中,您只需执行ResourceBundle bundle = ResourceBundle.getBundle("Messages"),然后运行时从属性文件为当前区域设置构建资源包。

如果您需要翻译除字符串之外的其他内容,则需要.class文件,继承ResourceBundle。你甚至可以混合两者,但我会更好地将它们分成不同的包(即一个text包和一个用于动态资源)。

答案 2 :(得分:0)

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

Java本身将尝试通过最具体到最不具体(最通用)来引用您的资源bundels。

如果您有以下资源:

resource  
resource_en  
resource_en_GB  
resource_fr  
resource_fr_CA 

本地最终用户是en_NZ(New Zeland),他将会看到resource_en中的内容。

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

希望有所帮助。