I have looked deeper into this and discovered exactly in what way your MO file is corrupt.
The string lengths in your file have been measured in characters, not bytes. For example “Русский” is 7 unicode characters, but encoded as 14 bytes in UTF-8. The MO compiler in Loco Translate measures in bytes, which is correct for binary files. Hence I am clueless as to how my plugin could produce this result. I have spent several hours trying to re-create an error like this and cannot.
Worth noting that all the UTF-8 strings are correctly written into the file, so it doesn’t look like anything is wrong with the encoding or the data posted to the server. Simply that the lengths are calculated wrongly, and that doesn’t add up.
I asked you about the mbstring extension, but that should make no difference here because my plugin does a basic strlen() to get the byte length.
Please ensure you’re running the latest version of Loco Translate and try re-compiling the MO file by re-saving the PO from the editor. If this still produces bad files then I am out of ideas.