Ten languages in three days: field notes from localizing an AI translation product — Transept
Start translating→
localizationi18nai-translationengineering<br>Ten languages in three days: field notes from localizing an AI translation product<br>We localized Transept into German, Ukrainian, Chinese, Portuguese, French, Spanish, Czech, Italian, Polish, and Turkish in one long weekend, using machine translation the way we tell our users to use it: with context, terminology decisions, and human post-editing. These are the plural rules, register flips, typography inversions, and hreflang lessons we collected on the way.
Mariia Ivakhnenko·July 12, 2026·17 min read
On this pageBetween a Friday morning and a Sunday evening in early July, Transept went from an English-only product to one that speaks eleven languages. German, Ukrainian, and Chinese shipped first, with Brazilian Portuguese close behind; French, Spanish, Czech, Italian, and Polish landed the next day; Turkish closed the set on Sunday.
We build an AI translation tool. Staying English-only would have been a quiet admission that we don't believe our own pitch. So we localized the way we tell our users to: machine translation for the breadth, human judgment for the decisions, and a memory of every decision so it never has to be made twice.
Each language meant roughly 3,300 strings in the app, another 3,000 across the marketing site and help center, six legal pages, and every email the product sends. This post is the field notes: the things that surprised us, the traps we fell into, and a few we caught just in time. If you are about to localize a product, or you translate for a living and want to see what software localization looks like from inside the machine, this is for you.
Why we didn't just run it through Google Translate
The honest first question. Machine translation is cheap and instant; every string table on Earth can be shoved through an API in an afternoon. Why not do that?
Because we tried something close to it, and caught the failure in our own product before a user did. Our first pass at the marketing pages treated them the way most string pipelines do: as a spreadsheet of disconnected cells, batched by size, each line translated blind. The output was grammatical, plausible, and subtly dead. A headline and the accent phrase completing it were translated by two different calls that had never met. A FAQ answer didn't know its question. Two columns of a comparison table drifted apart because neither knew the other existed. Meanwhile the in-app UI, where every string had been authored with a context note, read noticeably better in every language. Same model, same day, same pipeline. The difference was context .
That became the rule for everything: the model sees coherent wholes, never shuffled fragments, and every string travels with a note about where it appears and what the user is doing when they see it. "Save button" is not a context note. "Generic save-button label on every form submit; the user has just edited a value and is committing it" is one. It's written for a translator who has never opened the app, and it doesn't matter whether that translator is a human or a model: both produce garbage without it, and both get startlingly good with it.
Translation quality is a function of context before it is a function of the translator. Any working translator will tell you this. It turns out to be just as true when the translator is a machine. That's convenient, because giving a machine more context scales better than giving it more scolding.
The industry name for the workflow we ended up with is MTPE , machine translation post-editing. The machine does the first pass across everything; humans review where trust matters. But MTPE only works in one order: the human decides, the machine executes, the human verifies. The decisions come first. Which brings me to German.
du oder Sie: register is a product decision
German was our first language, and it handed us our first lesson within hours of shipping.
German has two ways to say "you": the informal du and the formal Sie. We launched with du: friendly, startup-flavored, the register half the apps on your phone use. Then we looked at our actual audience (professional translators, agencies, legal teams) and flipped the entire product to Sie the same day.
The lesson was what a register flip costs: a fresh re-translation of everything. The pronoun choice cascades into verb conjugations, imperatives, possessives, even capitalization. Patch it string-by-string and you get half-converted residue everywhere: a Sie sentence with a du verb hiding in the middle. We re-translated every corpus from scratch and grepped for the tell-tale du/dein/dich stems afterward to prove the flip took.
The German homepage. The brand line, "Where every decision becomes memory," turned out to be a thesis statement about localization itself.
Since then, register is the first question we settle for every new language,...