Flex 国际化

在项目中新建一个locale的目录(src目录下);

在locale目录下创建需要支持语言的子目录,如locale/zh_CN, locale/en_US;

在这些子目录下新建properties文件(en_US.properties,zh_CN.properties),各目录下的属性文件需要 同名。属性文件的格式与java的属性文件相同,每行以"key=value"的形式列出键值对,以utf-8编码保存文件;

编译mxml文件时加上 -locale=en_US,zh_CN -source-path=/locale/{locale}的选项;


在flex的sdk下加入中文库(C:\Program Files\Adobe\Flex Builder 3\sdks\3.2.0\frameworks\locale)zh_CN


Localizator.as文件内容如下:


package util {



import flash.events.EventDispatcher;

import flash.events.IEventDispatcher;

import flash.events.Event;

import mx.resources.ResourceBundle;



public class Localizator extends EventDispatcher {



//采用单例模式

private static var _instance : Localizator;



private var _language : String;



//这里的resource名应与.properties文件名相同

[ResourceBundle("en_US")]

private var lang_en_US:ResourceBundle;



[ResourceBundle("zh_CN")]

private var lang_zh_CN:ResourceBundle;

[Bindable]

private var currRes:ResourceBundle;



public function Localizator(language : String = "en_US") {

selectLanguage(language);

}



public static function getInstance(language : String = "en_US"):Localizator {

if (_instance == null) {

_instance = new Localizator(language);

}

return _instance;

}

private function selectLanguage(language : String):void {

this._language = language;



if (_language == "en_US") {

this.currRes = lang_en_US;

} else if (_language == "zh_CN") {

this.currRes = lang_zh_CN;

} else {

this.currRes = lang_en_US;

}

}



[Bindable(event="languageChange")]

public function getText(key:String):String {

return this.currRes.getString(key);

}



public function get language():String {

return this._language;

}

public function set language(language : String):void {

if (this._language != language) {

selectLanguage(language);

dispatchEvent(new Event("languageChange"));

}

}

}

}





internation.mxml文件如下:


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" preinitialize="init()">


<mx:Script>

<![CDATA[

import util.Localizator;

import mx.controls.Alert;

[Bindable]

private var localizator : Localizator = Localizator.getInstance();



private function init():void {

//初始化时设置的语言是用户系统的语言

var crrlanguage:String = Capabilities.language.toString();//获去用户系统语言

if(crrlanguage == 'zh-CN' ){

localizator.language = 'zh_CN';

}else if(crrlanguage == 'en-US'){

localizator.language = 'en_US';

}else{

Alert.show(crrlanguage+"其他语言");

}



}



private function changeLanguage(language:String):void {

localizator.language = language;

}



]]>

</mx:Script>


<mx:Label id="label1" x="10" y="10" text="{localizator.getText('label1')}" width="152" height="20" fontSize="12" fontWeight="bold"/>

<mx:Label id="label2" x="10" y="38" text="{localizator.getText('label2')}" width="144" height="22" fontSize="12" fontWeight="bold"/>



<mx:Button x="10" y="68" label="Chinese" click="changeLanguage('zh_CN')"/>

<mx:Button x="88" y="68" label="English" click="changeLanguage('en_US')"/>


</mx:Application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值