Workflow de Maintenance des Traductions
Pour les commandes de documentation générale (build, deploy, screenshots, génération README), voir Documentation Tools.
Vue d'ensemble
La documentation utilise Docusaurus i18n avec l'anglais comme locale par défaut. La documentation source se trouve dans docs/ ; les traductions sont écrites sous i18n/{locale}/. Locales prises en charge : en-GB (par défaut), fr, de, es, pt-BR, hi-Latn, zh-Hans.
Traduction IA pour l'interface utilisateur de l'application, le markdown/JSON Docusaurus et les ressources SVG est gérée par ai-i18n-tools depuis la racine du dépôt, configurée dans ai-i18n-tools.config.json (pas à l'intérieur de documentation/). Définissez OPENROUTER_API_KEY lors de l'exécution des commandes de traduction.
Quand la documentation française change
- Modifier la source dans
documentation/docs/(anglais uniquement). - Chaînes d'interface Docusaurus (libellés du thème, barre de navigation, etc.) : si nécessaire, exécutez
pnpm write-translationsdansdocumentation/pour quei18n/en/*.jsonrécupère les nouvelles clés. - Identifiants de titres :
pnpm write-heading-ids(à partir dedocumentation/). - Traduire depuis la racine du dépôt (ou utilisez les raccourcis ci-dessous depuis
documentation/) :pnpm i18n:extract— actualisersrc/locales/strings.jsondepuist('…')dans l'application Next.js.pnpm i18n:translate:docs— traduire les fichiers markdown/JSON endocumentation/i18n/selon la configuration.pnpm i18n:translate:svg— traduire les fichiers SVG situés dansdocumentation/static/imgselon la configuration.- Ou exécutez tout :
pnpm i18n:translate.
- Construire :
cd documentation && pnpm build(toutes les langues).
Depuis l'intérieur de documentation/, les mêmes flux sont connectés comme pnpm translate → racine i18n:translate, plus pnpm translate:docs, translate:ui, translate:svg, translate:status, i18n:extract, i18n:sync.
Glossaire
- Terminologie de l'interface pour la documentation est pilotée par
glossary.uiGlossarydansai-i18n-tools.config.json, pointant verssrc/locales/strings.json(le catalogue produit parpnpm i18n:extract). - Remplacements se trouvent dans
documentation/glossary-user.csv(glossary.userGlossarydans la configuration). Consultez la documentation du glossaire ai-i18n-tools pour le format des colonnes. - Générer un modèle CSV :
pnpm i18n:glossary-generate(racine).
Cache
Le cache de traduction pour ai-i18n-tools se trouve dans .translation-cache/ à la racine du dépôt (cacheDir dans ai-i18n-tools.config.json). Il est ignoré par git. Utilisez pnpm i18n:status et les options --force / cache de l'interface en ligne de commande selon la documentation ai-i18n-tools lorsque vous avez besoin d'un rafraîchissement complet.
Identifiants de titres et ancres
Utilisez des identifiants explicites afin que les liens restent stables entre les langues :
## This is a heading \{#this-is-a-heading}
cd documentation
pnpm write-heading-ids
Listes d'ignorance
Utilisez .translate-ignore à la racine du dépôt (même principe que .gitignore) pour indiquer les chemins que le traducteur de documentation doit ignorer, si vous en ajoutez un pour votre flux de travail.
Thème JSON Docusaurus
pnpm write-translations extrait les chaînes d'interface Docusaurus dans documentation/i18n/en/. L'étape ai-i18n-tools translate-docs (avec markdownOutput.style: "docusaurus") remplit les JSON traduits sous chaque langue à côté du markdown, selon ai-i18n-tools.config.json.
Dépannage
OPENROUTER_API_KEYnon défini — exportez-la ou ajoutez-la à.env.localà la racine du dépôt.- Modèle / qualité — ajustez
openrouter.translationModelset les options associées dansai-i18n-tools.config.json. - Glossaire — modifiez
documentation/glossary-user.csvou régénérez les chaînes d'interface, puis relancez extract + translate.
Ajout d'une nouvelle langue
- Ajoutez la langue à la configuration Docusaurus
i18n.localesetlocaleConfigsdansdocumentation/docusaurus.config.ts. - Ajoutez la même langue à
targetLocalesdansai-i18n-tools.config.json(racine du dépôt). - Exécutez
pnpm i18n:generate-ui-languagesà la racine, puis les commandespnpm i18n:extract/ traduire selon les besoins.