The issue of build breaking translations has come up frequently (one recent example).
For some message groups, the warnings about unused or extra parameters should be promoted to errors, that will prevent saving those translations in the first place, as might happen by careless translators.
Workarounds in use:
- Project maintainers manually remove bad translations until they are fixed, after each export (given exports twice a week, a lot of wasted time)
- Translatewiki.net admins put in English translation in place and mark it as outdated (may break fallback chains)
Suggested solution:
- Refactor MessageChecker classes to introduce separation between warnings and errors.
- Use one of the pre-save hooks to run the error checks and fail the save if they fail.
- Show error messages in the UI
- Translation admins should be able to override (to not break message renames etc. with existing issues)
It would be good time to also look at the insertable classes, and see if those can be combined with message checkers to reduce duplication.