这两天看了一下Flex 3的本地化应用支持的功能,比起Flex 2来,很大的一个进步就是支持运行时更换locale。先在google搜索了一把,找到了Gordon Smith的文章,介绍的非常详细,原文地址是http://labs.adobe.com/wiki/index.php /Flex_3:Feature_Introductions:_Runtime_Localization,照着这篇文章自己实践了一下,很顺利的实现了该功能,下面就把主要的步骤记录一下
在项目中新建一个locale的目录(src目录下);
在locale目录下创建需要支持语言的子目录,如locale/zh_CN, locale/en_US;
在这些子目录下新建properties文件,各目录下的属性文件需要同名。属性文件的格式与java的属性文件相同,每行以"key=value"的形式列出键值对,以utf-8编码保存文件;
编译mxml文件时加上 -locale=en_US,zh_CN -source-path=/locale/{locale}的选项;
创建本地化的flex framework资源:在命令行中切换到{flex_sdk}/bin目录,使用copylocale程序复制新的资源 (copylocale en_US zh_CN)
接下去介绍一下如何编写mxml跟as文件中的代码
在mxml文件中,首先加入下列代码块
<mx:metadata>
[ResourceBundle("resources")]
</mx:metadata>
这里的"resource"对应之前添加的属性文件的文件名。然后就可以使用
resourceManager.getString('resources', 'key')
的形式来获取某个属性,当属性的值为数值等其他类型时,也可以调用相应的如
getNumber('resources', 'id')
等方法来实现。在mxml文件中还可以使用
@Resource(bundle='resources', key='id')
这样的形式在标签中直接获取资源属性。
而在as文件中则可以通过
ResourceManager.getInstance().getString('resources', 'key')
来获取属性值。之前mxml文件中所用得resourceManager起始就是ResourceManager的实例。
到此,已经实现了Flex应用的本地化了,如果需要在运行时切换locale,只需使用
ResourceManage.getInstance().localeChain = ['zh_CN'];
即可,如果要在程序初始化前指定所使用的locale,在嵌入该flash的html文件的flashVars属性中加入localeChain=zh_CN,否则程序默认以编译参数中的第一个locale运行。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/happybombman/archive/2008/10/31/3193590.aspx