使用python做一个翻译工具

  • Post author:
  • Post category:python


大家也或多或少的使用过各种的翻译软件,有没有自己想过自己做一个翻译的工具呢。我这边就给大家提供一个思路,通过百度通用翻译接口做一下,接下来介绍一下步骤。

一、首先需要我们注册一下百度账号,打开百度,右上角登录,点击

有个立即注册,点击按操作来就可以了

注册完之后,打开这个网站https://api.fanyi.baidu.com/,登录刚才注册的账号

首先注册成为个人开发者,首页中打开管理控制台

默认选择的是企业开发者,这里选择个人开发者

填写相关信息

成功后选择开通服务

找到通用翻译点击

找到免费体验通用翻译API,之后填写相关信息即可

咱们流程走完之后,看自己的appid和密钥的话如下图所示查看

翻译接口文档如下图所示

前期准备工作已经准备完毕,接下来咱们就进行代码阶段

二、用python语言进行编写

首先需要创建的文件夹以及文件如下图

其中ui里面写的主要是显示界面的内容,具体如下

import tkinter
from trans import Trans
class Ui:
    def __init__(self):
        # 创建一个窗口对象
        self.screen = tkinter.Tk()
        # 设置窗口的位置以及大小
        self.screen.geometry("400x400+550+120")
        self.screen.title("小利翻译")
        # 创建label对象
        label = tkinter.Label(self.screen, text="请输入密码")
        label.place(x=80, y=100)
        self.u = tkinter.StringVar()
        text = tkinter.Entry(self.screen, textvariable=self.u)
        text.place(x=170, y=100)
        # 其中commend的值就是函数名
        button = tkinter.Button(self.screen, text="登录", command=self.login)
        button.place(x=190, y=150)
        # 使用mainloop方法使得窗口显示
        self.screen.mainloop()
    def login(self):
        for i in range(10):
            if self.u.get() == str(i):
                self.screen.destroy()
                self.tr = Trans()
                self.tr.trans()
                break
        else:
            self.error()
        pass
    def error(self):
        screen = tkinter.Tk()
        # 设置窗口的位置以及大小
        screen.geometry("600x300+450+100")
        # 创建label对象
        label = tkinter.Label(screen, text="error")
        label.place(x=60, y=90)
        # 其中commend的值就是函数名
        screen.mainloop()

trans里面主要是翻译的逻辑,

注意这里不要直接复制粘贴,appid = 后面跟的是你自己的appid


import tkinter
from md5 import Md5
import requests


class Trans:
    def __init__(self):
        pass

    def trans(self):
        screen = tkinter.Tk()
        # 设置窗口的位置以及大小
        screen.geometry("600x500+450+100")
        screen.title("小利翻译")
        # 创建label对象
        label = tkinter.Label(screen, text="要翻译的文字")
        label.place(x=170, y=150)
        label1 = tkinter.Label(screen, text="翻译的结果为")
        label1.place(x=170, y=190)
        self.u1 = tkinter.StringVar()
        self.u2 = tkinter.StringVar()
        text = tkinter.Entry(screen, textvariable=self.u1)
        text.place(x=260, y=150)
        text1 = tkinter.Entry(screen, textvariable=self.u2)
        text1.place(x=260, y=190)
        self.r = tkinter.IntVar()
        radio = tkinter.Radiobutton(screen, text="英译汉", variable=self.r, value=1)
        radio.place(x=260, y=220)
        radio1 = tkinter.Radiobutton(screen, text="汉译英", variable=self.r, value=2)
        radio1.place(x=330, y=220)
        self.r.set(1)

        # 其中commend的值就是函数名
        button = tkinter.Button(screen, text="翻译", command=self.translate)
        button.place(x=260, y=270)
        # 使用mainloop方法使得窗口显示
        screen.mainloop()

    def translate(self):
        if self.r.get() == 1:
            self.yinghan()
        else:
            self.hanying()
        pass

    def yinghan(self):
        #不要直接复制
        appid = "你的appid"
        q = self.u1.get()
        md = Md5()
        md.q = q
        from1 = "en"
        to = "zh"
        salt = "123456"
        sign = md.encry()
        url = "http://api.fanyi.baidu.com/api/trans/vip/translate?q="+q+"&from="+from1+"&to="+to+"&appid="+appid+"&salt="+salt+"&sign="+sign
        re = requests.get(url)
        res = re.json()["trans_result"][0]["dst"]
        print(res)
        self.u2.set(res)
        pass

    def hanying(self):
        #不要直接复制
        appid = "你的appid"
        q = self.u1.get()
        md = Md5()
        md.q = q
        from1 = "zh"
        to = "en"
        salt = "123456"
        sign = md.encry()
        url = "http://api.fanyi.baidu.com/api/trans/vip/translate?q=" + q + "&from=" + from1 + "&to=" + to + "&appid=" + appid + "&salt=" + salt + "&sign=" + sign
        re = requests.get(url)
        res = re.json()["trans_result"][0]["dst"]
        print(res)
        self.u2.set(res)

MD5里面主要是加密算法,

注意这里也不要直接复制粘贴,其中 self.appid =后面跟的是你自己的appid,self.miyao =后面跟的是你的密钥

import hashlib
class Md5:
    def __init__(self):
        #不要直接复制
        self.appid = "你的appid"
        self.q = ""
        self.salt = "123456"
        #不要直接复制
        self.miyao = "你的密钥5"
    def encry(self):
        self.text = self.appid + self.q + self.salt + self.miyao
        hl = hashlib.md5()
        hl.update(self.text.encode(encoding='utf8'))
        md5 = hl.hexdigest()
        return md5

​​​​​​​

main里面只要是程序的启动

from ui import Ui

​​​​​​​if __name__ == '__main__':   
    ui = Ui()

好了,这样咱们的程序就写完了,让我们看看长什么样吧

密码是,1-9任意的数字

就是这个样子了,还不错哈



版权声明:本文为weixin_42394409原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。