Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección
Historial de versiones
- "Actualizar el uso de la API Solid useIntlayer al acceso directo de propiedades"v8.9.04/5/2026
- "Agregar comando init"v7.5.930/12/2025
- "Actualizar Layout y manejar 404"v7.5.627/12/2025
- "Actualizar documentación"v6.1.53/10/2025
- "Agregado para React Router v7"v5.8.24/9/2025
El 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
Traduce tu sitio web de React Router v7 usando Intlayer | Internacionalización (i18n)
Esta guía demuestra cómo integrar Intlayer para internacionalización sin interrupciones en proyectos de React Router v7 con enrutamiento consciente de la configuración regional, soporte de TypeScript y prácticas modernas de desarrollo.
Cubre tanto enrutamiento basado en configuración (routes.ts) como enrutamiento basado en sistema de archivos (@react-router/fs-routes).
Tabla de contenidos
¿Por qué Intlayer sobre alternativas?
En comparación con soluciones principales como react-i18next o i18next, Intlayer es una solución que viene con optimizaciones integradas tales como:
Intlayer está optimizado para funcionar perfectamente con React Router ofreciendo enrutamiento consciente de locale, middleware para detección de locale, y todas las características necesarias para escalar internacionalización (i18n).
En lugar de cargar archivos JSON masivos en tus páginas, carga solo el contenido necesario. Intlayer ayuda a reducir tu bundle y tamaños de página hasta un 50%.
Delimitar el contenido de tu aplicación facilita el mantenimiento para aplicaciones a gran escala. Puedes duplicar o eliminar una única carpeta de características sin la carga mental de revisar tu entire codebase de contenido. Además, Intlayer está totalmente tipado para garantizar la precisión de tu contenido.
Co-ubicar contenido reduce el contexto necesario por Large Language Models (LLMs). Intlayer también viene con un conjunto de herramientas, como un CLI para probar traducciones faltantes, LSP, MCP, y agent skills, para hacer la experiencia del desarrollador (DX) aún más suave para agentes de IA.
Usa automatización para traducir en tu pipeline CI/CD usando el LLM de tu elección al costo de tu proveedor de IA. Intlayer también ofrece un compiler para automatizar la extracción de contenido, así como una plataforma web para ayudarte a traducir en el background.
Conectar archivos JSON masivos a componentes puede llevar a problemas de rendimiento y reactividad. Intlayer optimiza tu carga de contenido en tiempo de build.
Más que solo una solución i18n, Intlayer proporciona un editor visual auto-hospedado y un CMS completo para ayudarte a gestionar tu contenido multilingüe en tiempo real, haciendo la colaboración con traductores, redactores, y otros miembros del equipo sin fricciones. El contenido puede almacenarse localmente y/o remotamente.
Guía paso a paso para configurar Intlayer en una aplicación React Router v7
Consulta la plantilla de enrutamiento basado en configuración o la plantilla de rutas del sistema de archivos en GitHub.
Instalar dependencias
Instala los paquetes necesarios usando tu gestor de paquetes preferido:
bashCopiar códigoCopiar el código al portapapeles
La bandera
--interactivees opcional. Usaintlayer-cli initsi eres un agente de IA.Este comando detectará tu entorno e instalará los paquetes requeridos. Por ejemplo:
bashCopiar códigoCopiar el código al portapapeles
intlayer
El paquete principal que proporciona herramientas de internacionalización para la gestión de configuración, traducción, declaración de contenido, transpilación, y comandos CLI.
react-intlayer El paquete que integra Intlayer con la aplicación React. Proporciona proveedores de contexto y hooks para la internacionalización de React.
vite-intlayer Incluye el plugin de Vite para integrar Intlayer con el bundler Vite, así como middleware para detectar la configuración regional preferida del usuario, gestionar cookies y manejar redirecciones de URL.
Configuración de tu proyecto
Crea un archivo de configuración para configurar los idiomas de tu aplicación:
intlayer.config.tsCopiar códigoCopiar el código al portapapeles
import { type IntlayerConfig, Locales } from "intlayer"; const config: IntlayerConfig = { internationalization: { defaultLocale: Locales.ENGLISH, locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], }, }; export default config;A través de este archivo de configuración, puedes configurar URLs localizadas, redirección de middleware, nombres de cookies, la ubicación y extensión de tus declaraciones de contenido, deshabilitar logs de Intlayer en la consola, y más. Para una lista completa de parámetros disponibles, consulta la documentación de configuración.
Integrar Intlayer en tu configuración de Vite
Añade el plugin intlayer a tu configuración:
vite.config.tsCopiar códigoCopiar el código al portapapeles
El plugin Vite
intlayer()se utiliza para integrar Intlayer con Vite. Asegura la construcción de archivos de declaración de contenido y los monitorea en modo de desarrollo. Define variables de entorno de Intlayer dentro de la aplicación Vite. Además, proporciona alias para optimizar el rendimiento.Configurar rutas de React Router v7
Configura tu configuración de enrutamiento con rutas que tengan en cuenta la configuración regional:
app/routes.tsCopiar códigoCopiar el código al portapapeles
Configura tu configuración de enrutamiento para usar rutas basadas en el sistema de archivos con
flatRoutes:app/routes.tsCopiar códigoCopiar el código al portapapeles
La función
flatRoutesde@react-router/fs-routeshabilita el enrutamiento basado en el sistema de archivos, donde la estructura de archivos en el directorioroutes/determina las rutas de tu aplicación. La opciónignoredRouteFilesasegura que los archivos de declaración de contenido de Intlayer (.content.ts, etc.) no se traten como archivos de ruta.Crear componentes de diseño
Configura tu diseño raíz y diseños específicos de la configuración regional:
Layout raíz
app/root.tsxCopiar códigoCopiar el código al portapapeles
Declare Your Content
Cree y administre sus declaraciones de contenido para almacenar traducciones:
app/routes/page.content.tsCopiar códigoCopiar el código al portapapeles
Sus declaraciones de contenido pueden definirse en cualquier parte de su aplicación siempre que se incluyan en el directorio
contentDir(por defecto,./app). Y que coincidan con la extensión del archivo de declaración de contenido (por defecto,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Podría colocarse en
app/routes/($locale)._index.content.tsen caso de usar enrutamiento basado en el sistema de archivos.Para más detalles, consulte la documentación de declaración de contenido.
Create Locale-Aware Components
Cree un componente
LocalizedLinkpara navegación con conocimiento de locale:app/components/localized-link.tsxCopiar códigoCopiar el código al portapapeles
En caso de que desee navegar a rutas localizadas, puede usar el hook
useLocalizedNavigate:app/hooks/useLocalizedNavigate.tsCopiar códigoCopiar el código al portapapeles
Utilize Intlayer in Your Pages
Acceda a sus diccionarios de contenido en toda su aplicación:
Página de inicio localizada
app/routes/page.tsxCopiar códigoCopiar el código al portapapeles
app/routes/($locale)._index.tsxCopiar códigoCopiar el código al portapapeles
Para aprender más sobre el hook
useIntlayer, consulta la documentación.Si tu aplicación ya existe, puedes usar el Intlayer Compiler, así como el comando extract, para transformar miles de componentes en un segundo.
Crear un componente Locale Switcher
Crea un componente para permitir que los usuarios cambien de idioma:
app/components/locale-switcher.tsxCopiar códigoCopiar el código al portapapeles
app/components/locale-switcher.tsxCopiar códigoCopiar el código al portapapeles
Para aprender más sobre el hook
useLocale, consulta la documentación.Agregar gestión de atributos HTML
Crea un hook para gestionar los atributos lang y dir de HTML:
app/hooks/useI18nHTMLAttributes.tsxCopiar códigoCopiar el código al portapapeles
Luego úsalo en tu componente raíz:
app/routes/layout.tsxCopiar códigoCopiar el código al portapapeles
Agregar middleware
También puedes usar
intlayerProxypara agregar enrutamiento del lado del servidor a tu aplicación. Este plugin detectará automáticamente la configuración regional actual basándose en la URL y establecerá la cookie de configuración regional apropiada. Si no se especifica una configuración regional, el plugin determinará la configuración regional más apropiada basándose en las preferencias de idioma del navegador del usuario. Si no se detecta ninguna configuración regional, redirigirá a la configuración regional predeterminada.Ten en cuenta que para usar
intlayerProxyen producción, debes cambiar el paquetevite-intlayerdedevDependenciesadependencies.Desde Intlayer v9,
intlayerProxy()está incluido directamente en el pluginintlayer()y habilitado por defecto a través de la opciónrouting.enableProxy(truepor defecto). Registrarlo por separado como se muestra a continuación ahora es opcional — se mantiene por compatibilidad con versiones anteriores y para configuraciones que necesitan controlar el orden de los plugins. Establecerouting.enableProxy: falsepara optar por no participar. Consulta las notas de la versión v9.vite.config.tsCopiar códigoCopiar el código al portapapeles
Extraer el contenido de tus componentes
OpcionalSi tienes una base de código existente, transformar miles de archivos puede llevar mucho tiempo.
Para facilitar este proceso, Intlayer propone un compiler / extractor para transformar tus componentes y extraer el contenido.
Para configurarlo, puedes agregar una sección
compileren tu archivointlayer.config.ts:intlayer.config.tsCopiar códigoCopiar el código al portapapeles
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Resto de tu configuración compiler: { /** * Indica si el compilador debe estar habilitado. */ enabled: true, /** * Define la ruta de los archivos de salida */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Indica si los componentes deben guardarse después de ser transformados. * * - Si es `true`, el compilador reescribirá el archivo de componente en el disco. Entonces la transformación será permanente, y el compilador saltará la transformación para el próximo proceso. De esta manera, el compilador puede transformar la aplicación y luego puede ser removido. * * - Si es `false`, el compilador inyectará la llamada de función `useIntlayer()` en el código solo en la salida de compilación, y mantendrá la base de código intacta. La transformación se realizará solo en memoria. */ saveComponents: false, /** * Prefijo de clave de diccionario */ dictionaryKeyPrefix: "", }, }; export default config;Ejecuta el extractor para transformar tus componentes y extraer el contenido
bashCopiar códigoCopiar el código al portapapeles
Desde v9, el
intlayerCompilerestá incluido en el pluginintlayer. Por lo tanto, no necesitas agregarlo manualmente.Actualiza tu
vite.config.tspara incluir el pluginintlayerCompiler:vite.config.tsCopiar códigoCopiar el código al portapapeles
bashCopiar códigoCopiar el código al portapapeles
Configurar TypeScript
Intlayer utiliza module augmentation para aprovechar los beneficios de TypeScript y fortalecer tu codebase.
Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerados:
Copiar el código al portapapeles
Configuración de Git
Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar confirmarlos en tu repositorio de Git.
Para hacerlo, puedes añadir las siguientes instrucciones a tu archivo .gitignore:
Copiar el código al portapapeles
Extensión de VS Code
Para mejorar tu experiencia de desarrollo con Intlayer, puedes instalar la Extensión oficial de Intlayer para VS Code.
Instalar desde el VS Code Marketplace
Esta extensión proporciona:
- Autocompletado para claves de traducción.
- Detección de errores en tiempo real para traducciones faltantes.
- Vistas previas en línea del contenido traducido.
- Acciones rápidas para crear y actualizar traducciones fácilmente.
Para más detalles sobre cómo usar la extensión, consulta la documentación de la Extensión de Intlayer para VS Code.
Ir Más Lejos
Para ir más lejos, puedes implementar el editor visual o externalizar tu contenido usando el CMS.
Referencias de Documentación
- Documentación de Intlayer
- Documentación de React Router v7
- Hook useIntlayer
- Hook useLocale
- Declaración de Contenido
- Configuración
Esta guía completa te proporciona todo lo que necesitas para integrar Intlayer con React Router v7 para una aplicación completamente internacionalizada con enrutamiento consciente de la configuración regional y soporte para TypeScript.
Preguntas frecuentes
React Router v7 no incluye una capa de mensajes, por lo que debes emparejarla con una biblioteca i18n:
react-i18next/i18next: espacios de nombres JSON cargados en tiempo de ejecución, con un detector de localidad separado para conectarlo al router.react-intlyLingui: mensajes ICU con un paso de extracción.Intlayer: la solución más avanzada. Contenido declarado en cualquier lugar de tu codebase (junto a cada componente o centralizado), compilado en tiempo de compilación, tipado de extremo a extremo, con ayudantes de enrutamiento conscientes de la localidad, traducción con IA, un editor visual y un CMS.
Consulta por qué Intlayer y el benchmark.
Mucho menos que una configuración basada en espacios de nombres, porque una página nunca descarga un catálogo que no renderiza. El marcado renderizado en el servidor resuelve su contenido en el servidor, y el compilador en tiempo de compilación reemplaza las llamadas a useIntlayer con las entradas exactas del diccionario que utiliza un componente, por lo que se descartan las claves no utilizadas e idiomas no utilizados, y los diccionarios dinámicos dividen el resto por localidad. Medido contra las alternativas usuales, Intlayer reduce el tamaño del bundle y la página hasta un 50%. Consulta la optimización de bundle y el benchmark.
Sí, y hay dos caminos. Puedes migrar el contenido progresivamente con la guía de migración de react-i18next o la guía de migración de i18next. O puedes mantener tu API actual completamente: los adaptadores de compatibilidad exponen exactamente la misma API que react-i18next, react-intl e i18next, pero servida por diccionarios de Intlayer, por lo que las importaciones cambian y el código del componente no.
Sí. El plugin de sincronización JSON mantiene tus archivos /messages/{locale}/{namespace}.json como la fuente de verdad y genera diccionarios de Intlayer a partir de ellos, en ambas direcciones. Un plugin de sincronización PO hace lo mismo para catálogos gettext, y los archivos por localidad te permiten dividir el contenido por idioma en lugar de agrupar localidades en un archivo.
No. Ejecuta npx intlayer extract e Intlayer lee tus componentes, extrae las cadenas visibles para el usuario y escribe un archivo .content junto a cada uno, para que revises un diff en lugar de copiar cadenas en un catálogo una por una. El paso 12 de esta guía lo explica.
Para una pipeline completamente automatizada, el Compilador de Intlayer hace lo mismo en tiempo de compilación: escanea tu fuente JSX, TSX, Vue y Svelte en cada cambio, genera los diccionarios y los mantiene sincronizados a través del reemplazo de módulo en caliente, por lo que no hay claves que mantener manualmente en absoluto.
Hay dos límites que vale la pena conocer antes de activar el compilador. Funciona mediante análisis estático, por lo que las cadenas que solo existen en tiempo de ejecución, como códigos de error de API o campos de CMS, quedan fuera de alcance. Y tiene que distinguir el texto visible para el usuario de la lógica de la aplicación como className="active" o un código de estado, lo que requiere algunas anotaciones en una base de código grande. El comando extract evita ambas cosas manteniéndote en el ciclo.
Cinco piezas, todas opcionales:
- Extensión de VS Code: salta de una clave de
useIntlayeral archivo de contenido que la declara, extrae contenido de un componente y ejecuta compilar, llenar, probar, push y pull desde la paleta de comandos o una pestaña dedicada de Intlayer. - Servidor LSP: la misma conciencia en cualquier editor que hable LSP, con ir a definición, encontrar todas las referencias, vistas previas al pasar sobre un valor traducido, autocompleción de claves y campos, y una advertencia cuando una clave no se declara en ninguna parte. También resuelve llamadas a
i18next,react-i18next,next-intlyuse-intl, lo que ayuda mientras migras. - Servidor MCP: expone la documentación y CLI de Intlayer a Cursor, VS Code, Claude Desktop, Claude Code y ChatGPT, por lo que un asistente responde desde documentos actuales en lugar de adivinar, y puede ejecutar comandos como
intlayer fillpor sí mismo. - Habilidades de agente: habilidades enfocadas como
intlayer-config,intlayer-clieintlayer-content, más una por framework, que enseñan a un agente tu configuración de enrutamiento y los tipos de nodos de contenido. - Plugin ESLint:
no-raw-textmarca cadenas codificadas, con más reglas para claves de diccionario estáticas y contenido no utilizado.
