General Translation

Launch inevery language.

General Translation builds full-stack infrastructure for localizing apps, docs, and websites — translated at build, served from the edge.

Get startedDocs

Trusted by the world’s best companies

CursorRampMintlifyProfoundPartifulClickHouse

One toolchain, every stack.

Developer-first SDKs to translate everything from simple sites to complex user experiences.

app/page.tsx
1import { T, Num, DateTime } from 'gt-next';
2
3export default function Home() {
4 return (
5 <T>
6 <main>
7 <h1>Hello, world!</h1>
8 <p>
9 <DateTime>{new Date()}</DateTime>
10 </p>
11 <p>
12 GT has everything you need to ship your
13 product in <Num>{118}</Num> languages.
14 </p>
15 </main>
16 </T>
17 );
18}
gt-next

Server components, middleware locale routing, and static translations built at build time.

npm i gt-nextnpx gt@latest
UI<T>…</T>
Textes'¡Hola, mundo!'
Numbersde1.234.567,89
Currenciesde1.280,00 €
Datesfr29 juil. 2026
Pluralspl1 plik · 4 pliki
FunctionsuseGT() · getGT()
Contextcontext="file"
Routingfr/fr/a-propos
gt-next reference

From your editor to the edge.

Develop in any language with hot reload, fix a string without a deploy, route every locale on SEO-ready paths, and serve the result from a global CDN — one system, honest about its trade-offs.

Develop in Japanese

With a gtx-dev- key, translations regenerate as you type. No reload.

Two keys, two promises

The key that translates on demand is not the key that ships. Preview is generated as you work; production is pre-generated and static.

  • gtx-dev- browser-safe, preview only
  • gtx-api- never in browser code
  • Preview translations in development before they go live

Fix it without a deploy

Edit a string in the editor and the CDN serves it. Or bundle the JSON and never call us at all.

  • Fix a translation and ship it without touching your build
  • Push over-the-air updates without redeploying your app
  • The trade-off is stated, not hidden: bundled means redeploy

Locale-prefixed, SEO-ready paths

The same page, three addresses — and the French one translates the pathname, not just the page.

One middleware file

Detection, prefixes, and localized pathnames — nothing else to configure.

middleware.ts
1import {
2 createNextMiddleware,
3} from 'gt-next/middleware';
4
5export default createNextMiddleware({
6 prefixDefaultLocale: true,
7 pathConfig: {
8 '/about': { fr: '/a-propos' },
9 '/products': { zh: '/产品' },
10 '/product/[id]': { zh: '/产品/[id]' },
11 },
12});

es is on v215 — the string saved two shells up, already serving from iad

Served from the edge

A global, low-latency translation CDN. Whoever asks, the answer comes from the point of presence closest to them.

  • Publish with npx gt translate --publish
  • One switch in Project settings: serve translations from a global CDN
  • Runs on Cloudflare Workers at every point of presence

Previews

Preview translations in development before they go live. Catch issues early.

Or bundle the JSON

Point loadTranslations at bundled files and no CDN request is made at all.

loadTranslations.ts
export default async function loadTranslations(
locale: string
) {
const t = await import(`./_gt/${locale}.json`);
return t.default;
}

And the parts nobody demos

Everything above assumes the unglamorous things already work. They do.

  • SEO-friendly locale paths, with no configuration
  • hreflang, canonical URLs, and localized sitemaps
  • Versioned releases per locale — a rollback is one step
  • Dev keys are browser-safe; API keys never ship to the client
  • Feature branches get their own translations; shared strings are inherited
  • SOC 2 Type II, GDPR, ISO 27001

How a string becomes a shipped translation.

Nine beats, from the JSX you already wrote to the pull request that ships it in six languages. Scroll to follow it.

example.comen
ProductDocsPricing

Ship your product everywhere

One codebase, every language your customers read in.

