Класс Locale.LanguageRange

Вложенный класс:
Locale
public static final class Locale.LanguageRange
extends Object

Этот класс описывает диапазон языков, определённый в RFC 4647 Сопоставление тегов языков. Диапазон языка — это идентификатор, используемый для выбора тега(ов) языка, удовлетворяющих определённым требованиям, используя механизмы, описанные в Сопоставлении языков. Список, представляющий предпочтения пользователя и состоящий из диапазонов языков, называется списком приоритетов языков.

Существует два типа диапазонов языков: базовые и расширенные. В RFC 4647 синтаксис диапазонов языков выражается в ABNF следующим образом:

basic-language-range    = (1*8ALPHA *("-" 1*8alphanum)) / "*"
extended-language-range = (1*8ALPHA / "*")
                          *("-" (1*8alphanum / "*"))
alphanum                = ALPHA / DIGIT
Например, "en" (английский), "ja-JP" (японский, Япония), "*" (специальный диапазон языка, который соответствует любому тегу языка) — базовые диапазоны языков, тогда как "*-CH" (любые языки, Швейцария), "es-*" (испанский, любые регионы) и "zh-Hant-*" (традиционный китайский, любые регионы) — расширенные диапазоны языков.
С:
1.8
См. также:
Locale.filter(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.util.Locale>, java.util.Locale.FilteringMode), Locale.filterTags(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.lang.String>, java.util.Locale.FilteringMode), Locale.lookup(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.util.Locale>), Locale.lookupTag(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.lang.String>)

Краткое описание полей

Модификатор и тип Поле Описание
static double MAX_WEIGHT

Константа, хранящая максимальное значение веса, 1.0, указывающее, что диапазон языка хорошо подходит для пользователя.

static double MIN_WEIGHT

Константа, хранящая минимальное значение веса, 0.0, указывающее, что диапазон языка не подходит для пользователя.

Краткое описание конструкторов

Конструктор Описание
LanguageRange​(String range)

Создаёт LanguageRange с использованием указанного range.

LanguageRange​(String range, double weight)

Создаёт LanguageRange с использованием указанного range и weight.

Краткое описание методов

Модификатор и тип Метод Описание
boolean equals​(Object obj)

Сравнивает этот объект с указанным объектом.

String getRange()

Возвращает диапазон языка этого LanguageRange.

double getWeight()

Возвращает вес этого LanguageRange.

int hashCode()

Возвращает хэш-код объекта.

static List<Locale.LanguageRange> mapEquivalents​(List<Locale.LanguageRange> priorityList, Map<String,​List<String>> map)

Генерирует новый настраиваемый список приоритетов языков, используя указанные priorityList и map.

static List<Locale.LanguageRange> parse​(String ranges)

Парсит указанный ranges для генерации списка приоритетов языков.

static List<Locale.LanguageRange> parse​(String ranges, Map<String,​List<String>> map)

Парсит указанный ranges для генерации списка приоритетов языков, а затем настраивает список с помощью указанного map.

String toString()

Возвращает информативную строку, представляющую этот объект LanguageRange , состоящую из диапазона языка и веса, если диапазон весовой, а вес меньше максимального веса.

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Поля

MAX_WEIGHT

public static final double MAX_WEIGHT

Постоянная, хранящая максимальное значение веса, 1,0, что указывает на то, что диапазон языка хорошо подходит для пользователя.

См. также:
Значения константных полей

MIN_WEIGHT

public static final double MIN_WEIGHT

Постоянная, хранящая минимальное значение веса, 0,0, что указывает на то, что диапазон языка не подходит для пользователя.

См. также:
Значения константных полей

Конструкторы

LanguageRange

public LanguageRange(String range)

Создает LanguageRange с заданным range. Обратите внимание, что никакая валидация не выполняется по отношению к реестру подметок языка IANA во время построения.

Это эквивалентно LanguageRange(range, MAX_WEIGHT).

Параметры:
range - диапазон языка
Исключения:
NullPointerException - если заданный range является null
IllegalArgumentException - если заданный range не соответствует синтаксису диапазона языка, указанного в RFC 4647

LanguageRange

public LanguageRange(String range,
                     double weight)

Создает LanguageRange с заданным range и weight. Обратите внимание, что никакая валидация не выполняется по отношению к реестру подметок языка IANA во время построения.

Параметры:
range - диапазон языка
weight - значение веса между MIN_WEIGHT и MAX_WEIGHT
Исключения:
NullPointerException - если заданный range является null
IllegalArgumentException - если заданный range не соответствует синтаксису диапазона языка, указанного в RFC 4647, или если заданное weight меньше MIN_WEIGHT или больше MAX_WEIGHT

Методы

getRange

public String getRange()

Возвращает диапазон языка этого LanguageRange.

Возвращает:
диапазон языка.

getWeight

public double getWeight()

Возвращает вес этого LanguageRange.

Возвращает:
значение веса.

parse

public static List<Locale.LanguageRange> parse(String ranges)

Парсит заданный ranges для генерации списка приоритетов языка.

Этот метод выполняет синтаксическую проверку каждого диапазона языка в заданном ranges но не выполняет валидацию с использованием реестра подметок языка IANA.

Задаваемый ranges может иметь один из следующих форматов:

