包 | mx.resources |
接口 | public interface IResourceManager extends IEventDispatcher |
实现器 | ResourceManagerImpl |
本地化涉及三个主要概念:语言环境、资源和资源束。
语言环境指定将应用程序本地化到的语言和国家/地区。例如,语言环境 "en_US"
指定美国英语。(有关详细信息,请参阅 mx.resources.Locale 类。)
资源是与语言环境相关的具名值。例如,应用程序可能具有名为 "OPEN"
的资源,在英语语言环境中该资源的值为 "Open"
,在法语语言环境中该资源的值为 "Ouvrir"
。
资源束是一个具名资源组,其值已针对特定语言环境本地化。资源束由其 bundleName
和 locale
的组合来标识,并且具有包含该束资源的名称/值对的 content
对象。有关从属性文件创建资源束的典型方式的信息,请参阅 mx.resources.IResourceBundle 文档。
实现 IResourceManager 接口的单个 ResourceManager 对象可管理多个资源束(可能对应于多个语言环境),并提供对这些资源束所包含资源的访问。。例如,通过调用 resourceManager.getString(bundleName, resourceName)
,可将特定的资源作为 String 来进行检索。
所有扩展 UIComponent、Formatter 或 Validator 的类都具有 resourceManager
属性,通过该属性提供对实现此接口的对象的引用。其他类可以调用 ResourceManager.getInstance()
来获取该对象。
资源检索方法(如 getString()
)在 localeChain
属性指定的语言环境中搜索资源。通过更改该属性,可以使应用程序瞬间使用另一种资源,如使用日语资源而不是英语资源。
应用程序启动时,ResourceManager 会自动使用编译到应用程序中的资源束进行填充。如果创建代码模块,则默认情况下会将模块的类所需的资源编译到模块中。模块加载到应用程序中时,应用程序尚不具有的任何束都将添加到 ResourceManager。
可以编译其中仅具有资源的“资源模块”,然后使用 IResourceManager 的loadResourceModule()
方法加载这些模块。使用资源模块,可以在运行时加载所需资源而不是将资源编译到应用程序中,从而可以支持多个语言环境。
虽然 ResourceManager 通常是用编译到应用程序中的资源束或从模块中加载的资源束填充的,但也可以通过编程方式创建资源束并使用 addResourceBundle()
方法将其添加到 ResourceManager。
另请参见
属性 | 定义方 | ||
---|---|---|---|
localeChain : Array (抽样开始)语言环境字符串(如 [ "en_US" ]) Array,指定要搜索资源的一个或多个语言环境。 | IResourceManager |
方法 | 定义方 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | IEventDispatcher | ||
将指定的 ResourceBundle 添加到 ResourceManager,以便可通过 ResourceManager 方法(如 getString())访问其资源。 | IResourceManager | ||
将事件调度到事件流中。 | IEventDispatcher | ||
搜索 localeChain 中的语言环境以查找指定的资源,并返回所找到的第一个资源束。 | IResourceManager | ||
获取指定资源的值作为 Boolean。 | IResourceManager | ||
返回一个字符串数组,指定所有位于 ResourceManager 中并且属于指定语言环境的 ResourceBundle 对象的束名称。 | IResourceManager | ||
获取指定资源的值作为 Class。 | IResourceManager | ||
获取指定资源的值作为 int。 | IResourceManager | ||
返回一个字符串数组,指定 ResourceBundle 对象位于 ResourceManager 中的所有语言环境。 | IResourceManager | ||
获取指定资源的值作为 Number。 | IResourceManager | ||
获取指定资源的值作为 Object。 | IResourceManager | ||
返回 String 的一个 Array,它指定在 ResourceManager 中存在 ResourceBundle 对象的所有语言环境,使用由 Capabilities.language 或 Capabilities.languages 报告的用户首选项进行排序。 | IResourceManager | ||
返回之前使用 addResourceBundle() 添加到 ResourceManager 的具有指定语言环境和束名称的 ResourceBundle。 | IResourceManager | ||
getString(bundleName:String, resourceName:String, parameters:Array = null, locale:String = null):String 使用指定的值替换占位符之后,获取指定资源的值作为 String。 | IResourceManager | ||
获取指定资源的值作为 String 数组。 | IResourceManager | ||
获取指定资源的值作为 uint。 | IResourceManager | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | IEventDispatcher | ||
仅由实现 IFlexModuleFactory 的类使用。 | IResourceManager | ||
installCompiledResourceBundles(applicationDomain:ApplicationDomain, locales:Array, bundleNames:Array):void 仅由实现 IFlexModuleFactory 的类使用。 | IResourceManager | ||
loadResourceModule(url:String, update:Boolean = true, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null):IEventDispatcher 开始加载包含资源束的资源模块。 | IResourceManager | ||
从 EventDispatcher 对象中删除侦听器。 | IEventDispatcher | ||
从 ResourceManager 删除指定的 ResourceBundle,以便不再能通过 ResourceManager 方法(如 getString())访问其资源。 | IResourceManager | ||
从 ResourceManager 删除指定的语言环境所对应的全部 ResourceBundle,以便不再能通过 ResourceManager 方法(如 getString())访问其资源。 | IResourceManager | ||
此方法尚未实现。 | IResourceManager | ||
从 ResourceManager 调度 change 事件。 | IResourceManager | ||
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | IEventDispatcher |
localeChain | 属性 |
localeChain:Array
[读写]
语言环境字符串(如 [ "en_US" ]
)数组,指定要搜索资源的一个或多个语言环境。
通过调用 ResourceManager 方法 getObject()
、getString()
、getStringArray()
、getNumber()
、getInt()
、getUint()
、getBoolean()
或 getClass()
来获取资源值时,指定的是束名称和资源名称,而不是语言环境。ResourceManager 从 localeChain
中的第一个语言环境开始查找,查找该语言环境中具有指定束名称的 ResourceBundle。如果存在这样的 ResourceBundle 并且其中存在指定的资源,则会返回该资源的值。否则,ResourceManager 将继续查找 localeChain
中的其他语言环境。
通过此方案,可以使用不必包含完整一套本地化资源的语言环境。例如,如果要将应用程序本地化以便用于印第安英语而不是美国英语,只需要提供拼写或用法与美国英语不同的印第安英语的 en_IN
语言环境资源,然后将 localeChain
属性设置为 [ "en_IN", "en_US" ]
即可。
很多框架类都假定它们始终可从某些语言环境获取所需资源;如果无法获取,这些框架类将引发错误。因此,必须确保 localeChain
始终包含完整的一套资源。除非已完成所有框架资源和自己的应用程序资源的全部本地化,否则可以将 "en_US"
语言环境保留在 localeChain
的末尾来确保此要求得到满足。
设置此属性将导致 ResourceManager 调度 "change"
事件。
public function get localeChain():Array
public function set localeChain(value:Array):void
addResourceBundle | () | 方法 |
public function addResourceBundle(resourceBundle:IResourceBundle):void
将指定的 ResourceBundle 添加到 ResourceManager,以便可通过 ResourceManager 方法(如 getString()
)访问其资源。
参数
resourceBundle:IResourceBundle — 要添加的资源束。 |
findResourceBundleWithResource | () | 方法 |
public function findResourceBundleWithResource(bundleName:String, resourceName:String):IResourceBundle
搜索 localeChain
中的语言环境以查找指定的资源,并返回所找到的第一个资源束。如果未找到该资源,则此方法将返回 null
。
参数
bundleName:String —
束名称,如 "MyResources" 。
| |
resourceName:String — 资源束中资源的名称。 |
IResourceBundle —
localeChain 中包含指定资源的第一个 ResourceBundle,或者返回 null 。
|
getBoolean | () | 方法 |
public function getBoolean(bundleName:String, resourceName:String, locale:String = null):Boolean
获取指定资源的值作为 Boolean。
此方法首先调用 getString()
并将结果转换为小写字符。然后,如果结果为 "true"
,则返回 true
;否则返回 false
。
如果未找到指定的资源,则此方法将返回 false
。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
Boolean —
作为 Boolean 的资源值,或者 false (如果未找到该值)。
|
getBundleNamesForLocale | () | 方法 |
public function getBundleNamesForLocale(locale:String):Array
返回一个字符串数组,指定所有位于 ResourceManager 中并且属于指定语言环境的 ResourceBundle 对象的束名称。
未指定该数组中的束名称顺序。
参数
locale:String —
语言环境字符串,如 "en_US" 。
|
Array — 束名称数组。 |
另请参见
getClass | () | 方法 |
public function getClass(bundleName:String, resourceName:String, locale:String = null):Class
获取指定资源的值作为 Class。
此方法调用 getObject()
并使用 as
运算符将其强制为 Class 类型。如果资源值不是类引用,则结果将为 null
。如果已在属性文件中编写如下行:
IMAGE=Embed("image.jpg") BUTTON_SKIN=ClassReference("skins.ButtonSkin_en_US")
并且想要获得 Embed()
或 ClassReference()
指令生成的类,则该方法很有用。
如果未找到指定的资源,则此方法将返回 null
。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
Class —
作为 Class 的资源值,或者 null (如果未找到该值)。
|
getInt | () | 方法 |
public function getInt(bundleName:String, resourceName:String, locale:String = null):int
获取指定资源的值作为 int。
此方法调用 getObject()
并将结果转换为 int。如果已在属性文件中编写如下行:
MINIMUM=5
并且想要获取值 5 而不是 "5"
,则该方法很有用。
如果未找到指定的资源,则此方法将返回 0。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
int — 作为 int 的资源值,或者 0(如果未找到该值)。 |
getLocales | () | 方法 |
public function getLocales():Array
返回一个字符串数组,指定 ResourceBundle 对象位于 ResourceManager 中的所有语言环境。
未指定该数组中的语言环境顺序。
返回Array — 语言环境字符串数组。 |
getNumber | () | 方法 |
public function getNumber(bundleName:String, resourceName:String, locale:String = null):Number
获取指定资源的值作为 Number。
此方法调用 getObject()
并将结果转换为数字。如果已在属性文件中编写如下行:
LONGITUDE=170.3
并且想要获取值 170.3 而不是 "170.3"
,则该方法很有用。
如果未找到指定的资源,则此方法将返回 NaN
。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
Number —
作为 Number 的资源值,或者 NaN (如果未找到该值)。
|
getObject | () | 方法 |
public function getObject(bundleName:String, resourceName:String, locale:String = null):*
获取指定资源的值作为 Object。
返回与 ResourceBundle 的 content
对象中存储的值完全相同的值,不经过任何转换。如果资源是从属性文件中编译的,则 content
对象中的资源值始终为字符串,除非使用 Embed()
或 ClassReference()
指令(在这种情况下资源值为类)。可使用 getString()
、getStringArray()
、getNumber()
、getInt()
、getUint()
、getBoolean()
和 getClass()
方法将该值转换为更多特定类型。
如果未找到指定的资源,则此方法将返回 undefined
。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
* —
与在 content 对象中存储的值完全相同的资源值,或者 undefined (如果未找到资源)。
|
getPreferredLocaleChain | () | 方法 |
public function getPreferredLocaleChain():Array
返回 String 的一个 Array,它指定在 ResourceManager 中存在 ResourceBundle 对象的所有语言环境,使用由 Capabilities.language
或 Capabilities.languages
报告的用户首选项进行排序。
Array — 语言环境字符串数组。 |
getResourceBundle | () | 方法 |
public function getResourceBundle(locale:String, bundleName:String):IResourceBundle
返回之前使用 addResourceBundle()
添加到 ResourceManager 的具有指定 locale
和 bundleName
的 ResourceBundle。如果不存在这样的 ResourceBundle,则此方法返回 null
。
参数
locale:String —
语言环境字符串,如 "en_US" 。
| |
bundleName:String —
束名称,如 "MyResources" 。
|
IResourceBundle —
具有指定 locale 和 bundleName 的 ResourceBundle,如果不存在则返回 null 。
|
另请参见
getString | () | 方法 |
public function getString(bundleName:String, resourceName:String, parameters:Array = null, locale:String = null):String
使用指定的值替换占位符之后,获取指定资源的值作为 String。
此方法调用 getObject()
并将结果转换为字符串。
如果将 parameters
数组传递给此方法,则数组中包含的参数会转换成字符串,然后在返回前在字符串中按顺序替代占位符 "{0}"
、"{1}"
等。
如果未找到指定的资源,则此方法将返回 null
。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
parameters:Array (default = null ) —
替换占位符的参数的数组。在替换每个参数之前都会使用 toString() 方法将其转换为字符串。
| |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
String —
作为 String 的资源值,或者 null (如果未找到该值)。
|
getStringArray | () | 方法 |
public function getStringArray(bundleName:String, resourceName:String, locale:String = null):Array
获取指定资源的值作为 String 数组。
此方法假定资源值是包含用逗号分隔的项目列表的字符串。它将调用 getString()
方法,按逗号位置将字符串拆分成多项,并去掉每项前后的空格。如果已在属性文件中编写如下行:
COUNTRIES=India, China, Japan
并且想要获取值 [ "India", "China", "Japan" ]
而不是值 "India, China, Japan"
,则该方法很有用。
如果未找到指定的资源,则此方法将返回 null
。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
Array —
作为 String 数组的资源值,或者 null (如果未找到该值)。
|
getUint | () | 方法 |
public function getUint(bundleName:String, resourceName:String, locale:String = null):uint
获取指定资源的值作为 uint。
此方法调用 getObject()
方法并将结果转换为 uint。如果已在属性文件中编写如下行:
MINIMUM=5
并且想要获取值 5 而不是 "5"
,则该方法很有用。
如果未找到指定的资源,则此方法将返回 0。
参数
bundleName:String — 资源束的名称。 | |
resourceName:String — 资源束中资源的名称。 | |
locale:String (default = null ) —
要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
uint — 作为 uint 的资源值,或者 0(如果未找到该值)。 |
initializeLocaleChain | () | 方法 |
public function initializeLocaleChain(compiledLocales:Array):void
仅由实现 IFlexModuleFactory 的类使用。
参数
compiledLocales:Array |
installCompiledResourceBundles | () | 方法 |
public function installCompiledResourceBundles(applicationDomain:ApplicationDomain, locales:Array, bundleNames:Array):void
仅由实现 IFlexModuleFactory 的类使用。
参数
applicationDomain:ApplicationDomain | |
locales:Array | |
bundleNames:Array |
loadResourceModule | () | 方法 |
public function loadResourceModule(url:String, update:Boolean = true, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null):IEventDispatcher
开始加载包含资源束的资源模块。
每次调用此方法都会返回一个新的 event-dispatching 对象,可使用该对象了解加载的进度以及加载是成功完成还是产生了错误。该对象调度 ResourceEvent.PROGRESS
、ResourceEvent.COMPLETE
和 ResourceEvent.ERROR
事件。
加载模块之后,资源束将添加到 ResourceManager,但 localeChain
保持不变。如果 update
参数为 true
,将调用 update()
方法。
参数
url:String — 用来加载资源模块的 URL。 | |
update:Boolean (default = true ) —
完成模块加载时是否调用 update() 方法。
| |
applicationDomain:ApplicationDomain (default = null ) —
传递给加载资源模块的 IModuleInfo 类的 load() 方法的 ApplicationDomain。该参数可选,默认值为 null 。
| |
securityDomain:SecurityDomain (default = null ) —
传递给加载资源模块的 IModuleInfo 类的 load() 方法的 SecurityDomain。该参数可选,默认值为 null 。
|
IEventDispatcher —
与该特定加载操作相关联的对象,用于调度 ResourceEvent.PROGRESS 、ResourceEvent.COMPLETE 和 ResourceEvent.ERROR 。
|
另请参见
removeResourceBundle | () | 方法 |
public function removeResourceBundle(locale:String, bundleName:String):void
从 ResourceManager 删除指定的 ResourceBundle,以便不再能通过 ResourceManager 方法(如 getString()
)访问其资源。
参数
locale:String —
语言环境字符串,如 "en_US" 。
| |
bundleName:String —
束名称,如 "MyResources" 。
|
另请参见
removeResourceBundlesForLocale | () | 方法 |
public function removeResourceBundlesForLocale(locale:String):void
从 ResourceManager 删除指定的语言环境所对应的全部 ResourceBundle,以便不再能通过 ResourceManager 方法(如 getString()
)访问其资源。
参数
locale:String —
语言环境字符串,如 "en_US" 。
|
另请参见
unloadResourceModule | () | 方法 |
public function unloadResourceModule(url:String, update:Boolean = true):void
此方法尚未实现。
参数
url:String | |
update:Boolean (default = true )
|
update | () | 方法 |
public function update():void
从 ResourceManager 调度 change
事件。
如果涉及 ResourceManager 方法 getObject()
、getString()
、getStringArray()
、getNumber()
、getInt()
、getUint()
、getBoolean()
或 getClass()
,则会导致重新计算绑定的表达式。
该操作还会引起执行 UIComponent、Formatter 或 Validator 的 resourcesChanged()
方法。很多组件通过实现此方法来根据最新资源更新其状态。