Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Le contenu de cette page a été traduit à l'aide d'une IA.
Voir la dernière version du contenu original en anglaisSi vous avez une idée d’amélioration pour améliorer cette documentation, n’hésitez pas à contribuer en submitant une pull request sur GitHub.
Lien GitHub de la documentationCopier le Markdown du doc dans le presse-papiers
Nouvel Intlayer v9 - Quoi de neuf ?
Bienvenue sur Intlayer v9 ! Cette version majeure marque une étape importante dans la simplification du chemin de migration vers Intlayer avec les packages d'adaptateurs de compatibilité pour les principales bibliothèques i18n (react-i18next, next-intl, vue-i18n, etc.) et ajoute la prise en charge de structures de contenu riches : les Collections, les Variants et les Dynamic Records.
Table des matières
Packages d'adaptateurs de compatibilité
La migration vers Intlayer depuis les bibliothèques i18n populaires est désormais plus facile que jamais. Nous avons créé cinq packages de compatibilité qui exposent les mêmes API publiques exactes que les bibliothèques i18n standard, mais délèguent tout le travail de traduction à Intlayer au moment de l'exécution.
Exposer la même API publique avec un typage strict
En remplaçant les imports, vous bénéficiez de tous les avantages d'Intlayer (y compris la sécurité de type au moment de la compilation par rapport à vos dictionnaires réels) avec des modifications de code minimales :
@intlayer/i18next@intlayer/react-i18next@intlayer/next-intl@intlayer/next-i18next@intlayer/vue-i18n
Par exemple, changez simplement :
Copier le code dans le presse-papiers
en :
Copier le code dans le presse-papiers
Vos clés seront désormais strictement typées par rapport à vos dictionnaires Intlayer, offrant une auto-complétion complète des chemins par points dans votre IDE !
Plugins d'alias de Bundler (Vite, Next.js, Turbopack)
Pour permettre la migration sans réécrire manuellement toutes vos déclarations d'import, chaque package d'adaptateur de compatibilité inclut un plugin de bundler personnalisé (Vite ou Next.js) sous le sous-chemin /plugin.
Ces plugins réécrivent automatiquement les imports existants (par exemple react-i18next ou next-intl) vers leurs équivalents @intlayer/* au moment de la compilation.
Exemple Next.js (Webpack / Turbopack)
Au lieu de withIntlayer, enveloppez votre configuration Next.js avec le plugin de compatibilité :
Copier le code dans le presse-papiers
Exemple Vite (React, Vue, Solid, Svelte)
Copier le code dans le presse-papiers
Résolveur d'exécution mutualisé
Tous les adaptateurs de compatibilité acheminent désormais la résolution des traductions via un seul analyseur d'exécution hautement optimisé : @intlayer/core/messageFormat.
- Interpoler le message : Résout les
{{var}}standard (espaces et chemins par points), les arguments formatés ICU ({v, number, percent}etc.) et les templates{var}bruts. - Résolveur de nœuds de message : Résout les nœuds imbriqués :
insert(),plural()(règles de pluriel CLDR),enu()(énumération),gender(), les balises HTML, les tableaux et les nœuds de fonction appelables. - Analyseur de balises tokenisées : Prend en charge les balises XML/HTML en ligne et les balises numérotées (par exemple,
<1>children</1>) pour permettre le rendu de texte riche dès la première utilisation.
Spécification des fonctionnalités : Collections, Variants & Dynamic Records
Intlayer v9 va au-delà des objets clé-valeur statiques, permettant aux dictionnaires de déclarer des structures de mise en page dynamiques entièrement typées de bout en bout.
1. Collections
Définissez une liste d'éléments ordonnés gérée par un CMS (par exemple, FAQ, produits ou listes de blogs) :
Copier le code dans le presse-papiers
Utilisation :
Copier le code dans le presse-papiers
2. Variants
Proposez des tests A/B, des en-têtes saisonniers, des feature flags ou des pages de destination personnalisées :
Copier le code dans le presse-papiers
Utilisation :
Copier le code dans le presse-papiers
3. Dynamic Records
Définissez des dictionnaires dont les entrées sont chargées dynamiquement au moment de l'exécution via des ID de requête :
Copier le code dans le presse-papiers
Utilisation :
Copier le code dans le presse-papiers
Chargement dynamique et optimisations de la taille du bundle
Pour maintenir les bundles extrêmement petits, Intlayer v9 prend en charge le chargement paresseux dynamique.
Dans votre configuration, définissez importMode sur 'dynamic' ou 'fetch' :
Copier le code dans le presse-papiers
Au moment de la compilation, @intlayer/swc et @intlayer/babel analysent vos fichiers et remplacent les appels useIntlayer / getIntlayer par des wrappers optimisés par tree-shaking (useDictionary / useDictionaryDynamic). Seul le contenu requis pour l'élément de collection, le variant ou la locale sélectionné est chargé, empêchant ainsi votre bundle de production de contenir des traductions inutilisées.
Notes de migration depuis la v8
Si vous effectuez une mise à niveau depuis la v8, notez que la v9 n'inclut pas de changements majeurs (breaking changes). Voici cependant les changements clés :
- Locales et dialectes : Si vous utilisez des dépendances i18n externes, ajoutez leurs plugins d'adaptateur de compatibilité respectifs dans votre configuration ou votre setup de bundler pour réécrire automatiquement les imports.
- Sélecteurs personnalisés : Lors de l'appel de
useIntlayer, le deuxième paramètre est désormais réservé à un objet d'options contenant{ locale, item, variant, id }. Si vous passiez auparavant une chaîne de caractères de locale directement, vous pouvez toujours le faire, mais l'utilisation de l'objet d'options est recommandée pour les sélections avancées.