Automatic translator for gettext-based projects using AI APIs
LangForge is a desktop application that automates the translation of gettext projects (.po/.pot files) into 29 languages using AI-powered translation APIs. Built with GTK 4 and libadwaita, it follows modern GNOME Human Interface Guidelines for a native Linux desktop experience.
Point LangForge at any Python project that uses gettext, and it will:
- Scan the project for translatable strings
- Extract strings into a
.pottemplate - Translate into 29 languages via your chosen API
- Compile
.mobinary files ready for distribution
- 🌍 29 Languages — Translate to Bulgarian, Czech, Danish, German, Greek, Estonian, Finnish, French, Hebrew, Croatian, Hungarian, Icelandic, Italian, Japanese, Korean, Dutch, Norwegian, Polish, Portuguese, Brazilian Portuguese, Romanian, Russian, Slovak, Swedish, Turkish, Ukrainian, Chinese, Spanish, and English
- 🤖 Multiple AI APIs — DeepL, Groq, Gemini, OpenRouter, Mistral, and LibreTranslate
- 💸 Free & Paid Tiers — Use free API tiers or unlock paid APIs for higher limits
- 📦 Auto-compile — Optionally compile
.po→.moafter translation - 🎯 Drag & Drop — Drop a project folder directly onto the window
- 📊 Real-time Progress — Circular progress ring with per-language status indicators
- 🎨 Modern UI — Native Adwaita split-view layout with card-style controls
cd pkgbuild
makepkg -si# Dependencies
sudo pacman -S python gtk4 libadwaita python-gobject
# Install
sudo cp -r usr/share/langforge /usr/share/
sudo cp usr/share/applications/org.communitybig.langforge.desktop /usr/share/applications/
sudo cp usr/share/icons/hicolor/scalable/apps/langforge.svg /usr/share/icons/hicolor/scalable/apps/
sudo cp usr/bin/langforge /usr/bin/
sudo chmod +x /usr/bin/langforgepython3 usr/share/langforge/main.py- Launch LangForge from your application menu or terminal
- Configure the translation API in the sidebar (Type: Free/Paid, Provider)
- Select a project folder via button or drag & drop
- Click "Start Translation" to begin
- Monitor real-time progress for each language
Click API Settings in the sidebar to configure your API keys:
| Provider | Tier | Key Required |
|---|---|---|
| DeepL Free | Free | ✅ |
| LibreTranslate | Free | ❌ |
| Groq | Free | ✅ |
| Gemini Free | Free | ✅ |
| OpenRouter | Paid | ✅ |
| Mistral | Paid | ✅ |
LangForge/
├── usr/
│ ├── bin/langforge # Entry point script
│ └── share/
│ ├── langforge/
│ │ ├── main.py # Application entry point
│ │ ├── api/ # API integrations
│ │ │ ├── base.py # Base API class
│ │ │ ├── factory.py # API factory
│ │ │ ├── free_apis.py # Free tier APIs
│ │ │ └── paid_apis.py # Paid tier APIs
│ │ ├── config/
│ │ │ └── settings.py # App settings management
│ │ ├── core/
│ │ │ ├── compiler.py # .mo file compiler
│ │ │ ├── extractor.py # String extractor
│ │ │ ├── languages.py # Supported languages
│ │ │ ├── scanner.py # Project scanner
│ │ │ └── translator.py # Translation engine
│ │ ├── ui/
│ │ │ ├── main_window.py # Main window (GTK4/Adwaita)
│ │ │ ├── settings_dialog.py # Settings dialog
│ │ │ └── style.css # Custom styles
│ │ └── utils/
│ │ └── i18n.py # Internationalization
│ ├── applications/
│ │ └── org.communitybig.langforge.desktop
│ └── icons/
│ └── hicolor/scalable/apps/langforge.svg
├── locale/ # Translation files (29 languages)
├── pkgbuild/ # Arch Linux packaging
├── LICENSE
└── README.md
| Dependency | Version |
|---|---|
| Python | ≥ 3.10 |
| GTK | 4.0 |
| libadwaita | ≥ 1.4 |
| PyGObject | ≥ 3.42 |
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License — see the LICENSE file for details.
Developed by BigLinux team.
Made with ❤️ for the open-source community