Skip to main content

A Qt6/PySide6 translation file editor for PO, TS, JSON, XLIFF, Android, ARB, PHP, and YAML files

Project description

LinguaEdit

Version GitHub Release License Python Qt6 Platform Swedish Translate on Transifex

Professional translation editor built with PySide6/Qt6 โ€” by a translator, for translators.

LinguaEdit is a feature-rich, cross-platform translation editor that supports 17+ file formats, translation memory, AI-powered review, and a modern UI designed for productive translation workflows.

๐ŸŒ Website: www.linguaedit.org ๐Ÿ“ฆ Releases: GitHub Releases ๐Ÿ“ Changelog: CHANGELOG.md ๐Ÿ› Issues: GitHub Issues


๐Ÿ“ธ Screenshots

Main Editor

Main Editor

Translation Engines

Translation Engines

Validation

Validation

Statistics

Statistics

Video Subtitle Extraction

Video Subtitles

Glossary Management

Glossary


๐Ÿ“ฆ Installation

pip / pipx (recommended)

# Install with pipx (isolated environment)
pipx install linguaedit

# Or with pip
pip install linguaedit

# Run
linguaedit-gui

Debian / Ubuntu

# Add repository
curl -fsSL https://yeager.github.io/debian-repo/yeager-repo.gpg | sudo gpg --dearmor -o /usr/share/keyrings/yeager-repo.gpg
echo "deb [signed-by=/usr/share/keyrings/yeager-repo.gpg] https://yeager.github.io/debian-repo stable main" | sudo tee /etc/apt/sources.list.d/yeager.list

# Install
sudo apt update
sudo apt install linguaedit

# Note: PySide6 is not available as a system package on most distros.
# Install it via pip:
pip install PySide6

Fedora / RHEL / openSUSE

# Add repository
sudo dnf config-manager --add-repo https://yeager.github.io/rpm-repo/yeager.repo

# Install
sudo dnf install linguaedit

# Install PySide6:
pip install PySide6

macOS

# Via pipx
pipx install linguaedit

# For proper menu bar name and file associations,
# download LinguaEdit.app from GitHub Releases

Windows

Download the self-contained .exe from GitHub Releases โ€” no Python installation required.


โœจ Features

๐Ÿ“„ 17+ File Formats

Format Extensions Notes
PO / POT .po, .pot GNU Gettext
Qt Linguist .ts XML format
XLIFF .xliff, .xlf Version 1.2 & 2.0
SDLXLIFF .sdlxliff Trados with segment definitions
MQXLIFF .mqxliff memoQ with namespace detection
JSON .json Flat & nested i18n
YAML .yml, .yaml i18n files
Android XML .xml strings.xml
ARB .arb Flutter Application Resource Bundle
PHP .php Array format
Java Properties .properties Key=value
Apple Strings .strings Localizable.strings
Unity Asset .asset Unity localization
RESX .resx .NET resource files
Chrome i18n .json messages.json
Godot .tres Godot translation resources
Subtitles .srt, .vtt SubRip & WebVTT
TMX .tmx Translation Memory eXchange

๐Ÿ” Editor & Navigation

  • Multi-tab editing โ€” work on multiple files simultaneously
  • Smart search & replace with regex, case sensitivity, whole word
  • Status filters โ€” All, Untranslated, Fuzzy, Translated, Reviewed, With Warnings
  • Sort modes โ€” File order, alphabetical, by length, untranslated first, by reference
  • Inline editing โ€” double-click entries in the list
  • Drag & drop files to open
  • Bookmarks โ€” star entries for quick access
  • Tags โ€” organize entries with custom tags
  • Minimap โ€” visual overview of file status

๐Ÿง˜ Zen Translation Mode

Distraction-free translation workflow (Ctrl+Shift+Z):

  • Source text (read-only) + translation (editable)
  • Progress bar at top
  • Tab = save + next untranslated
  • Escape = exit Zen mode

โŒจ๏ธ Keyboard Shortcuts

