/* Exemples :
(['/:id-:slug',post.id,post.slug])
(['/:id-:slug',post.id,post.slug,{'target':'_blank','?':'page=2'}])
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;
	}