モジュール java.base
パッケージ java.util

クラスLocale.LanguageRange

    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static double MAX_WEIGHT
      重みの最大値、1.0を保持する定数、言語範囲がユーザーに最適であることを示します。
      static double MIN_WEIGHT
      重みの最小値、0.0を保持する定数、言語範囲がユーザーに適さないことを示します。
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      LanguageRange​(String range)
      指定されたrangeを使ってLanguageRangeを構築します。
      LanguageRange​(String range, double weight)
      指定されたrangeweightを使ってLanguageRangeを構築します。
    • フィールドの詳細

      • MAX_WEIGHT

        public static final double MAX_WEIGHT
        重みの最大値、1.0を保持する定数、言語範囲がユーザーに最適であることを示します。
        関連項目:
        定数フィールド値
      • MIN_WEIGHT

        public static final double MIN_WEIGHT
        重みの最小値、0.0を保持する定数、言語範囲がユーザーに適さないことを示します。
        関連項目:
        定数フィールド値
    • コンストラクタの詳細

      • LanguageRange

        public LanguageRange​(String range)
        指定されたrangeを使ってLanguageRangeを構築します。 構築時にはIANA Language Subtag Registryに対する検証は行われません。

        これはLanguageRange(range, MAX_WEIGHT)と同等です。

        パラメータ:
        range - 言語範囲
        例外:
        NullPointerException - 指定されたrangenullの場合
        IllegalArgumentException - 指定されたrangeがRFC 4647で言及されている言語範囲の構文に準拠していない場合
      • LanguageRange

        public LanguageRange​(String range,
                             double weight)
        指定されたrangeweightを使ってLanguageRangeを構築します。 構築時にはIANA Language Subtag Registryに対する検証は行われません。
        パラメータ:
        range - 言語範囲
        weight - MIN_WEIGHTからMAX_WEIGHTの重み値
        例外:
        NullPointerException - 指定されたrangenullの場合
        IllegalArgumentException - 与えられたrangeがRFC 4647で言及された言語範囲の構文に従わない場合、または指定されたweightMIN_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 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.3
         
        2つの言語範囲、"iw""he"が、リスト内で同じ最高優先度を持っています。 アプリケーションまたはシステムが"he"のみをサポートされるロケール(言語タグ)として提供する場合でも、"he"をユーザーの言語優先度リストに追加することで、ロケール・マッチング・メソッドはヘブライ語をマッチするロケール(言語タグ)として見つけることができます。
        パラメータ:
        ranges - カンマ区切りの言語範囲のリスト、つまりRFC 2616で定義されているAccept-Languageヘッダー形式の言語範囲のリスト
        戻り値:
        指定されたrangesおよびそれらの同等言語範囲(ある場合)に含まれる言語範囲から構成される言語優先度リスト リストは変更可能です。
        例外:
        NullPointerException - rangesがnullの場合。
        IllegalArgumentException - 指定されたrangesに見つかる言語範囲または重みが整形式でない場合
      • mapEquivalents

        public static List<Locale.LanguageRange> mapEquivalents​(List<Locale.LanguageRange> priorityList,
                                                                Map<String,List<String>> map)
        指定されたpriorityListmapを使って新しいカスタマイズされた言語優先度リストを生成します。 指定された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 - priorityListnullの場合
        関連項目:
        parse(String, Map)
      • equals

        public boolean equals​(Object obj)
        このオブジェクトを指定されたオブジェクトと比較します。 結果がtrueになるのは、引数がnullでなく、このオブジェクトと同じrangeおよびweight値を含むLanguageRangeオブジェクトである場合だけです。
        オーバーライド:
        equals、クラス: Object
        パラメータ:
        obj - 比較対象のオブジェクト
        戻り値:
        このオブジェクトのrangeおよびweightobjと同じ場合はtrue、それ以外の場合はfalse
        関連項目:
        Object.hashCode(), HashMap
      • toString

        public String toString​()
        このLanguageRangeオブジェクトの有益な文字列表現を返します。範囲が重み付けされ、その重みが最大の重みよりも小さい場合、言語の範囲と重みからなります。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このLanguageRangeオブジェクトの文字列表現。