ASP.NET MVC Url.Acción y valor de nombre de ruta

Estoy usando asp.net mvc 2 y creo localización basada en rutas.

mi ruta se ve así:{culture}/{controller}/{action} Voy al controlador de mi casa:en/Home/Index

a vista de mi controlador de inicio tiene enlaces a otros controladores:

<a href='<%= Url.Action("Prods","Products") %>' >Products</a>
<a href='<%= Url.Action("Index","About") %>' >About</a>

Primer código generado por enlace:/en/Products/Prods pero el segundo genera:/Home/Index

No entiendo por quéUrl.Action omite el{culture} parámetro de ruta cuando paso valorIndex en acción de argumento? ¿Qué estoy haciendo mal

Configuración de ruta:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute("Login", // Route name
                "{controller}/Index", // URL with parameters
                new { controller = "Login", action = "Index" } // Parameter defaults
                ).RouteHandler = new SingleCultureMvcRouteHandler();

routes.MapRoute("Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
               );      

Lueg

foreach (Route r in routes)
{
    if (!(r.RouteHandler is SingleCultureMvcRouteHandler))
    {
       r.RouteHandler = new MultiCultureMvcRouteHandler();

       r.Url = "{culture}/" + r.Url;

       if (r.Defaults == null)
       {
          r.Defaults = new RouteValueDictionary();
       }

       r.Defaults.Add("culture", "en");

       if (r.Constraints == null)
       {
          r.Constraints = new RouteValueDictionary();
       }

       r.Constraints.Add("culture", new CultureConstraint(cultures));
    }
 }

Gracias por toda la ayuda

Respuestas a la pregunta(2)

Su respuesta a la pregunta