)
);
- $dataScript = Xml::encodeJsCall( 'mw.jqueryMsg.setParserDefaults', [ $parserDefaults ] );
+ $mainDataScript = Xml::encodeJsCall( 'mw.jqueryMsg.setParserDefaults', [ $parserDefaults ] );
- return $fileScript . $dataScript;
+ // Associative array mapping magic words (e.g. SITENAME)
+ // to their values.
+ $magicWords = [
+ 'SITENAME' => $this->getConfig()->get( 'Sitename' ),
+ ];
+
+ Hooks::run( 'ResourceLoaderJqueryMsgModuleMagicWords', [ $context, &$magicWords ] );
+
+ $magicWordExtendData = [
+ 'magic' => $magicWords,
+ ];
+
+ $magicWordDataScript = Xml::encodeJsCall( 'mw.jqueryMsg.setParserDefaults', [
+ $magicWordExtendData,
+ /* deep= */ true
+ ] );
+
+ return $fileScript . $mainDataScript . $magicWordDataScript;
}
/**