| Package | |
| Meta |
This provides a build hook plugin
for Hatch that compiles multi-lingual messages with GNU
gettext's tools msgfmt. It can also (optionally) use intltool to:
- translate .xml and .desktop files
- search for left out files
- regenerate the .pot template
- display a status report for all translations
Table of Contents
The build hook plugin
name is gettext.
Modify pyproject.toml to include the plugin as a build dependency:
[build-system]
requires = ["hatchling", "hatch-gettext"]
build-backend = "hatchling.build"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. The mo file directory is set using locale-directory, which is
required.
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.
With every source distribution (sdist) build, to search for left out files,
which should have been listed in POTFILES.in or POTFILES.skip, set
identify-left-out to true (the default value is false):
[tool.hatch.build.hooks.gettext]
locale-directory = "src/myproject/locale"
identify-left-out = trueTo regenerate the .pot template with every sdist build, set
regenerate-template to true (the default value is false):
[tool.hatch.build.hooks.gettext]
locale-directory = "src/myproject/locale"
regenerate-template = trueTo display a status report for all translations, set show-report to true
(the default value is false):
[tool.hatch.build.hooks.gettext]
locale-directory = "src/myproject/locale"
show-report = trueThis 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 using keys, and arrays of source files as values. 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"]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.
To automatically generate a manual page from an ArgumentParser object,
see hatch-argparse-manpage.
hatch-gettext is distributed under the terms of the GPL-3.0-or-later license.