QTranslate

May 10, 2026 · View on GitHub

QTranslate

QTranslate

The translation tool that Questsoft abandoned. Rebuilt from scratch. Built to last.

Release License Build PRs Welcome Made with Kotlin

Download · Plugin Guide · Contributing · Wiki


QTranslate — backward translation and Quick Dictionary

The original QTranslate by Questsoft was the best desktop translation tool on Windows — until development stopped, APIs broke, and users were left with a dead app.

This is a full rewrite in Kotlin with one core design change: everything is a plugin. Translation engines, OCR, TTS, spell checkers, dictionaries — all separate JARs you install at runtime. When a service changes its API or shuts down, you swap the plugin. The app keeps running.


What it does

Select text anywhere → press Ctrl+Q → translation appears instantly. That's the core of it.

Quick Translate popup
Quick Translate — select text in any app, press Ctrl+Q

For longer work: open the main window, type or paste, translate. Switch engines in one click. Run OCR on a screenshot. Listen to pronunciation. Check spelling. Browse history. All from the keyboard, all without opening a browser.

Main window — dark theme
Main window — translate, summarize, rewrite, spell check, browse history
RTL layout — Arabic
RTL support — full layout mirroring for Arabic, Hebrew, Farsi, and more
Compact layout — light theme
Compact layout, light theme — tabbed view, fits any workflow
Settings — Services and Presets
Settings — Services & Presets — configure engines, presets, and API keys

Features

Translation

Quick Translate popupCtrl+Q on any selected text — popup with result, no main window needed
Instant translationTranslates as you type with configurable debounce
Inline replaceCtrl+Shift+T — translates selected text and pastes the result back in place
Backward translationSee the round-trip result alongside the main output — spots awkward phrasing instantly
SummarizeGet a condensed version of long text, configurable length
RewriteRewrite in a different style: Formal, Casual, Concise, Detailed, or Simplified
Translation historyFull undo/redo through every past translation
Translation rulesAuto-correct source text before translating — fix common mistakes, expand abbreviations, normalize input

Input

Screen OCRDraw a rectangle anywhere on screen — translate, copy text, copy image, or save; re-crop without closing
Spell checkingLive underlines as you type, click a suggestion to apply
Remove line breaksStrips newlines from pasted text so PDF content translates as sentences
Language filterPin 3–4 target languages so the picker isn't overwhelming
Cycle languagesCtrl+L steps through pinned languages without touching the mouse

Services & plugins

Plugin systemInstall .jar plugins at runtime — no restart, no reinstall
Service presetsSave different engine combinations for different contexts
Google ServicesTranslator, TTS, OCR, Spell Checker, Dictionary — included
Bing ServicesTranslator, TTS, Spell Checker — included
AI ServicesTranslator, Summarizer, Rewriter, Spell Checker, Dictionary, Vision OCR — via OpenRouter (300+ models, one API key) — included

Interface

Three layoutsClassic (stacked), Side-by-side, Compact (tabbed)
Global hotkeysEvery action is bindable, configurable as global or app-local
RTL supportFull layout mirroring for Arabic, Hebrew, Farsi, and more
30+ themesDark and light via FlatLaf, with animated transitions — drop any IntelliJ .theme.json into the themes/ folder to add more
PortableRuns from any folder, all data lives next to the JAR

Installation

Requires Java 11 or laterdownload from Adoptium if you need it.

  1. Download QTranslate-<version>.zip from Releases
  2. Unzip anywhere
  3. Run QTranslate.jar
QTranslate/
  ├── QTranslate.jar                  ← double-click, or: java -jar QTranslate.jar
  ├── plugins/
  │     ├── google-services-plugin.jar
  │     ├── bing-services-plugin.jar
  │     └── ai-services-plugin.jar
  ├── themes/
  │     └── kokedera.theme.json       ← community theme included; drop more .theme.json files here
  └── languages/
        ├── ar-SA.toml
        ├── zh-CN.toml
        ├── de-DE.toml
        └── ...

Google, Bing, and AI plugins are included. Add your API keys in Settings → Plugins → [plugin] → Configure.

Getting "This application requires a Java Runtime Environment"? Java isn't installed or JAVA_HOME isn't set. This video covers the full process: How to Install Java JDK and Set JAVA_HOME (first 7 minutes)

Build from sourceBuilding from Source


Quick start

  1. Launch QTranslate.jar — it starts in the system tray
  2. Select text anywhere on screen
  3. Press Ctrl+Q — Quick Translate popup opens with the result ready
  4. Press Ctrl+D — open the Dictionary for the selected word
  5. Press Ctrl+E — listen to the selected text
  6. Press Ctrl+I — draw a screen region to OCR and translate

Open Settings (gear icon) to configure API keys, themes, hotkeys, and service presets.


Plugins

Installing a plugin: Settings → Plugins → Install Plugin → select .jar → Enable → Configure → assign in Services & Presets

Full guideInstalling Plugins

Community plugins

Built a plugin? Publish it on GitHub with the qtranslate-plugin topic and a qtranslate-plugin.json in your repo — it will appear automatically in QTranslate's built-in marketplace. → Plugin publishing guide

PluginServicesAuthor
(be the first — it's 50 lines of Kotlin)

Build a plugin

A minimal translator is ~50 lines of Kotlin. No framework, no registration — implement a few interfaces, build a fat JAR, install it through the UI.

class MyPlugin : Plugin<PluginSettings.None> {
    override val id      = "com.example.my-plugin"
    override val name    = "My Plugin"
    override val version = "1.0.0"

    override fun getSettings() = PluginSettings.None
    override fun getServices() = listOf(MyTranslatorService())
}

The bundled Google, Bing, and AI plugins are fully open source in plugins/ — they're the best real-world reference for auth, language mapping, error handling, and settings.

Full guideCreating a Plugin


Translate the interface

QTranslate ships with 13 languages built in:

Arabic · Bengali · Chinese · English · French · German · Hungarian · Italian · Japanese · Portuguese · Russian · Spanish · Turkish

Want another language? Copy languages/en.toml, rename it to your language code, translate the values. No code needed.

GuideAdding a Language


Architecture

Clean Architecture + MVI. Nothing leaks between layers:

:api          ← plugin interfaces — plugins only depend on this
:core         ← business logic, use cases, MVI stores
:ui-swing     ← Swing UI, Renderable<State> components
:app          ← composition root
:plugins/*    ← Google, Bing, AI, community plugins
:plugins/common ← shared HTTP client, JSON, language utilities

GuideArchitecture


Support

If QTranslate saves you from Alt-Tabbing to Google Translate a dozen times a day, a coffee is always appreciated!

Buy Me a Coffee


Contributing

Bug fixes, features, translations, docs, and plugins all welcome. Look for good first issue for well-scoped starting points.

Contributing Guide


MIT License


Built with Kotlin · FlatLaf · Ktor · Coroutines

Found it useful? A ⭐ helps other people find the project.