function(lang,/*#if NODE*/entry,/*#/if*/params){
		var plus = '', route = params.shift();
		if(route !== true){
			route = this.routes.get(/*#ifelse NODE*/entry||'main'/*#/if*/).get(route);
			/*#if DEV */
			if(!route){
				//if(Springbok::$inError) return 'javascript:alert(\'No route found\')';
				throw new Error("Router getLink: This route does not exists: "+route);
			}
			/*#/if*/
		}
		var options = S.isObj(UArray.last(params)) ? params.pop() : {};
		if(options.ext) plus += '.'+options.ext;
		else if(route[2] && route[2].ext) plus += '.'+route[2].ext;
		if(options['?'] != null) plus += '?'+options['?'];
		if(options['#'] != null) plus += '#'+options['#'];
		
		lang = params.lang || lang;
		
		if(!params.length) return (route[lang] || route._)[1]+ plus;
		var url = (route === true ? this.getStringLink(lang,/*#if NODE*/entry,/*#/if*/ params) : UString.vformat((route[lang]||route._)[1], params.map(this.translate.bind(this,lang))));
		return (url==='/'?'/':UString.trimRight(url,'\/')) + plus;
	}
function(lang,entry,params){
		var plus = '', route = params.shift();
		if(route !== true){
			route = this.routes.get(entry||'main').get(route);
			
			if(!route){
				
				throw new Error("Router getLink: This route does not exists: "+route);
			}
			
		}
		var options = S.isObj(UArray.last(params)) ? params.pop() : {};
		if(options.ext) plus += '.'+options.ext;
		else if(route[2] && route[2].ext) plus += '.'+route[2].ext;
		if(options['?'] != null) plus += '?'+options['?'];
		if(options['#'] != null) plus += '#'+options['#'];
		
		lang = params.lang || lang;
		
		if(!params.length) return (route[lang] || route._)[1]+ plus;
		var url = (route === true ? this.getStringLink(lang,entry, params) : UString.vformat((route[lang]||route._)[1], params.map(this.translate.bind(this,lang))));
		return (url==='/'?'/':UString.trimRight(url,'\/')) + plus;
	}
function ( lang , /*#if NODE*/ entry , /*#/if*/ params ) { var plus = '' , route = params . shift ( ) ; if ( route !== true ) { route = this . routes . get ( /*#ifelse NODE*/ entry || 'main' /*#/if*/ ) . get ( route ) ; /*#if DEV */ if ( ! route ) { //if(Springbok::$inError) return 'javascript:alert(\'No route found\')'; throw new Error ( "Router getLink: This route does not exists: " + route ) ; } /*#/if*/ } var options = S . isObj ( UArray . last ( params ) ) ? params . pop ( ) : { } ; if ( options . ext ) plus += '.' + options . ext ; else if ( route [ 2 ] && route [ 2 ] . ext ) plus += '.' + route [ 2 ] . ext ; if ( options [ '?' ] != null ) plus += '?' + options [ '?' ] ; if ( options [ '#' ] != null ) plus += '#' + options [ '#' ] ; lang = params . lang || lang ; if ( ! params . length ) return ( route [ lang ] || route . _ ) [ 1 ] + plus ; var url = ( route === true ? this . getStringLink ( lang , /*#if NODE*/ entry , /*#/if*/ params ) : UString . vformat ( ( route [ lang ] || route . _ ) [ 1 ] , params . map ( this . translate . bind ( this , lang ) ) ) ) ; return ( url === '/' ? '/' : UString . trimRight ( url , '\/' ) ) + plus ; }
/* Exemples :
(['/:id-:slug',post.id,post.slug])
(['/:id-:slug',post.id,post.slug,{'target':'_blank','?':'page=2'}])
/ * Exemples : ( [ / : id - : slug post . id post . slug ] ) ( [ / : id - : slug post . id post . slug { target : _blank ? : page = 2 } ] )