Arcanedev\Localization\Utilities\RouteTranslator::getTranslatedRoute PHP Method

getTranslatedRoute() public method

Get the translated route.
public getTranslatedRoute ( string $baseUrl, array | false &$parsedUrl, string $defaultLocale, Arcanedev\Localization\Entities\LocaleCollection $supportedLocales ) : string | false
$baseUrl string
$parsedUrl array | false
$defaultLocale string
$supportedLocales Arcanedev\Localization\Entities\LocaleCollection
return string | false
    public function getTranslatedRoute($baseUrl, &$parsedUrl, $defaultLocale, LocaleCollection $supportedLocales)
    {
        if (empty($parsedUrl) || !isset($parsedUrl['path'])) {
            $parsedUrl['path'] = '';
        } else {
            $path = $parsedUrl['path'] = str_replace($baseUrl, '', '/' . ltrim($parsedUrl['path'], '/'));
            foreach ($supportedLocales->keys() as $locale) {
                foreach (["%^/?{$locale}/%", "%^/?{$locale}\$%"] as $pattern) {
                    $parsedUrl['path'] = preg_replace($pattern, '$1', $parsedUrl['path']);
                    if ($parsedUrl['path'] !== $path) {
                        $defaultLocale = $locale;
                        break 2;
                    }
                }
            }
        }
        $parsedUrl['path'] = ltrim($parsedUrl['path'], '/');
        return $this->findTranslatedRouteByPath($parsedUrl['path'], $defaultLocale);
    }