setuptools plugin for gettext
Compile .po files into .mo files.
This plugin adds build_mo, clean_mo and install_mo subcommands for
setup.py as well as hooking those into standard commands.
Usage
By default, setuptools_gettext compiles and installs mo files when there is a
po directory present that contains .po files. It also supports the
standard gettext layout with locale/*/LC_MESSAGES/*.po files. If po is
absent and a top-level locale directory contains standard gettext catalogs,
that directory is used automatically.
By default, the install_mo command installs compiled catalogs under
share/locale to preserve compatibility with earlier releases. Django apps
and other packages that load catalogs from package data can opt into package
installation with install_layout = "package".
You can override these settings in pyproject.toml:
[build-system]
requires = ["setuptools", "setuptools-gettext"]
...
[tool.setuptools-gettext]
# directory in which the .po files can be found
source_dir = "po"
# directory in which the generated .mo files are placed when building
build_dir = "breezy/locale"
# compiler to use: "auto", "msgfmt", or "translate-toolkit"
compiler = "auto"
# install compiled catalogs below share/locale or inside a package
install_layout = "share"
For standard gettext layouts, point both directories at the locale tree:
[tool.setuptools-gettext]
source_dir = "breezy/locale"
build_dir = "breezy/locale"
Flat po/de.po files compile to
<build_dir>/de/LC_MESSAGES/<project-name>.mo by default. Standard
locale/de/LC_MESSAGES/django.po files compile to
<build_dir>/de/LC_MESSAGES/django.mo by default. Passing
--output-base overrides the output name for both layouts.
For Django apps, keep the locale directory inside the app package and use
the package install layout:
[tool.setuptools-gettext]
source_dir = "myapp/locale"
build_dir = "myapp/locale"
install_layout = "package"
With this configuration, myapp/locale/de/LC_MESSAGES/django.po compiles to
myapp/locale/de/LC_MESSAGES/django.mo and is included as package data when
building the package.
Compilation tool
By default, either msgfmt or the translate-toolkit package is used to
compile the .po files into .mo files - whichever is available.
Set compiler = "msgfmt" or compiler = "translate-toolkit" in
[tool.setuptools-gettext] to force a compiler from pyproject.toml.
Use compiler = "auto" to keep the default automatic detection.
The --msgfmt option can be used to force the use of msgfmt, and the
--translate-toolkit option can be used to force the use of the
translate-toolkit. Command line options take precedence over the
pyproject.toml setting.
At the moment, msgfmt is preferred. In the future, the translate-toolkit
will become the default.
You can use the translate-toolkit extra to install the translate-toolkit
package.
Metadata
Release files for setuptools-gettext 0.1.19
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| setuptools_gettext-0.1.19.tar.gz | 23.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| setuptools_gettext-0.1.19-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.7 kB
Release files / setuptools_gettext-0.1.19.tar.gz
| Download URL | setuptools_gettext-0.1.19.tar.gz |
|---|---|
| Size | 23.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
233779932b1d0270027b4644f7ccfaba3005a3732bb083b55ea052d14524c8b0
|
|
BLAKE2b-256 checksum How to use checksums |
04dd0d9431da8c497696201ac55f46218411f2cc43dfe809891ca9e7bccd7897
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency logRelease files / setuptools_gettext-0.1.19-py3-none-any.whl
| Download URL | setuptools_gettext-0.1.19-py3-none-any.whl |
|---|---|
| Size | 19.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b19c6faf046577d710263bfc474a70028e108375fa599cdf8f5d3952cb44d7ec
|
|
BLAKE2b-256 checksum How to use checksums |
c6ccbdaa149015664c0dda7b2e6d1bd6ce4b8786389849e2210f438f057aa686
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.
Transparency log