У вас не может быть нескольких имен для одного и того же действия. Это будут разные действия. Так работает mvc. Mabe лучше реализовать описанное поведение с помощью маршрутизации.
routes.MapRoute("Lang1RouteToController1Action1",
"Lang1Controller/Lang1Action/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute("Lang2RouteToController1Action1",
"Lang2Controller/Lang2Action/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Ofcourse вам придется создать множество маршрутов, но вы можете сделать конфигурационный файл или хранилище маршрутизации данных в базе данных, а просто создать их в цикле при запуске приложения. В любом случае, я думаю, что лучше создать набор методов, потому что, если вы захотите добавить еще один язык, вам нужно будет найти действия по всем вашим контроллерам и перекомпилировать код. Но в случае маршрутов и конфигурационного файла это становится не так сложно. Вторая вещь - расширение Html.ActionLink («Главная», «Индекс», «Домой») - вам нужно будет реализовать свои собственные, чтобы вернуть ссылку с локализованным действием.
Не могли бы вы установить Thread.CurrentThread.CurrentCulture, Thread.CurrentThread.CurrentUICulture вместо этого? http://msdn.microsoft.com/en-us/library/bz9tc508.aspx –