命令行聚合翻译工具,支持谷歌,必应,有道,百度,词霸,360
命令行翻译工具,可单独使用,可集成 Vim/Emacs,也可搭配 GoldenDict,之前用别人的命令行有道翻译,用着用着接口就挂了,网上找了两段百度翻译的代码,调试下发现接口已经过期。
最终找到一个桌面软件:QTranslate,同时支持十大翻译引擎,这个挂了可以用那个,这个翻译的不好可以看另外一个。所以我打算模仿一下 QTranslate,在命令行下面写这么一个东西,目标是:
- 支持代理:很多工具不支持代理,导致某些引擎就没法使用,所以代理是一等公民。
- 多种引擎:初期支持:谷歌,必应,有道,百度,词霸,360,并且不断更新。
- 同引擎多实现:官方接口(有的话),页面爬虫(如果官方接口要付费的话)。
- 三种输出:纯文本,HTML(方便集成字典),xterm(终端色彩高亮)。
- 可以方便的同 GoldenDict 等工具集成。
同一个页面内同时集成多个翻译引擎,一次查询所有结果同时显示。
Python 3.5+ 以及 requests 库:
pip install requests
想要支持代理的话,安装 requests 的 socks 包:
pip install requests[socks]
配置位于 ~/.config/translator/config.ini
,内容类似:
# 所有翻译引擎共享的公共设置,比如网络超时,代理设置
[default]
timeout = 10
# 谷歌翻译 (使用国内可以访问的地址)
[google]
host = translate.google.cn
# 必应翻译
[bing]
proxy = socks5://localhost:1080
# 百度翻译:默认实现需要自行申请 apikey/secret
[baidu]
apikey = xxxxx
secret = xxxxx
# 百度:页面爬虫实现
[baidu-web]
xxx
Windows 下面的话,该文件位于:
C:\Users\你的用户名\.config\translator
用记事本打开编辑即可。
translator.py [--engine=引擎名称] [--from=语言] [--to=语言] {文字}
测试:
python translator.py 吃饭了没有?
输出:
Have you eaten yet?
-------------
Alternatives
- 吃饭了没有?
* Have you eaten yet?
* Eat yet?
测试:(有道引擎)
python translator.py --engine=youdao 吃饭了没有?
输出:
Have a meal not?
---------
have you eaten yet
可以使用下面引擎
引擎名称 | 说明 | 标准接口 | 国内直连 | 需要 Key 吗 | 免费 | 状态 |
---|---|---|---|---|---|---|
谷歌 | Yes | Yes* | No | 免费 | 完成 | |
azure | 微软 | Yes | Yes | Yes | 每月1万条内免费 | 完成 |
baidu | 百度 | Yes | Yes | Yes | 每月1万条内免费 | 完成 |
youdao | 有道 | No | Yes | No | 免费 | 完成 |
bingdict | 必应词典(只能中英) | Yes | Yes | No | 免费 | 完成 |
ciba | 词霸 | Yes | Yes | No | 免费 | 完成 |
sogou | 搜狗 | Yes | Yes | No | 免费 | TODO |
baiduweb | 百度 | No (爬虫) | Yes | No | 免费 | TODO |
说明:
- 微软 Azure 的翻译服务(必应),自己去 Azure 申请一个免费 Key,每月 1 万次免费查询。
- 需要 APIKEY 的 Azure/Baidu 虽然初次使用麻烦,但是是官方标准 API,稳定性上超过其他。
- 谷歌翻译直接访问需要配置 config.ini 里的 host 或者代理。
默认使用 translate.googleapis.com
有时国内不一定能够直连,所以国内可以设置:
[google]
host = translate.google.cn
来修改 API 地址,或者使用:
[google]
proxy=socks5h://localhost:1080
来配置代理(如果你本机有的话),这里代理使用 socks5h://
的开头,这是 python requests 包里面的语法格式,多了一个 h
意思是域名也送给代理解析,本地不解析域名。
要集成 GoldenDict,先在命令行下测试 Python 可以顺利运行该脚本,然后设置你的词典:
按 F3 打开词典设置,然后点 “程序”,选择 “纯文本”,后面是名字和运行命令,假设你的 Python 安装在 C:\python37 而脚本在 D:\Github\translator,那么命令为:
C:\python37\python d:\Github\translator\translator.py --engine=azure "%GDWORD%"
注意 %GDWORD%
需要用双引号引起来,这样的话词组不会出错。
最后是图标路径(图标请自己下载),你想要同时展示多少个翻译引擎就参考上面,配置多少行 --engine=
不同的命令即可。
逐步完善添加