Model or dataset
bookfere/Ebook-Translator-Calibre-Plugin avatar
bookfere/Ebook-Translator-Calibre-Plugin

Ebook Translator: A Calibre plugin for translating ebooks with Google, ChatGPT, Gemini and DeepL

A Calibre plugin to translate ebook into a specified language.

2,629 stars204 forksPythonGPL-3.0

At a glance

What is it?
Ebook Translator bolts machine translation onto Calibre's conversion pipeline, with an advanced mode for single books and a batch mode for queues. The plugin is worth knowing if you already live in Calibre; the trade-off is that quality depends entirely on the engine you configure.
Who is it for?
Adopt Ebook Translator if Calibre is already your library manager and you want translation to happen inside it, especially if you need batch runs across many books or a custom engine that returns JSON or XML. Skip it if you need a translation service with human review, or if you do not want a GPL-3.0 plugin inside your Calibre install.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 40 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem: translating an ebook without leaving Calibre

Translating a book is not the same as translating a paragraph. A novel is hundreds of thousands of words, split across chapters, with formatting, footnotes and sometimes embedded images that a plain text translator will destroy. The usual workaround is to export the text, paste it into a web translator in chunks, and reassemble the result, which is tedious and loses structure.

Ebook Translator takes a different position: the translation happens inside Calibre, on the book as Calibre already understands it. The README states the plugin supports all ebook formats Calibre supports, which it counts as 48 input formats and 20 output formats, plus additional formats such as .srt. That is the real selling point. You are not converting to plain text and back; you are running a translation pass over the book Calibre can already open.

The audience is narrow but real. It is for people who already keep a Calibre library, who read in a second language, and who are willing to accept machine translation quality in exchange for not moving files around by hand. It is not for publishers producing a commercial translation, and it is not a replacement for a human translator.

How the plugin is put together: engines, cache and two modes

The repository layout tells you most of the architecture. There is an engines/ directory, a cache.py module, an advanced.py and a batch.py, a setting.py, and a components/ directory. That maps onto the three things the plugin actually does: pick an engine, run a translation job, and remember what has already been translated.

The engine layer is the part that matters most. The README lists Google Translate, ChatGPT, Gemini and DeepL among the supported engines, and notes that each engine supports its own set of languages, giving Google Translate's 134 languages as the example. The plugin does not ship its own translation model. It is a client that formats requests and parses responses, which means the quality ceiling is set by whichever service you point it at.

Custom engines are the escape hatch. The README states you can configure a custom engine and parse its response as JSON or XML. That is a deliberate design choice: rather than chase every new translation API, the plugin exposes a generic HTTP-shaped slot and lets you describe the response format. If your provider returns JSON, you write a JSON parser config; if it returns XML, you write an XML one.

The cache is the other structural piece. The README says translated content is cached so that after a request failure or a network interruption you do not have to re-translate. For a long book hitting a rate-limited API, this is not a nicety. Without it, a failure at 80 percent would mean starting over and paying for the same tokens twice.

Finally, the two modes. Advanced Mode and Batch Mode are presented as being for different usage situations. Batch Mode is the one the README describes as translating more than one ebook, with each book's translation process carried out simultaneously and without affecting one another. That is a concurrency claim, and it is the kind of thing you should test on your own books rather than assume.

Installing Ebook Translator and running a first translation

The README points to a wiki page for installation rather than repeating the steps in the repository root, so the canonical instructions live at the Installation page linked from the README. The general Calibre flow is that a plugin ships as a zip and is added through Calibre's preferences, and the project's own installation page is where you should confirm the exact steps for your Calibre version.

Once installed, the plugin appears in Calibre's interface. The README's manual links to a Tutorial page described as "a brief tour", and to separate Usage and Settings pages. Those are the authoritative references for the current UI, since the plugin exposes what the README calls a large number of customization settings, including whether translated ebooks are saved to the Calibre library or to a designated location.

Because the README does not publish literal command lines or config snippets, here is the shape of the workflow rather than invented syntax. You select one or more books in Calibre, invoke the plugin, choose a translation engine and target language, and start the job. In Batch Mode the README says the books are translated simultaneously. What you should see is progress reported per book, and, if a request fails, a resumable state rather than a lost job, because of the cache.

For a custom engine, the configuration is where you declare the endpoint and the response format. The README's statement is that you can configure the plugin to parse the response in JSON or XML format. It does not publish a full schema for that configuration in the repository root, so treat the Settings wiki page as the place to read the exact keys before you write anything.

One practical note that follows from the README: the plugin supports formats beyond ebooks, including .srt subtitle files. If your goal is subtitles rather than a book, the same plugin covers it.

Where Ebook Translator falls short

The most important limitation is not a bug, it is the premise. The plugin translates; it does not guarantee a good translation. The README is explicit that language support comes from the selected translation engine, and that Google Translate supports 134 languages as an example. Everything downstream of that, including accuracy on idiom, names and technical vocabulary, belongs to the engine, not to the plugin. If you pick a weak engine, no setting in Ebook Translator will fix it.

