微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flash与游戏笔记:国际化 3

          在过年的时候,在工作为了抽出中文替换就使用正则,方便一下自己的工作。在同事的指导下,遇到一些比较特殊的情况,例如一个as类里面含有相同的中文,而之前所写的会出现重复,所以在显示的时候,也可以加入一些判断。而后续,同事又有一些比较强烈的要求就是把替换好的中文对应的常量 也顺便替换到as类文件当中。这个做法是可以的,过去一些比较牛b的同事做法更加暴力,遇到大量中文文件的时候,把整个项目的含有中文的as类文件全部替换成对应的自定义的常量。过去在做国际版本的时候,会遇到这些情况,虽然还没正式参与到那时候的开发当中,不过在他们的工作中,也了解了不少和学到一些简单的做法。而下面这个则是自己用来帮助自己的一种小工具。纯粹自娱自乐。

 

import flash.text.TextField;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
import flash.text.TextFieldType;
import fl.controls.*;
import flash.utils.Dictionary;


var regExp:RegExp = /\".*?\"/ig; //匹配双引号内容
var myPattern:RegExp=/[\\u4e00-\\u9fa5]+/; //匹配中文


//输入文本
var inputTxt:TextField=new TextField();
inputTxt.border = true;
inputTxt.width = 980;
inputTxt.height = 250;
inputTxt.type = TextFieldType.INPUT;
inputTxt.x = 10;
inputTxt.y = 50;
inputTxt.multiline = true;
inputTxt.wordWrap = true;
addChild(inputTxt);


 
var msgTxt:TextField=new TextField();
msgTxt.border = true;
msgTxt.width = 300;
msgTxt.height = 250;
msgTxt.type = TextFieldType.DYNAMIC;
msgTxt.x = 10;
msgTxt.y=320;
msgTxt.multiline = true;
msgTxt.wordWrap = true;
addChild(msgTxt);

 
var codeTxt:TextField=new TextField();
codeTxt.border = true;
codeTxt.width = 670;
codeTxt.height = 250;
codeTxt.type = TextFieldType.DYNAMIC;
codeTxt.x = 320;
codeTxt.y=320;
codeTxt.multiline = true;
codeTxt.wordWrap = true;
addChild(codeTxt);

 
var tipTxt:TextField=new TextField();
tipTxt.border = true;
tipTxt.width = 100;
tipTxt.height = 20;
tipTxt.type = TextFieldType.INPUT;
tipTxt.x = 50;
tipTxt.y=600;
tipTxt.text="TIPS";
addChild(tipTxt);


//创建按钮
var btn:Button=new Button();
btn.label="创建";
btn.addEventListener(MouseEvent.CLICK,onCover);
btn.x = 300;
btn.y = 600;
btn.buttonMode = true;
btn.filters = [new GlowFilter(0xcccccc)];
addChild(btn);

var checkBox:CheckBox=new CheckBox();
checkBox.x=160;
checkBox.y=600;
checkBox.label="是否添加注释";
addChild(checkBox);


function onCover(event:MouseEvent):void
{
	if (inputTxt.text)
	{
		selectChinese(inputTxt.text);
	}
}


//抽出双引号字符
function selectChinese(str:String):void
{
	var tempStr:String=str;
	var strArray:Array = str.split(";");
	var codeStr:String = "";
	var n:int = 0;
	var temp:Array=[];
	var myValue:Array=[];
	var data:Array=[];
	for each (var str:String in strArray)
	{
		var result:Object = regExp.exec(str);
		while (result != null)
		{
			var  chineseStr:String=result.toString();
			if (result && myPattern.test(chineseStr))
			{
				// 检测中文 
				//trace(result);
				var index:int=temp.indexOf(chineseStr);
				if(index==-1)
				{
					 temp.push(chineseStr);
					 myValue.push("LangModules."+tipTxt.text + n);
					 if(checkBox.selected)
					  {
						  var tipStr:String="/**"+ result.toString()+"*/"+"\n\n";
						  codeStr+=tipStr;
					  }
					  
					 codeStr +=  "public static const"+ tipTxt.text + n + ":String=" + result.toString() + ";\n";
				     data.push({key:chineseStr,value:"LangModules."+tipTxt.text + n});
				     n++;
					
				}else
				{
				  data.push({key:chineseStr,value:myValue[index]});
				}
				
			}
			result = regExp.exec(str);
		}

	}

	msgTxt.text=codeStr;
	
	//替换对应的中文
	for each(var tips:Object in data)
	{
		tempStr=tempStr.replace(tips.key,tips.value);
	}
	
	codeTxt.text=tempStr;
	

}


 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