Ebook Translator:用 Calibre 翻译多格式双语对照电子书

延伸阅读

给这篇文章写一条留言

提示:带 * 标记的是必填项。您填写的邮箱地址将会被保密。首次留言将会在通过人工审核后显示。如果是提出问题,请务必提供尽可能多信息,这有助于他人更好地理解你所提出的问题。

小伙伴们写下了 290 条留言

  1. 不好意思,问一个不相关的。实在是遇到一个kindle使用上令我十分困惑的问题,全网都没找到有效的解决方案。我在Z-Library下载了一本中文电子书(mobi格式),直接用usb数据线传到kindle paperwhite 5(KP5) 的document目录下,这时候能显示但是发现不能调用我自导的字体,用kindle unpack 看了下是资源发现其是mobi 7。遂用calibre转换成mobi (both)格式未作任何其他更改,再次传到KP5上,始终无法在kindle上看到这本书。我又试着转换成azw3,依旧在kindle设备上不显示,我重启了设备甚至恢复了出场设置,依旧无功而返。

    请问你们有收到类似的反馈或情况吗?

    非常期盼也感谢任何回复及帮助。

    • 层主习惯通过 Calibre 的“保存到磁盘”功能将转换后的电子书保存到 Kindle 中,而电子书名的长度超过了 Kindle 系统的文件名长度限制(255 个字节),解决方法为通过 Calibre 列表的书名列修改书名(或通过元数据修改功能修改书名),缩短其长度后再通过保存磁盘功能将电子书保存到 Kindle 中阅读。

      另,如果想要提出的问题没有相关的页面可供留言,可前往书伴的“许愿”页面提问。

  2. 能開發一個功能嗎?
    因為拿來翻輕小說,人名這種可以指定讓GPT固定名稱這樣。
    讓我可以設定一個人名、或地名之類的特定名稱的資料庫,只要GPT碰到這個人名、地名或物品,就固定翻成一樣的名字這樣。

      • 謝謝回覆,也非常感謝你們有開發這樣好的工具,真的很實用。

      • 順便分享一下我現在使用的方式。
        目前GPT有一個很大的問題,人名之類的翻譯不會固定住,例如︰傑特、杰特、結特,你會在整篇文章都會看到人名或者是一些特定名詞出現這種情況,那就反其道而行,我先把特定名詞在翻譯前先固定住。

        也就是,calibre在EPUB的編輯模式下,上面有搜尋→已儲存的搜尋,左下角會出現可以建立搜尋與取代的資料庫,按加入搜尋,名稱隨便打,你可以打主角,搜尋打日文的ジーター,取代打傑特,然後按下面的完成,然後按全部取代,它就會把所有的ジーター改成傑特,你資料庫建立的越完整(人名啊、地名啊、什麼怪東西啊),這些特定名詞就會固定住,就算你一次100篇合成一本,它也會全部弄好,為了之後慢慢加東西,下面有匯出,把專屬這個小說的資料庫儲存起來。

        這樣多多少少會提升一點文章的可讀性,目前我是這樣土砲解決問題的。

  3. 我可以确定不是路径的问题,有一本翻译成功了,确实你所说的,有一个original的文件,但有些文件显示翻译成功了,却保存在一个临时路径中,可以打开,但无论如何这个文件却找不到,也没按照当初的指定路径进行存放。

    • 电子书翻译完成后进行转换时会先存放到临时目录,再根据设置的输出路径拷贝到相应位置(如果选的是书库,就会添加到原电子书所在位置,如果是指定其他路径,就会存放到那个路径),拷贝完成后临时路径中的文件会被清理,因此在日志中显示的路径中是无法找到文件的。

      旧版本插件会删除转换后的临时文件,新的版本去掉了这个步骤,把清理临时文件的工作交给了 Calibre,按理说应该不会再出现这个问题了,你可以再测试一下。

  4. 软件为6.14版本,插件版本为最新1.02。输入epub,输出mobi和awz3都分别试过,翻译完成之后,只弹出是否阅读通知,保存目录和缓存目录均找不到MOBI和awz3格式的文件。
    新版本什么时候发布?

  5. 一般需要多久呢,看起来进度非常长,唯一快速好的发现只翻译了标题

    • 翻译速度和网络响应速度和设置的请求时间间隔有关。以免费的 Google 翻译为例,在正常的网络环境下,按默认设置的每个请求间隔 0~5 秒钟来算,翻译 600 段按理说不超过 50 分钟。免费的 Google 翻译 API 对请求频率有限制,有时不得不加长请求间隔,导致耗时进一步增加。

      只翻译标题的问题,在新版本中已得到解决,近两天会将会发布,敬请关注。

  6. 我用的是Calibre的最新版本,翻译插件用的是1.0.2.输入格式用EPUB翻译后用EPUB、MOBI都试过,翻译完甚至可以打开,但就是找不到文件,看日志有个缓存地址,但里面的文件没有。

    • 如果你没有在设置中指定路径,那么默认会存放到 Calibre 书库中,目前的版本是翻译完成放在原格式所在位置。这种方式存在问题,那就是当你用 EPUB 翻译成 EPUB 格式,原格式则会被备份成 ORIGINAL_EPUB。有好几个用户反馈了这个问题,近两天会将要发布的新版对此做了修正,会将翻译好书作为新的一本书添加到 Calibre 书库中。

  7. 反应几个问题
    1.翻译完成后,原本设置保存文件的位置并没有找到已翻译的文件,会丢失。比如保存位置为桌面,实际桌面只有一个0字节的同名文件。
    2.希望翻译完成之后,能够翻译内容单独输出,删除原文件内容,而不是用英文中文夹杂在一起。
    以上两点。谢谢。

    • 关于第一个问题,你用的是哪个版本,输入格式和输出格式分别是什么?关于第二个问题,新版本会增加偏好设置,可设置成仅保留译文。

      • 我也碰到同样问题,翻译完成后,所设置保存的文件夹里空空如也,怎么也找不到翻译好书。

  8. 請問情況這個是google 翻譯請求過多的原因嗎?

    Traceback (most recent call last):
    File “runpy.py”, line 196, in _run_module_as_main
    File “runpy.py”, line 86, in _run_code
    File “site.py”, line 47, in
    File “site.py”, line 43, in main
    File “calibre/utils/ipc/worker.py”, line 215, in main
    File “calibre/utils/ipc/worker.py”, line 150, in arbitrary_n
    File “calibre_plugins.ebook_translator.convertion”, line 70, in convert_book
    plumber.run()
    File “calibre/ebooks/conversion/plumber.py”, line 1281, in run
    File “calibre_plugins.ebook_translator.convertion”, line 65, in convert
    translation.handle(elements)
    File “calibre_plugins.ebook_translator.translation”, line 126, in handle
    self._handle(element)
    File “calibre_plugins.ebook_translator.translation”, line 90, in _handle
    translation = self._translate(original)
    File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
    return self._translate(text, count, interval)
    File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
    return self._translate(text, count, interval)
    File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
    return self._translate(text, count, interval)
    File “calibre_plugins.ebook_translator.translation”, line 54, in _translate
    raise Exception(‘{} {}’.format(message, str(e)))
    Exception: 无法从翻译引擎API获取数据。 HTTP Error 400: Bad Request

  9. 试用了下效果还不错,希望后续版本中插件可以通过命令行模式下的calibre-debug来调用。

  10. 尝试了几次,从google翻译更换到ChatGPT翻译,还是一直报错。

    [自动探测 > Chinese (Simplified)] 翻译 “2303.17564v1”
    qt.webenginecontext:

    GL Type: disabled
    Surface Type: DefaultRenderableType
    Surface Profile: CoreProfile
    Surface Version: 4.1
    QSG RHI Backend: OpenGL
    Using Supported QSG Backend: yes
    Using Software Dynamic GL: no
    Using Multithreaded OpenGL: yes

    Init Parameters:
    * application-name calibre
    * browser-subprocess-path /Applications/calibre.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess
    * disable-features ConsolidatedMovementXY,InstalledApp,BackgroundFetch,WebOTP,WebPayments,WebUSB,PictureInPicture
    * disable-gpu
    * disable-speech-api
    * enable-features NetworkServiceInProcess,TracingServiceInProcess
    * enable-threaded-compositing
    * in-process-gpu
    * use-gl disabled

    InputFormatPlugin: PDF Input running
    on /Users/yuandan/Calibre Library/Wei Zhi/2303.17564v1 (3)/2303.17564v1 – Wei Zhi.pdf
    pdftohtml log:
    link to page 1

    link to page 42 Page-65
    Parsing all content…
    Merging user specified metadata…
    Detecting structure…
    Flattening CSS and remapping font sizes…
    Source base font size is 12.00000pt
    Removing fake margins…
    Cleaning up manifest…
    Trimming unused files from manifest…
    Creating PDF Output…
    translating ebook content … (this will take a while)
    ==============================
    开始翻译电子书内容:
    ==============================
    全部条目:2786
    ——————————
    原文:BloombergGPT: A Large Language Model for Finance
    无法从翻译引擎API获取数据。
    5 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    10 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    15 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    20 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    25 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    30 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    35 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    40 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    45 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    50 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    55 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    60 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    65 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    70 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    75 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    80 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    85 秒后重试。
    正在重试 …(300.0秒后超时)
    无法从翻译引擎API获取数据。
    90 秒后重试。
    正在重试 …(300.0秒后超时)
    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “mechanize/_urllib2_fork.py”, line 1236, in do_open
    File “http/client.py”, line 1282, in request
    File “http/client.py”, line 1328, in _send_request
    File “http/client.py”, line 1277, in endheaders
    File “http/client.py”, line 1037, in _send_output
    File “http/client.py”, line 975, in send
    File “http/client.py”, line 1447, in connect
    File “http/client.py”, line 951, in connect
    File “http/client.py”, line 920, in _tunnel
    File “http/client.py”, line 287, in _read_status
    http.client.RemoteDisconnected: Remote end closed connection without response

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
    return escape(trim(self.translator.translate(text)))
    File “calibre_plugins.ebook_translator.engines.chatgpt”, line 33, in translate
    response = self.request(data, method=’POST’, headers=headers)
    File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
    response = self.br.open(request)
    File “mechanize/_mechanize.py”, line 257, in open
    File “mechanize/_mechanize.py”, line 287, in _mech_open
    File “mechanize/_opener.py”, line 193, in open
    File “mechanize/_urllib2_fork.py”, line 425, in _open
    File “mechanize/_urllib2_fork.py”, line 414, in _call_chain
    File “mechanize/_urllib2_fork.py”, line 1283, in https_open
    File “mechanize/_urllib2_fork.py”, line 1240, in do_open
    urllib.error.URLError:

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “runpy.py”, line 196, in _run_module_as_main
    File “runpy.py”, line 86, in _run_code
    File “site.py”, line 41, in
    File “site.py”, line 37, in main
    File “calibre/utils/ipc/worker.py”, line 215, in main
    File “calibre/utils/ipc/worker.py”, line 150, in arbitrary_n
    File “calibre_plugins.ebook_translator.convertion”, line 71, in convert_book
    plumber.run()
    File “calibre/ebooks/conversion/plumber.py”, line 1281, in run
    File “calibre_plugins.ebook_translator.convertion”, line 66, in convert
    translation.handle(elements)
    File “calibre_plugins.ebook_translator.translation”, line 125, in handle
    self._handle(element)
    File “calibre_plugins.ebook_translator.translation”, line 90, in _handle
    translation = self._translate(original)
    File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
    return self._translate(text, count)
    File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
    return self._translate(text, count)
    File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
    return self._translate(text, count)
    [Previous line repeated 15 more times]
    File “calibre_plugins.ebook_translator.translation”, line 54, in _translate
    raise Exception(‘{} {}’.format(message, str(e)))
    Exception: 无法从翻译引擎API获取数据。

    • 错误信息都是:Remote end closed connection without response(远端关闭连接无响应),可能网络代理有问题,更换代理试试看。

  11. 真棒,每次打开书伴都有新的惊喜,何曾想下载了N多的英语读本,配合着wordwise,仍然没有办法很好地看书,现在好了,看到这个,直接满足的需求,好吧,支持书伴!!!

  12. 我成功了。Google Translate。两次失败后之后,将重试次数增加到10次。一本172页5400行(段)的书此番用时7小时25分钟完成。感谢!

  13. calibre, version 6.14.0 (win32, embedded-python: True)
    翻译失败: 失败: [自动探测 > Chinese (Simplified)] 翻译 “ナショナリズムとジェンダー (上野千鶴子) (Z-Library)”

    [自动探测 > Chinese (Simplified)] 翻译 “ナショナリズムとジェンダー (上野千鶴子) (Z-Library)”
    InputFormatPlugin: PDF Input running
    on D:\书库\Wei Zhi\nasiyonarizumutozienda (Shang Ye Qia (2)\nasiyonarizumutozienda (Shang Y – Wei Zhi.pdf
    pdftohtml log:
    Page-1

    Page-242
    Parsing all content…
    Generating default TOC from spine…
    Merging user specified metadata…
    Detecting structure…
    Auto generated TOC with 0 entries.
    Flattening CSS and remapping font sizes…
    Source base font size is 12.00000pt
    Removing fake margins…
    Cleaning up manifest…
    Trimming unused files from manifest…
    Creating PDF Output…
    translating ebook content … (this will take a while)
    Traceback (most recent call last):
    File “runpy.py”, line 196, in _run_module_as_main
    File “runpy.py”, line 86, in _run_code
    File “site.py”, line 83, in
    File “site.py”, line 78, in main
    File “site.py”, line 50, in run_entry_point
    File “calibre\utils\ipc\worker.py”, line 215, in main
    File “calibre\utils\ipc\worker.py”, line 150, in arbitrary_n
    File “calibre_plugins.ebook_translator.convertion”, line 71, in convert_book
    File “calibre\ebooks\conversion\plumber.py”, line 1281, in run
    File “calibre_plugins.ebook_translator.convertion”, line 66, in convert
    File “calibre_plugins.ebook_translator.translation”, line 116, in handle
    Exception: 没有需要翻译的内容。

  14. 昨晚试了两本书都行,但是现在突然用不了了。要么提示“无法从翻译引擎API获取数据。”,要么翻译到一半提示无法检测文档语言。我用的是免费的google翻译。

    • 这种情况很可能是 Google 翻译拒绝服务导致的,可以重试两次,还不行的话就需要更换 IP 重试了。当然也有其它可能,可以把日志末尾提示的具体错误信息贴上来看看。无法检测语言的问题,可以给“来源语言”手动指定一下语言,看能不能解决。

      • 这是最后的日志:

        无法从翻译引擎API获取数据。
        5 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        10 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        15 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        20 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        25 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        30 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        35 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        40 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        45 秒后重试。
        正在重试 …(300.0秒后超时)
        无法从翻译引擎API获取数据。
        50 秒后重试。
        正在重试 …(300.0秒后超时)
        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “calibre_plugins.ebook_translator.translation”, line 50, in _translate
        File “calibre_plugins.ebook_translator.engines.google”, line 19, in translate
        File “calibre_plugins.ebook_translator.engines.base”, line 31, in request
        File “mechanize\_mechanize.py”, line 257, in open
        File “mechanize\_mechanize.py”, line 313, in _mech_open
        mechanize._response.get_seek_wrapper_class..httperror_seek_wrapper: HTTP Error 429: Too Many Requests

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
        File “runpy.py”, line 196, in _run_module_as_main
        File “runpy.py”, line 86, in _run_code
        File “site.py”, line 83, in
        File “site.py”, line 78, in main
        File “site.py”, line 50, in run_entry_point
        File “calibre\utils\ipc\worker.py”, line 215, in main
        File “calibre\utils\ipc\worker.py”, line 150, in arbitrary_n
        File “calibre_plugins.ebook_translator.convertion”, line 71, in convert_book
        File “calibre\ebooks\conversion\plumber.py”, line 1281, in run
        File “calibre_plugins.ebook_translator.convertion”, line 66, in convert
        File “calibre_plugins.ebook_translator.translation”, line 125, in handle
        File “calibre_plugins.ebook_translator.translation”, line 90, in _handle
        File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
        File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
        File “calibre_plugins.ebook_translator.translation”, line 62, in _translate
        [Previous line repeated 7 more times]
        File “calibre_plugins.ebook_translator.translation”, line 54, in _translate
        Exception: 无法从翻译引擎API获取数据。 HTTP Error 429: Too Many Requests