当前位置: 首页 > 教程 > Java国际化(i18n) >

Java国际化(i18n)ResourceBundle类

精华
小牛编辑
131浏览
2023-03-14

ResourceBundle类用于存储区域设置敏感的文本和对象。 通常使用属性文件来存储特定于语言环境的文本,然后使用ResourceBundle对象来表示它们。 以下是在基于Java的应用程序中使用特定于语言环境的属性文件的步骤。

第1步:创建属性文件

假设我们需要英文语言环境的属性文件。创建属性文件名称为:XXX_en_US.properties,其中XXX是文件的名称,en_US表示英语(美国)的语言环境。

文件:Messages_en_US.properties -

message=Welcome to Yiibai.COM!

现在为法语区域设置创建属性文件。创建一个属性文件名称为:XXX_fr_FR.properties,其中XXX是文件的名称,fr_FR表示法语(法国)的语言环境。

文件:Messages_fr_FR.properties -

message=Bienvenue sur Yiibai.COM!

在这里可以看到键(message)是相同的,但是这个值在属性文件中是特定于语言环境的。

第2步:创建ResourceBundle对象

使用以下语法创建具有属性文件名和区域设置的ResourceBundle对象。

ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);

第3步:从ResourceBundle对象获取值。

通过传递键,然后从ResourceBundle对象获取值。

String value = bundle.getString("message");

示例

以下示例说明如何使用ResourceBundle对象来显示来自属性文件的特定于区域的值。

文件:IOTester.java -

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 Yiibai.COM!
Message in fr_FR: Bienvenue sur Yiibai.COM!

命名约定注意事项

以下是属性文件的命名约定。

  • 对于映射到默认语言环境的属性文件,不需要前缀。 message_en_US.properties等同于message.properties
  • 对于映射到语言环境的属性文件,可以通过两种方式附加前缀。 message_fr.properties等同于message_fr_FR.properties