小白记第一次汉化
本帖最后由 pzx521521 于 2018-7-2 18:06 编辑# Start
原贴地址如下:
https://www.52pojie.cn/thread-760194-1-1.html
感觉很简单,主要是闲... 就看看尝试这自己做一下
#####因为exe有壳,不会脱,就没汉化exe, 选择和老版本一样只汉化效果列表,替换dll即可.
#####dll地址如下
链接: https://pan.baidu.com/s/1ozTRR4UGtxMWjBrTC_Pdyw 密码: gig8
# Step1
尝试直接修改资源文件.
看下exe,使用eXeScope , 有目录结构,但是发现资源加密了, 打不开里面的任何东西
使用exeinfope查壳
壳的信息如下:
```
EP signature ( EB08 ) with Packer ID via "TAGG" - Unknown Packer-Protector , 6 sections - CRC is Set --> PE Header manipulated/tampered <- [ Win Vista ] ,
Overlay : 76A8C2... Nothing discovered
```
不觉明历, 百度说是se壳, 论坛里面好像有怎么脱壳的.好像比较麻烦,先放下.
有熟悉的人可以联系我一下~
# Step2
重新看eXeScope , 目录结构 并没有看到类似资源文件的东西,看了下exe大小, 才3M. 估计没有资源文件, 找目录,发现common_res.dll.
都res了果断这个,拖入eXeScope. 发现是这个没毛病.
看了下text里面有配置好的文本的xml
![](http://chuantu.biz/t6/337/1530517502x-1376440246.png)
估计是官方已经考虑到了语言问题, 或者也方便自己资源配置吧
翻译一下就好了
# Step3
导出xml后
懒得一个一个翻译
写了一个很简单的自动翻译
原理设计是用google的翻译
http://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=要翻译的文字
代码放最下面
搞定后保存 重新编译dll
这里有个注意点, 复制的时候用utf-8,否则会乱码
# Code
delphi 代码如下:
```
unit ufrmGoogleTrans;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, msxml, StdCtrls, ActiveX, ComObj, uSimpleXml;
type
TGoogleTrans = class(TForm)
procedure FormClick(Sender: TObject);
private
function XMLHTTPRequest(str: string): string;
procedure ChangeNode(aNode: TXmlNode);
procedure ChangeNodeSingle(aNode: TXmlNode);
{ Private declarations }
public
{ Public declarations }
end;
var
GoogleTrans: TGoogleTrans;
implementation
{$R *.dfm}
function TGoogleTrans.XMLHTTPRequest(str: string): string;
var
req: IXMLHTTPRequest;
url: WideString; //要访问的url
params : string; //要提交的数据
begin
url := 'http://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q='+str;
req := CoXMLHTTP.Create;
req.open('GET', url, False, EmptyParam, EmptyParam);
req.send(EmptyParam);
result := req.responseText;
//[[["",]
result := copy(result,1,pos(',',result)-2);
result := copy(result,5,Length(result)-4);
end;
procedure TGoogleTrans.ChangeNode(aNode: TXmlNode);
var
I: Integer;
aChildNode: TXmlNode;
begin
ChangeNodeSingle(aNode);
if aNode.NodeCount > 0 then
for I := 0 to aNode.NodeCount -1 do
ChangeNode(aNode.Nodes);
end;
procedure TGoogleTrans.ChangeNodeSingle(aNode: TXmlNode);
var
sName: string;
begin
sName := aNode.ReadAttributeString('name','');
Self.Caption := '正在翻译...'+ sName;
Application.ProcessMessages;
if Trim(sName) <> '' then
sName := XMLHTTPRequest(sName);
aNode.WriteAttributeString('name', sName, '');
end;
procedure TGoogleTrans.FormClick(Sender: TObject);
var
xml: TSimpleXml;
aNode: TXmlNode;
sPath: string;
begin
xml:= TSimpleXml.Create;
try
sPath :='C:\Users\Administrator\Desktop\新建 文本文档.txt';
xml.LoadFromFile(sPath);
aNode := xml.Root;
ChangeNode(aNode);
xml.SaveToFile(sPath+'.trans');
Self.Caption := 'finish...';
Application.ProcessMessages;
finally
xml.Free;
end;
end;
``` vip3233 发表于 2018-7-4 14:57
那位老师能来继续完善汉化完整界面,想选择个最佳答案,400LTB不够可在加一些的呢,感谢楼主另外开贴,更希 ...
exe被加壳了.个人水平有限,真搞不定这个壳...... sorry... pzx521521 发表于 2018-7-4 15:13
exe被加壳了.个人水平有限,真搞不定这个壳...... sorry...
谢谢老师,向你学习了 支持一下{:300_965:} 厉害了~~~~~~~ 谢谢分享 学习了, 不错不错 我比楼主还小白 谢谢分享 支持一下 我很赞同! 厉害了~~~~~~~