哈喽,大家好,今天给大家带来一款升级版的、在线多语种翻译工具。
工具基于Python及Streamlit制作完成。
目标
输入中文得到对应英文翻译,
输入英文得到对应中文翻译,
输入韩语、日语、俄语、法语、葡萄牙语、西班牙语得到对应的中文翻译结果
实现效果
(1)中文到英文翻译效果
(2)英文到中文翻译效果
(3)韩语到中文翻译效果
(4)日语到中文翻译效果
(5)俄语到中文翻译效果
(6)法语到中文翻译效果
(7)葡萄牙语到中文翻译效果
(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;}
&#39;&#39;&#39;
st.markdown(sysmenu,unsafe_allow_html=True)
def translate(text, target_language, key):
url = &#39;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&#39;
headers = {
&#39;origin&#39;: &#39;https://translate.google.cn&#39;,
&#39;referer&#39;: &#39;https://translate.google.cn/&#39;,
&#39;sec-fetch-dest&#39;: &#39;empty&#39;,
&#39;sec-fetch-mode&#39;: &#39;cors&#39;,
&#39;sec-fetch-site&#39;: &#39;same-origin&#39;,
&#39;user-agent&#39;: &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36&#39;,
&#39;x-client-data&#39;: &#39;CIW2yQEIpbbJAQjEtskBCKmdygEIrMfKAQj2x8oBCPfHygEItMvKAQihz8oBCNzVygEIi5nLAQjBnMsB&#39;,
&#39;Decoded&#39;:&#39;message ClientVariations {repeated int32 variation_id = [3300101, 3300133, 3300164, 3313321, 3318700, 3318774, 3318775, 3319220, 3319713, 3320540, 3329163, 3329601];}&#39;,
&#39;x-same-domain&#39;: &#39;1&#39;
}
data = {&#39;f.req&#39;: f&#39;[[[&#34;MkEWBc&#34;,&#34;[[\\&#34;{text}\\&#34;,\\&#34;auto\\&#34;,\\&#34;{target_language}\\&#34;,true],[null]]&#34;,null,&#34;generic&#34;]]]&#39;}
res = requests.post(url, headers=headers, data=data).text
temp = re.findall(r&#39;\\(.*?)\\&#39;, res)
#st.write(temp)
yiwen=str(temp[key]).replace(&#39;&#34;&#39;,&#39;&#39;)
return st.success(yiwen)
st.header(&#34;多语种翻译工具&#34;)
st.info(&#34;说明:输入中文得英文,输入英文得中文,输入韩语、日语、俄语、法语、葡萄牙语、西班牙语将得到中文&#34;)
text = st.text_input(&#34;请输入你要翻译的内容,可输入中文或英文&#34;)
if len(text)>0:
#st.write(langid.classify(text)[0])
if langid.classify(text)[0] == &#34;en&#34;:#英语
translate(text,&#34;zh&#34;,3)
elif langid.classify(text)[0] == &#34;zh&#34;:#中文
translate(text,&#34;en&#34;,3)
elif langid.classify(text)[0] == &#34;ko&#34;:#韩语
translate(text,&#34;zh&#34;,4)
elif langid.classify(text)[0] == &#34;ja&#34;:#日语
translate(text,&#34;zh&#34;,5)
elif langid.classify(text)[0] == &#34;ru&#34;:#俄语
translate(text,&#34;zh&#34;,4)
elif langid.classify(text)[0] == &#34;fr&#34;:#法语
translate(text,&#34;zh&#34;,4)
elif langid.classify(text)[0] == &#34;ku&#34;:#葡萄牙语
translate(text,&#34;zh&#34;,4)
elif langid.classify(text)[0] == &#34;pt&#34;:#西班牙语
translate(text,&#34;zh&#34;,4)
原理解释
整篇文章采用了谷歌的翻译工具API接口,然后使用requests模块对传入的内容进行了翻译,返回数据时我们使用了正则表达式提取需要的内容,最后将得到的翻译内容返回并打印在屏幕上。
在识别用户输入的语言类型时,我们使用了langid模块来进行识别
这个模块的安装方法如下:
pip install langid其中各种语言的缩写名称分别为:
中文:zh,英语:en,韩语:ko,日语:ja,俄语:ru,法语:fr,葡萄牙语:ku,西班牙语:pt
程序中的设置为:
检测到用户输入中文时,默认翻译为英文;
检测到用户输入英文时,默认翻译为中文;
输入韩语、日语、俄语、法语、西班牙语、葡萄牙语时默认翻译为中文
Streamlit交流群
如果你正在寻找一个专业而友好的Python编程讨论群,
请快来公众号找坐着吧,热情而专业的朋友们正在等你加入哦!
如果你觉得公众号还不错,请分享给身边的朋友哦!
上一篇:高净值人群名利双收的“秘密武器” 下一篇:21深度|马克龙雄心勃勃,法国接棒欧盟轮值主席国能否“大展拳脚”? |