Top 5 Approaches to AI Content Translation Inside a CMS
A marketing team ships a product launch in English at 9 a.m., then spends the next three days waiting on eight localized versions while the page sits half-translated in staging.
A marketing team ships a product launch in English at 9 a.m., then spends the next three days waiting on eight localized versions while the page sits half-translated in staging. By the time French and Japanese go live, the launch news has gone stale, the source copy has changed twice, and nobody is sure which translation reflects the latest legal review. That is the real failure mode of CMS translation: not the act of translating a sentence, but keeping dozens of locales in sync with a source that never stops moving.
Sanity, the AI-native content platform, treats translation as a content workflow problem rather than a string-replacement problem. As the AI Content Operating System for the AI era, it wires generation, review, and governance into the same data model that already holds your source content, so a translated field carries its structure, its references, and its review state instead of arriving as an orphaned blob of text.
This article ranks the five approaches teams actually use to translate content inside a CMS, from the brittle to the durable. Each has a place. The ranking is about which ones survive contact with a real editorial calendar, real compliance constraints, and a source document that changes the moment you turn your back.
1. Schema-aware Agent Actions: translation as a governed pipeline primitive
The most durable approach treats translation as a first-class operation on your content model, not a side trip to an external tool. Agent Actions are schema-aware APIs for LLM-driven content workflows, including translate, that read and write directly against your document structure. Because the action understands the schema, it knows which fields are translatable prose, which are references that should be preserved, and which are settings that must never be touched. You ask it to translate a page's headings and body into eight locales, and it returns structured content that drops back into the correct fields rather than a wall of text you have to re-parse.
This is where Portable Text earns its keep. Translated rich text keeps its annotations, marks, and block structure intact, so a link, a callout, or an inline product reference survives the round trip instead of collapsing into plain text. The model translates the words; the structure is carried by the format, not reconstructed by hope.
Where it fits poorly: if your content lives outside a structured model, or you only need a one-off translation of a static marketing blurb, the setup is more than the job requires. Agent Actions reward teams with many locales and a recurring publishing cadence.
Concrete example: a Functions hook fires translate-on-publish, an Agent Action generates the eight locale variants as draft documents, and Content Releases stages them all for a single coordinated go-live. Editors review in the Studio, legal signs off per locale, and nothing ships until the release is approved.
Structure survives the round trip
2. AI Assist in the editor: translation where the editor already works
The second approach keeps the human in the loop by putting the model inside the editing surface. AI Assist provides in-Studio LLM helpers that let an editor translate the page's headings into eight locales, rewrite a block in a different voice, summarize a section, or fact-check a claim against a knowledge base, all without leaving the document they are working in. For teams whose translation needs are editorial rather than industrial, this is the right altitude. The editor stays accountable for the result because they trigger it, read it, and adjust it in context.
What it does well: nuance and judgment. A human translator-editor can catch that a marketing pun does not carry, that a regional term is wrong for the locale, or that a legal phrase needs the reviewed wording rather than a fluent paraphrase. AI Assist accelerates the typing without removing the person who owns the meaning.
Where it fits poorly: volume. If you need forty documents in twelve locales by Friday, asking editors to drive each translation by hand does not scale. This approach scales people, and the whole point of an AI-native workflow is to scale output instead.
Concrete example: a content editor finishing a campaign landing page selects the hero and body blocks, runs AI Assist to draft the German and Spanish versions inline, fixes two idioms by hand, and hands off to a native reviewer. The translation never leaves the Studio, so review history and field structure stay attached to the document.

