Home

Awesome

Translator

命令行聚合翻译工具,支持谷歌,必应,有道,百度,词霸,360

Preface

命令行翻译工具,可单独使用,可集成 Vim/Emacs,也可搭配 GoldenDict,之前用别人的命令行有道翻译,用着用着接口就挂了,网上找了两段百度翻译的代码,调试下发现接口已经过期。

最终找到一个桌面软件:QTranslate,同时支持十大翻译引擎,这个挂了可以用那个,这个翻译的不好可以看另外一个。所以我打算模仿一下 QTranslate,在命令行下面写这么一个东西,目标是:

Screenshots

命令行

GoldenDict

同一个页面内同时集成多个翻译引擎,一次查询所有结果同时显示。

Requirements

Python 3.5+ 以及 requests 库:

pip install requests

想要支持代理的话,安装 requests 的 socks 包:

pip install requests[socks]

Configuration

配置位于 ~/.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

用记事本打开编辑即可。

Usage

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

Engines

可以使用下面引擎

引擎名称说明标准接口国内直连需要 Key 吗免费状态
google谷歌YesYes*No免费完成
azure微软YesYesYes每月1万条内免费完成
baidu百度YesYesYes每月1万条内免费完成
youdao有道NoYesNo免费完成
bingdict必应词典(只能中英)YesYesNo免费完成
ciba词霸YesYesNo免费完成
sogou搜狗YesYesNo免费TODO
baiduweb百度No (爬虫)YesNo免费TODO

说明:

Tips

谷歌翻译的直接访问

默认使用 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= 不同的命令即可。

Credit

逐步完善添加