Spec-Zone.ru › OpenJDK 21

Класс 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: Расширенный BNF для спецификаций синтаксиса: ABNF
  • RFC 4647: Сопоставление языковых тегов
См. также:
  • 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 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 не выполняется при создании.

Это эквивалентно 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)
 
В весовом списке каждому диапазону языка присваивается значение веса. Значение веса идентично значению "quality value" в 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, имеют неправильный формат
Внешние спецификации
  • 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(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 что и этот объект.
Overrides:
equals в классе Object
Параметры:
obj - объект для сравнения
Возвращает:
true , если значения range и weight этого объекта совпадают со значениями объекта obj; false в противном случае.
См. также:
  • Object.hashCode()
  • HashMap

toString

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

© 1993, 2023, 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/21/docs/api/java.base/java/util/Locale.LanguageRange.html

Spec-Zone.ru

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