All integrations
AvailableCode & docs

Localize on every pull request.

Point Rush Studio at your repo's string files. When they change, it translates the diff into the languages you set and opens a pull request your engineers review like any other — no separate tool, no copy-paste, nothing merged without your sign-off.

Translation pull requestsRuns on every pushJSON · YAML · PO · XLIFF
github.com/acme/web-app · Pull request #482
i18n(es): update translations
rush/i18n-es → main
Open
locales/es/common.json
"nav": {
− "home": "",
+ "home": "Inicio",
− "pricing": "",
+ "pricing": "Precios",
},
− "cta": "",
+ "cta": "Empezar gratis",
Category
Code & docs
Authentication
GitHub OAuth
Sync
Pull requests
Setup
~3 minutes
What it does

Your repo is the source of truth.

Rush Studio watches the language files you point it at and keeps every language up to date — as reviewable pull requests, never surprise commits.

Watches your string files

Give it a glob and it tracks every matching language file in the repo — recursively.

Translation pull requests

New and changed strings become one PR per language, opened on the branch you choose.

Every i18n format

JSON, YAML, gettext, XLIFF, Apple .strings and Flutter .arb — parsed and re-emitted cleanly.

Runs on push or scheduled

A webhook picks up changes within minutes, or polls at the frequency you set.

Point it at your strings

A glob, not a manual export.

Tell Rush Studio which repo and which files hold your source strings — browse the repo and pick a file or folder, and it turns your choice into a glob. Only the files that match are read; the rest of your code is invisible to us.

Recursive globs
locales/**/*.json matches across all folders — monorepos included.
Format auto-detected
Choose JSON, YAML, PO or XLIFF and it parses the keys correctly.
Target path template
A {lang} token in your path fans out per language, e.g. locales/{lang}/.
ReplacesManual string exportsCopy-pasting into language files
Choose files to translate
acme/web-app main
Source globlocales/**/*.json
locales/en/common.jsonMatched
locales/en/dashboard.jsonMatched
locales/en/emails.jsonMatched
src/index.tsx
README.md
3 files match your glob — only these are read. The rest of the repo stays untouched.
Review, don't surprise

Translations arrive as a pull request.

When strings are translated and approved in Rush Studio, they come back into your repo as a pull request — one per language, or a single ongoing PR, up to you. Your engineers review and merge it exactly like any other change. Nothing touches your base branch before your go-ahead.

Per language or ongoing
Open one PR per language, a single ongoing PR, or commit straight to a branch.
Human review by default
PRs open as drafts until a reviewer approves — turn on GPG-signed commits too.
Safe with duplicate keys
Duplicate JSON keys are flagged on import, with an optional PR to rename them.
ReplacesA separate localization toolMerge conflicts on language files
Translation pull requests
i18n(es): update translations
Spanish · 3 files changed
Review required
i18n(de): update translations
German · 3 files changed
Review required
i18n(ja): update translations
Japanese · 3 files changed
Checks running
One PR per languageDraft until approvedMerge when you want
Supported formats

The string files your repo already uses.

Every common i18n format — parsed into keys, translated and re-emitted with structure and order intact.

JSON
JSON
i18next, react-intl
YAML
YAML
Rails, Ruby i18n
PO
Gettext
.po / .pot
XLF
XLIFF
XLIFF 2.x
STR
Apple
.strings / .stringsdict
ARB
Flutter
.arb
How it works

Connected in about three minutes.

1

Authorize with GitHub

Sign in with GitHub OAuth and grant access to the repos you choose. Revoke any time from GitHub or Rush Studio.

2

Pick repos, files & languages

Choose the repo, point at your string files with a glob, and set your target languages and PR strategy.

3

Translate & open PRs

Changes enter your queue, get translated and reviewed, and come back as pull requests you merge.

Permissions & security

Limited to the repos you choose — reviewed before any merge.

Rush Studio connects via GitHub OAuth. Here is exactly what it does and does not do.

What we access
The repos you select. Read the string files matching your glob and open branches and pull requests in them.
Your GitHub profile. Name and email, to attribute commits and PRs and send notifications.
Push events (optional). A webhook you approve tells us when source strings change, to re-sync.
What we never do
Merge without review. Translation PRs wait for your approval — we never merge to your base branch on our own.
Touch code outside your glob. Files that do not match the pattern you set are never read or modified.
Rewrite history. We only add branches and pull requests; your commit history is never force-pushed over.
The details

How the sync behaves.

The questions engineers ask before connecting a production repo.

Sync direction
Source in, reviewed PRs out. Source strings are read; translations open as pull requests you merge.
Sync trigger
A push webhook detects changed strings within minutes, or polls on a schedule. A manual "Pull from GitHub" button re-syncs on demand.
Formats
JSON, YAML, gettext (.po/.pot), XLIFF 2.x, Apple .strings/.stringsdict and Flutter .arb.
Source changes
Editing a source string re-queues only the affected keys; the open PR updates in place instead of stacking duplicates.
Branch & PR strategy
One PR per language, a single ongoing PR, or direct commits to a base branch — with custom labels and commit messages using {lang} and {count}.
Authentication & revocation
GitHub OAuth 2.0 (repo + user:email). Disconnect from Rush Studio or revoke from GitHub any time; access stops immediately.
Questions

GitHub, in plain terms.

No — by default each translation opens a pull request you review and merge. You can enable direct commits to a branch if you prefer, but never to your base branch without approval.

Only the files matching the glob you set. The rest of your repo — source code, secrets, everything else — is never read.

Yes. The GitHub OAuth connection covers the private repos you grant access to.

Recursive globs like packages/**/locales/**/*.json scope exactly what is translated, so a large monorepo stays manageable.

Duplicate JSON keys are detected on import and flagged, and Rush Studio can open a follow-up PR that renames the duplicates so translations point at the right string.

Yes — register a webhook and changed strings are picked up within minutes. Prefer scheduled polling? Set a frequency instead.

Localize on your next commit.

Join the waitlist for early-access pricing and a one-on-one onboarding call to connect your first repo.