📅  最后修改于: 2023-12-03 15:31:58.600000             🧑  作者: Mango
国际化(I18N)指的是将应用程序设计成能够对多种语言和地区进行适应的能力。Java中的国际化主要是指支持应用程序的国际化和本地化,使其能够在不同的语言环境下适应不同的人群。
Java中支持国际化主要是依靠Java提供的资源绑定机制。资源又被称为“消息”(message),Java中常常使用“message”这个词代表单个信息单元。
在Java中使用国际化主要包含如下操作:
我们通常将消息存储在资源文件中,每个资源文件对应着一种语言环境,Java代码可以通过ResourceBundle类来读取这些资源文件。在Java中,有两种资源文件:属性文件(.properties文件)和类文件(.class文件)。
hello-world=Hello, world!
public class Message_zh_CN extends ListResourceBundle {
@Override
protected Object[][] getContents() {
return new Object[][]{
{"hello-world", "你好,世界!"}
};
}
}
ResourceBundle类提供了获取资源文件中消息的方法,根据不同情况使用不同的静态方法来获取:
// 通过默认Locale获取资源文件,即属性文件
ResourceBundle bundle = ResourceBundle.getBundle("message");
String helloWorld = bundle.getString("hello-world");
// 通过指定Locale获取资源文件,即属性文件
Locale locale = new Locale("zh", "CN");
ResourceBundle bundle2 = ResourceBundle.getBundle("message", locale);
String helloWorld2 = bundle2.getString("hello-world");
// 通过指定资源文件类型和默认Locale获取资源文件,即类文件
ResourceBundle bundle3 = ResourceBundle.getBundle("Message");
String helloWorld3 = bundle3.getString("hello-world");
// 通过指定资源文件类型和指定Locale获取资源文件,即类文件
ResourceBundle bundle4 = ResourceBundle.getBundle("Message", locale);
String helloWorld4 = bundle4.getString("hello-world");
代码中,我们首先使用getBundle方法获取资源文件的Bundle对象,然后通过getString方法获取消息。在获取时根据不同的情况使用不同方法。
Java中通过Locale类来表示地区和语言信息,我们可以在获取资源文件时指定Locale来本地化信息。Locale类有如下方法获取实例:
// 获取当前默认的Locale
Locale locale = Locale.getDefault();
// 获取一个特定语言环境的Locale
Locale locale2 = new Locale("zh", "CN");
// 获取一个特定语言环境和地区的Locale
Locale locale3 = new Locale("en", "US");
Java中的国际化(I18N)是基于资源绑定机制实现的,主要涉及找到和使用不同语言和地区的消息资源。Java中提供了ResourceBundle类和Locale类用于实现国际化。