Java我如何将ResourceBundle用于i18n?
就本地区域的消息格式而言,为不同区域的用户创建应用程序可能很困难。Java提供了ResourceBundle有助于国际化我们的应用程序的类。
要为i18n创建资源(第一个i和最后一个n之间有18个字母),我们需要为应用程序支持的每个语言环境创建一个文件。文件名必须以结尾language_COUNTRY.properties。例如,Locale.UK的资源包将为MessagesBundle_en_GB.properties。
加载捆绑包后,我们可以用来bundle.getString(key)从资源捆绑包文件中读取特定消息。
package org.nhooo.example.util;
import java.util.Locale;
import java.util.ResourceBundle;
public class InternationalizationDemo {
public static void main(String[] args) {
//加载Locale.UK语言环境的资源包。资源
//捆绑软件将加载MessagesBundle_en_GB.properties文件。
ResourceBundle bundle =
ResourceBundle.getBundle("MessagesBundle", Locale.UK);
System.out.println("Message in " + Locale.UK + ": " +
bundle.getString("greeting"));
//将默认语言环境更改为印度尼西亚语并获取默认语言环境
//当前语言环境的资源包。
Locale.setDefault(new Locale("in", "ID"));
bundle = ResourceBundle.getBundle("MessagesBundle");
System.out.println("Message in " + Locale.getDefault() + ": " +
bundle.getString("greeting"));
}
}下面是资源束文件的一些示例,这些文件应位于我们的应用程序类路径中,以使ResourceBundle类能够读取它。
MessagesBundle_en_GB.properties
greeting=Hello, how are you?
MessagesBundle_in_ID.properties
greeting=Halo, apa kabar?