1. 背景
在deepin深度系统下,会经常接触英文文档,或者命令行不认识的英文单词。以前都是打开浏览器,通过fanyi.baidu.com来查询翻译结果。
但是对于需要大段文档进行翻译的时候,这种方式显得异常的笨拙和缓慢。
如果是查询单个单词,我们使用uTools进行查询也是比较快捷的,但是同样对于大段翻译不是很友好。
一些在Linux系统下能够划词或者截屏翻译的软件和插件有很多。但是像有道词典我用过几次,感觉不是很好。
这里是我自己的一个方式,来应对上述这些情况
2. 使用百度翻译API
很简单。需要有个一百度账号。然后去百度开发者平台,点击自己账号下面的开发者信息。
申请开发者的APP ID和密钥即可。
然后直接下载官方给出的样例,把自己的信息修改进去。
比如我下载的是Python3版本的BaiduTransAPI-forPython3.py.zip,需要在deepin上通过pip3(sudo apt-get install python3-pip)安装这个文件中缺失的模块。
3. 修改和创建脚本
我在自己的家目录下创建了这样一个目录,把上面的脚本放进去
cd ~/Downloads
unzip BaiduTransAPI-forPython3.py.zip
mkdir -p /home/liwl/.myscripts/trans/
cd ~/Downloads/BaiduTransAPI-forPython3.py
cp BaiduTransAPI-forPython3.py /home/liwl/.myscripts/trans/baidu_trans.py
baidu_trans.py的内容需要修改,内容如下:
#百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@baidu.com
# coding=utf-8
import http.client
import hashlib
import urllib
import random
import json
#导入sys,以便解析脚步参数
import sys
appid = '你的appid' # 填写你的appid
secretKey = '你的密钥' # 填写你的密钥
httpClient = None
myurl = '/api/trans/vip/translate'
fromLang = 'auto' #原文语种
toLang = 'zh' #译文语种
salt = random.randint(32768, 65536)
#这里把脚步参数拼接成字符串
q= " ".join(sys.argv[1:])
sign = appid + q + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
salt) + '&sign=' + sign
try:
httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
# response是HTTPResponse对象
response = httpClient.getresponse()
result_all = response.read().decode("utf-8")
result = json.loads(result_all)
print (result.get('trans_result')[0].get('dst'))
except Exception as e:
print (e)
finally:
if httpClient:
httpClient.close()
然后在/home/liwl/.myscripts/trans/目录下创建两个文件,exec_baidu_trans_py.sh和show_result.sh
exec_baidu_trans_py.sh的内容如下:
#!/bin/bash
python3 /home/liwl/.myscripts/trans/baidu_trans.py $(xclip -o)
show_result.sh的内容如下:
#!/bin/bash
timeout 15 deepin-terminal -e /home/liwl/.myscripts/trans/exec_baidu_trans_py.sh >/dev/null 2>&1
4. 设置翻译的系统快捷键
在deepin的控制中心-键盘-快捷键,设置调用/home/liwl/.myscripts/trans/show_result.sh的快捷键即可。
所以,在阅读网页,PDF,终端等遇到不会的英文单词 ,只要鼠标划词复制,按下快捷键,就能够在终端看到翻译结果了。
虽然笨拙,以解不时之需。