liwanliangblog

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

分类:

技术点:

相关文章:

  • 2021-08-07
  • 2021-12-04
  • 2021-06-10
  • 2020-06-02
  • 2021-08-07
  • 2021-04-23
  • 2021-09-26
  • 2021-11-19
猜你喜欢
  • 2021-07-02
  • 2021-12-14
  • 2021-04-01
  • 2021-06-07
  • 2021-07-03
  • 2022-01-09
  • 2021-12-04
相关资源
相似解决方案