在 Flex 项目开发的后期,常常为了让项目通用,需要实现国际化,也就是多语言支持,比如中文简体、中文繁体、英文等等。最近,由于项目需要,也尝试了一下国际化的实现,遇到了很多问题,通过上网查询,也学到了不少知识。在这里简单把实现步骤写一写,方便以后查阅,也希望能给碰到同样问题的朋友们一点点参考。
好了,现在就说说国际化的配置吧。
第一步,在 Flex 工程项目中添加与 src 同级的目录 locale,用于放置本地化文件,也就是多语言字符串的配置文件。
第二步,配置翻译参数。
在项目名上,鼠标右键,选择属性,弹出属性窗口,如图选择 Flex 编译器。
在附加的编译器参数中输入以下配置:
-locale en_US -locale zh_CN -locale zh_TW -source-path=locale/{locale}
注意:配置参数时,如果原来已经有参数,那么需要先输入一个空格,然后再把上面的参数粘贴才行。
第三步,在主应用程序总添加对配置文件资源的引用,然后直接用 ResourceManager 类来设置语言或者进行语言切换。主应用程序所有代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- width="300" height="200">
- <fx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import mx.events.FlexEvent;
- import mx.resources.Locale;
- import mx.resources.ResourceManager;
- import mx.utils.LoaderUtil;
- protected function changeLang_clickHandler(event:MouseEvent):void
- {
- //var strArr:Array = ResourceManager.getInstance().localeChain;
- //Alert.show(strArr.length.toString());
- //Alert.show(strArr.toString());
- }
- /**
- * 多语言切换
- */
- protected function mutiLang_clickHandler(event:MouseEvent):void
- {
- if (muti_lang.getRadioButtonAt(0).selected == true) {
- resourceManager.localeChain=['zh_CN'];
- } else if (muti_lang.getRadioButtonAt(1).selected == true) {
- resourceManager.localeChain=['en_US'];
- } else {
- resourceManager.localeChain=['zh_TW'];
- }
- }
- ]]>
- </fx:Script>
- <s:metaData>
- [ResourceBundle("message")]
- </s:metaData>
- <fx:Declarations>
- <s:RadioButtonGroup id="muti_lang"/>
- </fx:Declarations>
- <mx:Label x="100" y="50" text="{resourceManager.getString('message','TEST_STRING')}"/>
- <mx:Label x="100" y="75" text="@Resource(bundle='message',key=language)" visible="false"/>
- <mx:HBox x="100" y="100" horizontalCenter="left">
- <s:RadioButton label="中文" groupName="muti_lang" click="mutiLang_clickHandler(event)" selected="true"/>
- <s:RadioButton label="英文" groupName="muti_lang" click="mutiLang_clickHandler(event)"/>
- <s:RadioButton label="台湾" groupName="muti_lang" click="mutiLang_clickHandler(event)"/>
- </mx:HBox>
- </s:Application>
附上三个配置文件的内容,编码都为 utf-8,文件名为 message.properties。注意,message 为文件名,可以自己随便改,只要和代码中对应上就可以了,但 .properties 的后缀别改。
- 配置文件一:
- language=US
- TEST_STRING=Test String
- 配置文件二:
- language=CN
- TEST_STRING=测试字符串
- 配置文件三:
- language=CN
- TEST_STRING=測試字符串
到这里,就可以运行程序了,完全好使。
另外,如果项目中,有一个主项目文件夹,还有其它的库项目文件夹,而且和主项目文件夹是同一层目录的话,这个时候,配置文件只需要放在主项目文件夹下,主项目的编译参数就是上面的参数,而库项目文件夹只需要配置这些配置文件就可以了,配置参数稍微有点不同,需要用相对路径,找到这些配置文件才可以。参数如下:
-locale en_US -locale zh_CN -locale zh_TW -source-path=${DOCUMENTS}/TestLang/locale/{locale}
如果还有问题,这里附上 Demo 的打包程序,可以下载后导入工程,再详细研究学习。(百度云共享下载 | 360云盘下载 (提取码:2452))