Adds tool/check_arb_placeholder_corruption.py, a static check that flags literal "?" glued to an ICU placeholder brace in any lib/l10n/app_*.arb value that has a placeholders metadata block. This is the exact corruption shape fixed in the previous commit; flutter analyze doesn't catch it since the JSON/ICU stays syntactically valid. Wired as a CI step before flutter analyze so it fails fast. Also audited lib/l10n/app_localizations_ext.dart (hand-maintained weekday/ month/date-sentence maps, not covered by ARB tooling): all 22 locale maps have the full 13/13 keys with no corruption or leftover English — no changes needed there.