程序中对中文进行处理,我们尽量避免程序中使用中文,但是我们要在客户端显示中文版、英文版或者其他,改怎么办呢?我们可以把它叫着国际化。
我们将中文抽取到一个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 "";
}
}
}