flex的国家化的应用

在项目中需要使用发送短信模板的功能的,根据主题不同,模板不同,发送的不同的短信,将短信信息存放在问题:

 在网上查了一下类似的解决方案为两种:

1.将信息保存在数据库,在系统加载,加载相应的资源信息.

2.将信息保存在资源文件中,使用Flex中资源类读取资源信息.

 

本人采用第二种方案,将信息写在资源文件中,使用资源类读取信息.

必须注意的几点:

1.的resource名应与.properties文件名相同 
2.在Flex属性中的Flex Compiler中 添加编译参数

  -locale en_US -sp 资源文件包

3.在flex 3中资源文件不支持动态加载,但是flex4中支持动态加载,说明资源文件存放信息是flex存放资源一种趋势,所以最好采用资源文件的形式.

 

package util
{
 import flash.events.Event;
 import flash.events.EventDispatcher;
 import flash.utils.ByteArray;
 
 import mx.resources.ResourceBundle;
 import mx.resources.ResourceManager;
 import mx.utils.ObjectUtil;
 /**
  * 资源文件的信息
  *
  */
 public class ResourceUtil extends EventDispatcher
 {
  //采用单例模式
      private static var _instance : ResourceUtil;
       private var _language : String;
  //这里的resource名应与.properties文件名相同 
        [ResourceBundle("en_US")]    
     private var lang_en:ResourceBundle;    
          
     [ResourceBundle("zh_CN")]    
     private var lang_zh:ResourceBundle;       

        private var localResources:ResourceBundle;   
      public static function getInstance() : ResourceUtil
      {    
        if (_instance == null) {    
                 _instance = new ResourceUtil();    
      }
          return _instance;    
    }

      [Bindable(event="languageChange")]    
     public function getString(key:String,params:Array=null):String
     {    
             var value:String="";
             if(params!=null)
             {
               value=ResourceManager.getInstance().getString(_language,key,params);
             }else{
               value=ResourceManager.getInstance().getString(_language,key);
             }
             var bytesArray:ByteArray=new ByteArray();  
             bytesArray.writeMultiByte(value,"utf-8");
             bytesArray.position=0;
             trace(bytesArray.readMultiByte(bytesArray.bytesAvailable,"utf-8"));
             return bytesArray.readMultiByte(bytesArray.bytesAvailable,"utf-8");
     }
      [Bindable(event="languageChange")]     
    public function ResourceUtil(){
          this.language = "zh_CN";
     }
     public function set language(language : String):void {    
            this._language = language;    
               
            if (_language ==OfflineConstant.BUSSOFF_RESOURCE_EN_US) {    
                this.localResources = lang_en;    
            } else if (_language == OfflineConstant.BUSSOFF_RESOURCE_ZH_CN) {    
                this.localResources = lang_zh;    
            } else {    
                this.localResources = lang_zh;    
            }
            dispatchEvent(new Event("languageChange"));    
    } 
  }
}

 

你可能感兴趣的:(Flex,Flash)