config = $config; $this->htmlLinkProcessor = $htmlLinkProcessor; $this->storeManager = $storeManager; $this->storeCodeMapper = $storeCodeMapper; $this->logger = $logger; } /** * Rewrite internal links after the complete frontend page is rendered. * * @param Observer $observer * @return void */ public function execute(Observer $observer): void { if (!$this->config->isEnabled()) { return; } $response = $observer->getData('response'); if (!$response instanceof HttpResponse) { return; } $body = (string)$response->getBody(); if (stripos($body, 'storeManager->getStore()->getCode(); $language = $this->storeCodeMapper->languageFromStoreCode($storeCode); if ($language === null) { return; } $response->setBody($this->htmlLinkProcessor->process($body, $language)); } catch (\Throwable $exception) { $this->logger->error( '[LanguageUrlStoreResolver] Failed to convert links in page HTML.', ['exception' => $exception] ); } } }