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-*"
(中国传统,任何地区)扩展语言范围。
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>)
Modifier and Type | Field and Description |
---|---|
static double |
MAX_WEIGHT
一个常量保持权重的最大值,1,这表明语言范围是一个很好的适合用户。
|
static double |
MIN_WEIGHT
一个常量保持最小值的权重,0,这表明语言范围是不是一个很好的适合用户。
|
Constructor and Description |
---|
LanguageRange(String range)
使用给定的
range 构建
LanguageRange 。
|
LanguageRange(String range, double weight)
使用给定的
range 和
weight 构建
LanguageRange 。
|
Modifier and Type | Method and Description |
---|---|
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 。
|
public static final double MAX_WEIGHT
public static final double MIN_WEIGHT
public LanguageRange(String range)
range
构建
LanguageRange
。注意,没有验证对IANA语言个子标记注册处施工时间。
这相当于LanguageRange(range, MAX_WEIGHT)
。
range
-语言范围
NullPointerException
-如果给定的
range
是
null
public LanguageRange(String range, double weight)
range
和
weight
构建
LanguageRange
。注意,没有验证对IANA语言个子标记注册处施工时间。
range
-语言范围
weight
-
MIN_WEIGHT
和
MAX_WEIGHT
之间的权重值
NullPointerException
-如果给定的
range
是
null
IllegalArgumentException
-如果给定的
weight
小于或大于
MAX_WEIGHT
MIN_WEIGHT
public String getRange()
LanguageRange
语言范围。
public double getWeight()
LanguageRange
重量。
public static List<Locale.LanguageRange> parse(String ranges)
ranges
生成语言优先级列表。
该方法在给定的ranges
但不做验证使用IANA语言个子标记注册为每种语言的句法检查执行范围。
的ranges
得到可以采取下列形式之一:
“接受语言:是的,恩;q = 0.4”(加权列表与接受语言的前缀)“是的,恩;q = 0.4”(加权列表)“是的,恩”(清单)在加权表,每种语言的范围内给出一个权重值。权重值是“品质价值”的 RFC 2616相同,它表示多少用户喜欢的语言。权重值对应的语言范围由
";q="
后指定,默认的权重值
MAX_WEIGHT
时略。
与加权列表不同的是,在优先级列表中的语言范围按其优先级的递减顺序排序。第一语言范围具有最高的优先级,并满足用户的偏好。
在这两种情况下,语言范围按优先级或权重的语言优先级列表中的递减顺序进行排序。如果一个语言范围出现在给定的ranges
不止一次,只有第一个被列入语言优先级列表。
返回列表包括语言从给定的ranges
及其等价物范围在IANA注册发现个子标记语言。例如,如果给定的ranges
是"Accept-Language: iw,en-us;q=0.7,en;q=0.3"
,列表中的元素将归:
范围 重量“信息战”(旧标签希伯来语)1“他”(新的首选代码希伯来)1“恩我们”(英国,美国)0.7“恩”(英语)0.3两语言范围,
"iw"
和
"he"
,列表中有相同的优先级最高。通过添加
"he"
到用户的语言优先级列表,现场匹配的方法可以发现希伯来语作为匹配区域(或语言标签)即使应用程序或系统只提供
"he"
作为支撑区域(或语言标签)。
ranges
-在“接受语言”
RFC 2616定义标头的形式以逗号分开的语言范围或列表的语言范围
ranges
及其等效语言范围如果可用。列表是可变的。
NullPointerException
-如果
ranges
是空的
IllegalArgumentException
-如果一个语言范围或体重在给定的
ranges
发现病形成
public static List<Locale.LanguageRange> parse(String ranges, Map<String,List<String>> map)
ranges
生成语言优先级列表,然后自定义列表使用给定的
map
。此方法等效于
mapEquivalents(parse(ranges), map)
。
ranges
-在“接受语言”
RFC 2616定义标头的形式以逗号分开的语言范围或列表的语言范围
map
-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>>)
public static List<Locale.LanguageRange> mapEquivalents(List<Locale.LanguageRange> priorityList, Map<String,List<String>> map)
priorityList
和
map
生成一个新的自定义语言优先级列表。如果给定的
map
是空的,这个方法返回一个给定的
priorityList
。
在Map中,一个键代表一个语言范围,而一个值是它的等价物的一个列表。'*'
不能用于Map。每个等效语言范围具有相同的权重值作为其原始语言范围。
Map的一个例子:关键 价值“zh”(中国)“zh”,“zh-Hans”(简体中文)“ZH香港”(中国,香港)“ZH香港”“zh-TW”(中国,台湾)“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"
映射不包含在图,一个简单的替换将执行自定义的列表不包括"zh"
和"zh-CN"
。
priorityList
用户的语言优先级列表
map
-Map包含自定义语言范围信息
null
priorityList
NullPointerException
parse(String, Map)
public int hashCode()
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
null
是
LanguageRange
对象具有相同
range
和
weight
值作为这个对象的结果是真的。
equals
方法重写,继承类
Object
obj
-比较对象
true
如果这个对象的
range
和
weight
作为
obj
是相同的;
false
否则。
Object.hashCode()
,
HashMap
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.