网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 北京环球译联翻译有限公司 >> 本地化 >> 文章正文
  [组图]如何汉化RSC资源中的ASCII码            【字体:
如何汉化RSC资源中的ASCII码
作者:redzest    文章来源:WDA智能手机论坛    点击数:    更新时间:2006-6-15    

1、关于S60软件或游戏的汉化


  S60软件或游戏都使用基本相同的结构框架,汉化它们,其实就是找出文本资源文件并替换成中文的过程。只需要把在手机上看到的所有英文字符,在程序的文件中查找并全部替换成中文字符,即可实现完美汉化。


2、S60软件的文本资源

  S60软件的文本资源一般为.rsc文件,这是S60软件设计框架中的标准资源文件。

  在这个资源文件中,比较常见的文本字符为Unicode编码,即不论英文字符、中文字符都占两个字节。相对于ASCII码来说,汉化的难度更小一些,因为英文的Unicode的“OK”是两个字符占四个字节,中文的“确定”也是两个字符占四个字节,直接替换即可。相信大家做汉化已经接触过很多了,这里不再赘述了。

  但是现在越来越多的例外,许多英文软件已经冲破Unicode编码的限制,开始使用ASCII码资源。对于英文程序开发员来说,这是完全可以理解的,因为本身英文字符只有26个,加上其它标点等字符,最多也就一百多个字符,所以英文的字体文件比中文字体文件要小得多。要让英文字符无缘无故地占用两个字节,在他们看来的确是非常大的浪费。所以ASCII码资源文件的软件也不断开始涌现。

  下面将会以我汉化的SlideShow来具体地分析ASCII码资源的汉化。


3、S60软件.rsc文件中的ASCII码资源的汉化

A、ASCII码资源特点。
我们用UnMakeSIS解开SlideShow的安装文件,得到SlideShow.rsc资源文件。

用HexWorkShop打开SlideShow.rsc文件,我们看到其资源不是Unicode,而是AscII码。比如手机端菜单的第一项“Run SlideShow”,显示出来不再是“R.u.n. .S.l.i.d.e.S.h.o.w.”这样了。

分析其特色,你会发现每一个字串前面还有两个指针,正如这个“Run SlideShow”的前面是:0D0D(如图1)


这两个0D的作用是用来指示字串的长度及字符数的,是16进制的计数方式,前面一个0D代表这个字串有13个有效字符,后面的0D代表这个字串的总长度是13个字符。

对于英文字符来说,有效字符和字串长度是一样的,但对于中文字符来说,就不同了,因为中文一个字符要占用两个字节,所以如果汉化后显示成“开始演示”,那么其有效字符数是04,字串长度就应该是08了。

B、ASCII码资源的汉化
好了,现在我们开始汉化这个字串。那么中文显示是用的什么编码呢?

开始的时候,我用中文的ASCII码来替换,发现显示出来依然是乱码。后面我试过许多种编码,显示出来都是乱码,最后我想到,也许短信使用的编码是可以兼容显示的,经过测试,果然可以,那个兴奋……!!!也就是说,汉化这种资源,要用中文的BigEndUni编码。

C、长度不足的ASCII码资源的汉化。
大家看到第二个字串:Help,其代码是48656C70 (下图中粉色的部份)


    如果汉化成中文,BigEndUni代码加上0F...E0引用符一起就是:0F5E2E52A9E0

    这样长度不够写,总不能把Help汉化成“帮”吧?这样需要从其它字串处“剪”一点空间过来。

    我们汉化上面的Run SlideShow的时候,不是多了三个字符吗?还补了三个空格,真是“朱门酒肉臭,路有冻死骨”啊!

    (但中文编码的使用是需要再加上标识符的,这个标识符是以0F开头,以E0结尾,大家记住就好。)

    但由于汉字占用的字节数比英文字符多,所以前面的长度指针也要修改,还以上面的字符为例,修改的具体情况如下:


    Run SlideShow   0D0D52756E20536C69646573686F77
    开始演示      070D0F5F0059CB6F14793AE0202020


    说一说这一段070D0F5F0059CB6F14793AE0202020代码是怎么来的:

    ①070D是字符长度指针,07代表这个字串总共有7个字符,0D代表字串的总长度是13

    ②0F5F0059CB6F14793AE0是“开始演示”的代码。其中前面的0F是引导符,5F0059CB6F14793A是“开始演示”的BigEndUni编码,最后的E0是结束符。

    ③后面的202020是因为字符总长度不够,补了三位空格。


现在,从Run SlideShow处剪切两个字符过去Help这边,那么Help就够写了。只是剪切后,Run SlideShow的字符长度变短,Help的字符长度变长,那么这两者的字符长度指针都要修改,最后的结果是(见下图):


    
    Run SlideShow   0D0D52756E20536C69646573686F77
    开始演示      050B0F5F0059CB6F14793AE020


    Help        040448656C70
    帮助        02060F5E2E52A9E0


    从Run SlideShow处剪出两个到Help处,汉化后,有四个汉字一个空格,所以有效字符个数是五个,字符长度减少两个字节变成0B,而Help汉化后,有两个汉字,所有有效字符个数两个,字符长度增加两个字节变成06。

    
  小结:
    对于这种ASCII码的汉化的繁琐相信大家又有了新的认识了,因为有许多字串的长度是不够的,比如OK,EXIT等等,都需要移花接木之术方可完美汉化,一般来说,像Cancel这种六个字节长度的英文,才能保证刚好汉化成两个中文字符“取消”,大家需要多多剪切才能完成,祝大家汉化一路顺风!

文章录入:天之骄子    责任编辑:天之骄子 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 安装文件(*.msi)的本地化

  • Flash MX 文档(*.swf)的本…

  • Unicode和字符集

  • DT_FixRes

  • 塔多客 (Tradoser) 1.0.0.1 …

  • WISE技巧篇--原版安装和版…

  • WISE技巧篇--防止简单打包…

  • 析Unicode和UTF-8

  • TRADOS新手必读一

  • Trados新手必读二

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     点击Q我

    Copyright © 2006 - 2007 GTU Inc. All Rights Reserved
    E-mail:ldgldg@126.com 联系电话:010-51658081
    北京环球译联翻译有限公司 版权所有 京ICP备05064028号

     
    站长:断弦谁听