书译
书译

如何使用 Calibre 翻译 EPUB:插件设置、输出模式与文件检查

Calibre 通过第三方 Ebook Translator 插件翻译 EPUB。本文介绍设置方法、引擎与输出选择、v2.4.2 对标记的处理,以及如何检查结果。

BookTranslator

BookTranslator Team

19 min read

Calibre 本身不能翻译书籍。你需要借助 Ebook Translator 在 Calibre 中翻译 EPUB,这是 bookfere 开发的第三方插件,已收录在 Calibre 的插件索引中。从 首选项 → 插件 → 获取新插件 安装它,选择翻译引擎,决定只要译文还是原文对照,然后对无 DRM 的 EPUB 运行即可。你会在 Calibre 书库中得到一个新的 EPUB。

设置只是最简单的一步。大多数指南忽略的是插件在翻译过程中对书做了什么。我们阅读了当前版本(v2.4.2)的源代码来找出答案,有三个默认设置比你选择哪个引擎更重要:

  1. 默认输出是双语的。 除非你更改位置设置,否则每个翻译后的段落会放在原文_下方_。
  2. 译文中的行内格式会被扁平化。 段落内的斜体、粗体和链接不会带入译文。只有固定的标签列表(如图片、换行和上标)会被保护并还原。
  3. 每次运行都是一次 Calibre 转换。 即使是 EPUB 转 EPUB,插件也会把书交给 Calibre 的转换流程,由它重建输出文件。

这些都不意味着这个插件不好。它免费、开源(GPL-3.0),而且非常可配置。但在阅读或分享结果之前,你应该知道要检查什么。

关于方法的说明:本指南基于插件的 v2.4.2 源代码、其官方文档以及 Calibre 手册。我们没有为本文进行计时翻译,因此不对速度、翻译质量或哪个引擎效果最好做出任何声明。

开始前你需要准备什么

要求详情
Calibre版本 5.0.0 或更高。Calibre 插件索引中 v2.4.2 的最低要求,该索引显示发布日期为 2026 年 8 月 7 日。
无 DRM 的 EPUB插件处理的是 Calibre 书库中的书籍文件。带有 DRM 锁定的商店购买书籍无法翻译。先检查文件是否有 DRM。
翻译引擎有些引擎无需账户即可使用(Google、DeepL 和 Microsoft Edge 的免费端点)。其他引擎需要 API 密钥,服务商会另行收费。
审阅时间计划好阅读和检查输出。插件逐段翻译,这不是一个审阅步骤。

插件也接受 Calibre 能读取的其他格式,如 MOBI 或 AZW3。由于书籍无论如何都会经过 Calibre 的转换,从干净的 EPUB 开始能得到最可预测的输出。

安装 Ebook Translator 插件

插件的文档给出了两种安装方法:

  1. 在 Calibre 内部(推荐): 打开 首选项 → 插件 → 获取新插件,搜索 Ebook Translator,点击 安装,然后重启 Calibre。
  2. 从文件安装: 从插件主页下载 ZIP 文件,然后依次点击 首选项 → 插件 → 从文件加载插件,并重启。

如果插件没有出现在工具栏上,请在 首选项 → 工具栏和菜单 → 主工具栏 中添加它。

Calibre 将插件作者列为 bookfere.com。Calibre 团队并不维护该插件。请将问题报告给插件的 GitHub 仓库,而不是 Calibre。

批量模式或高级模式

该插件有两种运行翻译的方式:

  • 批量模式: 选择一本或多本书,设置目标语言和输出格式,然后点击 翻译。任务会在 Calibre 的任务队列中运行。当你打算只读一遍整本书时,可以用它来生成初稿。
  • 高级模式: 将一本书的段落提取到表格中,翻译全部段落或仅翻译选中的段落,手动编辑任何译文,然后点击 输出。当这本书很重要时使用此模式,例如有几章需要重新翻译或人名需要修正,因为你可以在生成 EPUB 之前先修正段落。

如果你无论如何都会审校译文,高级模式让你可以在插件中直接修改。使用批量模式的话,你之后需要在 Calibre 的编辑器中修改。

选择翻译引擎

默认使用免费的 Google 引擎。2.4.2 版本提供以下引擎(名称与插件中显示的一致):

引擎分组引擎所需条件
免费,无需密钥Google(免费)的三种变体、DeepL(免费)、Microsoft Edge(免费)无需任何条件;限制由服务方设定,可能会变化
机器翻译 APIGoogle(基础版)、Google(基础版)ADC、Google(高级版)ADC、DeepL、DeepL(专业版)、有道、百度需要账户和 API 密钥,或 ADC 选项所需的 Google Cloud 凭据;由服务商计费
大语言模型ChatGPT(OpenAI)、ChatGPT(Azure)、Gemini、Claude(Anthropic)、DeepSeek(Chat)需要 API 密钥;由服务商按 token 计费
自定义你配置的任何 HTTP 端点你自己的端点和响应解析

