i18n-tools
Version française (lecteur français et francophones)
English reader and ROW
Description
The i18n-tools project aims to simplify and modernize translation management in Python applications. It introduces a new flexible translation file format, independent of any dominant language, designed to coexist with existing standards such as gettext (.po/.mo files) and i18next.
The goal is to provide a modular, adaptable, and language-agnostic solution, with native support for translation variants, multiple plurals, and transparent language fallback management.
Roadmap
The project follows a progression by deliverable value. Each version is independently usable.
| Milestone | Description | Status |
|---|---|---|
| v0.1.x | Foundational cleanup — fix blocking bugs | ✅ Delivered |
| v0.2.x | Loaders ↔ models bridge — Book.load(), .i18t extension, partial Config → Repository |
✅ Delivered |
| v0.3.x | Complete model hierarchy — Corpus, FallbackBook, Encyclopaedia, exceptions |
✅ Delivered |
| v0.4.x | Quality and coverage — error handling, circular imports, Sphinx/Furo init | ✅ Delivered |
| v0.5.0 | Architecture & layering hardening — models/loaders boundary sealed, Config → Repository completed |
✅ Delivered |
| v0.6.0 | CI/CD & repository hygiene — uv/tox-uv, basedpyright, .codecov.yml |
✅ Delivered |
| v0.7.0 | Test coverage & repository hygiene — .codecov.yml components, coverage-gate, issue/PR templates, Node.js 24 CI migration. No separate tag — merged into v0.8.0 (calendar reagencement) |
✅ Delivered |
| v0.8.0 | Orchestration — core.py high-level entry point, fallback.py language chain resolution |
✅ Delivered |
| v0.9.0 | Formatting & CLI — formatter.py complete with PluralRule, CLI/REPL |
✅ Delivered |
| v0.10.0 | Reviewing architecture & models — architectural review ahead of the v1.0.0 freeze | 🔵 Planned |
| v0.11.0 | Comprehensive documentation — reference material across languages | 🔵 Planned |
| v1.0.0 | Freeze & verification — .i18t format frozen, public API frozen, full Sphinx docs published |
🔵 Planned |
| v1.x | gettext interoperability — .po/.mo import/export via Babel |
🔵 Horizon |
| v2.x | Third-party formats — i18next and others, central conversion hub | 🔵 Horizon |
| v3.x | Complete CLI, stable API, Rust/JavaScript ports | 🔵 Horizon |
Features
| Feature | v0.2.x | v0.8.0 | v0.9.0 | v1.0.0 | v1.x | v2.x |
|---|---|---|---|---|---|---|
Native .i18t format (JSON/YAML) |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Language-neutral identifiers | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Variants and multiple plurals | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Load a Book from .i18t |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Save a Book to .i18t |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Complete hierarchy (Corpus, Encyclopaedia) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Language fallback management | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
High-level orchestration (core.py: load/save a Book or Corpus, synchronize a repository) |
❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Interpolation and active plural rules | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
| CLI/REPL interface | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
.po/.mo import/export (Babel/gettext) |
❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
| i18next conversion | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
Installation
pip install pyi18t-tools
This installs everything needed to load, format, and save .i18t files:
Message, Book, Corpus, Encyclopaedia, formatter.publish(), and
the CLI (validate/info/sync/repl) with a .yaml/.json settings
file.
Author and translator management (Config/Repository author/translator
methods, translator API URL validation, or a .toml settings file)
additionally requires the api extra:
pip install pyi18t-tools[api]
Calling one of these methods without the extra installed raises a clear
ModuleNotFoundError naming the missing package and this install command,
rather than a bare import failure (DD-41).
Why This Project?
- Flexibility: a format designed to adapt to all translation needs, without linguistic constraints — no language is dominant.
- Expressiveness: native support for contextual variants (gender, register, context) and business plurals beyond CLDR rules.
- Extensibility: layered architecture enabling conversion to existing standards (gettext, i18next) without modifying the models.
- Interoperability: bridge with the Babel ecosystem for progressive compatibility with existing tools.
License
See the license.md file.
Contact
For any questions or contributions, open a GitHub issue.
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 pyi18t_tools-0.10.0.tar.gz.
File metadata
- Download URL: pyi18t_tools-0.10.0.tar.gz
- Upload date:
- Size: 90.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
027ffc00ba48a689b865edfc814b8ef2684ddf732449e0f336543215d30cde3c
|
|
| MD5 |
60d1f7d4a8a9152208dad608ab7a0040
|
|
| BLAKE2b-256 |
475e3ebb679cfa9b7b805f0652a0c852ab007e0882e86212257c4a824261cb5f
|
File details
Details for the file pyi18t_tools-0.10.0-py3-none-any.whl.
File metadata
- Download URL: pyi18t_tools-0.10.0-py3-none-any.whl
- Upload date:
- Size: 100.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0eae1b49a3808dad96a0a9c5e8cc731011c2c807f9e2e6c8f35d5df33f305c7a
|
|
| MD5 |
d1aae33c90b8fc64daf4307b3be82061
|
|
| BLAKE2b-256 |
33eb9f5f9ef8cac36ce6e2c7caacb5755b2d295e793f0f0e7b3cef6a4017d573
|