Automatically compile po files to mo ones at build time using msgfmt.py
Project description
hatch-msgfmt-s-ball
Automatically compile po files to mo ones at build time using msgfmt.py
Table of Contents
Goal
This package is a hatchling plugin that helps to automatically compile
translation sources at build time.
It internally uses a patched version of
the msgfmt.py script from the Tools folder of the CPython
source. Because of that it has no dependency and does not require any external
tools.
Current Status
This package is currently at a beta level. It works and has a test coverage above 90%. But it lacks documentation and real world tests. Nevertheless, I already use it for (the development version of) another project of mine i18nparse
Releases use a semantic major.minor.patch versioning. The full source code is available on GitHub.
Usage
As it is only a hatchling hook plugin, this package has no direct interface.
It uses the Application object provided by hatchling for its messages,
so it is possible to increase its verbosity when
the behaviour is unexpected by just passing -v params to the hatch build
command.
.po files
The source .po are expected to be in a folder under the root source
directory. The default directory is messages but it can be changed through
the configuration file. It can even be . if the files are
directly in the root directory.
They are expected to be named LANG.po or domain-LANG.po. When no domain
is present in the file name, the default domain is the last component of the
source folder, or the package name if the source folder is . or messages.
LANG folders organization
Alternatively the source directory can contain LANG folders (e.g. fr_CA
or es) that in turn contain domain.po files, possibly under a hierarchy
of subfolders. The goal is to mimic a classical locale hierarchy:
LANG/LC_MESSAGES/domain.po
It is even possible (but not recommended) to mix both organizations.
.mo files
For every .po file found, a corresponding compiled file is generated as
locale/LANG/LC_MESSAGES/domain.mo under the build directory. The default
locale name can be changed through the builder configuration.
Configuration
The hatch-msgfmt-s-ball plugin can be configured as any other plugin through
the pyproject.toml file. You must first declare it with:
[build-system]
requires = ["hatchling", "hatch-msgfmt-s-ball"]
build-backend = "hatchling.build"
Then you have to tell the builder that it must be called for the wheel
target:
[tool.hatch.build.targets.wheel.hooks.msgfmt]
That section can be left empty if you accept the defaults. It is equivalent to:
[tool.hatch.build.targets.wheel.hooks.msgfmt]
locale = "locale"
messages = "messages"
In addition to the locale and messages options to respectively declare the
source folder containing the po files and the generated locale folder, it is
possible to declare a default domain with the domain directive:
[tool.hatch.build.targets.wheel.hooks.msgfmt]
domain = "my_app"
messages = "src"
As the messages folder is not named messages the default domain would have
been src without the domain directive.
Installation
For normal usage, no installation is required. Any Python installer using
the pyproject.toml file will be able to automatically download and install
it at build time.
Developer installation
If you want to use the source of hatch-msgfmt-s-ball, you can download a source
package form PyPI, or better clone it from GitHub:
git clone https://github.com/s-ball/hatch-msgfmt-s-ball.git
You will benefit from git for you own changes.
Contributing
As I am the only developer, I cannot guarantee very fast feedbacks. Anyway, I shall be glad to receive issues or pull requests on GitHUB.
License
hatch-msgfmt-s-ball is distributed under the terms of the MIT 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hatch_msgfmt_s_ball-0.4.0.tar.gz.
File metadata
- Download URL: hatch_msgfmt_s_ball-0.4.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72c81be40e29cbde115a198ee35d014bdfda89a8179b076a4f85e1808e5fe58b
|
|
| MD5 |
fae4ce31960cd9a0d8af8ebe09f7324d
|
|
| BLAKE2b-256 |
1d5dcbc14a9dd49f291007b1e15bc93057bbe3c68a1f897a0cc9ffd862c3052c
|
File details
Details for the file hatch_msgfmt_s_ball-0.4.0-py3-none-any.whl.
File metadata
- Download URL: hatch_msgfmt_s_ball-0.4.0-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63db8c1a572d5b02ba9708b8f575d916b26ca9eae8bef3bf5c7c9b55087292de
|
|
| MD5 |
1d5b8153593fbbc74aea8c0f6f6d37ad
|
|
| BLAKE2b-256 |
4ef2aa0932a2063ea52e32a0f8571153f42d3abeb894a192a43c904d72eb1942
|