Locale QA Workbench
Find i18n bugs before they break your UI.
Upload two locale JSON files and instantly detect missing keys, placeholder mismatches, and UI strings that may overflow.
Issues
5
Critical
4
Warnings
0
Comparing en.json against ja.json
Privacy first
Your locale JSON files are parsed and compared locally in the browser. AI suggestions only send the selected issue text when you request one.
Source locale
en.json
{
"app.title": "Welcome back, {name}",
"cart.items": "You have {{count}} items in your cart.",
"checkout.cta": "Complete checkout",
"profile.bio": "Tell customers about your role, location, and availability this month.",
"toast.saved": "%s was saved successfully"
}Target locale
ja.json
{
"app.title": "おかえりなさい、{username}",
"cart.items": "カートに商品があります",
"checkout.cta": "購入を完了する",
"toast.saved": "%d を保存しました",
"settings.language": "言語"
}Issue dashboard
Translation QA findings
en.json / ja.json
| Type | Key | Source text | Target text | Severity | Suggestion | AI |
|---|---|---|---|---|---|---|
| Placeholder mismatch | app.title | Welcome back, {name} | おかえりなさい、{username} | critical | Match placeholders exactly: {name}. | |
| Placeholder mismatch | cart.items | You have {{count}} items in your cart. | カートに商品があります | critical | Match placeholders exactly: {{count}}. | |
| Missing key | profile.bio | Tell customers about your role, location, and availability this month. | Empty | critical | Add this key to the target locale before release. | |
| Placeholder mismatch | toast.saved | %s was saved successfully | %d を保存しました | critical | Match placeholders exactly: %s. | |
| Missing key | settings.language | Empty | 言語 | info | This key exists only in the target locale. Confirm it is still used. |