Why localization breaks without a system
Section titled “Why localization breaks without a system”As organizations expand to new markets, content localization often starts as ad-hoc translation — someone copies an English page, translates it, and publishes a separate page. This creates parallel content trees that drift apart. The English version gets updated; the French version does not. New pages appear in some locales but not others. Nobody knows which content is current across markets.
Systematic localization treats the source language as the master content. Translations are linked to the source, tracked for freshness, and delivered through a consistent pipeline. CMS provides the translation workflow. CMP coordinates the localization schedule. Graph delivers locale-appropriate content to each market’s frontend.
Architecture overview
Section titled “Architecture overview”┌────────────────────────────────────────────────┐│ CMP: Localization Planning ││ Schedule translations, assign linguists, ││ track completion by market and deadline │└───────────────────────┬────────────────────────┘ │ translation tasks ▼┌────────────────────────────────────────────────┐│ CMS: Source + Translated Content ││ ┌──────────┐ ┌──────┐ ┌──────┐ ┌──────┐ ││ │ en (src) │→ │ fr │ │ de │ │ ja │ ││ └──────────┘ └──────┘ └──────┘ └──────┘ ││ Locale fallback chain: ja → en │└───────────────────────┬────────────────────────┘ │ all locales synced ▼┌────────────────────────────────────────────────┐│ Optimizely Graph ││ Query by locale, fallback to source language ││ if translation not available │└──────────┬────────────────────┬────────────────┘ │ │ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ site.com/en │ │ site.com/fr │ └──────────────┘ └──────────────┘Step 1: Define your locale strategy
Section titled “Step 1: Define your locale strategy”Before creating content, establish your localization rules:
| Decision | Options | Recommendation |
|---|---|---|
| Source language | English, other | Use your largest market’s language as source |
| Fallback behavior | Show source language, show nothing, show notice | Show source language with a “translation pending” indicator |
| Translation scope | Full site, high-traffic pages only | Start with top 20% of pages by traffic |
| Locale URL pattern | Subdirectory (/fr/), subdomain (fr.site.com) | Subdirectory for SEO simplicity |
Step 2: Configure CMS locale support
Section titled “Step 2: Configure CMS locale support”Enable the target locales in CMS SaaS. For each content type, mark which properties require translation (body text, titles) and which are locale-independent (images, dates, numeric values).
Set up the fallback chain — the order of locale preferences when a translation is missing. A common pattern: regional locale falls back to language locale, then to source language (fr-CA -> fr -> en).
Step 3: Build the translation workflow
Section titled “Step 3: Build the translation workflow”Create a process for managing translations:
- Content created in source language — author publishes the English version
- Translation task created in CMP — localization manager assigns the page to translators with a deadline
- Translator works in CMS — opens the source page, creates the locale version, and translates in context
- Review and publish — reviewer approves the translation, publishes the locale version
For high-volume localization, integrate with a translation management system (TMS) that exports content from CMS, routes it through machine translation and human review, and imports the finished translation back.
Step 4: Query localized content via Graph
Section titled “Step 4: Query localized content via Graph”Configure your frontend to pass the user’s locale preference to Graph queries:
query LocalizedPage($url: String!, $locale: String!) { Page( where: { _metadata: { url: { default: { eq: $url } } } } locale: $locale ) { items { title, body, _metadata { locale { name } } } }}Graph returns the content in the requested locale. If the translation does not exist, it falls back according to the CMS fallback chain configuration.
Step 5: Monitor translation coverage
Section titled “Step 5: Monitor translation coverage”Track which pages have translations available for each locale. Build a coverage dashboard that shows:
- Percentage of pages translated per locale
- Pages where the source has been updated since the last translation
- Average translation turnaround time by locale
This visibility prevents content drift and highlights locales that need more translation resources.
When to use this pattern
Section titled “When to use this pattern”This structured approach is necessary when you support 3 or more locales or when translation accuracy matters for regulatory or brand reasons. For 1-2 locales with a small content set, manual translation within CMS without CMP coordination may be sufficient.