public function getAlternateUrl(
        $language, array $routeParams = array(), $route = null, $defaultToHome = true
    ) {
        if (!$route) {
            $router = Zend_Controller_Front::getInstance()->getRouter();
            $route  = $router->getCurrentRouteName();
        }
        if (empty($this->view->config()->resources->router->routesFile->{$language})) {
            return null;
        }
        $routes = $this->_getRoutesWithFallback($language);
        $localizedRoutes = Garp_I18n::getLocalizedRoutes($routes, array($language));

        $router = new Zend_Controller_Router_Rewrite();
        $router->addConfig(new Zend_Config($localizedRoutes));
        $routeParams['locale'] = $language;

        // @todo Also add existing GET params in the form of ?foo=bar
        try {
            $alternateRoute = $router->assemble($routeParams, $route);
        } catch (Exception $e) {
            // try to default to 'home'
            if (!$defaultToHome) {
                throw $e;
            }
            return $this->_constructHomeFallbackUrl($language);
        }
        // Remove the baseURl because it contains the current language
        $alternateRoute = $this->view->string()->strReplaceOnce(
            $this->view->baseUrl(), '', $alternateRoute
        );

        // Always use explicit localization
        if ($alternateRoute == '/') {
            $alternateRoute = '/' . $language;
        }
        return $alternateRoute;
    }