Spec-Zone.ru › OpenJDK 24

Класс Locale.LanguageRange

java.lang.Object
java.util.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
Внешние спецификации
  • RFC 4234: Расширенный ABNF для спецификаций синтаксиса: ABNF
  • RFC 4647: Сопоставление тегов языка
См. также:
  • Locale.filter(List, Collection, FilteringMode)
  • Locale.filterTags(List, Collection, FilteringMode)
  • Locale.lookup(List, Collection)
  • Locale.lookupTag(List, Collection)

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

Модификатор и тип Поле Описание
static final double MAX_WEIGHT
Постоянная, хранящая максимальное значение веса, 1.0, указывающее, что диапазон языка хорошо подходит для пользователя.
static final 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 Language Subtag Registry.

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

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

LanguageRange

public LanguageRange(String range, double weight)
Создает объект LanguageRange с заданным range и weight. Обратите внимание, что при создании не выполняется проверка по IANA Language Subtag Registry.
Параметры:
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 Language Subtag Registry.

Задаваемый 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)
 
В весовом списке каждому диапазону языков присваивается значение веса. Значение веса идентично значению "quality value" в RFC 2616 и выражает предпочтение пользователя к языку. Значение веса указывается после соответствующего диапазона языков, за которым следует ";q=", а значение веса по умолчанию равно MAX_WEIGHT, если оно опущено.

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

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

Возвращаемый список состоит из диапазонов языков из заданного ranges и их эквивалентов, найденных в IANA Language Subtag Registry. Например, если заданный 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, имеют неправильный формат
Внешние спецификации
  • RFC 2616: Протокол передачи гипертекста — HTTP/1.1

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, имеют неправильный формат
Внешние спецификации
  • RFC 2616: Протокол передачи гипертекста — HTTP/1.1
См. также:
  • parse(String)
  • mapEquivalents(List, Map)

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 Language Subtag Registry.

Например, если список приоритетов языков пользователя состоит из пяти диапазонов языков ("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 значения, что и этот объект.
Overrides:
equals в классе Object
Parameters:
obj - объект для сравнения
Returns:
true, если range и weight этого объекта совпадают с obj; false в противном случае.
See Also:
  • Object.hashCode()
  • HashMap

toString

public String toString()
Возвращает информативное строковое представление этого объекта LanguageRange, состоящее из диапазона языка и веса, если диапазон взвешен, а вес меньше максимального.
Overrides:
toString в классе Object
Returns:
строковое представление этого объекта LanguageRange.

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/Locale.LanguageRange.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API