好友
阅读权限40
听众
最后登录1970-1-1
|
本帖最后由 冥界3大法王 于 2019-4-23 13:27 编辑
教你如何给一个没有那自动翻译功能的软件自动化完成批翻译功能
作者:冥界三大法王
要翻译的软件就是下面这款!Wing IDE 6.1
这玩意本人已经手动的汉化了整整三天时间通过论坛发贴和求助交流等知道必须得用下面这款才行
要汉化下面两个文件夹下的文件:
当汉化完了上面第一个文件夹的所有文件后才知道,原来第二个下的文件也得汉化,不然部分词条还依然坚挺 ~~通过观察这个软件的菜单发现:
这个软件并没有有效的导入和导出词典 或TXT等功能 ,同时也不具备自动化的完成翻译的工作。
翻译了三天了,还有这么多未处理,而软件中实在无有投机取巧的地方!实在是受够了 ~~
所以,我们要通过编脚本的方式来解决这个问题。开始走了不少弯路,想通过AHK脚本+网页翻译来完成汉化。后来发现不少接口是收费的或是需要post和收回翻译后的数据,所以也就放弃了该想法。通过论坛搜索和使用,发现下面这款还可以
默认光标停在第二行上,而不是第一行上。我们使用翻译软件时,需要点击第一行来定位,然后Ctrl+A , Ctrl+D, TAB下一行 ,Ctrl+V
还有一个问题 百分号+字母,会被修改成这样。有过汉化经验的同学都清楚,这样会导致程序崩溃 ~~
还有最后一个问题,Python的程序菜单的热字母 菜单 有些古怪 ~~长这个样子的,所以要想汉化的更为习惯和大众化你得翻译成 选项(_O) 但是问题也来了,不是所有的_下划线都一定是菜单的热键 。你把它们替换为空 ,这一定并不总是成立的。
在AHK 的帮助中,有这么2条内置变量 A_CaretX ,A_CaretY可以定位到当前程序的 I形 鼠标指针的光标 X和Y坐标处 。但是通过测试发现,我们并不能 得到 坐标A和坐标B点的坐标,所以,此方法在这里行不通。通过观察我们发现还有坐标C点可以来利用,相对位置 定位到坐标A点 或 B点
有了上面的分析和介绍,我们就可以写脚本了。1. 我们上来先写个循环语句 loop{这里边一会扔入循环的内容}
然后,我们再定义一个退出的热键F12
[Asm] 纯文本查看 复制代码 F12::ExitApp
2.下面我们就来制作找图点击的操作打开《信手拈来按键帮你来》
点击制作字库
自动的生成了右面的代码 和 打开了 左面的窗口我们点击 【抓取文字图像】
我们依次点击 左删删 ,右删删,上删删,下删删; 点击目标图像, 点下二值化, 确定。
这样 我们就得到了上面的这些代码 ,我们把这些代码 复制, 替换掉 上面截图中的 五星
[Asm] 纯文本查看 复制代码 F1::
文字=
文字.="|<>5.6RzzzSQQ"
if 查找文字(1443,193,150000,150000,文字,"*109",X,Y,OCR,0,0)
{
CoordMode, Mouse
MouseMove, X-180, Y-50
Click X, Y
}
然后 我们再把相对坐标各自修改一下,这样,我们的第二部分就完成了。
接下来,我们再来写下面的测试代码
[Asm] 纯文本查看 复制代码 F3::
Send,^a ;全选
Sleep,50 ;轻微的延迟,50毫秒
Send,^c ;复制到剪贴板
A1=%Clipboard%
;========================================
字符串长度 := StrLen(A1)
if 字符串长度 < 10
{
;MsgBox,字符串长度小于10个字符`n执行原样粘贴
Send,{Tab} ;移到下一行,全选,删除,粘贴
Sleep,100
Send,^a
Send,{Del}
Sleep,100
Send,^v
}
else ;如果大于10
{
;MsgBox,执行Ctrl+D调用翻译软件的翻译操作
IfInString,A1, _
{
;MsgBox, 这个字符串存在!
StringReplace, 整理后字符串, A1, _, , All ;裁切掉_
;MsgBox,%整理后字符串%
Clipboard=%整理后字符串%
Sleep,200
Send,^v
Send,^a
Send,{Del}
Sleep,100
Send,^d
Sleep,100
Send,^v
}
else
{
Send,^a
Sleep,200
Send,^d
Sleep,500 ;保存一个变量B1;然后下面与下次处理后(翻译)的剪贴板做比较
B1=%Clipboard%
if Clipboard=B1 ;二得相等,说明翻译后的内容未变
{
;MsgBox,按键太快,没翻译成功!
Send,^a
Sleep,100
Send,{Del}
Sleep,100
Clipboard=%A1%
Send,^v
Sleep,100
Send,^a
Sleep,100
Send,^d
Sleep,500
Send,^v
}
else
{
;MsgBox,翻译成功,再进行`%字符转换操作
StringReplace, 整理后字符串2, Clipboard, %s,`%s , All ;这次我们自动处理%s这个中文的变为英文的
;MsgBox,%整理后字符串2%
Clipboard=%整理后字符串2%
Send,{Tab}
Sleep,100
Send,^a
Sleep,100
Send,{Del}
Send,^v
Sleep,100
Send,{Enter} ;这样就是下一行要翻译的地方了!这里再接找图定位操作
}
}
}
完成测试后,是不是效果还不错吧。
最后,我们再把上面的第一部分代码做下面的修改
[Asm] 纯文本查看 复制代码 Loop
{
;这是你的循环体内容
}until GetKeyState("F12“,”p") ;无限循环直到按F12键终止(P是获取物理状态)上面的退出程序可以删除掉
最后我们再把几个部分的代码进行终极合并,我们的自动化翻译和处理的脚本就完成了。
|
免费评分
-
查看全部评分
|