【问题标题】:Why the following use of Google translator python API does not work?为什么以下使用谷歌翻译器python API 不起作用?
【发布时间】:2021-05-14 21:34:20
【问题描述】:
from googletrans import Translator

foreign_word = "Montag"
t = Translator()
translated_word = t.translate(foreign_word, src='de', dest='en').text
print(translated_word) # Expecting "Monday", but prints "Montag"

对于不同的德语单词,我多次调用上面截取的代码。一开始,翻译器正在工作,但现在每当我尝试执行上面的代码时,translated_word 总是与foreign_word 相同(逐个字符)。

问题:我是在错误地使用 API,还是您每天/每小时可以翻译有限次数?

命令行版本似乎也不起作用:

translate "Montag" -s de -d en
[en] Montag
    ->
[en] Montag
[pron.] Montag

我正在使用 Python 3.8.5

【问题讨论】:

  • 文档 (py-googletrans.readthedocs.io/en/latest/…) 说参数是 dest 而不是 dst
  • @SvenEberth 感谢您的关注,我已将其更新为 dest,但问题仍然存在。
  • 我现在可以观察到相同的行为。第一个翻译工作得很好。现在我收到了源词。似乎是谷歌的一种速率限制——显然他们希望你为翻译 API 付费:/ 已经有一个相关问题:github.com/ssut/py-googletrans/issues/290
  • 我认为这个模块不使用官方 API 而是使用非官方 url 来获取翻译 - 谷歌可能会阻止它。在源代码中,我找到了https://translate.google.com/translate_a/single,但它看起来不像官方 API 的 url。官方API可能需要自己的client_IDclient_secret,需要在谷歌注册自己的应用程序。
  • @furas 你完全正确。我想我表达得有些不清楚。他们使用 Ajax API(由翻译网站 translate.google.com 本身使用)。但是谷歌不希望你自己使用这个 API,所以他们限制了请求。所以不幸的是,你必须使用官方的许多请求(你必须付费)。

标签: python python-3.x google-translate


【解决方案1】:

相关 API 可能已过时,以下 API 对我有用:

from google_trans_new import google_translator

translator = google_translator()
word = "Montag"
translation = translator.translate(word, lang_tgt='en')
print(translation) # prints Monday

如果您过于频繁地调用translator.translate,则会收到错误HTTPError: 429 Client Error: Too Many Requests for url,因此您可能需要将您的请求批处理到not_too_large_list 并调用translator.translate(not_too_large_list, lang_tgt='en')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多