Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Краткий обзор интернационализации

Содержание


Введение

Глобальный Интернет требует глобальное программное обеспечение - то есть, программное обеспечение, которое может быть разработано независимо от стран или языков его пользователей, и затем локализовано для многократных стран или областей. Платформа Java обеспечивает богатый набор API для того, чтобы разработать глобальные приложения. Эти API интернационализации основаны на стандарте Unicode и включают возможность адаптировать текст, числа, даты, валюту, и определяемые пользователем объекты к соглашениям любой страны.

Этот документ суммирует API интернационализации и функции Платформы Java, Standard Edition. Для того, чтобы кодировать примеры и постепенные инструкции, см. Учебное руководство по Java. Подробные API считаются в Платформе Java, Standard Edition, Спецификации API.

Для дополнительной информации см. домашнюю страницу Интернационализации Java.


Текстовое Представление

Язык программирования Java основан на наборе символов Unicode, и несколько библиотек реализуют стандарт Unicode. Unicode является интернациональным символом установленная норма, которая поддерживает все главные сценарии мира, так же как общие технические символы. Исходная спецификация Unicode определенные символы как фиксировано-width 16-разрядные объекты, но стандарт Unicode была с тех пор изменена, чтобы учесть символы, представление которых требует больше чем 16 битов. Диапазоном точек свода законов является теперь U+0000 к U+10FFFF. Кодирование, определенное стандартом, UTF-16, позволяет представлять все кодовые точки Unicode, используя один или два 16-разрядных модуля.

Примитивная случайная работа типа данных в языке программирования Java является 16-разрядным целым числом без знака, которое может представить кодовую точку Unicode в диапазоне U+0000 к U+FFFF, или элементы кода UTF-16. Различные типы и классы в платформе Java, которые представляют символьные последовательности - случайная работа [], реализации java.lang. CharSequence (такой как Строка class), и реализации java.text. CharacterIterator - являются последовательностями UTF-16. Большинство исходного кода Java пишется в ASCII, 7-разрядной кодировке символов, или ISO-8859-1, 8-разрядной кодировке символов, но преобразовывается в UTF-16 перед обработкой.

Символ class как объектная обертка для типа примитива случайной работы. Символ class также содержит статические методы, такие как isLowerCase () и isDigit () для того, чтобы определить свойства символа. Начиная с J2SE 5, у этих методов есть перегрузки, которые принимают любого случайная работа (который позволяет представление кодовых точек Unicode в диапазоне U+0000 к U+FFFF), или интервал (который позволяет представление всех кодовых точек Unicode).


Идентификация локали и Локализация

Локали

На платформе Java локаль является просто идентификатором для определенной комбинации языка и области. Это не набор специфичных для локали атрибутов. Вместо этого каждый чувствительный к локали class поддерживает свою собственную специфичную для локали информацию. С этим проектом нет никакого различия в том, как пользователь и системные объекты поддерживают их специфичные для локали ресурсы. Оба используют стандартный механизм локализации.

Программы Java не присваиваются единственная глобальная локаль. Все секретные операции локали могут быть явно заданы локаль как параметр. Это значительно упрощает многоязычные программы. В то время как глобальная локаль не осуществляется, локаль значения по умолчанию доступна для программ, которые не хотят управлять локалями явно. Локаль значения по умолчанию также позволяет влиять на поведение всего представления с единственным выбором.

Локали Java действуют как запросы на определенное поведение от другого объекта. Например, французская канадская локаль, которую передают к Календарному объекту, просит, чтобы Календарь вел себя правильно для таможни Квебека. Это до объекта, принимающего, что локаль делает правильную вещь. Если объект не был локализован для определенной локали, он попытается найти "близкое" соответствие с локалью, для которой он был локализован. Таким образом, если бы Календарный объект не был локализован для французской Канады, но был локализован для французского языка вообще, то это использовало бы французскую локализацию вместо этого.

Класс локали

Объект Локали представляет определенную географическую, политическую, или культурную область. Работу, которая требует, чтобы локаль выполнила свою задачу, вызывают чувствительная к локали и использует объект Локали адаптировать информацию для пользователя. Например, отображение числа является секретной операцией локали - число должно быть отформатировано согласно таможне и соглашениям собственной страны пользователя, области, или культуры.

Поддерживаемые Локали

На платформе Java не должно быть единственного набора поддерживаемых локалей, так как каждый class поддерживает свои собственные локализации. Однако, есть непротиворечивое множество локализаций, поддерживаемых классами Платформы Java. Другие реализации платформы Java могут поддерживать различные локали. Поддерживаемые Java Sun Среды выполнения SE получаются в итоге в веб-странице Поддерживаемые Локали.

Локализованные Ресурсы

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

Класс ResourceBundle

