Что такое locale java
Что такое locale java
The Locale class implements IETF BCP 47 which is composed of RFC 4647 «Matching of Language Tags» and RFC 5646 «Tags for Identifying Languages» with support for the LDML (UTS#35, «Unicode Locale Data Markup Language») BCP 47-compatible extensions for locale data exchange.
However, the variant field in Locale has historically been used for any kind of variation, not just language variations. For example, some supported variants available in Java SE Runtime Environments indicate alternative cultural behaviors such as calendar type or number script. In BCP 47 this kind of information, which does not identify the language, is supported by extension subtags or private use subtags.
Unicode locale/language extension
UTS#35, «Unicode Locale Data Markup Language» defines optional attributes and keywords to override or refine the default behavior associated with a locale. A keyword is represented by a pair of key and type. For example, «nu-thai» indicates that Thai local digits (value:»thai») should be used for formatting numbers (key:»nu»).
The keywords are mapped to a BCP 47 extension value using the extension key ‘u’ ( UNICODE_LOCALE_EXTENSION ). The above example, «nu-thai», becomes the extension «u-nu-thai».
A well-formed locale key has the form [0-9a-zA-Z] <2>. A well-formed locale type has the form «» | [0-9a-zA-Z] <3,8>(‘-‘ [0-9a-zA-Z]<3,8>)* (it can be empty, or a series of subtags 3-8 alphanums in length). A well-formed locale attribute has the form [0-9a-zA-Z] <3,8>(it is a single subtag with the same form as a locale type subtag).
The Unicode locale extension specifies optional behavior in locale-sensitive services. Although the LDML specification defines various keys and values, actual locale-sensitive service implementations in a Java Runtime Environment might not support any particular Unicode locale attributes or key/type pairs.
Creating a Locale
There are several different ways to create a Locale object.
Что такое locale java
The Locale class implements IETF BCP 47 which is composed of RFC 4647 «Matching of Language Tags» and RFC 5646 «Tags for Identifying Languages» with support for the LDML (UTS#35, «Unicode Locale Data Markup Language») BCP 47-compatible extensions for locale data exchange.
Unicode locale/language extension
UTS#35, «Unicode Locale Data Markup Language» defines optional attributes and keywords to override or refine the default behavior associated with a locale. A keyword is represented by a pair of key and type. For example, «nu-thai» indicates that Thai local digits (value:»thai») should be used for formatting numbers (key:»nu»).
The keywords are mapped to a BCP 47 extension value using the extension key ‘u’ ( UNICODE_LOCALE_EXTENSION ). The above example, «nu-thai», becomes the extension «u-nu-thai».
A well-formed locale key has the form [0-9a-zA-Z] <2>. A well-formed locale type has the form «» | [0-9a-zA-Z] <3,8>(‘-‘ [0-9a-zA-Z]<3,8>)* (it can be empty, or a series of subtags 3-8 alphanums in length). A well-formed locale attribute has the form [0-9a-zA-Z] <3,8>(it is a single subtag with the same form as a locale type subtag).
The Unicode locale extension specifies optional behavior in locale-sensitive services. Although the LDML specification defines various keys and values, actual locale-sensitive service implementations in a Java Runtime Environment might not support any particular Unicode locale attributes or key/type pairs.
Creating a Locale
There are several different ways to create a Locale object.
Builder
Using Locale.Builder you can construct a Locale object that conforms to BCP 47 syntax.
Constructors
The Locale class provides three constructors:
Что такое locale java
The Locale class implements IETF BCP 47 which is composed of RFC 4647 «Matching of Language Tags» and RFC 5646 «Tags for Identifying Languages» with support for the LDML (UTS#35, «Unicode Locale Data Markup Language») BCP 47-compatible extensions for locale data exchange.
Unicode locale/language extension
UTS#35, «Unicode Locale Data Markup Language» defines optional attributes and keywords to override or refine the default behavior associated with a locale. A keyword is represented by a pair of key and type. For example, «nu-thai» indicates that Thai local digits (value:»thai») should be used for formatting numbers (key:»nu»).
The keywords are mapped to a BCP 47 extension value using the extension key ‘u’ ( UNICODE_LOCALE_EXTENSION ). The above example, «nu-thai», becomes the extension «u-nu-thai».code
A well-formed locale key has the form [0-9a-zA-Z] <2>. A well-formed locale type has the form «» | [0-9a-zA-Z] <3,8>(‘-‘ [0-9a-zA-Z]<3,8>)* (it can be empty, or a series of subtags 3-8 alphanums in length). A well-formed locale attribute has the form [0-9a-zA-Z] <3,8>(it is a single subtag with the same form as a locale type subtag).
The Unicode locale extension specifies optional behavior in locale-sensitive services. Although the LDML specification defines various keys and values, actual locale-sensitive service implementations in a Java Runtime Environment might not support any particular Unicode locale attributes or key/type pairs.
Creating a Locale
There are several different ways to create a Locale object.
Builder
Using Locale.Builder you can construct a Locale object that conforms to BCP 47 syntax.
Constructors
The Locale class provides three constructors:
Интернационализация и локализация в Java 8
Взгляните на поддержку Java 8 для интернационализации и локализации приложения.
1. Обзор
Интернационализация-это процесс подготовки заявки для поддержки различных лингвистических, региональных, культурных или политических данных. Это важный аспект любого современного многоязычного приложения.
Для дальнейшего чтения , мы должны знать, что существует очень популярная аббревиатура (вероятно, более популярная, чем фактическое название) для интернационализации – i18n из-за 18 букв между ” i ” и “n”.
Для современных корпоративных программ крайне важно обслуживать людей из разных уголков мира или из разных культурных областей. Различные культурные или языковые регионы определяют не только языковые описания, но и валюту, представление чисел и даже различающийся состав дат и времени.
Например, давайте сосредоточимся на цифрах по конкретным странам. У них есть различные десятичные и тысячные разделители:
Существуют также различные форматы дат:
Более того, в разных странах есть уникальные символы валют:
Важно знать, что даже если страны имеют одну и ту же валюту и символ валюты – например, Франция и Италия, – положение их символа валюты может отличаться.
2. Локализация
В Java в нашем распоряжении есть фантастическая функция под названием Место действия класс.
Это позволяет нам быстро различать культурные локали и соответствующим образом форматировать наш контент. Это необходимо для процесса интернационализации. Так же, как и i18n, локализация также имеет свою аббревиатуру – l10n .
Основная причина использования Locale заключается в том, что все необходимое форматирование, зависящее от локали, может быть доступно без перекомпиляции. Приложение может обрабатывать несколько языков одновременно, поэтому поддержка нового языка проста.
Локали обычно представлены аббревиатурой языка, страны и варианта, разделенной подчеркиванием:
2.1. Поля
Давайте посмотрим на список полей и посмотрим, каковы правила:
Список возможных значений extension отсутствует, но значения должны быть хорошо сформированы BCP-47 подтегами. Ключи и значения всегда преобразуются в нижний регистр.
2.2. Локаль.Строитель
2.3. Конструкторы
Locale имеет три конструктора:
Конструктор с 3 параметрами:
Допустимый вариант должен быть Строкой от 5 до 8 буквенно-цифровых символов или одной цифрой, за которой следуют 3 буквенно-цифровых символа. Мы можем применить “UNIX” к полю variant только через конструктор, поскольку он не соответствует этим требованиям.
Однако есть один недостаток использования конструкторов для создания объектов Locale – мы не можем устанавливать расширения и поля сценариев.
2.4. Константы
2.5. Языковые теги
Вот как мы можем создать Великобританию Locale :
2.6. Доступные Локали
Даже если мы можем создать несколько комбинаций Место действия объекты, мы, возможно, не сможем их использовать.
Важно отметить, что Локали на платформе зависят от тех, которые были установлены в среде выполнения Java.
Давайте проверим, как получить массивы доступных локалей:
После этого мы можем проверить, находится ли наш Locale среди доступных Locales.
Мы должны помнить, что набор доступных локалей различен для различных реализаций платформы Java | и различных областей функциональности .
Полный список поддерживаемых языков доступен на веб-странице Oracle Java SE Development Kit.
2.7. Локаль по умолчанию
Кроме того, мы можем указать Locale по умолчанию, вызвав аналогичный метод setter:
3. Цифры и валюты
Этот раздел относится к числам и валютам для вопросов, которые должны соответствовать различным соглашениям, касающимся конкретных языков.
Для нас интересны два метода:
Давайте рассмотрим пример кода:
Вот еще один пример:
Форматирование валюты включает в себя те же шаги, что и форматирование числа. Единственное отличие заключается в том, что форматер добавляет символ валюты и круглую десятичную часть к двум цифрам.
4. Дата и время
Теперь мы узнаем о форматировании дат и времени, которое, вероятно, сложнее, чем форматирование чисел.
Прежде всего, мы должны знать, что форматирование даты и времени значительно изменилось в Java 8, поскольку оно содержит совершенно новый Date/Time API. Поэтому мы рассмотрим различные классы форматирования.
4.1. DateTimeFormatter
Для лучшего понимания мы должны ознакомиться с возможными шаблонными буквами.
Давайте рассмотрим, например, буквы:
Для форматирования LocalizedDateTime мы можем использовать метод ofLocalizedDateTime(стиль формата datetimestyles) и предоставить предварительно определенный FormatStyle.
4.2. DateFormat и Simpledateformat
Давайте проанализируем способности первого:
Формат даты работает с Датами и имеет три полезных метода:
5. Настройка
Благодаря некоторым хорошим дизайнерским решениям мы не привязаны к шаблону форматирования, зависящему от локали, и можем настроить почти каждую деталь, чтобы полностью удовлетворить вывод.
Давайте рассмотрим короткий пример:
Десятичный формат документация показывает все возможные символы шаблона. Все, что нам сейчас нужно знать, это то, что “000000000.000” определяет начальные или конечные нули,”, “- это разделитель тысяч, а”. ” – десятичная единица.
Также можно добавить символ валюты. Ниже мы видим, что тот же результат может быть достигнут с помощью Dateformatsymbols class:
Как мы видим, класс DecimalFormatSymbols позволяет нам указать любое форматирование чисел, которое мы можем себе представить.
Давайте посмотрим, насколько просто изменить названия дней:
6. Пакеты ресурсов
7. Заключение
В мире, где пользователь может находиться где угодно и говорить на любом языке, возможность применения этих изменений означает, что наши приложения могут быть более интуитивно понятными и понятными большему числу пользователей по всему миру.
Что такое locale java
The Locale class implements IETF BCP 47 which is composed of RFC 4647 «Matching of Language Tags» and RFC 5646 «Tags for Identifying Languages» with support for the LDML (UTS#35, «Unicode Locale Data Markup Language») BCP 47-compatible extensions for locale data exchange.
Unicode locale/language extension
UTS#35, «Unicode Locale Data Markup Language» defines optional attributes and keywords to override or refine the default behavior associated with a locale. A keyword is represented by a pair of key and type. For example, «nu-thai» indicates that Thai local digits (value:»thai») should be used for formatting numbers (key:»nu»).
The keywords are mapped to a BCP 47 extension value using the extension key ‘u’ ( UNICODE_LOCALE_EXTENSION ). The above example, «nu-thai», becomes the extension «u-nu-thai».
A well-formed locale key has the form [0-9a-zA-Z] <2>. A well-formed locale type has the form «» | [0-9a-zA-Z] <3,8>(‘-‘ [0-9a-zA-Z]<3,8>)* (it can be empty, or a series of subtags 3-8 alphanums in length). A well-formed locale attribute has the form [0-9a-zA-Z] <3,8>(it is a single subtag with the same form as a locale type subtag).
The Unicode locale extension specifies optional behavior in locale-sensitive services. Although the LDML specification defines various keys and values, actual locale-sensitive service implementations in a Java Runtime Environment might not support any particular Unicode locale attributes or key/type pairs.
Creating a Locale
There are several different ways to create a Locale object.
Builder
Using Locale.Builder you can construct a Locale object that conforms to BCP 47 syntax.
Constructors
The Locale class provides three constructors: