marketCookie = $marketCookie; $this->storeCodeMapper = $storeCodeMapper; } public function resolve(RequestInterface $request): ?string { $requestMarket = $this->normalizeMarket($request->getParam('market')); if ($requestMarket !== null) { return $requestMarket; } $cookieMarket = $this->normalizeMarket($this->marketCookie->get()); if ($cookieMarket !== null) { return $cookieMarket; } return null; } public function resolveForLanguage(RequestInterface $request, string $language): ?string { $requestMarket = $this->normalizeMarketForLanguage($request->getParam('market'), $language); if ($requestMarket !== null) { return $requestMarket; } $cookieMarket = $this->normalizeMarketForLanguage($this->marketCookie->get(), $language); if ($cookieMarket !== null) { return $cookieMarket; } return $this->storeCodeMapper->getDefaultStoreCodeForLanguage($language); } public function normalizeMarket($market): ?string { if (!is_scalar($market)) { return null; } $market = trim((string)$market); return $this->storeCodeMapper->isRealStoreCodeInScope($market) ? $market : null; } public function normalizeMarketForLanguage($market, string $language): ?string { $market = $this->normalizeMarket($market); if ($market === null) { return null; } return $this->storeCodeMapper->languageFromStoreCode($market) === strtolower($language) ? $market : null; } }