Googletrans Error - 握手操作超时
Googletrans Error- The handshake operation timed out
当我尝试使用 googletrans 模块翻译文本时,出现错误:
httpcore._exceptions.ConnectTimeout: _ssl.c:1106: The handshake operation timed out
这是我的代码:
from tkinter import *
from googletrans import Translator , LANGUAGES
root = Tk()
root.geometry("500x500")
def translate():
translator = Translator()
translated_text = translator.translate(text=entry.get(),
dest=languages_listbox.get(languages_listbox.curselection())) # Text does not get get translated and it throws an error
output_label.config(text = f"Translated Text: {translated_text}")
entry = Entry(root , font = "consolas 14")
entry.place(x = 120 , y = 0)
entry.insert(0 , "Hello world")
languages_list = []
for key, value in LANGUAGES.items():
languages_list.append(value)
languages_listbox_frame = Frame(root)
languages_listbox_frame.place(x = 120 , y = 50)
languages_listbox = Listbox(languages_listbox_frame , font = "calibri 14")
languages_listbox.grid(row = 0 , column = 0)
scrollbar = Scrollbar(languages_listbox_frame , orient = VERTICAL , command = languages_listbox.yview)
scrollbar.grid(row = 0 , column = 1 , sticky = N+S+E+W)
languages_listbox.config(yscrollcommand = scrollbar.set)
for language in languages_list:
languages_listbox.insert(END , language)
languages_listbox.select_set(0)
translate_button = Button(root , text = "Translate" , font = "comicsansms 18 bold" , command = translate)
translate_button.place(x = 160 , y = 370)
output_label = Label(root , text = "Translated Text: " , font = "comicsansms 16 bold")
output_label.place(x = 5 , y = 460)
mainloop()
我的代码很简单,我不知道它有什么问题。
我试过更改网络连接,但没有任何区别。
有什么办法可以解决这个问题吗?
如果有人能帮助我就太好了。
好吧,这看起来很像 API 错误,因为 google 不喜欢你发送太多请求,我也无法关闭这个问题,因为答案 there 不是一个被接受的,无论如何这是使用 deep_translator
.
的替代方法
- 从安装开始:
pip install deep-translator
- 现在我建议您沿着它的 docs 走一走,但无论如何我都会包括一个使用 Google 翻译的例子。从导入开始:
from deep_translator import GoogleTranslator
- 现在创建它的初始实例,只是为了获取语言映射。
translator = GoogleTranslator(target='en')
languages_list = []
lang_map = translator.get_supported_languages(as_dict=True) # Get in form of dict
for key, value in lang_map.items():
languages_list.append(key.title()) # Making first letter capital with title()
- 现在对于翻译部分,将您的函数更改为以下内容:
def translate():
lang = lang_map[languages_listbox.get(languages_listbox.curselection()[0]).lower()] # Get the corresponding language code from the dictionary
translator = GoogleTranslator(source='en',target=lang) # Create new instance with selected language
translated_text = translator.translate(entry.get()) # Translate
output_label.config(text = f"Translated Text: {translated_text}") # Update the text
是的,每次函数 运行 时都创建一个新实例不是一个好主意,但我找不到另一种成功的方法来更改最初设置的目标语言。到目前为止,它似乎没有给出任何错误,除非你的 source
和 target
语言都相同。
附带说明一下,最好使用 threading
,因为有时 API 可能需要时间来响应并且它会冻结 GUI。
当我尝试使用 googletrans 模块翻译文本时,出现错误:
httpcore._exceptions.ConnectTimeout: _ssl.c:1106: The handshake operation timed out
这是我的代码:
from tkinter import *
from googletrans import Translator , LANGUAGES
root = Tk()
root.geometry("500x500")
def translate():
translator = Translator()
translated_text = translator.translate(text=entry.get(),
dest=languages_listbox.get(languages_listbox.curselection())) # Text does not get get translated and it throws an error
output_label.config(text = f"Translated Text: {translated_text}")
entry = Entry(root , font = "consolas 14")
entry.place(x = 120 , y = 0)
entry.insert(0 , "Hello world")
languages_list = []
for key, value in LANGUAGES.items():
languages_list.append(value)
languages_listbox_frame = Frame(root)
languages_listbox_frame.place(x = 120 , y = 50)
languages_listbox = Listbox(languages_listbox_frame , font = "calibri 14")
languages_listbox.grid(row = 0 , column = 0)
scrollbar = Scrollbar(languages_listbox_frame , orient = VERTICAL , command = languages_listbox.yview)
scrollbar.grid(row = 0 , column = 1 , sticky = N+S+E+W)
languages_listbox.config(yscrollcommand = scrollbar.set)
for language in languages_list:
languages_listbox.insert(END , language)
languages_listbox.select_set(0)
translate_button = Button(root , text = "Translate" , font = "comicsansms 18 bold" , command = translate)
translate_button.place(x = 160 , y = 370)
output_label = Label(root , text = "Translated Text: " , font = "comicsansms 16 bold")
output_label.place(x = 5 , y = 460)
mainloop()
我的代码很简单,我不知道它有什么问题。
我试过更改网络连接,但没有任何区别。
有什么办法可以解决这个问题吗?
如果有人能帮助我就太好了。
好吧,这看起来很像 API 错误,因为 google 不喜欢你发送太多请求,我也无法关闭这个问题,因为答案 there 不是一个被接受的,无论如何这是使用 deep_translator
.
- 从安装开始:
pip install deep-translator
- 现在我建议您沿着它的 docs 走一走,但无论如何我都会包括一个使用 Google 翻译的例子。从导入开始:
from deep_translator import GoogleTranslator
- 现在创建它的初始实例,只是为了获取语言映射。
translator = GoogleTranslator(target='en')
languages_list = []
lang_map = translator.get_supported_languages(as_dict=True) # Get in form of dict
for key, value in lang_map.items():
languages_list.append(key.title()) # Making first letter capital with title()
- 现在对于翻译部分,将您的函数更改为以下内容:
def translate():
lang = lang_map[languages_listbox.get(languages_listbox.curselection()[0]).lower()] # Get the corresponding language code from the dictionary
translator = GoogleTranslator(source='en',target=lang) # Create new instance with selected language
translated_text = translator.translate(entry.get()) # Translate
output_label.config(text = f"Translated Text: {translated_text}") # Update the text
是的,每次函数 运行 时都创建一个新实例不是一个好主意,但我找不到另一种成功的方法来更改最初设置的目标语言。到目前为止,它似乎没有给出任何错误,除非你的 source
和 target
语言都相同。
附带说明一下,最好使用 threading
,因为有时 API 可能需要时间来响应并且它会冻结 GUI。