包 | mx.resources |
接口 | public interface IResourceManager extends IEventDispatcher |
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
本地化涉及三个主要概念:语言环境、资源和资源包。
语言环境指定将应用程序本地化到的语言和国家/地区。例如,语言环境 "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。
相关 API 元素
属性 | 由以下参数定义 | ||
---|---|---|---|
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 | ||
初始化 ResourceManager 的 localeChain 属性 | IResourceManager | ||
installCompiledResourceBundles(applicationDomain:ApplicationDomain, locales:Array, bundleNames:Array, useWeakReference:Boolean = false):Array
创建编辑到 SWF 的所有 ResourceBundle 子类的实例,并将它们添加到 ResourceManager 中。 | 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
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
语言环境字符串(如 [ "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, useWeakReference:Boolean = false):void
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
将指定的 ResourceBundle 添加到 ResourceManager,以便可通过 ResourceManager 方法(如 getString()
)访问其资源。
参数
resourceBundle:IResourceBundle — 要添加的资源包。
| |
useWeakReference:Boolean (default = false ) — 确定 ResourceManager 是否保留对资源包的弱引用。如果 useWeakReference 为 true ,则 ResourceManager 提供对资源包的弱引用。当调用者选择使用弱引用时,调用者有责任保留对资源包的强引用,使它不会被过早当作垃圾回收。如果 useWeakReference 为 false ,则 ResourceManager 保留对资源包的强引用,使它不会被当做垃圾回收。
当 Flex 子应用程序或模块将其已编译的资源包自动添加到 ResourceManager 时,将调用 |
findResourceBundleWithResource | () | 方法 |
public function findResourceBundleWithResource(bundleName:String, resourceName:String):IResourceBundle
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
搜索 localeChain
中的语言环境以查找指定的资源,并返回所找到的第一个资源包。如果未找到该资源,则此方法将返回 null
。
参数
bundleName:String — 束名称,如 "MyResources" 。
| |
resourceName:String — 资源包中资源的名称。
|
IResourceBundle — localeChain 中包含指定资源的第一个 ResourceBundle,或者返回 null 。
|
getBoolean | () | 方法 |
public function getBoolean(bundleName:String, resourceName:String, locale:String = null):Boolean
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
获取指定资源的值作为 Boolean。
此方法首先调用 getString()
并将结果转换为小写字符。然后,如果结果为 "true"
,则返回 true
;否则返回 false
。
如果未找到指定的资源,则此方法将返回 false
。
参数
bundleName:String — 资源包的名称。
| |
resourceName:String — 资源包中资源的名称。
| |
locale:String (default = null ) — 要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
Boolean — 作为 Boolean 的资源值,或者 false (如果未找到该值)。
|
getBundleNamesForLocale | () | 方法 |
getClass | () | 方法 |
public function getClass(bundleName:String, resourceName:String, locale:String = null):Class
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
获取指定资源的值作为 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
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
获取指定资源的值作为 int。
此方法调用 getObject()
并将结果转换为 int。如果已在属性文件中编写如下行:
MINIMUM=5
并且想要获取值 5 而不是 "5"
,则该方法很有用。
如果未找到指定的资源,则此方法将返回 0。
参数
bundleName:String — 资源包的名称。
| |
resourceName:String — 资源包中资源的名称。
| |
locale:String (default = null ) — 要用于查找的特定语言环境,或者使用 null 来搜索 localeChain 中的所有语言环境。该参数是可选的,默认值为 null ;应该很少需要指定该参数。
|
int — 作为 int 的资源值,或者 0(如果未找到该值)。
|
getLocales | () | 方法 |
getNumber | () | 方法 |
public function getNumber(bundleName:String, resourceName:String, locale:String = null):Number
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
获取指定资源的值作为 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):*
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
获取指定资源的值作为 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 | () | 方法 |
getResourceBundle | () | 方法 |
public function getResourceBundle(locale:String, bundleName:String):IResourceBundle
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
返回之前使用 addResourceBundle()
添加到 ResourceManager 的具有指定 locale
和 bundleName
的 ResourceBundle。如果不存在这样的 ResourceBundle,则此方法返回 null
。
参数
locale:String — 语言环境字符串,如 "en_US" 。
| |
bundleName:String — 束名称,如 "MyResources" 。
|
IResourceBundle — 具有指定 locale 和 bundleName 的 ResourceBundle,如果不存在则返回 null 。
|
相关 API 元素
getString | () | 方法 |
public function getString(bundleName:String, resourceName:String, parameters:Array = null, locale:String = null):String
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
使用指定的值替换占位符之后,获取指定资源的值作为 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
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
获取指定资源的值作为 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
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
获取指定资源的值作为 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
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
初始化 ResourceManager 的 localeChain
属性(使用将操作系统的用户首选区域设置列表与 SWF 中可用的区域设置列表进行比较的算法)。
例如,如果用户已指示其操作系统的首选语言是法语,而 SWF 针对 en_US、fr_FR 和 de_DE 区域设置进行编译的,则 localeChain
将设置为其首选区域设置为 fr_FR。
此方法仅由实现 IFlexModuleFactory 接口的类的使用。
参数
compiledLocales:Array — 一个字符串数组,用于指定针对其编译了 SWF 的区域设置。
|
相关 API 元素
installCompiledResourceBundles | () | 方法 |
public function installCompiledResourceBundles(applicationDomain:ApplicationDomain, locales:Array, bundleNames:Array, useWeakReference:Boolean = false):Array
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
创建编辑到 SWF 的所有 ResourceBundle 子类的实例,并将它们添加到 ResourceManager 中。
例如,如果 locales
参数为 [ "en_US", "ja_JP" ],bundleNames
参数为 [ "core", "controls" ],将安装四个资源包。
此方法仅由实现 IFlexModuleFactory 接口的类的使用。
参数
applicationDomain:ApplicationDomain — 用于根据名称查找资源包类的 ApplicationDomain。
| |
locales:Array — 一个字符串数组,用于指定针对其编译了 SWF 的区域设置。
| |
bundleNames:Array — 一个字符串数组,用于指定编译到 SWF 中的资源包的名称。
| |
useWeakReference:Boolean (default = false ) — 一个标志,用于指定是否使用弱引用将资源包安装到 ResourceManager。
|
Array — 创建并添加到 ResourceManager 中的 ResourceBundle 实例的数组。
|
相关 API 元素
loadResourceModule | () | 方法 |
public function loadResourceModule(url:String, update:Boolean = true, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null):IEventDispatcher
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
开始加载包含资源包的资源模块。
每次调用此方法都会返回一个新的 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 。
|
相关 API 元素
removeResourceBundle | () | 方法 |
public function removeResourceBundle(locale:String, bundleName:String):void
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
从 ResourceManager 删除指定的 ResourceBundle,以便不再能通过 ResourceManager 方法(如 getString()
)访问其资源。
参数
locale:String — 语言环境字符串,如 "en_US" 。
| |
bundleName:String — 束名称,如 "MyResources" 。
|
相关 API 元素
removeResourceBundlesForLocale | () | 方法 |
unloadResourceModule | () | 方法 |
public function unloadResourceModule(url:String, update:Boolean = true):void
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
开始卸载已加载的资源模块。
卸载模块后,其资源包会从 ResourceManager 中删除,但是 localeChain
会保持不变。如果 update
参数为 true
,将调用 update()
方法。
参数
url:String — 已用于加载资源模块的 URL。
| |
update:Boolean (default = true ) — 完成模块卸载时是否调用 update() 方法。
|
update | () | 方法 |
public function update():void
语言版本: | ActionScript 3.0 |
产品版本: | Flex 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
从 ResourceManager 调度 change
事件。
如果涉及 ResourceManager 方法 getObject()
、getString()
、getStringArray()
、getNumber()
、getInt()
、getUint()
、getBoolean()
或 getClass()
,则会导致重新计算绑定的表达式。
该操作还会引起执行 UIComponent、Formatter 或 Validator 的 resourcesChanged()
方法。很多组件通过实现此方法来根据最新资源更新其状态。
Tue Jun 12 2018, 11:04 AM Z