The largest release since the rewrite. QTranslate 1.4.0 rebuilds the plugin contract, opens translation of the app itself to anyone who wants to help, and puts the network under your control.
⚠️ Breaking: Plugin API v2
Third-party plugins built against v1 are refused at load and must be rebuilt. There are no known third-party plugins, so in practice this affects nobody today, but it breaks a documented contract and is stated plainly for that reason. Every bundled plugin is migrated, and your existing service selections convert automatically on first launch.
What changed: what a service is for now follows from the interfaces it implements, so one service can be offered as both a translator and a dictionary with nothing to declare that could contradict the code. Summary lengths and rewrite styles are data a plugin defines rather than a fixed list the app owns. Settings are typed and scoped per plugin instance, credentials live in their own store, and plugins are handed an HTTP client by the application instead of building their own.
See the plugin authoring guide.
Translate the app itself
- A translation editor. Working on a language no longer means finding the data directory and editing a file by hand. It lists every string the app asks for with the English text beside your translation, filters to what is still missing, marks what is done, and can draft a suggestion from your active translation service for you to correct. Files are written in the same shape as the English one, so a saved translation reads like a hand-written file and can be opened as a pull request unchanged.
- Translators are credited. Each translation records everyone who has worked on it rather than a single author, and Settings names them beside the language. Previously the file held one name and nothing ever displayed it, so no translator was credited at all.
- Settings says when a translation is unfinished, and by how much. Missing strings fall back to English, which keeps a half-finished translation usable and hides its gaps.
- Import and delete translations from Settings. An imported file is parsed before it is copied and refused if it will not load.
- Vietnamese, contributed by @vuanhvu11982, plus improvements to Turkish from @BouRock, Hungarian from @JohnFowler58 and Italian from @bovirus.
- Plugins can ship their own translations, so plugin text is no longer English-only.
Look things up
- Image search. Select a term and press
Ctrl+Shift+Qfor pictures of it from Wikimedia Commons. Built for technical reading, where a diagram explains a term faster than a definition. Filter by Anything, Photographs or Diagrams; licensing stays visible under each picture. - A short definition under single-word translations, in the popup and the main window, with no click and no toggle. It stays out of the output pane on purpose, so copying a translated word still copies just the word.
- CSV Dictionary plugin. Point it at your own CSV and look terms up in it: a glossary, an abbreviation list, error codes, study mnemonics. Columns, delimiter and result label are all configurable.
- Listen on dictionary results, in the quick popup, the standalone dialog and the docked panel.
Control the network
- A Network page in Settings, covering how QTranslate reaches the internet in one place rather than once per plugin. Route everything through an HTTP proxy, with credentials kept in the secret store rather than the settings file. Set timeouts for the whole request, for connecting and between packets, with an explanation beside each and a warning when one is set so low another can never take effect. Give one service its own longer timeout, which is what a local AI model needs. Choose whether failed requests are retried, how often, and how long to wait. Cap connections to a single service.
- A local, private AI setup. Point AI Services at Ollama or LM Studio and nothing leaves your machine: no account, no API key, no per-word cost. For work under an NDA, proprietary code, or anything else that cannot go to a cloud service.
- API keys moved out of the plugin settings file into a separate credential store.
Live in it
- Five icon sets to choose from: Lucide, Material Symbols, Phosphor, Tabler and Heroicons. Your own set can be added as a folder of SVGs.
- Search the settings. A field above the sidebar finds any setting by name, by its section, or by a word appearing only in its explanation. Typing "fades" reaches the popup idle timeout.
- The Settings dialog is reorganised into two groups, Translation and Interface, rather than eight flat pages in no particular order.
- Change languages from the Quick Translate popup, with a swap between them, and drive the whole popup from the keyboard. Retargeting a translation no longer means opening the main window.
- Click outside to close is now a setting for the floating popups, on by default.
- A log file to attach to a bug report, at
logs/qtranslate.login the app data folder.
Notable fixes
- QTranslate now renders at the display's scale. On a 150% or 200% display it drew scaled icons and borders around unscaled text, paddings and windows, opening at roughly half the size its contents needed and clipping the language selectors to "Eng…" and "Ara…".
- The interface no longer grows on every theme or font change. At 125% scale each change enlarged everything by a further 25%, compounding.
- Translation requests are no longer sent twice when a service fails mid-request, which could mean being charged more than once for a single attempt. Rate-limited requests are now retried, and the wait the service asks for is obeyed.
- The Arabic interface lays out correctly. Panes were stacked in the wrong order, the docked dictionary could not be resized, and Settings drew its section rules off-screen entirely.
- Choosing English as the interface language survives a restart.
- Settings are never silently reset again. An unreadable configuration is copied aside, timestamped, and reported at startup rather than replaced by defaults with only a line in a log.
- A single translated string could take down a window. Writing an ordinary percent sign in a translation was enough. Strings that cannot be formatted now fall back to English.
- Windows on a display left of or above the main one no longer fail when their position is saved, and a window saved on a monitor that is no longer attached comes back into view instead of being restored invisibly.
Full changelog: https://github.com/ahatem/QTranslate/blob/main/CHANGELOG.md
Downloads
| Download | Who it is for | Java needed |
|---|---|---|
| ⬇ Windows (.exe) | Start here on Windows. Extract and run QTranslate.exe. |
No — runtime included |
| ⬇ Portable (all platforms) | macOS, Linux, or Windows without an installer. Extract and run QTranslate.jar. |
Java 11+ |
| ⬇ App only (.jar) | No plugins. For custom setups and plugin development. | Java 11+ |
The portable ZIP already contains every bundled plugin. The individual
plugin JARs in the assets below are only needed to add or update a single
plugin in an existing installation — most users can ignore them.
Verification
Optional. Download SHA256SUMS.txt
into the same folder as your download and run:
sha256sum -c SHA256SUMS.txt