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 中使用字符串或在函数调用中将其作为参数值。例如,以下代码将通过 fr_FR 区域设置的默认属性文件中 error114 资源内定义的字符串调用 alert() 函数:
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);
}