|
FlexDoc/Javadoc 2.0 Demo Java Doc |
There are two types of language ranges: basic and extended. In RFC 4647, the syntax of language ranges is expressed in ABNF as follows:
For example, "en" (English), "ja-JP" (Japanese, Japan), "*" (special language range which matches any language tag) are basic language ranges, whereas "*-CH" (any languages, Switzerland), "es-*" (Spanish, any regions), and "zh-Hant-*" (Traditional Chinese, any regions) are extended language ranges.basic-language-range = (1*8ALPHA *("-" 1*8alphanum)) / "*" extended-language-range = (1*8ALPHA / "*") *("-" (1*8alphanum / "*")) alphanum = ALPHA / DIGIT
Field Summary |
||
static final double |
A constant holding the maximum value of weight, 1.0, which indicates
that the language range is a good fit for the user.
|
|
static final double |
A constant holding the minimum value of weight, 0.0, which indicates
that the language range is not a good fit for the user.
|
Constructor Summary |
||
LanguageRange(String range)
Constructs a LanguageRange using the given range.
|
||
LanguageRange(String range, double weight)
Constructs a LanguageRange using the given range and
weight.
|
Method Summary |
||
boolean |
Compares this object to the specified object.
|
|
getRange()
Returns the language range of this LanguageRange.
|
||
double |
Returns the weight of this LanguageRange.
|
|
int |
hashCode()
Returns a hash code value for the object.
|
|
static List<Locale.LanguageRange> |
Generates a new customized Language Priority List using the given
priorityList and map.
|
|
static List<Locale.LanguageRange> |
Parses the given ranges to generate a Language Priority List.
|
|
static List<Locale.LanguageRange> |
Parses the given ranges to generate a Language Priority
List, and then customizes the list using the given map.
|
|
toString()
Returns an informative string representation of this LanguageRange
object, consisting of language range and weight if the range is
weighted and the weight is less than the max weight.
|
Methods inherited from class java.lang.Object |
public LanguageRange |
(String range) |
This is equivalent to LanguageRange(range, MAX_WEIGHT).
public LanguageRange |
(String range, double weight) |
public String getRange |
() |
public double getWeight |
() |
(String ranges) |
This method performs a syntactic check for each language range in the given ranges but doesn't do validation using the IANA Language Subtag Registry.
The ranges to be given can take one of the following forms:
"Accept-Language: ja,en;q=0.4" (weighted list with Accept-Language prefix) "ja,en;q=0.4" (weighted list) "ja,en" (prioritized list)In a weighted list, each language range is given a weight value. The weight value is identical to the "quality value" in RFC 2616, and it expresses how much the user prefers the language. A weight value is specified after a corresponding language range followed by ";q=", and the default weight value is MAX_WEIGHT when it is omitted.
Unlike a weighted list, language ranges in a prioritized list are sorted in the descending order based on its priority. The first language range has the highest priority and meets the user's preference most.
In either case, language ranges are sorted in descending order in the Language Priority List based on priority or weight. If a language range appears in the given ranges more than once, only the first one is included on the Language Priority List.
The returned list consists of language ranges from the given ranges and their equivalents found in the IANA Language Subtag Registry. For example, if the given ranges is "Accept-Language: iw,en-us;q=0.7,en;q=0.3", the elements in the list to be returned are:
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.3Two language ranges, "iw" and "he", have the same highest priority in the list. By adding "he" to the user's Language Priority List, locale-matching method can find Hebrew as a matching locale (or language tag) even if the application or system offers only "he" as a supported locale (or language tag).
In the map, a key represents a language range whereas a value is a list of equivalents of it. '*' cannot be used in the map. Each equivalent language range has the same weight value as its original language range.
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"The customization is performed after modification using the IANA Language Subtag Registry.
For example, if a user's Language Priority List consists of five language ranges ("zh", "zh-CN", "en", "zh-TW", and "zh-HK"), the newly generated Language Priority List which is customized using the above map example will consists of "zh", "zh-Hans", "zh-CN", "zh-Hans-CN", "en", "zh-TW", and "zh-HK".
"zh-HK" and "zh-TW" aren't converted to "zh-Hans-HK" nor "zh-Hans-TW" even if they are included in the Language Priority List. In this example, mapping is used to clearly distinguish Simplified Chinese and Traditional Chinese.
If the "zh"-to-"zh" mapping isn't included in the map, a simple replacement will be performed and the customized list won't include "zh" and "zh-CN".
public int hashCode |
() |
public boolean equals |
(Object obj) |
public String toString |
() |
|
FlexDoc/Javadoc 2.0 Demo Java Doc |