pox-convert
Convert .po (gettext) files to Excel spreadsheets and back. Supports fuzzy entries and multiple plural forms.
Usage
PO to Excel
uvx pox-convert export path/to/messages.po
Use globbing to convert multiple files at once:
uvx pox-convert export locales/**/django.po
Options:
-o, --outdir Output directory (default: current directory)
-f, --filename Filename template using {lang} and {date} variables
(default: translations_{lang}.xlsx)
-l, --language Override the language metadata from the PO file
--fuzzy How to handle fuzzy entries: stop, ignore, include (default: stop)
Excel to PO
uvx pox-convert import path/to/translations.xlsx
Options:
-o, --outdir Output directory (default: current directory)
-f, --filename Filename template using {lang} variable (default: {lang}.po)
Spreadsheet format
The generated Excel file has the following structure:
| id | Context | Singular Form | Translation |
|---|---|---|---|
| 1 | Hello | Hallo | |
| 2 | adjective | Open | Offen |
| 3 | Goodbye |
- Empty translations are highlighted in yellow with a black border
- The header row is frozen for easy scrolling
- Alternating row stripes improve readability
- Plural forms get additional translation columns
- Language metadata is stored as a custom document property
Django integration
pox-convert ships with a Django management command that wraps
makemessages to skip fuzzy matching:
python manage.py makemessages_nofuzzy -l de
Add pox.contrib.django.pox to your INSTALLED_APPS to use it.
Changelog
1.1.0
- Programmatic plural hint generation using a safe formula parser.
- Improved CI coverage reporting.
- 100% test coverage.
1.0.1
- Unified CLI with
pox-convertentry point. - Added Excel-to-PO reverse conversion (
xop). - Redesigned spreadsheet styles and column headers.
- Added MIT license, README, and GitHub Actions CI workflow.
- Full type annotations and stricter linting.
1.0.0
- Initial release with PO-to-Excel conversion.
Release files for pox-convert 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pox_convert-1.1.0.tar.gz | 538.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pox_convert-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 561.2 kB
Release files / pox_convert-1.1.0.tar.gz
| Download URL | pox_convert-1.1.0.tar.gz |
|---|---|
| Size | 538.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3403d7f379723bc28a4e964e5121d7e155099af8d253b8110de9b40ad35b6def
|
|
BLAKE2b-256 checksum How to use checksums |
7a7bb063a77b5bfb7372a05424a282ef9a01081f948fdeee745685a6877920bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / pox_convert-1.1.0-py3-none-any.whl
| Download URL | pox_convert-1.1.0-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1ab2b9553fb1131c283c9e8b7cb7d3de80035bd0bb2339cd9cbb180aa264f658
|
|
BLAKE2b-256 checksum How to use checksums |
56dd8c16cbaa4e302a50f0d9150acd41861ec9fe7b1abfc2c5aa887e91e9a3f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|