class ResourceBundle является абстрактным представлением class контейнеры ресурсов. Программисты создают подклассы ResourceBundle, которые содержат ресурсы для определенной локали. Новые ресурсы могут быть добавлены к экземпляру ResourceBundle, или новые экземпляры ResourceBundle могут быть добавлены к системе, не влияя на код, который использует их. Упаковка ресурсов как классы позволяет разработчикам использовать в своих интересах механизм загрузки class Java, чтобы найти ресурсы.

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

Это позволяет программистам Java писать код, который может:

ResourceBundle. Класс управления

ResourceBundle. Управлением является вложенный class ResourceBundle. Это определяет методы, которые вызовут методы фабрики ResourceBundle.getBundle так, чтобы поведение загрузки пакета ресурса могло быть изменено. Например, специализированные форматы пакета ресурса, такие как XML, могли поддерживаться, переопределяя методы.

Класс ListResourceBundle

ListResourceBundle является абстрактным подклассом ResourceBundle, который управляет ресурсами для локали в удобном и удобном списке.

Класс PropertyResourceBundle

PropertyResourceBundle является конкретным подклассом ResourceBundle, который управляет ресурсами для локали, используя ряд статических строк от файла свойств.


Дата и Время, Обрабатывая

java.util. Дата class представляет определенный момент вовремя с точностью миллисекунды, независимой от часовых поясов и локалей.

Дата class содержит несколько методов для интерпретации дат как год, месяц, день, час, минута, и вторые значения, и для форматирования и парсинга строк даты. Эти методы являются несовместимыми с интернационализацией, и большинство из них поэтому осуждается. Вместо них, приложения должны использовать Календарь class, чтобы преобразовать между датой и полями времени, и DateFormat class, чтобы отформатировать и проанализировать строки даты.

Календарный Класс

Календарем class является абстрактный class, который может преобразовать между моментом времени (представленный как миллисекунды с 0:00:00 GMT, Ян 1, 1970) и рядом целых чисел, представляющих год, месяц, неделю и так далее. GregorianCalendar является конкретным подклассом Календаря, который делает это согласно правилам Григорианского календаря.

Календарь и его подклассы полезны для выполнения различных манипуляций с временными стоимостями. Арифметика может быть выполнена на Календаре поля объекта и получающаяся определенная дата. Календарный объект может произвести все время значения полей, должен был реализовать разовое датой форматирование для определенного языка и календарного стиля. Отошлите к веб-странице Поддерживаемые Календари для деталей.

Класс TimeZone

Абстрактный class TimeZone инкапсулирует смещение часового пояса от GMT (Среднее время по Гринвичу) и возможное смещение летнего времени. Метод фабрики TimeZone.getTimeZone можно вызвать, чтобы получить экземпляр TimeZone какое-то время зональный ID. Метод фабрики TimeZone.getDefault автоматически обнаруживает часовой пояс платформы и возвращает экземпляр TimeZone, который соответствует часовой пояс платформы.

Календарный class и его подклассы используют TimeZone class, чтобы преобразовать между местным временем и UTC, который является внутренним представлением, используемым объектами даты. Большинство программ не должно будет иметь дело с объектами TimeZone непосредственно.


Обработка текста

Форматирование

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

Класс формата

Форматом class является абстрактный class для того, чтобы отформатировать уязвимую информацию локали, такую как даты, времена, сообщения, и числа. Обеспечиваются три основных подкласса: DateFormat, NumberFormat, и MessageFormat. Эти три также обеспечивают собственные подклассы.

Класс DateFormat

Даты и времена сохранены внутренне независимым от локали способом, но должны быть отформатированы так, чтобы они могли быть выведены на экран чувствительным к локали способом. Например, та же самая дата могла бы быть отформатирована как:

class DateFormat является абстрактный class для форматирования и парсинга даты и временных стоимостей независимым от локали способом. У этого есть много статических методов фабрики для того, чтобы получить стандартные форматы времени для данной локали.

Объект DateFormat использует объекты Календаря и TimeZone, чтобы интерпретировать временные стоимости. По умолчанию объект DateFormat для данной локали будет использовать соответствующий Календарный объект для той локали и значения по умолчанию системы объект TimeZone. Программист может переопределить эти варианты при желании.

Класс SimpleDateFormat

class SimpleDateFormat является конкретный class для форматирования и парсинга дат и времена чувствительным к локали способом. Это учитывает форматирование (миллисекунды к тексту), анализируя (текст к миллисекундам), и нормализация.

Класс DateFormatSymbols

class DateFormatSymbols используется, чтобы инкапсулировать локализуемые разовые датой данные форматирования, такие как имена месяцев, имена дней недели, времени суток, и данных часового пояса. Классы DateFormat и SimpleDateFormat оба используют DateFormatSymbols class, чтобы инкапсулировать эту информацию.

