tools/i18n
toolslocalization

Localization Lab

Paste your en.json and get a real i18n audit — per-string expansion forecast, overflow flags and lint warnings, a pseudo-localised JSON to QA with, a machine-translation draft, and a live RTL preview at your tightest container.

Audit your own strings · pseudo-localise · machine-draft · RTL preview

Your strings — paste your en.json
Target language
Tight container22 chars

Your tightest control (a button, chip, tab).

9
strings
+65%
avg in French
5
over budget
0
lint warnings

Audit — expansion forecast & lint

KeyEnglishEN→ FRFitNotes
nav.pricingPricing7~13fits
nav.docsDocs4~8fits
hero.titleShip products faster20~34overflow
hero.subtitleEverything your team needs to design, build and launch.55~69overflow
plan.badgeMost popular12~20tight
plan.ctaStart free trial16~27overflow
plan.secondaryCompare plans13~22tight
plan.noteNo credit card required23~35overflow
plan.seats{count} seats included22~33overflow
  • · Has placeholders — keep them intact when translating.
Preview — at 22ch
nav.pricing⟦Pŕïçïñğ ······⟧
nav.docs⟦Dôçš ····⟧
hero.title⟦Šhïp pŕôdüçţš fàšţéŕ ·············⟧
hero.subtitle⟦Évéŕýţhïñğ ýôüŕ ţéàm ñéédš ţô déšïğñ, büïld àñd làüñçh. ·············⟧
plan.badge⟦Môšţ pôpülàŕ ········⟧
plan.cta⟦Šţàŕţ fŕéé ţŕïàl ··········⟧
plan.secondary⟦Çômpàŕé plàñš ·········⟧
plan.note⟦Ñô çŕédïţ çàŕd ŕéqüïŕéd ···········⟧
plan.seats⟦{count} šéàţš ïñçlüdéd ··········⟧

Boxes are your tightest container (22ch). Red = the string is clipping there.

Pseudo-localised JSONDrop into your app to QA expansion now
{
  "nav": {
    "pricing": "⟦Pŕïçïñğ ······⟧",
    "docs": "⟦Dôçš ····⟧"
  },
  "hero": {
    "title": "⟦Šhïp pŕôdüçţš fàšţéŕ ·············⟧",
    "subtitle": "⟦Évéŕýţhïñğ ýôüŕ ţéàm ñéédš ţô déšïğñ, büïld àñd làüñçh. ·············⟧"
  },
  "plan": {
    "badge": "⟦Môšţ pôpülàŕ ········⟧",
    "cta": "⟦Šţàŕţ fŕéé ţŕïàl ··········⟧",
    "secondary": "⟦Çômpàŕé plàñš ·········⟧",
    "note": "⟦Ñô çŕédïţ çàŕd ŕéqüïŕéd ···········⟧",
    "seats": "⟦{count} šéàţš ïñçlüdéd ··········⟧"
  }
}
Machine-translation draftRun “Machine-translate” first
The Darija caveat

The draft uses machine translation — for Arabic it returns formal MSA, not Darija, and it mistranslates context (run “ship faster” to Arabic and you’ll often get شحن — cargo, not launch). It also mangles {placeholders}. Use it as a starting draft; the humanisation into how Moroccans actually speak is the real work — and where most localized products fall down.