Insights
Locale Parity for AI Website Translation
Locale parity is the standard that separates a website that was translated from a website that was localized. If an AI coding agent is going to own multilingual work, it needs that standard—not a prompt that says “translate the site into Spanish.”
The one-sentence test: for every intentional locale, a human and a crawler should experience a coherent twin of the source—same jobs-to-be-done pages, correct language signals, adapted search language, intact structure, and proof that nothing drifted.
Most teams stop at strings. Agents make that failure faster. This article defines locale parity end to end and shows how agents should translate websites without breaking SEO.
Why “translated” sites still fail
Shipping es.json next to en.json feels done. Users and Google disagree.
Common failure modes:
- Missing siblings. English has
/pricing; Spanish 404s. Hreflang points at ghosts. - English chrome on a “localized” page. Nav, cookies, or CTAs still say Book a call while the hero is Spanish.
- Wrong document language.
<html lang="en">on every locale;og:localestuck onen_US. - Broken crawl identity. Two sitemap entrypoints, relative hreflang, or hreflang on noindex placeholders.
- Calqued keywords. French-Canadian titles that are literal English calques miss how people actually search.
- Structure drift. A
{name}placeholder dropped in German; Arabic withoutdir="rtl"; schemainLanguagethat contradicts the URL.
Translation coverage can look green while locale parity is red. Key counters do not catch template drift, SERP language, or reciprocal alternates.
Narrow “parity” tools already exist for pieces of this—catalog key diffs, or international signal checks for currency and phone schema. Useful. Incomplete. Locale parity is the full bar for agent-driven website localization.
Why AI agents make this worse without a standard
Coding agents are excellent at producing large diffs quickly. That is exactly the risk.
Without a playbook, agents tend to:
- Machine-translate every string in one pass.
- Copy English titles into other locales with a dictionary.
- Add
Accept-Languagemiddleware “to be helpful.” - Emit hreflang for every path including
/404and drafts. - Skip verification because the build still passed TypeScript.
Speed without a definition of done creates multilingual debt that looks like progress. Locale parity is that definition of done.
If you want the packaged version of this playbook—checklists, translation guidance, and offline HTML checkers—get the free MIT i18n Agent GitHub package and clone it into Cursor or Claude Code.
The five layers of locale parity
| Layer | Question it answers | Failure looks like |
|---|---|---|
| Route & content | Do intentional pages exist as twins? | Soft-404s, orphan EN links, incomplete money-page set |
| Document & crawl | Do crawlers trust the language cluster? | Wrong lang, broken hreflang, dual sitemaps |
| Meaning | Does copy work in that market’s language and search? | Calques, tone mismatches, unused local queries |
| Structure | Does the twin still work? | Dropped placeholders, missing plurals, LTR Arabic, wrong schema URLs |
| Verification | Can regressions fail the build? | Silent drift after the next agent PR |
1. Route and content parity
Decide which pages are intentional per locale: money pages, insights, legal, tools. Default locale unprefixed or always prefixed—pick one strategy and stay consistent.
Rules agents should follow:
- Build the same intentional route tree per locale, or omit a page from hreflang when it truly does not exist.
- Keep internal links in-locale (
/es/about, not/aboutfrom a Spanish page). - Apply the same noindex policy to twins (
/coffee, placeholders, agent markdown mirrors). - Prefer stable slugs across locales so alternates map cleanly.
Content collections (MDX/Markdown), department data files, and UI chrome are separate translation layers. Agents must inventory all three—not only messages/*.json.
2. Document and crawl parity
This is multilingual SEO hygiene. Get it wrong and Google never trusts the cluster.
Minimum signals per indexable locale URL:
- Self-referencing absolute canonical
- Matching
og:url - Localized title and description
<html lang>anddirfrom a locale registry (BCP47 where appropriate)- Reciprocal
hreflangset with BCP47 codes (fr-CA,zh-CN) plusx-defaultpointing at the default-locale URL - No hreflang (or
og:locale:alternate) on noindex pages - One public sitemap entrypoint whose xhtml alternates agree with
<head> - Structured data with correct
inLanguageand locale-correct entity URLs
Anti-patterns: geo-IP force redirects, dual sitemap identities, relative hreflang, inventing locale codes that are not in the registry.
3. Meaning parity
Meaning parity is where localization stops being string replacement.
Agents should:
- Maintain a glossary (product names, locked URLs, terms that must not be translated).
- Follow a style guide per market (Canadian French ≠ France French; neutral LatAm Spanish ≠ Spain-only idioms).
- Adapt keywords for local SERPs—one primary intent per URL—rather than translating English keyword maps literally.
- Rewrite H1s, titles, and metas for local clarity and CTR; keep brand entities consistent.
- Reject thin machine translation that would soft-404 in Search Console.
Meaning parity is also what AI search surfaces reward: clear entities and answers in the user’s language, not English paragraphs under a Spanish URL.
4. Structure parity
A twin that renders garbage is not a twin.
Check:
- Interpolation / ICU placeholders match the source (
{count},<0>…</0>tags). - Plural and select branches match what the target language needs (CLDR), not a copy of English’s forms.
- RTL locales get
dir="rtl"and readable fonts; CJK gets appropriate typography. - Dates, numbers, and currencies use locale-aware formatting when shown.
- JSON-LD does not hard-code English-only paths or
enlanguage on every page.
Catalog-only parity scripts help here. They are necessary but not sufficient—pair them with HTML and schema checks over dist/.
5. Verification parity
If an agent can merge without proof, drift is guaranteed.
Verification parity means:
- Build-time gates over generated HTML: title, description, H1, canonical,
og:url,lang, hreflang completeness, noindex rules. - Locale inventory tests: every intentional money page exists in every live locale (or is explicitly excluded).
- Production spot-checks after deploy: live head tags, sitemap identity, analytics
page_locale, RTL sample. - Agent-readable reports so the next run fixes findings instead of re-translating blindly.
Rank & Beyond runs this class of check on our own multilingual site. The reusable skill pack encodes the same discipline for other repos.
Agent anti-patterns (do not ship these)
| Anti-pattern | Why it hurts |
|---|---|
Geo-IP or Accept-Language hard redirects |
Cache fragmentation, crawler confusion, trapped users |
| Hreflang on noindex / 404 / drafts | Pollutes language clusters |
| Dual sitemap entrypoints | Split crawl identity |
| English keyword calques as “localization” | Misses local demand language |
| One-shot MT dump with no glossary | Tone and product-term drift |
| Translating locked brand or booking URLs | Breaks conversions and trust |
| Declaring a locale “live” without route twins | Hreflang to 404 |
When an agent proposes any of these “for convenience,” reject the change.
How AI agents should translate a website
Treat localization as a phased engineering workflow, not a single prompt.
Phase A — Discover
- Detect framework, routing, i18n libraries, and content sources.
- Inventory current locales, default locale, and URL strategy.
- Separate money pages, insights/blog, legal, and noindex utilities.
- Note locked external IDs (booking links, analytics IDs) that must not be invented.
Phase B — Plan
- Write or update a locale registry (codes, labels,
htmlLang,dir, OG locale, BCP47). - Set market priority (deepen primary markets before exploding every spoke × every locale).
- Draft a keyword map with adapted queries per locale—not English calques.
- Flag risks: RTL, CJK, legal copy, thin pages.
Phase C — Implement technical SEO
- Wire helpers:
localizePath,alternatePath, locale-from-pathname. - Emit canonical, OG, hreflang, sitemap i18n, schema URLs.
- Keep language choice in the UI; do not force redirects.
- Align
robots.txt, sitemap URL, and agent indexes (llms.txt,agent.json).
Phase D — Translate and transcreate
- Localize UI chrome, structured data copy, and long-form content as separate passes.
- Apply glossary and style guide; adapt titles/metas for SERP language.
- Preserve code, placeholders, and locked strings.
- Prefer human review on H1, title, meta, and FAQs for priority markets.
Phase E — Verify
- Run HTML auditors on
dist/or a URL list. - Fail CI on missing hreflang, lang mismatches, og/canonical drift, noindex alternates.
- Spot-check production after deploy.
- Record what remains intentional debt versus blockers.
That is locale parity as an operating loop. Agents that only do Phase D are translators. Agents that complete A–E are localizers.
Practical checklist you can paste into a PR
Use this as the definition of done for any multilingual PR:
- Locale registry is the single source of truth for codes and
dir - Intentional routes exist for each live locale (or alternates omit missing pages)
- In-locale internal links; no accidental EN leaks on non-EN pages
- Canonical ===
og:urlon every indexable twin - Full reciprocal BCP47 hreflang +
x-defaulton indexable pages only - Titles/descriptions localized and unique; keywords adapted, not calqued
- Placeholders/plurals/RTL/schema structure intact
- One sitemap entrypoint; noindex routes excluded
- Build gate fails on regressions
- Production spot-check completed for at least one non-EN money page
Get the i18n Agent GitHub package
If you want agents to follow this playbook by default, install the skill instead of reinventing the checklist every sprint.
Get the free MIT i18n Agent package — open the public GitHub repo, clone it into Cursor or Claude Code, and point AGENTS.md / CLAUDE.md at SKILL.md.
Inside: phased agent workflow, multilingual SEO checklist, translation playbook, and offline Python checkers for hreflang, canonical/og:url, lang mismatches, and noindex alternate mistakes.
For founders who need the broader revenue system—not only localization—see BeyondOS™ and how Website, SEO, and Content departments share memory under one plan.
Locale parity FAQ
Is locale parity only for SEO?
No. SEO is the crawl layer. Locale parity also covers UX completeness, structural integrity, and CI proof. A site can rank for a translated query and still fail users if RTL, CTAs, or placeholders are wrong.
Do we need every insight in every language on day one?
No. Ship English spokes first when demand is unclear; localize priority markets (for example Canadian French, then Spanish) for winners; maintain other locales for clear winners or existing parity. Never declare a locale live in hreflang without intentional pages.
Can one agent prompt replace a TMS?
For many product marketing sites, an agent with a strict playbook, glossary, and CI gates is enough—especially when translations live in the repo. A TMS still helps large continuous programs with many human translators. Locale parity is the quality bar either way.
What is the fastest way to start?
Inventory locales and money pages, fix document/crawl signals, then translate chrome and top URLs with adapted SERP copy. Install the i18n Agent package so the next agent run audits before it rewrites.