l10n-conv
Universal localization file converter, validator, and compiler — lupdate + lrelease for all l10n formats.
Installation
pip install l10n-conv
Supported Formats
| Format | Extensions | Read | Write |
|---|---|---|---|
| Gettext PO/POT | .po, .pot |
✓ | ✓ |
| Gettext MO | .mo |
✓ | ✓ |
| Qt TS | .ts |
✓ | ✓ |
| XLIFF 1.2/2.0 | .xlf, .xliff |
✓ | ✓ |
| Java Properties | .properties |
✓ | ✓ |
| Android XML | .xml |
✓ | ✓ |
| iOS Strings | .strings |
✓ | ✓ |
| JSON (i18next/flat) | .json |
✓ | ✓ |
| YAML (Rails i18n) | .yml, .yaml |
✓ | ✓ |
| CSV/TSV | .csv, .tsv |
✓ | ✓ |
| TMX | .tmx |
✓ | ✓ |
| TBX | .tbx |
✓ | ✓ |
| PHP arrays | .php |
✓ | ✓ |
| ARB (Flutter) | .arb |
✓ | ✓ |
| Fluent | .ftl |
✓ | ✓ |
| Windows RESX | .resx |
✓ | ✓ |
Usage
Convert between formats
# PO → JSON
l10n-conv convert messages.po --to json -o messages.json
# XLIFF → Android XML
l10n-conv convert translations.xlf --to android-xml -o strings.xml
# Auto-detect output format from extension
l10n-conv convert messages.po -o translations.xlf
Compile
# PO → MO (like msgfmt)
l10n-conv compile messages.po -o messages.mo
Extract strings from source code
# Extract from Python/JS/C/QML source
l10n-conv extract src/ -o messages.po
Validate
# Check for issues
l10n-conv check messages.po
Statistics
l10n-conv stats messages.po
Merge
# Merge translations (like msgmerge)
l10n-conv merge base.po updates.po -o merged.po
Diff
l10n-conv diff old.po new.po
Initialize new language
l10n-conv init template.pot -l sv -o sv.po
Batch processing
# Convert all files in a directory
l10n-conv convert locale/ --to json -o output/ --batch
Options
--dry-run— Preview without writing-v/--verbose— Detailed output--batch— Process directories recursively- Pipe support: use
-for stdin/stdout
Exit Codes
0— Success1— Error2— Warnings
License
GPL-3.0-or-later — Daniel Nylander daniel@danielnylander.se
Metadata
Release files for l10n-conv 1.0.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 | Provenance | Actions |
|---|---|---|---|---|
| l10n_conv-1.0.0.tar.gz | 33.7 kB | Without provenance | Details for l10n_conv-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| l10n_conv-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for l10n_conv-1.0.0-py3-none-any.whl |
Total release size: 74.5 kB
Release files / l10n_conv-1.0.0.tar.gz
| Download URL | l10n_conv-1.0.0.tar.gz |
|---|---|
| Size | 33.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
95b071b9e4898e6fe63c7593df03645f7da4f33f5d80e104999707a6ea9948aa
|
|
BLAKE2b-256 checksum How to use checksums |
2c47a0616ce172804bf59456a82e5e7fa4b5bccc9ae7c423906eeb8d49f5e4b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / l10n_conv-1.0.0-py3-none-any.whl
| Download URL | l10n_conv-1.0.0-py3-none-any.whl |
|---|---|
| Size | 40.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f2e068ff29e015d21b6eea1fcb18588bf4d8dc9e8faaae005ff0b51d77e4627
|
|
BLAKE2b-256 checksum How to use checksums |
0535d89bbc72e12ad91f6c865290711ff6ffd68377ab0aa43e7e1bb21e54b4ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for l10n-conv 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.