写这个小工具之前,还遇到一些正则不知道怎么写的问题,由于,在CSDN发贴:
http://bbs.csdn.net/topics/390634252
问了。。。只有几位元老级大神在回复一次之后就再也没收到回复;而且,CSDN那个:连续回复某个贴三次(包括自己回复自己的贴子都算),那么该贴,该帐号,就不可以回复信息,直到有别人回复之后才可以回复,这个限制,我只能说:恶心(也有可能,之前CSDN给别人恶意灌水程序攻击过,才这么干的)
然后那个问题我也处理不了,也不可以编辑(CSDN对贴子的编辑权限太低了,一但出手,你就不可以再改了,除非是管理员吧,恶心的限制)。
所以这个问题一直没有去处理,我就”无满意答案告终了“
但是工具里的正则还不算是非常完善。
假如我们的webgame中,*.as文件中,包括了大量的:文本描述信息;(无论是什么语言:中文版有中文,对象其版就会有N种语言:英文,韩文、泰文、越南文、繁体中文、印度文,等等)
如:
var equipDescription:String = "这是一个装备";
这样在制作工作提取:"~~~"之间的内容会提取到很多不相关的信息;
那么我们就可以使用一个比较奇葩,少用的方法名,把这些语言字符串信息都括起来如:
var _languagePackage:Dictionary = new Dictionary(); // 语言包
_T(languag:String):String
{
if(_languagePackage.hasOwnProperty(languag)) return languag:String[languag];
return languag;
}
var equipDescription:String = _T("这是一个装备");
这样,我们的工具就可以针对_T("~~~");内字符串"~~~"提取出来;把所有这些信息都存到一个文本;并生成对应的Languag类代码,或是配置文件也可以;
这样方便给翻译人员翻译文本;
我看过一些项目,常常喜欢这样:
var description:String = _T("这是")+lvl + _T("级装备");
var description:String = _T("这是{0}级装备");
很显然很第二种:使用占位符的方式比较灵活,对提取语言的整句,在翻译时,就可以不考虑单词顺序,而使用占位符去替换;
前面说了这么多,给DEMO吧。。。
DEMO下载
如:有一个Root.as文件,提取一些_T("提取信息");
package { ... /** * [description] * @author Jave.Lin * @date 2013-9-18 **/ public class Root extends Sprite { ... private function _T(str:String):String { return str; } public function Root() { super(); ... _T("\"这是带双引号的内容") _T("'这是带单引号的内容") _T('\'这是带单引号的内容') ... } private function onTouch(e:TouchEvent):void { ... _T("这是内容2"); _T("'这是内容3,\"这是带单引号的内容"); _T("\"这是内容4,这是带双引号的内容"); _T("\"这是内容4,这是带双引号的内容'test')"); _T("\"这是带html内容5,<font color='#ff0000'>这是带双引号的内容'test</font>')") _T("\"这是带html内容6,<font color='#ff0000'>这是带双引号的内容'test</font>')") _T('"这是带html内容7,<font color="#ff0000">这是带双引号的内容\'test</font>这是强化{0}级,可以卖{1}的铜钱,这 是 测 试 内容)') _T('"这是带html内容7,<font color="#ff0000">这是带双引号的内容\'test</font>这是强化{0}级,可以卖{1}的铜钱,这 是 测 试 内容\')') ... } } }