Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección
Al integrar el servidor MCP Intlayer a tu asistente de IA, puedes recuperar todos los documentos directamente desde ChatGPT, DeepSeek, Cursor, VSCode, etc.
Ver la documentación del servidor MCPEl contenido de esta página ha sido traducido con una IA.
Ver la última versión del contenido original en inglésSi tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.
Enlace de GitHub a la documentaciónCopiar el Markdown del documento a la portapapeles
Mapeador de Locales
El Mapeador de Locales es una utilidad poderosa que te ayuda a trabajar con datos de internacionalización en tu aplicación Intlayer. Proporciona tres funciones principales para transformar y organizar datos específicos de cada locale: localeMap, localeFlatMap y localeRecord.
Cómo Funciona el Mapeador de Locales
El Mapeador de Locales opera sobre un objeto LocaleData que contiene toda la información necesaria sobre un locale:
Copiar el código al portapapeles
type LocaleData = { locale: LocalesValues; // Código del locale actual (por ejemplo, 'en', 'fr') defaultLocale: LocalesValues; // Código del locale por defecto isDefault: boolean; // Indica si este es el locale por defecto locales: LocalesValues[]; // Array de todos los locales disponibles urlPrefix: string; // Prefijo de URL para este locale (por ejemplo, '/fr' o '')};
Las funciones del mapeador generan automáticamente estos datos para cada locale en tu configuración, teniendo en cuenta:
- La lista de locales configurados
- La configuración del locale por defecto
- Si el locale por defecto debe tener prefijo en las URLs
Funciones Principales
localeMap
Transforma cada locale en un único objeto usando una función mapeadora.
Copiar el código al portapapeles
localeMap<T>( mapper: (locale: LocaleData) => T, locales?: LocalesValues[], defaultLocale?: LocalesValues, prefixDefault?: boolean): T[]
Ejemplo: Creando objetos de rutas
Copiar el código al portapapeles
import { localeMap } from "intlayer";const routes = localeMap((localizedData) => ({ path: localizedData.urlPrefix, name: localizedData.locale, isDefault: localizedData.isDefault, locales: localizedData.locales, defaultLocale: localizedData.defaultLocale,}));// Resultado:// [// { 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
Similar a localeMap, pero la función mapper devuelve un arreglo de objetos que se aplanan en un solo arreglo.
Copiar el código al portapapeles
localeFlatMap<T>( mapper: (locale: LocaleData) => T[], locales?: LocalesValues[], defaultLocale?: LocalesValues, prefixDefault?: boolean): T[]
Ejemplo: Creando múltiples rutas por cada locale
Copiar el código al portapapeles
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, },]);// Resultado:// [// { 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
Crea un objeto tipo registro donde cada locale es una clave que mapea a un valor transformado por la función mapper.
Copiar el código al portapapeles
localeRecord<T>( mapper: (locale: LocaleData) => T, locales?: Locales[], defaultLocale?: Locales, prefixDefault?: boolean): Record<Locales, T>
Ejemplo: Cargando archivos de traducción
Copiar el código al portapapeles
import { localeRecord } from "intlayer";const translations = localeRecord(({ locale }) => require(`./translations/${locale}.json`));/// Resultado:// {// en: { welcome: 'Welcome', hello: 'Hello' },// fr: { welcome: 'Bienvenue', hello: 'Bonjour' },// es: { welcome: 'Bienvenido', hello: 'Hola' }// }
Configuración del Locale Mapper
El Locale Mapper utiliza automáticamente la configuración de Intlayer, pero puedes sobrescribir los valores predeterminados pasando parámetros:
Usando la Configuración Predeterminada
Copiar el código al portapapeles
import { localeMap } from "intlayer";// Usa la configuración de intlayer.config.tsconst routes = localeMap((data) => ({ path: data.urlPrefix, locale: data.locale,}));
Sobrescribiendo la Configuración
Copiar el código al portapapeles
import { localeMap } from "intlayer";// Sobrescribe locales y locale predeterminadoconst customRoutes = localeMap( (data) => ({ path: data.urlPrefix, locale: data.locale }), ["en", "fr", "de"], // Locales personalizadas "en", // Locale predeterminada personalizada true // Prefijar locale predeterminada en las URLs);
Ejemplos de Uso Avanzado
Creación de Menús de Navegación
Copiar el código al portapapeles
import { localeMap } from "intlayer";const navigationItems = localeMap((data) => ({ label: data.locale.toUpperCase(), href: data.urlPrefix || "/", isActive: data.isDefault, flag: `/flags/${data.locale}.svg`,}));
Generación de Datos para Sitemap
Copiar el código al portapapeles
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: "monthly", priority: data.isDefault ? 0.8 : 0.6, },]);
Carga Dinámica de Traducciones
Copiar el código al portapapeles
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", },}));
Integración de Configuración
El Locale Mapper se integra perfectamente con la configuración de Intlayer:
- Locales: Utiliza automáticamente configuration.internationalization.locales
- Locale Predeterminada: Usa configuration.internationalization.defaultLocale
- Prefijo en URL: Respeta configuration.middleware.prefixDefault
Esto garantiza la coherencia en toda su aplicación y reduce la duplicación de configuraciones.
Historial de Documentación
Versión | Fecha | Cambios |
---|---|---|
5.7.2 | 2025-07-27 | Añadida documentación del mapeador de locales |