📜  Java.util.ListResourceBundle类(1)

📅  最后修改于: 2023-12-03 14:42:21.563000             🧑  作者: Mango

Java.util.ListResourceBundle类

java.util.ListResourceBundle类是Java中的一个标准类,它是一个抽象类,用于为多语言应用程序提供本地化资源。

本地化是指将应用程序适应不同的语言环境、文化习惯和地区,以便能够在不同的地方出售或供应。 ListResourceBundle 类可用于指定每种语言和区域设置的应用程序本地化资源。应用程序开发人员可以使用它来定义不同语言版本的文本、颜色、大小或其他任何内容。这个类和其他本地化类一起使得开发人员可以轻松地本地化他们的应用程序。

继承关系

java.lang.Objectjava.util.ResourceBundle ​ ↳ java.util.ListResourceBundle

因此,ListResourceBundle 继承了ResourceBundle类,ResourceBundle类是一个类层次结构,让您可以为想要本地化的每个语言创建一个单独的资源包。用于可移植操作系统接口(POSIX)提供了本地化支持的 ResourceBundle 类可以生成由特定语言的本地化组成的资源包。

构造方法

ListResourceBundle 类有两个构造方法:

  1. ListResourceBundle()——使用一个“键值对”二元组的列表创建一个新的ListResourceBundle。

  2. ListResourceBundle.Control#createControl(String baseName)——创建与给定基本名称和控制对象关联的新的 ListResourceBundle。

运用程序

假设我们正在创建一个多语言的欢迎页面。开始时,我们需要导入所需的包。这里是示例代码:

import java.util.ListResourceBundle;
import java.util.Locale;
import java.util.ResourceBundle;

然后我们定义我们的私有字段:

private static final String[][] contents = { 
    { "hello", "Hello" }, // English Version
    { "goodbye", "Goodbye" }, // English Version
    { "greeting", "Welcome, {0}" } // English Version
};

这个字段包含着我们的本地化资源。在这个示例中,我们有英文版本的欢迎、“再见”和问候语。

现在,我们需要我们的 ListResourceBundle类。定义如下:

public class WelcomePageBundle extends ListResourceBundle {
	
    protected Object[][] getContents() {
        return contents;
    }
}

接下来,还需要包含某个区域设置的资源。例如,法语和中文。要添加法语和中文的欢迎页面,我们只需要再次声明 contents 数组。

private static final String[][] contents = { 
    { "hello", "Bonjour" }, // French Version
    { "goodbye", "Au Revoir" }, // French Version
    { "greeting", "Bienvenue, {0}" }, // French Version
    { "hello", "你好" }, // Simplified Chinese Version
    { "goodbye", "再见" }, // Simplified Chinese Version
    { "greeting", "欢迎, {0}" } // Simplified Chinese Version
};

现在我们准备好创建我们的应用程序了。在创建 ResourceBundle 时,我们将传递我们需要的语言环境。

Locale french = new Locale("fr", "FR");
ResourceBundle bundle = ResourceBundle.getBundle("WelcomePageBundle", french);

最后使用上述Bundle即可从我们预定义的内容中获取本地化资源:

System.out.println(bundle.getString("hello"));
System.out.println(bundle.getString("goodbye"));
System.out.println(bundle.getString("greeting"));

输出将分别是:

Bonjour
Au Revoir
Bienvenue, {0}
总结

Java开发人员需要根据应用所需,使用 java.util.ListResourceBundle类来定义多国语言的文本、颜色、大小或其他任何内容。

ListResourceBundle是一个抽象类,用于将资源捆绑成一个小包。

ListResourceBundle继承了ResourceBundle类,因此您必须继承类并实现 protected Object[][] getContents() 方法以访问数组内容。