Платформа J2Me
Шрифт:
Конструктор 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 создает экземпляр соответствующего класса пакета ресурсов для контекста рабочей региональной настройки. Ресурсы любого типа 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-лет. Определяет текущую региональную
*/
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. Логическая схема приложения извлекает франкоязычные ресурсы из объекта, который определяет франкоязычные ресурсы приложения