·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 非标汉化 >> ASCII资源的汉化(2)    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

ASCII资源的汉化(2)

作者: 伟乾 来源:汉化教学 时间:2003-07-31 点击:13917

ASCII资源的汉化(2)   

伟乾

二、ASCII 字串的汉化修正

    对ASCII字串的汉化,现在比较好的方法是,把翻译和修正工作分开。首先利用字串提取替换工具,把ascii字串萃取出来,经过翻译、再写入文件中。然后,使用 16进制编辑工具,对汉化有问题、或不完美的地方,进行个别修正。字串替换工具我们推荐字串替换器CXA,16进制编辑工具我们推荐Hexworkshop
?我们使用字串替换器汉化写入文件后。运行汉化后的程序,虽然界面都变成中文了,但出现碍眼的断行、换行、文字之间空格、文字偏向一侧等问题。造成这问题的原因是汉化后的字串与汉化前的英文字串长度发生变化,大多数情况汉化后字串长度变短,我们写入exe文件时,不足的用空格填充(20)(字串替换器可以用 00 填充不足),造成文字断行、换行、偏向一侧、文字之间的空格的现象。个别情况,汉化后字串长度变长,造成不够位置写入,如add ,只好翻译为加,这样的界面令人很不满意。下面我们讲讲如何处理这些问题!

(一)、ASCII汉化后字串变短的处理

  字串汉化后,字串变短,我们使用字串汉化工具写入时,在大多数情况都可以用20填充不足,在界面中看不出问题。只有字串在界面居中显示、字串后面跟着字串或变量、浮动提示、界面根据字串的长度自动调整大小的等情况下,会出现文字显示位置不好看、字串间出现奇怪的空格、断行、断句等等现象。

 1.结构字串组:

    前面我们介绍这类的字串类型,字串是通过判断00作为字串的结束。字串之间以00间隔,而且只能以一个00间隔,在第一个字串的00前面有一个代表这几个字串数据长度(16进制)的长度标示符。所以我们汉化时,只能用空格(20)填补空格,绝对不能用00填补不足。除了第一个字串不能改变位置,其他的字串可以调整位置,如图13







图 13


      图13,14 举的例子是VC++编译的 pkg文件,我们可以把多余的空格20删去,修改字串组的长度标示符,程序运行显示正常,这说明第一个字串的位置也不是不能改变的,我们也可以增加字串。由于没有在exe,dll文件中找到这样的例子,不知道是否通用。
    如果字串间超过一个00间隔,会导致后面的字串显示出现问题。如图14






 

 图 14


    2. 阵列字串组:

    这种字串类型,字串之间没有间隔。在这些字串组前面的两个字串代表字串的个数,前面第三、四个字串代表这个数据段的字串组的总长度(16进制)(包括字串组个数标示符)。
    这类的字串,如果我们用空格20填补不足,在某些情况显示会有问题(如图15)。我们只需要把20改为00,就解决了问题。注意:这时不要修改字串的长度标示符,否则会出现后面显示的字串错位的现象。如图,我们看到,只要00是在这个字串长度标示符长度范围内,显示正常;如果00不在长度标示符长度范围内,就会出现字串显示移后的现象,有多少个00在控制范围外,就会移后显示多少个位置。图中有一个00在长度标示符控制范围外,所以后面的字串显示都依次移后一位!




 



 图 15



    3. 独立字串:

     这类字串一般出现在VB编译的程序中,字串前后各有一个00间隔,在字串的00前面有一个代表字串数据长度(16进制)的字串长度标示符。我们汉化时,如果使用空格(20)填补不足,在某些情况下,导致显示的界面不美观。
      在图16中,由于汉化后的字串比英文字串短,导致出现三种情况的不足。如图所示,第一种情况出现在边框线连接着字串,使用空格填补不足,导致边框线不能紧接着汉化后的字串。第二种情况,当选择某项时,一般会有个虚框框住所选字串,使用空格填补,出现虚框的显示不足。第三种情况,字串是居中显示的,使用空格填补不足,导致显示不能居中。
      我们只要把20改为00,就是说,使用00填补不足,上述的问题均可解决。注意:这时不要修改字串前面的长度标示符,否则程序无法进行这项功能。就是说我们必须保证有且只能有一个00在字串长度标示符长度范围外,否则会出错。




 


 图 16



    4. C 语言字串:




 


 图 17


