鴻蒙OS Locale.LanguageRange

2022-07-28 17:03 更新

Locale.LanguageRange

java.lang.Object

|---java.util.Locale.LanguageRange

  1. public static final class Locale.LanguageRange
  2. extends Object

此類表示 RFC 4647 語言標(biāo)簽匹配中定義的語言范圍。 語言范圍是一個標(biāo)識符,用于通過使用區(qū)域設(shè)置匹配中描述的機制來選擇滿足特定要求的語言標(biāo)簽。 代表用戶偏好并由語言范圍組成的列表稱為語言優(yōu)先級列表。

有兩種類型的語言范圍:基本和擴展。 在 RFC 4647 中,語言范圍的語法用 ABNF 表示如下:

  1. basic-language-range = (1*8ALPHA *("-" 1*8alphanum)) / "*"
  2. extended-language-range = (1*8ALPHA / "*")
  3. *("-" (1*8alphanum / "*"))
  4. alphanum = ALPHA / DIGIT

例如,“en”(英語)、“ja-JP”(日語、日本)、“”(匹配任何語言標(biāo)簽的特殊語言范圍)是基本語言范圍,而“-CH”(任何語言,瑞士)、 “es-”(西班牙語,任何地區(qū))和“zh-Hant-”(繁體中文,任何地區(qū))是擴展的語言范圍。

字段摘要

修飾符喝類型 字段 描述
static double MAX_WEIGHT 保持權(quán)重最大值 1.0 的常數(shù),表示語言范圍非常適合用戶。
static double MIN_WEIGHT 保持權(quán)重最小值 0.0 的常數(shù),表示語言范圍不適合用戶。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
LanguageRange(String range) 使用給定范圍構(gòu)造 LanguageRange。
LanguageRange(String range, double weight) 使用給定的范圍和權(quán)重構(gòu)造 LanguageRange。

方法總結(jié)

修飾符喝類型 方法 描述
boolean equals(Object obj) 將此對象與指定對象進行比較。
String getRange() 返回此 LanguageRange 的語言范圍。
double getWeight() 返回此 LanguageRange 的權(quán)重。
int hashCode() 返回對象的哈希碼值。
static ListLocale.LanguageRange mapEquivalents(ListLocale.LanguageRange priorityList, MapString,ListString map) 使用給定的 priorityList 和映射生成新的自定義語言優(yōu)先級列表。
static ListLocale.LanguageRange parse(String ranges) 解析給定的范圍以生成語言優(yōu)先級列表。
static ListLocale.LanguageRange parse(String ranges, MapString,ListString map) 解析給定范圍以生成語言優(yōu)先級列表,然后使用給定映射自定義列表。
從類 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait

字段詳細(xì)信息

MAX_WEIGHT

public static final double MAX_WEIGHT

保持權(quán)重最大值 1.0 的常數(shù),表示語言范圍非常適合用戶。

MIN_WEIGHT

public static final double MIN_WEIGHT

保持權(quán)重最小值 0.0 的常數(shù),表示語言范圍不適合用戶。

構(gòu)造函數(shù)詳細(xì)信息

LanguageRange

public LanguageRange(String range)

使用給定范圍構(gòu)造 LanguageRange。 請注意,在構(gòu)建時不會針對 IANA 語言子標(biāo)簽注冊表進行驗證。

這相當(dāng)于 LanguageRange(range, MAX_WEIGHT)。

參數(shù):

參數(shù)名稱 參數(shù)描述
range 語言范圍

Throws:

Throw名稱 Throw描述
NullPointerException 如果給定范圍為空

LanguageRange

public LanguageRange(String range, double weight)

使用給定的范圍和權(quán)重構(gòu)造 LanguageRange。 請注意,在構(gòu)建時不會針對 IANA 語言子標(biāo)簽注冊表進行驗證。

參數(shù):

參數(shù)名稱 參數(shù)描述
range 語言范圍
weight 介于 MIN_WEIGHT 和 MAX_WEIGHT 之間的權(quán)重值

Throws:

Throw名稱 Throw描述
NullPointerException 如果給定范圍為空
IllegalArgumentException 如果給定的重量小于 MIN_WEIGHT 或大于 MAX_WEIGHT

方法詳情

getRange

public String getRange()

返回此 LanguageRange 的語言范圍。

返回:

語言范圍。

getWeight

public double getWeight()

返回此 LanguageRange 的權(quán)重。

返回:

weight 值。

parse

public static ListLocale.LanguageRange parse(String ranges)

解析給定的范圍以生成語言優(yōu)先級列表。

此方法對給定范圍內(nèi)的每個語言范圍執(zhí)行語法檢查,但不使用 IANA 語言子標(biāo)簽注冊表進行驗證。

要給出的范圍可以采用以下形式之一:

  1. "Accept-Language: ja,en;q=0.4" (weighted list with Accept-Language prefix)
  2. "ja,en;q=0.4" (weighted list)
  3. "ja,en" (prioritized list)

在加權(quán)列表中,每個語言范圍都有一個權(quán)重值。權(quán)重值與 RFC 2616 中的“質(zhì)量值”相同,它表示用戶對語言的偏好程度。在對應(yīng)的語言范圍后面加上“;q=”指定權(quán)重值,省略時默認(rèn)權(quán)重值為MAX_WEIGHT。

與加權(quán)列表不同,優(yōu)先列表中的語言范圍根據(jù)其優(yōu)先級按降序排列。第一語言范圍的優(yōu)先級最高,最符合用戶的偏好。

在任何一種情況下,語言范圍都會根據(jù)優(yōu)先級或權(quán)重在語言優(yōu)先級列表中按降序排序。如果一個語言范圍多次出現(xiàn)在給定的范圍中,則只有第一個包含在語言優(yōu)先級列表中。

返回的列表由給定范圍中的語言范圍及其在 IANA 語言子標(biāo)簽注冊表中找到的等價物組成。例如,如果給定的范圍是“Accept-Language: iw,en-us;q=0.7,en;q=0.3”,則要返回的列表中的元素是:

  1. Range Weight
  2. "iw" (older tag for Hebrew) 1.0
  3. "he" (new preferred code for Hebrew) 1.0
  4. "en-us" (English, United States) 0.7
  5. "en" (English) 0.3

兩個語言范圍“iw”和“he”在列表中具有相同的最高優(yōu)先級。 通過將“he”添加到用戶的語言優(yōu)先級列表中,即使應(yīng)用程序或系統(tǒng)僅提供“he”作為支持的語言環(huán)境(或語言標(biāo)簽),語言環(huán)境匹配方法也可以找到希伯來語作為匹配的語言環(huán)境(或語言標(biāo)簽)。

參數(shù):

參數(shù)名稱 參數(shù)描述
ranges 以逗號分隔的語言范圍列表或以 RFC 2616 中定義的“Accept-Language”標(biāo)頭形式的語言范圍列表

返回:

語言優(yōu)先級列表,包括給定范圍內(nèi)的語言范圍及其等效的語言范圍(如果有)。 該列表是可修改的。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 ranges 為空
IllegalArgumentException 如果在給定范圍內(nèi)找到的語言范圍或權(quán)重格式不正確

parse

public static ListLocale.LanguageRange parse(String ranges, MapString,ListString map)

解析給定范圍以生成語言優(yōu)先級列表,然后使用給定映射自定義列表。 該方法等價于 mapEquivalents(parse(ranges), map)。

參數(shù):

參數(shù)名稱 參數(shù)描述
ranges 以逗號分隔的語言范圍列表或以 RFC 2616 中定義的“Accept-Language”標(biāo)頭形式的語言范圍列表
map 包含自定義語言范圍信息的 map

返回:

帶有自定義的語言優(yōu)先級列表。 該列表是可修改的。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 ranges 為空
IllegalArgumentException 如果在給定范圍內(nèi)找到的語言范圍或權(quán)重格式不正確

mapEquivalents

public static ListLocale.LanguageRange mapEquivalents(ListLocale.LanguageRange priorityList, MapString,ListString map)

使用給定的 priorityList 和映射生成新的自定義語言優(yōu)先級列表。 如果給定映射為空,則此方法返回給定 priorityList 的副本。

在 map 中,鍵表示語言范圍,而值是它的等價物列表。 '*' 不能在 map 中使用。 每個等效語言范圍具有與其原始語言范圍相同的權(quán)重值。

  1. An example of map:
  2. Key Value
  3. "zh" (Chinese) "zh",
  4. "zh-Hans"(Simplified Chinese)
  5. "zh-HK" (Chinese, Hong Kong) "zh-HK"
  6. "zh-TW" (Chinese, Taiwan) "zh-TW"

使用 IANA 語言子標(biāo)簽注冊表修改后執(zhí)行自定義。

例如,如果用戶的語言優(yōu)先級列表由五個語言范圍(“zh”、“zh-CN”、“en”、“zh-TW”和“zh-HK”)組成,則新生成的語言優(yōu)先級列表 使用上面的 map 示例自定義將由“zh”、“zh-Hans”、“zh-CN”、“zh-Hans-CN”、“en”、“zh-TW”和“zh-HK”組成 .

“zh-HK”和“zh-TW”不會轉(zhuǎn)換為“zh-Hans-HK”或“zh-Hans-TW”,即使它們包含在語言優(yōu)先級列表中。 在這個例子中,映射用于清楚地區(qū)分簡體中文和繁體中文。

如果映射中不包含“zh”-to-“zh”映射,將執(zhí)行簡單替換,自定義列表將不包含“zh”和“zh-CN”。

參數(shù):

參數(shù)名稱 參數(shù)描述
priorityList 用戶的語言優(yōu)先級列表
map 包含自定義語言范圍信息的 map

返回:

具有自定義功能的新語言優(yōu)先級列表。 該列表是可修改的。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 priorityList 為空

hashCode

public int hashCode()

返回對象的哈希碼值。

覆蓋:

類 Object 中的 hashCode

返回:

此對象的哈希碼值。

equals

public boolean equals(Object obj)

將此對象與指定對象進行比較。 當(dāng)且僅當(dāng)參數(shù)不為 null 并且是包含與此對象相同的范圍和權(quán)重值的 LanguageRange 對象時,結(jié)果才為 true。

覆蓋:

類 Object 中的等于

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 比較的對象

返回:

如果此對象的范圍和權(quán)重與 obj 相同,則為 true; 否則為 false。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號