吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9397|回复: 14
收起左侧

[其他原创] 教你如何给一个没有自动翻译功能的软件自动化完成批翻译

[复制链接]
冥界3大法王 发表于 2019-4-23 12:00
本帖最后由 冥界3大法王 于 2019-4-23 13:27 编辑

教你如何给一个没有那自动翻译功能的软件自动化完成批翻译功能

作者:冥界三大法王

要翻译的软件就是下面这款!Wing IDE 6.1
Snap16.jpg
这玩意本人已经手动的汉化了整整三天时间通过论坛发贴和求助交流等知道必须得用下面这款才行
Snap17.jpg
要汉化下面两个文件夹下的文件:
Snap19.jpg
Snap18.jpg
当汉化完了上面第一个文件夹的所有文件后才知道,原来第二个下的文件也得汉化,不然部分词条还依然坚挺 ~~通过观察这个软件的菜单发现:
Snap20.jpg
这个软件并没有有效的导入和导出词典 或TXT等功能 ,同时也不具备自动化的完成翻译的工作。
翻译了三天了,还有这么多未处理,而软件中实在无有投机取巧的地方!实在是受够了 ~~
所以,我们要通过编脚本的方式来解决这个问题。开始走了不少弯路,想通过AHK脚本+网页翻译来完成汉化。后来发现不少接口是收费的或是需要post和收回翻译后的数据,所以也就放弃了该想法。通过论坛搜索和使用,发现下面这款还可以
Snap21.jpg

Snap24.jpg
默认光标停在第二行上,而不是第一行上。我们使用翻译软件时,需要点击第一行来定位,然后Ctrl+A , Ctrl+D, TAB下一行 ,Ctrl+V

Snap27.jpg
还有一个问题 百分号+字母,会被修改成这样。有过汉化经验的同学都清楚,这样会导致程序崩溃 ~~
Snap28.jpg 还有最后一个问题,Python的程序菜单的热字母 菜单  有些古怪 ~~长这个样子的,所以要想汉化的更为习惯和大众化你得翻译成 选项(_O) 但是问题也来了,不是所有的_下划线都一定是菜单的热键 。你把它们替换为空 ,这一定并不总是成立的。
Snap29.jpg
在AHK 的帮助中,有这么2条内置变量 A_CaretX ,A_CaretY可以定位到当前程序的 I形 鼠标指针的光标 X和Y坐标处 。但是通过测试发现,我们并不能 得到 坐标A和坐标B点的坐标,所以,此方法在这里行不通。通过观察我们发现还有坐标C点可以来利用,相对位置 定位到坐标A点 或 B点


有了上面的分析和介绍,我们就可以写脚本了。1. 我们上来先写个循环语句 loop{这里边一会扔入循环的内容}
然后,我们再定义一个退出的热键F12

[Asm] 纯文本查看 复制代码
F12::ExitApp



2.下面我们就来制作找图点击的操作打开《信手拈来按键帮你来》
Snap30.jpg
点击制作字库
Snap31.jpg
自动的生成了右面的代码  和 打开了 左面的窗口我们点击  【抓取文字图像】
Snap32.jpg Snap33.jpg
我们依次点击 左删删 ,右删删,上删删,下删删; 点击目标图像, 点下二值化, 确定。

Snap34.jpg
这样 我们就得到了上面的这些代码 ,我们把这些代码 复制, 替换掉 上面截图中的 五星
[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是获取物理状态)上面的退出程序可以删除掉

最后我们再把几个部分的代码进行终极合并,我们的自动化翻译和处理的脚本就完成了。

免费评分

参与人数 11吾爱币 +14 热心值 +9 收起 理由
HOW2J + 1 谢谢@Thanks!
wushuang100 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lsz7575 + 1 谢谢@Thanks!
周峻弘 + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
那一道弯 + 1 谢谢@Thanks!
libojun + 1 + 1 热心回复!
砸七砸八 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
KING9115 + 1 + 1 我很赞同!
joneqm + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 冥界3大法王 发表于 2019-4-25 14:29
上面的代码有漏算:剪贴板的内容两次都一样,没真的比较出来。
参考下面这些:

[Asm] 纯文本查看 复制代码
再来:
	IniRead , 自定义变量 , c:\test.ini , 配置文件 , 剪贴板内容
	if  Clipboard=%自定义变量%
	{
		;MsgBox,剪贴板内容与上次一样`n二者相等,说明翻译后的内容未变`n重新按下Ctrl+D
		Send,^a
		Sleep,200
		Send,^d
		Sleep,500
		goto,再来
	}
	else
	{
		Send,{Tab}
		Sleep,100
		Send,^a
		Send,{Del}
		Sleep,100
		Send,^v
		Sleep,100
		Send,{Enter}

		B1=%Clipboard%
		IniWrite , %B1% , c:\test.ini , 配置文件 , 剪贴板内容
	}
return
 楼主| 冥界3大法王 发表于 2019-4-26 08:56
上面的程序还有一个小问题,每行按钮的【已翻译】只有在改变之后 或是 【原来有德语翻译】时是【已翻译】
没翻译的地方,先要伪翻译一下。用下面的代码就瞬间OK了。
[Asm] 纯文本查看 复制代码
F2::
	Loop
	{
		Send,{Tab}
		Sleep,50
		Clipboard=test
		Send,^v
		Send,{Enter}
	}

这次运行没什么问题了。
KING9115 发表于 2019-4-23 12:22
LjeA 发表于 2019-4-23 12:32
强大,学习了
HA_Linux 发表于 2019-4-23 12:39
这个非常好,学习了!
baxtax 发表于 2019-4-23 12:42
这个非常好,学习了!
Aug.LuKai 发表于 2019-4-23 12:43
论坛上也没发布《信手拈来按键帮你来》这款工具呀
砸七砸八 发表于 2019-4-23 12:44
这个厉害了
为海尔而战 发表于 2019-4-23 14:33
受教了,有空翻译化工专业的软件去
shghe 发表于 2019-4-24 08:43
大仙这法力太高了!!!!!虽然没看懂
keiwen27 发表于 2019-4-24 16:24
佩服你的想法
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-4 17:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表