flex国际化

准备:

flex3只支持两种语言,en_US,ja_JP,而flex4中则支持多国语言,所以可以将flex4中的%FLEX_HOME%\frameworks\locale\zh_CN拷贝至flex3中。


项目中增加国际化
一.配置

目录结构:
   1. flex_src  
   2.     --locale  
   3.         --zh_CN  
   4.                message.properties  
   5.         --en_US  
   6.                message.properties  

message.properties内容使用UTF-8编码.

开发环境配置:

在Eclipse开发环境中的Flex Compiler/Additional compiler arguments选项

增加如下参数
-locale zh_CN -locale en_US -source-path=locale/{locale} 

二.使用国际化

Flex中提供了两种方法使用本地化文件:

1.使用@Resource
   1. <mx:Label text="@Resource(key='name', bundle='message')"/>  

其中 key 表示的是要取资源的 key , bundle 表示的是本地化文件,去掉 .properties 之后的名称

2.使用 ResourceManager
mx:Label text="resourceManager.getString("bundleName","key")"/> 

注意:如果容器中没有resourceManager这个变量,可以使用ResourceManager.getInstance()代替resourceManager,因为ResourceManager是单态的。

编译检查:

使用[ResourceBundle('message')]可以为编译器提供编译检查,实际不需要指定这个也是可以的。
# <mx:Metadata>  
# [ResourceBundle('message')]  
# </mx:Metadata> 

三.动态修改当前语言
   1. ResourceManager.getInstance().localeChain = ['zh_CN'];  

四.减少编译大小

由于flex是使用编译器将国际化信息编译进swf中,所以如果将所有的语言全部编译进swf,会导致swf文件过于庞大。而正如国内的环境,如果你的用户大部分都是中文用户,实在没有必要为了少量英文用户而增加swf文件的大小。所以最好的效果是 *独立编译*。即编译出:
# main_zh_CN.swf  
# main_en_US.swf 

参考: http://www.nbilyk.com/flex-localization-example

当然这样处理会麻烦一点,请具体参考你编译出来的swf大小,相差不大的请也可以忽略此项。

五. ant编译

   1. <property name="FLEX_HOME" value="${env.FLEX_HOME}"/>  
   2. <property name="FLEX_SWC" value="${basedir}/flex_libs"/>  
   3. <property name="FLEX_SRC" value="${basedir}/flex_src"/>  
   4.   
   5. <target name="compile-flex">  
   6.     <echo message="FLEX_HOME:${FLEX_HOME}"/>  
   7.   
   8.     <!-- tasks: mxmlc,compc,html-wrapper -->  
   9.     <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />  
  10.   
  11.     <!-- 具体编译参数请参考:http://www.k-zone.cn/zblog/post/flex-compiler-parameter.html -->  
  12.     <mxmlc  
  13.            file="${basedir}/flex_src/${flex.application.name}.mxml"  
  14.            output="${basedir}/dist/web/flex/${flex.application.name}.swf"  
  15.            actionscript-file-encoding="UTF-8"  
  16.            keep-generated-actionscript="false"  
  17.            incremental="true"  
  18.         compiler.show-actionscript-warnings="true"  
  19.         compiler.show-binding-warnings="true"  
  20.         compiler.show-unused-type-selector-warnings="true"  
  21.         compiler.strict="true">  
  22.   
  23.         <!-- Get default compiler options. -->  
  24.         <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>  
  25.   
  26.         <!-- List of path elements that form the roots of ActionScript class hierarchies. -->  
  27.         <source-path path-element="${FLEX_SRC}"/>  
  28.         <!-- 需要编译的locale -->  
  29.         <locale>zh_CN</locale>  
  30.         <locale>en_US</locale>  
  31.         <source-path path-element="${FLEX_SRC}/locale/{locale}"/>  
  32.   
  33.         <!-- 消除编译警告,允许源代码路径重叠或是包含现象 -->  
  34.         <allow-source-path-overlap>true</allow-source-path-overlap>  
  35.   
  36.             <!-- List of SWC files or directories that contain SWC files. -->  
  37.         <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">  
  38.             <include name="libs" />  
  39.             <include name="locale/{locale}" />  
  40.         </compiler.library-path>  
  41.         <!-- 自定义或第三方包 -->  
  42.         <compiler.library-path dir="${basedir}" append="true">  
  43.             <include name="flex_libs" />  
  44.         </compiler.library-path>  
  45.   
  46.         <compiler.debug>false</compiler.debug>  
  47.     </mxmlc>  
  48.   
  49. </target>  


From
http://badqiu.iteye.com/blog/591493
http://blog.csdn.net/bincavin/archive/2010/03/10/5359163.aspx
http://www.iteye.com/wiki/flex/1804-flex-internationalization
http://xiejiangbo.iteye.com/blog/808911
http://wmcai.blog.163.com/blog/static/48024200782231527462/

你可能感兴趣的:(eclipse,Flex,Blog,ITeye,actionscript)