Deepin V20 系统快捷翻译

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,终端等遇到不会的英文单词 ,只要鼠标划词复制,按下快捷键,就能够在终端看到翻译结果了。
虽然笨拙,以解不时之需。

原文地址:https://www.cnblogs.com/liwanliangblog/p/12762671.html