Skip to main content

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 — orchestrates makemessages, compilemessages, collect/install/remove workflows across multiple Django apps
  • po-auto-translate — auto-translates untranslated entries in a single .po file 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

  1. Google Translate (googletrans) — primary
  2. 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_po_tools-1.5.7.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_po_tools-1.5.7-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

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

Hashes for django_po_tools-1.5.7.tar.gz
Algorithm Hash digest
SHA256 3e20175613c2280bf1b41b437e32f8864195090651da8b0e16efca522d831b82
MD5 eadf1fa14e6130539b0580e51efa4d36
BLAKE2b-256 11c4fd42fa2913f0d27eb905ff66b2984603a266494b66e4a8772a4b790060b9

See more details on using hashes here.

File details

Details for the file django_po_tools-1.5.7-py3-none-any.whl.

File metadata

File hashes

Hashes for django_po_tools-1.5.7-py3-none-any.whl
Algorithm Hash digest
SHA256 22edd364108f65f83a265168e4ddc9e67e80c4d0db7d58130be476ade16771ea
MD5 8ebed5296f83391ec6afa0d35c6a7335
BLAKE2b-256 8b0e013ccfaa6ba6b52d396337fdd85cef1fb1239fc9c45077fd81521f4100fb

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.5.7 This release

2 files

1.5.6

2 files

1.5.5

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page