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