Ajoutez une bibliothèque i18n exécutée au runtime, convertissez ensuite les chaînes déjà écrites par Copilot, puis empêchez-en de nouvelles d'apparaître. C'est cette dernière étape que la plupart des équipes ratent, car un fichier d'instructions de dépôt n'atteint pas toutes les surfaces depuis lesquelles Copilot écrit du code. Le chat et l'agent de codage le lisent. L'autocomplétion inline, non. globalize.now est une infrastructure de localisation propulsée par l'IA qui convertit la base de code une fois pour toutes et produit les clés et les fichiers de traduction que lit votre bibliothèque i18n.

Pourquoi Copilot continue-t-il à coder en dur des chaînes après l'ajout d'un fichier d'instructions ?

Parce que le fichier d'instructions n'est pas connecté au chemin le plus rapide. La documentation de VS Code indique clairement que les instructions personnalisées ne sont pas prises en compte pour les suggestions inline obtenues en tapant. C'est pourtant le mode dans lequel la plupart des gens passent le plus clair de leur journée.

La règle que vous avez écrite est donc bien réelle, et elle s'applique quand vous posez une question à Copilot dans le chat ou confiez une tâche à l'agent de codage. Elle ne s'applique pas quand vous tapez une balise JSX et appuyez sur Tab sur une complétion grisée. Les deux produisent du code commité. Un seul des deux a lu votre règle.

Quelles surfaces de Copilot lisent vos instructions ?

Trois surfaces écrivent du code dans votre dépôt, et elles ne se comportent pas de la même façon.

SurfaceLit les instructions ?Où le résultat atterrit
Complétions inlineNonDirectement dans le fichier que vous éditez
Chat et mode agentOuiModifications que vous révisez dans l'éditeur
Agent de codageOuiUne pull request en brouillon que vous révisez

L'agent de codage est le plus accommodant des trois pour ce problème. Vous lui assignez un ticket, il travaille en arrière-plan et ouvre une pull request en brouillon, si bien que son résultat arrive là où un relecteur regarde déjà. Les complétions inline, elles, arrivent sans aucun filtre.

Comment configurer l'i18n dans un projet Copilot ?

Choisissez d'abord la bibliothèque runtime que réclame votre framework : next-intl pour le App Router de Next.js, react-i18next pour toute autre application React, Lingui si vous voulez une extraction à la compilation et des catalogues PO. Nous avons comparé les trois dans next-intl vs react-i18next vs Lingui.

Copilot n'est pas spécifique à un framework comme le sont Lovable ou Bolt, ce qui veut dire que la question de la stack reste réellement ouverte et que le choix de la bibliothèque vous appartient. Ce qui n'est pas ouvert, en revanche, c'est l'ordre des étapes. Installez la bibliothèque, convertissez les chaînes déjà existantes, et ne vous préoccupez de la prévention qu'ensuite. Une règle de prévention écrite sur une base de code encore composée à 90 % d'anglais codé en dur ne vous donne rien à mesurer.

Que doit contenir .github/copilot-instructions.md ?

Un fichier d'instructions de dépôt à ce chemin est détecté automatiquement et appliqué aux requêtes de chat dans l'espace de travail. GitHub recommande lui-même de garder chaque instruction courte et autonome, d'expliquer le raisonnement, et de laisser de côté tout ce qu'un linter applique déjà. Une section i18n qui suit ce conseil reste minimale :

## User-facing text

- User-facing text belongs in the message catalog, never in a component literal.
- Use the translation function from our i18n library for every visible string.
- Reason: a literal cannot be translated and does not show up as a missing key,
  so it ships silently in one language.
- Add new English values to the source catalog only. Never hand-edit other locales.
- Not user-facing: test names, log lines, error codes, internal constants.

La dernière ligne compte plus qu'il n'y paraît. Les règles trop générales finissent ignorées, et une règle qui demande à un agent d'englober les messages de log lui apprendra que toute la section n'est que du bruit. Si vous n'avez pas encore de fichier d'instructions du tout, VS Code peut en rédiger un brouillon à partir de votre base de code avec la commande init dans le chat — un bien meilleur point de départ qu'une page blanche.

