flex国际化

来源:互联网 发布:淘宝如何增加客服 编辑:程序博客网 时间:2024/05/17 01:33

(上)

当要使用不同语言的版本的时候,便需要了应用程序的国际化。

国际化不单指字符串的国际化,还有嵌入式资源(图片)的国际化,脚本类定义的引用。在程序当中使用国际化的要点包括了编写资源文件,参数的设置,本地化相关的flex框架内容。

资源文件是用后缀名为“.properties”结束的文件,以一种键值的形式存在,比如language=Chinese。推荐在项目下面建文件夹,名字为locale,再建相应语言名称的文件夹来存放资源文件,这样的好处是使得系统容易找到资源文件。还有点小技巧:将一些具有公共属性的资源文件抽取出来,做成公共的资源文件,达到复用的目的;可以按模块来管理资源文件。

在程序当中,使用指示符@Resouce,编译器便可以替换适当的属性值;使用元数据标签ResouceBundle可以让编译器了解使用那些资源文件。

编译程序之前,必须本地化相关的flex框架内容。方法是转到bin文件夹下面,执行Copylocale命令,比如Copylocale.exe en_US zh_CN。

最后便是参数的设置:-locale zh_CN -source-path=../locale/zh_CN。第一个参数是本地化的语言,第二个是资源文件路径,路径都是相对源文件夹src而言的。

多种语言的支持::-locale =zh_CN,en_US,同时在source path下面新建文件夹locale,编辑参数locale/{locale} 

/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

(中)

我们flex程序员又该如何应对运行时改变语言呢?使用ResouceManager这个类可以帮到我们。它使得我们可以在运行时获取不同的资源文件,达到运行时改变语言本地化的目的。关于这个类的使用将使用上面的程序稍作改动,加以说明。由于我不知道怎么将编辑器改成支持中文的编码,所以中文资源文件当中使用了英语。

localeChain是一个数组,在上述程序中,通过改变数组值而实现语言。根据localeChain当中出现的顺序,搜寻指定名称的资源文件,确保当中必须有英语文件可以保证框架类因为找不到资源文件而失败。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

首先在flex的src目录下新建locale文件夹,在locale文件夹下新建区域语言的包,结构如下:
   --flex_src
         ---locale
             ---en_US
                  ---i18n.properties
             ---zh_CN
                  ---i18n.properties

建好后,修改flashbuilder4的编译参数,在eclipse中选择项目,右键打开“properties”菜单,选择“Flex 编译器”,在附加的编译参数里修改为

Java代码 -locale en_US -locale zh_CN -source-path=locale/{locale}
  1. -locale en_US -locale zh_CN -source-path=locale/{locale}  



网上说什么改成“-locale en_US,zh_CN -source-path=locale/{locale}”这都是错的,我就在这里搞了好久。

弄好后,就把资源文件在flex里引用。

Java代码  <fx:Metadata>
 [ResourceBundle("i18n")] 
</fx:Metadata>
  1. <fx:Metadata>    
  2.     [ResourceBundle("i18n")]     
  3. </fx:Metadata>  



然后直接在代码里使用下面语句:

Java代码  
  1. ResourceManager.getInstance().getString("i18n",error_code);  


至此,flex国际化完成。

原创粉丝点击