Índice
Gestionar contenido en un solo idioma ya es un desafío. Añade tres, cinco o veinte idiomas y tendrás un problema que la mayoría de las plataformas CMS nunca fueron diseñadas para resolver. La arquitectura Headless CMS ofrece un camino a seguir, pero solo si el soporte multilingüe está integrado en los cimientos, no añadido como un plugin.
Esta guía explica cómo construir una estrategia de Headless CMS multilingüe escalable, utilizando la plataforma de contenido de Better i18n como referencia práctica.
¿Qué hace que un CMS esté "listo para múltiples idiomas"?
Antes de entrar en la implementación, es útil definir cómo se ve el soporte multilingüe genuino. Un CMS está listo para múltiples idiomas cuando cumple tres requisitos:
La estructura del contenido es consciente del idioma. El esquema distingue entre campos que necesitan traducción (títulos, descripciones, texto del cuerpo) y campos que son universales (fechas, booleanos, valores numéricos, activos multimedia).
La API sirve contenido localizado de forma nativa. Puedes solicitar contenido en cualquier idioma con un parámetro de consulta, sin mantener árboles de contenido separados ni duplicar entradas por locale.
El estado de traducción es visible. Los editores pueden ver qué entradas han sido traducidas, cuáles están pendientes y cuáles faltan para un idioma determinado sin salir del dashboard del CMS.
Si tu CMS actual requiere código personalizado o servicios de terceros para cumplir cualquiera de estos tres criterios, estás construyendo sobre una base que creará fricción a medida que escales.
Paso 1: Diseña tus modelos de contenido
Un modelo de contenido es el esquema que define cómo se ve tu contenido. Piénsalo como un blueprint: especifica los campos, sus tipos y sus reglas de validación.
Collections vs. Singletons
La mayoría del contenido cae en dos categorías:
Collections son modelos con múltiples entradas. Los posts de blog, páginas de productos, FAQs, perfiles de miembros del equipo y entradas de changelog son todas collections. Cada collection puede tener cientos o miles de entradas que comparten la misma estructura de campos.
Singletons son modelos con una sola entrada. La sección hero de tu página de inicio, la configuración global del sitio o una página "Sobre nosotros" son singletons. Tienen la misma flexibilidad de campos que las collections, pero representan una única instancia.
Comenzar con el tipo de modelo correcto evita retrabajos más adelante. Pregúntate: "¿Habrá alguna vez más de uno de estos?" Si la respuesta es sí, usa una collection.
Elegir los tipos de campo correctos
Better i18n proporciona más de 19 tipos de campo para que puedas modelar el contenido con precisión sin recurrir a soluciones alternativas como almacenar datos estructurados en un campo textarea.
Aquí tienes un resumen práctico por categoría:
Campos de texto:
- Text — Cadenas de una sola línea para títulos, etiquetas y valores cortos
- Textarea — Texto plano de varias líneas para descripciones y resúmenes
- Rich Text — Un editor Plate.js completo para contenido formateado con encabezados, listas, incrustaciones y estilos en línea
Campos de datos:
- Number — Valores enteros o decimales (precios, cantidades, valoraciones)
- Boolean — Interruptores verdadero/falso (flags de destacado, controles de visibilidad)
- Date / DateTime — Selectores de fecha con precisión de hora opcional
- Enum — Selección simple o múltiple de opciones predefinidas (categorías, etiquetas, estados)
Campos de contacto y enlace:
- URL — Campos URL validados para enlaces y referencias
- Email — Campos de dirección de correo electrónico validados
- Phone — Campos de número de teléfono con validación de formato
Medios y archivos:
- Files / Media — Sube imágenes, PDFs, vídeos y otros activos directamente a las entradas
Campos relacionales:
- Relations — Vincula entradas entre modelos (por ejemplo, el autor de un post de blog, la categoría de un producto)
- Rollups — Agrega datos de entradas relacionadas (por ejemplo, recuento de posts por autor)
- Formulas — Valores calculados basados en otros campos de la misma entrada
Campos de sistema:
- Unique ID — Identificador generado automáticamente para cada entrada
- Status — Estado de flujo de trabajo integrado (draft, pending_review, published, archived)
- Created / Last Edited — Marcas de tiempo automáticas para auditorías
Localización por campo
Aquí es donde el diseño de CMS multilingüe se vuelve interesante. No todos los campos necesitan ser traducidos. El precio de un producto es el mismo en todos los idiomas. Una fecha de publicación no cambia por locale. Una URL de imagen suele ser universal.
Better i18n te permite marcar cada campo como localizable o no localizable a nivel de modelo. Los campos localizables obtienen un valor separado por idioma. Los campos no localizables se comparten en todas las traducciones.
Esta distinción importa porque:
- Reduce la carga de trabajo de traducción (los traductores solo ven los campos que necesitan traducir)
- Previene inconsistencias de datos (los valores universales se almacenan una vez, no se duplican)
- Mantiene limpia la respuesta de la API (los campos no localizables aparecen una vez independientemente del idioma solicitado)
Paso 2: Construye tu flujo de trabajo editorial
Las operaciones CRUD puras no son suficientes para los equipos que gestionan contenido multilingüe. Necesitas un flujo de trabajo que garantice la calidad sin crear cuellos de botella.
El ciclo de vida de estados
Cada entrada en Better i18n sigue un ciclo de vida de cuatro etapas:
| Estado | Significado | Visibilidad en API |
|---|---|---|
| Draft | Trabajo en progreso | No se devuelve por defecto |
| Pending Review | Listo para aprobación editorial | No se devuelve por defecto |
| Published | Contenido en vivo | Se devuelve en consultas de API |
| Archived | Retenido pero inactivo | No se devuelve por defecto |
Este ciclo de vida se aplica por entrada, no por idioma. Una entrada puede publicarse aunque algunas traducciones sigan en borrador. La API respeta el parámetro de consulta status, por lo que tu frontend solo recibe contenido en el estado que solicitas.
Operaciones masivas para escalar
Cuando gestionas cientos de entradas en múltiples idiomas, las actualizaciones una por una no escalan. Better i18n admite operaciones masivas:
- Actualizaciones masivas de estado — Selecciona múltiples entradas y muévelas de draft a published (o cualquier otra transición) en una acción
- Eliminación masiva — Elimina entradas obsoletas en lote
Estas operaciones están disponibles en el dashboard y a través de la API de gestión, para que puedas integrarlas en tu pipeline de CI/CD o scripts de automatización de contenido.
Paso 3: Integra mediante la REST API
La parte "headless" de "Headless CMS" significa que tu contenido se entrega a través de una API, no de un frontend acoplado. Better i18n proporciona una REST API pública con tres endpoints principales:
Endpoints principales
GET /v1/content/:orgSlug/:projectSlug/models GET /v1/content/:orgSlug/:projectSlug/entries GET /v1/content/:orgSlug/:projectSlug/entries/:entrySlug
Parámetros de consulta que importan
El verdadero poder de la API reside en sus parámetros de consulta:
Filtrado por idioma:
GET /entries?language=fr
Devuelve todo el contenido en francés. Los campos marcados como no localizables devuelven su valor universal. Los campos localizables devuelven la traducción al francés si está disponible.
Filtrado por estado:
GET /entries?status=published
Solo devuelve entradas publicadas. Combina con idioma para consultas de producción:
GET /entries?language=de&status=published
Selección de campos (sparse fieldsets):
GET /entries?fields=title,slug,excerpt
Reduce el tamaño del payload solicitando solo los campos que necesita tu frontend.
Expansión de relaciones:
GET /entries?expand=author,category
Resuelve entradas relacionadas en línea en lugar de hacer solicitudes de seguimiento. Esto elimina el problema de consulta N+1 que afecta a muchas integraciones de Headless CMS.
Filtrado por campos personalizados:
GET /entries?filter[page_type]=feature
Filtra entradas por cualquier valor de campo personalizado. Combina múltiples filtros para consultas precisas.
Paginación y ordenación:
GET /entries?page=2&limit=10&sort=createdAt&order=desc
Paginación estándar con ordenación flexible. La respuesta incluye el recuento total para construir la UI de paginación.
Autenticación
Todas las solicitudes de API requieren una clave de API pasada en el encabezado x-api-key. Puedes crear múltiples claves con diferentes permisos, por ejemplo, una clave de solo lectura para tu frontend y una clave de acceso completo para tus scripts de integración con el CMS.
curl -H "x-api-key: your-api-key" \ "https://api.better-i18n.com/v1/content/acme/website/entries?language=en&status=published"
Paso 4: Usa la generación de contenido con IA de forma estratégica
Better i18n incluye generación de contenido con IA a nivel de campo. La capacidad generateFieldContent analiza la estructura de tu modelo y el contenido existente para sugerir valores para campos individuales.
Dónde la generación con IA añade valor
- Meta descripciones SEO — Genera descripciones basadas en el título y el contenido del cuerpo de la entrada
- Extractos y resúmenes — Condensa contenido de formato largo en vistas previas concisas
- Borradores iniciales — Obtén un punto de partida para el contenido del cuerpo que coincida con la estructura de tu modelo
- Texto alternativo para imágenes — Genera texto alternativo descriptivo basado en el contexto de la imagen
Dónde mantener el juicio humano
La generación con IA es un punto de partida, no un resultado final. Úsala para eliminar el bloqueo de campo en blanco y luego edita para que coincida con la voz de tu marca y los requisitos factuales. El enfoque a nivel de campo significa que controlas exactamente qué campos usan sugerencias de IA y cuáles se escriben manualmente.
Paso 5: Planifica tu arquitectura de contenido
Con los bloques de construcción en su lugar, aquí tienes una arquitectura práctica para un sitio multilingüe:
Modelos recomendados
| Modelo | Tipo | Caso de uso |
|---|---|---|
pages | Collection | Páginas de marketing, landing pages |
blog-posts | Collection | Artículos, tutoriales, anuncios |
navigation | Singleton | Estructura de navegación del sitio |
site-settings | Singleton | Configuración global (logo, footer, enlaces sociales) |
faq | Collection | Preguntas frecuentes |
changelog | Collection | Actualizaciones de producto y notas de lanzamiento |
Flujo de trabajo de traducción
- Crea el contenido en tu idioma fuente. Escribe la entrada en el idioma principal de tu equipo.
- Usa el dashboard de estado de traducción para identificar entradas con traducciones faltantes.
- Añade traducciones campo por campo usando el editor de entradas o la API.
- Publica cuando esté listo — el ciclo de vida de estados te permite publicar el idioma fuente inmediatamente y añadir traducciones a medida que estén disponibles.
Errores comunes a evitar
Duplicar entradas por idioma. Este es el error más común. Si creas entradas separadas para las versiones en inglés, francés y alemán de la misma página, pierdes la conexión entre ellas. Usa una sola entrada con traducciones por campo en su lugar.
Ignorar los campos no localizables. No marcar los campos universales (precios, fechas, flags booleanos) como no localizables significa que los traductores ven campos que no deberían tocar y arriesgas inconsistencias de datos.
Saltarse el flujo de trabajo de estados. Publicar contenido directamente sin etapas de revisión funciona para un blogger en solitario, pero falla en equipos. Usa el ciclo de vida de draft a published para mantener la calidad.
Obtener demasiados datos de la API. Usa el parámetro fields para solicitar solo lo que necesita tu frontend. Usa expand para resolver relaciones en una sola solicitud en lugar de encadenar múltiples llamadas a la API.
Primeros pasos
Construir una estrategia de contenido multilingüe no requiere meses de trabajo de infraestructura. Con el Headless CMS de Better i18n:
- Define tus modelos de contenido en el Model Builder
- Crea entradas en tu idioma fuente
- Añade traducciones usando el editor de entradas o la API
- Consulta contenido localizado a través de la REST API
- Usa la generación con IA para acelerar la creación de contenido
El flujo de trabajo completo — desde la creación del modelo hasta la entrega por API — está diseñado para equipos que publican contenido en múltiples idiomas como parte central de su producto, no como una ocurrencia tardía.