語言

ResourceBundle.GetBundle 方法

定義

多載

名稱 Description
GetBundle(String)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

GetBundle(String, Locale)

取得一個資源包,使用指定的基底名稱和區域,以及呼叫者的類別載入器。

GetBundle(String, ResourceBundle+Control)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

GetBundle(String, Locale, ClassLoader)

使用指定的基底名稱、位置和類別載入器取得資源包。

GetBundle(String, Locale, ResourceBundle+Control)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

GetBundle(String, Locale, ClassLoader, ResourceBundle+Control)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

GetBundle(String)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

[Android.Runtime.Register("getBundle", "(Ljava/lang/String;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle(string? baseName);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string -> Java.Util.ResourceBundle

參數

baseName
String

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

傳回

為指定基地名稱與預設地點的資源包

屬性

例外狀況

如果找不到。ResourceBundle

備註

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。 呼叫此方法等同於呼叫 <blockquote>getBundle(baseName, Locale.getDefault(), this.getClass().getClassLoader()), </blockquote>

Java 文件 java.util.ResourceBundle.getBundle(java.lang.String)

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

適用於

GetBundle(String, Locale)

取得一個資源包,使用指定的基底名稱和區域,以及呼叫者的類別載入器。

[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle(string? baseName, Java.Util.Locale? locale);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale -> Java.Util.ResourceBundle

參數

baseName
String

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

locale
Locale

資源包所需要的地點

傳回

給定基地名稱與地點的資源包

屬性

例外狀況

如果找不到資源包。

備註

取得一個資源包,使用指定的基底名稱和區域,以及呼叫者的類別載入器。 呼叫此方法等同於呼叫 <blockquote>getBundle(baseName, locale, this.getClass().getClassLoader()), </blockquote>

Java 文件 java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale)

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

適用於

GetBundle(String, ResourceBundle+Control)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle(string? baseName, Java.Util.ResourceBundle.Control? control);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.ResourceBundle.Control -> Java.Util.ResourceBundle

參數

baseName
String

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

control
ResourceBundle.Control

控制存取序列的控制

傳回

為指定基地名稱與預設地點的資源包

屬性

備註

Java 文件 java.util.ResourceBundle.getBundle(java.lang.String)

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

適用於

GetBundle(String, Locale, ClassLoader)

使用指定的基底名稱、位置和類別載入器取得資源包。

[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle(string? baseName, Java.Util.Locale? locale, Java.Lang.ClassLoader? loader);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale * Java.Lang.ClassLoader -> Java.Util.ResourceBundle

參數

baseName
String

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

locale
Locale

資源包所需要的地點

loader
ClassLoader

用來載入資源包的類別載入器

傳回

給定基地名稱與地點的資源包

屬性

例外狀況

如果找不到。ResourceBundle

備註

使用指定的基底名稱、位置和類別載入器取得資源包。

這相當於呼叫: <blockquote>

getBundle(baseName, targetLocale, loader, control)

</blockquote> 傳遞一個預設的實例 Control。 請參考修改預設行為的描述。 以下描述了預設行為。

<b>“default_behavior”資源>包搜尋與載入策略</b>

getBundle 利用基底名稱、指定的區域及預設區域(取自 java.util.Locale#getDefault() Locale.getDefault)來產生一連串「候選><」EM>候選組合名稱</EM>。 如果指定地區的語言、腳本、國家和變體都是空字串,則基底名稱就是唯一的候選組合名稱。 否則,會根據指定地區(語言、文字、國家及變體)的屬性值產生候選地點清單,並附加在基底名稱後。 通常,這會是這樣:

baseName + "_" + language + "_" + script + "_" + country + "_" + variant
                baseName + "_" + language + "_" + script + "_" + country
                baseName + "_" + language + "_" + script
                baseName + "_" + language + "_" + country + "_" + variant
                baseName + "_" + language + "_" + country
                baseName + "_" + language

若最後一個分量為空字串的候選組合名稱及底線都會省略。 例如,若 country 為空字串,則上述第二與第五候選組合名稱將被省略。 此外,若 script 為空字串,則省略包含 script 的候選名稱。 例如,語言為「de」且變體為「JAVA」的區域會產生以下基底名稱為「MyResource」的候選名稱。

MyResource_de__JAVA
                MyResource_de

若變體包含一個或多個底線('_'),則在包含原始變體的候選組合名稱後,插入一連串由截斷最後底線及其後部分所產生的組合名稱。 例如,對於一個語言為「en」、文字為「Latn」、「國家為US」及變體為「WINDOWS_VISTA」,且組合名稱為「MyResource」的地區,以下會產生候選組合名稱清單:

MyResource_en_Latn_US_WINDOWS_VISTA
            MyResource_en_Latn_US_WINDOWS
            MyResource_en_Latn_US
            MyResource_en_Latn
            MyResource_en_US_WINDOWS_VISTA
            MyResource_en_US_WINDOWS
            MyResource_en_US
            MyResource_en

<blockquote><b>注意:</b> 對於某些 Locales,候選組合名稱清單包含額外名稱,或組合名稱的順序略有調整。 詳情請參閱預設 Control#getCandidateLocales(String, Locale) getCandidateLocales 實作的說明。</區塊引用>

getBundle接著會反覆檢查候選組合名稱,找出第一個能 <EM 實例<化/EM> 實際資源>組合的名稱。 它使用預設的 controls Control#getFormats getFormats 方法,為每個產生的名稱產生兩個組合名稱,第一個為類別名稱,第二個為屬性檔名稱。 對於每個候選組合名稱,它嘗試建立一個資源組合:

<ul><li>首先,它嘗試使用產生的類別名稱載入類別。 如果能透過指定的類別載入器找到並載入此類類別,且與 ResourceBundle 的賦值相容,且可從 ResourceBundle 存取,且可實例化,則 getBundle 可建立該類別的新實例並用作 <em>結果資源包</em>。

<li>否則, getBundle 嘗試使用產生的屬性檔案名稱來定位屬性資源檔案。 它透過將所有「.」字元替換為「/」並附加字串「.properties」,從候選包名稱產生路徑名稱。 它嘗試使用 java.lang.ClassLoader#getResource(java.lang.String) ClassLoader.getResource。 (請注意,所謂的「資源」 getResource 與資源包的內容無關,它只是一個資料容器,例如檔案。)如果找到一個「資源」,它會嘗試從該內容建立一個新的 PropertyResourceBundle 實例。 若成功,該實例將成為 <em>結果資源包</em>。 </ul>

此過程持續進行,直到結果資源組合實例化或候選資源組合名稱清單用盡為止。 若未找到匹配的資源包,則呼叫預設控制 Control#getFallbackLocale getFallbackLocale 項的方法,回傳當前預設位置。 利用此區域產生一連串候選地點名稱,並如上再次搜尋。

如果仍然找不到結果包,則只查詢基礎名稱。 若仍失敗,則擲出 a MissingResourceException

「parent_chain」> 一旦找到結果資源包,其 <em>父鏈</em> 就會被實例化。 如果結果包已經有父節點(可能是從快取回傳),那麼該鏈是完整的。

否則, getBundle 檢查在產生結果資源包時使用的候選地點清單的其餘部分。 (如前所述,若最後一個分量為空字串的候選叢名稱則省略。)當候補清單的最後時,它會嘗試使用純纖維組合名稱。 每個候選包名稱時,它嘗試實例化一個資源包(先尋找類別,再尋找屬性檔案,如上所述)。

當成功時,會用新的資源包呼叫先前實例化的資源包 #setParent(java.util.ResourceBundle) setParent 的方法。 此過程持續進行,直到名稱清單用盡或目前的子叢集已有非空父節點。

當父鏈完成後,該束會被回傳。

<b>注意:</b>getBundle 會快取實例化的資源包,可能會多次回傳相同的資源包實例。

<b>註:</b>論 baseName 點應該是完全限定的類別名稱。 然而,為了與早期版本的相容性,Java SE 執行環境並未驗證此點,因此可以透過指定路徑名稱(使用「/」)而非完全限定的類別名稱(使用「.」)來存取 PropertyResourceBundles。

「default_behavior_example」><strong>範例:</strong>

提供以下類別與屬性檔案:<ul><li>MyResources.class <li>MyResources.properties <li>MyResources_fr.properties <li>MyResources_fr_CH.class <li>MyResources_fr_CH.properties <li>MyResources_en.properties li>MyResources_es_ES.class <</ul>

所有檔案的內容皆有效(即「.class」檔案為非抽象子類別,「.properties」檔案為語法正確的子類別 ResourceBundle )。 預設地點為 Locale("en", "GB")

使用以下區域參數呼叫 getBundle ,將實現以下資源組合:

<table class=“striped”caption style=“display:none”>getBundle() locale to resource bundle mapping</caption<>thead><tr><th scope=“col”>Locale</th><th scope=“col”>Resource bundle</th></tr<>/thead><tbody><tr><th scope=“row”Locale>(“fr”, “CH”)</th><td>MyResources_fr_CH.class, parent MyResources_fr.properties, parent MyResources.class</td></tr><tr th scope=“row”>Locale(“fr”, “FR”)</th><td>MyResources_fr.properties, parent myResources.class</td></tr><tr th><scope = “row”>Locale(“de”, “DE”)</th><td>MyResources_en.properties, parent MyResources.class</td></tr<>tr scope tr><th=“row”>Locale(“en”, “US”)</th><td>MyResources_en.properties, parent MyResources.class</td></tr<>><><tr><th scope=“row”Locale>(“es”, “ES”)</th><td>MyResources_es_ES.class, parent MyResources.class</td></tr></tbody></table>

MyResources_fr_CH.properties 這個檔案從未被使用,因為它被 MyResources_fr_CH.class 隱藏了。 同樣地,MyResources.properties 也被 MyResources.class 隱藏。

在 1.2 版本中加入。

Java 文件 java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader)

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

適用於

GetBundle(String, Locale, ResourceBundle+Control)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle(string? baseName, Java.Util.Locale? targetLocale, Java.Util.ResourceBundle.Control? control);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale * Java.Util.ResourceBundle.Control -> Java.Util.ResourceBundle

參數

baseName
String

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

targetLocale
Locale

資源包的目標位置

control
ResourceBundle.Control

控制存取序列的控制

傳回

為指定基地名稱與預設地點的資源包

屬性

備註

Java 文件 java.util.ResourceBundle.getBundle(java.lang.String)

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

適用於

GetBundle(String, Locale, ClassLoader, ResourceBundle+Control)

取得資源包,使用指定的基底名稱、預設位置和呼叫者的類別載入器。

[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle(string? baseName, Java.Util.Locale? targetLocale, Java.Lang.ClassLoader? loader, Java.Util.ResourceBundle.Control? control);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale * Java.Lang.ClassLoader * Java.Util.ResourceBundle.Control -> Java.Util.ResourceBundle

參數

baseName
String

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

targetLocale
Locale

資源包的目標位置

loader
ClassLoader

類別載入器到 Load Resource

control
ResourceBundle.Control

控制存取序列的控制

傳回

為指定基地名稱與預設地點的資源包

屬性

備註

Java 文件 java.util.ResourceBundle.getBundle(java.lang.String)

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

適用於