- java.lang.Object
-
- java.util.Locale.LanguageRange
-
- Enclosing class:
- Locale
public static final class Locale.LanguageRange extends Object
该类表示在RFC 4647 Matching of Language Tags中定义的语言范围 。 语言范围是用于通过使用Locale Matching中描述的机制来选择满足特定要求的语言标签的标识符 。 表示用户偏好并由语言范围组成的列表称为语言优先级列表 。有两种类型的语言范围:基本和扩展。 在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
- 另请参见:
-
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>)
-
-
Field Summary
Fields Modifier and Type Field 描述 static double
MAX_WEIGHT
持有权重最大值的常数为1.0,表示语言范围适合用户。static double
MIN_WEIGHT
保持最小权重值的常数为0.0,表示语言范围不适合用户。
-
构造方法摘要
构造方法 Constructor 描述 LanguageRange(String range)
构造一个LanguageRange
使用给定的range
。LanguageRange(String range, double weight)
构造一个LanguageRange
使用给定range
和weight
。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
对象的信息字符串表示,如果范围被加权且重量小于最大权重,LanguageRange
语言范围和权重组成。
-
-
-
字段详细信息
-
MAX_WEIGHT
public static final double MAX_WEIGHT
持有权重最大值的常数为1.0,表示语言范围适合用户。- 另请参见:
- Constant Field Values
-
MIN_WEIGHT
public static final double MIN_WEIGHT
保持最小权重值的常数为0.0,表示语言范围不适合用户。- 另请参见:
- Constant Field Values
-
-
构造方法详细信息
-
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)
在加权列表中,每个语言范围都被赋予权重值。 权重值与RFC 2616中的“质量值” 相同 ,它表示用户喜欢的语言多少。 重量值在相应的语言范围后面指定为";q="
,默认权重值为MAX_WEIGHT
,省略。与加权列表不同,优先级列表中的语言范围根据其优先级按降序排列。 第一语言范围具有最高优先级,最符合用户的偏好。
在任一种情况下,语言范围按照优先级或权重在语言优先级列表中按降序进行排序。 如果一个语言范围
ranges
出现在给定的ranges
,则只有第一个包含在语言优先级列表中。返回的列表包括来自给定的
ranges
的语言范围及其在IANA语言小标签注册表中的等同物。 例如,如果给定的ranges
是"Accept-Language: iw,en-us;q=0.7,en;q=0.3"
,"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中定义的“接受语言”标题的 形式 - 结果
-
由给定的
ranges
包含的语言范围组成的语言优先级列表及其等效语言范围(如果可用)。 列表是可修改的。 - 异常
-
NullPointerException
- 如果ranges
为空 -
IllegalArgumentException
- 如果在给定的ranges
找到的语言范围或重量是不正确的
-
parse
public static List<Locale.LanguageRange> parse(String ranges, Map<String,List<String>> map)
解析给定的ranges
以生成语言优先级列表,然后使用给定的map
自定义列表。 此方法相当于mapEquivalents(parse(ranges), map)
。- 参数
-
ranges
- 以逗号分隔的语言范围或语言范围的列表,以 RFC 2616中定义的“Accept-Language”标题的 形式 -
map
- 包含自定义语言范围信息的地图 - 结果
- 具有自定义功能的语言优先级列表。 列表是可修改的。
- 异常
-
NullPointerException
- 如果ranges
为空 -
IllegalArgumentException
- 如果在给定的ranges
找到的语言范围或重量不正确 - 另请参见:
-
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)
将此对象与指定的对象进行比较。 如果且仅当参数不是null
且是LanguageRange
对象,其值包含与此对象相同的range
和weight
值,则结果为真。- 重写:
-
equals
在Object
- 参数
-
obj
- 要比较的对象 - 结果
-
true
如果这个对象的range
和weight
是相同的obj
的;false
否则。 - 另请参见:
-
Object.hashCode()
,HashMap
-
-