现在位置: 首页 > 博客文章 > 电脑相关 > IT开发 > 开发语言 > Flex > 正文
Flex项目的国际化
2014年10月23日 16:11:49 Flex ⁄ 共 3207字 暂无评论 ⁄ 被围观 2,540次

在 Flex 项目开发的后期,常常为了让项目通用,需要实现国际化,也就是多语言支持,比如中文简体、中文繁体、英文等等。最近,由于项目需要,也尝试了一下国际化的实现,遇到了很多问题,通过上网查询,也学到了不少知识。在这里简单把实现步骤写一写,方便以后查阅,也希望能给碰到同样问题的朋友们一点点参考。

好了,现在就说说国际化的配置吧。

第一步,在 Flex 工程项目中添加与 src 同级的目录 locale,用于放置本地化文件,也就是多语言字符串的配置文件。

Flex国际化

第二步,配置翻译参数。

在项目名上,鼠标右键,选择属性,弹出属性窗口,如图选择 Flex 编译器。

Flex国际化

在附加的编译器参数中输入以下配置:
-locale en_US -locale zh_CN -locale zh_TW -source-path=locale/{locale}

注意:配置参数时,如果原来已经有参数,那么需要先输入一个空格,然后再把上面的参数粘贴才行。

第三步,在主应用程序总添加对配置文件资源的引用,然后直接用 ResourceManager 类来设置语言或者进行语言切换。主应用程序所有代码如下:

Code   ViewPrint
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   
  3.                xmlns:s="library://ns.adobe.com/flex/spark"   
  4.                xmlns:mx="library://ns.adobe.com/flex/mx"   
  5.                width="300" height="200">  
  6.     <fx:Script>  
  7.         <![CDATA[  
  8.             import mx.controls.Alert;  
  9.             import mx.events.FlexEvent;  
  10.             import mx.resources.Locale;  
  11.             import mx.resources.ResourceManager;  
  12.             import mx.utils.LoaderUtil;  
  13.               
  14.             protected function changeLang_clickHandler(event:MouseEvent):void  
  15.             {  
  16.                 //var strArr:Array = ResourceManager.getInstance().localeChain;  
  17.                 //Alert.show(strArr.length.toString());  
  18.                 //Alert.show(strArr.toString());  
  19.             }  
  20.               
  21.             /** 
  22.              * 多语言切换 
  23.              */  
  24.             protected function mutiLang_clickHandler(event:MouseEvent):void  
  25.             {  
  26.                 if (muti_lang.getRadioButtonAt(0).selected == true) {  
  27.                     resourceManager.localeChain=['zh_CN'];  
  28.                 } else if (muti_lang.getRadioButtonAt(1).selected == true) {  
  29.                     resourceManager.localeChain=['en_US'];  
  30.                 } else {  
  31.                     resourceManager.localeChain=['zh_TW'];  
  32.                 }  
  33.             }  
  34.               
  35.         ]]>  
  36.     </fx:Script>  
  37.     <s:metaData>  
  38.         [ResourceBundle("message")]  
  39.     </s:metaData>  
  40.     <fx:Declarations>  
  41.         <s:RadioButtonGroup id="muti_lang"/>  
  42.     </fx:Declarations>  
  43.     <mx:Label x="100" y="50" text="{resourceManager.getString('message','TEST_STRING')}"/>  
  44.     <mx:Label x="100" y="75" text="@Resource(bundle='message',key=language)" visible="false"/>  
  45.     <mx:HBox x="100" y="100" horizontalCenter="left">  
  46.         <s:RadioButton label="中文" groupName="muti_lang" click="mutiLang_clickHandler(event)" selected="true"/>  
  47.         <s:RadioButton label="英文" groupName="muti_lang" click="mutiLang_clickHandler(event)"/>  
  48.         <s:RadioButton label="台湾" groupName="muti_lang" click="mutiLang_clickHandler(event)"/>  
  49.     </mx:HBox>  
  50. </s:Application>  

 

附上三个配置文件的内容,编码都为 utf-8,文件名为 message.properties。注意,message 为文件名,可以自己随便改,只要和代码中对应上就可以了,但 .properties 的后缀别改。

Code   ViewPrint
  1. 配置文件一:  
  2. language=US  
  3. TEST_STRING=Test String  
  4.   
  5. 配置文件二:  
  6. language=CN  
  7. TEST_STRING=测试字符串  
  8.   
  9. 配置文件三:  
  10. language=CN  
  11. TEST_STRING=測試字符串  

 

到这里,就可以运行程序了,完全好使。

Flex国际化

另外,如果项目中,有一个主项目文件夹,还有其它的库项目文件夹,而且和主项目文件夹是同一层目录的话,这个时候,配置文件只需要放在主项目文件夹下,主项目的编译参数就是上面的参数,而库项目文件夹只需要配置这些配置文件就可以了,配置参数稍微有点不同,需要用相对路径,找到这些配置文件才可以。参数如下:
-locale en_US -locale zh_CN -locale zh_TW -source-path=${DOCUMENTS}/TestLang/locale/{locale}

如果还有问题,这里附上 Demo 的打包程序,可以下载后导入工程,再详细研究学习。(百度云共享下载 | 360云盘下载 (提取码:2452))

给我留言

留言无头像?