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)返回此资源束中相应密钥的值。
【Java中的ResourceBundle类】让我们看一下ResourceBundle类的简单示例。在此示例中, 我们将创建三个文件:
- MessageBundle_zh_CN.properties文件包含美国国家/地区的本地化消息。
- MessageBundle_in_ID.properties文件包含Indonaisa国家/地区的本地化消息。
- InternationalizationDemo.java文件, 将这些属性文件打包装入并打印消息。
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?
推荐阅读
- Java套接字编程
- Applet中的参数
- 小程序中的绘画
- newInstance()方法
- 10大Docker替代品(最佳容器虚拟化软件推荐)
- 10个最佳Wunderlist替代品(任务管理工具推荐合集)
- Windows和Mac的15种最佳vMix替代品(文稿演示软件推荐)
- 编辑视频的10大最佳Avidemux替代品(常用视频编辑软件推荐)
- 13个Unity的最佳替代方案(常用的游戏引擎有哪些())