一个简单的划词翻译工具

一个简单的划词翻译工具


  看论文时经常要翻译,然而手动复制粘贴到翻译网站上又很麻烦,有些划词翻译工具比如有道的划词和取词,虽然不用按快捷键只选中文本就能翻译,但有时也会失灵什么的,于是就自己用python写了个调用百度翻译api的翻译脚本,翻译结果和百度翻译网站上的一模一样,感觉挺方便的。


效果

  • 通过鼠标选择文本后,按下快捷键可以快速英汉互译,通过弹窗显示结果,其中汉译英需要满足第一个字是汉字
  • 会自动复制翻译结果到剪切板中,按ctrl+v也可以显示文本
  • 若不选择任何文本,则会翻译最近的剪切板中的文字,也就是说,连续按两下快捷键会先翻译成中文,再翻译成英文,或反过来。(这个操作简直是写论文避重的神器?)
    划词翻译

需求

  • 需求python3,安装库pyperclip和pyautogui
    • 下载安装python3
    • pip install pyperclip
    • pip install pyautogui
  • Windows中需要AutoHotkey软件
  • 百度翻译开放平台注册账号,将下面的代码块命名为translate.py并在18和20行中输入appid和secretkey

  注意下面被{}括起来的表示文件的绝对位置,需要替换


Windows系统中

  • 下载安装AutoHotkey
  • 新建 translate.ahk \text{translate.ahk} translate.ahk, 填入下面代码,双击运行即可
#z:: Run %ComSpec% /c "python {translate.py}", , Hide
  • #z代表快捷键为Win+z,#代表Win键,目前这个快捷键组合好像没什么冲突,按着也方便。若要改其他快捷键,可参考符号如下
符号按键
#Win
^Ctrl
!Alt
+Shift
  • 另外,将 translate.ahk \text{translate.ahk} translate.ahk放入Windows的启动文件夹,可设置开机启动
    • 启动文件夹一般是在C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Linux或Mac系统中

  • 自定义快捷键,内容为 python {translate.py} \text{python \{translate.py\}} python {translate.py}

translate.py \text{translate.py} translate.py

import pyperclip
import pyautogui
import random
import json
from http import client
from hashlib import md5
from urllib.parse import quote

pyautogui.hotkey('ctrl', 'c')
sentence = pyperclip.paste()
sentence = sentence.replace('\n', ' ')
fromLang = 'auto'
if sentence[0] >= u'\u4e00' and sentence[0] <=u'\u9fa5':
    toLang = 'en'
else:
    toLang = 'zh'
# enter your appid
appid = '' 
# enter your secretkey
secretKey = '' 
myurl = '/api/trans/vip/translate'
salt = random.randint(32768, 65536)
sign = appid+sentence+str(salt)+secretKey
m1 = md5(sign.encode(encoding='utf-8'))
sign = m1.hexdigest()
myurl = myurl+'?appid='+appid+'&q='+ quote(sentence)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
try:
    httpClient = client.HTTPConnection('api.fanyi.baidu.com')
    httpClient.request('GET', myurl)
    response = httpClient.getresponse()
    result = response.read()
    result = json.loads(result)['trans_result'][0]['dst']
except:
    result = 'Non-networked'
finally:
    if httpClient:
        httpClient.close()
try:
    # pyperclip.copy('api.fanyi.baidu.com/' + myurl)
    pyperclip.copy(result)
    pyautogui.alert(result,  title='Result')
except:
    pass
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao Ice

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值