Just a quick update on what I'm currently working at for folk who are not on Misago's Discord server.
I've spent last few weeks adding the context markers to translation messages in Misago, basically changing those
msg = _("Close")
<button>{% trans "Reply" %}</button>
<button>{gettext("Reply")}</button>
...into those:
msg = pgettext("close thread", "Close")
<button>{% trans "Reply" context "reply thread btn" %}</button>
<button>{gettext("reply thread btn", "Reply")}</button>
There was few thousands of those messages spread between Misago's Python, HTML and JS files. And I've added context markers to most of them. This took plenty of time, but resulted in much more accurate translation messages. This is because before this change all "Close"s were one translation message, but now "Close" as in "close thread" and "Close" as in "close this dialog" are separate messages, which translators for languages that make distinction will appreciate. Likewise in English "Quote" can be both a noun and a verb, but in Polish noun is "Cytat" and verb is "Cytuj".
With amount of translation messages involved I've decided to put time over consistency. I could've develop project-wide guide for how context markers should be done, but this would've make this task potentially take months for not to big gain of having all the translation messages contexts using consistent system of naming. Current contexts, while not always consistent, still fulfill the primary role of making same message strings consistent in context.
I will now move on to testing those contexts myself. To do that I will translate Misago to Polish language, which will make me experience the translation experience first-hand and let find out which message strings need further changes to context markers.
Also, this is a breaking change for translators, so first Misago release including this change will move on to separate project on Transifex. Translation strings from old versions will still be kept as a reference for translation authors.