Shortcut Action
Ctrl+O Open file
Ctrl+S Save
Ctrl+H Search & Replace
Ctrl+U Toggle fuzzy
Alt+Enter Next untranslated
Ctrl+Shift+โ†‘/โ†“ Previous/next fuzzy
Ctrl+Enter Copy source to translation
Tab Save + next entry
Shift+Tab Save + previous entry
Ctrl+Shift+Z Zen Mode
Ctrl+D Project Dashboard
Ctrl+Shift+D Git Diff
Ctrl+Alt+T Batch Translate
Ctrl+Shift+F Focus Mode (untranslated only)
F11 Fullscreen
Ctrl+R Run linter
Ctrl+Shift+A AI Review

๐Ÿง  Translation Memory (TM)

  • SQLite-based, zero configuration
  • Fuzzy matching with configurable threshold
  • Auto-learning from your translations
  • Autocomplete suggestions while typing
  • Import/export TMX files
  • Propagate identical translations across entries

๐Ÿ“– Glossary

  • Term management with source โ†’ target pairs
  • Domain tagging
  • Consistency checking across the project
  • Import/export CSV
  • Real-time term highlighting in editor

๐Ÿค– AI & Machine Translation

  • Inline MT suggestions โ€” DeepL/OpenAI suggestions appear as you translate
  • Batch Machine Translate (Ctrl+Alt+T) โ€” translate all untranslated at once
  • AI Review (Ctrl+Shift+A) โ€” quality scoring with heuristic fallback
  • Back-translation verification โ€” detect meaning drift
  • Confidence scores per entry with visual indicators
  • Supported engines: DeepL, OpenAI, Google, Lingva, MyMemory

โœ… Quality Assurance

  • 15+ linting checks:
    • Missing translations
    • Placeholder/format string mismatches (%s, {0}, etc.)
    • HTML/XML tag mismatches
    • Accelerator key mismatches (&)
    • Length ratio warnings
    • Duplicate translations
    • Case mismatches
    • CLDR plural form validation
    • Number localization (thousands separator, currency, dates)
    • Inconsistent translations
    • Trailing whitespace/punctuation
  • Spell check โ€” red wavy underlines with suggestions and custom dictionary
  • Regex tester โ€” validate format strings
  • Layout simulator โ€” pixel width checking for UI text
  • Unicode inspector โ€” detect invisible/suspicious characters

๐Ÿ“Š Project Dashboard (Ctrl+D)

  • Per-language translation progress bars
  • Pie chart and bar chart (QPainter-based, no external deps)
  • Total string counts and summary stats
  • Export statistics as CSV

๐Ÿ”€ Git Integration

  • Git Diff (Ctrl+Shift+D) โ€” compare with previous commits
  • Detect outdated translations (source changed, translation didn't)
  • Stage, commit, branch management from within the editor
  • File change monitoring with auto-reload

๐ŸŽฌ Video Subtitle Translation

  • FFmpeg integration โ€” extract subtitles from video files (.mkv, .mp4, .avi, etc.)
  • Auto video preview โ€” opening a .srt/.vtt automatically finds and shows the matching video
  • Editable timestamps โ€” time intervals as a dedicated column
  • Progress bar during extraction with percentage
  • User-friendly dialog when FFmpeg is not installed

๐Ÿ” Security

  • Cross-platform credential storage:
    • macOS: Keychain
    • Windows: Credential Locker
    • Linux: Secret Service (GNOME Keyring / KWallet)
    • Fallback: AES-encrypted file with master password (PBKDF2, 480k iterations)
  • Security status visible in Preferences โ†’ Security

๐ŸŒ Platform Integration

  • Transifex โ€” community translations with daily GitHub Actions sync (18 languages)
  • File associations โ€” double-click .po, .ts, .xliff, etc. to open (macOS + Linux)
  • macOS .app bundle with proper menu bar name and icon
  • Linux .desktop file with MIME type definitions

๐ŸŽจ Themes & UI

  • 5 built-in themes including comprehensive dark mode
  • Horizontal/vertical layout toggle โ€” editor on right or below
  • Auto-collapsing side panel โ€” hides when empty
  • Context-aware toolbar โ€” customizable, with overflow menu
  • Colored entry borders โ€” red (untranslated), orange (fuzzy), green (translated)
  • Save flash animation โ€” green border flash confirming save
  • Fullscreen mode (F11)
  • Syntax highlighting for HTML tags, format strings, escape sequences

๐Ÿงช Testing

  • 90 unit tests covering parsers, linter, TM, settings, and security

๐Ÿ› ๏ธ Advanced Tools

  • Macro recording โ€” record and replay translation actions
  • Plugin system โ€” extend functionality
  • Gamification โ€” achievements and streaks
  • Pomodoro timer โ€” built-in focus timer
  • TTS โ€” hear translations read aloud
  • OCR โ€” extract text from images
  • Locale map โ€” visual overview of project languages
  • Burndown charts โ€” track translation progress over time
  • QA profiles โ€” configurable validation rule sets

๐ŸŒ Translations

LinguaEdit is translated via Transifex with 1,487 source strings and 18 languages configured. Translations sync daily via GitHub Actions.

Currently translated:

  • Swedish โ€” 100%

Help translate LinguaEdit into your language! Join us on Transifex โ€” no coding required.


๐Ÿ—๏ธ Building from Source

# Clone
git clone https://github.com/yeager/linguaedit.git
cd linguaedit

# Install in development mode
pip install -e .

# Run
linguaedit-gui

# Compile translations
pyside6-lrelease translations/linguaedit_sv.ts -qm translations/linguaedit_sv.qm

Dependencies

  • Python 3.10+
  • PySide6 >= 6.5
  • Optional: ffmpeg (video subtitle extraction), hunspell (spell checking)

๐Ÿ“ฆ Package Repositories

Debian/Ubuntu (apt)

deb [signed-by=/usr/share/keyrings/yeager-repo.gpg] https://yeager.github.io/debian-repo stable main

RPM (dnf/yum)

https://yeager.github.io/rpm-repo/

See debian-repo and rpm-repo for setup instructions.


๐Ÿ“„ License

GPL-3.0-or-later โ€” see LICENSE.


๐Ÿ‘ค Author

Daniel Nylander โ€” Dedicated contributor to Swedish open-source localization, with translations of Ubuntu, GNU binutils, Ardour, util-linux, Weblate, and many more projects.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

linguaedit-1.8.14.tar.gz (596.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

linguaedit-1.8.14-py3-none-any.whl (635.2 kB view details)

Uploaded Python 3

File details

Details for the file linguaedit-1.8.14.tar.gz.

File metadata

  • Download URL: linguaedit-1.8.14.tar.gz
  • Upload date:
  • Size: 596.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for linguaedit-1.8.14.tar.gz
Algorithm Hash digest
SHA256 b9f2c2ef39797b7ab2259269d52cad57bde5c1fc98a1d434e22817441f68321b
MD5 1e7f0933a16be0e0109c6d07a16e7a9f
BLAKE2b-256 9de4c437dd0652aa582b76077052a1d89f4c1326d09e2a628024a5a0cc2e4693

See more details on using hashes here.

File details

Details for the file linguaedit-1.8.14-py3-none-any.whl.

File metadata

  • Download URL: linguaedit-1.8.14-py3-none-any.whl
  • Upload date:
  • Size: 635.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for linguaedit-1.8.14-py3-none-any.whl
Algorithm Hash digest
SHA256 62294544fc81f0ad9cc69e96ae3fd85641d07f860239e86c40a559264b60ffcc
MD5 cc30b8ac860e22e1e2e2f3b0432206c5
BLAKE2b-256 853c0abf1d73a34e4ae99494dcfc08a1c6b29007fc8fe5006f6dc05601b4990d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page