What problem does it solve? Translation changes often ship with silent defects: keys missing from some locales, interpolation placeholders dropped or renamed during translation, and strings that were never actually translated. These bugs surface as runtime errors (KeyError, IndexError, undefined) the first time a translated string renders with real data. translint catches them before the PR is finalized. ## Core Features & Use Cases - Cross-locale key diffing: Compares every locale file against a base locale and reports missing keys, extra (stale) keys, and empty values. - Placeholder mismatch detection: Extracts interpolation tokens across five styles ({name}, {{name}}, %s, %(name)s, ${name}) plus ICU plural/select arguments, and flags mismatches including reordered bare printf conversions. - Untranslated-string heuristic and safe --fix: Flags values byte-identical to the base (with --allow-identical/--do-not-translate escape hatches) and can insert missing keys tagged with an [UNTRANSLATED] marker or .po fuzzy flag, never inventing translations. - Use Case: After adding a new key to en.json, run translint against the locales directory to get a per-locale report of exactly which keys are missing or broken in de.json, fr.po, and ja.properties before committing. ## Quick Start Ask the AI to run translint on your locale directory with the base locale set to en and JSON output enabled, then fix each reported missing key and placeholder mismatch before finalizing the change.