Skip to content

ahatem/QTranslate

Repository files navigation

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 main window

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.

Extra output panel
Extra output panel — backward translation, summary, or rewrite alongside the main result
RTL layout
RTL support — full layout mirroring for Arabic, Hebrew, Farsi
Light theme
Light theme — fully themeable with FlatLaf, dark and light
Plugin manager
Plugin manager — install, configure, enable, disable at runtime

Features

Translation

Quick Translate popup Ctrl+Q on any selected text — popup with result, no main window needed
Instant translation Translates as you type with configurable debounce
Inline replace Ctrl+Shift+T — translates selected text and pastes the result back in place
Backward translation See the round-trip result alongside the main output — spots awkward phrasing instantly
Summarize Get a condensed version of long text, configurable length
Rewrite Rewrite in a different style: Formal, Casual, Concise, Detailed, or Simplified
Translation history Full undo/redo through every past translation

Input

Screen OCR Draw a rectangle anywhere on screen, extract the text, translate it
Spell checking Live underlines as you type, click a suggestion to apply
Remove line breaks Strips newlines from pasted text so PDF content translates as sentences
Language filter Pin 3–4 target languages so the picker isn't overwhelming
Cycle languages Ctrl+L steps through pinned languages without touching the mouse

Services & plugins

Plugin system Install .jar plugins at runtime — no restart, no reinstall
Service presets Save different engine combinations for different contexts
Google Services Translator, TTS, OCR, Spell Checker, Dictionary — included
Bing Services Translator, TTS, Spell Checker — included

Interface

Three layouts Classic (stacked), Side-by-side, Compact (tabbed)
Global hotkeys Every action is bindable, configurable as global or app-local
RTL support Full layout mirroring for Arabic, Hebrew, Farsi, and more
15+ themes Dark and light, via FlatLaf — including animated transitions
Portable Runs 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
  └── languages/
        ├── en-GB.toml
        ├── ar-SA.toml
        ├── de-DE.toml
        ├── es-ES.toml
        ├── fr-FR.toml
        ├── ja-JP.toml
        ├── pt-BR.toml
        ├── ru-RU.toml
        ├── tr-TR.toml
        └── zh-CN.toml

Google and Bing 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+E — listen to the selected text
  5. 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? Submit it here — quality plugins get listed and promoted to all QTranslate users.

Plugin Services Author
(be the first)

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 and Bing 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 11 languages built in:

Arabic · Chinese · English · French · German · 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, community plugins

GuideArchitecture


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.