文档

Java™ 教程-Java Tutorials 中文版
隔离特定于语言环境的数据
Trail: Internationalization

课程:隔离特定于语言环境的数据

必须根据终端用户的语言和区域的规范来定制特定于语言环境的数据。用户界面显示的文本是语言环境特定数据的最明显示例。例如,在美国使用 Cancel 按钮的应用程序将在德国具有 Abbrechen 按钮。在其他国家/地区,此按钮将包含其他标签。显然你不想硬编码这个按钮标签。如果你可以自动为给定的 Locale 获取正确的标签,那不是很好吗?幸运的是,只要你在 ResourceBundle 中隔离特定于语言环境的对象,就可以。

在本课程中,你将学习如何创建和访问 ResourceBundle 对象。如果你急于查看一些编码示例,请继续查看本课程的最后两节。然后,你可以回到前两个部分以获取有关 ResourceBundle 对象的一些概念性信息。

关于 ResourceBundle 类

ResourceBundle 对象包含特定于语言环境的对象。当你需要特定于语言环境的对象时,可以从 ResourceBundle 获取它,该对象返回与终端用户的 Locale 匹配的对象。本节介绍 ResourceBundle 如何与 Locale 相关,并描述 ResourceBundle 子类。

准备使用 ResourceBundle

在创建 ResourceBundle 对象之前,你应该做一些计划。首先,确定程序中特定于语言环境的对象。然后将它们组织成类别并相应地将它们存储在不同的 ResourceBundle 对象中。

使用属性文件支持 ResourceBundle

如果你的应用程序包含需要翻译成各种语言的 String 对象,则可以将这些 String 对象存储在 PropertyResourceBundle 中,其由一组属性文件支持。由于属性文件是简单的文本文件,因此翻译人员可以创建和维护这些文件。你不必更改源代码。在本节中,你将学习如何设置支持属性文件的 PropertyResourceBundle

使用 ListResourceBundle

ListResourceBundle 类是 ResourceBundle 的子类,它使用列表管理特定于语言环境的对象。ListResourceBundle 由类文件支持,这意味着每次需要支持其他 Locale 时,你必须编写和编译新的源文件。但是,ListResourceBundle 对象很有用,因为与属性文件不同,它们可以存储任何类型的特定于语言环境的对象。通过单步执行示例程序,本节演示如何使用 ListResourceBundle

自定义资源包加载

本节介绍了改善 ResourceBundle.getBundle 工厂灵活性的新功能。ResourceBundle.Control 类与用于加载资源包的工厂方法协作。这允许将资源包加载过程的每个实质步骤及其高速缓存控制视为单独的方法。


Previous page: Previous Lesson
Next page: About the ResourceBundle Class