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。

广告