- 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>)
-
-
字段汇总
字段 变量和类型 字段 描述 static doubleMAX_WEIGHT保持权重最大值1.0的常量,表示语言范围非常适合用户。static doubleMIN_WEIGHT保持权重最小值0.0的常量,表示语言范围不适合用户。
-
构造方法摘要
构造方法 构造器 描述 LanguageRange(String range)构造一个LanguageRange使用给定的range。LanguageRange(String range, double weight)构造一个LanguageRange使用给定的range和weight。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 booleanequals(Object obj)将此对象与指定的对象进行比较。StringgetRange()返回此LanguageRange的语言范围。doublegetWeight()返回此LanguageRange的重量。inthashCode()返回对象的哈希码值。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自定义列表。StringtoString()返回此LanguageRange对象的信息性字符串表示形式,如果范围已加权且权重小于最大权重,LanguageRange语言范围和权重组成。
-
-
-
构造方法详细信息
-
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中定义的“Accept-Language”标头形式的语言范围列表 - 结果
-
语言优先级列表,包含给定
ranges包含的语言范围及其等效语言范围(如果有)。 该列表是可修改的。 - 异常
-
NullPointerException- 如果ranges为空 -
IllegalArgumentException- 如果给定的ranges的语言范围或重量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的语言范围或重量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并且是包含与此对象相同的range和weight值的LanguageRange对象时,结果为true。- 重写:
-
equals在类Object - 参数
-
obj- 要与之比较的对象 - 结果
-
true如果此对象的range和weight是一样的obj的; 否则为false。 - 另请参见:
-
Object.hashCode(),HashMap
-
-