项目中国际化语言包的处理

来源:互联网 发布:hdp电视直播软件下载 编辑:程序博客网 时间:2024/06/06 01:46

 程序中对中文进行处理,我们尽量避免程序中使用中文,但是我们要在客户端显示中文版、英文版或者其他,改怎么办呢?我们可以把它叫着国际化。
我们将中文抽取到一个txt文件中,按照key、value的命名方式,如key:value。然后讲该文件解析出来,按照key来保存value,程序中
通过key来得到value。这样就可以达到抽取语言包的效果,程序不用编译,直接替换资源文件即可。

如:

package game.managers
{
 import flash.utils.Dictionary;
 /**
  * 资源文件处理
  * @author lxh
  */ 
 public class LanguageManager
 {
  private static var _words:Dictionary = new Dictionary();
  private static var _familyNames:Dictionary = new Dictionary();

 

  public static function setup(data:String):void
  {
   _words = new Dictionary();
   
   var t:String = data;
   data = data.split("\\n").join("\n");
   var list:Array = data.split("\r\n");
   
   for(var i:int = 0; i < list.length; i++){
    var s:String = list[i];
    if(s == "")continue;
    if(s.indexOf("//") == 0)continue;
    var n:int = s.indexOf(":");
    if(n != -1){
     var name:String  = s.substring(0,n);
     var value:String = s.substr(n + 1);
     _words[name]     = value;
    }
   }
  }

  public static function setupToo(data:String):void
  {
   if(!data) return ;
   _familyNames = new Dictionary();
   
   var t:String = data;
   data = data.split("\\n").join("\n");
   var list:Array = data.split("\r\n");
   
   for(var i:int = 0; i < list.length; i++){
    var s:String = list[i];
    if(s == "")continue;
    if(s.indexOf("//") == 0)continue;
    var n:int = s.indexOf(":");
    if(n != -1){
     var name:String = s.substring(0,n);
     var value:String = s.substr(n + 1);
     _familyNames[name] = value;
    }
   }
  }

  public static function getNames(id:String,...args):String
  {
   var s:String = _familyNames[id];
   if(s != null){
    if(args.length > 0){
     for(var i:int = 0; i < args.length; i++){
      s = s.split("{" + (i + 1) + "}").join(args[i]);
     }
    }
    return s;
   }
   return "";
  }
  

  public static function getWord(id:String,...args):String
  {
   var s:String = _words[id];
   if(s != null){
    if(args.length > 0){
     for(var i:int = 0; i < args.length; i++){
      s = s.split("{" + (i + 1) + "}").join(args[i]);
     }
    }
    return s;
   }
   return "";
  }
  
 }
}