设为首页|收藏本站|
开启左侧

[问答] 基于Python的谷歌多语种在线翻译工具

[复制链接]
34206 0
漩涡am 发表于 2022-1-5 16:50:58 | 只看该作者 打印 上一主题 下一主题
 
哈喽,大家好,今天给大家带来一款升级版的、在线多语种翻译工具。
工具基于Python及Streamlit制作完成。
目标

输入中文得到对应英文翻译,
输入英文得到对应中文翻译,
输入韩语、日语、俄语、法语、葡萄牙语、西班牙语得到对应的中文翻译结果
实现效果

(1)中文到英文翻译效果


基于Python的谷歌多语种在线翻译工具 第1张图片
(2)英文到中文翻译效果


基于Python的谷歌多语种在线翻译工具 第2张图片
(3)韩语到中文翻译效果


基于Python的谷歌多语种在线翻译工具 第3张图片
(4)日语到中文翻译效果


基于Python的谷歌多语种在线翻译工具 第4张图片
(5)俄语到中文翻译效果


基于Python的谷歌多语种在线翻译工具 第5张图片
(6)法语到中文翻译效果


基于Python的谷歌多语种在线翻译工具 第6张图片
(7)葡萄牙语到中文翻译效果


基于Python的谷歌多语种在线翻译工具 第7张图片
(8)西班牙语到中文翻译效果


基于Python的谷歌多语种在线翻译工具 第8张图片
实现代码

import requests
import re
import streamlit as st
import langid

st.set_page_config(page_title="多语种翻译工具", page_icon=" ", layout="wide")

sysmenu = '''
<style>
#MAInMenu {visibility:hidden;}
footer {visibility:hidden;}
'''
st.markdown(sysmenu,unsafe_allow_html=True)

def translate(text, target_language, key):
    url = 'https://translate.google.cn/_/TranslateWebserverUi/data/batchexecute?rpcids=MkEWBc&f.sid=-2984828793698248690&bl=boq_translate-webserver_20201221.17_p0&hl=zh-CN&soc-app=1&soc-platform=1&soc-device=1&_reqid=5445720&rt=c'
    headers = {
      'origin': 'https://translate.google.cn',
      'referer': 'https://translate.google.cn/',
      'sec-fetch-dest': 'empty',
      'sec-fetch-mode': 'cors',
      'sec-fetch-site': 'same-origin',
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36',
      'x-client-data': 'CIW2yQEIpbbJAQjEtskBCKmdygEIrMfKAQj2x8oBCPfHygEItMvKAQihz8oBCNzVygEIi5nLAQjBnMsB',
      'Decoded':'message ClientVariations {repeated int32 variation_id = [3300101, 3300133, 3300164, 3313321, 3318700, 3318774, 3318775, 3319220, 3319713, 3320540, 3329163, 3329601];}',
      'x-same-domain': '1'
      }
    data = {'f.req': f'[[["MkEWBc","[[\\"{text}\\",\\"auto\\",\\"{target_language}\\",true],[null]]",null,"generic"]]]'}
    res = requests.post(url, headers=headers, data=data).text
    temp = re.findall(r'\\(.*?)\\', res)
    #st.write(temp)
    yiwen=str(temp[key]).replace('"','')
    return st.success(yiwen)


st.header("多语种翻译工具")
st.info("说明:输入中文得英文,输入英文得中文,输入韩语、日语、俄语、法语、葡萄牙语、西班牙语将得到中文")
text = st.text_input("请输入你要翻译的内容,可输入中文或英文")

if len(text)>0:
    #st.write(langid.classify(text)[0])
    if langid.classify(text)[0] == "en":#英语
        translate(text,"zh",3)
    elif langid.classify(text)[0] == "zh":#中文
        translate(text,"en",3)
    elif langid.classify(text)[0] == "ko":#韩语
        translate(text,"zh",4)
    elif langid.classify(text)[0] == "ja":#日语
        translate(text,"zh",5)
    elif langid.classify(text)[0] == "ru":#俄语
        translate(text,"zh",4)
    elif langid.classify(text)[0] == "fr":#法语
        translate(text,"zh",4)
    elif langid.classify(text)[0] == "ku":#葡萄牙语
        translate(text,"zh",4)
    elif langid.classify(text)[0] == "pt":#西班牙语
        translate(text,"zh",4)
原理解释

整篇文章采用了谷歌的翻译工具API接口,然后使用requests模块对传入的内容进行了翻译,返回数据时我们使用了正则表达式提取需要的内容,最后将得到的翻译内容返回并打印在屏幕上。
在识别用户输入的语言类型时,我们使用了langid模块来进行识别
这个模块的安装方法如下:
pip install langid其中各种语言的缩写名称分别为:
中文:zh,英语:en,韩语:ko,日语:ja,俄语:ru,法语:fr,葡萄牙语:ku,西班牙语:pt
程序中的设置为:
检测到用户输入中文时,默认翻译为英文;
检测到用户输入英文时,默认翻译为中文;
输入韩语、日语、俄语、法语、西班牙语、葡萄牙语时默认翻译为中文
Streamlit交流群

如果你正在寻找一个专业而友好的Python编程讨论群,
请快来公众号找坐着吧,热情而专业的朋友们正在等你加入哦!

                                              如果你觉得公众号还不错,请分享给身边的朋友哦!


上一篇:高净值人群名利双收的“秘密武器”
下一篇:21深度|马克龙雄心勃勃,法国接棒欧盟轮值主席国能否“大展拳脚”?
@



1.西兔生活网 CTLIVES 内容全部来自网络;
2.版权归原网站或原作者所有;
3.内容与本站立场无关;
4.若涉及侵权或有疑义,请点击“举报”按钮,其他联系方式或无法及时处理。
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
活跃网友
返回顶部快速回复上一主题下一主题返回列表APP下载手机访问
Copyright © 2016-2028 CTLIVES.COM All Rights Reserved.  西兔生活网  小黑屋| GMT+8, 2024-5-22 12:34