[Barry A. Warsaw]
If I had to do it over again, I would have used $name in i18n source strings from the start. It would have saved lots of headaches and broken translations. People just seem to get $names whereas they get %(name)s wrong too often.
There were similar problems in C, you know, that yielded the addition of diagnostics in GNU `msgfmt', in case of discrepancies between formatting specifications in the original and the translated string. The suffering would not have really existed is `msgfmt' has been made Python aware, or if Python programs used their own `msgfmt'.
As your wrote in your message, you wrote your own checker. A solution should be sought that would easily apply to all Python internationalised programs.