Looks like a bug in Weblate’s format handling for the Android string resources. I’ve reported it to Weblate’s support tracker. Let’s see what happens.
Note that even back on Transifex, our translation files had a mixture of properly escaped and bare question marks, and it seems to have “worked” for the Android app. So fortunately, the app’s XML parser seems to be lenient in that regard.
Seems like Weblate’s behavior is correct, while the official Android documentation is slightly inaccurate:
Hello André,
Question marks need to be escaped only if used as the first character in the string to avoid interpreting them as style references. Escaping all question marks doesn’t harm, but is not needed. Weblate has recently changed to escape question marks only at the beginning of the string for improved readability of the files, see Reduce question mark escaping in Android · Issue #5064 · translate/translate · GitHub.
I will refrain from unescaping back all now escaped question marks in bulk though. Let’s just watch as translations come in and stuff gets corrected automatically. Either way works, so we don’t need to take action.
The background is that Weblate doesn’t support “string-array” elements in the Android XML resource files, therefore all these strings are currently missing on the platform.