python翻译器
程序员文章站
2022-05-29 21:07:25
...
python翻译器
用python写翻译器还是比较方便的,因为可以调用各种库和接口,本文调用的就是百度翻译的接口,在调用接口前要先去这个网站注册:百度翻译开放平台
下面是用python写的一个翻译器,效果如下:
- 或不多说,直接上教程
- 先调用库,其中界面是用tkinter写的
from tkinter import *
from urllib import request
from urllib import parse
import json
import hashlib
import random
-
http://api.fanyi.baidu.com/api/trans/vip/translate 是百度翻译网站接口,只要去 百度翻译开放平台注册即可得到appid和key
-
写关于 任意语言——>中文 的接口函数
def translate_word2(jp_str):
URLx='http://api.fanyi.baidu.com/api/trans/vip/translate'
From_Data={}
From_Data['from']='auto'
From_Data['to']='en'
From_Data['q']=jp_str
From_Data['transtype']='hash'
From_Data['appid']='在这里输入注册得到的appid'
From_Data['salt']=str(random.randint(32768, 65536))
Key="在这里输入注册得到的key"
x=From_Data['appid']+jp_str+From_Data['salt']+Key
x_MD5=hashlib.md5(x.encode('utf8'))
From_Data['sign']=x_MD5.hexdigest()
datax=parse.urlencode(From_Data).encode('utf-8')
responsex=request.urlopen(URLx, datax)
htmlx=responsex.read().decode('utf-8')
translate_resultsx=json.loads(htmlx)
print(translate_resultsx)
translate_resultsx = translate_resultsx['trans_result'][0]['dst']
print("翻译的结果是:%s" % translate_resultsx)
return translate_resultsx
- 写关于 任意语言——>英文 的接口函数
def translate_word2(jp_str):
URLx='http://api.fanyi.baidu.com/api/trans/vip/translate'
From_Data={}
From_Data['from']='auto'
From_Data['to']='en'
From_Data['q']=jp_str
From_Data['transtype']='hash'
From_Data['appid']='在这里输入注册得到的appid'
From_Data['salt']=str(random.randint(32768, 65536))
Key="在这里输入注册得到的key"
x=From_Data['appid']+jp_str+From_Data['salt']+Key
x_MD5=hashlib.md5(x.encode('utf8'))
From_Data['sign']=x_MD5.hexdigest()
datax=parse.urlencode(From_Data).encode('utf-8')
responsex=request.urlopen(URLx, datax)
htmlx=responsex.read().decode('utf-8')
translate_resultsx=json.loads(htmlx)
print(translate_resultsx)
translate_resultsx = translate_resultsx['trans_result'][0]['dst']
print("翻译的结果是:%s" % translate_resultsx)
return translate_resultsx
- 写关于 任意语言——>文言文 的接口函数
def translate_word3(ru_str):
URLr='http://api.fanyi.baidu.com/api/trans/vip/translate'
From_Data={}
From_Data['from']='auto'
From_Data['to']='wyw'
From_Data['q']=ru_str
From_Data['transtype']='hash'
From_Data['appid']='在这里输入注册得到的appid'
From_Data['salt']=str(random.randint(32768, 65536))
Key="在这里输入注册得到的key"
r=From_Data['appid']+ru_str+From_Data['salt']+Key
r_MD5=hashlib.md5(r.encode('utf8'))
From_Data['sign']=r_MD5.hexdigest()
datar=parse.urlencode(From_Data).encode('utf-8')
responser=request.urlopen(URLr, datar)
htmlr=responser.read().decode('utf-8')
translate_resultsr=json.loads(htmlr)
print(translate_resultsr)
translate_resultsr = translate_resultsr['trans_result'][0]['dst']
print("翻译的结果是:%s" % translate_resultsr)
return translate_resultsr
上面写了翻译成三种语言的接口,若想从一种语言翻译成其他语言,只需修改下面的简写即可
From_Data['from']='zh'
From_Data['to']='en'
这里给出了常用的语言简写:语言简写
-
这里是如下按钮的接口函数
def printevent1(event):
zh_str=e0.get()
print(zh_str)
fye=translate_word1(zh_str)
s.set("")
e1.insert(0, fye)
def printevent2(event):
jp_str=e0.get()
print(jp_str)
fyj=translate_word2(jp_str)
m.set("")
e2.insert(0, fyj)
def printevent3(event):
ru_str=e0.get()
print(ru_str)
fyr=translate_word3(ru_str)
z.set("")
e3.insert(0, fyr)
def printevent4(event):
s.set("")
e1.insert(0, "")
m.set("")
e2.insert(0, "")
z.set("")
e3.insert(0, "")
- 最后就是调用这些接口的主函数
if __name__ == "__main__":
root = Tk()
root.title("残废单词翻译器")
root['width']=600; root['height']=200
Label(root, text="请输入要翻译的内容(auto):", width=24).place(x=1, y=5)
e0=Entry(root, width=35)
e0.place(x=160, y=5)
Label(root, text="(auto->中)翻译结果:", width=28).place(x=2, y=30)
s=StringVar()
s.set("")
e1=Entry(root, width=35, textvariable=s)
e1.place(x=160, y=35)
Label(root, text="(auto->英)翻译结果:", width=28).place(x=2, y=60)
m=StringVar()
m.set("")
e2=Entry(root, width=35, textvariable=m)
e2.place(x=160, y=60)
Label(root, text="(auto->文言文)翻译结果:", width=28).place(x=2, y=90)
z=StringVar()
z.set("")
e3=Entry(root, width=35, textvariable=z)
e3.place(x=160, y=90)
c1=Button(root, text="翻译(中)", width=10)
c1.place(x=30, y=150)
c2=Button(root, text="翻译(英)", width=10)
c2.place(x=120, y=150)
c3=Button(root, text="翻译(文言文)", width=10)
c3.place(x=210, y=150)
c4=Button(root, text="清空", width=10)
c4.place(x=300, y=150)
c1.bind("<Button-1>", printevent1)
c2.bind("<Button-1>", printevent2)
c3.bind("<Button-1>", printevent3)
c4.bind("<Button-1>", printevent4)
root.mainloop()