📜  Java ResourceBundle类

📅  最后修改于: 2020-10-13 06:56:05             🧑  作者: Mango

Java中的ResourceBundle类

ResourceBundle类用于使消息国际化。换句话说,我们可以说它提供了一种全球化消息的机制。

硬编码的消息在编程方面不被认为是好的,因为一个国家与另一个国家不同。因此,我们使用ResourceBundle类将按摩全球化。 ResourceBundle类从包含消息的属性文件中加载这些信息。

按照惯例,属性文件的名称应为filename_languagecode_country代码,例如MyMessage_en_US.properties。

ResourceBundle类的常用方法

ResourceBundle类中有许多方法。让我们看看ResourceBundle类的常用方法。

  • 公共静态ResourceBundle getBundle(String basename)返回默认语言环境的ResourceBundle类的实例。
  • 公共静态ResourceBundle getBundle(String basename,Locale locale)返回指定语言环境的ResourceBundle类的实例。
  • public String getString(String key)返回此资源束中相应密钥的值。

ResourceBundle类的示例

让我们看一下ResourceBundle类的简单示例。在此示例中,我们将创建三个文件:

  • MessageBundle_zh_CN.properties文件包含美国国家/地区的本地化消息。
  • MessageBundle_in_ID.properties文件包含Indonaisa国家/地区的本地化消息。
  • InternationalizationDemo.java文件,该文件将这些属性文件打包装入并打印消息。

MessageBundle_zh_CN.properties

MessageBundle_in_ID.properties

国际化演示文件


import java.util.Locale;
import java.util.ResourceBundle;
public class InternationalizationDemo {
 public static void main(String[] args) {

  ResourceBundle bundle = ResourceBundle.getBundle("MessageBundle", Locale.US);
  System.out.println("Message in "+Locale.US +":"+bundle.getString("greeting"));

  //changing the default locale to indonasian 
  Locale.setDefault(new Locale("in", "ID"));
  bundle = ResourceBundle.getBundle("MessageBundle");
  System.out.println("Message in "+Locale.getDefault()+":"+bundle.getString("greeting"));

 }
}

Output:Message in en_US : Hello, how r u?
       Message in in_ID : halo, apa kabar?