Un CMS headless que habla todos los idiomas
Modela tu contenido una vez, consúltalo con un SDK encadenable y sirve cada idioma desde el edge: sin un pipeline de traducción aparte y sin entradas duplicadas por idioma.
Modelo de contenido · blog-posts
Una entrada · tres idiomas
3 locales · 2 published · 1 draft
01 · Query
Una sola llamada encadenable por pantalla
El SDK se lee como un cliente de base de datos: elige un modelo, fíltralo, expande sus relaciones y pide un idioma. Lo que vuelve ya está localizado.
- Filtra, ordena y pagina sin escribir una capa de API.
- Pide un idioma y obtén ese idioma: los fallbacks se gestionan por ti.
- Expande las relaciones en la misma ida y vuelta en lugar de hacer N+1 peticiones.
const { data } = await client
.from("blog-posts")
.language("tr")
.expand(["author", "category"])
.eq("status", "published")
.order("publishedAt", "desc")
.limit(10)200 OK · 41ms · edge cache HIT
10 entries · tr · author + category expanded
02 · Capabilities
Todo lo que un CMS localizado necesita de verdad
Modelado de contenido, localización por campo y estados de publicación, con la misma infraestructura de MCP y CDN que usa la plataforma de traducción.
Content models
Define los campos una vez en el panel; cada entrada hereda el esquema y su validación.
Per-field localization
Marca un campo como localizado y guardará un valor por idioma, incluidos los slugs de URL.
Relations & expand
Vincula autores, categorías o productos y tráelos en una sola petición con expand.
Draft → published
Las entradas tienen un estado, así que las traducciones sin terminar nunca llegan a los lectores en producción.
MCP for agents
Los agentes de IA crean, traducen y publican entradas mediante herramientas MCP tipadas, en lugar de raspar un panel de administración.
Edge delivery
Las lecturas se sirven desde el mismo CDN que tus traducciones, con la resiliencia de stale-while-revalidate.
03 · Adapters
Añádelo al framework que ya usas en producción
Un provider, un hook. Los adaptadores solo se diferencian en cómo se enganchan al ciclo de vida de cada framework.
Next.js
@better-i18n/content/adapters/nextjs
React
@better-i18n/content/adapters/react
Expo
@better-i18n/content/adapters/expo
Vue
@better-i18n/content/adapters/vue
Svelte
@better-i18n/content/adapters/svelte
Vanilla JS
@better-i18n/content
04 · Better together
Contenido y traducciones en un solo CDN
Las entradas y los textos de la interfaz se publican por el mismo pipeline, así que una release nunca sale traducida a medias: los textos de tu interfaz y el contenido de tu CMS se publican juntos.
UI strings
Claves escaneadas desde el código, traducidas con contexto de glosario y publicadas en el edge.
Long-form entries
Contenido modelado con localización por campo, borradores y relaciones.
Lo que los lectores abren de verdad
Vistas por entrada, idioma y país, para que traduzcas lo que realmente recibe atención.
“La publicación en el CDN es increíble. Subimos las traducciones y quedan activas al instante: sin despliegues y sin invalidar la caché.”

Tevfik Can Karanfil
Fundador, Carna
Get started
Modela tu contenido una vez, publícalo en todas partes
Crea un modelo, añade tu primera entrada y léela en tres idiomas: gratis mientras lo evalúas.