Debug & Review · LOCAL TOOL
Translation Key Parity
Compare nested JSON locale objects for missing keys, extra keys, type changes, empty translations, and differing counts of simple {name} placeholders.
No API call
Your input
LOCALResult
Run the tool to see a result.
Your result will appear here. Input is not saved.
WHY THIS TOOL EXISTS
A focused job, not a black box.
Paths use JSON Pointer escaping, keeping a literal slash in a translation key distinct from nested structure. Repeated placeholders are counted so accidental omissions remain visible.
How to use it
- Paste the base and target locale objects.
- Check missing keys and named-placeholder counts.
- Review arrays and the actual wording with a speaker of the target language.
TRY A WORKING EXAMPLE
Start with known input.
Load this sample into the workspace, run the tool, and compare the result shown below.
Show sample input
{
"base": "{\"welcome\":\"Hello {name}\",\"cart\":{\"count\":\"{count} items\"}}",
"target": "{\"welcome\":\"Bonjour {user}\",\"extra\":\"Added\"}"
}Expected sample result from the local tool
1 missing · 1 extra · 1 mismatch(es).
{
"missing": [
"/cart/count"
],
"extra": [
"/extra"
],
"mismatches": [
{
"path": "/welcome",
"issue": "placeholder counts",
"base": {
"name": 1
},
"target": {
"user": 1
}
}
]
}Checks structural parity and simple {name} placeholder counts. Translation meaning, ICU messages, and locale grammar require review.
LIMITS AND INTERPRETATION
What the result cannot tell you.
Simple {name} placeholders only; ICU/plural and nested brace syntax are rejected when encountered in compared strings. Arrays are flagged for manual review. Matching structure does not prove a correct translation.
Inputs are processed in this page and are not written to local storage.