Skip to main content
STRINGTIDE

Detect · translate gaps · validate · write

Keep your translations in sync

Find what’s missing, draft into your locale files, review, then ship.

Or find the gaps in your repo now:

  1. npx @stringtide/cli init

English → French example · French

1 AI draft to check

nav.home

Accueil

Translated

checkout.button

Passer la commande

Translated

cart.empty

Votre panier est vide

AI draft

signup.title

Not translated yet

Missing

French

2 of 4 strings

Works with the files you have

  • next-intl
  • i18next
  • vue-i18n
  • Rails
  • Flutter
  • CSV

How it works

One string, every language

Follow checkout.button from your repo into French.

01

Write it, push it

Add the string to a locale file you already commit. stringtide push sends only new or edited source strings.

locales/en.jsoncommitted
{
  "checkout.button": "Proceed to checkout",
  "cart.title": "Your cart"
}

02

AI drafts, a person approves

Each target language gets a suggestion, never an approval. Reviewers fix the wording; placeholders are checked before anything is approved.

checkout.button · en → fr

« Passer à la caisse »

claude-sonnet-4-511 reused · 1 sent to the model

Placeholder {count} is missing — placeholders have to match the source exactly.

source: Added {count} items to your cart

me: « Passer à la caisse » → « Passer la commande ».

Approvedby amélie@ · fr reviewer

03

Pull it back

stringtide pull writes approved text into your files as a diff.

locales/fr.json+1 −1
  {
    "app.title": "Mon Appli",
- "checkout.button": "Passer à la caisse"+ "checkout.button": "Passer la commande"  }

Coverage you can trust

See what is ready and what needs review

Track missing text, AI drafts and approved translations by language. Use --review in the CLI when a person should review before files are written.

AI drafts wait for review

Unapproved drafts still count as missing.

Source edits need re-review

Change English and translations go back to waiting.

You see the cost

Each AI run shows model and price. Reused strings are free.

Same rules in the app, API, and CLI.

The loop

Four commands. The last one writes.

Detect files, push changes, draft gaps, pull approvals back.

Quickstart
your-repo
$ stringtide init
found ./locales · {locale}.json · json · source en
$ stringtide push
35 keys announced · sent 2 changed source strings
$ stringtide translate --locale fr --review
12 translated, 0 failed · 6 from memory (no tokens)
$0.02 (byo) — suggestions ready for review
$ stringtide pull
applied 12 translations → locales/fr.json

Start with the files you already have

Free in beta: one project, unlimited languages and people, and 25,000 source words translated each month with managed AI or your own provider key.