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ésIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
¿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
.├── locales│ ├── en.json│ ├── es.json│ └── fr.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxO aquí usando espacios de nombres (namespaces):
Copiar el código al portapapeles
.├── locales│ ├── en│ │ ├── footer.json│ │ └── navbar.json│ ├── fr│ │ ├── footer.json│ │ └── navbar.json│ └── es│ ├── footer.json│ └── navbar.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxEste 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
.└── components └── MyComponent ├── index.content.ts ├── index.test.tsx ├── index.stories.tsx └── index.tsxCopiar 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|mjs|cjs|json}}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 |
| 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).