类:隔离特定于语言环境的数据
特定于语言环境的数据必须根据final用户的语言和地区的惯例进行定制。用户interface显示的文本是特定于语言环境的数据的最明显示例。例如,在美国具有取消按钮的应用程序在德国将具有 Abbrechen 按钮。在其他国家/地区,此按钮将具有其他标签。显然,您不想对该按钮标签进行硬编码。如果您可以自动为给定的Locale
获取正确的标签,那不是很好吗?幸运的是,只要您将特定于语言环境的对象隔离在ResourceBundle
中,就可以。
在本类中,您将学习如何创建和访问ResourceBundle
对象。如果您急于研究一些编码示例,请 continue 阅读本类的最后两节。然后,您可以回到前两个部分以获取有关ResourceBundle
对象的一些概念性信息。
关于 ResourceBundle 类
ResourceBundle
个对象包含特定于语言环境的对象。当您需要特定于语言环境的对象时,可以从ResourceBundle
获取它,该对象返回与final用户Locale
相匹配的对象。本节说明ResourceBundle
与Locale
的关系,并描述ResourceBundle
子类。
准备使用 ResourceBundle
在创建ResourceBundle
对象之前,应做一些计划。首先,在程序中标识特定于语言环境的对象。然后将它们分类,并将它们分别存储在不同的ResourceBundle
对象中。
使用属性文件备份 ResourceBundle
如果您的应用程序包含需要翻译成多种语言的String
个对象,则可以将这些String
个对象存储在PropertyResourceBundle
中,该对象由一组属性文件备份。由于属性文件是简单的文本文件,因此可以由您的翻译人员创建和维护。您不必更改源代码。在本节中,您将学习如何设置备份PropertyResourceBundle
的属性文件。
使用 ListResourceBundle
ListResourceBundle
类是ResourceBundle
的子类,它通过列表 管理 特定于语言环境的对象。 ListResourceBundle
由类文件支持,这意味着每次需要支持附加的Locale
时,都必须编写代码并编译新的源文件。但是,ListResourceBundle
对象很有用,因为与属性文件不同,它们可以存储任何类型的特定于语言环境的对象。通过逐步执行示例程序,本节演示了如何使用ListResourceBundle
。
自定义资源包加载
本节介绍了提高ResourceBundle.getBundle
工厂灵 Active 的新功能。 ResourceBundle.Control
类与工厂方法协作以加载资源束。这允许将资源束加载过程的每个实质步骤及其缓存控制视为一个单独的方法。