Translate gettext (.po) files using AI models. Supports OpenAI, Azure OpenAI, Anthropic/Claude, and DeepSeek with automatic AI translation tagging.
# Install
pip install gpt-po-translator
# Set API key
export OPENAI_API_KEY='your_api_key_here'
# Auto-detect and translate all languages
gpt-po-translator --folder ./locales --bulk- Multiple AI providers - OpenAI, Azure OpenAI, Anthropic/Claude, DeepSeek
- AI translation tracking - Auto-tags AI-generated translations with
#. AI-generatedcomments - Bulk processing - Efficient batch translation for large files
- Smart language detection - Auto-detects target languages from folder structure
- Fuzzy entry handling - Translates and fixes fuzzy entries properly
- Docker ready - Available as container for easy deployment
pip install gpt-po-translatordocker pull ghcr.io/pescheckit/python-gpt-po:latestgit clone https://github.com/pescheckit/python-gpt-po.git
cd python-gpt-po
pip install -e .Choose your AI provider and set the corresponding API key:
# OpenAI
export OPENAI_API_KEY='your_key'
# Anthropic/Claude
export ANTHROPIC_API_KEY='your_key'
# DeepSeek
export DEEPSEEK_API_KEY='your_key'
# Azure OpenAI
export AZURE_OPENAI_API_KEY='your_key'
export AZURE_OPENAI_ENDPOINT='https://your-resource.openai.azure.com/'
export AZURE_OPENAI_API_VERSION='2024-02-01'# Auto-detect languages from PO files (recommended)
gpt-po-translator --folder ./locales --bulk -v
# Or specify languages explicitly
gpt-po-translator --folder ./locales --lang de,fr,es --bulk -v
# Single language with progress information
gpt-po-translator --folder ./locales --lang de -v# Use Claude (Anthropic) - auto-detect languages
gpt-po-translator --provider anthropic --folder ./locales --bulk
# Use DeepSeek with specific languages
gpt-po-translator --provider deepseek --folder ./locales --lang de
# Use Azure OpenAI with auto-detection
gpt-po-translator --provider azure_openai --folder ./locales --bulk# Basic usage
docker run -v $(pwd):/data \
-e OPENAI_API_KEY="your_key" \
ghcr.io/pescheckit/python-gpt-po:latest \
--folder /data --bulk
# With Azure OpenAI
docker run -v $(pwd):/data \
-e AZURE_OPENAI_API_KEY="your_key" \
-e AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/" \
-e AZURE_OPENAI_API_VERSION="2024-02-01" \
ghcr.io/pescheckit/python-gpt-po:latest \
--provider azure_openai --folder /data --lang deAll AI translations are automatically tagged for transparency and compliance:
#. AI-generated
msgid "Hello"
msgstr "Hallo"This helps you:
- Track which translations are AI vs human-generated
- Comply with AI content disclosure requirements
- Manage incremental translation workflows
Note: Django's makemessages removes these comments but preserves translations. Re-run the translator after makemessages to restore tags.
| Option | Description |
|---|---|
--folder |
Path to .po files |
--lang |
Target languages (e.g., de,fr,es, fr_CA, pt_BR) |
--provider |
AI provider: openai, azure_openai, anthropic, deepseek |
--bulk |
Enable batch translation (recommended for large files) |
--bulksize |
Entries per batch (default: 50) |
--model |
Specific model to use |
--list-models |
Show available models |
--fix-fuzzy |
Translate fuzzy entries |
--folder-language |
Auto-detect languages from folders |
--no-ai-comment |
Disable AI tagging |
-v, --verbose |
Show progress information (use -vv for debug) |
-q, --quiet |
Only show errors |
--version |
Show version and exit |
git clone https://github.com/pescheckit/python-gpt-po.git
cd python-gpt-po
docker build -t python-gpt-po .# Local
python -m pytest
# Docker
docker run --rm -v $(pwd):/app -w /app --entrypoint python python-gpt-po -m pytest -v- Python 3.9+
- Dependencies:
polib,openai,anthropic,requests,tenacity
- Advanced Usage Guide - Comprehensive options and mechanics
- Development Guide - Contributing guidelines
- GitHub Issues - Bug reports and feature requests
MIT License - See LICENSE for details.