Flex多国语言示例
示例以中、英两个语言版本为例:
1、新建Flex Project
2、设置Project中的源路径,例如:locale/{locale}
3、设置Flex编译器的附加参数:-locale zh_CN en_US
4、新建文件夹:locale,然后在其目录下新建两个语言包文件夹:
zh_CN
en_US
两个文件夹内添加一个名为info.properties(文件后缀名必须是properties,文件名随意)
info.properties里的内容为:
中文为:
info=当前语言: {0} 当前的IDE是{1} 当前使用的版本是:{2}
英文为:
info=Current Langunage: {0} Current use IDE {1} Version now is {2}
5、打开Flex Project的mxml主文件
先绑定语言包
<mx:Metadata>
[ResourceBundle("info")]
</mx:Metadata>
info为语言包文件的文件名(info.properties)
在界面添加两个按钮,点击时更改语言包设置,然后进行测试:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600"> <mx:Metadata> [ResourceBundle("info")] </mx:Metadata> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.resources.ResourceBundle; import mx.resources.ResourceManager; import mx.utils.StringUtil; function show():void { var infoStr:String = ResourceManager.getInstance().getString("info", "info"); var arr:Array = null; if (ResourceManager.getInstance().localeChain.toString() == "zh_CN") { arr = ['中文', 'Flash Builder', 'V1.0']; } else { arr = ["English", 'Flash Builder', 'V1.0']; } infoStr = StringUtil.substitute(infoStr, arr); Alert.show(infoStr, "这里是标题"); } function show_CN(evt:MouseEvent):void { ResourceManager.getInstance().localeChain = ["zh_CN"]; show(); } function show_US(evt:MouseEvent):void { ResourceManager.getInstance().localeChain = ["en_US"]; show(); } ]]> </mx:Script> <mx:Button label="显示中文" x="339" y="230" click="show_CN(event);"></mx:Button> <mx:Button label="显示英文" x="339" y="280" click="show_US(event);"></mx:Button> </mx:Application>
然后按F11,调试运行。
最终的效果图为:
在获取文本信息的时候,使用了flex中的字符串工具“StringUtil”包中的“substitute”方法:
源码就是一个使用正则替换的过程: