Класс I18NDemo2 использует
Листинг 9.5. Класс I18NDemo2 использует потоки для чтения файлов текстового ресурса. Реализация getResource () теперь отражает новую разработку для извлечения ресурсов из файлов, находящихся в файле JAR приложения
1 import javax.microedition.midlet.MIDlet;
2
3 import javax.microedition.Icdui.Display;
4 import javax.microedition.Icdui.Displayable;
5 import javax.microedition.Icdui.Form;
6
7 import java.io.DatalnputStream;
8 import Java.io.InputStream;
9 import Java.io.InputStreamReader;
10 import Java . io . EOFException;
11 import Java.io.lOException;
12 import Java.io.Reader;
13 import Java.io.UTFDataFormatException;
14 import Java.io.UnsupportedEncodingException;
15
16 import Java.util.Hashtable;
17
18 /**
19 Вторая версия приложения HSNDemo.
20
21 <р>
Эта версия'также дехонстрирует простой способ определения
22 локализованных ресурсов. Она считывает файл, который является
23 частью файла JAR приложения (не файла JAD)
24 для загрузки локализованных ресурсов. Файл
25 состоит из набора пар «ключ-значение», одной на строку,
26 которые представляют локализованные строки.
27 MID-лет должен затем проанализировать содержимое файла
28 и создать внутреннюю хэшированную таблицу для поиска.
29
30 <р>
Этот подход требует слишком много усилий по обработке
31 потока, который содержит файл
32 локализованных ресурсов. Более того, этот подход
33 не отвечает за локализацию ресурсов, которые
34 не являются строками.
35 */
36 public class I18NDemo2 extends MIDlet
37 {
38 // Файл, который содержит ресурсы для
39 // активной локальной настройки.
40 private String resourceFile;
41
42 // Региональная настройка, указанная для выполнения данного
43 // MID-лета.
44 private String locale;
45
46 // Символьная кодировка, установленная по умолчанию,
47 // используемая данной платформой.
48 private String encoding;
49
50 // HashTable, которая содержит локализованные
51 // ресурсы.
52 private Hashtable resources = new Hashtable () ;
53
54 // Displayable. Этот компонент отображается
55 // на экране.
56 private HelloForm2 form;
57
58 // Экземпляр Display. Данный объект управляет всеми
59 // компонентами Displayable данного MID-лета.
60 private Display display;
61
62 // Экземпляр данного MID-лета.
63 private static I18NDemo2 instance;
64
65 /**
66 Конструктор No-arg.
67 */
68 public I18NDemo2()
69 {
70 super();
71 instance = this;
72 }
73
74 /*"
75 Получает экземпляр данного класса, который существует
76 в действующем приложении.
77
78 @выдает экземпляр, созданный при запуске
79 приложения..
80 */
81 public static I18NDemo2 getlnstance ()
82 {
83 return instance;
84 {
85
86 /**
87 Запускает MID-лет. Получает текущее название
88 региональной настройки. Использует его для создания
89 имени файла, который содержит локализованные
90 ресурсы региональной настройки. Файл ресурса
91 находится в файле JAR приложения.
92 */
93 public void startApp()
94 {
95 // Извлекает региональную настройку из программного
96 // обеспечения AMS. Региональная настройка должна быть
97 // установлена до выполнения данного MID-лета.
98 locale =
99 System.getProperty("microedition.locale");
100
101 // Названия файлов локализованных ресурсов, соответствующих
102 // форме: <язык>
_<страна>
.txt.
103 // Создает строку имени файла и передает ее в
104 // метод, который открывает файл и извлекает
105 // содержимое.
106 resourceFile = locale + ".txt";
107 int status = loadResources(resourceFile);
108
109 if (status < 0)
110 {
111 quit();
112 return;
113 }
114
115 // Создаем элемент Displayable. Получаем
116 // локализованную String, которая представляет
117 // заголовок Form.
118 String formTitle = getResource ("title" );
119 form = new HelloForm2(formTitle);
120
121 // Это приложение просто отображает одну .
122 // форму, созданную выше.
123 display = Display.getDisplay (this);
124 display.setCurrent(form);
125 }
126
Содержание раздела