Tutoriales//9 min de lectura

La guía completa para construir una estrategia de Headless CMS multilingüe

Eray Gündoğmuş
Compartir

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:

  1. 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).

  2. 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.

  3. 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:

EstadoSignificadoVisibilidad en API
DraftTrabajo en progresoNo se devuelve por defecto
Pending ReviewListo para aprobación editorialNo se devuelve por defecto
PublishedContenido en vivoSe devuelve en consultas de API
ArchivedRetenido pero inactivoNo 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

ModeloTipoCaso de uso
pagesCollectionPáginas de marketing, landing pages
blog-postsCollectionArtículos, tutoriales, anuncios
navigationSingletonEstructura de navegación del sitio
site-settingsSingletonConfiguración global (logo, footer, enlaces sociales)
faqCollectionPreguntas frecuentes
changelogCollectionActualizaciones de producto y notas de lanzamiento

Flujo de trabajo de traducción

  1. Crea el contenido en tu idioma fuente. Escribe la entrada en el idioma principal de tu equipo.
  2. Usa el dashboard de estado de traducción para identificar entradas con traducciones faltantes.
  3. Añade traducciones campo por campo usando el editor de entradas o la API.
  4. 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:

  1. Define tus modelos de contenido en el Model Builder
  2. Crea entradas en tu idioma fuente
  3. Añade traducciones usando el editor de entradas o la API
  4. Consulta contenido localizado a través de la REST API
  5. 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.

Explorar la documentación del Headless CMS →

Comments

Loading comments...