Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
En intégrant le serveur MCP Intlayer à votre assistant AI, vous pouvez récupérer tous les documents directement depuis ChatGPT, DeepSeek, Cursor, VSCode, etc.
Voir la documentation du serveur MCPLe 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
Locale Mapper
Locale Mapper est un utilitaire puissant qui vous aide à travailler avec les données d'internationalisation dans votre application Intlayer. Il fournit trois fonctions principales pour transformer et organiser les données spécifiques à une locale : localeMap, localeFlatMap et localeRecord.
Comment fonctionne Locale Mapper
Locale Mapper opère sur un objet LocaleData qui contient toutes les informations nécessaires sur une locale :
Copier le code dans le presse-papiers
type LocaleData = { locale: LocalesValues; // Code de la locale actuelle (ex. : 'en', 'fr') defaultLocale: LocalesValues; // Code de la locale par défaut isDefault: boolean; // Indique si c'est la locale par défaut locales: LocalesValues[]; // Tableau de toutes les locales disponibles urlPrefix: string; // Préfixe URL pour cette locale (ex. : '/fr' ou '')};
Les fonctions du mapper génèrent automatiquement ces données pour chaque locale dans votre configuration, en tenant compte de :
- Votre liste de locales configurées
- La locale par défaut définie
- Si la locale par défaut doit être préfixée dans les URLs
Fonctions principales
localeMap
Transforme chaque locale en un objet unique en utilisant une fonction de mapping.
Copier le code dans le presse-papiers
localeMap<T>( mapper: (locale: LocaleData) => T, locales?: LocalesValues[], defaultLocale?: LocalesValues, prefixDefault?: boolean): T[]
Exemple : Création d'objets de routes
Copier le code dans le presse-papiers
import { localeMap } from "intlayer";const routes = localeMap((localizedData) => ({ path: localizedData.urlPrefix, name: localizedData.locale, isDefault: localizedData.isDefault, locales: localizedData.locales, defaultLocale: localizedData.defaultLocale,}));// Résultat :// [// { path: '/', name: 'en', isDefault: true, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },// { path: '/fr', name: 'fr', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },// { path: '/es', name: 'es', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' }// ]
localeFlatMap
Semblable à localeMap, mais la fonction de mappage retourne un tableau d'objets qui est aplati en un seul tableau.
Copier le code dans le presse-papiers
localeFlatMap<T>( mapper: (locale: LocaleData) => T[], locales?: LocalesValues[], defaultLocale?: LocalesValues, prefixDefault?: boolean): T[]
Exemple : Création de plusieurs routes par locale
Copier le code dans le presse-papiers
import { localeFlatMap } from "intlayer";const routes = localeFlatMap((localizedData) => [ { path: localizedData.urlPrefix, name: localizedData.locale, isDefault: localizedData.isDefault, }, { path: `${localizedData.urlPrefix}/about`, name: `${localizedData.locale}-about`, isDefault: localizedData.isDefault, },]);// Résultat :// [// { path: '/', name: 'en', isDefault: true },// { path: '/about', name: 'en-about', isDefault: true },// { path: '/fr', name: 'fr', isDefault: false },// { path: '/fr/about', name: 'fr-about', isDefault: false },// { path: '/es', name: 'es', isDefault: false },// { path: '/es/about', name: 'es-about', isDefault: false }// ]
localeRecord
Crée un objet record où chaque locale est une clé mappée à une valeur transformée par la fonction de mappage.
Copier le code dans le presse-papiers
localeRecord<T>( mapper: (locale: LocaleData) => T, locales?: Locales[], defaultLocale?: Locales, prefixDefault?: boolean): Record<Locales, T>
Exemple : Chargement des fichiers de traduction
Copier le code dans le presse-papiers
import { localeRecord } from "intlayer";const translations = localeRecord(({ locale }) => require(`./translations/${locale}.json`));// Résultat :// {// en: { welcome: 'Welcome', hello: 'Hello' },// fr: { welcome: 'Bienvenue', hello: 'Bonjour' },// es: { welcome: 'Bienvenido', hello: 'Hola' }// }
Configuration du Locale Mapper
Le Locale Mapper utilise automatiquement votre configuration Intlayer, mais vous pouvez remplacer les valeurs par défaut en passant des paramètres :
Utilisation de la configuration par défaut
Copier le code dans le presse-papiers
import { localeMap } from "intlayer";// Utilise la configuration de intlayer.config.tsconst routes = localeMap((data) => ({ path: data.urlPrefix, locale: data.locale,}));
Surcharge de la configuration
Copier le code dans le presse-papiers
import { localeMap } from "intlayer";// Remplace les locales et la locale par défautconst customRoutes = localeMap( (data) => ({ path: data.urlPrefix, locale: data.locale }), ["en", "fr", "de"], // Langues personnalisées "en", // Langue par défaut personnalisée true // Préfixer la langue par défaut dans les URLs);
Exemples d'utilisation avancée
Création de menus de navigation
Copier le code dans le presse-papiers
import { localeMap } from "intlayer";const navigationItems = localeMap((data) => ({ label: data.locale.toUpperCase(), href: data.urlPrefix || "/", isActive: data.isDefault, flag: `/flags/${data.locale}.svg`,}));
Génération des données du sitemap
Copier le code dans le presse-papiers
import { localeFlatMap } from "intlayer";const sitemapUrls = localeFlatMap((data) => [ { url: `${data.urlPrefix}/`, lastmod: new Date().toISOString(), changefreq: "daily", priority: data.isDefault ? 1.0 : 0.8, }, { url: `${data.urlPrefix}/about`, lastmod: new Date().toISOString(), changefreq: "mensuel", priority: data.isDefault ? 0.8 : 0.6, },]);
Chargement dynamique des traductions
Copier le code dans le presse-papiers
import { localeRecord } from "intlayer";const translationModules = localeRecord(({ locale }) => ({ messages: import(`./locales/${locale}/messages.json`), validation: import(`./locales/${locale}/validation.json`), metadata: { locale, direction: ["ar", "he", "fa"].includes(locale) ? "rtl" : "ltr", },}));
Intégration à la configuration
Le Locale Mapper s'intègre parfaitement à votre configuration Intlayer :
- Locales : Utilise automatiquement configuration.internationalization.locales
- Langue par défaut : Utilise configuration.internationalization.defaultLocale
- Préfixage des URLs : Respecte configuration.middleware.prefixDefault
Cela garantit la cohérence dans toute votre application et réduit la duplication de la configuration.
Historique de la documentation
Version | Date | Modifications |
---|---|---|
5.7.2 | 2025-07-27 | Ajout de la documentation du mappage des locales |