前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用python做一个翻译工具

使用python做一个翻译工具

作者头像
找Bug
发布2022-07-22 15:40:41
5830
发布2022-07-22 15:40:41
举报
文章被收录于专栏:你的Bug我做主你的Bug我做主

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

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

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

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

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

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

填写相关信息

成功后选择开通服务

找到通用翻译点击

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

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

翻译接口文档如下图所示

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

二、用python语言进行编写

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

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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 =后面跟的是你的密钥

代码语言:javascript
复制
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里面只要是程序的启动

代码语言:javascript
复制
from ui import Ui
if __name__ == '__main__':
    ui = Ui()

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 找Bug 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档