My opinion is maybe to try to load your routes definitions explicitly per language in your global.asax.
const string DEFAULT_LANGUAGE = "en";
routes.MapRoute("Product_EN", "en/Product/{action}", new { controller="Product", action="Index"} );
routes.MapRoute("Product_FR", "fr/Produit/{action}", new { controller="Product", action="Index"} );
routes.MapRoute("Product_ES", "es/Produto/{action}", new { controller="Product", action="Index"} );
route.MapRoute("Default", "{language}/{controller}/{action}/{id}", new { language = DEFAULT_LANGUAGE, controller="Home", action="Index", id=""});
Note: These are example, you should retreive the translated names from global resources.
But then we are forced to refer the correct route name in your views to use RouteActions. Anyway, it is a bit work-around solution but allows you to have translated URLs into your website like:
www.mysite.com/produit/afficher
www.mysite.com/product/show
...
I hope it helps,
Cheers
Fred.