Wrap your JSX in <T>, run one command, and ship every string in 100+ languages.
public/_gt/[locale].json — one string, five locales · widths measured at render, not typed
Trusted by the world’s best companies
Developer-first SDKs to translate everything from simple sites to complex user experiences.
1import { T, Num, DateTime } from 'gt-next';23export default function Home() {4return (5<T>6<main>7<h1>Hello, world!</h1>8<p>9<DateTime>{new Date()}</DateTime>10</p>11<p>12GT has everything you need to ship your13product in <Num>{118}</Num> languages.14</p>15</main>16</T>17);18}
Server components, middleware locale routing, and static translations built at build time.
<T>…</T>es'¡Hola, mundo!'de1.234.567,89de1.280,00 €fr29 juil. 2026pl1 plik · 4 plikiuseGT() · getGT()context="file"fr/fr/a-proposWhat translation does to a layout, the libraries you write against, the platform that holds your context, and the edge that serves the result — one system.
One button in four languages, measured by the browser rather than estimated. German runs long, Japanese runs short, and Arabic re-anchors the whole line.
Save changes
Änderungen speichern
変更を保存
حفظ التغييرات
widths measured at render — measureText, not typed
A layout that only fits the source string breaks somewhere near the top of this list.
Developer-first libraries for React, Next.js, and more, battle-tested in production apps with millions of users.
<T> wraps any JSX — nested elements and alluseGT() returns strings for anything that is not JSX<Num> and <DateTime> format to the reader’s localeOne word, two meanings. A context tag decides which translation ships.
enSave
context=“file”
speichern
dewrite it to disk
context=“discount”
sparen
despend less money
One term, six locales, decided once. Per-locale style rules keep the wording identical everywhere it appears.
enSettings
Automatic detection and locale-based routing, on SEO-friendly paths you never configure.
URL locale → cookie → Accept-Language → default
AI agents that understand your project structure and localize your content in context.
1import { T } from 'gt-next';23export default function Home() {4return (5<T>6<h1>Hello, world!</h1>7<p>Get started</p>8<p>Payment received</p>9</T>10);11}
Locales in, output path out. The CLI and every SDK read the same file.
{"defaultLocale": "en","locales": ["es", "fr", "ja", "de", "zh"],"files": {"gt": {"output": "public/_gt/[locale].json"},"json": {"include": ["content/[locale]/*.json"]}}}
Latin, Cyrillic, Greek, Arabic, Devanagari, Han, Hangul, Thai — joined, stacked and bidi-resolved by the browser, with per-script fallbacks in the SDK.
5 points of presence shown · anycast · versioned per locale
A global, low-latency translation CDN. Push over-the-air updates without redeploying your app.
English has two plural forms, Polish four, Japanese one. GT ships ICU plurals, so the number picks the form instead of the string.
count12522
en2 forms
1 file2 files5 files22 files
onefile
otherfiles
pl4 forms
1 plik2 pliki5 plików22 pliki
oneplik
fewpliki
manyplików
otherpliku
ja1 form
1個のファイル2個のファイル5個のファイル22個のファイル
other個のファイル
Set dir and the browser mirrors rows, alignment and controls. Nothing about the panel is written twice.
dir="ltr"
dir="rtl"
Preview translations in development before they go live.
Translate user-generated content on demand, in full context.
“Great seats, worth every peso.”
“Ótimos lugares, valeu cada peso.”
Bring your own detection function, components and formats.
Pin a term, set per-locale style rules. Both hold on every later run.
Everything above assumes the unglamorous things already work. They do.
Agents write the translations. You open one grid — the source beside every target locale — and touch only what needs a human.
Get started by editing the page.tsx file.
app/page.tsx:5Para comenzar, edita el archivo page.tsx.
Approved開始するには、page.tsxファイルを編集してください。
ApprovedUm zu beginnen, bearbeiten Sie die Datei page.tsx.
ApprovedGenerated by create-next-app
app/page.tsx:9Generado con Create Next App
Approvedcreate-next-app によって生成されました
Needs reviewErstellt mit Create Next App
ApprovedDeploy now
app/page.tsx:14Deploy Now
Needs review今すぐデプロイ
ApprovedDocumentation
app/page.tsx:18Documentation
Approvedドキュメント
ApprovedDokumentation
ApprovedLooking for a starting point or more instructions? Head to Templates or the Learning center.
app/page.tsx:6¿Buscas un punto de partida o más instrucciones? Dirígete a Templates o al centro de Learning.
Approved開始点や詳細な手順をお探しですか?テンプレートまたはラーニングセンターをご覧ください。
Needs reviewSuchen Sie nach einem Ausgangspunkt oder weiteren Anweisungen? Gehen Sie zu Templates oder zum Learning Center.
ApprovedReview state is scoped per entry and per locale — approve the Spanish translation while the Japanese one is still in review.
You review exceptions, not everything — the same content is simultaneously in your repo.
@@ public/_gt/ja.json @@"0d5c1f2a": "ドキュメント",-"a41f0c92": "create-next-app によって生成されました",+"a41f0c92": "create-next-app により生成されました","3b9e51b7": "今すぐデプロイ","8f2ab41c": "開始するには、page.tsxファイルを編集してください。","6c2d84e0": "テンプレートまたはラーニングセンターをご覧ください。"
Generated by create-next-app
jacreate-next-app によって生成されました
$ npx gt translate --tag v2.1.0 -m “Added checkout page translations”
Curate glossaries, style rules, and project context — with editing, versioning, and integrations under one project, one config, and one bill.
Everything the agents read before they write: your glossary, your locale rules, your project files — versioned, assignable, and shared across projects.
{"defaultLocale": "en","locales": ["es", "fr", "ja", "de", "zh"],"files": {"gt": { "output": "public/_gt/[locale].json" }}}
A glossary and a set of directives, defined once at the organization level and assigned to every project.
Glossary
Directives
{variables} and code verbatimUm zu beginnen, bearbeite deine page.tsx-Datei mit dem Ortsindex.
Without the group
Um zu beginnen, bearbeiten Sie directive Ihre page.tsx-Datei mit Locadexglossary.
With the group
@@ public/_gt/de.json @@"5c19e2b4": "Dokumentation",-"9d47a3f1": "Um zu beginnen, bearbeite deine page.tsx-Datei mit dem Ortsindex.",+"9d47a3f1": "Um zu beginnen, bearbeiten Sie Ihre page.tsx-Datei mit Locadex.","2e8b90cd": "Jetzt bereitstellen","b31c7a55": "Erstellt mit Create Next App"
Every once in awhile, I see a snippet of code that makes me a bit emotional. Now is one of those moments. Internationalization went from “$%!# this” to “trivial”.
TheoCEO, T3Chat
“insane engineering prowess” — Guillermo Rauch, CEO, Vercel
Buildtime, runtime, and review — one project, one config, one bill.
Hover a stage — the same string climbs all seven.
Mark up JSX once — every locale ships from your build.
import { T } from 'gt-next'<T><h1>Hello, world!</h1></T>
User-generated content, translated on demand at runtime.
await tx('Payment received', {$locale: 'ja',})
Glossaries, directives, and review in one workspace.
The agent that internationalizes your repo in guarded PRs.
@@ −4,1 +4,1 @@ app/checkout.tsx<p>Payment received</p><p><T>Payment received</T></p>Glossary and tone set at the top; every project and component below inherits them.
“Locadex is the GT agent — do not translate.”
“Active voice. Use formal ‘Sie.’” de
On overlap the top group wins: formal ‘Sie’ holds, casual tone loses.
<T $context="popup, not bread">Click the toast to dismiss</T>
Full-stack localization across buildtime, runtime, and review.
Start free and upgrade when you ship. Everything you need to localize a real product.
Talk to an engineer about implementation, volume, and your security review.