Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Изоляция Специфичных для локали Данных
Используя ListResourceBundle
Домашняя страница > Интернационализация > Изоляция Специфичных для локали Данных

Используя ListResourceBundle

Этот раздел иллюстрирует использование a ListResourceBundle объект с вызванным примером программы ListDemo. Текст, который следует, объясняет каждый шаг, включенный в создание ListDemo программа, наряду с ListResourceBundle подклассы, которые поддерживают это.

1. Создайте Подклассы ListResourceBundle

A ListResourceBundle поддерживается файлом class. Поэтому первый шаг должен создать файл class для каждого поддерживаемого Locale. В ListDemo программируйте базовое имя ListResourceBundle StatsBundle. С тех пор ListDemo поддерживает три Locale объекты, требуются следующие три файла class:

StatsBundle_en_CA.class
StatsBundle_fr_FR.class
StatsBundle_ja_JP.class

StatsBundle class для Японии определяется в исходном коде, который следует. Отметьте, что имя class создается, добавляя язык и коды страны к базовому имени ListResourceBundle. В class двумерное contents массив инициализируется с парами ключ/значение. Ключи являются первым элементом в каждой паре: GDP, Population, и Literacy. Ключи должны быть String объекты и они должны быть тем же самым в каждом class в StatsBundle набор. Значения могут быть любым типом объекта. В этом примере значения два Integer объекты и a Double объект.

import java.util.*;
public class StatsBundle_ja_JP extends ListResourceBundle {
    public Object[][] getContents() {
        return contents;
    }

    private Object[][] contents = {
        { "GDP", new Integer(21300) },
        { "Population", new Integer(125449703) },
        { "Literacy", new Double(0.99) },
    };
}

2. Определите Локаль

ListDemo программа определяет Locale объекты следующим образом:

Locale[] supportedLocales = {
    new Locale("en", "CA"),
    new Locale("ja", "JP"),
    new Locale("fr", "FR")
};

Каждый Locale объект соответствует одному из StatsBundle классы. Например, японцы Locale, который был определен с помощью ja и JP коды, соответствия StatsBundle_ja_JP.class.

3. Создайте ResourceBundle

Создать ListResourceBundle, вызовите getBundle метод. Следующая строка кода определяет базовое имя class (StatsBundle) и Locale:

ResourceBundle stats = ResourceBundle.getBundle("StatsBundle", currentLocale);

getBundle метод ищет class, имя которого начинается StatsBundle и сопровождается языком и кодами страны указанного Locale. Если currentLocale создается с ja и JP коды, getBundle возвраты a ListResourceBundle соответствие class StatsBundle_ja_JP, например.

4. Выберите Локализованные Объекты

Теперь, когда у программы есть a ListResourceBundle для соответствующего Locale, это может выбрать локализованные объекты их ключами. Следующая строка кода получает уровень грамотности, вызывая getObject с Literacy основной параметр. С тех пор getObject возвращает объект, бросьте его к a Double:

Double lit = (Double)stats.getObject("Literacy");

5. Выполните Демонстрационную Программу

ListDemo программа печатает данные, которые она выбирала с getBundle метод:

Locale = en_CA
GDP = 24400
Population = 28802671
Literacy = 0.97

Locale = ja_JP
GDP = 21300
Population = 125449703
Literacy = 0.99

Locale = fr_FR
GDP = 20200
Population = 58317450
Literacy = 0.99

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Поддержка ResourceBundle с Файлами Свойств
Следующая страница: Настройка Загрузки Пакета Ресурса