Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / лекции / лекция 10.ppt
Скачиваний:
112
Добавлен:
17.04.2018
Размер:
123.9 Кб
Скачать

Формат выбора

Если переменная {1} = 1, результат:

On January 1,1999, a hurricane destroyed 1 houses and...

Необходимо: 0 – no houses 1 – one house 2 – 2 houses

...

{1, choice, 0#no houses|1#one house|2#{1}houses}

Формат выбора

Можно указать нестрогую границу: {-̃∞<no houses|0<one house|2≤{1} houses}

String pattern = "On {2,date,long}, {0} destroyed " + "{1,choice,0#no houses|1#one house|2#{1} houses}" + "and caused {3,number,currency} of damage.";

String pattern = "{0} zerstörte am {2,date,long} " +

"{1,choise,0#kein Haus|1#ein Haus|2#{1} Häuser}" + "und richtete einen Schaden von" +

"{3,number,currency} an.";

Методу format передается один и тот же массив с данными

Ресурсы

Все локализованные данные (текст, картинки и пр.) находятся в пакетах ресурсов (Resource Bundle)

Каждый пакет размещается в файле (файл свойств или класс)

Файл именуется по принципу: имя_пакета_язык_страна

Поиск ресурсов

ResourceBundle currentResources = ResourceBundle.getBundle("mystrings", currentLocale);

Последовательность попыток загрузки:

имя_пакета_трс_язык_трс_страна_трс_вариант

имя_пакета_трс_язык_трс_страна

имя_пакета_трс_язык

имя_пакета_рсу_язык_рсу_страна_рсу_вариант

имя_пакета_рсу_язык_рсу_страна

имя_пакета_рса_язык

имя_пакета

Найденные пакеты уровнем «ниже» становятся «родительскими»

Ресурсы - файлы свойств

Файл свойств — обычный текстовый файл, каждая строка которого содержит пару «ключ=значение»

Файл myresources.properties: hello=Hello, world!

ResourceBundle bundle = ResourceBundle.getBundle("myresource s", locale);

System.out.println(bundle.getString("

hello"));

Создание файлов свойств

С ASCII проблем нет

Не ASCII символы должны быть записаны в виде \uxxxx, где xxxx — код Unicode.

Пример myresources_ru.properties:

\u041f\u0440\u0438\u0432\u0435\u0442,

\u041c\u0438\u0440!

Для преобразования файла можно использовать утилиту native2ascii:

native2ascii [-encoding кодировка] <исходный файл> <конечный файл>

Ресурсы — class файлы

Для поддержки ресурсов, не являющихся строками необходимо определить класс (наследник от ResourceBundle)

Примеры названий:

MyProgramResources.java

MyProgramResources_en.java MyProgramResources_en_US.java MyProgramResources_ru_RU.java

Загрузка ресурсов

Загрузка класса ресурсов:

ResourceBundle bundle = ResourceBundle.getBundle("MyProgram Resources", locale);

Сначала производится поиск .class ресурсов, затем .properties

Создание класса ресурсов

public class MyRes_ru_RU extends ListResourceBundle

{

public Object[][] getContents() {return contents;} private static final Object[][] contents =

{

{"backgroundColor", Color.black}, {"defaultPaperSize", new double[]{210,297}},

...

}

}

Использование:

Color backgroundColor = (Color) bundle.getObject("backgroundColor");

double[] paperSize = (double[])bundle.getObject("defaultPaperSize");

Соседние файлы в папке лекции