edx-i18n-tools
edX Internationalization Tools
What it is and what it does
edX i18n Tools is a command-line utility for managing translations in Django projects and apps. It wraps the standard gettext workflow (extraction, compilation, validation) and adds convenience commands for working with Transifex, a translation management platform. The tool reads configuration from a YAML file and operates on .po (Portable Object) translation files, generating .mo (Machine Object) compiled files and providing validation to catch translation errors before deployment.
The package is designed for development teams and translators working on Django-based projects that need to support multiple languages. It handles both Django projects (where config lives at `./conf/locale/config.yaml`) and Django apps (where config is at `./locale/config.yaml`), and can extract strings from Python, JavaScript, and JSX files. It depends on Django, lxml for XML parsing, polib for .po file manipulation, and pyYaml for configuration.
Use it for:
- Extract translatable strings from Django source code and populate .po files as part of a continuous localization workflow.
- Validate .po translation files for syntax errors, missing translations, and tag mismatches before uploading to Transifex.
- Compile .po files into .mo binary format for deployment in production Django applications.
- Push source and translated .po files to Transifex and pull completed translations back into the project.
- Generate test-language (Esperanto) .po files to verify that the extraction and compilation pipeline works correctly.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Command-line tool for extracting, compiling, validating, and managing translations in Django projects and apps, with integration for uploading to and downloading from Transifex.
Yes. The package is actively maintained, has no known vulnerabilities, uses a permissive license, and solves a real problem for Django projects that need multi-language support. Install friction is low and dependencies are standard. It is most useful if you are already using Django and Transifex; if you manage translations differently, you may not need it.
Install
edx-i18n-tools on PyPI
pip
pip install edx-i18n-toolsuv
uv add edx-i18n-toolspoetry
poetry add edx-i18n-toolsInstalling edx-i18n-tools
Before you install
Low install friction with a pure-Python wheel distribution. Actively maintained with a recent release and no known vulnerabilities. Depends on standard libraries (Django, lxml, pyYaml, polib, path) that are widely used and well-supported.
License in practice
Licensed under Apache License 2.0 (permissive), so you can use, modify, and distribute it freely in commercial and open-source projects without copyleft obligations.
Quickstart
pip install edx-i18n-tools
# Extract source strings into .po files
i18n_tool extract
# Validate translation files for errors
i18n_tool validate
# Compile .po files to .mo message files
i18n_tool generate
Requires msgcat (from gettext) to be installed and in PATH for some operations; on macOS, install via `brew install gettext`.
Verify before relying
- Whether the package works with Python versions other than 3.12, given the classifier lists only 3.12 but requires_python is unspecified.
- Current status of Transifex integration and whether it remains compatible with modern Transifex API versions.
Package facts
| License | Apache License 2.0 (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — Django, lxml, path, polib, pyYaml |
| Maintenance | actively maintained — 157 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 79,126/month — #14,378 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: edx_i18n_tools-2.0.0-py2.py3-none-any.whl
Tags
More Linguistic packages
Detects and normalizes text encoding from…
permissive · top 100 on PyPI
tiktokentiktoken is a fast BPE tokenizer that converts…
permissive · top 1,000 on PyPI
chardetDetects character encoding and language in byte…
permissive · top 1,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
tree-sitterPython bindings to the tree-sitter parsing…
permissive · top 1,000 on PyPI
django-extensionsProvides a collection of custom management…
permissive · top 5,000 on PyPI
translate-toolkitTranslate Toolkit converts, validates, and…
copyleft · top 15,000 on PyPI
oslo.i18noslo.i18n provides utilities for handling…
permissive · top 5,000 on PyPI
wagtail-localizeWagtail Localize is a translation plugin for…
permissive · top 15,000 on PyPI
polibpolib reads, writes, and manipulates gettext…
permissive · top 5,000 on PyPI
edx-enterpriseA Django application that provides enterprise…
agpl · top 15,000 on PyPI
edx-ccx-keysProvides opaque key implementations for Custom…
agpl · top 15,000 on PyPI
edx-django-release-utilProvides Django utilities and middleware for…
agpl · top 15,000 on PyPI
babelBabel provides internationalization (i18n) and…
permissive · top 1,000 on PyPI
python-i18nProvides internationalization (i18n)…
permissive · top 15,000 on PyPI