According to the PO Files documentation (https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html), keys do not need to be unique. They can be repeated, and contexts in 'msgctxt' are used to differentiate them.
The context serves to disambiguate messages with the same untranslated string. It is possible to have several entries with the same untranslated string in a PO file, provided that they each have a different context.
This is exactly how the .po file generator in Django behaves; the same translation phrase can appear multiple times in the file under the same ID but with different contexts.
We could use namespace to differentiate them or use some other mechanism to do so.