1<?php 2declare( strict_types = 1 ); 3 4namespace Wikimedia\Parsoid\Wt2Html\PP\Processors; 5 6use DOMElement; 7use DOMNode; 8use Wikimedia\Parsoid\Config\Env; 9use Wikimedia\Parsoid\Utils\DOMCompat; 10use Wikimedia\Parsoid\Utils\DOMDataUtils; 11use Wikimedia\Parsoid\Utils\DOMUtils; 12use Wikimedia\Parsoid\Wt2Html\Wt2HtmlDOMProcessor; 13 14class I18n implements Wt2HtmlDOMProcessor { 15 16 /** 17 * @inheritDoc 18 */ 19 public function run( 20 Env $env, DOMNode $root, array $options = [], bool $atTopLevel = false 21 ): void { 22 '@phan-var DOMElement|DOMDocumentFragment $root'; // @var DOMElement|DOMDocumentFragment $root 23 $spans = DOMCompat::querySelectorAll( $root, 'span[typeof~="mw:I18n"]' ); 24 foreach ( $spans as $span ) { 25 DOMUtils::removeTypeOf( $span, 'mw:I18n' ); 26 $dp = DOMDataUtils::getDataParsoid( $span ); 27 $i18n = $dp->tmp->i18n; 28 $msg = "Error: {$i18n['key']}"; 29 // $msg = wfMessage( $i18n['key'], ...( $i18n['params'] ?? [] ) )->text(); 30 $span->appendChild( 31 $span->ownerDocument->createTextNode( $msg ) 32 ); 33 } 34 } 35 36} 37