August 9, 2026 · Platform

One platform, twenty languages

This article describes the product at publication. See AI Builder and Agent Teams for current capabilities.

Take one real string: the button label "Connect Search Console" that shipped on a Tuesday afternoon when we added a new onboarding step to the domain-setup flow. Nothing special about it — one `data-i18n` key, one English sentence, the kind of change that goes out a dozen times a week. Here's what actually happens to it between the commit and the screen, in order.

The string, as committed

The developer writes the English key by hand, same as always, and adds the Chinese translation by hand right next to it — those two are never machine-generated, because they're the ones native speakers on the team actually read and catch drift in. Everything else about the string is left alone. No translation file for French or Korean is touched. No one opens eighteen other JSON files to keep them in sync. That's the whole point: the commit is scoped to the two languages a human actually wrote.

The registry it lands in

The key drops into a single source of truth that both the backend and the frontend read from — one file that knows the code, native name, browser locale prefixes, and text direction for every supported language. It doesn't know anything about "Connect Search Console" specifically; it just knows that whatever new keys show up, there are twenty language slots waiting, eighteen of them currently missing this one.

20languages in the registry
1new key added by hand
18catalogs still missing it

The run that picks it up

Shipping the feature is the trigger. Nobody files a ticket to "translate the new onboarding step." A generation pass runs against the registry, diffs every catalog against the English source, and fills in exactly the strings that are missing — this one included — leaving every other line in every other file untouched. If we'd waited for someone to remember, this button would still say "Connect Search Console" in the German UI a year from now, sitting next to German everywhere else. That's the failure mode we built the whole pipeline to avoid: not bad translations, but translations that never happen because nothing forced the issue.

The one word that ships broken on purpose

Here's the part that surprises people. The onboarding step also introduces a new domain status value, and status values come from the database, not from a translator's queue — they get localized at the render edge, with an English fallback baked in. So for the few hours between the code shipping and the catalogs regenerating, a French user sees the raw English word for that status instead of a blank space, an error, or a stack trace. Deliberately worse-looking than a proper translation, deliberately better than broken.

We'd rather ship an honest gap than a silent failure.

The switcher

When the catalogs land, nothing about how the user gets to them changes. The globe icon sits in the nav on every public page — not a preference buried in account settings — and flipping it re-renders the current page in place. If someone's mid-way through that new onboarding step when they switch from English to Vietnamese, the button re-labels under their cursor without reloading the page or losing their spot in the flow. That detail cost more engineering time than the translation pipeline itself, honestly, because "re-render everything without a reload" touches every stateful component on the page, not just static copy.

The agent that never saw the registry

Now the twist: none of this machinery is what a user of that onboarding flow actually comments on. What gets noticed is that the assistant just answers back in whatever language they asked in — not because it read the string registry, but because it's a language model responding in kind, the same way it would to a person.

  • Open the AI assistant mid-setup and ask a question in Vietnamese — it answers in Vietnamese.
  • Ask the site builder to draft a plan in Japanese — the plan comes back in Japanese.
  • Ask for an SEO report in Spanish — the report is Spanish end to end.

The interface strings are the twenty-catalog machine described above; the agent output is a completely different mechanism arriving at the same experience, and it's the one that makes the product feel like it was built for you specifically rather than translated at you.

What doesn't get this treatment: the legal pages and this blog stay English on purpose. A mistranslated Terms of Service is a liability, not an inconvenience, and machine translation of precision-critical text multiplies ambiguity in exactly the place you can't afford it. The chrome around those pages — nav, footer, buttons — still runs through the same twenty-language machine as everything else.
Platform
ShareXLinkedInFacebookRedditQuoraWhatsAppTelegramEmail
← All posts