Localizer 物件的
getString()
方法會傳回為特定地區中某個資源定義的字串。呼叫這個方法時,不需要指定
locale
值。在這種情況下,這個方法會查看整個地區鍊,並且傳回提供所指定資源名稱之第一個地區中的字串。這個方法具有下列參數:
參數
|
說明
|
|
包含資源的組合包。這是不含 .properties 副檔名的屬性檔案名稱 (舉例來說,如果將這個參數設定為
"alerts"
,Localizer 程式碼就會在名為 alerts.properties 的當地語系化檔案中查看)。
|
|
資源名稱。
|
|
這是選擇性的。要在取代字串中取代已編號標籤的字串陣列。例如,以對函數的呼叫為例,其中
templateArgs
參數為
["Raúl", "4"]
且相符的資源字串為
"Hello, {0}。You have {1} new messages."
。在這種情況下,函數會傳回
"Hello, Raúl。You have 4 new messages."
。若要忽略這項設定,請傳遞
null
值。
|
|
這是選擇性的。要使用的地區碼 (例如
"en"
、
"en_us"
或
"fr"
)。如果有提供地區但找不到相符的值,這個方法便不會在地區鍊的其它地區中繼續搜尋值。如果未指定地區碼,這個函數會傳回地區鍊中,第一個為指定之資源名稱提供值的地區內的字串。
|
當地語系化架構可以更新已加上標記的 HTML DOM 特質。不過,您可以透過其它方式,使用已當地語系化的字串。例如,您可以在某些動態產生的 HTML 中使用字串,或者在函數呼叫中,將字串當做參數值使用。例如,下列程式碼會呼叫
alert()
函數時,搭配在 fr_FR 地區之預設屬性檔案的
error114
資源中定義的字串:
alert(air.Localizer.localizer.getString("default", "error114", null, "fr_FR"));
getString()
方法在指定的組合包中找不到資源時,便會傳送
resourceNotFound
事件。
air.Localizer.RESOURCE_NOT_FOUND
常數會定義
"resourceNotFound"
字串。這個事件有三個屬性:
bundleName
、
resourceName
和
locale
。
bundleName
屬性是在其中找不到資源之組合包的名稱。
resourceName
屬性是在其中找不到資源之組合包的名稱。
locale
屬性是在其中找不到資源之地區的名稱。
getString()
方法在指定的組合包中找不到資源時,便會傳送
bundleNotFound
事件。
air.Localizer.BUNDLE_NOT_FOUND
常數會定義
"bundleNotFound"
字串。這個事件有兩個屬性:
bundleName
和
locale
。
bundleName
屬性是在其中找不到資源之組合包的名稱。
locale
屬性是在其中找不到資源之國家/地區的名稱。
getString()
方法會以非同步方式運作 (因此會以非同步方式傳送
resourceNotFound
和
bundleNotFound
事件)。下列程式碼會設定
resourceNotFound
和
bundleNotFound
事件的事件偵聽程式:
air.Localizerlocalizer.addEventListener(air.Localizer.RESOURCE_NOT_FOUND, rnfHandler);
air.Localizerlocalizer.addEventListener(air.Localizer.BUNDLE_NOT_FOUND, bnfHandler);
var str = air.Localizer.localizer.getString("default", "error114", null, "fr_FR");
function rnfHandler(event)
{
alert(event.bundleName + ": " + event.resourceName + ":." + event.locale);
}
function bnfHandler(event)
{
alert(event.bundleName + ":." + event.locale);
}
Localizer 物件的
getResourceBundle()
方法會將指定給該地區的組合包傳回。此方法傳回的值是一個物件,該物件的屬性對應到組合包中的金鑰 (如果應用程式找不到指定的組合包,此方法就會傳回
null
)。
此方法接受兩個參數—
locale
和
bundleName
。
參數
|
說明
|
|
地區 (例如
"fr"
)。
|
|
組合包名稱。
|
例如,下列程式碼會呼叫
document.write()
方法來載入 fr 地區的預設組合包,然後呼叫
document.write()
方法來寫入該組合包的
str1
和
str2
金鑰值。
var aboutWin = window.open();
var bundle = localizer.getResourceBundle("fr", "default");
aboutWin.document.write(bundle.str1);
aboutWin.document.write("<br/>");
aboutWin.document.write(bundle.str2);
aboutWin.document.write("<br/>");
如果
getResourceBundle()
方法找不到指定的組合包,就會傳送
bundleNotFound
事件。
air.Localizer.BUNDLE_NOT_FOUND
常數會定義
"bundleNotFound"
字串。這個事件有兩個屬性:
bundleName
和
locale
。
bundleName
屬性是在其中找不到資源之組合包的名稱。
locale
屬性是在其中找不到資源之國家/地區的名稱。
Localizer 物件的
getFile()
方法會傳回指定之地區的組合包內容 (以字串表示)。讀取組合包檔案時,會將它當做 UTF-8 檔案來讀取。這個方法包含下列參數:
參數
|
說明
|
|
資源檔的檔案名稱 (例如
"about.html"
)。
|
|
這是選擇性的。要在取代字串中取代已編號標籤的字串陣列。例如,以對函數的呼叫為例,其中
templateArgs
參數為
["Raúl", "4"]
且相符的資源檔包含下列兩段訊息:
<html>
<body>Hello, {0}. You have {1} new messages.</body>
</html>
在這種情況下,函數會傳回具有這兩段訊息的字串:
<html>
<body>Hello, Raúl. You have 4 new messages. </body>
</html>
|
|
要使用的地區碼,例如
"en_GB"
。如果有提供地區但找不到相符的檔案,這個方法便不會在地區鍊的其它地區中繼續搜尋。如果「未指定」地區碼,函數會傳回地區鍊中,第一個具有符合
resourceFileName
之檔案的地區內的文字。
|
例如,下列程式碼會使用 fr 地區之 about.html 檔案的內容,呼叫
document.write()
方法。
var aboutWin = window.open();
var aboutHtml = localizer.getFile("about.html", null, "fr");
aboutWin.document.close();
aboutWin.document.write(aboutHtml);
getFile()
方法在地區鍊中找不到資源時,便會傳送
fileNotFound
事件。
air.Localizer.FILE_NOT_FOUND
常數會定義
"resourceNotFound"
字串。
getFile()
方法是以非同步方式運作 (因此會以非同步方式傳送
fileNotFound
事件)。這個事件有兩個屬性:
fileName
和
locale
。
fileName
是找不到之檔案的名稱。
locale
屬性是在其中找不到資源之地區的名稱。下列程式碼會設定這個事件的事件偵聽程式:
air.Localizer.localizer.addEventListener(air.Localizer.FILE_NOT_FOUND, fnfHandler);
air.Localizer.localizer.getFile("missing.html", null, "fr");
function fnfHandler(event)
{
alert(event.fileName + ": " + event.locale);
}