Skip to main content

Dennis is a set of utilities for working with PO files to ease development and improve quality. Translate POT files to find problems with localization in your code. Lint PO files for common problems like variable formatting, mismatched HTML, missing variables, etc.

dennis-cmd has the following subcommands:

  • lint: Lints PO and POT files for problems including errors that can cause your production system to crash and problems in strings that can lead to poor translations.

    The system allows for defining other variable formats.

  • status: Get a high-level status of a PO file including a list of unstranslated strings.

  • translate: Translates strings in PO files into something else! Comes with an HTML extractor (tokenizes strings so that only the text is translated) and a bunch of translations like Pirate!.

    This is helpful for l10n testing, development, finding unicode/layout problems, amazing your friends, hilarious April 1st shenanigans, etc.

    Specify the tokenizer/transform pipeline you want to use that combines things. Zombie? Sure! Shouty Zombie? Ok! Manic shouty Dubstep? Bring it on!

    This also works on strings passed in as command line arguments and as stdin—it doesn’t have to be a PO file or in a PO format format. For example, Dennis uses Dennis to translate all Dennis commit messages into Pirate!. That’s how cool Dennis is!

Quick start

Install:

$ pip install dennis

Lint a PO file for problems:

$ dennis-cmd lint locale/fr/LC_MESSAGES/messages.po

Lint all your PO files for errors:

$ dennis-cmd lint --errorsonly locale/

Lint all your PO files and fail if there are any errors or warnings:

$ dennis-cmd lint --strict locale/

Lint a POT file for problems:

$ dennis-cmd lint locale/templates/LC_MESSAGES/messages.pot

Translate a PO file in place into Pirate!:

$ dennis-cmd translate --pipeline=html,pirate \
    locale/xx/LC_MESSAGES/messages.po

Get help:

$ dennis-cmd

Project details

Code:

https://github.com/mozilla/dennis

Documentation:

https://dennis.readthedocs.io/

Issue tracker:

https://github.com/mozilla/dennis/issues

License:

BSD 3-clause; see LICENSE file

Why is it called Dennis?

This is how @willkg names his software projects.

Metadata

Release files for dennis 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dennis 1.3.0
File Size Uploaded Provenance Actions
dennis-1.3.0.tar.gz 46.8 kB Without provenance Details for dennis-1.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dennis 1.3.0
File Interpreter ABI Platform Actions
dennis-1.3.0-py3-none-any.whl Python 3 none any Details for dennis-1.3.0-py3-none-any.whl

Total release size: 76.9 kB

Release files / dennis-1.3.0.tar.gz

Download URL dennis-1.3.0.tar.gz
Size 46.8 kB
Tags Source
SHA-256 checksum
How to use checksums
48be916cb7471c55542470475a9e0a169d91c9b584fa289e85ccd8bccd53e3e9
BLAKE2b-256 checksum
How to use checksums
4b6c9170d6388c4edcf84478b62660593cfd16b087f50ff0bce33c238554f731
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / dennis-1.3.0-py3-none-any.whl

Download URL dennis-1.3.0-py3-none-any.whl
Size 30.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f6f06ffc44bd95ff4a6f898f3da4e0972fa4faefd4e9eb835513dca76aa20bb6
BLAKE2b-256 checksum
How to use checksums
88d48fc1da9a0b70e3a51eb411a5dca9a17aca220fb3c13ab907024875b1d07f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Security for dennis 1.3.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page