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

Интернационализация Примера программы

Если Вы будете смотреть на интернационализировавший исходный код, то Вы заметите, что hardcoded английские сообщения были удалены. Поскольку сообщения больше не hardcoded и потому что код языка определяется во время выполнения, та же самая исполнимая программа может быть распределена во всем мире. Никакая перекомпиляция не требуется для локализации. Программа интернационализировалась.

Можно задаваться вопросом, что произошло с текстом сообщений или что означают язык и коды страны. Не волноваться. Вы узнаете об этих понятиях, поскольку Вы ступаете посредством процесса интернационализации примера программы.

1. Создайте Файлы Свойств

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

В примере файлы свойств хранят переводимый текст сообщений, которые будут выведены на экран. Прежде, чем программа интернационализировалась, английская версия этого текста была hardcoded в System.out.println операторы. Файл свойств значения по умолчанию, который вызывают MessagesBundle.properties, содержит следующие строки:

greetings = Hello
farewell = Goodbye
inquiry = How are you?

Теперь, когда сообщения находятся в файле свойств, они могут быть преобразованы на различные языки. Никакие изменения к исходному коду не требуются. Французский транслятор создал вызванный файл свойств MessagesBundle_fr_FR.properties, который содержит эти строки:

greetings = Bonjour.
farewell = Au revoir.
inquiry = Comment allez-vous?

Заметьте, что значения к правой стороне знака "равно" были преобразованы, но что ключи на левой стороне не были изменены. Эти ключи не должны измениться, потому что на них сошлются, когда Ваша программа выберет преобразованный текст.

Имя файла свойств важно. Например, имя MessagesBundle_fr_FR.properties файл содержит fr код языка и FR код страны. Эти коды также используются, создавая a Locale объект.

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

Locale объект идентифицирует определенный язык и страну. Следующий оператор определяет a Locale для которого язык является английским, и страной являются Соединенные Штаты:

aLocale = new Locale("en","US");

Следующий пример создает Locale объекты для французского языка в Канаде и во Франции:

caLocale = new Locale("fr","CA");
frLocale = new Locale("fr","FR");

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

String language = new String(args[0]);
String country = new String(args[1]);
currentLocale = new Locale(language, country);

Locale объекты являются только идентификаторами. После определения a Locale, Вы передаете это к другим объектам, которые выполняют полезные задачи, такие как форматирование дат и чисел. Эти объекты чувствительны к локали, потому что их поведение изменяется согласно Locale. A ResourceBundle пример чувствительного к локали объекта.

3. Создайте ResourceBundle

ResourceBundle объекты содержат специфичные для локали объекты. Вы используете ResourceBundle объекты изолировать уязвимые данные локали, такие как переводимый текст. В примере программы ResourceBundle поддерживается файлами свойств, которые содержат текст сообщения, который мы хотим вывести на экран.

ResourceBundle создается следующим образом:

messages = ResourceBundle.getBundle("MessagesBundle", currentLocale);

Параметры, которые передают к getBundle метод идентифицирует, к какому файлу свойств получат доступ. Первый параметр, MessagesBundle, обращается к этому семейству файлов свойств:

MessagesBundle_en_US.properties
MessagesBundle_fr_FR.properties
MessagesBundle_de_DE.properties

Locale, который является вторым параметром getBundle, определяет который из MessagesBundle файлы выбираются. Когда Locale создавался, код языка и код страны передали его конструктору. Отметьте, что язык и коды страны следуют MessagesBundle на имена файлов свойств.

Теперь все, что необходимо сделать, получают преобразованные сообщения от ResourceBundle.

4. Выберите текст от ResourceBundle

Файлы свойств содержат пары ключ/значение. Значения состоят из преобразованного текста, который выведет на экран программа. Вы определяете ключи, выбирая преобразованные сообщения от ResourceBundle с getString метод. Например, чтобы получить сообщение, идентифицированное ключом поздравлений, Вы вызываете getString следующим образом:

String msg1 = messages.getString("greetings");

Пример программы использует ключ greetings потому что это отражает контент сообщения, но это, возможно, использовало другого String, такой как s1 или msg1. Только помните, что ключ является hardcoded в программе, и это должно присутствовать в файлах свойств. Если Ваши трансляторы случайно изменяют ключи в файлах свойств, getString не будет в состоянии найти сообщения.

Заключение

Вот именно. Как можно видеть, интернационализируя программу не является слишком трудным. Требуются некоторое планирование и небольшое дополнительное кодирование, но преимущества огромны. Чтобы предоставить Вам краткий обзор процесса интернационализации, пример программы в этом уроке был преднамеренно сохранен простым. Поскольку Вы читаете уроки, которые следуют, Вы узнаете о более усовершенствованных функциях интернационализации языка программирования Java.


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

Предыдущая страница: Выполнение Примера программы
Следующая страница: Контрольный список