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?