Обычно, программисты не будут использовать DateFormatSymbols непосредственно. Скорее они реализуют форматирование с методами фабрики class DateFormat.

Класс NumberFormat

class NumberFormat является абстрактный class для форматирования и парсинга числовых данных. Это содержит много статических методов фабрики для того, чтобы получить различные виды специфичных для локали числовых форматов.

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

Класс DecimalFormat

Числа сохранены внутренне независимым от локали способом, но должны быть отформатированы так, чтобы они могли быть выведены на экран чувствительным к локали способом. Например, при использовании "#,###.00" как образец, то же самое число могло бы быть отформатировано как:

class DecimalFormat, который является конкретным подклассом NumberFormat class, может отформатировать десятичные числа. Программисты обычно не будут инстанцировать этого class непосредственно, но будут использовать обеспеченные методы фабрики.

У class DecimalFormat есть возможность взять строку образца, чтобы определить, как должно быть отформатировано число. Образец определяет атрибуты, такие как точность числа, должны ли начальные нули быть напечатаны, и какие обозначения денежной единицы используются. Строка образца может быть изменена, если программа должна создать пользовательский формат.

Класс DecimalFormatSymbols

class DecimalFormatSymbols представляет набор символов (таких как десятичный разделитель, группирующийся разделитель, и так далее) необходимый DecimalFormat, чтобы отформатировать числа. DecimalFormat создает для себя экземпляр DecimalFormatSymbols от его данных локали. Программист, бывший должный изменить любой из этих символов, может добраться, объект DecimalFormatSymbols от DecimalFormat возражают и затем изменяют это.

Класс ChoiceFormat

class ChoiceFormat является конкретным подклассом NumberFormat class. ChoiceFormat class позволяет программисту присоединять формат к диапазону чисел. Это обычно используется в объекте MessageFormat для того, чтобы обработать множественные числа. См. "раздел" Класса MessageFormat, который следует для получения дополнительной информации.

Класс MessageFormat

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

Если сообщение, созданное из последовательностей строк и чисел, трудно кодируется, оно не может быть преобразовано на другие языки. Например, отметьте различные позиции параметров "3" и "G" в следующих преобразованиях:

class MessageFormat обеспечивает средство произвести связанные сообщения нейтральным языком способом. Объект MessageFormat берет ряд объектов, форматирует их, и затем вставляет отформатированные строки в образец в соответствующих местах.

Класс ParsePosition

class ParsePosition используется Форматом class и его подклассы, чтобы отследить текущую позицию во время парсинга. parseObject () метод в Формате class требует объекта ParsePosition как параметра.

Класс FieldPosition

FieldPosition class используется Форматом class и его подклассы, чтобы идентифицировать поля в отформатированном выводе. Одна версия формата () метод в Формате class требует объекта FieldPosition как параметра.

Чувствительные к локали Строковые Операции

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

Класс сортировально-подборочной машины

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

Класс RuleBasedCollator

RuleBasedCollator class, который является конкретным подклассом Сортировально-подборочной машины class, обеспечивает простую, управляемую данными, табличную сортировально-подборочную машину. Используя RuleBasedCollator, программист может создать специализированную основанную на таблице сортировально-подборочную машину. Например, программист может создать сортировально-подборочную машину, которая проигнорирует (или уведомление) прописные буквы, диакритические знаки, и комбинированные символы Unicode.

Класс CollationElementIterator

CollationElementIterator class используется в качестве iterator, чтобы идти через каждый символ международной строки. Программисты используют iterator, чтобы возвратить приоритет упорядочивания расположенного символа. Приоритет упорядочивания символа, или ключ, определяет, как символ сопоставляется в данном объекте Сортировально-подборочной машины. CollationElementIterator class используется сравниванием () метод RuleBasedCollator class.

Класс CollationKey

Объект CollationKey представляет строку по правилам определенного объекта Сортировально-подборочной машины. Сравнение двух объектов CollationKey возвращает относительный порядок строк, которые они представляют. Используя объекты CollationKey сравнить строки обычно быстрее чем использование Collator.compare () метод. Таким образом, когда строки должны быть сравнены многократно, например сортируя список строк, более эффективно использовать объекты CollationKey.

Класс BreakIterator

BreakIterator class косвенно реализует методы для того, чтобы найти позицию следующих типов границ в строке текста:

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

Класс StringCharacterIterator

StringCharacterIterator class обеспечивает возможность выполнить итерации по строке символов Unicode двунаправленным способом. Этот class использует курсор, чтобы переместиться в пределах диапазона текста, и может возвратить отдельные символы или их индексировать значения. StringCharacterIterator class реализует символ iterator функциональность интерфейса CharacterIterator.

Интерфейс CharacterIterator

