Skip to content
VuteTechPublic

About

KDE Desktop application for dragomanD

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Krakoman

A graphical translator for the KDE desktop that works fully offline. It is a Kirigami client for Dragomand (website: dragomand.l10n-bg.dev), the per-user daemon that runs Mozilla's Firefox translation models locally, so no text leaves the computer.

  • Translate: pick the two languages, type or paste, and the translation follows as you type (or press Ctrl+Return). Several translations stay open in tabs (Ctrl+T, Ctrl+W); only the visible one translates while typing, and the tabs return on the next start.
    • The direction is detected: text in the target language swaps the languages, and text in a third language offers to translate from it.
    • Pasted formatting (headings, bold, italic, links, lists, tables) can be kept, and the translation keeps it too.
    • In plain text, the sentence under the cursor is highlighted in the translation, from the engine's own sentence alignment.
    • Both texts can be read aloud (Qt TextToSpeech), and the source is spell checked in its language (Sonnet).
    • Text on screen or in an image is read with Tesseract and translated. The screen region is picked with Spectacle where it is installed, and through the desktop portal's screenshot elsewhere (GNOME, the Flatpak).
    • When no direct model exists the daemon pivots through English, which the page points out, and each model's quality score is shown.
  • Documents and subtitles: plain text, Markdown, SubRip and WebVTT files are translated through a file descriptor, text only: code, links, numbering, timings and speaker tags stay as they are. Also from Dolphin's context menu and KDE's Share menus, or krakoman --document FILE.
  • History and phrasebook: translations are kept on this computer (unless turned off); starred ones form a phrasebook.
  • Desktop: a system tray icon (optional), Meta+Alt+T to translate the selected text from any application, and optionally translating whatever is copied.
  • Language pairs: every pair Mozilla publishes, installed or not, with version, size, origin and quality; install, update, remove, and check the provider for updates.
  • Daemon status: version, memory in use, queued requests and loaded pairs, fetched on demand only (polling would keep an idle daemon from exiting).

While translating as you type, a missing pair is only reported, with an Install and Translate button; nothing is downloaded without an explicit request.

The command line pre-fills the window, and a second launch hands its arguments to the running one:

krakoman --source bg --target en "Добро утро"
krakoman --document talk.srt

Keyboard: Ctrl+Return translates, Ctrl+L goes to the text, Ctrl+Shift+S swaps the languages, Ctrl+Shift+C copies the translation, Ctrl+T and Ctrl+W open and close tabs.

Build from source

Needs CMake 3.24, extra-cmake-modules, libdragoman-qt, KF6 (Config, CoreAddons, Crash, DBusAddons, GlobalAccel, GuiAddons, I18n, Kirigami, Sonnet, StatusNotifierItem) 6.13 or newer and Qt 6.8 or newer (Concurrent, Core, DBus, Gui, Qml, Quick, QuickControls2, Widgets). Optional: KF6 Purpose (the Share menu entry) and Tesseract (reading text on screen and in images, through pkg-config). At run time it needs Kirigami Addons and the KItemModels and Sonnet QML modules; the QtTextToSpeech QML module with a speech engine enables reading aloud. Translation itself needs a running Dragomand 0.2 or newer:

cmake -S . -B build -G Ninja   # add -DDragomanQt_DIR=<libdragoman-qt build>/buildtree for an uninstalled library
cmake --build build
ctest --test-dir build
cmake --install build --prefix ~/.local   # or sudo cmake --install build

The tests run the tabs, documents and pair list against libdragoman-qt's fake daemon on a private dbus-daemon, and never touch the session bus.

packaging/flatpak/ holds a Flatpak manifest (KDE 6.11 runtime). The sandbox reaches the host's Dragomand over the session bus; the runtime has no Tesseract and no speech engine, so those two features are not part of that build.

Layout

src/*.{h,cpp}      the QML-facing models and controllers
src/qml/           the Kirigami pages
purpose/           the Share menu plugin
data/              Dolphin's service menu
packaging/flatpak/ the Flatpak manifest
autotests/         unit tests and the fake daemon they share
po/                translations (scripts/update-translations.sh)

The D-Bus client itself lives in libdragoman-qt, shared with the other Qt front ends.

Translations

scripts/update-translations.sh extracts the strings into po/krakoman.pot and merges them into every po/<language>/krakoman.po. Language names come from the iso-codes catalogs when those are installed; the library's own messages are translated in libdragoman-qt.

License

GPL-3.0-or-later. The project follows the REUSE specification: every file states its license, and the texts are in LICENSES/.

About

KDE Desktop application for dragomanD

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages