=波波日志 > flash/flex/fcs/AIR > 26.3.使用本地化资源管理器=
[转]26.3.使用本地化资源管理器
26.3.1. 问题
我想支持小数量的本地化需求或者在运行时通过编程决定区域,或者由用户选择区域。
26.3.2. 解决办法
使用ResourceManager类支持多个区域,允许应用程序在运行时改变区域设置。
26.3.3. 讨论
ResourceManager类是编译器根据本地化属性文件创建资源包所用的最主要的ActionScript接口。它可以接受各种类型的资源包资源以及提供一种机制可动态设置所需区域。资源管理器是一个单例模式,管理着整个程序的区域设置。每个继承自UIComponent的类都有个protected属性名为resourceManager,它就是一个资源管理器单例的引用。
虽然@Resource指令可方便的绑定本地化内容到MXML标签上,但是对于ActionScript 组件或ActionScript方法涉及到本地化资源时它就没什么用武之地了。这种情况下,最好使用资源管理器,因为它提供了一些方法用于访问本地化数据或者数据绑定表达式的目标使用。下面的例子引用之前的LocalizationManager.mxml,用ResourceManager方法替换26.2节的LocalizationResource.mxml中使用的@Resource 指令:
这些方法的名称非常接近于载入的资源类型,其中的参数即资源绑定名称和所需属性的键值也和@Resource指令相似。
使用资源管理器绑定本地化属性值到它们的目标上还有另一个好处:Flex 3可以在运行时动态改变区域设置,现在不需要强制为每个区域都编译一个SWF文件了。方法的绑定属性可以使得应用程序能自己更新改变后的区域设置。在LocalizationManager.mxml例子中,提供按钮让用户选择英语或法语:
在这个例子中,localeChain属性根据用户选择的按钮而被重置。localeChain属性是一个字符串数组,表示所需区域的顺序列表。这是非常有用的,例如,应用程序将从浏览器通过Accept-Language HTTP 标头或主机操作系统的语言首选项接收有关用户的语言首选项的信息,英国的用户首选的区域设置是en_GB,但用户也可以接受en_US。当资源管理器的方法被调用时,它将根据在localeChain中定义的指定名称顺序寻找资源绑定包,因此,要这样设置localeChain属性提供en_US给英国用户选择:
我想支持小数量的本地化需求或者在运行时通过编程决定区域,或者由用户选择区域。
26.3.2. 解决办法
使用ResourceManager类支持多个区域,允许应用程序在运行时改变区域设置。
26.3.3. 讨论
ResourceManager类是编译器根据本地化属性文件创建资源包所用的最主要的ActionScript接口。它可以接受各种类型的资源包资源以及提供一种机制可动态设置所需区域。资源管理器是一个单例模式,管理着整个程序的区域设置。每个继承自UIComponent的类都有个protected属性名为resourceManager,它就是一个资源管理器单例的引用。
虽然@Resource指令可方便的绑定本地化内容到MXML标签上,但是对于ActionScript 组件或ActionScript方法涉及到本地化资源时它就没什么用武之地了。这种情况下,最好使用资源管理器,因为它提供了一些方法用于访问本地化数据或者数据绑定表达式的目标使用。下面的例子引用之前的LocalizationManager.mxml,用ResourceManager方法替换26.2节的LocalizationResource.mxml中使用的@Resource 指令:
+展开
-XML
<mx:VBox horizontalCenter="0" verticalCenter="0" horizontalAlign="center"
borderSkin="{resourceManager.getClass(''localizedContent','borderSkin')}">
<mx:Label fontSize="24" text="{resourceManager.getString('localizedContent', 'page Title')}" />
<mx:Label fontSize="24" text="{resourceManager.getString('localizedContent', 'lang uage')}" />
<mx:Image source="{resourceManager.getClass('localizedContent','flag')}" />
</mx:VBox>
borderSkin="{resourceManager.getClass(''localizedContent','borderSkin')}">
<mx:Label fontSize="24" text="{resourceManager.getString('localizedContent', 'page Title')}" />
<mx:Label fontSize="24" text="{resourceManager.getString('localizedContent', 'lang uage')}" />
<mx:Image source="{resourceManager.getClass('localizedContent','flag')}" />
</mx:VBox>
这些方法的名称非常接近于载入的资源类型,其中的参数即资源绑定名称和所需属性的键值也和@Resource指令相似。
使用资源管理器绑定本地化属性值到它们的目标上还有另一个好处:Flex 3可以在运行时动态改变区域设置,现在不需要强制为每个区域都编译一个SWF文件了。方法的绑定属性可以使得应用程序能自己更新改变后的区域设置。在LocalizationManager.mxml例子中,提供按钮让用户选择英语或法语:
+展开
-XML
<mx:HBox>
<mx:Button label="In English" click="resourceManager.localeChain = ['en_US']" />
<mx:Button label="En Francais" click="resourceManager.localeChain = ['fr_FR']" />
</mx:HBox>
<mx:Button label="In English" click="resourceManager.localeChain = ['en_US']" />
<mx:Button label="En Francais" click="resourceManager.localeChain = ['fr_FR']" />
</mx:HBox>
在这个例子中,localeChain属性根据用户选择的按钮而被重置。localeChain属性是一个字符串数组,表示所需区域的顺序列表。这是非常有用的,例如,应用程序将从浏览器通过Accept-Language HTTP 标头或主机操作系统的语言首选项接收有关用户的语言首选项的信息,英国的用户首选的区域设置是en_GB,但用户也可以接受en_US。当资源管理器的方法被调用时,它将根据在localeChain中定义的指定名称顺序寻找资源绑定包,因此,要这样设置localeChain属性提供en_US给英国用户选择:
+展开
-ActionScript
resourceManager.localeChain = ["en_GB", "en_US"];
类别:flash/flex/fcs/AIR 作者:转载 日期:2010-04-30 【评论:0】
暂时没有评论!
发表留言
百度赞助
同类热门博文
- ·As+lightbox+js实现..
- ·21.8.使用Cairngorm..
- ·13.1.为ArrayCollec..
- ·18.13.通过二进制So..
- ·22.7.使用ModuleLoa..
- ·JavaScript控制Flas..
- ·6.6.动态载入外部图..
- ·flash预加载进度条p..
博格Tag
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(601)
- 操作系统及应用软件(377)
- JavaScript/Ajax(331)
- SQL及数据库(135)
- 黑客技术(115)
- Asp/VBScript(111)
- HTML/WML/CSS兼容/XML(102)
- PHP/apache/Perl(96)
- 网站排名及优化(96)
- 其他(75)
- showbo日志(66)
- lucene.net/分词技术(33)
- 计算机网络(26)
- C#设计模式(26)
- 机械重工(26)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
- ·PHP socket套接字学..
- ·Warning Cannot sen..
- ·php与flash as3 soc..
- ·Flash XMLSocket使用..
- ·给flash右键增加自定..
- ·flash控件html及col..
- ·Flash加载XML文件CD..
- ·Flex3中文教程--hom..
随机博文
