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.

Runs in this page
No API call
WORKSPACEINPUT → RESULT
01

Your input

LOCAL
Translation Key Parity inputs
02

Result

Run the tool to see a result.

Your result will appear here. Input is not saved.

Browser-side processingNothing is sent to a tool API.

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

  1. Paste the base and target locale objects.
  2. Check missing keys and named-placeholder counts.
  3. 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.