在百度翻译网站“http://api.fanyi.baidu.com/api/trans/product/index”注册账号,然后获取api,在管理控制台中可以看到自己的app id和密匙
通用翻译API通过HTTP接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。
通用翻译API HTTP地址:
http://api.fanyi.baidu.com/api/trans/vip/translate
通用翻译API HTTPS地址:
https://fanyi-api.baidu.com/api/trans/vip/translate
您需要向该地址通过POST或GET方法发送下列字段来访问服务
签名是为了保证调用安全,使用MD5算法生成的一段字符串,生成的签名长度为 32位,签名中的英文字符均为小写格式
如下代码需要你自己将你申请的appid和密匙填入即可运行,此代码只是针对中文翻译英文,如果需要更改其他语言,只需将From_Data字典中from和to字段更改成对应的语言缩写就可以了,具体语言缩写可以看百度翻译api网站上的文档介绍
from tkinter import *
from urllib import request
from urllib import parse
import json
import hashlib
def translate_Word(en_str):
URL='http://api.fanyi.baidu.com/api/trans/vip/translate'
From_Data={} #创建From_Data字典,存储向服务器发送的data
From_Data['from']='zh'
From_Data['to']='en'
From_Data['q']=en_str #要翻译的数据
From_Data['appid']='填写你的appid' #申请的APPID
From_Data['salt']='1435660288' #随机数
Key='填写你的密匙' #平台分配的密匙
m=From_Data['appid']+en_str+From_Data['salt']+Key
m_MD5=hashlib.md5(m.encode('utf8'))
From_Data['sign']=m_MD5.hexdigest()
data=parse.urlencode(From_Data).encode('utf-8')
#使用urlencode()方法转换标准格式
response=request.urlopen(URL,data) #传递request对象和转换完格式的数据
html=response.read().decode('utf-8') #读取信息并解码
translate_results=json.loads(html) #使用JSON
print(translate_results) #打印出JSON数据
translate_results=translate_results['trans_result'][0]['dst'] #找到翻译结果
print('翻译的结果是: %s'%translate_results) #打印翻译信息
return translate_results
def leftClick(event):
en_str=Entry1.get()
print(en_str)
vText=translate_Word(en_str)
Entry2.config(Entry2,text=vText)
s.set("")
Entry2.insert(0,vText)
def leftClick2(event):
s.set("")
Entry2.insert(0,"")
if __name__=='__main__':
root=Tk()
root.title('百度翻译器')
root.geometry('300x130')
Label(root,text='输入要翻译的内容:',width=15).place(x=1,y=1)#绝对坐标1,1
Entry1=Entry(root,width=20)
Entry1.place(x=120,y=1)
Label(root,text='翻译结果:',width=22).place(x=1,y=20)
s=StringVar()
s.set('')
Entry2=Entry(root,width=20,textvariable=s)
Entry2.place(x=120,y=20)
Button1 = Button(root,text='翻译',width=8)
Button1.place(x=80,y=80)
Button2 = Button(root, text='清空', width=8)
Button2.place(x=180, y=80)
#给button设置监听事件
Button1.bind('',leftClick) #翻译按钮
Button2.bind('',leftClick2) #清空按钮
root.mainloop()