Java 国际化 - ResourceBundle 类
ResourceBundle 类用于存储对语言环境敏感的文本和对象。通常,我们使用属性文件来存储特定于语言环境的文本,然后使用 ResourceBundle 对象表示它们。以下是在基于 Java 的应用程序中,使用特定于语言环境的属性文件的步骤。
步骤 1:创建属性文件
假设我们需要英语语言环境的属性文件。然后创建一个属性文件名 XXX_en_US.properties,其中 XXX 是文件的名称,en_US 代表英语(美国)的语言环境。
Messages_en_US.properties
message=Welcome to TutorialsPoint.COM!
现在让我们为法语语言环境创建属性文件。然后创建一个属性文件名 XXX_fr_FR.properties,其中 XXX 是文件的名称,fr_FR 代表法语(法国)的语言环境。
Messages_fr_FR.properties
message=Bienvenue sur TutorialsPoint.COM!
在这里您可以发现键是相同的,但值在两个属性文件中都是特定于语言环境的。
步骤 2:创建 ResourceBundle 对象
使用以下语法创建具有属性文件名和语言环境的 ResourceBundle 对象。
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
步骤 3:从 ResourceBundle 对象获取值
通过传递键从 ResourceBundle 对象获取值。
String value = bundle.getString("message");
示例
以下示例说明如何使用 ResourceBundle 对象显示属性文件中特定于语言环境的值。
import java.util.Locale; import java.util.ResourceBundle; public class I18NTester { public static void main(String[] args) { ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US); System.out.println("Message in "+Locale.US +": "+bundle.getString("message")); bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE); System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message")); } }
输出
它将打印以下结果。
Message in en_US: Welcome to TutorialsPoint.COM! Message in fr_FR: Bienvenue sur TutorialsPoint.COM!
命名约定注意事项
以下是属性文件的命名约定。
对于映射到默认语言环境的属性文件,不需要前缀。message_en_US.properties 相当于 message.properties。
对于映射到语言环境的属性文件,可以通过两种方式附加前缀。message_fr.properties 相当于 message_fr_FR.properties。