http://blog.ityao.com/archives/452
最近的项目要用flex i18n动态改变语言设置,找了一下资料,因为太多不同的实现方法,所以弄得有点稀里糊涂。这里参考了http://labs.adobe.com/wiki/index.php/Flex_3:Feature_Introductions:_Runtime_Localization
的官方原文,对自己创建i18n应用的过程归纳了一下,希望你可以不被弄得稀里糊涂。
- 创建你的语言
在flex的SDK里面的bin目录运行“bin\copylocale.exe en_US el_EL”,其中en_US是在SDK里面的“frameworks\locale”中已经存在的路径名称(也就是locale代码),这里我们准备生成的是希腊文,所以代码是”el_EL” 。跑这个命令的目的是为了生成这个代码的一套框架的i18n文件。 - 创建你的语言资源文件
在flex项目中新建一个目录“locale”然后再创建两个子目录“el_EL”和“en_US”这两个子目录名字要符合刚才在“frameworks\locale”里面的目录名字。然后在子目录中创建i18n的资源文件,例如“homepage.properties”,资源文件的格式和就是一些名值对,例如“GREETING=Hello!
”这样的格式,每个名值对占文件的一行,在不同locale的资源文件中,名字必须相同,值就是各个本地化语言的字符串。 - 修改你的项目属性
在“Flex Compiler”的项目属性设置中,修改“Additional Compiler Arguments”成为“-locale=en_US,el_EL -source-path=../locale/{locale} -allow-source-path-overlap=true”。这里第一个参数“locale”要求把项目编译的时候添加英文和希腊文的本地化语言,第二个参数告诉编译器去哪里找这些语言包,第三个参数可要可不要, - 修改你的项目代码,添加i18n转换
支持i18n切换的label写法如下:
<mx:Metadata> [ResourceBundle("homepage")] </mx:Metadata> ....... <mx:Label text="{resourceManager.getString('homepage','centertext')}"/>在需要使用i18n的页面用metadata声明绑定的资源文件,然后用resourceManager来调用i18n字符串,这里的homepage就是locale资源文件夹下面的资源文件名,全称是homepage.properties,实际使用中我们可以为不同的页面生成各自独立的i18n资源文件,这样更方便查找定位。
切换语言的样例function如下
<mx:Script> <![CDATA[ private function localeChangeHandler(localeName:String):void { resourceManager.localeChain = [ localeName ]; } ]]> </mx:Script>把locale代码如“en_US”,“el_EL”作为参数传进去就可以切换语言了。