Skip to main content

Hatch build hook plugin for GNU gettext

Project description

Hatch Gettext

Package PyPI - Python Version PyPI - Version
Meta Hatch project Ruff GitButler Checked with mypy License: GPL v3 GitHub Sponsors

This provides a build hook plugin for Hatch that compiles multi-lingual messages with GNU gettext's tools msgfmt and (optionally) translates files using gettext's intltool-merge.

Table of Contents

Configuration

The build hook plugin name is gettext.

Calling the plugin

Modify pyproject.toml to include the plugin as a build dependency:

[build-system]
requires = ["hatchling", "hatch-gettext"]
build-backend = "hatchling.build"

Compiling messages with msgfmt

This plugin requires .mo files be created; it also requires that the directory storing them is within the project's base directory, and is not equal to the project's base directory or the directory in which po files are sourced.

For example, for a project named myproject, and a src layout src/myproject, an acceptable directory in which to store the LC_MESSAGES/myproject.mo files would be src/myproject/locale

[tool.hatch.build.hooks.gettext]
locale_directory = "src/myproject/locale"

Optionally, specify values for the gexttext output name and the source directory where po files are found:

[tool.hatch.build.hooks.gettext]
locale_directory = "src/myproject/locale"
i18n_name = "myproject" 
po_directory = "po-files"

If i18n_name is not specified, the name in [project] in the pyproject.toml is used. If po_directory is not specified, the directory po is used.

Translating files using intltool-merge

This plugin allows for but does not mandate translating .xml and .desktop files using intltool-merge. Using [tool.hatch.build.hooks.gettext.files], specify the destination directories for the translated files on the left, and arrays of source files on the right. For example:

[tool.hatch.build.hooks.gettext.files]
"share/applications" = ["data/net.myproject.desktop.in"]
"share/solid/actions" = ["data/kde/net.myproject.desktop.in"]
"share/metainfo" = ["data/net.myproject.metainfo.xml.in"]

Cleaning output files

The plugin includes logic to remove the files it outputs using hatch's clean hook. As well as individual files, any output directories created will also be removed, as long as these directories do not contain files created by something other than this plugin.

License

hatch-gettext is distributed under the terms of the GPL-3.0-or-later license.

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

hatch_gettext-0.5.0.tar.gz (19.6 kB view hashes)

Uploaded Source

Built Distribution

hatch_gettext-0.5.0-py3-none-any.whl (19.8 kB view hashes)

Uploaded Python 3

Supported by

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