首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于游戏语言包提取跟替换(一)

2013-02-24 
关于游戏语言包提取和替换(一)距离上次写博客的时间已经过了半年。这期间发生了很多事,很忙,一直没有打理过

关于游戏语言包提取和替换(一)

距离上次写博客的时间已经过了半年。这期间发生了很多事,很忙,一直没有打理过这个博客。

这半年来,我一直在一家游戏公司实习。我学了很多关于AS3的技术,后来又学习了erlang的一些东西,但是没学多久就被分配了另外一个任务

没错,我的任务就是这个语言替换工具。

 

在我们的游戏当中有很多很多的中文,这些中文集中在xml、hrl、config等文件中,我们的游戏,光是这三种文件,加起来个数在300+个,有大有小,根本不可能人工去把每句中文替换为其他语言。所以我师兄叫我来写一个程序,智能的识别所有中文句子,然后上传到公司的服务器(服务器当中有一个专门为我准备的数据库,名为bingshen)

 

提取中文段:大概规则是这样的,一句话,当中如果全是中文,那么把他当成一个句子提上去,如果这句话当中有一些英文字母,比如"XXXXX*XXXX"的形式

其中X代表中文字符,*代表英文或数字,那么我提交上去必须把这一段话当成一个整体提交上去,不能分成两段。

 

我识别的方法很简单,因为要知道,在程序当中,中文是不可能有意义的,所以在配置当中,中文必然是用引号引起来的,当然这里不是说有的中文都是这种情况,事实上在前端程序的配置当中,也就是xml文件里面,CDATA也是一个判断的依据

 

现在问题明了,主要是判断所有目标文件的引号,和CDATA中的数据

CDATA中的数据比较好提取,我只需要检测到CDATA,不管CDATA中装的是什么,我都原封不动的提交到MYSQL中

关键是引号中的数据,需要处理,因为引号当中的数据可能不是中文,可能全是数字,全是英文等等,所以需要检测引号当中出现过中文字符没有,如果出现过就把这段话保存下来。

 

基于这种思路,检测一个字符是否为中文成了重中之重。

这里需要知道中文编码的一些基本知识。我在网上查了很多资料,其中不乏复杂的要命的方法,诸如正则表达式等等

我用了一个最最简单的方法。

我们首先知道一个中文字符是占据内存空间两个字节的

好了下面这句话很关键:

 

如果一个字符是中文字符,那么储存着个中文字符的两个字节的空间里面装的数据都是负数!

 

所以把所有的文件读出来保存于一个char数组当中,之后只需要判断这个数组当中是否存在小于零的数据

如果存在,那么这段话当中包含中文,反之不包含。

 

好了,今天先讲到这儿,改天有空继续写

热点排行