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_en_US.properties
greeting=Hello, how are you?
MessageBundle_in_ID.properties
greeting=Halo, apa kabar?
InternationalizationDemo.java
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?
评论前必须登录!
注册