Get started
Docs in five languagesGuides your team already reads.
Support around the clockAnswers in your language.
© 2026 example.comTermsPrivacyStatus

128 strings · 6 locales · context attached

extracttranslatereviewscaneditopen pr
  1. 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.

  2. It 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.

  3. Around 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.

  4. In the voice you asked for.

    A context attribute goes straight to the translation agent. Same source string, different register — and the heading lands in the tone you wrote for.

  5. 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.

  6. Then 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.

  7. 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.

  8. It 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.

  9. 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.

Edit in context.

Agents write translations. You review, edit, and approve in a focused workspace.

  • Side-by-side source and translation view
  • See diffs when translations are regenerated
  • Edit translations before or after they go live
workspace · es-4194 strings
source — en
translation — es
Hello, world!
¡Hola, mundo!approved
Launch in every language
Lanza en todos los idiomasapproved
End-to-end localization for the world's best companies
Localización de extremo a extremo para las mejores empresas del mundo.Localización integral para las mejores empresas del mundo.edit
By continuing you agree to our Terms of Service.
Al continuar, aceptas nuestros Términos de Servicio.approved
⌘K searchhistorydownloadagent · locadex

Everything you need, in one toolchain.

Buildtime, runtime, and review — one project, one config, one bill.

One string, source to screen

Hover a stage — the same string climbs all seven.

The GT stack, end to end: app code, gt cli, Locadex, context, review, edge CDN and runtime delivery — each plane taps the same doubled rail, from source code to the translated string on a user’s screen
gt cliacme/web
$ npx gt translate
gt-next detected · Next.js App Router
128 strings · 3 new · 2 changed
es fr ja de zh
done in 8.4s · local edits preserved

Code

Mark up JSX once — every locale ships from your build.

page.tsxNext.jsReact
import { T } from 'gt-next'
<T>
<h1>Hello, world!</h1>
</T>
es¡Hola, mundo!
jaこんにちは世界!

Content

User-generated content, translated on demand at runtime.

notify.tsruntimeNode.js
await tx('Payment received', {
$locale: 'ja',
})
200 · 84 ms · cached at the edge
{ "ja": "支払いを受領しました" }

Dashboard

Glossaries, directives, and review in one workspace.

acme/webproduction
enesfrjadezh
glossary24 terms
directives6 rules
reviewqueue empty
v214 · published2 min ago

Locadex

The agent that internationalizes your repo in guarded PRs.

PR #218locadex → mainGitHub
@@ −4,1 +4,1 @@ app/checkout.tsx
<p>Payment received</p>
+<p><T>Payment received</T></p>
merged+38 −6 · checks passed

Context, defined once — inherited all the way down

Glossary and tone set at the top; every project and component below inherits them.

Organization
Glossary

“Locadex is the GT agent — do not translate.”

Directives

“Active voice. Use formal ‘Sie.’” de

Project
1brand-coreorg
2docs-styleorg
3checkout-copyproject

On overlap the top group wins: formal ‘Sie’ holds, casual tone loses.

Component
<T $context="popup, not bread">
Click the toast to dismiss
</T>
esla notificaciónla tostada

One commit, on the clock

09:41:02committedapp/page.tsx
09:41:18extractedhash 0f3a92
09:41:44pr openedlocadex · #218
09:42:03translated6 locales · 3.4 s
09:44:37approvedreview · @mira
09:45:01publishededge · 3 regions
09:45:09renderedde · 38 ms

Pricing for everyone.

Full-stack localization across buildtime, runtime, and review.

Starter

$0to start

Start free and upgrade when you ship. Everything you need to localize a real product.

  • Every SDK and the translation CLI
  • Dashboard, glossaries, and the editor
  • Locadex agent runs on your repo
Get started

Enterprise

Customannual

Talk to an engineer about implementation, volume, and your security review.

  • Volume pricing across projects
  • SOC 2 Type II, GDPR, ISO 27001
  • Support from the engineers who build it
Contact us