Migration depuis Intlayer
Vous migrez depuis Intlayer ? Cette commande importe vos dictionnaires de traduction existants et les implémentations de traduction les plus simples de votre application vers ai-i18n-tools. Elle applique automatiquement des mises à jour sûres, puis génère un rapport clair pour tout ce qui nécessite encore votre attention. Cela vous permet de migrer progressivement sans avoir à comprendre toutes les différences au préalable.
Vous utilisez déjà des fichiers de traduction JSON i18next ? Vous n'avez pas besoin de cette commande de migration ; utilisez plutôt le pipeline JSON.
Ce que fait migrate-intlayer
- Analyse les exports par défaut de
*.content.ts(key+content+t({ locale: '…' })feuilles). - Initialise
ui.stringsJsonet les fichiers par locale sousui.flatOutputDirà partir du texte de la locale source et des traductions déjà présentes dans le dictionnaire. Les lignes importées n'ont pas de champmodels(elles n'ont pas été traduites automatiquement lors de cette exécution). - Réécrit les points d'appel sûrs :
binding.path.to.leaf.value→t('English source')binding.path.value.replace('{token}', expr)→t('English {{token}}', { token: expr })
- Laisse tout le reste (clés dynamiques, spreads JSX,
.replace().replace()chaînés, déstructuration) intact. Le rapport liste chacun de ces sites avec l'expression exacte, un remplacementt()ou JSX concret, et la ligneimport { t } from '…';à ajouter. - Exécution à blanc par défaut. Transmettez
--writepour appliquer l'initialisation du catalogue et les réécritures sûres. Le rapport est toujours généré. Il liste également les fichiers de dictionnaire et les utilisations résiduelles deuseIntlayer/IntlayerProviderà supprimer après les réécritures manuelles, les clés de catalogue qui nécessitent encoreextractpuistranslate-ui, ainsi qu'un bootstrap d'exécution à coller pour remplacer le module i18n de l'application.
Migrer votre projet
Installez
ai-i18n-tools(voir Installation). Si votre projet n'a pas encore deai-i18n-tools.config.json, initialisez-en un :bashai-i18n-tools init [-P <provider>]
Modifiez sourceLocale et targetLocales pour qu'ils correspondent aux locales déjà présentes dans vos dictionnaires Intlayer, et configurez ui.sourceRoots, ui.stringsJson, ui.flatOutputDir pour pointer vers le code source de votre application et les chemins de catalogue souhaités — les mêmes clés que celles utilisées par translate-ui, voir Chaînes d'interface utilisateur — Étape 1 : Initialisation. 2. Faites d'abord une simulation : ai-i18n-tools migrate-intlayer (sans --write). Lisez migrate-intlayer-report.md pour voir ce qu'il trouve et quels sites d'appel nécessitent une révision manuelle avant toute modification de fichier. 3. ai-i18n-tools migrate-intlayer --write pour initialiser ui.stringsJson / ui.flatOutputDir et réécrire les sites d'appel sûrs. 4. Transmettez le rapport régénéré migrate-intlayer-report.md à un agent de codage IA (recommandé), ou traitez-le vous-même en suivant les étapes :
- Le rapport se termine par un TODO étape par étape : finalisez chaque site à revoir manuellement avec le
t('…')/JSX concret qui y est indiqué, ajoutez la ligneimport { t } from '…';, puis supprimez les fichiers*.content.tsrestants et les utilisations deuseIntlayer/IntlayerProviderrépertoriées dans le rapport.- Collez le bootstrap d'exécution du rapport par-dessus le module i18n de votre application. Dans le contrôle des locales, appelez
loadLocale(next)puisi18n.changeLanguage(next)—loadLocalene fait qu'enregistrer le bundle plat et ne change pas la langue active. - Exécutez
ai-i18n-tools extractpuisai-i18n-tools translate-ui(ousync) pour toutes les chaînes source que le rapport marque comme nouvelles.extractécrit égalementui-languages.json, qui est importé par le bootstrap, exécutez-le donc avant de démarrer l'application même si aucune nouvelle chaîne n'a été ajoutée. Ne modifiez pas manuellementstrings.json, les fichiers de locales plats, ouui-languages.json— ces commandes en assurent la gestion. - Une fois la liste de nettoyage du rapport terminée et l'application fonctionnant avec ai-i18n-tools, supprimez les dépendances
intlayer/react-intlayeret les fichiers de dictionnaire.
- Collez le bootstrap d'exécution du rapport par-dessus le module i18n de votre application. Dans le contrôle des locales, appelez
Exécuter l'exemple
Les étapes ci-dessus s'appliquent à tout projet Intlayer. L'exemple intlayer-migration les détaille sur une petite application Vite + React avec des cas basiques (réécritures automatiques) et complexes (révision manuelle), afin que vous puissiez voir le rapport et le code d'amorçage à l'exécution avant de l'essayer sur votre propre code. intlayer-pristine/ n'est jamais modifié ; src/ est la copie de travail.
npx degit wsj-br/ai-i18n-tools/examples/intlayer-migration intlayer-migration
cd intlayer-migration
pnpm install
pnpm reset
pnpm migrate:dry
pnpm migrate:writeTransmettez migrate-intlayer-report.md à un agent de codage IA (ou modifiez vous-même les fichiers signalés). Le rapport inclut le module d'exécution à coller pour remplacer src/i18n.ts. Dans le gestionnaire de locale, appelez loadLocale(next) puis i18n.changeLanguage(next). loadLocale enregistre uniquement le bundle plat.
pnpm i18n:sync
pnpm devpnpm i18n:sync exécute d'abord extract, qui écrit ui-languages.json. Le bootstrap importe ce fichier, démarrez donc l'application uniquement après l'extraction. Ne modifiez pas manuellement strings.json, les fichiers de paramètres régionaux à plat, ni ui-languages.json.
pnpm reset recopie intlayer-pristine/ sur src/ et efface les catalogues générés afin que vous puissiez recommencer.
Procédure complète : examples/intlayer-migration/README.md.
Commande
ai-i18n-tools migrate-intlayer [paths...] [--write] [--report <path>] [--content-glob <glob>] [--t-import <specifier>]Nécessite ui.stringsJson et ui.flatOutputDir dans la configuration (identique à translate-ui). N'appelle pas de LLM.
| Option | Signification |
|---|---|
[paths...] | Fichiers/répertoires/globs à scanner (par défaut : ui.sourceRoots) |
--write | Initialiser le catalogue et réécrire les sites d'appel sûrs (par défaut : exécution à blanc) |
--report <path> | Chemin du rapport (par défaut : migrate-intlayer-report.md) |
--content-glob <glob> | Motif glob de nom de fichier de dictionnaire (par défaut : **/*.content.ts) |
--t-import <specifier> | Spécificateur d'importation pour t() généré (par défaut : ./i18n relatif si src/i18n.ts existe, sinon i18next) |
Après --write, finalisez les sites à révision manuelle indiqués dans le rapport, supprimez les fichiers *.content.ts inutilisés et le wrapper IntlayerProvider qu'il répertorie, insérez le bootstrap d'exécution et appelez i18n.changeLanguage depuis le contrôle des paramètres régionaux. Exécutez extract puis translate-ui (ou sync) pour les chaînes source que le rapport signale comme nouvelles. extract écrit également ui-languages.json, que le bootstrap importe. Ne modifiez pas manuellement strings.json, les fichiers de paramètres régionaux à plat, ni ui-languages.json.
Voir aussi : CLI — Chaînes d'interface utilisateur, Connecter i18next