語言

ResourceBundle.Control.GetCandidateLocales(String, Locale) 方法

定義

回傳 a List 作為 LocalebaseNamelocale的候選位置 s。

[Android.Runtime.Register("getCandidateLocales", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/List;", "GetGetCandidateLocales_Ljava_lang_String_Ljava_util_Locale_Handler")]
public virtual System.Collections.Generic.IList<Java.Util.Locale>? GetCandidateLocales(string baseName, Java.Util.Locale locale);
[<Android.Runtime.Register("getCandidateLocales", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/List;", "GetGetCandidateLocales_Ljava_lang_String_Ljava_util_Locale_Handler")>]
abstract member GetCandidateLocales : string * Java.Util.Locale -> System.Collections.Generic.IList<Java.Util.Locale>
override this.GetCandidateLocales : string * Java.Util.Locale -> System.Collections.Generic.IList<Java.Util.Locale>

參數

baseName
String

資源包的基底名稱,一個完全限定的類別名稱

locale
Locale

資源包所需要的地點

傳回

List A 是給定的候選 Localeslocale

屬性

備註

回傳 a List 作為 LocalebaseNamelocale的候選位置 s。 當工廠方法嘗試尋找目標Locale的資源包時,工廠方法會呼叫ResourceBundle.getBundle此方法。

候選區域的序列也對應執行時資源查找路徑(也稱為 父鏈),前提是候選區域對應的資源組合存在且其父節點並非由載入的資源組合本身定義。 如果想讓基底叢作為父鏈的終端,清單的最後一個元素必須是 Locale#ROOT 根區域。

若給定的 locale 等於 Locale.ROOT (根 locale),則必須回傳僅包含根Locale節點的 aList。 此時, ResourceBundle.getBundle 工廠方法僅載入基礎包作為結果資源包。

這並非必須回傳不可變(不可修改) List的條件。 然而,返回 List 的 在被 getCandidateLocales返回後,不得再被變異。

預設實作會回傳 List 包含 Locales,並依照下述規則。 在下面的描述中, <em>L</em>、 <em>S</em>、 <em>C</em> 和 <em>V</em> 分別代表非空語言、文字、國家及變體。 例如,[em L/em>, <em>C</em>] 代表僅對語言和國家有非空值的 aLocale。<>< em>< L/em>(“xx”)這個形式<代表(非空)語言值為「xx」。 對於所有情況, Locale最終成分值為空的 s 皆被省略。

<ol><li>對於輸入的空 Locale 腳本值,請依序一個地省略最後一個組件,然後附加候選 Locales,如下所示:

<ul><li> [<em>L</em>, <em>C</em>, <em>V</em>] </li><li> [<em>L</em>, <em>C</em>] </li<>li> [<em>L</em>] </li><li<>Locale.ROOT/li/li></ul></li>

<對於>非空的輸入 Locale ,透過省略語言的最後一個組件來附加候選 Locales,然後補充由 帶 國家與變體還原的候選 Locale

<ul><li> [<em>L</em>, <em>S</em>, <em>C</em>, <em>V</em>]</li><li> [<em>L</em>, <em>S</em>, <em>C</em>]</li><li> [<em>L</em>, <em>S</em>]</li<>li> [<em>L</em>, <em>C</em,><EM>V</em>]</li><li> [<em>L</em>, <em>C</em>]</li<>li> [<em>L</em>]</li><li<Locale.ROOT>/li></ul></li>

<對於>一個由多個子標籤組成且以底線分隔的變體值的輸入 Locale ,透過一個一個省略變體子標籤來產生候選 Locales,然後在原始 Locale列表中每個出現 s 後插入以完整變體值的子標籤。 例如,若變體包含兩個子標籤 <em>V1</em> 與 <em>V2</em>:

<ul><li> [<em>L</em>, <em>S</em>, <em>C</em>, <em>V1</em>, <em>V2</em>]</li><li> [<em>L</em>, <em>S</em>, <em>C</em>, <em>V1</em>]</li<>li [><em>L</em>, <em>S</em>, <em>C</em]></李><li [em L/em>, <em>S</em>]</li<>li> [<em>L</em>, <em>C</em>, <em>V1</em>, <em>V2</em>]</li><li [<>em>L</em>, <em>C</em>, <em>V1</em>]</li><li [<>em>L</em>, <em C><><></em>]</li><li> [<em>L</em>]</li<>li><Locale.ROOT/li></ul></li>

<李>:中國人的特殊案例。 當輸入 Locale 中文字為「zh」(中文)且文字值為空時,依國家不同,可能會提供「Hans」(簡體)或「Hant」(繁體)兩個。 當國家為「CN」(中國)或「SG」(新加坡)時,則供應「Hans」。 當國家名稱為「HK」(香港特別行政區中國)、「MO」(澳門特別行政區)或「TW」(台灣)時,則會使用「漢特」。 對於其他國家或國家空無一人時,則不提供任何腳本。 例如,對於 Locale("zh", "CN") ,候選列表將為:<ul<>li> [<em>L</em>(“zh”),<em>S</em>(“Hans”),<em>C</em>(“CN”)]/<li><li [><em>L</em>(“zh”),<em>S</em>(“Hans”)]</li><li [<>em>L</em>(“zh”),<em>C</em>(“CN”)]</li><li [><em>L</em>(“zh”“)]</李><李><Locale.ROOT/李></烏爾>

對於 Locale("zh", "TW"),候選名單將為:<ul><li> [<em>L</em>(“zh”),<em>S</em>(“漢特”),<em>C</em>(“TW”)]/<li><li> [<em>L</em>(“zh”)]/<li><> li [em L/em(“zh”)]/<li<>li> [<em>L</em>(“zh”)],<>em C</em>(“TW”)]</li><li> [<em>L</em>(“zh”)]]<李><李><Locale.ROOT/李></烏爾></李>

<關於>挪威語的特殊案例。 兩者皆Locale("no", "NO", "NY")Locale("nn", "NO")代表挪威的尼諾爾斯克。 當某個地區的語言為「nn」時,標準候選名單會產生至[<em>L</em>(“nn”)],然後加入以下候選名單:

<ul><li> [<em>L</em>(“不”),<em>C</em>(“不”),<em>V</em>(“NY”)]/<li<>li [<>em>L</em>(“不”),<em>C</em>(“NO”)]</li<>li [><em>L</em>(“no”)]</li><liLocale.ROOT<>/li/li></ul>

若 位置正好 Locale("no", "NO", "NY")為 ,則先將其轉換為 Locale("nn", "NO") ,然後依上述程序執行。

此外,Java將「no」視為挪威博克姆語的同義詞 #xE5;我「不懂」。 除了上述單一情況 Locale("no", "NO", "NY") 外,當輸入 Locale 有語言「no」或「nb」時,語言代碼為「no」和「nb」的候選 Locales 會交錯使用,先使用請求語言,再使用其同義詞。 例如, Locale("nb", "NO", "POSIX") 會產生以下候選清單:

<ul><li> [<em>L</em>(“nb”),<em>C</em>(“NO”),<em>V</em>(“POSIX”)]</li<>li> [<em>L</em>(“no”),<em>C</em>(“NO”),<em>V</em>(“POSIX”)]</li><li [<>em>L</em>(“nb”),<em>C</em>(“NO”)]</li<>li [><em>L</em>(“no”), <em C/em>(“NO”)]</li><li> [<em>L</em>(“nb”)]</li<>li [<>em>L</em>(“no”)]/<li<>liLocale.ROOT></li<>/ul<>>

Locale("no", "NO", "POSIX") 會產生相同的清單,但標有「no」的地點會排在對應的「nb」位置之前。</li></ol>

預設實作使用 該 ArrayList 實作,覆寫的實作可在返回呼叫者前修改。 然而,子類在被 返回 getCandidateLocales後不得修改該子類。

例如,若給定 baseName 為「訊息」,且給定 localeLocale("ja",&nbsp;"",&nbsp;"XX"),則 List a 為 Locales:

Locale("ja", "", "XX")
                Locale("ja")
                Locale.ROOT

。 如果找到「ja」和「」 Locales 的資源組合,那麼執行時的資源查找路徑(父鏈)為:

{@code
                Messages_ja -> Messages
            }

java.util.ResourceBundle.Control.getCandidateLocales(java.lang.String, java.util.Locale)Java 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於