flex多语言切换方式-i18n
发布时间:2020-12-15 03:49:10 所属栏目:百科 来源:网络整理
导读:Flex使用ResourceManager,可以实现Flex多语言解决方案,新建不同的语言版本文件,通过设定采用哪种语言,即可实现相关字段显示对应的语言版本。 (注:可参考Tour de Flex中的输入resource可以找到例子 Localization供参考) 实现步骤如下: 参考资料:http
Flex使用ResourceManager,可以实现Flex多语言解决方案,新建不同的语言版本文件,通过设定采用哪种语言,即可实现相关字段显示对应的语言版本。
(注:可参考Tour de Flex中的输入resource可以找到例子 Localization供参考) 实现步骤如下: 参考资料:http://www.cnblogs.com/WideWeide/archive/2010/03/16/1687668.html 1、设置编译参数右击项目,选择属性,在Flex 编译器中输入:(这里提供中文和英文两种版本) -locale en_US -locale zh_CN -source-path=locale/{locale} 2、新建语言资源文件在src目录下,新建locale文件夹,在locale文件夹; 在locale文件夹下,新建en_US文件夹,在文件夹内新建rtis.properties文件: admin=user_Id password=password 在locale文件夹下,新建zh_CN文件夹,在文件夹内新建rtis.properties文件: admin=登录名称 password=登录密码 3、编码实现以I18NTest.mxml为例,采用两种方式(注:两种方法都要添加引用的资源,rits与新建的rtis.properties文件名相对应 <fx:Metadata> [ResourceBundle("rtis")] </fx:Metadata>) I18NTest.mxml:<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"? ? xmlns:s="library://ns.adobe.com/flex/spark"? ? xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <!--添加资源文件--> <fx:Metadata> [ResourceBundle("rtis")] </fx:Metadata> <fx:Script> <![CDATA[ import base.ResourceUtil; import mx.resources.ResourceManager; [Bindable] public var nameString:String; [Bindable] public var ?passwordString:String; [Bindable] private var locales:Array = [? {label: "English",code:"en_US"},? {label: "Chinese",code:"zh_CN"} ];? //方法一,直接使用resourceManager private function changeHandler(event:Event):void { //修改采用的语言版本 resourceManager.localeChain = [ localeComboBox.selectedItem.code ]; nameString=ResourceManager.getInstance().getString("rtis","admin"); passwordString=ResourceManager.getInstance().getString("rtis","password"); } //方法二,采用resourceUitl自定义的ResourceManager封装 private function changeHandler2(event:Event):void { //修改采用的语言版本 ResourceUtil.getInstance().changeLanguage(localeComboBox2.selectedItem.code); nameString=ResourceUtil.getInstance().getString("admin"); passwordString=ResourceUtil.getInstance().getString("password"); } ]]> </fx:Script> <s:VGroup width="100%" ?height="100%"> <s:HGroup gap="30"> <s:Label text="方法一"/> <mx:ComboBox id="localeComboBox" dataProvider="{locales}"? change="changeHandler(event)"/> </s:HGroup> <s:HGroup gap="30"> <s:Label text="方法二"/> <mx:ComboBox id="localeComboBox2" dataProvider="{locales}"? change="changeHandler2(event)"/> </s:HGroup> <s:Label id="label1" text="{nameString}"/> <s:Label id="label2" text="{passwordString}"/> </s:VGroup> </s:WindowedApplication> 附上base.ResourceUtil自定义的ResourceManager封装ResourceUtil.as代码:该类采用了单例的模式 参考资料:http://hackerzhou.me/2011/04/develop-flex-exprience-chapter-two-localization.html package base { import flash.events.Event; import flash.events.EventDispatcher; public class ResourceUtil extends EventDispatcher { import mx.resources.IResourceManager; import mx.resources.ResourceManager; import mx.controls.Alert; private static const BUNDLE_NAME:String ="rtis"; [Bindable] public static var resourceManager:IResourceManager = null; private static var instance:ResourceUtil = null; private static var currentLanguage:String = "zh_CN"; public static function getInstance():ResourceUtil { if(instance == null) { instance = new ResourceUtil(); resourceManager = ResourceManager.getInstance(); resourceManager.initializeLocaleChain([currentLanguage]); } return instance; } public function changeLanguage(languageName:String):void { resourceManager.localeChain.localeChain = [languageName]; currentLanguage = languageName; dispatchChange(); } [Bindable("change")] public function getImage(resName:String):Class { var result:Class = resourceManager.getClass(BUNDLE_NAME,resName,currentLanguage); return result; } [Bindable("change")] public function getString(resName:String,para:Array = null):String { var result:String = resourceManager.getString(BUNDLE_NAME,para,currentLanguage); return result; } private function dispatchChange():void { dispatchEvent(new Event("change")); } } }(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |