- 封闭类:
Locale
有两种类型的语言范围:基本和扩展。在 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
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final double保持权重最大值 1.0 的常量,表示语言范围非常适合用户。static final double保持权重最小值 0.0 的常量,表示语言范围不适合用户。 -
构造方法总结
构造方法构造方法描述LanguageRange(String range) 使用给定的range构造一个LanguageRange。LanguageRange(String range, double weight) 使用给定的range和weight构造一个LanguageRange。 -
方法总结
修饰符和类型方法描述boolean将此对象与指定对象进行比较。getRange()返回此LanguageRange的语言范围。double返回此LanguageRange的权重。inthashCode()返回对象的哈希码值。static List<Locale.LanguageRange>mapEquivalents(List<Locale.LanguageRange> priorityList, Map<String, List<String>> map) 使用给定的priorityList和map生成新的自定义语言优先级列表。static List<Locale.LanguageRange>解析给定的ranges以生成语言优先级列表。static List<Locale.LanguageRange>解析给定的ranges以生成语言优先级列表,然后使用给定的map自定义列表。toString()返回此LanguageRange对象的信息字符串表示形式,如果范围已加权且权重小于最大权重,则由语言范围和权重组成。
-
字段详细信息
-
MAX_WEIGHT
public static final double MAX_WEIGHT保持权重最大值 1.0 的常量,表示语言范围非常适合用户。- 参见:
-
MIN_WEIGHT
public static final double MIN_WEIGHT保持权重最小值 0.0 的常量,表示语言范围不适合用户。- 参见:
-
-
构造方法详细信息
-
LanguageRange
使用给定的range构造一个LanguageRange。请注意,在构建时没有针对 IANA 语言子标签注册表进行任何验证。这相当于
LanguageRange(range, MAX_WEIGHT)。- 参数:
range- 语言范围- 抛出:
NullPointerException- 如果给定的range是nullIllegalArgumentException- 如果给定的range不符合 RFC 4647 中提到的语言范围的语法
-
LanguageRange
使用给定的range和weight构造一个LanguageRange。请注意,在构建时没有针对 IANA 语言子标签注册表进行任何验证。- 参数:
range- 语言范围weight- 介于MIN_WEIGHT和MAX_WEIGHT之间的权重值- 抛出:
NullPointerException- 如果给定的range是nullIllegalArgumentException- 如果给定的range不符合 RFC 4647 中提到的语言范围的语法,或者如果给定的weight小于MIN_WEIGHT或大于MAX_WEIGHT
-
-
方法详情
-
getRange
返回此LanguageRange的语言范围。- 返回:
- 语言范围。
-
getWeight
public double getWeight()返回此LanguageRange的权重。- 返回:
- 权重值。
-
parse
解析给定的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- 以逗号分隔的语言范围列表或以 RFC 2616 中定义的“Accept-Language”标头形式的语言范围列表- 返回:
-
语言优先级列表,由给定
ranges中包含的语言范围及其等效语言范围(如果有)组成。该列表是可修改的。 - 抛出:
NullPointerException- 如果ranges为空IllegalArgumentException- 如果在给定的ranges中找到的语言范围或权重格式错误
-
parse
解析给定的ranges以生成语言优先级列表,然后使用给定的map自定义列表。此方法等效于mapEquivalents(parse(ranges), map)。- 参数:
ranges- 以逗号分隔的语言范围列表或以 RFC 2616 中定义的“Accept-Language”标头形式的语言范围列表map- 包含自定义语言范围信息的map- 返回:
- 具有自定义的语言优先级列表。该列表是可修改的。
- 抛出:
NullPointerException- 如果ranges为空IllegalArgumentException- 如果在给定的ranges中找到的语言范围或权重格式错误- 参见:
-
mapEquivalents
public static List <Locale.LanguageRange > mapEquivalents(List <Locale.LanguageRange > priorityList, Map <String , List <String >> map) 使用给定的priorityList和map生成新的自定义语言优先级列表。如果给定的map为空,则此方法返回给定的priorityList的副本。在map中,一个键代表一个语言范围,而一个值是它的等价列表。
'*'不能在map中使用。每个等效语言范围与其原始语言范围具有相同的权重值。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"),则使用上述map示例自定义的新生成的语言优先级列表将包含"zh"、"zh-Hans"、"zh-CN","zh-Hans-CN"、"en"、"zh-TW"和"zh-HK"。"zh-HK"和"zh-TW"不会转换为"zh-Hans-HK"或"zh-Hans-TW",即使它们包含在语言优先级列表中也是如此。在这个例子中,使用映射来明确区分简体中文和繁体中文。如果
"zh"-to-"zh"映射不包含在map中,将执行简单替换,自定义列表将不包含"zh"和"zh-CN"。- 参数:
priorityList- 用户的语言优先列表map- 包含自定义语言范围信息的map- 返回:
- 具有自定义功能的新语言优先级列表。该列表是可修改的。
- 抛出:
NullPointerException- 如果priorityList是null- 参见:
-
hashCode
public int hashCode()返回对象的哈希码值。 -
equals
将此对象与指定对象进行比较。当且仅当参数不是null并且是包含与该对象相同的range和weight值的LanguageRange对象时,结果为真。 -
toString
返回此LanguageRange对象的信息字符串表示形式,如果范围已加权且权重小于最大权重,则由语言范围和权重组成。
-