·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 特殊汉化 >> 【.NET 程序初级汉化流程一例】    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

【.NET 程序初级汉化流程一例】

作者: 决斗 来源:汉化新世纪论坛 时间:2005-06-25 点击:23044

【.NET 程序初级汉化流程一例】

前言:
自从 .NET 程序出现以来,对于目前汉化的工具来说,编辑和翻译/修改等等都基本不支持。几款专业性本地化工具虽然声称支持 .NET 程序的本地化,但目前似乎基本停留在“号称”的阶段。事实上,.NET 程序也可以实现标准资源和/或非标准资源(如果有)的翻译/修改。以前对于 .NET 程序的汉化/修改一直没有什么有利工具,现在,微软自家提供的一个名为 ildasm.exe 的工具就可以实现 .NET 程序的反编译,然后可以利用 ilasm.exe 重新编译程序。在此感谢 orochi_cn 兄(一名程序员)在论坛提出后,给我们大家带来了 .NET 程序汉化/修改的福音。
经过笔者看了网上一点 ildasm 的信息和资料后(部分有关利用 ildasm 破解 .NET 程序),并对反编译后的 *.il 文件初步分析和测试之后,找到了一点 .NET 程序的资源汉化/翻译,和部分字体调整,以及控件调整的方法,本文旨在抛砖引玉,希望得到大家的补充,也希望对于广大想汉化/翻译 .NET 程序的朋友有所帮助。

在开始使用 ildasm.exe 来反编译并汉化/翻译 .NET 程序之前,建议您安装微软的 .NET Framework,但 ildasm.exe 只在 .NET Framework SDK 中提供,大家可以自网上寻找。

流程:
系统平台:WinXP SP2
汉化目标:WinMD5 2.05(一个 .NET 小工具)
官方免费下载:http://www.blisstonia.com/software
系统需求:安装 .NET Framework
所需工具:微软 .NET 工具中的 ildasm.exe 和 ilasm.exe (还有一个“强签名”的工具 sn.exe 对于附带强签名的 .NET 程序有用,以后补充),记事本或其他文本增强编辑工具,Resource Hacker(资源编辑工具)

【1.反编译 .NET 程序 exe 或 dll】
使用 ildasm.exe (微软提供了简体中文版本),将其复制到 WinMD5 软件目录内。执行 ildasm.exe 后,会启动至 GUI 界面,用鼠标将 WinMD5.exe 拖动到 ildasm 界面中,会自行打开。如图(1)。
图1
然后在菜单“文件”中点击“转储”,弹出“转储选项”对话框,将“编码”选中“Unicode”其余按默认值不变,见图(2)。
图2
点击“确定”即可得到以下几个文件:
WinMD5.il
WinMD5.res
WinMD52.WinMD5Form.resources
以上三个文件,其中 WinMD5.il 和 WinMD5.res 对于我们汉化来说最重要。
现在用记事本或其他文本编辑工具打开 WinMD5.il 文件。(推荐使用增强性文本编辑工具,笔者使用 EmEditor)
这就是反编译的代码文件,在这里可以翻译源字符串,修改字体,调整控件,甚至修改其他代码(如果您懂这些语言代码)
首先查找“ldstr”,这个字串后面跟随双引号中的内容基本都是需要翻译的,例如本例:
ldstr "Currently Processing:"
ldstr "&File"
ldstr "&Open File..."
ldstr "Open &MD5 File..."
有些 .NET 程序会有“ldstr bytearray(XXX XXX XXX)”的语句代码,这括号 ( ) 中的 XXX 等字符有些是以 Unicode 编码显示。这就需要一些转换编码的工具自己手动来转换显示为正常字串,然后自行修改,再以 Unicode 编码填写回来,本例中没有出现,所以暂略,以后再行补充。
注意:ldstr 后若跟随这类字串,则不能汉化/翻译,因为这些是控件名称,这需要您准确的判断,如本例中的:
ldstr "webLink"
ldstr "currentlyProcessingLabel"

【2.字体修改】
那么翻译完之后,由于源程序的字体有时并不适合中文用户阅读,那么哪些是字体呢?幸好,这个 il 反编译代码文件中提供了字体名称和字号大小,也是跟随于 ldstr 之后,本例中找到如下两种字体:
ldstr "Courier New"
ldc.r4 8.25
ldstr "Microsoft Sans Serif"
ldc.r4 12.
对字体名称熟悉的朋友一下可以看出上述两个字串就是两种字体命名,而下面紧跟的“ldc.r4 8.25”和“ldc.r4 12.”就是字号大小尺寸。那么我们可以将上述的“Courier New”和“Microsoft Sans Serif”都改为“宋体”,紧跟的字号改为“9”,至于“12”是大字体可以保留不变。当然您也可以修改为在 2K/XP 上字体较美观的“Tahoma”8 号字。(Tahoma 8 号字与 宋体 9 号字在 2K/XP 上基本大小等同)
ldstr "宋体"
ldc.r4 9
ldstr "宋体"
ldc.r4 12.

【3.重新编译】
翻译完这份 il 代码文件之后,就要重新将代码编译为 exe (或 dll)文件了,那么现在需要用到 .NET Framework 安装后系统 Windows 目录下“Microsoft.NET”文件夹的子目录中去寻找到 ilasm.exe 这个文件,注意:这个是编译程序,比反编译程序 ildasm.exe 少一个 d ,找到后也将其复制到 WinMD5 软件目录内。
现在以 控制台 窗口启动到当前目录。(开始菜单“运行”,输入 cmd 确定启动后,用 cd 命令转到当前目录,也可以自注册表中修改文件夹右键菜单,加上一个“命令提示符启动”的功能,此处略)
好了,现在了解一下 ilasm.exe 的命令方式和参数:

