Skip to main content

Utilities for working with gettext PO and POT files to ease development and improve localization quality

Project description

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 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.

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

dennis-1.2.0.tar.gz (45.1 kB view details)

Uploaded Source

Built Distribution

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

dennis-1.2.0-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file dennis-1.2.0.tar.gz.

File metadata

  • Download URL: dennis-1.2.0.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for dennis-1.2.0.tar.gz
Algorithm Hash digest
SHA256 826d447ed9b3d3c9dec0d550a8647a90dfc8932ac5b8a1a619a0c30c7d63d79b
MD5 42087b04214731b47fd83144f9cbde5d
BLAKE2b-256 f2fc267be5d6baeba6064b757c6dbcb48f1ae98b21f9d7caf02d1e1c228acf33

See more details on using hashes here.

File details

Details for the file dennis-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: dennis-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for dennis-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14cf763b9d55d27599d4f7f1061b85eabd342b28b0abab90d1dad1f4297c0346
MD5 4ba368ad29f14e2e5ee9dc174b317f14
BLAKE2b-256 b5908a4da1a6cdc7fd23860185d6c6cb0cd79aecb5a88f7c549527b00b2faf01

See more details on using hashes here.

Supported by

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