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

Контрольный список

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

Идентифицируйте Культурно Зависимые Данные

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

Изолируйте Переводимый текст в Пакетах Ресурса

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

String buttonLabel = "OK";
// ...
JButton okButton = new JButton(buttonLabel);

См., что раздел Изолирует Специфичные для локали Данные для деталей.

Соглашение с Составными сообщениями

Составные сообщения содержат переменные данные. В сообщении "Диск содержит 1100 файлов." целое число 1100 может измениться. Это сообщение трудно преобразовать, потому что позиция целого числа в предложении не является тем же самым на всех языках. Следующее сообщение не переводимо, потому что порядок элементов предложения является hardcoded связью:

Integer fileCount;
// ...
String diskStatus = "The disk contains " + fileCount.toString() + " files";

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

Числа формата и Валюты

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

Double amount;
TextField amountField;
// ...
String displayAmount = amount.toString();
amountField.setText(displayAmount);

Следует заменить предыдущий код подпрограммой, которая форматирует число правильно. Язык программирования Java обеспечивает несколько классов, которые форматируют числа и валюты. Эти классы обсуждаются в Числах раздела и Валютах.

Даты формата и Времена

Дата и форматы времени не соглашаются с областью и языком. Если Ваш код содержит операторы как следующий, Вы должны изменить его:

Date currentDate = new Date();
TextField dateField;
// ...
String dateString = currentDate.toString();
dateField.setText(dateString);

Если Вы используете форматирующие дату классы, Ваше приложение может вывести на экран даты и времена правильно во всем мире. Для примеров и инструкций, см. Даты раздела и Времена.

Используйте Свойства Символа Unicode

Следующий код пытается проверить, что символ является буквой:

char ch;
// This code is incorrect
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))

Не упустите код как это, потому что он не будет работать с языками кроме английского языка. Например, if оператор пропускает символ ü в немецком слове Grün.

Character методы сравнения используют стандарт Unicode, чтобы идентифицировать символьные свойства. Таким образом следует заменить предыдущий код следующим:

char ch;
// ...
if (Character.isLetter(ch))

Для получения дополнительной информации по Character методы сравнения, см., что раздел Проверяет Символьные Свойства.

Сравните Строки Должным образом

Сортируя текст Вы часто сравниваете строки. Если текст выводится на экран, недопустимо использовать методы сравнения String class. Программа, которая не интернационализировалась, могла бы сравнить строки следующим образом:

String target;
String candidate;
// ...
if (target.equals(candidate)) {
// ...
if (target.compareTo(candidate) < 0) {
// ...

String.equals и String.compareTo методы выполняют двоичные сравнения, которые неэффективны, сортируя на большинстве языков. Вместо этого следует использовать Collator class, который описывается в Строках Сравнения раздела.

Преобразуйте текст неUnicode

Символы в языке программирования Java кодируются в Unicode. Если Ваше приложение обрабатывает текст не-Unicode, Вы, возможно, должны были бы преобразовать это в Unicode. Для получения дополнительной информации см., что раздел Преобразовывает текст неUnicode.


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

Предыдущая страница: Интернационализация Примера программы
Следующая страница: Установка Локали