Skip to content

Latest commit

Β 

History

240 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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 & Downloads

πŸš€ Latest Release (v1.8.18)

Download ready-to-use binaries from GitHub Releases:

Platform Download Size Installation
🍎 macOS (Apple Silicon) LinguaEdit-v1.8.18-macOS-arm64.zip β€” Unzip and move to Applications
🍎 macOS (Intel) LinguaEdit-v1.8.18-macOS-x86_64.zip β€” Unzip and move to Applications
πŸͺŸ Windows LinguaEdit-1.8.18-Setup.exe β€” Run the Inno Setup installer
🐧 Linux linguaedit_1.8.18_all.deb β€” Install with your package manager

🐧 Linux Package Managers

APT (Debian/Ubuntu)

# Add repository
echo "deb [trusted=yes] 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

DNF (Fedora/RHEL)

# Add repository
sudo tee /etc/yum.repos.d/yeager.repo > /dev/null << 'EOF'
[yeager]
name=Yeager Repository
baseurl=https://yeager.github.io/rpm-repo/packages
enabled=1
gpgcheck=0
EOF

# Install
sudo dnf install linguaedit

🐍 Python pip/pipx (All Platforms)

# Install with pipx (isolated environment) - RECOMMENDED
pipx install linguaedit

# Or with pip
pip install linguaedit

# Run
linguaedit-gui

πŸ“‹ System Requirements

Platform Requirements
macOS macOS 11+ (Big Sur), Apple Silicon or Intel
Windows Windows 10+, Python 3.10+ (for portable version)
Linux Python 3.10+, Qt6 libraries

Optional dependencies:

  • ffmpeg β€” video subtitle extraction
  • hunspell β€” spell checking
  • git β€” version control integration

✨ 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+Alt+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 untranslated
Alt+Shift+↑/↓ Previous/next fuzzy
Ctrl+Enter Save + next untranslated
Ctrl+B Copy source to translation
Tab Save + next entry
Shift+Tab Save + previous entry
Ctrl+Alt+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+Shift+V Run linter
Ctrl+R Review Mode
Ctrl+Shift+A AI Review

🧠 Translation Memory (TM)

  • SQLite-based, zero configuration
  • Fuzzy matching with configurable threshold
  • Project-origin context weighting and match provenance
  • 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, TSV, and TBX
  • Approved variants and forbidden terminology
  • 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
  • Heuristic confidence estimates per entry, labelled with method and evidence level
  • Supported engines include DeepL, OpenAI, Google, Lingva, MyMemory, Argos Translate and OpenNMT-py. Argos and OpenNMT run locally without API keys; OpenNMT requires a compatible model file and onmt_translate on PATH.

βœ… 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
  • Automatic save-time QA β€” errors are shown before a catalog is written
  • Format profiles β€” dedicated Qt, Android, subtitle, formal, and informal rules
  • Accessibility audit β€” missing labels and duplicate mnemonic keys
  • Project health β€” explainable score covering coverage, stale text, QA, terminology, and accessibility

πŸ“Š 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
  • Secret scanning before LinguaEdit stages a file
  • 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
  • Explicit HTTPS host policy, private-network blocking, redacted errors, and no credential persistence in project files

πŸ›Ÿ Local Recovery & Build Inspection

  • Atomic crash-recovery snapshots every 30 seconds with user-only file permissions
  • Recovery prompt when a newer unsaved local snapshot exists
  • Placeholder-safe pseudolocalization for layout testing, including RTL wrapping
  • Translation build inspector explaining BUILD/SKIP, completion, and the strict 20% threshold
  • Compiled .qm files remain artifact-only and .ts files remain source-only

🌐 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

  • 125+ tests covering parsers, linter, TM, settings, security, GUI regressions, recovery, terminology, and packaging invariants

πŸ› οΈ Advanced Tools

  • Macro recording β€” record and replay translation actions
  • Versioned plugin API 1.0 β€” extend linting, suggestions, and transformations with compatibility checks
  • 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
  • QA profiles β€” configurable validation rule sets

🌍 Translations

LinguaEdit is translated via Transifex with about 1,600 catalog entries 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

# Build wheel (compiles .ts to .qm inside the artifact)
python -m build --wheel

Compiled .qm files are build artifacts and are not stored in the source tree. A language is included only when its .ts catalog is more than 20% translated.

Dependencies

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

Cross-Platform Builds

# Build for macOS (from macOS)
pyinstaller LinguaEdit.spec

# Create DMG
hdiutil create -srcfolder "dist/LinguaEdit.app" -volname "LinguaEdit" "LinguaEdit.dmg"

# Build for Windows (requires Wine or Windows machine)
pyinstaller LinguaEdit-windows.spec

# Create portable version (any platform)
zip -r LinguaEdit-portable.zip src/ resources/ requirements.txt

πŸ“¦ Package Repositories

Debian/Ubuntu (apt)

Repository: https://yeager.github.io/debian-repo/

# Quick install:
echo "deb [trusted=yes] https://yeager.github.io/debian-repo/ stable main" | sudo tee /etc/apt/sources.list.d/yeager.list
sudo apt update && sudo apt install linguaedit

RPM (dnf/yum)

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

# Quick install:
sudo tee /etc/yum.repos.d/yeager.repo > /dev/null << 'EOF'
[yeager]
name=Yeager Repository
baseurl=https://yeager.github.io/rpm-repo/packages
enabled=1
gpgcheck=0
EOF
sudo dnf install linguaedit

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.

🌍 Contributing Translations

This app is translated via Transifex. Help translate it into your language!

β†’ Translate on Transifex

Builds currently include Swedish, Danish, Japanese, Korean, Polish, and Simplified Chinese. Additional languages are included automatically as soon as their catalog is more than 20% translated.

For Translators

  1. Create a free account at Transifex
  2. Join the danielnylander organization
  3. Start translating!

Translations are automatically synced via GitHub Actions.

About

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

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages