Skip to main content

Python - Language Python - Status Python - Licence Python - Supported Versions Read the Docs Github - CI Codecov Github - Release PyPI - Version


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.

Metadata

Release files for pyi18t-tools 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyi18t-tools 0.10.0
File Size Uploaded Provenance Actions
pyi18t_tools-0.10.0.tar.gz 90.6 kB Without provenance Details for pyi18t_tools-0.10.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyi18t-tools 0.10.0
File Interpreter ABI Platform Actions
pyi18t_tools-0.10.0-py3-none-any.whl Python 3 none any Details for pyi18t_tools-0.10.0-py3-none-any.whl

Total release size: 190.7 kB

Release files / pyi18t_tools-0.10.0.tar.gz

Download URL pyi18t_tools-0.10.0.tar.gz
Size 90.6 kB
Tags Source
SHA-256 checksum
How to use checksums
027ffc00ba48a689b865edfc814b8ef2684ddf732449e0f336543215d30cde3c
BLAKE2b-256 checksum
How to use checksums
475e3ebb679cfa9b7b805f0652a0c852ab007e0882e86212257c4a824261cb5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pyi18t_tools-0.10.0-py3-none-any.whl

Download URL pyi18t_tools-0.10.0-py3-none-any.whl
Size 100.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0eae1b49a3808dad96a0a9c5e8cc731011c2c807f9e2e6c8f35d5df33f305c7a
BLAKE2b-256 checksum
How to use checksums
33eb9f5f9ef8cac36ce6e2c7caacb5755b2d295e793f0f0e7b3cef6a4017d573
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for pyi18t-tools 0.10.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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page