erplibre/.claude/skills/erplibre-doc-i18n/SKILL.md

61 lines
2.5 KiB
Markdown
Raw Normal View History

[REF] claude: trim the always-loaded guidance, and fix what it got wrong Every session paid ~4 000 tokens for CLAUDE.md and .claude/rules/, and part of that content no longer described this repository: CLAUDE.md and 05-environments.md gave .venv.odoo18/bin/python — a path that does not exist. The real one carries BOTH versions, .venv.odoo18.0_python3.12.10. 02-project-structure.md announced addons/ and odoo12.0/, absent from the checkout. That is the reason for the cuts, more than the token count: the files drifted from the repository, while « ls » cannot. What a session can rebuild by reading the code is now left to the code. 02-project-structure.md deleted — a tree that ls gives, and gives right 05-environments.md deleted — a venv list that was simply false 04-code-conventions.md reduced to a pointer at .flake8, .editorconfig and pyproject.toml, which already hold every value it repeated, plus the Git conventions, which they do not 01-versions.md table dropped for the pointer at conf/supported_version_erplibre.json, whose keys already pair Odoo with Python Two blocks move to lazy loading — their body costs nothing until invoked: 03-commands.md -> skill erplibre-commands (kept whole: there is no « make help » target, and the per-module test recipes carry flags nobody would guess) 07-documentation.md -> skill erplibre-doc-i18n for the how-to, while the prohibition « never edit a generated .md » STAYS in the rules: a rule that must hold at all times cannot live in a file loaded on demand Resident guidance: ~3 997 -> ~1 939 est. tokens per session. --- FR --- Chaque session payait environ 4 000 jetons pour CLAUDE.md et .claude/rules/, et une partie de ce contenu ne décrivait plus ce dépôt : CLAUDE.md et 05-environments.md donnaient .venv.odoo18/bin/python — un chemin qui n'existe pas. Le vrai porte les DEUX versions, .venv.odoo18.0_python3.12.10. 02-project-structure.md annonçait addons/ et odoo12.0/, absents du checkout. C'est la raison des coupes, plus encore que le nombre de jetons : les fichiers avaient dérivé par rapport au dépôt, ce que « ls » ne peut pas faire. Ce qu'une session peut reconstruire en lisant le code est désormais laissé au code. 02-project-structure.md supprimé — une arborescence que ls donne, et donne juste 05-environments.md supprimé — une liste de venvs simplement fausse 04-code-conventions.md réduit à un renvoi vers .flake8, .editorconfig et pyproject.toml, qui portent déjà toutes les valeurs qu'il répétait, plus les conventions Git, qu'ils ne portent pas 01-versions.md tableau abandonné au profit du renvoi vers conf/supported_version_erplibre.json, dont les clés apparient déjà Odoo et Python Deux blocs passent en chargement paresseux — leur corps ne coûte rien tant qu'il n'est pas invoqué : 03-commands.md -> skill erplibre-commands, conservée entière : il n'existe pas de cible « make help », et les recettes de test par module portent des drapeaux que personne ne devinerait 07-documentation.md -> skill erplibre-doc-i18n pour le mode d'emploi, tandis que l'interdiction « ne jamais éditer un .md généré » RESTE dans les règles : une règle qui doit tenir en permanence ne peut pas vivre dans un fichier chargé à la demande Consignes résidentes : environ 3 997 -> 1 939 jetons estimés par session. Assisted-by: Claude Opus 4.8
2026-08-02 03:16:36 -04:00
---
name: erplibre-doc-i18n
description: Documentation bilingue ERPLibre (mmg, fichiers .base.md) et internationalisation du CLI TODO (todo_i18n.py, clés TRANSLATIONS). À charger pour rédiger ou régénérer de la documentation, ou pour ajouter une chaîne traduisible au CLI.
---
# Documentation multilingue
La documentation est bilingue (anglais/français) via **mmg** (Multilingual
Markdown Generator).
## Fonctionnement
- Les fichiers sources sont les `.base.md` (contiennent les deux langues)
- `mmg` génère : `FICHIER.md` (anglais) et `FICHIER.fr.md` (français)
- Marqueurs : `<!-- [en] -->`, `<!-- [fr] -->`, `<!-- [common] -->` (blocs de code partagés)
## Commandes
```bash
make doc_markdown # Regénérer toute la doc multilingue
```
## Convention
- Toujours modifier le fichier `.base.md` correspondant, puis exécuter `make doc_markdown`
- Les blocs de code vont dans `<!-- [common] -->`, le texte dans `<!-- [en] -->` et `<!-- [fr] -->`
- En-tête obligatoire dans chaque `.base.md` :
```
<!---------------------------->
<!-- multilingual suffix: en, fr -->
<!-- no suffix: en -->
<!---------------------------->
```
> Les fichiers concernés se listent par `find . -name '*.base.md'`.
## Internationalisation du CLI TODO (i18n)
Le CLI interactif `script/todo/todo.py` supporte le français et l'anglais.
### Architecture
- **`script/todo/todo_i18n.py`** — Module de traduction (dictionnaire `TRANSLATIONS`, fonctions `t()`, `get_lang()`, `set_lang()`)
- Les chaînes traduisibles utilisent `t("clé")` au lieu de texte en dur
- Les entrées de `todo.json` peuvent avoir un champ `prompt_description_key` résolu via `t()` (fallback sur `prompt_description`)
### Résolution de la langue (priorité)
1. `EL_LANG` dans `env_var.sh` (lu en premier, défaut `"fr"`)
2. Variable d'environnement `EL_LANG`
3. Défaut : `"fr"`
### Comportement
- Première exécution : prompt bilingue demande à l'utilisateur de choisir sa langue
- Le choix est persisté dans `env_var.sh`
- Changement de langue possible via TODO > Configuration > Langue
### Ajouter une traduction
1. Ajouter la clé dans `TRANSLATIONS` de `todo_i18n.py` avec les valeurs `"fr"` et `"en"`
2. Remplacer la chaîne en dur par `t("ma_clé")` dans `todo.py`
3. Pour les entrées JSON : ajouter `"prompt_description_key": "ma_clé"` dans `todo.json`
> La clé EST la chaîne anglaise. Vérifier l'absence de doublon dans
> `TRANSLATIONS` avant d'ajouter : une clé en double écrase silencieusement
> la précédente.