Skip to content

Click the words on your own site. Fix them there.

No grid to find the key in, no spreadsheet to export, no guessing which string is the one on screen. Everything below this line is running: click a word and change it.

the overlay is off. Turn it on and the strings become clickable
northbound.shop/checkout?tg_locale=de-DEyour app, running
northboundBrauchst du Hilfe?
Bestellung prüfen
2 items · arrives TuesdayKostenlose Rücksendung
Alta shell jacketgraphite · M€98,00
Merino base layersand · M€20,00

product names come from the catalog, not the string file. The overlay leaves them alone.

Zwischensumme€118,00
Expressversand€10,40
Heute fällig€128,40
Cancel within 30 days, no questions.By paying you accept our terms.
overlay off4/10 approved in de-DE
in the room4 live
Yyouidle
MMiraediting line.total
TThéomoving around the page
RRinlength check
saves · de-DEnothing yet
nothing saved yet_
save a string and it lands here, and in the project as a new version
overlay offalt+click opens a stringesc closesdrag ⣿ to move the panelarabic flips the whole surface, not just the text
Running in your browser. Nothing is sent anywhere, and the teammates on the surface are an illustration.

You can see who owns each language and what is waiting on them.

who owns which language, what is sitting in their queue, and how much of it they have signed off. Nobody has to ask on Friday.
Mira
locale owner · CET · Kraków
812
keys this week
96%
approved first pass
2
locales owned
An illustrative crew on a fixture, not a customer. The roles, grants, queue and attribution are the shipped mechanism; the names and figures are not.
the queue4 waiting · 1 needs you
checkout.noteMira · machine draft, needs a humande-DE12m
pricing.tier.proThéo · length 4% over budgetfr-FR1h 04m
onboarding.step3flux draft · waiting for Rin's shiftja-JP2h 11m
legal.dpa.titleNadia · glossary term lockedar-EG3h 40m
median time to review3h 40m
strings a human saw twice0
handoff emails sent0
every row here is a string waiting on a named person, in the locale they own. Reviewers get the rendered screen, not a csv with a due date

Adding a language is a checkbox.

four locales live · every locale ICU knows available, 708 today · click one and watch it happen
de-DEGerman✓ live · apr 2026
fr-FRFrench✓ live · apr 2026
ja-JPJapanese✓ live · may 2026
ar-EGArabic✓ live · jun 2026
the pipelineidle
nothing in flight_
click a language on the left. The engine scans your keys, drafts every one, runs the same gates, and opens the PR
$ transglot push --wait
add the language in the console, then one push drafts every string it does not have yet.
illustrative: a step here is a timer, not a runglossary and locked terms carry over automaticallyrtl locales bring their own mirrored screenshotsno per-locale fee, on any plan
The 41 files, 1,204 keys and 41 seconds are a fixture. The four gates, the branch and the pull request are the shipped mechanism.

The in-context panel, taken apart.

the same panel you just used, part by part. Nothing here is hidden from the person doing the work
01The key

Read off the DOM node you clicked, not guessed from the text, so two identical strings in different places are never confused for each other.

02The source

Locked on purpose. English lives in the repo; changing it here would put your product copy in a translator's hands.

03The target

Types straight into the project, in the locale you are reviewing. Every keystroke is measured for length and checked for placeholders.

04The memory

An exact match out of memory is one click and zero words billed. Close matches carry a similarity score, and semantic memory is available from Team.

05The gates

Placeholders, glossary, length budget. A red one is called out in the panel before you save, and the same check refuses the string in the pipeline, never the release.

06The save

Writes the reviewed string straight to the project, attributed to you and kept as a version. On a linked repository, the next sync carries it into the pull request.

no screenshots were harmed
the overlay ships with the SDK and stays inert until your app turns it on for a reviewer

German is a third longer than English. Your button is not.

The same ten strings, measured in every language, against a design budget of 1.25x the English. A string over the line is refused by the length check rather than shipped into a broken button.
Germande-DE
compounds, and no spaces to break them
budget
+28%
over budget: the gate refuses
Frenchfr-FR
polite forms run long, articles add up
budget
+19%
fits the 1.25x budget
Japaneseja-JP
counts short, renders wide: about 2x em per glyph
budget
+3%
fits the 1.25x budget
Arabicar-EG
mirrors: layout, icons, the caliper too
budget
-11%
fits the 1.25x budget
the panel shows this number while you typeover budget means the gate refuses the string, not the releasethe budget comes from the component, not from a rule of thumb. Buttons, headlines and toasts each carry their own

FAQs

What a developer asks before putting a snippet in production.

What is in-context translation editing?
Editing the words of your product while looking at the screen they appear on, instead of finding the key in a spreadsheet and hoping. You hold ALT, click the text in your own running app, and the panel that opens is the translation, what memory already has for it and the checks that ran on it.
No, and that is the point. A developer adds the snippet once. After that a marketer, a product manager or an outside translator opens the site, clicks a word and fixes it, without a ticket and without a deploy.
Nothing visible. Mounting the SDK installs the machinery and stays inert; editing mode only turns on when your own app calls it, so you gate it on your own may-review-translations check. The key it carries is read only.
No. The read-only key can fetch, and nothing else. A write requires a nonce issued by your backend and a session that passes the project role check.
The overlay is built for web surfaces. Native projects use the console editor and the file formats, including .strings, .stringsdict, .xcstrings and Android XML, all of which round-trip with plurals intact.
Ninety days, then they are deleted. They exist so a refused row can be reviewed with its real context, not as a permanent archive of your product.
The overlay ships from the Starter plan. Once you are on a paid plan, suggesting in context is free for reviewers on that workspace: the plan decides seats and word volume, not how many people may fix a string.
No. The overlay draws itself inside a shadow root, so its own CSS cannot reach your page and your page cannot reach into it. Nothing about your stylesheet has to change.
works with what you already run

41 connectors, already built.

100,000 words to start, then 10,000 a month

Stop guessing where the string is.

No credit card. The overlay ships from the Starter plan, and installing it is one line in your app.