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

  • 相关阅读:
    day06
    day05
    day04
    day03
    day02
    day01
    python-study-42
    OI 知识总览 算法篇 之 图论
    OI 知识总览 算法篇 之 基础算法
    [CSP2019-JX] 散步 解题报告
  • 原文地址:https://www.cnblogs.com/liwanliangblog/p/12762671.html
Copyright © 2011-2022 走看看