When writing a translation, the Translate extension periodically AJAX-calls a translation-checking service on background to display various errors in the translation. The result of this check is returned as JSON, parsed on the client side using standard JSON.parse. However, when the check fails on the server side, TranslationHelpers::callBox returns the error message wrapped into an HTML comment (<!-- Box $type not available: {$e->getMessage()} -->), which is obviously not a valid JSON, so TranslateEditor.prototype.validateTranslation dies on its JSON.parse with SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data.
This is the case of e.g. Commons custom UI translation, where any typing into a translation editbox causes a stream of Box check not available: unknown group errors.
I guess TranslationHelpers::getBoxes should use a different wrapper in its checks branch (or generalize TranslationHelpers::callBox to support JSON as error-output format). Or rewrite the whole TranslationEditPage anyway (“// todo Move to api or so”, “This interface is a big klunky.”).
Outcome
Translation aids were not working at all for one message group in Wikimedia Commons. This was fixed.