public function getURLFromRouteNameTranslated($locale, $transKeyName, $attributes = [], $forceDefaultLocation = false)
    {
        if (!$this->checkLocaleInSupportedLocales($locale)) {
            throw new UnsupportedLocaleException('Locale \''.$locale.'\' is not in the list of supported locales.');
        }

        if (!\is_string($locale)) {
            $locale = $this->getDefaultLocale();
        }

        $route = '';

        if ($forceDefaultLocation || !($locale === $this->defaultLocale && $this->hideDefaultLocaleInURL())) {
            $route = '/'.$locale;
        }
        if (\is_string($locale) && $this->translator->has($transKeyName, $locale)) {
            $translation = $this->translator->trans($transKeyName, [], $locale);
            $route .= '/'.$translation;

            $route = $this->substituteAttributesInRoute($attributes, $route);
        }

        if (empty($route)) {
            // This locale does not have any key for this route name
            return false;
        }

        return rtrim($this->createUrlFromUri($route), '/');
    }
public function getURLFromRouteNameTranslated($locale, $transKeyName, $attributes = [], $forceDefaultLocation = false)
    {
        if (!$this->checkLocaleInSupportedLocales($locale)) {
            throw new UnsupportedLocaleException('Locale \''.$locale.'\' is not in the list of supported locales.');
        }

        if (!\is_string($locale)) {
            $locale = $this->getDefaultLocale();
        }

        $route = '';

        if ($forceDefaultLocation || !($locale === $this->defaultLocale && $this->hideDefaultLocaleInURL())) {
            $route = '/'.$locale;
        }
        if (\is_string($locale) && $this->translator->has($transKeyName, $locale)) {
            $translation = $this->translator->trans($transKeyName, [], $locale);
            $route .= '/'.$translation;

            $route = $this->substituteAttributesInRoute($attributes, $route);
        }

        if (empty($route)) {
            // This locale does not have any key for this route name
            return false;
        }

        return rtrim($this->createUrlFromUri($route), '/');
    }
public function getURLFromRouteNameTranslated ( $ locale , $ transKeyName , $ attributes = [ ] , $ forceDefaultLocation = false ) { if ( ! $ this -> checkLocaleInSupportedLocales ( $ locale ) ) { throw new UnsupportedLocaleException ( 'Locale \'' . $ locale . '\' is not in the list of supported locales.' ) ; } if ( ! \ is_string ( $ locale ) ) { $ locale = $ this -> getDefaultLocale ( ) ; } $ route = '' ; if ( $ forceDefaultLocation || ! ( $ locale === $ this -> defaultLocale && $ this -> hideDefaultLocaleInURL ( ) ) ) { $ route = '/' . $ locale ; } if ( \ is_string ( $ locale ) && $ this -> translator -> has ( $ transKeyName , $ locale ) ) { $ translation = $ this -> translator -> trans ( $ transKeyName , [ ] , $ locale ) ; $ route .= '/' . $ translation ; $ route = $ this -> substituteAttributesInRoute ( $ attributes , $ route ) ; } if ( empty ( $ route ) ) { // This locale does not have any key for this route name return false ; } return rtrim ( $ this -> createUrlFromUri ( $ route ) , '/' ) ; }
Returns an URL adapted to the route name and the locale given.


@param string|bool $locale       Locale to adapt
@param string      $transKeyName Translation key name of the url to adapt
@param array       $attributes   Attributes for the route (only needed if transKeyName needs them)
@param bool        $forceDefaultLocation Force to show default location even hideDefaultLocaleInURL set as TRUE

@throws SupportedLocalesNotDefined
@throws UnsupportedLocaleException

@return string|false URL translated
Returns an URL adapted to the route name and the locale given .