Интерфейс CharacterIterator определяет протокол для двунаправленной итерации по символам Unicode. Классы должны реализовать этот интерфейс, если они хотят переместиться в пределах диапазона текста и возвратить отдельные символы Unicode или их индексировать значения. CharacterIterator для того, чтобы искать, полезно, выполняя символьные поискы.

Класс Normalizer

class Normalizer обеспечивает методы, чтобы преобразовать текст Unicode в эквивалентную составленную или анализируемую форму. class поддерживает Формы Нормализации Unicode, определенные стандартом Unicode.


Локаль Чувствительные SPI Служб

Локаль чувствительные услуги, предоставленные классами в java.text и java.util пакетах, могут быть расширены, реализовывая Локаль Чувствительные SPI Служб для локалей Среда выполнения Java, еще не поддерживала. В дополнение к локализованным символам или именам для Валюты, Локали, и классов TimeZone в java.util пакете, реализации следующих классов в java.text пакете могут быть включены с SPI.


Преобразование Кодировки символов

Платформа Java использует Unicode в качестве своей собственной кодировки символов; однако, много программ Java все еще должны обработать текстовые данные в других кодировках. Java поэтому обеспечивает ряд классов, которые преобразовывают много стандартных кодировок символов в и от Unicode. Программы Java, которые должны иметь дело с текстовыми данными не-Unicode, преобразовывают те данные в Unicode, обрабатывают данные как Unicode, затем преобразовывают результат назад во внешнюю кодировку символов. Классы InputStreamReader и OutputStreamWriter обеспечивают методы, которые могут преобразовать между другими кодировками символов и Unicode.

Поддерживаемые Кодировки

InputStreamReader, OutputStreamWriter, и Строковые классы могут преобразовать между Unicode и набором кодировок символов, перечисленных в веб-странице Поддерживаемые Кодировки.

Потоковый ввод-вывод

Платформа Java обеспечивает функции в java.io пакете, чтобы улучшить обработку символьных данных: Классы чтения и Классы для записи, и улучшение к PrintStream class.

Классы чтения и Классы для записи

Читатель и Писатель иерархии class обеспечивают возможность выполнить операции ввода-вывода на символьных потоках. Эти иерархии параллельны InputStream и OutputStream иерархии class, но работают на потоках символов, а не потоках байтов. Символьные потоки облегчают писать программы, которые не зависят от определенной кодировки символов, и поэтому легче интернационализировать. У Классов чтения и Классов для записи также есть возможность преобразовать между Unicode и другими кодировками символов. Пожалуйста, отошлите к Символьному Потоковому документу для получения дополнительной информации о Читателе и Писателе иерархии class.

Класс PrintStream

PrintStream class производит вывод, используя кодировку символов значения по умолчанию системы и разделитель строки. Это изменение позволяет методам, таким как System.out.println () действовать более разумно с данными неASCII.

Пакет набора символов

java.nio.charset пакет обеспечивает основы для преобразования кодировки символов. Приложения могут использовать его классы, чтобы подстроить поведение встроенных символьных преобразователей. Разработчики могут также создать пользовательские преобразователи для кодировок символов, которые не поддерживаются встроенными символьными преобразователями, используя java.nio.charset.spi пакет.


Текстовый Ввод

Входные Методы

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

Платформа Java включает использованию собственных входных методов, обеспеченных операционной системой узла, таких как Windows или Солярис, так же как реализация и использование входных методов, записанных в языке программирования Java.

Входные методы термина не обращаются к методам class языка программирования Java.

Входная Поддержка Метода в Swing

Текстовые компоненты Swing обеспечивают интегрированный пользовательский интерфейс для текстового ввода, используя входные методы. В зависимости от локали используется один из двух входных стилей. Со (встроенным) вводом на месте, стиль, используемый для большинства локалей, входные методы вставляют текст непосредственно в текстовый компонент, в то время как текст составляется. С вводом ниже пятна, стиль, используемый для китайских локалей, используется отдельное окно состава, который располагается автоматически, чтобы быть около точки, где текст должен быть вставлен, фиксируясь.

Приложение, используя текстовые компоненты Swing не должно скоординировать взаимодействие между текстовыми компонентами и ввести методы. Однако, это должно вызвать InputContext.endComposition, когда весь текст должен фиксироваться, такой как тогда, когда документ сохраняется или печатается.

Входная Платформа Метода

Входная платформа метода обеспечивает сотрудничество между компонентами редактирования текста и входными методами во вводе текста. Программисты, которые разрабатывают компоненты редактирования текста или вводят методы, используют эту платформу. Другие разработчики приложений обычно делают только минимальное использование этого. Например, они должны вызвать InputContext.endComposition, когда весь текст должен фиксироваться, такой как тогда, когда документ сохраняется или печатается.

Входная веб-страница Платформы Метода содержит ссылки к документации API и спецификациям.


Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами