Чтение онлайн

на главную

Жанры

Шрифт:

Конструктор No-arg.

*/

public I18NDemoResources_fr_FR

{

super;

/**

Получает содержимое пакета ресурсов.

@возвращает массив пар ключ-значение.

public Object [][] getContents

{

return contends;

}

// Обратите внимание, что статический инициализатор создает

// экземпляры класса Image с другими изображениями, нежели он

// использует в региональной настройке en_US. static

{

try

{

applcon = Image.createlmage("i!8n-fr_FR.png");

}

catch (lOException ioe)

{

System.out.printIn(ioe.getMessage);

io.e.printStackTracel);

}

}

}

В листинге 9.11 показана программа I18NDemo3, которая использует данный набор классов пакетов ресурсов. Метод startAppO данного MID-лета создает экземпляр соответствующего класса пакета ресурсов. Он создает имя класса, связывая базовое имя семейства файлов локализованных ресурсов, I18NDemoResources, с конечной региональной настройкой. С помощью всего лишь нескольких операторов приложение получает доступ ко всем локализованным ресурсам.

Листинг 9.11. Класс I18NDemo3 создает экземпляр соответствующего класса пакета ресурсов для контекста рабочей региональной настройки. Ресурсы любого типа Java данного пакета легко доступны

import javax.microedition.midlet.MIDlet;

import javax.microedition.Icdui.Display;

import javax.microedition.Icdui.Displayable;

import]avax.microedition.Icdui.Form;

import Java.util.Hashtable;

Третья версия приложения IlSNDemo.

Данная версия IlSNDemo использует пакет ресурсов для определения локализованных ресурсов. Приложение определяет текущую региональную настройку и пытается загрузить связанный с ней пакет, содержащий соответствующие локализованные ресурсы. Если оно не может найти эти ресурсы, оно загружает ресурсы U.S. English, представленные языком en_US и страной назначения.

Этот подход наиболее предпочтителен. Легко поддерживаются локализованные ресурсы, отличные от строк.

*/

public class I18NDemo3 extends MIDlet

{

// Региональная застройка, указанная для выполнения

// данного МID-лета.

private String locale;

// Пакет ресурсов, который содержит локализованные ресурсы

// для выполнения данного приложения, private static ResourceBundle bundle;

{

// Displayable. Этот компонент отображается

// на экране.

private HelloForm3 form;

// Экземпляр Display. Этот объект управляет всеми

// компонентами Displayable для данного MID-лета.

private Display display;

// Экземпляр MID-лета.

private static!18NDerao3 instance;

/**

Конструктор No-arg.

*/

public I18NDemo3

{

super;

instance = this;

}

/**

Получает экземпляр данного класса, который существует в действующем приложении.

@выдает экземпляр, созданный при запуске приложения.

*/

public static I18NDemo3 getlnstance

{

if (instance == null)

{

instance — new I18NDemo3;

}

return instance;

}

/**

Получает пакет ресурсов, используемый данным MID-летом.

Этот метод полезен для других классов, которым необходим доступ к локализованным ресурсам приложения.

@выдает локализованные ресурсы MID-лета.

*/

public static ListResourceBundle getResourceBundle

{

return (ListResourceBundle) bundle;

}

/**

Запускает MID-лет. Определяет текущую региональную настройку среды исполнения и использует ее для создания имени пакета локализованных ресурсов. Использует это имя для создания имени класса Java, который затем загружается с помощью Class. Если нет соответствия пакету ресурсов, по умолчанию используется пакет ресурсов U.S. English.

*/

public void startApp

{

// Извлекает региональную настройку из программного обеспечения

// AMS.Региональная настройка должна быть установлена

// до выполнения данного MID-лета.

locale = System.getProperty("microedition.locale");

bundle = null;

cry

{

bundle =

ResourceBundle.getBundle("IlSNDemoResources", locale);

if (bundle == null)

{

bundle =

ResourceBundle.getBundle("IlBNDemoResources", "en_US");

}

}

catch (MissingResourceException mre)

mre.printStackTrace;

}

try

}

/ Создаем элемент Displayable. Получаем локализованную

// String, которая представляет заголовок Form.

String formTitle = (String)

bundle.getObject("title");

form = new HelloForm3(formTitle);

}

catch (MissingResourceException mre)

{

rare.printStackTrace;

}

// Это приложение просто отображает одну форму, созданную ранее, display = Display.getDisplay(this); display.setCurrent(form);

}

/**

Выдает значение, связанное с указанным ключом из списка определяемых пользователем ресурсов MID-лета в файле JAD приложения.

@param key Ключ пары ключ-значение.

@выдает значение, связанное с указанным ключом.

*/

public Object getResource(String key)

}

Object resource = null;

try

{

resource = bundle.getObject(key);

}

catch (MissingResourceException mre)

}

}

return resource;

/**

Выход из MID-лета. Уведомляет реализацию, что она

может прервать работу всех ресурсов приложения.

Реализация вызывает destroyApp.

*/

public void quit

{

notifyDestroyed;

/*

public void destroyApp(boolean destroy)

{

{

public void pauseApp

{

}

}

На рисунке 9.1 показано основное окно, созданное программой I18NDemo3 при ее запуске в региональной настройке en_US. Программа динамически извлекает локализованные ресурсы, описанные в листинге 9.9. На рисунке 9.2 показан экран меню того же приложения, запущенного в региональной настройке fr_FR, которая использует локализованные ресурсы, описанные в листинге 9.10. Код приложения I18NDemo3 абсолютно не изменяется. Он просто динамически определяет контекст региональной настройки при инициализации и загружает соответствующий пакет ресурсов.

Рисунок 9.1. Весь текст, видимый пользователю, локализован. Программа извлекает локализованные англоязычные ресурсы с помощью того же механизма, что и для любой другой региональной настройки

Рисунок 9.2. Логическая схема приложения извлекает франкоязычные ресурсы из объекта, который определяет франкоязычные ресурсы приложения

Популярные книги

Последний Паладин. Том 3

Саваровский Роман
3. Путь Паладина
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 3

Совершенный: пробуждение

Vector
1. Совершенный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Совершенный: пробуждение

Не смей меня... хотеть

Зайцева Мария
1. Не смей меня хотеть
Любовные романы:
современные любовные романы
5.67
рейтинг книги
Не смей меня... хотеть

Перерождение

Жгулёв Пётр Николаевич
9. Real-Rpg
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Перерождение

Инферно

Кретов Владимир Владимирович
2. Легенда
Фантастика:
фэнтези
8.57
рейтинг книги
Инферно

Наследник старого рода

Шелег Дмитрий Витальевич
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Наследник старого рода

Наследник с Меткой Охотника

Тарс Элиан
1. Десять Принцев Российской Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Наследник с Меткой Охотника

Пистоль и шпага

Дроздов Анатолий Федорович
2. Штуцер и тесак
Фантастика:
альтернативная история
8.28
рейтинг книги
Пистоль и шпага

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Экспедиция

Павлов Игорь Васильевич
3. Танцы Мехаводов
Фантастика:
героическая фантастика
альтернативная история
аниме
5.00
рейтинг книги
Экспедиция

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VI

Мятежник

Прокофьев Роман Юрьевич
4. Стеллар
Фантастика:
боевая фантастика
7.39
рейтинг книги
Мятежник

Убивая маску

Метельский Николай Александрович
13. Унесенный ветром
Фантастика:
боевая фантастика
5.75
рейтинг книги
Убивая маску

Совок 4

Агарев Вадим
4. Совок
Фантастика:
попаданцы
альтернативная история
6.29
рейтинг книги
Совок 4