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 <- [Signed] [ Win Vista ] ,
Overlay : 76A8C2... Nothing discovered
不觉明历, 百度 说是se壳, 论坛里面好像有怎么脱壳的.好像比较麻烦,先放下.
有熟悉的人可以联系我一下~
Step2
重新看eXeScope , 目录结构 并没有看到类似资源文件的东西,看了下exe大小, 才3M. 估计没有资源文件, 找目录,发现common_res.dll.
都res了果断这个, 拖入eXeScope. 发现是这个没毛病.
看了下text里面有配置好的文本的xml
估计是官方已经考虑到了语言问题, 或者也方便自己资源配置吧
翻译一下就好了
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[I]);
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;