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
- "Agregar la sección de por qué Intlayer sobre alternativas"v8.11.231/5/2026
- "Lanzamiento del Compilador"v7.3.127/11/2025
- "Actualizar tabla comparativa"v5.8.019/8/2025
- "Inicializar historial"v5.5.1029/6/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
¿Por qué deberías considerar Intlayer?
¿Qué es Intlayer?
Intlayer es una biblioteca de internacionalización diseñada específicamente para desarrolladores de JavaScript. Permite la declaración de tu contenido en cualquier parte de tu código. Convierte las declaraciones de contenido multilingüe en diccionarios estructurados para integrarse fácilmente en tu código. Usando TypeScript, Intlayer hace que tu desarrollo sea más sólido y eficiente.
¿Por qué elegir Intlayer sobre otras alternativas?
En comparación con las soluciones principales como next-intl o i18next, Intlayer es una solución que viene con optimizaciones integradas como:
En lugar de cargar archivos JSON masivos en tus páginas, carga solo el contenido necesario. Intlayer ayuda a reducir el tamaño de tu bundle y de tus páginas hasta en un 50%.
Delimitar el contenido de tu aplicación facilita el mantenimiento para aplicaciones a gran escala. Puedes duplicar o eliminar una sola carpeta de funciones sin la carga mental de revisar toda tu base de código de contenido. Además, Intlayer está completamente tipado para garantizar la precisión de tu contenido.
Co-localizar el contenido reduce el contexto necesario para los modelos de lenguaje grande (LLM). Intlayer también viene con una suite de herramientas, como una CLI para probar traducciones faltantes, LSP, MCP y agent skills, para hacer que la experiencia del desarrollador (DX) sea aún más fluida para los agentes de IA.
Intlayer ofrece una serie de características adicionales que otras soluciones de i18n no tienen, como soporte de Markdown, obtención de contenido externo, carga de contenido de archivos, actualización de contenido en vivo, editor visual y más.
Usa la automatización para traducir en tu pipeline de CI/CD utilizando el LLM de tu elección al costo de tu proveedor de IA. Intlayer también ofrece un compilador para automatizar la extracción de contenido, así como una plataforma web para ayudar a traducir en segundo plano.
Conectar archivos JSON masivos a componentes puede generar problemas de rendimiento y reactividad. Intlayer optimiza la carga de tu contenido en tiempo de compilación.
Más que una simple solución de i18n, Intlayer proporciona un editor visual auto-hospedado y un CMS completo para ayudarte a administrar tu contenido multilingüe en tiempo real, haciendo que la colaboración con traductores, redactores y otros miembros del equipo sea fluida. El contenido se puede almacenar localmente y/o de forma remota.
Si usas diferentes frameworks para diferentes partes de tu aplicación (por ejemplo, React, React-native, Vue, Angular, Svelte, etc.), Intlayer proporciona una forma de usar una sintaxis e implementación común en todos los principales frameworks de frontend. También podrás compartir tu declaración de contenido en tu sistema de diseño, aplicaciones, backend, etc.
¿Por qué se creó Intlayer?
Intlayer se creó para resolver un problema común que afecta a todas las bibliotecas de i18n habituales como next-intl, react-i18next, react-intl, next-i18next, react-intl y vue-i18n.
Todas estas soluciones adoptan un enfoque centralizado para listar y administrar tu contenido. Por ejemplo:
Copiar el código al portapapeles
O aquí usando espacios de nombres (namespaces):
Copiar el código al portapapeles
Este tipo de arquitectura ralentiza el proceso de desarrollo y hace que la base de código sea más compleja de mantener por varias razones:
Para cualquier componente nuevo creado, debes:
- Crear el nuevo recurso/espacio de nombres en la carpeta
locales - Recordar importar el nuevo espacio de nombres en tu página
- Traducir tu contenido (a menudo hecho manualmente copiando y pegando de proveedores de IA)
- Crear el nuevo recurso/espacio de nombres en la carpeta
Para cualquier cambio realizado en tus componentes, debes:
- Buscar el recurso/espacio de nombres relacionado (lejos del componente)
- Traducir tu contenido
- Asegurarte de que tu contenido esté actualizado para cada idioma (locale)
- Verificar que tu espacio de nombres no incluya claves/valores no utilizados
- Asegurarte de que la estructura de tus archivos JSON sea la misma para todos los idiomas
En proyectos profesionales que utilizan estas soluciones, a menudo se usan plataformas de localización para ayudar a administrar la traducción de tu contenido. Sin embargo, esto puede volverse costoso rápidamente para proyectos grandes.
Para resolver este problema, Intlayer adopta un enfoque que delimita tu contenido por componente y lo mantiene cerca de tu componente, como solemos hacer con CSS (styled-components), tipos, documentación (storybook) o pruebas unitarias (jest).
Copiar el código al portapapeles
Copiar el código al portapapeles
import { t, type Dictionary } from "intlayer";
const componentExampleContent = {
key: "component-example",
content: {
myTranslatedContent: t({
en: "Hello World",
es: "Hola Mundo",
fr: "Bonjour le monde",
}),
},
} satisfies Dictionary;
export default componentExampleContent;
Copiar el código al portapapeles
import { useIntlayer } from "react-intlayer";
export const ComponentExample = () => {
const { myTranslatedContent } = useIntlayer("component-example");
return <span>{myTranslatedContent}</span>;
};
Este enfoque te permite:
Aumentar la velocidad de desarrollo
- Los archivos
.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}se pueden crear utilizando una extensión de VSCode - Las herramientas de autocompletado de IA en tu IDE (como GitHub Copilot) pueden ayudarte a declarar tu contenido, reduciendo el copiar/pegar
- Los archivos
Limpiar tu base de código
- Reducir la complejidad
- Aumentar la mantenibilidad
Duplicar tus componentes y su contenido relacionado más fácilmente (Ejemplo: componentes de inicio de sesión/registro, etc.)
- Limitando el riesgo de afectar el contenido de otros componentes
- Copiando y pegando tu contenido de una aplicación a otra sin dependencias externas
Evitar contaminar tu base de código con claves/valores no utilizados para componentes no utilizados
- Si no usas un componente, Intlayer no importará su contenido relacionado
- Si eliminas un componente, recordarás más fácilmente eliminar su contenido relacionado ya que estará presente en la misma carpeta
Reducir el costo de razonamiento para los agentes de IA al declarar tu contenido multilingue
- El agente de IA no tendrá que escanear toda tu base de código para saber dónde implementar tu contenido
- Las traducciones se pueden hacer fácilmente mediante herramientas de autocompletado de IA en tu IDE (como GitHub Copilot)
Optimizar el rendimiento de la carga
- Si un componente se carga de forma diferida (lazy-loaded), su contenido relacionado se cargará al mismo tiempo
Características adicionales de Intlayer
Abrir la tabla en una ventana flotante para ver todo el contenido claramente
| Característica | Descripción |
|---|---|
| Soporte Multi-Framework Intlayer es compatible con todos los frameworks y librerías principales, incluidos Next.js, React, Vite, Vue.js, Nuxt, Preact, Express y más. |
| Administración de contenido basada en JavaScript Aprovecha la flexibilidad de JavaScript para definir y administrar tu contenido de manera eficiente. - Declaración de contenido |
| Compilador El compilador de Intlayer extrae automáticamente el contenido de los componentes y genera los archivos de diccionario. - Compilador |
| Archivo de declaración de contenido por idioma Acelera tu desarrollo declarando tu contenido una vez, antes de la generación automática. - Archivo de declaración de contenido por idioma |
| Entorno seguro para tipos Aprovecha TypeScript para garantizar que tus definiciones de contenido y tu código estén libres de errores, mientras te beneficias del autocompletado del IDE. - Configuración de TypeScript |
| Configuración simplificada Ponte en marcha rápidamente con una configuración mínima. Ajusta la configuración de internacionalización, enrutamiento, IA, compilación y manejo de contenido con facilidad. - Explorar la integración de Next.js |
| Obtención simplificada de contenido No es necesario llamar a tu función t para cada fragmento de contenido. Recupera todo tu contenido directamente usando un único hook.- Integración con React |
| Implementación consistente de componentes de servidor Perfectamente adecuado para los componentes de servidor de Next.js, usa la misma implementación para componentes de cliente y de servidor, sin necesidad de pasar tu función t a través de cada componente de servidor.- Componentes de servidor |
| Base de código organizada Mantén tu base de código más organizada: 1 componente = 1 diccionario en la misma carpeta. Las traducciones cercanas a sus respectivos componentes mejoran la mantenibilidad y la claridad. - Cómo funciona Intlayer |
| Enrutamiento mejorado Soporte completo de enrutamiento de aplicaciones, adaptándose sin problemas a estructuras de aplicaciones complejas, para Next.js, React, Vite, Vue.js, etc. - Explorar la integración de Next.js |
| Soporte de Markdown Importa e interpreta archivos locales y Markdown remoto para contenido multilingüe como políticas de privacidad, documentación, etc. Interpreta y haz accesibles los metadatos de Markdown en tu código. - Archivos de contenido |
| Editor visual y CMS gratuitos Un editor visual y un CMS gratuitos están disponibles para los escritores de contenido, eliminando la necesidad de una plataforma de localización. Mantén tu contenido sincronizado usando Git, o externalízalo total o parcialmente con el CMS. - Editor de Intlayer - CMS de Intlayer |
| Contenido eliminable en compilación (Tree-shakable) Contenido eliminable en compilación, reduciendo el tamaño del bundle final. Carga contenido por componente, excluyendo cualquier contenido no utilizado de tu bundle. Soporta la carga diferida (lazy loading) para mejorar la eficiencia de carga de la aplicación. - Optimización de la compilación de aplicaciones |
| Renderizado estático No bloquea el renderizado estático. - Integración de Next.js |
| Traducción basada en IA Transforma tu sitio web a 231 idiomas con un solo clic utilizando las herramientas avanzadas de traducción basadas en IA de Intlayer usando tu propio proveedor de IA/clave API. - Integración de CI/CD - CLI de Intlayer - Autocompletar |
| Integración del servidor MCP Proporciona un servidor MCP (Model Context Protocol) para la automatización del IDE, lo que permite una gestión de contenido perfecta y flujos de trabajo de i18n directamente dentro de tu entorno de desarrollo. - Servidor MCP |
| Extension de VSCode Intlayer proporciona una extensión de VSCode para ayudarte a administrar tu contenido y traducciones, compilar tus diccionarios, traducir tu contenido y más. - Extensión de VSCode |
| Interoperabilidad Permite la interoperabilidad con react-i18next, next-i18next, next-intl y react-intl. - Intlayer y react-intl - Intlayer y next-intl - Intlayer y next-i18next - Adaptadores de compatibilidad de Intlayer |
| Probar traducciones faltantes (CLI/CI) | ✅ CLI: npx intlayer content test (auditoría compatible con CI) |
Comparación de Intlayer con otras soluciones
Abrir la tabla en una ventana flotante para ver todo el contenido claramente
| Característica | intlayer | react-i18next | react-intl (FormatJS) | lingui | next-intl | next-i18next | vue-i18n |
|---|---|---|---|---|---|---|---|
| Traducciones cerca de componentes | ✅ Sí, contenido co-localizado con cada componente | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ✅ Sí - usando Single File Components (SFCs) |
| Integración de TypeScript | ✅ Avanzada, tipos estrictos autogenerados | ⚠️ Básica; configuración adicional para mayor seguridad | ✅ Buena, pero menos estricta | ⚠️ Tipados, necesita configuración | ✅ Buena | ⚠️ Básica | ✅ Buena (tipos disponibles; la seguridad de claves necesita configuración) |
| Detección de traducciones faltantes | ✅ Error de TypeScript y error/advertencia en tiempo de compilación | ⚠️ Principalmente cadenas de respaldo en tiempo de ejecución | ⚠️ Cadenas de respaldo | ⚠️ Requiere configuración adicional | ⚠️ Respaldo en tiempo de ejecución | ⚠️ Respaldo en tiempo de ejecución | ⚠️ Respaldo/advertencias en tiempo de ejecución (configurable) |
| Contenido rico (JSX/Markdown/componentes) | ✅ Soporte directo | ⚠️ Limitado / solo interpolación | ⚠️ Sintaxis ICU, no JSX real | ⚠️ Limitado | ❌ No diseñado para nodos ricos | ⚠️ Limitado | ⚠️ Limitado (componentes a través de <i18n-t>, Markdown a través de plugins) |
| Traducción basada en IA | ✅ Sí, admite múltiples proveedores de IA. Utilizable con tus propias claves API. Considera el contexto de tu aplicación y el alcance del contenido | ❌ No | ❌ No | ❌ Non | ❌ No | ❌ No | ❌ No |
| Editor visual | ✅ Sí, editor visual local + CMS opcional; puede externalizar el contenido de la base de código; integrable | ❌ No / disponible a través de plataformas de localización externas | ❌ No / disponible a través de plataformas de localización externas | ❌ No / disponible a través de plataformas de localización externas | ❌ No / disponible a través de plataformas de localización externas | ❌ No / disponible a través de plataformas de localización externas | ❌ No / disponible a través de plataformas de localización externas |
| Enrutamiento localizado | ✅ Sí, admite rutas localizadas de forma nativa (funciona con Next.js y Vite) | ⚠️ No integrado, requiere plugins (por ejemplo, next-i18next) o configuración de enrutador personalizada | ❌ No, solo formato de mensajes, el enrutamiento debe ser manual | ⚠️ No integrado, requiere plugins o configuración manual | ✅ Integrado, App Router admite el segmento [locale] | ✅ Integrado | ✅ Integrado |
| Generación dinámica de rutas | ✅ Sí | ⚠️ Plugin/ecocistema o configuración manual | ❌ No proporcionado | ⚠️ Plugin/manual | ✅ Sí | ✅ Sí | ❌ No proporcionado (Nuxt i18n lo proporciona) |
| Pluralización | ✅ Patrones basados en enumeraciones | ✅ Configurable (plugins como i18next-icu) | ✅ (ICU) | ✅ (ICU/messageformat) | ✅ Buena | ✅ Buena | ✅ Reglas de pluralización integradas |
| Formateo (dates, numbers, currencies) | ✅ Formateadores optimizados (Intl bajo el capó) | ⚠️ A través de plugins o uso personalizado de Intl | ✅ Formateadores ICU | ✅ Asistentes de ICU/CLI | ✅ Bueno (asistentes de Intl) | ✅ Bueno (asistentes de Intl) | ✅ Formateadores integrados de fecha/número (Intl) |
| Formato de contenido | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) | ⚠️ .json | ✅ .json, .js | ⚠️ .po, .json | ✅ .json, .js, .ts | ⚠️ .json | ✅ .json, .js |
| Soporte ICU | ⚠️ WIP | ⚠️ A través de plugin (i18next-icu) | ✅ Sí | ✅ Sí | ✅ Sí | ⚠️ A través de plugin (i18next-icu) | ⚠️ A través de compilador/formateador personalizado |
| Asistentes de SEO (hreflang, sitemap) | ✅ Herramientas integradas: asistentes para sitemap, robots.txt, metadatos | ⚠️ Plugins de la comunidad/manual | ❌ No es el núcleo | ❌ No es el núcleo | ✅ Bueno | ✅ Bueno | ❌ No es el núcleo (Nuxt i18n proporciona asistentes) |
| Ecosistema / Comunidad | ⚠️ Más pequeño pero de rápido crecimiento y reactivo | ✅ El más grande y maduro | ✅ Grande | ⚠️ Más pequeño | ✅ Mediano, centrado en Next.js | ✅ Mediano, centrado en Next.js | ✅ Grande en el ecosistema de Vue |
| Rendimiento del lado del servidor y componentes de servidor | ✅ Sí, optimizado para SSR / React Server Components | ⚠️ Compatible a nivel de página, pero requiere pasar funciones t en el árbol de componentes para componentes de servidor hijos | ⚠️ Compatible a nivel de página con configuración adicional, pero requiere pasar funciones t en el árbol de componentes para componentes de servidor hijos | ✅ Compatible, requiere configuración | ⚠️ Compatible a nivel de página, pero requiere pasar funciones t en el árbol de componentes para componentes de servidor hijos | ⚠️ Compatible a nivel de página, pero requiere pasar funciones t en el árbol de componentes para componentes de servidor hijos | ✅ SSR a través de Nuxt/Vue SSR (sin RSC) |
| Tree-shaking (cargar solo contenido usado) | ✅ Sí, por componente en tiempo de compilación a través de plugins Babel/SWC | ⚠️ Generalmente carga todo (se puede mejorar con espacios de nombres/división de código) | ⚠️ Generalmente carga todo | ❌ No es predeterminado | ⚠️ Parcial | ⚠️ Parcial | ⚠️ Parcial (con división de código/configuración manual) |
| Carga diferida (Lazy loading) | ✅ Sí, por idioma / por diccionario | ✅ Sí (por ejemplo, backends/namespaces bajo demanda) | ✅ Sí (paquetes de idiomas divididos) | ✅ Sí (importaciones dinámicas de catálogo) | ✅ Sí (por ruta/por idioma), necesita gestión de espacios de nombres | ✅ Sí (por ruta/por idioma), necesita gestión de espacios de nombres | ✅ Sí (mensajes de idioma asíncronos) |
| Purgar contenido no utilizado | ✅ Sí, por diccionario en tiempo de compilación | ❌ No, solo mediante segmentación manual de espacios de nombres | ❌ No, todos los mensajes declarados se agrupan | ✅ Sí, las claves no utilizadas se detectan y eliminan en la compilación | ❌ No, se puede gestionar manualmente con la gestión de espacios de nombres | ❌ No, se puede gestionar manualmente con la gestión de espacios de nombres | ❌ No, solo es posible mediante carga diferida manual |
| Gestión de grandes proyectos | ✅ Fomenta el enoque modular, adecuado para sistemas de diseño | ⚠️ Requiere buena disciplina de archivos | ⚠️ Los catálogos centrales pueden volverse grandes | ⚠️ Puede volverse complejo | ✅ Modular con configuración | ✅ Modular con configuración | ✅ Modular con configuración de Vue Router/Nuxt i18n |
Estrellas de GitHub
Las estrellas de GitHub son un fuerte indicador de la popularidad de un proyecto, la confianza de la comunidad y su relevancia a largo plazo. Si bien no son una medida directa de la calidad técnica, reflejan cuántos desarrolladores encuentran útil el proyecto, siguen su progreso y es probable que lo adopten. Para estimar el valor de un proyecto, las estrellas ayudan a comparar la tracción entre alternativas y brindan información sobre el crecimiento del ecosystm.
Interoperabilidad
intlayer también puede ayudar a gestionar tus espacios de nombres para react-intl, react-i18next, next-intl, next-i18next y vue-i18n.
Usando intlayer, puedes declarar tu contenido en el formato de tu biblioteca de i18n favorita, e intlayer generará tus espacios de nombres en la ubicación de tu elección (ejemplo: /messages/{{locale}}/{{namespace}}.json).
Si deseas seguir usando la API de tu biblioteca i18n actual, intlayer también proporciona adaptadores de compatibilidad (compat adapters): paquetes que exponen exactamente la misma API que react-i18next, next-intl, react-intl, vue-i18n y otras, pero servidas por los diccionarios de Intlayer. Esto te permite migrar progresivamente sin reescribir tu código. Consulta la documentación de los adaptadores de compatibilidad.
Preguntas frecuentes
Coexisten tres generaciones:
- Bibliotecas de catálogo en tiempo de ejecución:
i18next,react-i18next,next-i18next,vue-i18n,ngx-translate,svelte-i18n. Espacios de nombres JSON cargados en tiempo de ejecución. Maduras, agnósticas al framework, sin tipado y entregadas completas a la página. - Bibliotecas de mensajes en tiempo de compilación:
Lingui,Paraglide, ynext-intloreact-intlcon un paso de extracción. Mejor comportamiento de bundle y tipado parcial, pero siguen siendo un catálogo centralizado. - Bibliotecas de capa de contenido:
Intlayer. El contenido se declara y se compila por componente, así que el tipado, el tree shaking, las herramientas de edición y la traducción con IA proceden de las mismas declaraciones.
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 de tiempo de compilación reemplaza las llamadas a useIntlayer por las entradas de diccionario exactas que usa un componente, de modo que se descartan las claves sin usar y los idiomas sin usar. Los diccionarios dinámicos reparten el resto por idioma. Frente a las alternativas habituales, Intlayer reduce el tamaño del bundle y de la página hasta en un 50%. Consulta la optimización del bundle y el benchmark.
Sí, y hay dos caminos. Puedes migrar el contenido de forma progresiva con la guía de migración de i18next o la guía de migración de next-intl. O puedes mantener tu API actual por completo: los adaptadores de compatibilidad exponen exactamente la misma API que i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n y Lingui, pero servida por diccionarios de Intlayer, así que cambian los imports y el código de los componentes no.
Sí. El plugin de sincronización JSON mantiene tus archivos /messages/{locale}/{namespace}.json como 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 los catálogos gettext, y los archivos por idioma te permiten dividir el contenido por idioma en lugar de agrupar los idiomas en un solo archivo.
No. Ejecuta npx intlayer extract e Intlayer lee tus archivos fuente, extrae las cadenas visibles para el usuario y escribe un archivo .content junto a cada uno, así que revisas un diff en lugar de copiar cadenas a un catálogo una por una. Consulta el comando extract.
Para una canalización totalmente automatizada, el compilador de Intlayer hace lo mismo en tiempo de compilación sobre código JSX, TSX, Vue y Svelte, generando los diccionarios en cada cambio para que no haya ninguna clave que mantener a mano. Funciona por análisis estático, así que las cadenas que solo existen en tiempo de ejecución quedan fuera de su alcance, y necesita unas pocas anotaciones para distinguir el texto visible para el usuario de la lógica de la aplicación.
Cinco piezas, todas opcionales:
- Extensión de VS Code: salta de una clave
useIntlayeral archivo de contenido que la declara, extrae contenido de un componente y ejecuta build, fill, test, push y pull desde la paleta de comandos o desde una pestaña de Intlayer dedicada. - Servidor LSP: el mismo conocimiento en cualquier editor que hable LSP, con ir a la definición, buscar todas las referencias, vistas previas al pasar el cursor de un valor traducido, autocompletado de claves y campos, y un aviso cuando una clave no está declarada en ninguna parte. También resuelve las llamadas a
i18next,react-i18next,next-intlyuse-intl, lo que ayuda durante la migración. - Servidor MCP: expone la documentación y la CLI de Intlayer a Cursor, VS Code, Claude Desktop, Claude Code y ChatGPT, para que un asistente responda a partir de la documentación actual en lugar de adivinar, y pueda ejecutar comandos como
intlayer fillpor sí mismo. - Habilidades para agentes: habilidades específicas como
intlayer-config,intlayer-clieintlayer-content, además de una por framework, que enseñan a un agente tu configuración de enrutamiento y los tipos de nodo de contenido. - Plugin de ESLint:
no-raw-textmarca las cadenas codificadas de forma fija, con reglas adicionales para claves de diccionario estáticas y contenido sin usar.
