Класс Locale.LanguageRange
- Вложенный класс:
Locale
public static final class Locale.LanguageRange extends Object
Существуют два типа диапазонов языков: базовые и расширенные. В 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
- Внешние спецификации
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final double |
MAX_WEIGHT |
Постоянная, хранящая максимальное значение веса, 1.0, указывающее, что диапазон языка хорошо подходит для пользователя. |
static final double |
MIN_WEIGHT |
Постоянная, хранящая минимальное значение веса, 0.0, указывающее, что диапазон языка не подходит для пользователя. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
LanguageRange |
Создаёт LanguageRange с использованием заданного range. |
LanguageRange |
Создаёт LanguageRange с использованием заданного range и weight. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
String |
getRange() |
Возвращает диапазон языка этого LanguageRange. |
double |
getWeight() |
Возвращает вес этого LanguageRange. |
int |
hashCode() |
Возвращает значение хэш-кода для этого объекта. |
static List |
mapEquivalents |
Создаёт новый настраиваемый список приоритетов языков, используя заданный priorityList и map. |
static List |
parse |
Разбирает заданный ranges для создания списка приоритетов языков. |
static List |
parse |
Разбирает заданный ranges для создания списка приоритетов языков, а затем настраивает список с использованием заданного map. |
String |
toString() |
Возвращает информативное строковое представление этого объекта LanguageRange, состоящее из диапазона языка и веса, если диапазон взвешен, а вес меньше максимального веса. |
Подробное описание полей
MAX_WEIGHT
public static final double MAX_WEIGHT
- См. также:
MIN_WEIGHT
public static final double MIN_WEIGHT
- См. также:
Подробное описание конструкторов
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, имеют неправильный формат - Внешние спецификации
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, имеют неправильный формат - Внешние спецификации
- См. также:
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 - См. также:
hashCode
equals
public boolean equals(Object obj)
null и является объектом LanguageRange, содержащим те же range и weight значения, что и этот объект.toString
© 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