Translation Tool is a Windows desktop application that simplifies the translation workflow for C# projects and Enigma2 plugins. It extracts translatable strings, translates them using Google Translate, and compiles them into the required format β all with a user-friendly GUI.
- Scans
.csfiles recursively forGetTranslation("...")keys. - Translates keys into 95+ languages using Google Translate API.
- Generates
.lngfiles ready for use in your application. - Preserves existing translations and removes obsolete keys.
- Extracts strings from
.pyfiles andsetup.xml. - Generates/updates
.potand.pofiles. - Auto-translates empty
msgstrentries. - Compiles
.mofiles ready for Enigma2 devices.
- Dual Mode: Switch between C# and Enigma2 modes.
- Language Selection: Choose from over 90 languages.
- Select / Unselect All: Quickly manage language selection.
- Smart Cache: Saves translations locally to avoid repeated API calls.
- Import Cache: Import translations from Python scripts.
- Delete Cache: Clear the cache to force re-translation.
- Progress Monitor: Real-time progress, status, and elapsed time.
- Stop Button: Cancel operations at any time.
- Save Log: Export the log to a text file.
- Custom Output Folder: Choose where to save translated files.
- Logo Click: Click the logo to open the GitHub repository.
![]() Preview 1 |
![]() Preview 2 |
![]() Preview 3 |
- Windows (7, 8, 10, 11)
- .NET 10.0 Runtime (or newer)
- No Python required β everything is self-contained in C#.
- Launch the tool and select "C# Translation Project" from the Mode dropdown.
- Click "Browse..." and select your project folder (containing
.csfiles). - (Optional) Choose a custom output folder.
- Click "Select Languages" and choose the languages you need.
- Click "Start" to begin extraction and translation.
- Find your
.lngfiles in the output folder.
- Launch the tool and select "Enigma2 Plugin Manager" from the Mode dropdown.
- Click "Browse..." and select your plugin folder (containing
__init__.pyandlocale/). - Select the languages you want.
- Use the buttons:
- Extract Strings β Scan Python and XML files.
- Auto Translate β Translate empty
msgstrentries. - Compile .mo β Compile
.pofiles to.mo. - Full Update β Run all steps in one click.
- Monitor progress and wait for completion.
By default, the tool uses the folder name as the plugin name for .pot, .po, and .mo files.
However, Enigma2 plugins often have a PluginLanguageDomain defined in __init__.py that does not match the folder name.
Example:
- Plugin folder:
WeatherPlugin - PluginLanguageDomain:
foreca
If you don't change the name, the tool will generate:
locale/foreca.pot # β Wrong
locale/it/LC_MESSAGES/foreca.po
But the plugin expects:
locale/WeatherPlugin.pot # β
Correct
locale/it/LC_MESSAGES/WeatherPlugin.po
To fix this:
- In the Enigma2 Plugin Manager panel, locate the "Plugin name (optional)" text box.
- Enter the exact name used in your
__init__.py(e.g.,WeatherPlugin). - Leave it empty to use the folder name.
The tool will then generate all files with your custom name.
Note: This setting is applied during:
- Auto Translate
- Compile .mo
- Full Update
If you change the name after translating, you must Delete Cache and re-translate to avoid mismatches.
Each language gets its own .lng file (e.g., Italiano.lng, Deutsch.lng) with the format:
Key1: Translated text
Key2: Another translation
The tool generates the standard gettext structure:
plugin/locale/
βββ it/
β βββ LC_MESSAGES/
β βββ plugin.po
β βββ plugin.mo
βββ de/
βββ LC_MESSAGES/
βββ plugin.po
βββ plugin.mo
- Use Cache: Enable/disable the translation cache.
- Delete Cache: Remove all cached translations (forces re-translation).
- Import Cache: Import translations from a Python script's
translation_cache.jsonfile. This is useful if you already have translations from the Python version.
TranslationProject/
βββ TranslationProject.exe # Main executable
βββ Google-AI.png # Logo (optional)
βββ app.ico # Application icon
βββ translation_cache.json # Cache file (auto-generated)
βββ locale/ # Enigma2 translation files
βββ it/
β βββ LC_MESSAGES/
β βββ plugin.po
β βββ plugin.mo
βββ ...
- Fix: Issue on .po utf code.
- Fix: Issue on .po utf code.
- Added: Full Enigma2 plugin support (extract, translate, compile).
- Added: Dual mode selector (C# / Enigma2).
- Added: Language selection dialog with Select All / Unselect All.
- Added: Progress monitor with status, counter, and timer.
- Added: Stop button to cancel operations.
- Added: Import/Delete cache functionality.
- Added: Save log to file.
- Added: Logo with clickable link to GitHub.
- Improved: Cache handling and performance.
- Fixed: Various UI and stability issues.
- Extract
GetTranslation("...")keys from C# projects. - Translate into 95+ languages using Google Translate.
- Generate
.lngfiles. - Persistent cache to avoid repeated translations.
- GUI with real-time log and progress bar.
- Forum: LinuxSat-Support
- GitHub: OwnerPlugins/TranslationProject
- Developer: Lululla
This project is licensed under the GPLv3 License β see the LICENSE file for details.
Special thanks to the Enigma2 community, CORVOBOYS, and all testers for their support and feedback.
Enjoy! π
β Lululla Β© 2026