Cost is the second constraint, and it is unevenly distributed. Google Translate and DeepL are commercial services with their own terms. ChatGPT and Gemini are LLM APIs billed per token, and a full-length book is a lot of tokens. The cache reduces repeat cost after a failure, but it does not reduce the cost of the first pass. The README does not document a token estimate or a cost calculator, so you are budgeting blind unless you translate a sample chapter first.

Third, the documentation is split. The README is mostly a feature list and a set of links; the actual instructions live in the wiki and on the project homepage. That is fine for a community plugin, but it means the repository root will not answer detailed questions about settings. If you need to know what a specific option does, the README will not tell you.

Finally, consider when this is simply the wrong tool. If you need a legally reviewed translation, or a translation with consistent terminology across a series, a machine pass followed by human editing in a CAT tool is the realistic path. Ebook Translator produces a translated book; it does not produce a publishable one.

Alternatives and how they differ in approach

The obvious alternative is not another Calibre plugin, because the plugin category is thin. It is the general-purpose document translation route: extract the text, translate it with a service or an LLM, and rebuild the file.

The difference is where the structure lives. Ebook Translator keeps the book inside Calibre and translates it there, relying on Calibre's own format handling. The extract-and-rebuild route gives you full control over the prompt and the glossary, and it works with any tool you like, but you own the reassembly. Chapter breaks, footnotes and inline formatting are your problem, and for a 48-format input space that is a lot of edge cases to handle yourself.

A second alternative is to skip Calibre entirely and use a translation API directly from a script. That is more flexible and often cheaper, since you are not paying for a plugin's abstraction. It is also strictly more work, and it gives up the cache, the batch queue and the per-book progress reporting that the plugin provides out of the box.

The honest summary is that Ebook Translator's advantage is integration, not translation quality. If you are already in Calibre and you value not leaving it, the plugin earns its place. If you are not a Calibre user, adopting Calibre just to get this plugin is a large detour for a task a script could do.

Maintenance, upgrades and the GPL-3.0 licence

The repository is not archived. The most recent push recorded is 2026-08-07, which is the same date as the v2.4.2 release. The release history shows v2.4.0 in March 2025, v2.4.1 in April 2025, and then v2.4.2 in August 2026, a gap of more than a year between the second and third releases. That pattern suggests maintenance happens in bursts rather than on a schedule.

That matters for upgrade cost in a specific way. Calibre itself updates frequently, and a plugin that hooks into Calibre's conversion pipeline can break when Calibre changes. A gap of over a year between releases means there were long windows where the plugin was not being adjusted. Users on a fast-moving Calibre release channel should expect to pin or delay Calibre upgrades if something breaks, and should check the release notes before upgrading.

The licence is GPL-3.0. Without offering legal advice: this is a copyleft licence, and the practical implication for most readers is that if you redistribute a modified version of the plugin, you do so under the same licence and with source. Running it privately to translate your own books does not raise that question. If you are considering bundling the plugin into a commercial product or a paid service, read the licence text in the LICENSE file and get proper advice, because the terms are not permissive in the way MIT or Apache-2.0 are.

Editorial conclusion

Adopt Ebook Translator if Calibre is already your library manager and you want translation to happen inside it, especially if you need batch runs across many books or a custom engine that returns JSON or XML. Skip it if you need a translation service with human review, or if you do not want a GPL-3.0 plugin inside your Calibre install. Before committing to a long book, verify three things: that your chosen engine is configured and reachable from Calibre, that the cache directory survives across sessions, and that the output format you need is in the supported list. The last push was on 2026-08-07, so the project is current rather than abandoned, but that says nothing about any individual engine's API still working.

Frequently asked questions

Which translation engines does Ebook Translator support?

The README lists Google Translate, ChatGPT, Gemini and DeepL among the supported engines, and notes that other engines can be added. The set of languages available depends on the engine you select, with Google Translate cited as supporting 134 languages.

Can Ebook Translator translate more than one book at a time?

Yes. The README describes a Batch Mode for translating more than one ebook, in which each book's translation process runs simultaneously and without affecting the others. Advanced Mode is presented as the alternative for other situations.

What happens if the translation fails partway through a book?

The plugin caches translated content, and the README states this means you do not need to re-translate after a request failure or a network interruption. The cache is handled by the cache.py module in the repository.

Can I use my own translation service with Ebook Translator?

Yes. The README states you can configure a custom translation engine and set the plugin to parse the response in JSON or XML format. This is the route to take for a provider that is not one of the built-in engines.

Which ebook formats can Ebook Translator handle?

The README states the plugin supports all formats Calibre supports, which it counts as 48 input formats and 20 output formats, plus additional formats such as .srt. In practice the input format is limited by what Calibre itself can open.

What licence is Ebook Translator released under?

The repository is licensed under GNU General Public License v3.0, with the full text in the LICENSE file. That is a copyleft licence, so redistributing a modified version carries source and licensing obligations.

Official sources

  1. bookfere/Ebook-Translator-Calibre-Plugin on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes