java.util.ResourceBundle
是用于国际化(多语言)的库。它能够根据为系统配置的默认区域设置返回消息。当开发适用于世界各地使用的系统时,就可以使用这样的功能。
1.它是如何工作的?
库是基于在属性命名中使用的区域设置和名称后缀读取属性文件。例如,考虑一个名为MyLabels_en_US.properties
的标签文件。 当Locale
设置表示US-English
的en_US
时,此文件由ResourceBundle
程序读取。
区域设置表示具有其属性的区域或位置。Locale
通常用于使用我们的应用程序维护有关客户端的详细信息。 区域设置包含要用于相应位置的位置和语言的属性。 因此,Locale
通过确定用户所属的位置来帮助ResourceBundle
选择正确的标签文件。
2.示例
让我们看看下面的例子,以更清楚地说明这个问题:
MyLabels_en_US.properties
文件有以下内容 -
how_are_you = How are you?
MyLabels_ms_MY.properties
文件有以下内容 -
how_are_you = apa khabar
完整的程序代码如下 -
import java.util.Locale;
import java.util.ResourceBundle;
public class Application {
public static void main(String[] args) {
// en_US
System.out.println("Current Locale: " + Locale.getDefault());
ResourceBundle mybundle = ResourceBundle.getBundle("MyLabels");
// read MyLabels_en_US.properties
System.out.println("Say how are you in US English: " + mybundle.getString("how_are_you"));
Locale.setDefault(new Locale("ms" "MY"));
// read MyLabels_ms_MY.properties
System.out.println("Current Locale: " + Locale.getDefault());
mybundle = ResourceBundle.getBundle("MyLabels");
System.out.println("Say how are you in Malaysian Malaya language: " + mybundle.getString("how_are_you"));
}
}
在执行此代码时,得到以下输出:
Current Locale: en_US
Say how are you in US English: How are you?
Current Locale: ms_MY
Say how are you in Malaysian Malaya language: apa khabar
在输出中可以看到,取决于为Locale
集设置的默认值。此实用程序主要用于Web应用程序,其中Web浏览器有助于了解远程用户的区域设置。这使得尽可能以特定语言显示网站成为可能。