Skip to content

yeager/linguaedit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

219 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.14)

Download ready-to-use binaries from GitHub Releases:

Platform Download Size Installation
🍎 macOS LinguaEdit-1.8.14-macOS-arm64.dmg 64MB Drag to Applications
🪟 Windows LinguaEdit-1.8.14-Windows-Portable.zip 1.5MB Unzip and run LinguaEdit.bat
🐧 Linux Package managers (see below) ~300KB apt install linguaedit

🐧 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+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)

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

Currently supported: Swedish (sv). More languages welcome!

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

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages