Metadata-Version: 2.4
Name: forge-mvc-i18n
Version: 1.0.0b16
Summary: Forge i18n — traduction par catalogues JSON, locale par défaut et fallback, helper trans() pour Jinja.
Author: Roger Lequette
License-Expression: LicenseRef-Forge-Proprietary
Project-URL: Homepage, https://github.com/caucrogeGit/Forge
Project-URL: Repository, https://github.com/caucrogeGit/Forge
Project-URL: Documentation, https://forgemvc.com/docs/forge/
Keywords: python,mvc,forge,i18n,translation,locale
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: forge-mvc<2,>=1.0.0b16
Dynamic: license-file

# forge-mvc-i18n

Opt-in Forge pour l'**internationalisation**. Extrait du core (ADR-027) : le core
ne contient que les primitives générales ; la traduction est une brique
spécialisée, optionnelle.

## Contenu

- `trans(key, locale=None, translations_dir="translations")` : traduit une clé
  via le catalogue de la locale, avec repli sur la locale de fallback puis sur
  la clé elle-même.
- `load_catalog(locale, translations_dir)` : charge et valide un catalogue
  `translations/<locale>.json` (objet JSON de chaînes), mis en cache.
- `clear_translation_cache()` : vide le cache des catalogues.
- `get_default_locale` / `set_default_locale`, `get_fallback_locale` /
  `set_fallback_locale` : pilotent la configuration du noyau
  (`i18n_default_locale`, `i18n_fallback_locale`).
- Exceptions : `I18nError`, `TranslationCatalogError`.

Quand le paquet est installé, le renderer Jinja du noyau expose
automatiquement `trans()` comme fonction globale des templates.

## Installation

```bash
pip install --pre forge-mvc-i18n
```

## Configuration

Les locales par défaut et de fallback sont des clés du noyau, configurables au
démarrage :

```python
import core.forge as forge

forge.configure(i18n_default_locale="fr", i18n_fallback_locale="en")
```

## Exemple

```python
from forge_mvc_i18n import trans

# translations/fr.json -> {"common.save": "Enregistrer"}
trans("common.save")            # "Enregistrer"
trans("inconnu")                # "inconnu" (repli sur la clé)
```
