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

Поддержка ResourceBundle с Файлами Свойств

Этот раздел ступает через названный пример программы PropertiesDemo.

1. Создайте Файл Свойств Значения по умолчанию

Файл свойств является простым текстовым файлом. Можно создать и поддержать файл свойств с примерно любым текстовым редактором.

Следует всегда создавать файл свойств значения по умолчанию. Имя этого файла начинается с базового имени Вашего ResourceBundle и концы с .properties суффикс. В PropertiesDemo программа базовое имя LabelsBundle. Поэтому файл свойств значения по умолчанию вызывают LabelsBundle.properties. Этот файл содержит следующие строки:

# This is the default LabelsBundle.properties file
s1 = computer
s2 = disk
s3 = monitor
s4 = keyboard

Отметьте, что в предыдущем файле строки комментария начинаются со знака фунта (#). Другие строки содержат пары ключ/значение. Ключ находится на левой стороне знака "равно", и значение справа. Например, s2 ключ, который соответствует значению disk. Ключ произволен. Мы, возможно, вызвали s2 что-то еще, как msg5 или diskID. После того, как определенный, однако, ключ не должен измениться, потому что на него ссылаются в исходном коде. Значения могут быть изменены. Фактически, когда Ваши localizers создают новые файлы свойств, чтобы разместить дополнительные языки, они преобразуют значения на различные языки.

2. Создайте Дополнительные Файлы Свойств как Необходимые

Поддерживать дополнительное Locale, Ваш localizers создаст новый файл свойств, который содержит преобразованные значения. Никакие изменения к Вашему исходному коду не требуются, потому что Ваша программа ссылается на ключи, не значения.

Например, чтобы добавить поддержку немецкого языка, Ваш localizers преобразовал бы значения в LabelsBundle.properties и разместите их в названный файл LabelsBundle_de.properties. Заметьте, что имя этого файла, как этот файла значения по умолчанию, начинается с базового имени LabelsBundle и концы с .properties суффикс. Однако, так как этот файл предназначается для определенного Locale, базовое имя сопровождается кодом языка (de). Содержание LabelsBundle_de.properties следующие:

# This is the LabelsBundle_de.properties file
s1 = Computer
s2 = Platte
s3 = Monitor
s4 = Tastatur

PropertiesDemo пример программы поставляет с тремя файлами свойств:

LabelsBundle.properties
LabelsBundle_de.properties
LabelsBundle_fr.properties

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

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

Locale[] supportedLocales = {
    Locale.FRENCH,
    Locale.GERMAN,
    Locale.ENGLISH
};

Они Locale объекты должны соответствовать файлы свойств, создаваемые в предыдущих двух шагах. Например, Locale.FRENCH объект соответствует LabelsBundle_fr.properties файл. Locale.ENGLISH не имеет никакого соответствия LabelsBundle_en.properties файл, таким образом, файл значения по умолчанию будет использоваться.

4. Создайте ResourceBundle

Этот шаг показывает как Locale, файлы свойств, и ResourceBundle связываются. Создать ResourceBundle, вызовите getBundleметод, определяя базовое имя и Locale:

ResourceBundle labels = ResourceBundle.getBundle("LabelsBundle", currentLocale);

getBundle метод сначала ищет файл class, который соответствует базовое имя и Locale. Если это не может найти файл class, это тогда проверяет на файлы свойств. В PropertiesDemo программа мы отступаем ResourceBundle с файлами свойств вместо файлов class. Когда getBundle метод определяет местоположение корректного файла свойств, он возвращает a PropertyResourceBundle объект, содержащий пары ключ/значение от файла свойств.

5. Выберите Локализованный текст

Получать преобразованное значение от ResourceBundle, вызовите getString метод следующим образом:

String value = labels.getString(key);

String возвращенный getString соответствует определенному ключу. String находится на надлежащем языке, при условии, что файл свойств существует для указанного Locale.

6. Выполните итерации через Все Ключи

Этот шаг является дополнительным. Отлаживая Вашу программу, Вы могли бы хотеть выбрать значения для всех ключей a ResourceBundle. getKeys метод возвращается Enumeration из всех ключей a ResourceBundle. Можно выполнить итерации через Enumeration и выберите каждое значение с getString метод. Следующие строки кода, которые являются от PropertiesDemo программа, покажите, как это делается:

ResourceBundle labels = ResourceBundle.getBundle("LabelsBundle", currentLocale);
Enumeration bundleKeys = labels.getKeys();

while (bundleKeys.hasMoreElements()) {
    String key = (String)bundleKeys.nextElement();
    String value = labels.getString(key);
    System.out.println("key = " + key + ", " + "value = " + value);
}

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

Выполнение PropertiesDemo программа генерирует следующий вывод. Первые три строки показывают значения, возвращенные getString для различного Locale объекты. Программа выводит на экран последние четыре строки, выполняя итерации через ключи с getKeys метод.

Locale = fr, key = s2, value = Disque dur
Locale = de, key = s2, value = Platte
Locale = en, key = s2, value = disk

key = s4, value = Clavier
key = s3, value = Moniteur
key = s2, value = Disque dur
key = s1, value = Ordinateur

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

Предыдущая страница: Подготовка Использовать ResourceBundle
Следующая страница: Используя ListResourceBundle