ilasm xxx.il (注意空格)
此命令表示将 MSIL 文件 xxx.il 汇编生成 xxx.exe 可执行文件
ilasm xxx.il /dll (注意空格)
此命令表示将 MSIL 文件 xxx.il 汇编生成 xxx.dll 扩展库文件
ilasm xxx.il /output:test.exe (注意空格)
此命令表示将 MSIL 文件 xxx.il 汇编生成以 test 为新名称的 test.exe 可执行文件
ilasm xxx.il /output:test.dll (注意空格)
此命令表示将 MSIL 文件 xxx.il 汇编生成以 test 为新名称的 test.dll 扩展库文件

本例为 exe 文件,那么我们将 ilasm.exe 复制到 WinMD5 目录后,启动控制台窗口以如下命令编译:
ilasm WinMD5.il /output:000.exe
回车之后就会在当前目录下创建了一个新的 000.exe 文件,现在双击执行如图(3),这是汉化/翻译了部分字串后重新汇编的程序界面:
图3

【4.资源重组】
程序执行正常,界面也汉化/翻译为中文了,那么有朋友会发现:程序的图标,以及右键“属性”中的“版本”信息却没有了?用资源编辑类工具 Resource Hacker 打开原版程序一看,可以看到“图标/图标组/版本”等内容,那么这些内容怎么找到,再重新加入汉化/翻译并重新编译的 exe 文件中呢?别担心,现在就来告诉您如何用 Resource Hacker 帮您重组资源加上原版的图标和版本信息。
记得在我们用 ildasm.exe 对原版反编译之后得到的三个文件吗?
WinMD5.il
WinMD5.res
WinMD52.WinMD5Form.resources
我上文曾说过“以上三个文件,其中 WinMD5.il 和 WinMD5.res 对于我们汉化来说最重要”这句话,您可能已猜到了,没错,图标和版本等信息就在 WinMD5.res 这个文件中,现在用 Resource Hacker 来重新添加这些资源进去,借用 CS 游戏的一句“follow me”,跟着我以下列方法做:

用 Resource Hacker 打开汉化/翻译后重新编译过的 000.exe 资源框一片空白,没关系,点菜单“操作”(这里以 世纪主页上吕老大汉化的 Resource Hacker 3.4.0.79 为例),再选择“添加一个新资源”,在弹出界面中选“打开新资源文件”,找到 WinMD5.res 这个文件后打开,先选中“图标组”中“32512”下的“0”资源,然后点击“添加资源”即可,如图(4):
图4
现在 Resource Hacker 资源框树状列表中已有了图标信息了,我们再点菜单“操作”-“添加一个新资源”- 找到 WinMD5.res 打开后 重复上述操作添加“版本”资源即可看到版本信息也被加入了。
然后我们重新保存 000.exe 为 111.exe 即可,现在我们就可以看到程序原本自带的图标和版本信息了,并且运行正常,如图(5):
图5

【5.小结】
现在 WinMD5 2.05 这个免费的 .NET 小工具已经被汉化/翻译完毕并重新编译成功了。但现在很多 .NET 程序都有强签名/资源加密等等措施,对于这些 .NET 程序,微软的反编译工具 ildasm.exe 通常会拒绝打开。那么这就要用被修改/破解过的 ildasm.exe 和上文提到的 sn.exe 了,大家可以自网上找到,或到汉化工具 FTP 交流区寻找,限于篇幅,本文暂时不讨论 sn.exe 的使用,限于时间关系,笔者也暂时不附上“控件调整”的代码修改方法,以后有时间我再行补上。(其他知道的朋友也可以补充本文)
最后再次感谢 orochi_cn 兄为我们带来对 il 代码文件汉化/翻译后重新编译的方法和福音。
本文以上方法部分为笔者自网上查阅资料后总结,包括字体调整,控件位置代码调整的分析。允许自由转载,但请保留本文出处以及文章完整性。
风中决斗 2005.6.24 午


xxd
写得好啊!
刚才我把所有工具下载下来测试,确实不错。在测试过程中,我发现 il 文件中的可翻译字串可以使用 Passolo 进行提取,这样可以大幅提高翻译效率。

拳拳
好!写得很详细。
补充一点:不需使用Resource Hacker添加资源,使用
“ilasm.exe ?????.il /resource:?????.res”命令就可以了。

决斗
赶快请 xxd 兄贴上 passolo 对 il 文件提取可翻译字串的 “文本解析规则” 共享!biggrin.gif
多谢 拳拳 兄告知,我对 ilasm 汇编文件时的命令还不熟悉,这下方便多了,无需劳动更多工具来重组文件的资源biggrin.gif
阿信 终于出现了,ilasm.exe 在 命令提示符 下运行操作也稍嫌麻烦了点,期望能做个 GUI 给它,期待这个“一条龙处理的小工具”能够与广大汉化人见面,那样操作上就方便许多。biggrin.gif

xxd
效果如图所示:

规则如下:

getstr.rar

说明,这个规则是根据决斗兄文章中所举程序来制作的。这里仅提供一种处理的思路,也许其他的程序会稍有不同,到时再根据其情况作出修改。

orochi_cn
资源一定要用ilasm添加,否则某些情况下会出问题的。


 

下一篇:【.NET 程序初级汉化流程一例2:控件调整】

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

·上一篇: Alchemy Catalyst 在软件本地化中的应用 ·下一篇: .net程序的汉化

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

· 转载申明: 本文引自《汉化新世纪论坛》[ 作者: 决斗],如需转载请直接联系原始作者,并请注明原始出处。

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

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