Ebook Translator adds a cache, two modes and an engines directory to Calibre
A Calibre plugin to translate ebook into a specified language.
At a glance
- What is it?
- Ebook Translator is a GPL-3.0 Calibre plugin that translates books with Google Translate, ChatGPT, Gemini, DeepL or an engine you define yourself. The readme is an index rather than a manual: every instruction lives in the project wiki, and the interesting detail is in the repository layout instead.
- Who is it for?
- Ebook Translator fits a Calibre user with a shelf of foreign-language books and a translation backend they already have credentials for, who wants one pass over the catalogue rather than per-book exports. Three things to check first.
- 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 58 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 October 3, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Two modes, and two top level modules with the same names
The first feature on the page is a pair of modes for different usage situations, Advanced Mode and Batch Mode. Those two names turn out to be the repository's own structure: advanced.py and batch.py are modules at the root, and there is no single entry point that suggests which one you should be reading first. Batch mode is the one with the larger claim attached to it. More than one ebook can be translated at a time, and the page is explicit that each book's translation process runs simultaneously without affecting the others, which is a stronger statement than queueing them in sequence. So the plugin treats a batch as genuinely parallel work rather than as a loop that happens to iterate over a list.
engines/ is the extension point, and JSON or XML is the contract
An engines directory at the repository root holds the translation backends, and the named ones are Google Translate, ChatGPT, Gemini and DeepL, with the list left open rather than closed. Language coverage is not a property of the plugin. It comes from whichever engine you select, and the example given is that Google Translate supports 134 languages, which is the sort of figure that will change under you. Adding a backend of your own is supported by configuration rather than by code: you can tell the plugin how to parse a response in JSON format or in XML format. That is a deliberately small contract, and it is why the plugin can sit in front of services with completely different response shapes without shipping an adapter for each one.
cache.py is why a dropped connection does not cost the whole book
Translated content is cached, and the stated benefit is narrow and practical: there is no need to re-translate after a request failure or a network interruption. For a long book that is the difference between losing an evening and losing a token budget, because a failure in the middle of a chapter would otherwise mean either restarting or hand-managing partial output. The module that does it is cache.py, sitting at the repository root next to setting.py and about.py. It is listed as a feature in its own right rather than buried, which suggests it was added because it mattered to people running long jobs rather than as an afterthought in the download path.
The format claim is Calibre's, extended with subtitles
The plugin does not implement conversion. It inherits the format handling of the application it plugs into, and the numbers given are Calibre's: 48 input formats and 20 output formats. On top of that it names one extra format, .srt, which is a subtitle file rather than an ebook. That single addition tells you something about the audience: the plugin is used on books that have been converted into ebook form from material that also had timed text, and the author wanted subtitles in scope. The output side, where translated books are written, is configurable between saving into the Calibre library and saving to a designated location, which is what makes the plugin usable in batch without hand-moving files afterwards.
Every instruction lives in the wiki, not in the repository
The manual section is four links and no text: a brief tour that serves as the tutorial, then installation, usage and settings. Each one points into the project wiki rather than at a file in the repository, so the repository itself is an index page and the documentation lives somewhere else entirely. That has a practical consequence for anyone auditing the plugin before installing it. Configuration options, the engine setup steps and the exact translation workflow are all outside the code you can read here, and the settings are described only as a large number of customisation options with saving location given as the example. The one thing the repository does state plainly is the licence, GNU General Public License version 3, and it carries a contributing guide and a changelog at the root.
Two readmes, a translations directory and a Calibre marker file
The layout is a Calibre plugin rather than a Python package, and the marker is explicit: a file named plugin-import-name-ebook_translator.txt sits at the root, its name encoding the import name Calibre will use to load the plugin. Beside it are __init__.py and about.py, which is where a Calibre plugin conventionally describes itself. Two readmes sit side by side, README.md and README.zh-CN.md, with a language switch line at the top of the English one, and a translations directory holds the interface strings. There is also a tests directory and a separate test.py file at the root, so tests exist in two forms, plus lib, vendor and components directories, a page directory, and an images directory for the plugin's own assets.
Release gaps of a year, and the newest tag is also the newest push
The version history is uneven. v2.4.0 was published on 15 March 2025 and v2.4.1 on 20 April 2025, five weeks later, and then nothing for over a year until v2.4.2 on 7 August 2026. The repository is not archived, and the last push to the default branch is dated 7 August 2026, within a minute of the 2.4.2 tag, so the newest release and the newest commit are the same event rather than a tag catching up to later work. A CHANGELOG.md at the root is where that sequence is recorded. The links section points at a discussion thread on the MobileRead forum, at the releases page, at the contributing guide, and at a PayPal donation link for the author.
Editorial conclusion
Ebook Translator fits a Calibre user with a shelf of foreign-language books and a translation backend they already have credentials for, who wants one pass over the catalogue rather than per-book exports. Three things to check first. Pick the engine before anything else, because the language list comes from the backend rather than from the plugin, and the coverage you get from Google Translate is not the coverage you get from the others. Read the settings page in the wiki, since the readme promises a large number of customisation options and does not enumerate them. And know what the plugin does not do: it does not convert, since all input and output formats come from Calibre itself, and it does not retranslate from scratch after a failure, because the cache is what makes long jobs survivable. If you want the same result without Calibre, the repository does not point you at an alternative, and you would be choosing one yourself.
Frequently asked questions
Which translation engines does the Ebook Translator Calibre plugin support?
Google Translate, ChatGPT, Gemini, DeepL and others, and you can configure a custom engine that parses its response in JSON or XML format. Language coverage follows the engine you select, with Google Translate given as an example at 134 languages.
What is the difference between Advanced Mode and Batch Mode?
They are the two usage situations the plugin supports, and each has a module of the same name at the repository root, advanced.py and batch.py. Batch mode is for translating several ebooks at once, with each book's process running simultaneously without affecting the others.
Will a network failure make me translate the whole book again?
No. Translated content is cached, so there is no need to re-translate after a request failure or a network interruption. The code for that lives in a cache.py module at the repository root.
How do I install the Ebook Translator Calibre plugin?
The readme gives no install command of its own. It links an installation page in the project wiki alongside a tutorial, a usage page and a settings page, and separately links the releases page and a plugin homepage at translator.bookfere.com.
Which file formats can the Ebook Translator plugin handle?
Everything Calibre supports, given as 48 input formats and 20 output formats, plus additional formats such as .srt for subtitles. The conversion itself belongs to Calibre; the plugin translates the text and can save the result into the Calibre library or to a location you choose.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/bookfere-ebook-translator-calibre-plugin)