As this is the only body in the message, I would expect Message.getBody() to return it regardless of my locale settings. However, the function instead returns null and my client processes the message as if it were empty.
Addition: messages with an xml:lang on the message level are processed “properly”, i.e. returning the body text:
<message id="xxx" xml:lang="en" type="groupchat" to="me" from="muc/user">
<body>Ge0rG, fun fact: my message here has an xml:lang on the body, too</body>
</message>
Yep, probably trivial to fix if there is only one body, but hard (or even impossible) if there are multiple bodies with their language explicitly set but no language set on the enclosing stanza or stream.
Just to check: This was the case here? No language explicitly set on the stream and the carrying message stanza?
I’m not sure whether Message will inherit from the stream, and I don’t know whether the server did set a language on the incoming stream. What I do know is that smack set the language on the outgoing stream to English, and that there was no explicit @xml:lang on the message, but on the body.