書譯
書譯

如何使用 Calibre 翻譯 EPUB:外掛設定、輸出模式與檔案檢查

Calibre 透過第三方外掛 Ebook Translator 翻譯 EPUB。本文說明設定方式、引擎與輸出選項、v2.4.2 對標記的處理,以及如何檢查結果。

BookTranslator

BookTranslator Team

19 min read

Calibre 本身無法翻譯書籍。你必須使用 Ebook Translator 這款由 bookfere 開發、已收錄於 Calibre 外掛索引中的第三方外掛,才能在 Calibre 中翻譯 EPUB。請從 偏好設定 → 外掛 → 取得新外掛 安裝,選擇翻譯引擎,決定只要譯文或譯文與原文並列,然後對無 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 或更新版本。這是 v2.4.2 在 Calibre 外掛索引 中列出的最低需求,該索引顯示發佈日期為 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 (Free) 有三種變體、DeepL (Free)、Microsoft Edge (Free)無需任何東西;限制由服務設定,且可能變更
機器翻譯 APIGoogle (Basic)、Google (Basic) ADC、Google (Advanced) ADC、DeepL、DeepL (Pro)、Youdao、Baidu帳戶與 API 金鑰,或 ADC 選項所需的 Google Cloud 憑證;由供應商計費
LLMChatGPT (OpenAI)、ChatGPT (Azure)、Gemini、Claude (Anthropic)、DeepSeek (Chat)API 金鑰;由供應商按權杖計費
自訂你設定的任何 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 書庫中;
  • 你想自行選擇引擎並付費;
  • 你願意在 Advanced Mode 中逐段審閱;以及
  • 這本書大多是純文字,因此失去行內格式的損失不大。

在以下情況尋找其他工作流程:

  • 這本書依賴行內格式、交互參照或連結註釋,許多教科書和學術書籍都是如此;
  • 名稱和術語必須在數百頁中保持一致,而你不想自己維護詞彙表檔案;
  • 你不想自己執行標記檢查與修復;或
  • 你對 API 金鑰、速率限制和工作記錄感到不自在。

如果第二份清單描述的正是你的書,其中一個選項是將 EPUB 上傳到 BookTranslator,並在付費前先查看價格。完成的任務會同時提供純目標語言和雙語下載,且名稱與關鍵術語會透過內建詞彙表保持一致,而不需要你自己撰寫檔案。這是付費服務。無論你使用哪種工具,都請對輸出執行上述相同的標記檢查,並在依賴任何長篇翻譯之前先行審閱。EPUB 翻譯工具比較將 Calibre 外掛、瀏覽器工具和檔案服務並列,方便你在選擇前比較。

相關文章