1 / 44

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

Java Advanced. Интернационализация программ. Содержание. Локали Локализация данных Форматирование Работа с текстом Заключение. Введение. Интернационализация программы Написание программы, работающий в различных языковых окружениях Локализация программы

jubal
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Advanced Интернационализация программ

  2. Содержание • Локали • Локализация данных • Форматирование • Работа с текстом • Заключение Java Advanced / Интернационализация программ

  3. Введение • Интернационализация программы • Написание программы, работающий в различных языковых окружениях • Локализация программы • Адаптация интернационализированной программы к конкретным языковым окружением • Пакеты • java.util • java.text Java Advanced / Интернационализация программ

  4. Область действия • Сообщения • Числа • Дата и время • Единицы измерения • Адреса • Номера телефонов • Интерфейс • … Java Advanced / Интернационализация программ

  5. Часть 1 Локали

  6. Локаль • Идентифицирует используемое языковое окружение • Класс Locale Java Advanced / Интернационализация программ

  7. Задание локали • Составные локали • Язык getLanguage() • СтранаgetCountry() • ВариантgetVariant() • Конструкторы класса Locale • Locale(language) – по языку • Locale(language, country) – по языку и стране • Locale(language, country, variant) – по языку стране и варианту Java Advanced / Интернационализация программ

  8. Пример: локализованные данные • en_UK_windows choose the folder containing colour information • en_UK_unix choose the directory containing colour information • en_US choose the folder containing color information • ru_RU_unix Выберите каталог, содержащий цветовую информацию Java Advanced / Интернационализация программ

  9. Работа с локалями • Получение • getAvailableLocales() – список доступных локалей • ПоляUK, US, FRANCE, … • Локаль по умолчанию • getDefault() – получение локали по умолчанию • setDefault(Locale locale) – установка локали по умолчанию • Вывод пользователю • getDisplayName() – имя локали Java Advanced / Интернационализация программ

  10. Часть 2 Локализация данных

  11. Локализация данных • Хранение данных, зависящих от локали в одном месте • Класс ResourceBundle Java Advanced / Интернационализация программ

  12. Операции с данными • Получение данных • getObject(String key) – произвольный объект • getString(String key) – в виде строки • getStringArray(String[] key)– массив строк • Исключение MissingResouceException • Получение информации о ресурсе • getLocale() – локаль • Enumeration<String> getKeys()– ключи Java Advanced / Collections Framework

  13. Пример: Интернационализация • До интернационализации void printUsage() { System.out.println( "Usage: Test [<options>] <commands>\n" + "Options:\n" + " -o write output\n" + "... " ); } Java Advanced / Collections Framework

  14. Пример: Интернационализация • После интернационализациия void printUsage(ResourceBundle bundle) { System.out.println(String.format( "%s Test [%s] %s\n" + "%s\n" + " -o %s\n"+ "...", bundle.getString("usage"), // Usage: bundle.getString("options"), // <options> bundle.getString("commands"), // <commands> bundle.getString("Options"), // Options: bundle.getString("-o") // Write output )); } Java Advanced / Collections Framework

  15. Загрузка ресурсов • Методы • getBundle(String baseName)– по имени • getBundle(baseName, Locale) – по локали • getBundle(baseName, Locale, ClassLoader) – из заданного ClassLoader’а Java Advanced / Collections Framework

  16. Порядок загрузки ресурсов • 1 – указанная локаль 2– локаль по умолчанию • baseName_language1_country1_variant1 • baseName_language1_country1 • baseName_language1 • baseName_language2_country2_variant2 • baseName_language2_country2 • baseName_language2 • baseName Java Advanced / Collections Framework

  17. Пример: загрузка ресурса • Ресурс UsageResouceBundle локаль en_US ResourceBundle bundle = ResourceBundle.getBundle( "UsageResouceBundle", Locale.US ); printUsage(bundle); Java Advanced / Collections Framework

  18. Задание ресурсов • Произвольные • Класс ListResouceBundle • Строковые • Класс PropertyResouceBundle Java Advanced / Collections Framework

  19. ListResouceBundle • Данные задаются в классе • Метод • Object[][] getContents() – локализованные данные Java Advanced / Collections Framework

  20. Пример: ListResouceBundle • Данные для локали en_US public class UsageResouceBundle_en_US extends ListResourceBundle { private static final Object[][] CONTENTS = { {"usage", "Usage:"}, {"options", "<options>"}, {"commands", "<commands>"}, {"Options", "Options:"}, {"-o", "Write output"}, }; protected Object[][] getContents() {return CONTENTS;} } Java Advanced / Collections Framework

  21. PropertyResouceBundle • Данные задаются в .property файле • Структура .property файла key1 = value1 key2 : value2 key3 = very long value \ continues on next line #Comment … Java Advanced / Collections Framework

  22. Пример: PropertyResouceBundle • Данные для локали en_US • UsageResouceBundle_en_US.properties usage =Usage: options =<options> Commands =<commands> Options =Options: -o =Write output Java Advanced / Collections Framework

  23. Часть 3 Форматирование

  24. Форматирование • Вывод данных в соответствии с языковым контекстом • Типы данных • Числа • Время и дата • Сообщения • Пакет java.text Java Advanced / Интернационализация программ

  25. Форматирование чисел • Класс NumberFormat • Методы • format(long)– форматировать целое число • format(double)– форматировать числос плавающей точкой • Number parse(String) – разобрать локализованное число • Исключение • ParseException – ошибка разбора Java Advanced / Интернационализация программ

  26. Стандартные форматировщики чисел • Получение форматировщиков чисел • Методы • getNumberInstance(locale?) – обычные числа • getIntegerIntance(locale?)– целые числа (с округлением) • getPercentInstance(locale?) – проценты • getCurrencyInstance(locale?) – валюта Java Advanced / Интернационализация программ

  27. Свойства форматировщиков чисел • Свойства форматировщиков чисел • Currency currency – тип валюты • maximum(minimum)FractionDigits–число цифр в дробной части • maximum(minimum)IntegerDigits –число цифр в целой части • groupingUsed – группировка разрядов • parseIntegerOnly – разбор только целых чисел Java Advanced / Интернационализация программ

  28. Специальное форматирование чисел • Класс DecimalFormat • Шаблоны форматирования ###,###.### • Класс DecimalFormatSymbols– символы используемые при форматировании • Десятичная запятая • Разделители групп • Бесконечности • … Java Advanced / Интернационализация программ

  29. Специальное форматировани чисел • Класс ChoiceFormat • Конструкторы • ChoiceFormat(double[] limits, String[] formats)–программно • ChoiceFormat(String pattern) –по шаблону • Использование форматов • i-й если limits[i] <= n && n < limits[i + 1] • Формат шаблона • limit # format | limit # format | … Java Advanced / Интернационализация программ

  30. Форматирование времени и дат • Класс DateFormat • Методы • format(date)– форматировать дату/время • Date parse(String) – разобрать локализованную дату/время • Исключение • ParseException – ошибка разбора Java Advanced / Интернационализация программ

  31. Стандартные форматировщики • Получение форматировщиков времени и дат • Методы • getDateInstance([dateStyle[, locale]]) – даты • getTimeIntance([timeStyle[, locale]])– времени • getDateTimeIntance([dateStyle, timeStyle, [locale]]) – даты и времени • Стили • DEFAULT, FULL, LONG, MEDIUM, SHORT Java Advanced / Интернационализация программ

  32. Свойства форматировщиков • Свойства форматировщиков даты/времени • calendar – тип календаря • timeZone – временная зона Java Advanced / Интернационализация программ

  33. Специальное форматирование • Задание правил форматирования • Класс SimpleDateFormat • Шаблоны форматирования yyyy.MM.dd G 'at' HH:mm:ss z • Класс DateFormatSymbols– символы используемые при форматировании • Дни недели • Месяца • … Java Advanced / Интернационализация программ

  34. Форматирование сообщений • Класс MessageFormat • Методы • format(Object[] arguments) – форматировать сообщение • Static format(String pattern, Object … arguments)– форматировать сообщениепо шаблону Java Advanced / Интернационализация программ

  35. Шаблоны сообщений • Вид • шаблон := (текст {параметр})* • параметр := индекс[, тип[, стиль]] • тип := number| date| time| choice • Пример // Aug 2, 2005: $10.80 available MessageFormat.fomat( "{0,date}: {1,number,currency} available“, new Date(), amount ) Java Advanced / Интернационализация программ

  36. Часть 4 Работа с текстом

  37. Сравнение строк • Лексикографический порядок зависит от языка • Класс Collator • implements Comparator<String> • getInstance([locale])– получение экземпляра • Класс RuleBasedCollator • Сравнивает строки в соответствии с заданными правилами Java Advanced / Интернационализация программ

  38. Разбиение текста на элементы • Разбиение текста на символы, слова, предложения и строки зависит от языка • Класс BreakIterator • Создание • get( Character / Word / Line / Sentense )Instance([locale])– получение экземпляра • Методы • first() / last() / next() / previous()– передвижение итератора Java Advanced / Интернационализация программ

  39. Задание текста • Текст читается в кодировке Latin-1 • Программа native2ascii • Перекодирует в (из)Latin-1 • native2ascii [options] [inputfile [outputfile]] • Опции • -reverse– перекодирование из Latin-1 • -encoding encoding– установка кодировки Java Advanced / Интернационализация программ

  40. Пример: сообщения на русском (1) • До перекодировки usage=Применение options=<Опции> Commands=<команды> Options=Опции: -o=Запись выходного файла Java Advanced / Интернационализация программ

  41. Пример: сообщения на русском (2) • После перекодировки usage=\u040f\u0430\u0401\u00ac\u0490\u00ad\u0490\u00ad\u0401\u0490 options=<\u040b\u0407\u0436\u0401\u0401> Commands=<\u0404\u00ae\u00ac\u00a0\u00ad\u00a4\u043b> Options=\u040b\u0407\u0436\u0401\u0401: -o=\u2021\u00a0\u0407\u0401\u0431\u043c \u045e\u043b\u0435\u00ae\u00a4\u00ad\u00ae\u0408\u00ae \u0434\u00a0\u00a9\u00ab\u00a0 Java Advanced / Интернационализация программ

  42. Часть 6 Заключение

  43. Ссылки • Internationalization(guide) // http://java.sun.com/j2se/1.5.0/docs/guide/intl/ • Trail: Internationalization (Java Tutorial) // http://java.sun.com/docs/books/tutorial/i18n/ • Internationalization // http://java.sun.com/j2se/corejava/intl/ • Properties // http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html Java Advanced / Интернационализация программ

  44. Вопросы Java Advanced / Интернационализация программ

More Related