Locadex

Connect a repo —your app is translated.

Locadex connects to your codebase, internationalizes your code, and opens pull requests with translations. Auto-merge is off by default — every change waits for your review.

Connect GitHubRead the docs
locadex — agentacme/web
$ git push origin main · e4f21c9
locadex · run #1184 · trigger: push
scanapps/web · 11 files changed · 412 ms
5 files need i18n · 14 strings
mapTagline.tsx · tone: playful, upbeat
glossary · 12 terms · de formal “Sie”
editapp/page.tsx
<h1>Hello, world!</h1>
<T><h1>Hello, world!</h1></T>
translateesfrjadezh· in context
pr#218 · locadex/generate-code → main
+38 −6 · auto-merge off · awaiting review

Push, scan, edit, translate, open PR.

The whole loop runs without you. One run of the agent, shown as its artifacts — what it found, what it decided, what it changed, and the pull request where it stops to wait for you.

locadex · run #1184 — explodedpush e4f21c9 → PR #218
One Locadex run as an exploded stack: repo, scan, map, edit, translate, open PR

Scan codebase

A commit or pull request triggers the workflow, and the agent maps out what has changed. “Changed files only” is on by default — siblings outside the target directory are never touched.

locadex · scanpush e4f21c9
apps/webtarget directory
app/page.tsx3 strings · L4 L5 L16
app/checkout.tsx4 strings · gt()
components/Tagline.tsx1 string · context
components/Nav.tsx2 strings · <Var>
lib/errors.ts4 strings · gt()
apps/apioutside target · skipped
11 files changed · 5 need i18n14 strings

Context, inferred per line

Scan is not grep. The agent reasons about your component structure and writes down what a translator would need — tone, variables, holds, and the terms that never translate.

founddecision
app/page.tsx · L4<h1>Hello, world!</h1>wrap in <T>
app/checkout.tsx · L18'Payment received'string — gt()
components/Nav.tsx · L7{user.name}never translated — <Var>
app/page.tsx · L16new Date()formats locally — <DateTime>
components/Tagline.tsx · L2tagline copytone noted — $context
legal/terms.mdxTerms of Serviceheld — $requiresReview

Edit code

JSX wraps in <T>, bare strings become gt() calls — in your conventions, through your linter. Local edits are preserved, so a re-run never overwrites your hand-tuned copy.

app/page.tsxlocadex · edit
@@ −4,4 +4,6 @@ export default function Home()
return (
<h1>Hello, world!</h1>
<p>Welcome back, {user.name}</p>
+ <T>
+ <h1>Hello, world!</h1>
+ <p>Welcome back, <Var>{user.name}</Var></p>
+ </T>
)
}

Guarded by default

An agent that edits code earns trust by stopping at the review gate. Every Locadex run ends at a pull request, not a deploy.

  • Changes arrive on a prefixed locadex/ branch — never on main
  • Auto-merge is off by default — opt in to merge-when-checks-pass, or keep the button yours
  • Setup is a separate PR that you merge yourself first
  • Preserve local edits and Changed files only ship on
  • Your build commands and linter run in a sandboxed VM, with org secrets injected as env vars

Open PR

Pull request created for review — the struck lines are your bare JSX, the added lines the same JSX wrapped in <T>. The merge stays yours.

Internationalize apps/web — wrap JSX in <T>#218
locadex[bot]wants to mergelocadex/generate-codemain· 5 files changed · +38 −6
app/page.tsx+92
app/checkout.tsx+113
components/Tagline.tsx+71
components/Nav.tsx+60
lib/errors.ts+50
ci / buildpassed
gt validatepassed
locadex / visual-qapassed
Review required

Locadex never merges its own pull request. Auto-merge stays off unless you turn it on — the run ends here, at your gate.

ApproveMerge pull request
09:41:44opened · locadex[bot]
09:42:03translated · 5 locales · 3.4 s
09:42:41checks · 3 passed
merge · waits for you

Standing automation, not a setup script.

Three templates, each with its own trigger, re-running as your code changes. Point one at a directory, give it your commands, and it works the way your repo does.

Generate code

Wraps your source with t() and the <T> component, and opens the pull request.

trigger · a pull request changes

Generate translations and push

Creates translations in context and pushes them to your branch.

trigger · a commit is pushed

Keep locales in sync

Keeps every locale current with the source as it changes.

trigger · started manually
Runs on Next.js · Mintlify · Fern · Docusaurus · Vite · Gatsby · React · Redwood · React Router · TanStack Start — or locally, $ npx locadex@latest start

Zero engineering bandwidth.

Connect a GitHub repo and your app is translated — in native speed and quality, with your review in the loop.

locadex · run #1184summary
files touched11
lines changed44
sandbox6 m 12 s
LCUs · $5 each1.4
billed$7.00

Metered, capped

Runs are billed at $5 per Locadex Compute Unit — files touched, lines changed, resources end to end. A usage limit is a hard cap.

Review stays yours

Every run ends at a pull request on a locadex/ branch. Auto-merge is off until you turn it on.

Standing automation

Three templates re-run as your code changes — on push, on PR, or started manually.

Your commands, sandboxed

Pre- and post-process commands and your linter run in a sandboxed VM, with your org’s secrets as env vars.