Ebook Translator:用 Calibre 翻译多语言多格式的电子书

- 修复不能正确分割译文中的 ID 标记的错误;
- 修复文本流响应未完成读取的处理错误;
- 修复自动更换 API 密钥功能的错误;
- 修复开启仅保留译文后没删除原文的问题;
- 修复没有删除注音回退括号元素的错误;
- 修复部分翻译引擎破坏词汇表插入标记的问题;
- 修复无法正确过滤掉空内容的错误;
- 优化了缓存和词汇表功能。
Ebook Translator 是书伴开发的一款 Calibre 插件,可以将不同格式不同语言的电子书翻译成指定语言(原文译文对照)指定格式的电子书,支持 Google、ChatGPT 和 DeepL 翻译引擎。
在日常的生活、工作或学习中,如果在阅读或翻译外文电子书的过程中需要频繁使用翻译软件,在内容和翻译软件之间来回切换,可能会成为一件颇为痛苦的事。Ebook Translator 插件借力 Calibre 对电子书的强大处理功能和翻译引擎对多种语言的翻译支持,可以轻松将译文添加到原文段落之后,如下图那样形成双语对照,方便辅助对原文的理解或作为译制材料时的参考。
▲ Ebook Translator 插件翻译的电子书效果
借助 Calibre 对多种电子书格式的灵活支持,进行翻译时,你可以自由地选择输入输出格式,比如把 TXT 翻译成为 TXT 或 EPUB,把 PDF 翻译成 PDF 或 DOCX。
Ebook Translator 插件源代码使用 GPL v3 许可证。插件项目托管在 GitHub 上。
一、功能简介
★ Ebook Translator 插件主要包含以下功能:
- 支持“批量模式”和“高级模式”两种翻译模式,应用于不同使用场景
- 支持所选翻译引擎所支持的语言(如 Google 翻译支持 134 种)
- 支持多种翻译引擎,包括 Google 翻译、ChatGPT 以及 DeepL
- 支持自定义翻译引擎(支持解析 JSON 和 XML 格式响应)
- 支持所有 Calibre 所支持的电子书格式(输入格式 48 种,输出格式 20 种)
- 支持批量翻译电子书,每本书的翻译过程同时进行互不影响
- 支持缓存翻译内容,在请求失败或网络中断后无需重新翻译
- 提供大量自定义设置,如将翻译的电子书存到 Calibre 书库或指定位置
★ Ebook Translator 插件支持翻译的语言:
- Google 翻译支持的语言列表
- DeepL 翻译支持的语言列表
- ChatGPT 具体支持语言不详
- 有道翻译支持的语言列表
- 百度翻译支持的语言列表
★ Ebook Translator 插件支持的输入格式:
EPUB, AZW3, AZW4, MOBI, PDF, DOCX, TXT, MARKDOWN, RTF, RECIPE, HTML, HTM, XHTML, XHTM, TXTZ, CB7, ODT, RAR, FBZ, CBC, SHTM, TEXT, SHTML, POBI, UPDB, OPF, TCR, PML, PDB, CHM, SNB, LRF, LIT, RB, DOWNLOADED_RECIPE, CBR, DJV, DJVU, MD, AZW, TEXTILE, DOCM, HTMLZ, PMLZ, CBZ, ZIP, PRC, FB2
★ Ebook Translator 插件支持的输出格式:
EPUB, AZW3, MOBI, KFX, PDF, DOCX, TXT, RTF, OEB, TCR, PDB, SNB, LRF, TXTZ, LIT, RB, HTMLZ, PMLZ, ZIP, FB2
二、安装插件
首先确保你的操作系统已经安装了 Calibre,然后通过一下任意方式安装本插件:
【方法一】通过 Calibre 安装
- 打开 Calibre 并依次点击其菜单【 首选项… → 插件 → 获取新的插件 】;
- 在插件列表中选中 Ebook Translator 然后点击 【 安装 】 按钮(请留意,首次安装此插件时,要选择把图标显示在主工具栏上);
- 最后关闭并重新打开 Calibre 即可正常使用。
【方法二】通过插件文件安装
- Ebook Translator 插件下载:GitHub下载 | 百度网盘 | 本地下载 | Google Drive
NAME: Ebook-Translator-Calibre-Plugin_v2.0.1.zip
MD5: acf8761e39ec60ce910bbc547ba92e13
SHA1: bbbb9aea308e0e7f50b9a1716134a1b1e028e5da
- 首先在通过以上链接下载插件文件;
- 然后打开 Calibre 并依次点击其菜单【首选项 → 插件 → 从文件加载插件】;
- 在弹出的对话框中选择下载的扩展名为 .zip 的插件文件完成安装(请留意,首次安装此插件时,要选择把图标显示在主工具栏上);
- 最后关闭并重新打开 Calibre 即可正常使用。
如果你想安装最新的插件,可以运行以下命令从 GitHub 仓库中下载最新的插件文件:
git clone https://github.com/bookfere/Ebook-Translator-Calibre-Plugin.git
cd Ebook-Translator-Calibre-Plugin
git archive --format zip --output ../Ebook-Translator-Calibre-Plugin.zip master
如果安装插件后,插件图标未出现在 Calibre 的主工具栏上,可以依次点击 Calibre 的菜单【首选项 → 工具与菜单】,在弹出的对话框中点击下拉菜单并选择“主工具栏”,然后在左栏找到并选中插件图标,点击中间的右箭头按钮【>】将其添加到右栏,最后点击【应用】按钮即可。
三、使用方法
Ebook Translator 提供了两种翻译模式,在开启缓存状态下两者共享同一缓存数据。
高级模式
- 在 Calibre 书库中选中要推送的电子书,点击 Calibre 主工具栏上的【翻译书籍】图标按钮,或点击图标下拉菜单选择【高级模式】;
- 在弹出的提示框点击选择“高级模式”(首次打开);
- 选择“输入格式”和“输出格式”,点击【开始】进入“高级模式”翻译主界面;
- 点击【删除】按钮删除需要忽略翻译的选中段落(可选);
- 通过以下两种方式进行翻译:
- 点击【翻译所选】按钮翻译选中的段落
- 点击【翻译全部】按钮翻译全部电子书内容
- 翻译完成后,在右方“校对”区域,通过编辑下方文本并点击【保存】,可以更改翻译结果;
- 点击【输出】按钮,存储翻译完成后的电子书。输出任务将被推送添加到 Calibre 的任务队列。
批量模式
- 在 Calibre 书库中选中要推送的电子书,点击 Calibre 主工具栏上的【翻译书籍】图标按钮,或点击图标下拉菜单选择【批量模式】;
- 在弹出的提示框点击选择“批量模式”(首次打开);
- 进入插件主界面,在这里你可以修改“书名”(作为保存文件时使用的文件名),分别为每一本书选择“输入格式”、“输出格式”、“来源语言”(一般情况下“自动探测”即可满足需求)、“目标语言”(默认使用 Calibre 界面当前所用的语言);
- 点击下方的【翻译】按钮即可开始翻译。
插件会将每本电子书的翻译任务推送添加到 Calibre 的任务队列,你可以通过点击 Calibre 右下角的【任务】查看推送详情,双击任务条目可以进入日志实时查看正在翻译的内容。
三、插件设置
▲ Ebook Translator 通用设置
▲ Ebook Translator 引擎设置
▲ Ebook Translator 内容设置
有关设置内容的详细说明请查阅 Ebook Translator 项目的 Wiki 页面。
https://github.com/bookfere/Ebook-Translator-Calibre-Plugin/wiki/简体中文#设置说明
五、注意事项
开发 Ebook Translator 插件测试用的 Calibre 版本是 3.48 和最新版版本,因此理论上插件在 3.x 到 6.x 版本的 Calibre 中都能正常使用,但是如果版本低于 3.x,可能无法正常使用。
尽管 Ebook Translator 插件在发布前尽可能做了可用性测试,但是限于用来测试的电子书数量,仍无法保证在任何情况下运行结果不会出现问题。如果你在使用插件的过程中遇到了问题,欢迎留言详述问题。如果有好的建议或想要贡献代码,也欢迎访问 GitHub 上的插件项目。
六、常见问题
1、翻译文件丢失
有些用户反馈翻译完成后无法打开文件,此问题通常发生在 Windows 系统上。在 Windows 系统中,有一个功能叫做 “存储感知”,它会自动清理长时间运行程序的临时文件。你可以尝试关掉此功能,或通过 Calibre 的环境变量 CALIBRE_TEMP_DIR
为其重新指定一个文件夹。(credit)
2、翻译速度太慢
插件自 1.3.7 版本开始支持并发请求,你可以衡量自己的需要和翻译引擎的限制在设置中设定并发请求数量。此功能仅支持 Calibre 5.0 或更高版本,如果低于 5.0 需要升级 Calibre 版本。
3、合并翻译效果
在使用 ChatGPT 时合并翻译功能表现较差,这是因为插件会在合并后的文本中添加标记,由于无法保证 ChatGPT 翻译这些文本后仍会保留这些标记,因此无法保证最终的翻译效果。因此,如果要使用的 ChatGPT 翻译电子书,不建议开启合并翻译功能。
七、更新日志:
2023.06.10 / v2.0.1
- 修复不能正确分割译文中的 ID 标记的错误;
- 修复文本流响应未完成读取的处理错误;
- 修复自动更换 API 密钥功能的错误;
- 修复开启仅保留译文后没删除原文的问题;
- 修复没有删除注音回退括号元素的错误;
- 修复部分翻译引擎破坏词汇表插入标记的问题;
- 修复无法正确过滤掉空内容的错误;
- 优化了缓存和词汇表功能。
2023.06.06 / v2.0.0
- 添加“高级模式”,可以更加细颗粒度控制翻译内容;
- 为 ChatGPT 添加更多选项,如端点、采样、模型;
- 为多有内置翻译引擎添加多 API 密钥的支持;
- 添加“忽略元素”功能,用来排除不需要翻译的元素;
- 增强缓存功能,包含了更多内容供用户检查;
- 添加偏好输入/输出格式和偏好来源于言选项;
- 为内置的翻译引擎添加了 Azure ChatGPT;
- 添加了“偏好模式”选项,用于点击图标按钮设置;
- 为“HTTP 请求”设置添加了“超时”选项;
- 优化了 ChatGPT 提示词,以求更精确的翻译;
- 修复没能正确过滤段落的错误;
- 优化用户体验、增强功能以及其它错误修复。
2023.05.12 / v1.3.8
- 修复无法保存“忽略段落”规则的错误;
- 修复导致某些段落被忽略翻译的错误;
- 修复某些内容导致插件中断工作的错误。
2023.05.11 / v1.3.7
- 支持并发请求(仅 Calibre 5.0 及更高版本可用);
- 为“忽略段落”功能添加过滤范围选项;
- 支持在翻译过程中忽略 pre/code 元素。
2023.05.08 / v1.3.6
- 删除旧的元素抽取方式以避免遗漏翻译;
- 限制文件名为 200 个字符以避免保存时出错;
- 修复插件从低版本升级到低版本时的错误;
- 使插件兼容低版本的 Calibre。
2023.05.06 / v1.3.5
- 自定义翻译引擎已支持“合并翻译”;
- 为 ChatGPT 和自定义翻译引擎优化“合并翻译”功能;
- 为如抽取元素等关键功能添加测试用例。
2023.05.05 / v1.3.4
- 修复了开启“合并翻译”后 ChatGPT 无法保留标记的错误。
2023.05.04 / v1.3.3
- 添加新翻译引擎:Google (Basic)、Google (Advanced);
- 将 Google (Free) 的请求方法改为 GET 以避免“Too Many Requests”错误;
- 在日志中添加重试请求时的时间戳。
2023.05.01 / v1.3.2
- 修复影响插件可用性与处理图片相关的错误;
- 修复导致翻译引擎设置显示错误名称的错误;
- 修复无法为代理主机输入 URI 协议的错误。
2023.04.29 / v1.3.1
- 移除了对百度翻译密钥的输入限制。
2023.04.28 / v1.3.0
- 添加了“合并翻译(测试版)”功能;
- 支持为目标语言设置偏好语言;
- 支持自定词汇表以确保翻译更加精准;
- 添加免费版本的 DeepL 翻译引擎;
- 为 ChatGPT 添加服务器发送事件(SSE)支持。
2023.04.19 / v1.2.2
- 优化自定义翻译引擎功能。
2023.04.18 / v1.2.1
- 修复导致 DeepL 无法正常运行的错误。
2023.04.17 / v1.2.0
- 添加了自定义翻译引擎功能
- 添加了翻译引擎测试功能
- 添加了显示某些翻译引擎使用余量功能
2023.04.08 / v1.1.0
- 可通过“内容”面板调整译文位置
- 添加过关键字或正则表达式排除不需翻译内容
- 添加百度和有道两款翻译引擎
- 将已翻译电子书作为新项目加入书库
- 添加为更改译文文本颜色的功能
- 添加自定义ChatGPT提示词功能
- 忽略对注音(如日语注音)的翻译
- 界面语言添加西班牙语
- 为日志添加有助于排插错误的诊断信息
- 为译文元素标签添加对应的lang属性
- 修复切换Calibre界面语言插件图标消失的错误
- 改进原文的提取功能
2023.03.29 / v1.0.2
- 修复了 MOBI 转 MOBI 时翻译内容丢失的问题
- 优化请求失败后重试时的时间间隔
- 输出文件扩展名改为小写字母
2023.03.29 / v1.0.1
- 修复点击完成提示框上的打开按钮出错的问题
2023.03.28 / v1.0.0
- 首次发布
© 「书伴」原创文章,转载请注明出处及原文链接:https://bookfere.com/post/1057.html
延伸阅读
- Ebook Translator:用 Calibre 翻译多语言多格式的电子书
- 微软已解决 Kindle 连接电脑出现的蓝屏问题
- 如何用 Calibre 和 Count Pages 插件统计电子书的字数和页数
- 亚马逊 Kindle 系列产品硬件技术参数大全
- [每周一书]《出梁庄记》寄居城市的异乡人
- [每周一书]《学会提问》激发你的批判性思维
- 如何给自制 Kindle 电子书添加弹出脚注或尾注
- Fix Kindle Ebook Cover:电子书封面缩略图修复工具
- [2022.02.10] Kindle 阅读器固件升级至 5.14.2
- [2018.04.13] Kindle 阅读器固件升级至 5.9.5
- [2021.10.08] Kindle 阅读器固件升级至 5.14.1
- Calibre 使用教程之为电子书添加更换字体
- [每周一书]《可能性的艺术》一个普通人与政治的关系
- [2022.09.28] Kindle 阅读器固件升级至 5.15.1
- 如何恢复从 Pirate Library Mirror 的 Z-Library 馆藏项目下载的电子书文件名
- [三星特惠] 2017.04 三星版 Kindle 特享优惠推荐
v2.0.1
不理解,为什么它只是解释内容而不是翻译内容,我用的是默认的prompt
原文:Head position
译文:The position of the head refers to the orientation of the head in space relative to the rest of the body. The head can be in various positions depending on what the individual is doing or what their body needs. Common head positions include upright, tilted, rotated, flexed (chin towards chest), extended (chin lifted up), and turned (looking over the shoulder). Correct head posture is important for maintaining spinal alignment and reducing strain on the neck and back. A neutral head position is typically recommended, with the ears aligned over the shoulders and the chin level with the ground.
完成翻译导出文件时报错:
calibre, version 6.20.0
错误: 未处理的异常: KeyError:<calibre.utils.ipc.job.ParallelJob object at 0x000002AFA9A1A980>
calibre 6.20 embedded-python: True
Windows-10-10.0.19041-SP0 Windows (’64bit’, ‘WindowsPE’)
(‘Windows’, ’10’, ‘10.0.19041’)
Python 3.10.1
Windows: (’10’, ‘10.0.19041’, ‘SP0’, ‘Multiprocessor Free’)
Interface language: zh_CN
Successfully initialized third party plugins: Ebook Translator (2, 0, 1) && Mass Search-Replace (1, 7, 3)
Traceback (most recent call last):
File “calibre\gui2\__init__.py”, line 721, in dispatch
File “calibre_plugins.ebook_translator.components.worker”, line 55, in translate_done
KeyError:
自定义翻译引擎能不能支持将多段原文作为一个数组请求,而返回的译文也是一个数组这种情况呢?火山翻译的API就是这样。或者为合并翻译功能添加一个子选项,如果API原生就支持一次翻译多段文字,就按这种方式构造请求?
在使用高级模式时,我有一个很有意思的想法:
选择合并需要的段落来进行合并翻译,这样得到的翻译质量会更高.特别是DeepL,但是却不知道能不能保证格式段落和图片位置的正确.
嗨您好,我点击translate然后显示翻译失败,原因是fail to retrieve data from translate engine API, 请问这个该怎么办呢?
尝试次数用尽后,最后应该会出现详细的错误信息,我需要通过那个信息判断问题所在。
是这个莫?
calibre, version 5.44.0 (darwin, embedded-python: True)
Translation Failed: 失敗: Failed to retreive data from translate engine API. Can not parse returned response. Raw data:
Traceback (most recent call last):
File “mechanize/_urllib2_fork.py”, line 1236, in do_open
File “http/client.py”, line 1255, in request
File “http/client.py”, line 1301, in _send_request
File “http/client.py”, line 1250, in endheaders
File “http/client.py”, line 1010, in _send_output
File “http/client.py”, line 950, in send
File “http/client.py”, line 1417, in connect
File “http/client.py”, line 921, in connect
File “socket.py”, line 808, in create_connection
File “socket.py”, line 796, in create_connection
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “calibre_plugins.ebook_translator.engines.base”, line 143, in get_result
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 “calibre_plugins.ebook_translator.translation”, line 73, in _translate_text
return self.translator.translate(text)
File “calibre_plugins.ebook_translator.engines.google”, line 45, in translate
return self.get_result(self.endpoint, data, headers)
File “calibre_plugins.ebook_translator.engines.base”, line 155, in get_result
raise Exception(
Exception: Can not parse returned response. Raw data:
从错误信息看是你的网络无法正常访问翻译引擎,可能需要在设置中填写并开启网络代理?
为什么翻译两句就显示没有可用的api密钥
这是自动更换 API 密钥功能导致的问题,我会尽快发一个版本修正这个错误。
要注册才能拿自己的API啊
用的就是自己的api
请问在使用chatgpt翻译的时候,经常翻译几段就弹出来“没有可用的api秘钥”,如何解决?
这是自动更换 API 密钥功能导致的问题,我会尽快发一个版本修正这个错误。
更新完之后,速度慢了,比1.3.8慢三倍.经过测试,三千个段落的书籍,原来一小时就可以完成,现在要三小时往上.
还是回滚老版本了
这是因为在之前的版本中,设置中的请求间隔没对 ChatGPT 生效。想要和之前的一样,可以前往插件的【设置 → 通用 → HTTP 请求】设置项,把“最大间隔”设为 0。
我用的DeepL (Free)
之前的表达有误。设置中的请求间隔是通用项,会应用于所有翻译引擎。
谢谢回复,翻译速度和旧版本一样了,只是开始翻译段落的”前摇”时间过长了,lol.
“前摇时间”具体是指什么?
虽然不影响翻译质量但是”前摇时间”指的是:
在日志里面显示-插件在转换为html后,翻译工作在大概一分钟后才开始翻译段落.我称之为”前摇时间”对比1.3.8,确实慢不少,一开始以为是缓存的原因,清除缓存后还是一样
v2.0.0 版本的chatgpt翻译不好用,翻译完一句话后总是会带上(Translated from {slang} to {tlang})
请问可以增加支持azure openai api么?
插件的 v2.0.0 版本添加了对 Azure ChatGPT 的支持,请试用。
请问,如果用chatGPT合并翻译之前,先在提示词里告诉它不要吞掉分隔符({{id_11}}这类符号),它是否就能完美排版了呢?您能教我“ 不能删掉分隔符”具体要怎么表达才能让ChatGPT听懂?
有一点奇怪的是,我用ChatGPT中译日时,合并翻译设定500字、来源语言自动检测、输出语言日语,翻译完的排班完全不会出错(我让它翻译了五百多条了,排版没乱)。而一旦来源语言设置简体中文,排版就会成为一坨一坨的。同样,以此类推,我发现只要来源或输出语言选择了简体中文或英语,排版都会乱(我只会中英日三门语言,所以只试了三种)。由此可见,排版和提示词不无关系吧。
插件的 v2.0.0 版本优化了 ChatGPT 的提示词,请下载试用。
另外,新版本插件还新增 ChatGPT 的 temperature 设置,OpenAI 默认是 1,你可以尝试调低这个数值以防止它吃掉 ID,我测试的时候发现改成 0.5 效果不错。
Calibre检测不到v2.0.0,显示最新版本就是1.3.8。我的Calibre版本6.14.0
新版本发布后通常留一天的时间让用户测试,没有严重问题才会添加 Calibre 插件列表中,因此之前你没能通过 Calibre 的插件管理功能升级。刚刚插件已经上传到了 Calibre 的插件列表中,等一个小时左右应该就可以升级到最新版本了。
DeepL(Free)失效了,这两天都是“无法从翻译引擎API获取数据。”
并没有,我挂了梯子,你应该是被限制了,单IP每天有上限的
开了代理,还是不行。之前我用DeepL(Free)翻译的字符并不多,只英译中了一篇短篇小说,这也会被限制吗?
我倒是可以,已经翻了接近两百本书了,虽然经常会断,换个节点又能继续用了
破案了,只要把目标语言设置成英语(英式)或英语(美式)就不行。如果要翻译成英语的话,目标语言直接选英语就可以了