"In Gapfill, mlang tags do not seem to work inside the square brackets where correct answers are."
I can think of two reasons why MLang wouldn't work in the Gapfill gaps. One is technical in that it strips any tags by default because the answers are standard HTML text boxes which will only show text and will not render any html.
The other is logical in that the gaps represent the answers. so if you had a gap with the word cat [cat] and a french person saw [chat] (French for cat), the string "chat" would be compared with the correct answer cat and found to be incorrect. When using Gapfill mode (type into the box), it would be possible to offer different language versions, i.e. [cat|chat] would cater for a French and English example, and I have tested that the body of the question will process both MLang and MLang2 tags.
However anything to do with Translation is fraught because sentence structure can mean a gap would need to appear at a different point in the text, though it's not an issue in this example (courtesy of Google translate)
Le [cat|chat] s'est assis sur le tapis
I strongly suspect this logic applies to the core short answer question type. I had assumed you were referring to support within the body of question text rather than within the answer.