Un fichier d'instructions spécifique à un chemin peut-il faire mieux ?

Oui, et c'est le seul levier que Copilot possède et que les fichiers de règles d'autres éditeurs n'ont pas. Les fichiers se terminant par .instructions.md, stockés sous .github/instructions, portent un motif applyTo dans leur en-tête et ne se chargent que lorsque l'agent touche un fichier correspondant.

---
name: 'UI strings'
description: 'String handling rules for components'
applyTo: '**/*.{jsx,tsx}'
---
Every visible string in this file must come from the catalog.
Key format is feature.element.state, lowerCamelCase.
If you add a key here, add its English value to the source catalog in the same change.

Limiter la règle aux fichiers de composants, c'est ce qui la rend crédible. Elle se déclenche là où vit le texte destiné à l'utilisateur et reste silencieuse dans vos routes d'API et vos scripts de migration. Si vous conservez déjà un AGENTS.md ou un CLAUDE.md à la racine du dépôt, Copilot les lit aussi comme des instructions permanentes, ce qui évite à une équipe qui fait tourner plusieurs agents d'avoir besoin d'un fichier séparé par outil.

Qu'est-ce qui rattrape les chaînes que les instructions manquent ?

Une règle de lint en CI, car c'est la seule couche de cette chaîne qui fait échouer un build. Les instructions changent les probabilités ; un contrôle qui échoue change le résultat. Nous avons détaillé cette couche de contrôle dans pourquoi les agents IA continuent d'ajouter des chaînes codées en dur, et cette configuration s'applique sans modification à un dépôt Copilot.

L'ajout spécifique à Copilot, c'est la pull request. Les instructions de dépôt s'appliquent aussi à la revue de code de Copilot, pas seulement au chat : le même fichier qui façonne la génération façonne aussi les commentaires de revue sur la PR en brouillon de l'agent de codage. Cela vous donne un filtre que l'autocomplétion inline ne peut pas contourner — ce qui est ce qu'on peut espérer de mieux pour combler la faille évoquée en début d'article.

Rien de tout cela n'efface la dette déjà présente dans le dépôt, et rien de tout cela ne remplit un fichier de traduction. Repérer une chaîne littérale en revue vous indique qu'une chaîne manque. Quelqu'un doit encore la clé-fier, la traduire, et empêcher les autres locales de dériver hors de synchronisation.

Où globalize.now intervient-il ?

À la couche qui produit le catalogue — celle que ni votre bibliothèque i18n ni votre fichier d'instructions ne prennent en charge. Vous connectez le dépôt dans l'application, et il convertit la base de code une fois pour toutes, en remplaçant les chaînes codées en dur par des clés et en générant les fichiers de traduction. Après cette conversion ponctuelle, les tâches déclenchées à chaque push traduisent les nouvelles unités de catalogue introduites par vos commits.

La sortie est au format JSON ou PO, si bien que les catalogues arrivent dans la forme que lit déjà votre bibliothèque runtime. La même approche couvre les autres éditeurs agentiques : Claude Code et Cursor se heurtent au même mur par un autre chemin, et il existe une version pas à pas pour une base de code Next.js dans ajouter l'i18n à une application Next.js construite par IA. La documentation développeur détaille davantage la conversion, et les offres se trouvent sur la page tarifs.

En bref

Rédigez le fichier d'instructions, limitez une règle spécifique à un chemin à vos fichiers de composants, et ajoutez une règle de lint en CI pour que l'écart entre ce que Copilot a reçu comme consigne et ce que Copilot a tapé devienne un build en échec plutôt qu'une chaîne anglaise expédiée en production. Convertissez ensuite l'arriéré une bonne fois pour toutes, pour que la règle ait quelque chose de cohérent à protéger.

globalize.now transforme le texte codé en dur de votre application en fichiers de traduction prêts à l'emploi et les maintient à jour au fur et à mesure de vos déploiements.

Essayer globalize.now gratuitement