Spec-Zone .ru
спецификации, руководства, описания, API
|
Есть несколько способов создать a Locale
объект. Независимо от используемого метода создание может быть столь же простым как определение кода языка. Однако, можно далее отличить локаль, устанавливая область (также называемый "страной") и различные коды. Если Вы используете JDK 7 выпусков или позже, можно также определить код сценария и расширения локали Unicode.
Эти четыре способа создать a Locale
объект:
Locale.Builder
class и forLanguageTag
метод был добавлен в Java SE 7 выпусков. LocaleBuilder
Класс Locale.Builder
утилита class может использоваться, чтобы создать a Locale
объект, который приспосабливает BCP IETF 47 синтаксисам. Например, чтобы определить французский язык и страну Канады, Вы могли вызвать Locale.Builder
конструктор и затем объединяет методы метода set в цепочку следующим образом:
Locale aLocale = new Locale.Builder().setLanguage("fr").setRegion("CA").build();
Следующий пример создает Locale
объекты для английского языка в Соединенных Штатах и Великобритании:
Locale bLocale = new Locale.Builder().setLanguage("en").setRegion("US").build(); Locale cLocale = new Locale.Builder().setLanguage("en").setRegion("GB").build();
Заключительный пример создает a Locale
объект для русского языка:
Locale dLocale = new Locale.Builder().setLanguage("ru").setScript("Cyrl").build();
Locale
КонструкторыЕсть три конструктора, доступные в Locale
class для того, чтобы создать a Locale
объект:
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
Следующие примеры создают Locale
объекты для французского языка в Канаде, английского языка в США и Великобритании, и русского языка.
aLocale = new Locale("fr", "CA"); bLocale = new Locale("en", "US"); cLocale = new Locale("en", "GB"); dLocale = new Locale("ru");
Не возможно установить код сценария a Locale
объект в выпуске ранее чем JDK 7.
forLanguageTag
Метод фабрикиЕсли у Вас есть строка тега языка, которая приспосабливает BCP IETF 47 стандартам, можно использовать forLanguageTag(String)
Locale aLocale = Locale.forLanguageTag("en-US"); Locale bLocale = Locale.forLanguageTag("ja-JP-u-ca-japanese");
Locale
КонстантыДля Вашего удобства Locale
class обеспечивает
cLocale = Locale.JAPAN; dLocale = Locale.CANADA_FRENCH;
Когда Вы определяете постоянный язык, часть области Locale
неопределено. Следующие три оператора создают эквивалентный Locale
объекты:
j1Locale = Locale.JAPANESE; j2Locale = new Locale.Builder().setLanguage("ja").build(); j3Locale = new Locale("ja");
Locale
объекты, создаваемые следующими тремя операторами, также эквивалентны:
j4Locale = Locale.JAPAN; j5Locale = new Locale.Builder().setLanguage("ja").setRegion("JP").build(); j6Locale = new Locale("ja", "JP");
Следующие разделы обсуждают код языка и дополнительный сценарий, область, и различные коды.
Код языка является или двумя или тремя строчными буквами, которые соответствуют стандарту ISO 639. Можно найти полный список кодов ISO 639 в
Следующая таблица приводит несколько из кодов языка.
Код языка | Описание |
---|---|
de |
Немецкий язык |
en |
Английский язык |
fr |
Французский язык |
ru |
Русский язык |
ja |
Японский язык |
jv |
Яванский язык |
ko |
Корейский язык |
zh |
Китайский язык |
Код сценария начинается с прописной буквы, сопровождаемой тремя строчными буквами, и соответствует стандарту ISO 15924. Можно найти полный список кодов ISO 15924 в
Следующая таблица приводит несколько из кодов сценария.
Код сценария | Описание |
---|---|
Arab |
Арабский язык |
Cyrl |
Кириллица |
Kana |
Katakana |
Latn |
Латынь |
Есть три метода для того, чтобы получить информацию о сценарии для a Locale
:
getScript()
Locale
объект. Если никакой сценарий не определяется для локали, пустая строка возвращается.getDisplayScript()
getDisplayScript(Locale)
Locale
локализованный, если возможный, для локали.Область (страна), код состоит из или двух или трех прописных букв, которые соответствуют стандарту ISO 3166, или трем числам, которые приспосабливают ООН М. 49 стандарта. Копия кодов может быть найдена в
Следующая таблица содержит несколько демонстрационных стран и кодов области.
Код A-2 | Код A-3 | Числовой Код | Описание |
---|---|---|---|
AU |
AUS |
036 |
Австралия |
BR |
BRA |
076 |
Бразилия |
CA |
CAN |
124 |
Канада |
CN |
CHN |
156 |
Китай |
DE |
DEU |
276 |
Германия |
FR |
FRA |
250 |
Франция |
IN |
IND |
356 |
Индия |
RU |
RUS |
643 |
Российская Федерация |
US |
USA |
840 |
Соединенные Штаты |
Дополнительное variant
код может использоваться, чтобы далее отличить Ваш Locale
. Например, различный код может использоваться, чтобы указать на диалектические различия, которые не покрываются кодом области.
С Java SE 7 выпусков, которые приспосабливают BCP IETF 47 стандартам, различный код, используются определенно, чтобы указать на дополнительные изменения, которые определяют язык или его диалекты. BCP IETF 47 стандартов вводит синтаксические ограничения для различного подтега. Можно видеть список различных кодов (поиск разновидности) в http://www.iana.org/assignments/language-subtag-registry.
Например, Java SE использует различный код, чтобы поддерживать тайский язык. Условно, a NumberFormat
объект для th
и th_TH
локали будут использовать общие арабские формы цифры, или Арабские цифры, чтобы отформатировать тайские числа. Однако, a NumberFormat
для th_TH_TH
локаль использует тайские формы цифры. Выборка от ThaiDigits.java
демонстрирует это:
String outputString = new String(); Locale[] thaiLocale = { new Locale("th"), new Locale("th", "TH"), new Locale("th", "TH", "TH") }; for (Locale locale : thaiLocale) { NumberFormat nf = NumberFormat.getNumberInstance(locale); outputString = outputString + locale.toString() + ": "; outputString = outputString + nf.format(573.34) + "\n"; }
Следующее является снимком экрана этой выборки: