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
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 |
# 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# 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# Install with pipx (isolated environment) - RECOMMENDED
pipx install linguaedit
# Or with pip
pip install linguaedit
# Run
linguaedit-gui| 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 extractionhunspellβ spell checkinggitβ version control integration
| 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 |
- 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
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
| 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 |
- 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
- 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
- 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_translateonPATH.
- 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
- 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 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
- 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
- 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
- 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
.qmfiles remain artifact-only and.tsfiles remain source-only
- Transifex β community translations with daily GitHub Actions sync (18 languages)
- File associations β double-click
.po,.ts,.xliff, etc. to open (macOS + Linux) - macOS
.appbundle with proper menu bar name and icon - Linux
.desktopfile with MIME type definitions
- 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
- 125+ tests covering parsers, linter, TM, settings, security, GUI regressions, recovery, terminology, and packaging invariants
- 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
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.
# 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 --wheelCompiled .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.
- Python 3.10+
- PySide6 >= 6.5
- Optional:
ffmpeg(video subtitle extraction),hunspell(spell checking)
# 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.txtRepository: 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 linguaeditRepository: 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 linguaeditSee debian-repo and rpm-repo for setup instructions.
GPL-3.0-or-later β see LICENSE.
Daniel Nylander β Dedicated contributor to Swedish open-source localization, with translations of Ubuntu, GNU binutils, Ardour, util-linux, Weblate, and many more projects.
- π danielnylander.se
- π github.com/yeager
This app is translated via Transifex. Help translate it into your language!
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.
- Create a free account at Transifex
- Join the danielnylander organization
- Start translating!
Translations are automatically synced via GitHub Actions.