影响长篇书籍的默认设置:

  • 请求之间的间隔取决于引擎。在 v2.4.2 源码中,ChatGPT(OpenAI 和 Azure)为 20 秒,Claude 为 12 秒,Gemini 和 DeepL(免费)为 1 秒,其他大多数为 0。文档建议,如果服务开始拒绝请求,就调高这个值。
  • 尝试次数为 3,运行会在连续 10 次错误后中止。将中止次数设为 0 即可永不自动停止。
  • 超时同样取决于引擎:ChatGPT 和 DeepSeek 为 60 秒,Claude 和 Gemini 为 30 秒,其余为 10 秒。
  • 合并翻译默认关闭。开启后,插件会以最多 1,800 个字符为一批发送段落。分批能让 LLM 在每次请求中获得更多上下文,但一次糟糕的响应会同时影响多个段落。
  • 术语表默认关闭。开启后,它会读取一个纯文本文件。术语及其翻译各占一行,保持不翻译的术语占一行,条目之间用空行分隔。

插件是免费的,但翻译并不总是免费。将一本 300 页的小说发送到付费 API,会像任何其他 API 使用一样计费。我们关于 ChatGPT、Claude 和 DeepSeek 翻译 的指南解释了每个模型在长文本中容易出错的地方。

选择仅译文或双语输出

翻译位置设置决定书籍的形态:

设置结果适合
原文下方(默认)先原文段落,再译文语言学习者和抽查
原文上方先译文,再原文用你的语言阅读,同时保留原文对照
原文左侧/右侧(标记为 Beta)每一对变成一行表格,中间有一列间隔仅限宽屏
无原文译文替换原文阅读翻译后的书籍

如果你只想要一本可以直接阅读的书,请在开始前将位置改为仅译文,因为默认设置会生成双语书籍。

请留意左右选项。在源文件中,每一对内容会被重建为包含三个单元格的表格行:原文、间隔和译文。默认间隔为 10% 时,文本列各占 45% 的宽度。在手机或 6 英寸电子阅读器上,这会变成两条狭窄的文本条。我们的双语 EPUB 指南比较了在小屏幕上依然可用的双语布局。

插件在 EPUB 内部改动了什么

这是通用教程通常会略过的部分。下表根据源代码(标签 v2.4.2 中的 lib/element.py 和 lib/conversion.py)总结了 v2.4.2 对各类内容的处理方式。

EPUB 中的内容v2.4.2 的处理方式需要检查的内容
段落、标题、块引用作为单元提取并翻译章节开头和结尾没有遗漏
<pre> 和 <code> 块不翻译(默认忽略)代码示例保持源语言,这通常是正确的
段落内的斜体、粗体、<span> 和链接文本会被翻译,但标签会从译文中丢失译文段落中的强调、斜体标题和文内交叉引用
图片、<br>、<hr>、<sub>、<sup>、<abbr>、<math>、<svg> 以及其他一些内容翻译前替换为 {{id_00000}} 等占位符,然后再放回如果引擎改动了占位符,会出现多余的 {{id_…}} 文本或图片丢失
脚注标记写为围绕上标的链接作为一个受保护单元整体保留注释链接仍可跳转到注释
脚注标记写为不带上标的链接该链接会像其他行内链接一样被扁平化不再链接的注释编号
注音标注(<rt>、<rp>)从发送翻译的文本中移除日文或中文原文中的振假名或拼音
仅含数字和标点的段落跳过页码和分隔符保持原样
目录条目已翻译阅读器导航菜单中的章节标题
标题、作者及其他元数据仅当启用元数据翻译时才翻译书库条目及书籍显示标题

其中两个细节造成的可见损坏最为严重。

斜体和链接为何消失。 对于每个段落,插件从段落的纯文本构建待翻译文本。只有其保护列表上的标签会被替换为占位符。<em> 或 <a> 既不受保护也不被忽略,因此其文字会被翻译,标记则会丢失。在双语模式下,原始段落保留其格式,所以问题只出现在译文行中。在仅目标语言模式下,格式则完全消失。你可以在 Reserve Element 下添加选择器,但保留元素会使其保持 不翻译。这对于你想保留的外文短语或书名很有用,但对于你想翻译的强调内容则是错误的。

脚注为何可能损坏。 出版商标记脚注引用的方式各不相同。插件对仅包裹上标的链接(<a href="#n1"><sup>1</sup></a>)有特殊处理,会保持该链接完整。而写成 <a href="#n1" class="noteref">1</a> 的引用没有上标,因此数字会保留,但链接可能不会。在信任非虚构类作品的仅目标语言翻译之前,请检查注释。对于日文和中文书籍,在决定失去振假名是否可接受之前,请参阅如何翻译 EPUB 注音标注。

翻译后的元素还会获得目标语言的 lang 属性和 dir 属性,这有助于电子阅读器选择字体和从右到左的布局。在双语模式下,译文不会复制原始元素的 id,因此现有锚点仍指向原始段落。

最后,Calibre 的转换手册描述了转换的工作原理:输入被转换为 XHTML,经过变换,然后由输出插件写出。在此过程中,Calibre 的变换可能会重新生成元数据和目录。插件在这些变换之后、输出插件写入文件之前进行翻译。因此,你翻译后的 EPUB 是一本重建的书,而不是带有新文本的原始文件。Calibre 的手册指出,其转换系统“不能替代功能完备的电子书编辑器”。

五分钟检查翻译后的 EPUB

不要仅凭第一章判断结果。对原始文件和翻译文件进行结构比较。EPUB 是一个 ZIP 归档文件,因此标准命令行工具可以统计双方的标记数量:

mkdir src out
unzip -q original.epub -d src
unzip -q translated.epub -d out
for tag in '<em' '<i[ >]' '<strong' '<a ' '<sup' '<img' '<rt'; do
  s=$(grep -rhoE "$tag" src --include='*htm*' | wc -l)
  o=$(grep -rhoE "$tag" out --include='*htm*' | wc -l)
  printf '%-10s source=%-6s output=%s\n' "$tag" "$s" "$o"
done
grep -rho '{{id_[0-9]*}}' out | head

如何解读结果:

  • 仅目标语言输出中的 <em>、<i> 或 <a 标签远少于源文件,意味着强调或链接被扁平化。这是上述行为的预期结果。请判断这本书能否在没有它们的情况下存活。
  • 仅目标语言输出中的 <img 标签更少,意味着图像占位符丢失了。在双语输出中,图像可能出现两次,因此请改为依赖占位符搜索。找到对应章节,并在高级模式或 Calibre 的编辑器中修复。
  • 任何 {{id_…}} 文本都意味着某个引擎改动了占位符,因此受保护的元素未能恢复。
  • 双语输出的标签数量至少应与源文件一样多,因为原文段落被保留了下来。

<em 模式也会匹配到 <embed,这在书籍中很少见,但如果计数看起来异常,值得留意。

然后对翻译后的文件运行 W3C 的 EPUBCheck。在你实际会使用的阅读器中打开它,并检查 EPUB 翻译质量检查清单:导航、注释、图片以及每一章的最后一个段落。如果这本书是给别人看的,在 Kindle、Kobo 和 Apple Books 上测试它。

如果翻译中途停止

该插件默认会缓存已翻译的段落。如果网络中断或引擎开始拒绝请求,请使用相同设置再次运行同一本书。已缓存的段落不会再次翻译。实际操作如下:

  1. 在 Jobs 下打开任务日志,查找重复出现的错误,这通常指向限流或 API 密钥过期。
  2. 提高该引擎的 Interval 或降低 Concurrency limit。
  3. 重新运行这本书。缓存会从停止的地方继续。
  4. 仅当你想要全新翻译时(例如编辑术语表之后),才使用 Cache Manager 清除某本书的缓存。切换引擎或目标语言已经会启动单独的缓存。

何时适合使用 Calibre,何时不适合

在以下情况下使用 Calibre 插件:

  • 这本书没有 DRM,并且已经在你的 Calibre 书库中;
  • 你想自行选择并支付引擎费用;
  • 你愿意在高级模式下审阅段落;并且
  • 这本书主要是纯文本,因此丢失内联格式的代价很小。

在以下情况下寻找其他工作流程:

  • 这本书依赖内联格式、交叉引用或链接注释,许多教科书和学术书籍都是如此;
  • 名称和术语必须在数百页中保持一致,而你又不想自己维护术语表文件;
  • 你宁愿不自己运行标记检查和修复;或者
  • 你对 API 密钥、速率限制和任务日志不太熟悉。

如果第二个列表描述的是你的书,一个选择是将 EPUB 上传到 BookTranslator,并在付费前查看价格。完成的任务提供仅目标语言和双语两种下载,并且名称和关键术语通过内置术语表保持一致,而不是由你编写文件。这是一项付费服务。无论你使用什么工具,都要对输出运行上述相同的标记检查,并在依赖任何长翻译之前进行审阅。如果你想在选择前进行比较,EPUB 翻译工具对比将 Calibre 插件、浏览器工具和文件服务并排展示。

相关文章

如何使用 Calibre 翻译 EPUB:插件设置、输出模式与文件检查