"Accept-Language: ja,en;q=0.4"  (weighted list with Accept-Language prefix)
   "ja,en;q=0.4"                   (weighted list)
   "ja,en"                         (prioritized list)
В взвешенном списке каждому диапазону языка задаётся значение веса. Значение веса идентично "значению качества" в RFC 2616 и выражает, насколько пользователь предпочитает язык. Значение веса указывается после соответствующего диапазона языка, за которым следует ";q=", а значение по умолчанию равно MAX_WEIGHT при его отсутствии.

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

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

Возвращаемый список состоит из диапазонов языка из заданного ranges и их эквивалентов, найденных в реестре подметок языка IANA. Например, если заданный ranges равен "Accept-Language: iw,en-us;q=0.7,en;q=0.3", элементами возвращаемого списка будут:

Range                                   Weight
    "iw" (older tag for Hebrew)             1.0
    "he" (new preferred code for Hebrew)    1.0
    "en-us" (English, United States)        0.7
    "en" (English)                          0.3
Два диапазона языка, "iw" и "he", имеют одинаковый наивысший приоритет в списке. Добавление "he" в список приоритетов языка позволяет методу сопоставления местоположений найти иврит как соответствующий локали (или тег языка), даже если приложение или система предлагают только "he" как поддерживаемую локали (или тег языка).
Параметры:
ranges - список диапазонов языка, разделённых запятыми, или список диапазонов языка в формате заголовка "Accept-Language", определённого в RFC 2616
Возвращает:
список приоритетов языка, состоящий из диапазонов языка, включённых в заданный ranges и их эквивалентов, если они доступны. Список изменяем.
Исключения:
NullPointerException - если ranges равно null
IllegalArgumentException - если диапазон языка или вес, найденный в заданном ranges, имеют неправильный формат

parse

public static List<Locale.LanguageRange> parse(String ranges,
                                               Map<String,​List<String>> map)

Парсит заданный ranges для генерации списка приоритетов языка, а затем настраивает список с помощью заданного map. Этот метод эквивалентен mapEquivalents(parse(ranges), map).

Параметры:
ranges - список диапазонов языка, разделённых запятыми, или список диапазонов языка в формате заголовка "Accept-Language", определённого в RFC 2616
map - карта, содержащая информацию для настройки диапазонов языка
Возвращает:
список приоритетов языка с настройкой. Список изменяем.
Исключения:
NullPointerException - если ranges равно null
IllegalArgumentException - если диапазон языка или вес, найденный в заданном ranges, имеют неправильный формат
См. также:
parse(String), mapEquivalents(java.util.List<java.util.Locale.LanguageRange>, java.util.Map<java.lang.String, java.util.List<java.lang.String>>)

mapEquivalents

public static List<Locale.LanguageRange> mapEquivalents(List<Locale.LanguageRange> priorityList,
                                                        Map<String,​List<String>> map)

Генерирует новый настроенный список приоритетов языка с использованием заданного priorityList и map. Если заданный map пуст, этот метод возвращает копию заданного priorityList.

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

An example of map:
    Key                            Value
      "zh" (Chinese)                 "zh",
                                     "zh-Hans"(Simplified Chinese)
      "zh-HK" (Chinese, Hong Kong)   "zh-HK"
      "zh-TW" (Chinese, Taiwan)      "zh-TW"
Настройка выполняется после изменения с помощью реестра подметок языка IANA.

Например, если список приоритетов языка пользователя состоит из пяти диапазонов языка ("zh", "zh-CN", "en", "zh-TW", и "zh-HK"), новый сгенерированный список приоритетов языка, настроенный с использованием приведённого выше примера карты, будет содержать "zh", "zh-Hans", "zh-CN", "zh-Hans-CN", "en", "zh-TW", и "zh-HK".

"zh-HK" и "zh-TW" не преобразуются в "zh-Hans-HK" ни в "zh-Hans-TW" даже если они включены в список приоритетов языка. В данном примере сопоставление используется для чёткого разграничения упрощённого и традиционного китайского.

Если сопоставление "zh" с "zh" не включено в карту, будет выполнено простое замещение, и настроенный список не будет включать "zh" и "zh-CN".

Параметры:
priorityList - список приоритетов языка пользователя
map - карта, содержащая информацию для настройки диапазонов языка
Возвращает:
новый список приоритетов языка с настройкой. Список изменяем.
Исключения:
NullPointerException - если priorityList является null
См. также:
parse(String, Map)

hashCode

public int hashCode()

Возвращает значение хэш-кода для объекта.

Переопределяет:
hashCode в классе Object
Возвращает:
значение хэш-кода для этого объекта.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

equals

public boolean equals(Object obj)

Сравнивает этот объект с указанным объектом. Результат равен true тогда и только тогда, когда аргумент не является null и является объектом LanguageRange с теми же значениями range и weight , что и у этого объекта.

Переопределяет:
equals в классе Object
Параметры:
obj - объект для сравнения
Возвращает:
true если диапазон языка и вес этого объекта такие же, как у указанного; false в противном случае.
См. также:
Object.hashCode(), HashMap

toString

public String toString()

Возвращает информативное строковое представление этого объекта LanguageRange, состоящее из диапазона языка и веса, если диапазон взвешен, а вес меньше максимального.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого объекта LanguageRange.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Locale.LanguageRange.html

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