The product

One workflow. Every language on the same sprint.

Tonguesage sits between your repo and your translators: so the moment code changes, localization moves too.

Pipeline overview

From commit to localized release in one automated flow

Repo commit triggers Tonguesage

On every push, Tonguesage receives a webhook. It extracts string keys from any locale file format: JSON, YAML, PO, XLIFF, ARB.

Change diffing, not file diffing

Tonguesage computes a diff at the string level: not the file level. Changed keys, new keys, deleted keys. Only what actually moved.

Locale merge on approval

Translator approves in the diff view. Tonguesage writes the translated value back to the locale file and opens a PR or commits directly to the branch.

String detection

Precise change detection at the string level

When a developer updates a string, Tonguesage sees exactly which key changed, what the old value was, and what it became. It never re-queues strings that haven't changed: no translator busy-work.

Supports nested key paths, pluralization rules, and ICU message format out of the box.

# en.json, commit abc123f
{
  "checkout.confirm": "Confirm order",
  "checkout.confirm": "Confirm & pay",
  "cart.empty_state": "Your cart is empty",
  "shipping.estimate": "Est. 3-5 days"
}

# Tonguesage detected: 1 changed key
# checkout.confirm → queued for DE, FR, JA
Sync engine

Sub-second routing from commit to translator queue

The moment a push arrives, Tonguesage routes changed strings to the right translator. No polling, no cron jobs, no manual export step.

Translation memory deduplication runs automatically: if Tonguesage has seen a string before across any of your connected repos, it matches it before queuing a new translation job.

Webhook received in <200ms
String extraction from all locale formats
Diff against translation memory
Changed strings routed to translator queue
Approval triggers locale merge
Translator experience

Translators see diffs, not dumps

The translator diff view shows only what changed: the string key, the source value, the previous translation, and an edit field for the new translation. No scrolling through 2,000-line CSV exports.

Context metadata (which page, which component, adjacent strings) is surfaced inline to improve translation quality without back-and-forth emails.

Translator diff view: EN to DE
checkout.confirm
Confirm & pay
Bestatigen & bezahlen
shipping.estimate
Est. 3-5 business days
Ca. 3-5 Werktage

See it in action in five minutes.

Connect your first repo and watch the sync run.