Human-in-the-loop is a feature, not a fallback
3. Functions: translate-on-publish automation that connects editors to the pipeline
The third approach automates the trigger. Functions are serverless content automation hooks that fire on content events, including translate-on-publish, moderate-on-publish, and enrich-on-publish. Instead of an editor remembering to kick off translation, the act of publishing the source becomes the signal. The function calls a translation step, writes the locale variants back as drafts, and routes them into review. It is the connective tissue between the editor's action and the LLM workflow.
What it does well: consistency and freshness. Because the Content Lake offers real-time subscriptions, a function can react the moment source content changes, so locales do not silently drift out of date when someone edits the English page. The pipeline reruns; the stale-translation problem from the introduction stops being a manual chase.
Where it fits poorly: Functions are plumbing, not judgment. They decide when and how to route translation, but they do not replace the review gate. Teams that wire up translate-on-publish without a corresponding review and release step can automate their way into shipping unreviewed machine output, which is worse than the slow manual process it replaced.
Concrete example: an editor publishes an updated pricing page. The translate-on-publish function detects the change via a Content Lake subscription, regenerates only the affected locales, marks them as needs-review, and notifies the localization team. No locale ships automatically; the automation handles the busywork, and humans keep the final say.
Freshness becomes automatic
4. App SDK: building a custom translation app editors actually use
The fourth approach is for teams whose translation workflow is specific enough to deserve its own interface. The App SDK lets you build in-Studio LLM apps, so a localization lead can ship, for example, a translation cockpit that shows source and target side by side, surfaces which locales are out of date, batches a translation run across selected documents, and tracks reviewer sign-off per language. It sits one level above AI Assist and Agent Actions: those are the capabilities, and the App SDK is how you package them into a workflow your editors will adopt.
What it does well: fit. Off-the-shelf translation panels assume a generic process. A custom app encodes your process: your locale priority order, your review roles, your glossary, your definition of done. Because it lives in the Studio, it inherits Studio Workspaces, Roles and Permissions, and the audit trail rather than becoming a disconnected side tool.
Where it fits poorly: small teams. Building and maintaining a bespoke app is an investment that pays back when localization is a core, ongoing function with real complexity. If three locales and a quarterly cadence describe your reality, the earlier approaches are a better use of engineering time.
Concrete example: a global ecommerce team builds a translation app that lists every product description with a freshness indicator, lets a localization manager select fifty stale entries, runs an Agent Action across them, and assigns each locale to a reviewer with a single click. The app turns a spreadsheet-driven chase into a governed queue.
The app adapts to you, not the reverse
5. External translation plugins and connectors: the familiar default
The fifth approach is the one most teams start with: a third-party translation service connected to the CMS through a plugin or connector. You push source content out to a translation management system or a machine-translation API, it comes back, and the connector writes it into locale fields. It is ranked last not because it is useless, but because it is the most likely to recreate the exact pain this article opened with.
What it does well: it leverages existing vendor relationships and professional human translation networks. If your organization already pays for a translation agency with linguists, certified legal translation, and a TMS of record, a connector keeps that investment in play and gives you a known quality bar.
Where it fits poorly: synchronization and structure. Connectors that flatten content to strings lose the annotations, references, and block structure that Portable Text preserves, so editors spend time re-linking and reformatting. And because the translation lives in another system until it returns, the source can change while content is out for translation, reintroducing drift. The AI integration here is typically bolted on at the vendor's end rather than wired into your content model, your editor, and your delivery layer.
Concrete example: a team exports a release's pages to an external TMS, the source legal copy is revised two days later, and the returned translations now reference the old wording. Catching that mismatch is manual, which is the failure mode a model-native, event-driven pipeline is designed to remove.
Last place is a starting point, not a dead end
Five CMS translation approaches, ranked by how they survive a moving source
| Feature | Sanity | Contentful | Strapi + LangChain.js | Webflow |
|---|---|---|---|---|
| Native AI translation surface | AI Assist translates blocks in-Studio; Agent Actions run schema-aware translate as a pipeline primitive, both native to the platform. | Studio AI and Quick Start AI offer in-app generation and translation assists, native to Contentful but oriented to single-document editing. | No native AI translation; you wire LangChain.js to an LLM yourself and own the orchestration, prompts, and write-back code. | Webflow AI focuses on site building and copy generation; translation leans on Localization plus third-party connectors. |
| Structure preserved across translation | Portable Text keeps annotations, marks, references, and blocks intact through the round trip, so links and callouts survive. | Rich Text field preserves structure within Contentful, though external translation routing can flatten content depending on the connector. | Depends entirely on your code; preserving structure through chunking and write-back is your responsibility to build and test. | CMS rich text holds structure, but translation via export and reimport risks flattening links and embeds in transit. |
| Event-driven retranslation on source change | Functions fire translate-on-publish; Content Lake real-time subscriptions trigger retranslation the moment the source changes. | App Framework and webhooks can trigger external pipelines on publish; the retranslation logic is custom to build. | Lifecycle hooks exist; reacting to source changes and regenerating locales is custom code you maintain. | Webhooks can notify external systems on publish; coordinated retranslation requires a separate integration layer. |
| Governed review and coordinated release | Content Releases stage all locales for one go-live; Studio review, Roles and Permissions, and Audit logs gate machine output. | Workflows and release features support staged review; coordinating many locale variants depends on configuration and add-ons. | Draft and publish exists; multi-locale review gates and coordinated releases are yours to design. | Editor roles and publishing controls exist; multi-locale coordinated release is handled via Localization settings. |
| Custom translation workflow UI | App SDK builds a Studio-native translation app with freshness indicators, batch runs, and per-locale reviewer assignment. | App Framework supports custom apps in the web app; you build the translation cockpit and its logic. | Fully custom front to back; maximum flexibility, maximum build and maintenance cost. | Designer and CMS UI are fixed; custom translation tooling lives outside Webflow. |
| Best fit | Multi-locale programs with a recurring cadence that need translation governed end to end inside the content model. | Teams already on Contentful wanting in-app AI assists plus connector-based translation for established localization vendors. | Engineering-heavy teams that want total control and will build and own the AI translation pipeline themselves. | Visual-first marketing sites where design control matters more than high-volume, governed multi-locale automation. |