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