rationalise the translations strings a bit

The biggest change in approach here was pulling a clever one/many string
processing into a simple, stupid, choice between a one and a many
translation string. The cleverness made the translation string setup for
it pretty confusing
Fix html_safe issue and a typo
extract translation strings from layout