Я думаю, что вам действительно нужны два маршрута, в длинной форме маршрута вам нужно ограничение , чтобы избежать столкновения маршрутов (на самом деле вы можете этого не делать, поскольку вы используете тире "-", если как у вас нет тире в именах контроллеров). Примерно так: -
routes.MapRoute("Default", "{language}-{culture}/{controller}/{action}/{id}",
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
}
,
new
{
language = @"[a-z][a-z]|^",
culture = @"[A-Z][A-Z]|^"
});
routes.MapRoute("DefaultLocale", "{controller}/{action}/{id}",
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
language = "fr",
culture = "FR"
});