import { T, Num, DateTime } from 'gt-next'; export default function Home() { return ( <T> <main> <h1>Hello, world!</h1> <p> <DateTime>{new Date()}</DateTime> </p> <p> GT has everything you need to ship your product in <Num>{118}</Num> languages. </p> </main> </T> );}
How a string becomes a shipped translation.
From the first read of the page to the merged pull request.
GT reads the page you already wrote.
Every text node is picked up where it stands: nav label, heading, body copy, button, legal line, with the markup around it as its context.
128 strings · 6 locales · context attachedIt translates in place.
The strings come back in Spanish and every container re-measures itself. Nothing is re-laid out by hand; the layout absorbs the new lengths.
es · translated in place · re-measuredAround any component.
The button is JSX wrapped in <T>. GT extracts the label, ships the locale build, and the button widens to hold whatever came back.
<T><button>Get started</button></T>
In the voice you asked for.
A context attribute goes straight to the translation agent. Same source string, different register. The heading lands in the tone you wrote for.
<T context="Playful, upbeat tone">With your review, where it matters.
A node marked requires review fires a webhook instead of shipping. Legal reads the Spanish, approves it, and only then does it go live.
webhook → legal counsel · approvedThen the code moves.
A commit triggers the workflow and Locadex reads the file that changed. Not a diff of strings, the source that produced them.
push → workflow · locadex scans app/page.tsx
Locadex maps what changed.
Three findings land on the exact lines that need work: copy that was never wrapped, a date formatted by hand, a label with no locale build.
unwrapped copy · hand-rolled date · unbuilt labelIt edits, then translates in context.
The agent wraps the tree in <T>, swaps the hand-rolled date for <DateTime>, and writes the translations against the file it just read.
+ <T> · + <DateTime> · - toLocaleDateString()And opens the pull request.
One PR, six locales, a diff you can read. Review it like any other change. Merge, and the site is live in every language.
PR #218 · 6 locales · merged