Last modified: 2013-01-14 17:03:41 UTC
When an undefined message is requested via wfMessage, the result is something like “<messagekey>”, i.e. the message key in angle brackets. When such a missing message is requested using the {{int:X}} parser function, the resulting “<X>” is treated as wikitext, or HTML. If the message key does not correspond to any allowed HTML/wikitext tag, it is escaped and works correctly. However, code such as “{{int:var}}” results in “<var>” which is passed literally to output HTML and interpreted as an HTML tag. The problem is visible at TranslateWiki.net where the {{msg-mw}} template uses {{int:}} to show the current translation of MediaWiki messages. But when used on a message from an extension not installed on TW, the result is often broken, see e.g. the last line at http://translatewiki.net/wiki/Template:Identical/Revert, where “{{int:Code-status-reverted}}” is interpreted as “<Code-status-reverted>”, which is in turn interpreted as “<code>”. I believe the problem was introduced in r81528, where the refactoring of intFunction() to use the wfMessage() introduced “->plain()” there.