J'utilise Claude Code depuis quelques mois maintenant, et ça a complètement changé ma façon de gérer l'internationalisation. Au lieu de jongler entre mon éditeur, mon terminal et mon tableau de bord de traduction, je tape simplement une commande slash et je laisse Claude s'occuper des tâches fastidieuses.
Voici ce que j'ai appris sur la création de skills i18n personnalisés pour Claude Code.
Qu'est-ce que les Skills Claude Code ?
Claude Code est le CLI d'Anthropic qui intègre Claude directement dans votre terminal. Les skills sont des commandes slash personnalisées que vous définissez — considérez-les comme des instructions IA réutilisables pour les tâches courantes.
Pour le travail d'i18n, c'est parfait. Les tâches de traduction sont répétitives et suivent des schémas cohérents. Au lieu d'expliquer ce que vous voulez à chaque fois, vous créez un skill une fois et vous l'invoquez avec une simple commande.
Votre premier skill : Trouver les chaînes en dur
Commençons par quelque chose de simple. Créez un fichier à .claude/commands/i18n-scan.md :
MARKDOWN1# i18n-scan 2 3Scan the current file or specified files for hardcoded strings that should be internationalized. 4 5## What to look for: 6- JSX text content between tags 7- String literals in user-facing contexts (labels, messages, titles) 8- Template literals containing user-visible text 9- Placeholder text in inputs 10 11## What to ignore: 12- console.log messages 13- Error messages for developers (unless user-facing) 14- CSS class names 15- Import paths 16- Object keys that are internal identifiers 17 18## Output format: 19For each hardcoded string found, show: 20- Line number 21- The hardcoded string 22- Suggested translation key (following namespace.section.element pattern) 23- Context about where it appears
Maintenant, quand vous lancez /i18n-scan dans Claude Code, il sait exactement quoi chercher.
Le skill d'extraction
C'est le skill que j'utilise le plus. Il ne fait pas que trouver les chaînes — il les extrait réellement et met à jour votre code.
Créez .claude/commands/i18n-extract.md :
MARKDOWN1# i18n-extract 2 3Extract hardcoded strings and convert them to translation keys. 4 5## Process: 61. Identify all hardcoded user-facing strings 72. Generate appropriate translation keys following naming convention 83. Update the file to use translation function (t() or equivalent) 94. Add necessary imports 105. Create or update translation file with new keys 11 12## Naming convention: 13Keys should follow `namespace.section.element` pattern: 14- `settings.profile.title` → "Profile Settings" 15- `common.buttons.save` → "Save" 16- `errors.validation.required` → "This field is required" 17 18## Framework detection: 19- If react-i18next: use useTranslation hook and t() function 20- If next-intl: use useTranslations hook 21- If vue-i18n: use $t() in templates, t() in setup 22- If FormatJS: use FormattedMessage or useIntl
Lancez /i18n-extract sur n'importe quel fichier, et Claude gère tout le processus d'extraction.
Connexion à votre TMS
La vraie puissance vient de l'intégration avec votre système de gestion des traductions. Avec MCP (Model Context Protocol), Claude peut interagir directement avec IntlPull.
Créez .claude/commands/i18n-translate.md :
MARKDOWN1# i18n-translate 2 3Translate missing strings using IntlPull MCP integration. 4 5## Prerequisites: 6- IntlPull MCP server must be connected 7- Project must be configured in IntlPull 8 9## Process: 101. Use IntlPull MCP to get current project status 112. Identify keys with missing translations 123. For each missing translation: 13 - Get source text 14 - Get existing translations for context 15 - Generate appropriate translation 16 - Push to IntlPull with quality flag "needs_review" 17 18## Language handling: 19- Translate to all project languages by default 20- Or specify: `/i18n-translate spanish` 21 22## Quality control: 23- Mark all AI translations as "needs_review" 24- Include translation notes for ambiguous terms 25- Flag terms that should use glossary entries
Maintenant, /i18n-translate spanish envoie les chaînes manquantes pour traduction IA, marquées pour relecture humaine.
Vérifier la couverture des traductions
Avant de déployer, je veux savoir ce qui manque. Créez .claude/commands/i18n-status.md :
MARKDOWN1# i18n-status 2 3Generate a translation coverage report. 4 5## Report should include: 6- Overall coverage percentage per language 7- Namespaces with missing translations 8- Recently added keys without translations 9- Keys marked as "needs_review" 10- Potentially outdated translations 11 12## Display format: 13Table showing: 14- Language 15- Coverage % 16- Missing count 17- Needs review count 18 19Then list specific missing keys grouped by namespace. 20 21## Data source: 22- If IntlPull MCP connected: pull live data 23- Otherwise: analyze local translation files
Validation pour la CI
Créez .claude/commands/i18n-validate.md pour détecter les problèmes avant le déploiement :
MARKDOWN1# i18n-validate 2 3Check for translation issues. Designed for CI but works locally. 4 5## Checks: 6 7### Structural issues: 8- Missing translations in non-source languages 9- Orphaned keys (exist in translations but not in code) 10- Invalid JSON/YAML syntax 11- Inconsistent nesting across languages 12 13### Content issues: 14- Empty translations 15- Placeholder mismatches ({name} in source but not in translation) 16- Suspiciously long translations (might break UI) 17- Suspiciously short translations (might be incomplete) 18- Untranslated content (same as source language) 19 20### Code issues: 21- t() calls with non-existent keys 22- Hardcoded strings in staged changes 23- Dynamic key construction (hard to track) 24 25## Output levels: 26- Error: must fix before deploy 27- Warning: should review 28- Info: for awareness 29 30## Exit codes: 31- Exit 0 if no errors 32- Exit 1 if errors found (for CI integration)
Mon workflow quotidien
Voici à quoi ça ressemble en pratique :
-
Démarrer une branche feature :
git checkout -b feature/user-settings -
Écrire le code avec des chaînes en dur. Ne vous souciez pas de l'i18n pendant le développement.
-
Avant de commiter, sur chaque fichier modifié :
/i18n-extract -
Générer les traductions :
/i18n-translate -
Valider :
/i18n-validate -
Commiter le tout dans un commit atomique
Temps ajouté au total : 2-3 minutes par feature. Comparez ça à l'heure que j'y passais avant.
Conseils de pro
Soyez précis sur votre stack. Les skills génériques fonctionnent, mais les skills spécifiques à votre stack fonctionnent mieux. Si vous utilisez Next.js avec next-intl, créez des skills qui comprennent cette configuration.
Construisez progressivement. Commencez avec /i18n-extract et /i18n-status. Ajoutez d'autres skills quand vous vous retrouvez à répéter les mêmes instructions.
Versionnez vos skills. Mettez .claude/commands/ dans git. Quand vos coéquipiers mettent à jour Claude Code, ils récupèrent automatiquement vos skills.
Combinez avec les règles de projet. Dans votre CLAUDE.md, ajoutez des directives i18n pour que Claude suive ces standards même en dehors des invocations de skills.
Utilisez MCP pour des superpouvoirs. Avec le serveur MCP d'IntlPull, les skills peuvent créer des clés de traduction, récupérer des traductions, pousser des mises à jour et déclencher des workflows. Ça transforme les skills de « suggestions IA » en « actions IA ».
Pour commencer
-
Installez Claude Code :
npm install -g @anthropic-ai/claude-code -
Créez
.claude/commands/dans votre projet -
Ajoutez le skill
i18n-extractde cet article -
Essayez-le sur un fichier avec des chaînes en dur
-
Itérez selon ce qui fonctionne pour votre stack
La mise en place prend peut-être une heure. Les gains de temps s'accumulent chaque jour.
Mise à jour 2026 : Vous cherchez des workflows plus avancés ? Consultez notre guide 2026 sur la création de commandes d'automatisation de traduction personnalisées avec des opérations en masse, des pipelines de validation et des workflows basés sur les agents.
Vous voulez des skills prêts à l'emploi ? IntlPull maintient une collection de skills Claude Code pour l'i18n. Notre serveur MCP donne à Claude un accès direct pour gérer les traductions depuis votre terminal.
