This is a demo site built with Root.js.Open the CMS
Sandbox
Blog
Engineering

How we ship a site in five languages without slowing down

Field-level translations, locale fallbacks and a review workflow that fits how content teams actually work.

Jonah Reyes
Jonah ReyesEngineering Lead
Priya Natarajan
Priya NatarajanHead of Content
Overlapping circles

Localization usually breaks down in the handoff: spreadsheets emailed to vendors, strings pasted back by hand, launches that slip because one market is not ready.

Translations live next to the content

In Root.js every text field can be marked translatable. Editors export strings for a doc, a release or the whole site, and translations come back into the same doc. Pages fall back to the default language until a locale is ready.

templates/TemplateHero/TemplateHero.schema.tsts
schema.string({  id: 'title',  label: 'Title',  // Adds the field to translation exports.  translate: true,}),

Reviewing in context

Reviewers preview any page in any locale before it goes live, using the same share links editors already use for drafts.