public static final class Locale.LanguageRange extends Object
基本と拡張という2つのタイプの言語範囲があります。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>)
修飾子と型 | フィールドと説明 |
---|---|
static double |
MAX_WEIGHT
重みの最大値、1.0を保持する定数、言語範囲がユーザーに最適であることを示します。
|
static double |
MIN_WEIGHT
重みの最小値、0.0を保持する定数、言語範囲がユーザーに適さないことを示します。
|
コンストラクタと説明 |
---|
LanguageRange(String range)
指定された
range を使ってLanguageRange を構築します。 |
LanguageRange(String range, double weight)
指定された
range とweight を使ってLanguageRange を構築します。 |
修飾子と型 | メソッドと説明 |
---|---|
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 Language Subtag Registryに対する検証は行われません。
これはLanguageRange(range, MAX_WEIGHT)
と同等です。
range
- 言語範囲NullPointerException
- 指定されたrange
がnull
の場合public LanguageRange(String range, double weight)
range
とweight
を使ってLanguageRange
を構築します。構築時にはIANA Language Subtag Registryに対する検証は行われません。range
- 言語範囲weight
- MIN_WEIGHT
からMAX_WEIGHT
の重み値NullPointerException
- 指定されたrange
がnull
の場合IllegalArgumentException
- 指定されたweight
がMIN_WEIGHT
より小さいまたはMAX_WEIGHT
より大きい場合public String getRange()
LanguageRange
の言語範囲を返します。public double getWeight()
LanguageRange
の重みを返します。public static List<Locale.LanguageRange> parse(String ranges)
ranges
を解析して、言語優先度リストを生成します。
このメソッドは、言語範囲ごとに指定されたranges
で構文チェックを実行しますが、IANA Language Subtag Registryを使用した検証は行いません。
指定される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
に1つの言語範囲が複数回出現する場合、最初の言語範囲のみが言語優先度リストに取り込まれます。
返されるリストは、指定されたranges
からの言語範囲とIANA Language Subtag Registryで見つかる同等のものから構成されます。たとえば、指定された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.32つの言語範囲、
"iw"
と"he"
が、リスト内で同じ最高優先度を持っています。アプリケーションまたはシステムが"he"
のみをサポートされるロケール(言語タグ)として提供する場合でも、"he"
をユーザーの言語優先度リストに追加することで、ロケール・マッチング・メソッドはヘブライ語をマッチするロケール(言語タグ)として見つけることができます。ranges
- カンマ区切りの言語範囲のリスト、つまりRFC 2616で定義されているAccept-Languageヘッダー形式の言語範囲のリストranges
およびそれらの同等言語範囲(ある場合)に含まれる言語範囲から構成される言語優先度リストリストは変更可能です。NullPointerException
- ranges
がnullの場合。IllegalArgumentException
- 指定されたranges
に見つかる言語範囲または重みが整形式でない場合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
がnullの場合。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
のコピーを返します。
マップでは、キーは言語範囲を表し、値はそれの同等なもののリストです。マップでは'*'
を使用できません。すべての同等言語範囲は、その元の言語範囲と同じ重み値を持ちます。
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 Language Subtag Registryを使用した変更の後に実行されます。
たとえば、ユーザーの言語優先度リストが5つの言語範囲("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)
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
null
でなく、このオブジェクトと同じrange
およびweight
値を含むLanguageRange
オブジェクトである場合だけです。equals
、クラス: Object
obj
- 比較対象のオブジェクトrange
およびweight
がobj
と同じ場合はtrue
、それ以外の場合はfalse
。Object.hashCode()
, HashMap
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.