Contextual markers: https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers
are used only in horizon.tables.actions.BatchAction._get_action_name in the whole code, and even there, the translation lacks of context.
Indeed, we have::
if action_type == "past":
msgstr = pgettext_lazy("past", "%(action)s %(data_type)s")
else:
msgstr = pgettext_lazy("present", "%(action)s %(data_type)s")
But "%(action)s and %(data_type)s" use "action" and "data_types" are already translations coming from a context agnostic translation.
This leads to buttons in French like "Redémarrage à Chaud Instances" (which is incorrect and should be "Redémarrage à chaud des instances") and "Terminer Instances" (which should be "Terminer les instances") (both the missing "les" (plural) and "l'" (singular) and the Camel-Case in the sentence, looks more like babbling rather than speaking in French, but I'm sure many other languages are impacted).
Currently The translators can do nothing about it and can not be blamed at all, simply because because the context is not handled, so they have to make a compromise of the "less babbling looking translation".
So BatchAction sublcasses should also use contextual-markers for their action_* and data_type_* attributes, because even there, translations are correct in a context, and wrong in an other (depending where it will be rendered) since "Instance" needs to be translated either "Instance" or "L'instance" depending on the context (and only Proper nouns have a capital letter inside a sentence in many languages like French so "L'instance" will also have to be "l'instance", etc...).
Many Translation errors are due to lack of contextual-markers in the translatable strings.
We should therefore add more contextual-markers in the translation strings and handle words which will be isolated or inside a sentence (for the capital letter on non-Nouns).
Thanks for looking into this. There is some context on the particular context marker you mention in bug 1253678 in that helps, more work in that area is definitely welcome.