Spec-Zone .ru
спецификации, руководства, описания, API
|
public final class Locale extends Object implements Cloneable, Serializable
Locale
объект представляет определенную географическую, политическую, или культурную область. Работа, которая требует a Locale
выполнять его задачу вызывают чувствительное к локали и использует Locale
адаптировать информацию для пользователя. Например, отображение числа является секретной операцией локали — число должно быть отформатировано согласно таможне и соглашениям собственной страны пользователя, области, или культуры. Locale
класс реализует идентификаторы, взаимозаменяемые BCP 47 (BCP IETF 47, "Теги для Идентификации Языков"), с поддержкой LDML (UTS#35, "Язык разметки Данных Локали Unicode") BCP совместимые с 47 расширения для обмена данными локали.
A Locale
объект логически состоит из полей, описанных ниже.
Locale
всегда канонизирует к нижнему регистру.[a-zA-Z]{2,8}
. Отметьте, что это не полное производство языка BCP47, так как оно исключает extlang. Они не необходимы, так как современные трехбуквенные коды языка заменяют их.Locale
всегда канонизирует к случаю заголовка (первая буква является верхним регистром, и остальная часть букв нижний регистр).[a-zA-Z]{4}
Locale
всегда канонизирует к верхнему регистру.[a-zA-Z]{2} | [0-9]{3}
Locale
. То, где есть две или больше разновидности, оценивает каждое указание на ее собственную семантику, эти значения должны быть упорядочены важностью с самым важным, первым, разделенным подчеркиванием (' _ '). Различное поле является чувствительным к регистру.Однако, различное поле в Locale
исторически использовался для любого вида изменения, не только изменений языка. Например, некоторые поддерживаемые разновидности, доступные в Java Среды выполнения SE, указывают на альтернативные культурные поведения, такие как сценарий числа или тип календаря. В BCP 47 этих видов информации, которая не идентифицирует язык, поддерживаются подтегами расширения или подтегами личного пользования.
SUBTAG (('_'|'-') SUBTAG)*
где SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8}
. (Отметьте: BCP 47 только дефис использования ('-') как разделитель, это более снисходительно).Locale
реализуйте семантику и синтаксис BCP 47 подтегов расширения и подтеги личного пользования. Расширения являются нечувствительными к регистру, но Locale
канонизирует все ключи расширения и оценивает нижнему регистру. Отметьте, что у расширений не может быть пустых значений.[0-9a-zA-Z]
. У правильно построенных значений есть форма SUBTAG ('-' SUBTAG)*
где для ключа 'x' SUBTAG = [0-9a-zA-Z]{1,8}
и для других ключей SUBTAG = [0-9a-zA-Z]{2,8}
(то есть, 'x' позволяет одно-символьные подтеги).Locale
класс не обеспечивает функций проверки допустимости. Builder
только проверки, если отдельное поле удовлетворяет синтаксическое требование (правильно построено), но не проверяют значения непосредственно. См. Locale.Builder
для деталей. UTS#35, "Язык разметки Данных Локали Unicode" определяет дополнительные атрибуты и ключевые слова, чтобы переопределить или совершенствовать поведение по умолчанию, связанное с локалью. Ключевое слово представляется парой ключа и типа. Например, "тайский ню" указывает, что тайские локальные цифры (оцените: "тайский язык"), должен использоваться для того, чтобы отформатировать числа (ключ: "ню").
Ключевые слова отображаются на BCP 47 значений расширения, используя ключ 'u' расширения (UNICODE_LOCALE_EXTENSION
). Вышеупомянутый пример, "тайский ню", становится расширением "u-nu-thai".code
Таким образом, когда a Locale
объект содержит атрибуты локали Unicode и ключевые слова, getExtension(UNICODE_LOCALE_EXTENSION)
возвратит Строку, представляющую эту информацию, например, "тайского ню". Locale
класс также обеспечивает getUnicodeLocaleAttributes()
, getUnicodeLocaleKeys()
, и getUnicodeLocaleType(java.lang.String)
которые позволяют Вам получать доступ к атрибутам локали Unicode и парам ключа/типа непосредственно. Когда представлено как строка, атрибуты списков Расширения Локали Unicode в алфавитном порядке, сопровождаемый последовательностями ключа/типа с ключами, перечисленными в алфавитном порядке (порядок подтегов, включающих тип ключа, фиксируется, когда тип определяется),
У правильно построенного ключа локали есть форма [0-9a-zA-Z]{2}
. У правильно построенного типа локали есть форма "" | [0-9a-zA-Z]{3,8} ('-' [0-9a-zA-Z]{3,8})*
(это может быть пусто, или серия подтегов 3-8 alphanums в длине). У правильно построенного атрибута локали есть форма [0-9a-zA-Z]{3,8}
(это - единственный подтег с той же самой формой как подтег типа локали).
Расширение локали Unicode определяет дополнительное поведение в чувствительных к локали службах. Хотя спецификация LDML определяет различные ключи и значения, фактические чувствительные к локали реализации службы в среде выполнения Java не могли бы поддерживать определенные атрибуты локали Unicode или манипулировать/вводить пар.
Есть несколько различных способов создать a Locale
объект.
Используя Locale.Builder
можно создать a Locale
объект, который приспосабливает BCP 47 синтаксисам.
Locale
класс предоставляет трем конструкторам:
Эти конструкторы позволяют Вам создавать aLocale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
Locale
объект с языком, страной и разновидностью, но невозможно определить сценарий или расширения. Метод forLanguageTag(java.lang.String)
создает a Locale
объект для правильно построенного BCP 47 тегов языка.
Locale
класс обеспечивает много удобных констант, которые можно использовать, чтобы создать Locale
объекты для обычно используемых локалей. Например, следующее создает a Locale
объект для Соединенных Штатов:
Locale.US
Как только Вы создали a Locale
можно запросить это для информации о себе. Использовать getCountry
получить страну (или область) код и getLanguage
получить код языка. Можно использовать getDisplayCountry
получить имя страны, подходящей для того, чтобы вывести на экран пользователю. Точно так же можно использовать getDisplayLanguage
получить имя языка, подходящего для того, чтобы вывести на экран пользователю. Интересно, getDisplayXXX
методы самостоятельно чувствительны к локали и имеют две версии: тот, который использует локаль по умолчанию и тот, который использует локаль, определенную как параметр.
Платформа Java обеспечивает много классов, которые выполняют секретные операции локали. Например, NumberFormat
класс форматирует числа, валюту, и проценты чувствительным к локали способом. Классы такой как NumberFormat
имейте несколько методов удобства для того, чтобы создать объект по умолчанию того типа. Например, NumberFormat
класс обеспечивает эти три метода удобства для того, чтобы они создали значение по умолчанию NumberFormat
объект:
У каждого из этих методов есть две разновидности; один с явной локалью и один без; последнее использование локаль по умолчанию:NumberFormat.getInstance() NumberFormat.getCurrencyInstance() NumberFormat.getPercentInstance()
ANumberFormat.getInstance(myLocale) NumberFormat.getCurrencyInstance(myLocale) NumberFormat.getPercentInstance(myLocale)
Locale
механизм для того, чтобы идентифицировать вид объекта (NumberFormat
) то, что требуется добраться. Локаль является только механизмом для того, чтобы идентифицировать объекты, не контейнер для объектов непосредственно. Чтобы поддержать совместимость с существующим использованием, конструкторы Локали сохраняют свое поведение до версии 1.7 среды выполнения Java. То же самое в значительной степени истинно для toString
метод. Таким образом объекты Локали могут продолжать использоваться, как они были. В частности клиенты, которые анализируют вывод toString на язык, страну, и различные поля, могут продолжать делать так (хотя этому строго обескураживают), хотя у различного поля будет дополнительная информация в нем, если сценарий или расширения будут присутствовать.
Кроме того, BCP 47 вводит ограничения синтаксиса, которые не налагаются конструкторами Локали. Это означает, что преобразования между некоторыми Локалями и BCP 47 тегов языка не могут быть сделаны, не теряя информацию. Таким образом toLanguageTag
не может представить состояние локалей, язык которых, страна, или разновидность не соответствуют BCP 47.
Из-за этих проблем рекомендуется, чтобы клиенты перешли далеко от построения несоответствующих локалей и использовали forLanguageTag
и Locale.Builder
API вместо этого. Клиенты, требующие строкового представления полной локали, могут тогда всегда полагаться toLanguageTag
с этой целью.
По причинам совместимости две несоответствующих локали обрабатываются как особые случаи. Они - ja_JP_JP и th_TH_TH. Они плохо формируются в BCP 47, так как разновидности слишком коротки. Чтобы ослабить миграцию к BCP 47, они обрабатываются особенно во время конструкции. Эти два случая (и только они) заставляют конструктора генерировать расширение, все другие значения ведут себя точно, как они сделали до Java 7.
Java использовал ja_JP_JP, чтобы представить японский язык как использующийся в Японии вместе с японским Имперским календарем. Это - теперь представимое использование расширения локали Unicode, определяя ключ ca локали Unicode (для "календаря") и тип japanese. Когда конструктора Локали вызывают с параметрами "ja", "JP", "JP", расширение "u-ca-japanese" автоматически добавляется.
Java использовал th_TH_TH, чтобы представить тайский язык как использующийся в Таиланде вместе с тайскими цифрами. Это - также теперь представимое использование расширения локали Unicode, определяя ключ nu локали Unicode (для "числа") и значение thai. Когда конструктора Локали вызывают с параметрами "th", "TH", "TH", расширение "u-nu-thai" автоматически добавляется.
Во время сериализации writeObject пишет все поля в поток вывода, включая расширения.
Во время десериализации readResolve добавляет расширения как описано в Особых случаях, только для этих двух случаев th_TH_TH и ja_JP_JP.
Конструктор локали всегда преобразовывал три кода языка в их ранее, obsoleted формы: he отображается на iw, yi отображается на ji, и id отображается на in. Это продолжает иметь место, чтобы не повредить назад совместимость.
API, добавленные в 1.7 картах между старыми и новыми кодами языка, поддерживая старые коды, внутренние к Локали (так, чтобы getLanguage
и toString
отразите старый код), но использование новых кодов в BCP 47 API тега языка (так, чтобы toLanguageTag
отражает новый). Это сохраняет эквивалентность между Локалями независимо от того, которые кодируют, или API используется, чтобы создать их. Механизм поиска пакета ресурса Java по умолчанию также реализует это отображение, так, чтобы ресурсы можно было назвать, используя любое соглашение, см. ResourceBundle.Control
.
Конструкторы Локали всегда определяли, что язык и страна param быть двумя символами в длине, хотя практически они приняли любую длину. Спецификация была теперь ослаблена, чтобы позволить коды языка двух - восьми символов и страны (область) коды двух - трех символов, и в частности трехбуквенные коды языка и трехразрядные коды области как определено в Реестре Подтега Языка IANA. Для совместимости реализация все еще не налагает ограничение длины.
Locale.Builder
, ResourceBundle
, Format
, NumberFormat
, Collator
, Сериализированная ФормаМодификатор и Тип | Класс и Описание |
---|---|
static class |
Локаль. Разработчик
Builder используется, чтобы создать экземпляры Locale от значений, сконфигурированных методами set. |
static class |
Локаль. Категория
Перечисление для категорий локали.
|
Модификатор и Тип | Поле и Описание |
---|---|
static Locale |
КАНАДА
Полезная константа для страны.
|
static Locale |
CANADA_FRENCH
Полезная константа для страны.
|
static Locale |
КИТАЙ
Полезная константа для страны.
|
static Locale |
КИТАЙСКИЙ ЯЗЫК
Полезная константа для языка.
|
static Locale |
АНГЛИЙСКИЙ ЯЗЫК
Полезная константа для языка.
|
static Locale |
ФРАНЦИЯ
Полезная константа для страны.
|
static Locale |
ФРАНЦУЗСКИЙ ЯЗЫК
Полезная константа для языка.
|
static Locale |
НЕМЕЦКИЙ ЯЗЫК
Полезная константа для языка.
|
static Locale |
ГЕРМАНИЯ
Полезная константа для страны.
|
static Locale |
ИТАЛЬЯНСКИЙ ЯЗЫК
Полезная константа для языка.
|
static Locale |
ИТАЛИЯ
Полезная константа для страны.
|
static Locale |
ЯПОНИЯ
Полезная константа для страны.
|
static Locale |
ЯПОНСКИЙ ЯЗЫК
Полезная константа для языка.
|
static Locale |
КОРЕЯ
Полезная константа для страны.
|
static Locale |
КОРЕЙСКИЙ ЯЗЫК
Полезная константа для языка.
|
static Locale |
PRC
Полезная константа для страны.
|
static char |
PRIVATE_USE_EXTENSION
Ключ для расширения личного пользования ('x').
|
static Locale |
КОРЕНЬ
Полезная константа для корневой локали.
|
static Locale |
SIMPLIFIED_CHINESE
Полезная константа для языка.
|
static Locale |
ТАЙВАНЬ
Полезная константа для страны.
|
static Locale |
TRADITIONAL_CHINESE
Полезная константа для языка.
|
static Locale |
ВЕЛИКОБРИТАНИЯ
Полезная константа для страны.
|
static char |
UNICODE_LOCALE_EXTENSION
Ключ для расширения локали Unicode ('u').
|
static Locale |
US
Полезная константа для страны.
|
Конструктор и Описание |
---|
Locale(String language)
Создайте локаль из кода языка.
|
Locale(String language, String country)
Создайте локаль из языка и страны.
|
Locale(String language, String country, String variant)
Создайте локаль из языка, страны и разновидности.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
clone()
Переопределения Cloneable.
|
boolean |
equals(Object obj)
Возвращает true, если эта Локаль равна другому объекту.
|
static Locale |
forLanguageTag(String languageTag)
Возвращает локаль для указанного BCP IETF 47 строк тега языка.
|
static Locale[] |
getAvailableLocales()
Возвращает массив всех установленных локалей.
|
Строка |
getCountry()
Возвращает код страны/области для этой локали, которая должна или быть пустой строкой, прописной ISO 3166 2-буквенный код, или ООН М. 49 3-разрядного кода.
|
static Locale |
getDefault()
Получает текущую стоимость локали по умолчанию для этого экземпляра виртуальной машины Java.
|
static Locale |
getDefault(Locale.Category category)
Получает текущую стоимость локали по умолчанию для указанной Категории для этого экземпляра виртуальной машины Java.
|
Строка |
getDisplayCountry()
Возвращает имя для страны локали, которая является подходящей для дисплея пользователю.
|
Строка |
getDisplayCountry(Locale inLocale)
Возвращает имя для страны локали, которая является подходящей для дисплея пользователю.
|
Строка |
getDisplayLanguage()
Возвращает имя для языка локали, который является подходящим для дисплея пользователю.
|
Строка |
getDisplayLanguage(Locale inLocale)
Возвращает имя для языка локали, который является подходящим для дисплея пользователю.
|
Строка |
getDisplayName()
Возвращает имя для локали, которая является подходящей для дисплея пользователю.
|
Строка |
getDisplayName(Locale inLocale)
Возвращает имя для локали, которая является подходящей для дисплея пользователю.
|
Строка |
getDisplayScript()
Возвращает имя для сценарий локали, который является подходящим для дисплея пользователю.
|
Строка |
getDisplayScript(Locale inLocale)
Возвращает имя для сценария локали, который является подходящим для дисплея пользователю.
|
Строка |
getDisplayVariant()
Возвращает имя для различного кода локали, который является подходящим для дисплея пользователю.
|
Строка |
getDisplayVariant(Locale inLocale)
Возвращает имя для различного кода локали, который является подходящим для дисплея пользователю.
|
Строка |
getExtension(char key)
Возвращает расширение (или личное пользование) значение, связанное с указанным ключом, или нулем, если нет никакого расширения, связанного с ключом.
|
Set<Character> |
getExtensionKeys()
Возвращает набор ключей расширения, связанных с этой локалью, или пустым множеством, если у этого нет никаких расширений.
|
Строка |
getISO3Country()
Возвращает трехбуквенное сокращение для страны этой локали.
|
Строка |
getISO3Language()
Возвращает трехбуквенное сокращение языка этой локали.
|
static String[] |
getISOCountries()
Возвращает список всех 2-буквенных кодов страны, определенных в ISO 3166.
|
static String[] |
getISOLanguages()
Возвращает список всех 2-буквенных кодов языка, определенных в ISO 639.
|
Строка |
getLanguage()
Возвращает код языка этой Локали.
|
Строка |
getScript()
Возвращает сценарий для этой локали, которая должна или быть пустой строкой или ISO 15924 4-буквенный код сценария.
|
Set<String> |
getUnicodeLocaleAttributes()
Возвращает набор unicode атрибутов локали, связанных с этой локалью, или пустым множеством, если у этого нет никаких атрибутов.
|
Set<String> |
getUnicodeLocaleKeys()
Возвращает набор ключей локали Unicode, определенных этой локалью, или пустым множеством, если у этой локали нет ни одного.
|
Строка |
getUnicodeLocaleType(String key)
Возвращает тип локали Unicode, связанный с указанным ключом локали Unicode для этой локали.
|
Строка |
getVariant()
Возвращает различный код для этой локали.
|
int |
hashCode()
Переопределите хэш-код.
|
static void |
setDefault(Locale.Category category, Locale newLocale)
Устанавливает локаль по умолчанию для указанной Категории для этого экземпляра виртуальной машины Java.
|
static void |
setDefault(Locale newLocale)
Устанавливает локаль по умолчанию для этого экземпляра виртуальной машины Java.
|
Строка |
toLanguageTag()
Возвращает правильно построенный BCP IETF 47 тегов языка, представляющих эту локаль.
|
Строка |
toString()
Возвращает строковое представление этого
Locale объект, состоя из языка, страны, разновидности, сценария, и расширений как указано ниже: |
public static final Locale ENGLISH
public static final Locale FRENCH
public static final Locale GERMAN
public static final Locale ITALIAN
public static final Locale JAPANESE
public static final Locale KOREAN
public static final Locale CHINESE
public static final Locale SIMPLIFIED_CHINESE
public static final Locale TRADITIONAL_CHINESE
public static final Locale FRANCE
public static final Locale GERMANY
public static final Locale ITALY
public static final Locale JAPAN
public static final Locale KOREA
public static final Locale CHINA
public static final Locale PRC
public static final Locale TAIWAN
public static final Locale UK
public static final Locale US
public static final Locale CANADA
public static final Locale CANADA_FRENCH
public static final Locale ROOT
public static final char PRIVATE_USE_EXTENSION
getExtension(char)
, Locale.Builder.setExtension(char, String)
, Постоянные Значения полейpublic static final char UNICODE_LOCALE_EXTENSION
getExtension(char)
, Locale.Builder.setExtension(char, String)
, Постоянные Значения полейpublic Locale(String language, String country, String variant)
Отметьте:
language
- Альфа ISO 639 2 или альфа 3 кода языка, или язык подтегируют до 8 символов в длине. См. Locale
описание класса о допустимых значениях языка.country
- Альфа ISO 3166 2 кода страны или ООН М. 49 числовых 3 кодов области. См. Locale
описание класса о допустимых значениях страны.variant
- Любое произвольное значение, используемое, чтобы указать на изменение a Locale
. См. Locale
описание класса для деталей.NullPointerException
- брошенный, если каким-либо параметром является нуль.public Locale(String language, String country)
Отметьте:
language
- Альфа ISO 639 2 или альфа 3 кода языка, или язык подтегируют до 8 символов в длине. См. Locale
описание класса о допустимых значениях языка.country
- Альфа ISO 3166 2 кода страны или ООН М. 49 числовых 3 кодов области. См. Locale
описание класса о допустимых значениях страны.NullPointerException
- брошенный, если любым параметром является нуль.public Locale(String language)
Отметьте:
language
- Альфа ISO 639 2 или альфа 3 кода языка, или язык подтегируют до 8 символов в длине. См. Locale
описание класса о допустимых значениях языка.NullPointerException
- брошенный, если параметром является нуль.public static Locale getDefault()
Виртуальная машина Java устанавливает локаль по умолчанию во время запуска, основанного на среде узла. Это используется многими чувствительными к локали методами, если никакая локаль явно не определяется. Это может быть изменено, используя setDefault
метод.
public static Locale getDefault(Locale.Category category)
Виртуальная машина Java устанавливает локаль по умолчанию во время запуска, основанного на среде узла. Это используется многими чувствительными к локали методами, если никакая локаль явно не определяется. Это может быть изменено, используя setDefault (Локаль. Категория, Локаль) метод.
category
- указанная категория, чтобы получить локаль по умолчаниюNullPointerException
- если категория является нулемsetDefault(Locale.Category, Locale)
public static void setDefault(Locale newLocale)
Если есть менеджер безопасности, checkPermission
метод вызывают с a PropertyPermission("user.language", "write")
разрешение перед локалью по умолчанию изменяется.
Виртуальная машина Java устанавливает локаль по умолчанию во время запуска, основанного на среде узла. Это используется многими чувствительными к локали методами, если никакая локаль явно не определяется.
Начиная с изменения локали по умолчанию может влиять на многие различные области функциональности, этот метод должен только использоваться, если вызывающая сторона готовится повторно инициализировать чувствительный к локали код, работающий в пределах той же самой виртуальной машины Java.
Устанавливая локаль по умолчанию с этим методом, все локали по умолчанию для каждой Категории также устанавливаются в указанную локаль по умолчанию.
newLocale
- новая локаль по умолчаниюSecurityException
- если менеджер безопасности существует и checkPermission
метод не позволяет работу.NullPointerException
- если newLocale
нульSecurityManager.checkPermission(java.security.Permission)
, PropertyPermission
public static void setDefault(Locale.Category category, Locale newLocale)
Если есть менеджер безопасности, его checkPermission метод вызывают с PropertyPermission ("user.language", "запишите"), разрешение прежде, чем локаль по умолчанию будет изменена.
Виртуальная машина Java устанавливает локаль по умолчанию во время запуска, основанного на среде узла. Это используется многими чувствительными к локали методами, если никакая локаль явно не определяется.
Начиная с изменения локали по умолчанию может влиять на многие различные области функциональности, этот метод должен только использоваться, если вызывающая сторона готовится повторно инициализировать чувствительный к локали код, работающий в пределах той же самой виртуальной машины Java.
category
- указанная категория, чтобы установить локаль по умолчаниюnewLocale
- новая локаль по умолчаниюSecurityException
- если менеджер безопасности существует и его checkPermission метод не позволяет работу.NullPointerException
- если категория и/или newLocale являются нулемSecurityManager.checkPermission(java.security.Permission)
, PropertyPermission
, getDefault(Locale.Category)
public static Locale[] getAvailableLocales()
LocaleServiceProvider
реализации. Это должно содержать, по крайней мере, a Locale
экземпляр, равный Locale.US
.public static String[] getISOCountries()
Отметьте: Locale
класс также поддерживает другие коды для страны (область), такие как 3-буквенная числовая ООН М. 49 кодов области. Поэтому, список, возвращенный этим методом, не содержит ВСЕ допустимые коды, которые могут использоваться, чтобы создать Локали.
public static String[] getISOLanguages()
Отметьте:
Locale
класс также поддерживает коды языка до 8 символов в длине. Поэтому, список, возвращенный этим методом, не содержит ВСЕ допустимые коды, которые могут использоваться, чтобы создать Локали. public String getLanguage()
Отметьте: ISO 639 не является устойчивым стандартом — коды некоторых языков изменились. Конструктор локали распознает и новое и старые коды для языков, коды которых изменились, но эта функция всегда возвращает старый код. Если Вы хотите проверить на определенный язык, код которого изменился, не делать
if (locale.getLanguage().equals("he")) // BAD! ...Вместо этого сделайте
if (locale.getLanguage().equals(new Locale("he").getLanguage())) ...
getDisplayLanguage()
public String getScript()
getDisplayScript()
public String getCountry()
getDisplayCountry()
public String getVariant()
getDisplayVariant()
public String getExtension(char key)
[0-9A-Za-z]
. Ключи являются нечувствительными к регистру, таким образом, например 'z' и 'Z' представляют то же самое расширение.key
- ключ расширенияIllegalArgumentException
- если ключ не правильно построенPRIVATE_USE_EXTENSION
, UNICODE_LOCALE_EXTENSION
public Set<Character> getExtensionKeys()
public Set<String> getUnicodeLocaleAttributes()
public String getUnicodeLocaleType(String key)
key
- ключ локали UnicodeIllegalArgumentException
- если ключ не правильно построенNullPointerException
- если key
нульpublic Set<String> getUnicodeLocaleKeys()
public final String toString()
Locale
объект, состоя из языка, страны, разновидности, сценария, и расширений как указано ниже: язык + "_" + страна + "_" + (разновидность + "_#" | "#") + сценарий + "-" + расширенияЯзык всегда является нижним регистром, страна всегда является верхним регистром, сценарий всегда является случаем заголовка, и расширения всегда являются нижним регистром. Расширения и подтеги личного пользования будут в каноническом порядке как объяснено в
toLanguageTag()
. Когда у локали нет ни сценария, ни расширений, результатом является то же самое как в Java 6 и предшествующий.
Если и язык и поля страны будут отсутствовать, то эта функция возвратит пустую строку, даже если разновидность, сценарий, или поле расширений будут присутствовать (у Вас не может быть локали с только разновидностью, разновидность должна сопровождать правильно построенный язык или код страны).
Если сценарий или расширения присутствуют и различны, отсутствует, никакое подчеркивание не добавляется перед "#".
Это поведение разрабатывается, чтобы поддерживать отладку и быть совместимым с предыдущим использованием toString
тот ожидаемый язык, страна, и различные поля только. Чтобы представить Локаль как Строку в целях обмена, использовать toLanguageTag()
.
Примеры:
toString
в классе Object
getDisplayName()
, toLanguageTag()
public String toLanguageTag()
Если это Locale
имеет язык, страну, или разновидность, которая не удовлетворяет BCP IETF, 47 требований синтаксиса тега языка, этот метод обрабатывает эти поля как описано ниже:
Язык: Если язык будет пуст, или не правильно построен (например или "e2"), то это будет испускаться как "und" (Неопределенный).
Страна: Если страна не будет правильно построена (например "12" или "США"), то это будет опущено.
Разновидность: Если разновидность правильно построена, каждый подсегмент (разграниченный '-' или '_') испускается как подтег. Иначе:
[0-9a-zA-Z]{1,8}
(например "WIN" или "Oracle_JDK_Standard_Edition"), первый плохо сформированный подсегмент и все следующее будет добавлено к подтегу личного пользования. Первый добавленный подтег будет "lvariant", сопровождаемым подсегментами в порядке, разделенном дефисом. Например, "x-lvariant-WIN", "Oracle-x-lvariant-JDK-Standard-Edition". [0-9a-zA-Z]{1,8}
, разновидность будет усеченной и проблематичный подсегмент, и весь после подсегментов будет опущен. Если остаток будет непуст, то он будет испускаться как подтег личного пользования как выше (даже если остаток, окажется, будет правильно построен). Например, "Solaris_isjustthecoolestthing" испускается как "x-lvariant-Solaris", не как "solaris".Специальные Преобразования: Java поддерживает некоторые старые представления локали, включая осуждаемые коды языка ISO, для совместимости. Этот метод выполняет следующие преобразования:
Отметьте: Хотя тег языка, создаваемый этим методом, правильно построен (удовлетворяет требования синтаксиса, определенные BCP IETF 47 спецификаций), это - не обязательно допустимый BCP 47 тегов языка. Например,
new Locale("xx", "YY").toLanguageTag();возвратит "xx-YY", но язык подтегируют "xx", и "YY" подтега области недопустимы, потому что они не регистрируются в Реестре Подтега Языка IANA.
forLanguageTag(String)
public static Locale forLanguageTag(String languageTag)
Если указанный тег языка содержит какие-либо плохо сформированные подтеги, первое, такой подтег и весь после подтегов игнорируются. Сравнитесь с Locale.Builder.setLanguageTag(java.lang.String)
который выдает исключение в этом случае.
Следующие преобразования выполняются:
Locale loc; loc = Locale.forLanguageTag("en-US-x-lvariant-POSIX"); loc.getVariant(); // returns "POSIX" loc.getExtension('x'); // returns null loc = Locale.forLanguageTag("de-POSIX-x-URP-lvariant-Abc-Def"); loc.getVariant(); // returns "POSIX_Abc_Def" loc.getExtension('x'); // returns "urp"
Locale.forLanguageTag("ar-aao").getLanguage(); // returns "aao" Locale.forLanguageTag("en-abc-def-us").toString(); // returns "abc_US"
Locale.forLanguageTag("ja-JP-x-lvariant-JP").toLanguageTag(); // returns "ja-JP-u-ca-japanese-x-lvariant-JP" Locale.forLanguageTag("th-TH-x-lvariant-TH").toLanguageTag(); // returns "th-TH-u-nu-thai-x-lvariant-TH"
This implements the 'Language-Tag' production of BCP47, and so supports grandfathered (regular and irregular) as well as private use language tags. Stand alone private use tags are represented as empty language and extension 'x-whatever', and grandfathered tags are converted to their canonical replacements where they exist.
Grandfathered tags with canonical replacements are as follows:
grandfathered tag | modern replacement | |
---|---|---|
art-lojban | jbo | |
i-ami | ami | |
i-bnn | bnn | |
i-hak | hak | |
i-klingon | tlh | |
i-lux | lb | |
i-navajo | nv | |
i-pwn | pwn | |
i-tao | tao | |
i-tay | tay | |
i-tsu | tsu | |
no-bok | nb | |
no-nyn | nn | |
sgn-BE-FR | sfb | |
sgn-BE-NL | vgt | |
sgn-CH-DE | sgg | |
zh-guoyu | cmn | |
zh-hakka | hak | |
zh-min-nan | nan | |
zh-xiang | hsn |
Grandfathered tags with no modern replacement will be converted as follows:
grandfathered tag | converts to | |
---|---|---|
cel-gaulish | xtg-x-cel-gaulish | |
en-GB-oed | en-GB-x-oed | |
i-default | en-x-i-default | |
i-enochian | und-x-i-enochian | |
i-mingo | see-x-i-mingo | |
zh-min | nan-x-zh-min |
For a list of all grandfathered tags, see the IANA Language Subtag Registry (search for "Type: grandfathered").
Note: there is no guarantee that toLanguageTag
and forLanguageTag
will round-trip.
languageTag
- the language tagNullPointerException
- if languageTag
is null
toLanguageTag()
,
Locale.Builder.setLanguageTag(String)
public String getISO3Language() throws MissingResourceException
MissingResourceException
- Throws MissingResourceException if
three-letter language abbreviation is not available for this locale.public String getISO3Country() throws MissingResourceException
The ISO 3166-1 codes can be found on-line.
MissingResourceException
- Throws MissingResourceException if the
three-letter country abbreviation is not available for this locale.public final String getDisplayLanguage()
public String getDisplayLanguage(Locale inLocale)
NullPointerException
- if inLocale
is null
public String getDisplayScript()
public String getDisplayScript(Locale inLocale)
NullPointerException
- if inLocale
is null
public final String getDisplayCountry()
public String getDisplayCountry(Locale inLocale)
NullPointerException
- if inLocale
is null
public final String getDisplayVariant()
public String getDisplayVariant(Locale inLocale)
NullPointerException
- if inLocale
is null
public final String getDisplayName()
language (script, country, variant)depending on which fields are specified in the locale. If the language, sacript, country, and variant fields are all empty, this function returns the empty string.
language (country)
language (variant)
script (country)
country
public String getDisplayName(Locale inLocale)
language (script, country, variant)depending on which fields are specified in the locale. If the language, script, country, and variant fields are all empty, this function returns the empty string.
language (country)
language (variant)
script (country)
country
NullPointerException
- if inLocale
is null
public Object clone()
public int hashCode()
hashCode
in class Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals
in class Object
obj
- the reference object with which to compare.Object.hashCode()
,
HashMap
For further API reference and developer documentation, see
Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.