Django translation management and auto-translation tools
Project description
django-po-tools
Command-line tools to manage Django translation files (.po/.mo) and auto-translate them using Google Translate.
Installation
pip install django-po-tools
Commands
Two commands are installed in the virtualenv:
djmessages— orchestratesmakemessages,compilemessages, collect/install/remove workflows across multiple Django appspo-auto-translate— auto-translates untranslated entries in a single.pofile using Google Translate (with MyMemory as fallback)
djmessages
Run from the root of your Django project (where manage.py lives).
Configuration
On first run, djmessages creates a djmessages.conf file in the current directory and exits. Edit it before running again:
[general]
project=myproject
settings_module=myproject.settings
translations_target_folder=../translations
apps=app1, app2
| Key | Description |
|---|---|
project |
Django project name |
settings_module |
Dotted path to your Django settings module |
translations_target_folder |
Folder used by collect / install commands |
apps |
Comma-separated list of Django app names |
Available languages are read automatically from LANGUAGES in your Django settings (excluding the default LANGUAGE_CODE).
Usage
djmessages <command> [-a <app> [app ...]] [-l <lang> [lang ...]]
If -a or -l are omitted, all configured apps or languages are used.
Commands
| Command | Description |
|---|---|
make |
Run makemessages — extract translatable strings and create/update .po files |
compile |
Run compilemessages — compile .po files into binary .mo files |
collect |
Copy .po files into translations_target_folder for external translation |
install |
Copy .po files back from translations_target_folder into each app's locale/ |
remove |
Delete the locale/<lang>/ folder for the given apps |
autotranslate |
Auto-translate untranslated entries in .po files (calls po-auto-translate) |
Options
-a, --apps One or more app names, or "all"
-l, --languages One or more language codes, or "all"
-f, --fuzzy Mark new auto-translations as fuzzy
-d, --dry-run Print commands without executing them
-v, --verbosity Verbosity level (0-3, default 2)
Examples
# Extract strings for Italian and Spanish in two apps
djmessages make -a frontend main -l it es
# Compile all languages for all apps (options omitted = all)
djmessages compile
# Auto-translate missing strings in one app, mark as fuzzy for review
djmessages autotranslate -a frontend -l it es --fuzzy
# Dry-run: see what collect would do without touching files
djmessages collect --dry-run
po-auto-translate
Translates all untranslated entries in a single .po file. The target language is inferred from the file path (.../locale/<lang>/LC_MESSAGES/django.po).
po-auto-translate path/to/locale/it/LC_MESSAGES/django.po
Options
--source-language Source language code (default: en)
-f, --fuzzy Mark new translations as fuzzy
-d, --dry-run Translate and print results without saving
Translation backends
- Google Translate (
googletrans) — primary - MyMemory (free REST API, no key required) — automatic fallback if Google fails
Format-string placeholders (%(name)s, {var}, etc.) are protected before translation and restored afterwards.
collect / install workflow
Useful when translations are done externally (e.g. by a translation agency):
myapp/locale/it/LC_MESSAGES/django.po
→ collect →
translations/it/it_myapp.po ← send to translator
→ install →
myapp/locale/it/LC_MESSAGES/django.po
The collect command copies .po files into a flat, language-grouped folder. The install command is the reverse: it copies them back into the correct locale/ paths and removes stale .mo files.
License
GPL — Copyright (c) 2016-2026, Brainstorm S.r.l.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_po_tools-1.5.7.tar.gz.
File metadata
- Download URL: django_po_tools-1.5.7.tar.gz
- Upload date:
- Size: 16.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e20175613c2280bf1b41b437e32f8864195090651da8b0e16efca522d831b82
|
|
| MD5 |
eadf1fa14e6130539b0580e51efa4d36
|
|
| BLAKE2b-256 |
11c4fd42fa2913f0d27eb905ff66b2984603a266494b66e4a8772a4b790060b9
|
File details
Details for the file django_po_tools-1.5.7-py3-none-any.whl.
File metadata
- Download URL: django_po_tools-1.5.7-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22edd364108f65f83a265168e4ddc9e67e80c4d0db7d58130be476ade16771ea
|
|
| MD5 |
8ebed5296f83391ec6afa0d35c6a7335
|
|
| BLAKE2b-256 |
8b0e013ccfaa6ba6b52d396337fdd85cef1fb1239fc9c45077fd81521f4100fb
|