图17中,字串是浮动提示,我们汉化后用空格20填补不足,就会造成提示后面出面空白,我们把20改为00即可。实际操作时,只需把第一个20改为00就可以了。我们再看下一个例子(图18






 

 图 18


图 18中的字串在界面是居中显示,我们汉化后用空格20填补不足,就会造成提示后面出面空白,我们把20改为00即可。实际操作时,只需把第一个20改为00就可以了。


      5.
Pascal语言字串:
    图19 的例子,是一个按钮的字串,文字在按钮中是居中显示的。我们汉化后,字串变短,用空格填充不足,造成文字偏向左侧,不太美观。我们只需把 20 改为 00 即可,看看是不是好看多了。
    实际操作中,我们只需在字串后面把一个 20 改为 00 即可,不需要把所有的20 改成 00。因为ASCII是以 00 为结束,我们只要保证字串的后面有一个00就行了。在这个例子中,我们没有修改长度标示符为字串实际的长度,字串的显示效果也正常。






    

                                     图 19



    但在一些情况下,必须修改长度标示符,才能得到满意的效果。如图 20,在消息窗口显示的信息是由多个字串组成的。[You did nit select a page, or pages, of bookmarks to ]这是第一个字串,它的16进制长度为35,后面跟着其他字串。






    


图 20


    我们按照上面的方法汉化修改,发现后面的字串不见了。






    


图 21


       我们把长度标示符 改为实际的长度 1E我们把长度标示符修改后,显示基本正常,发现[HTML]后面跟着的 [.]中间有空格。仔细研究才发现,这个信息是由三段字串组成,第二个字串就是我们前面举的例子[创建HTML]字串,第三个字串是英文的句号[.]。我们前面没有修改[创建HTML]字串的长度标示符,在这个消息窗口调用了[创建HTML]字串,所以出现空格现象。我们把[创建HTML]字串的长度标示符修改为实际的长度,显示正常。在这里我们看到这个信息窗口的宽度是根据字串的程度自动调整的。  






    



图 22


       小结:综上所述,除了第一种字串(结构字串组),其他的字串我们汉化时,如果字串变短,均可以使用00填补不足。由于第一种字串比较少见,所以使用00填补不足大多数情况下都适用。在我们使用的字串替换工具中,只有梁利锋的字串替换与香港黄权粲的cxa具有这样的功能,为我们汉化提供了便利。在各种字串抓取替换工具,中文工具箱(CKIT)李国印的软件汉化2000由于提取字串的速度慢,作者停止开发或开发暂停,我们不建议大家使用。最近还在开发的字串提取替换工具,有香港黄权粲的CXA和大陆梁利锋的字串替换器。这两个工具,提取字串的速度较快,而且各有特点。CXA沿用传统的字典翻译功能,不过针对字典翻译效果不佳的情况,作了改进,使用二次翻译调整,翻译的效果大大改进。对于不以00结尾的字串,可以自动拆分字符串,添加不需要翻译的字串,提取字串比较准确。新版本增加了分段翻译、测试等管理功能。字串替换器采用匹配替换代替了以往的翻译功能,使 ASCII字串的批量汉化(快速汉化升级)成为可能。同样具有分段翻译、测试等管理功能,它的开发意念最贴近汉化人。不过最近版本0.93,对阵列字串组提取的效果不佳,希望以后的版本改进。

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): ASCII 非标

·上一篇: ASCII资源的汉化(1) ·下一篇: ASCII资源的汉化(3)

· 版权申明: 本文引自《汉化教学》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《汉化教学》[ 作者: 伟乾],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号