Я использую самую новую версию пакета AttributeRouting в Nuget для настройки моей маршрутизации для моего проекта ASP.Net MVC. Я создаю веб-сайт с двумя языками: английский (основной) и испанский (вторичный). URL-адреса для двух языков разные. Например, о нас для английского было бы так: www.root.com/en/about-us, тогда как испанская версия может быть такой: www.root.com/es/sobre-nosotros.
У меня есть настройка префикса маршрута, как показано ниже: [RoutePrefix ( "en", TranslationKey = "Главная" )]
Затем у меня есть программа, которую я создал, которая считывает значения из файла XML в FluentTranslationProvider. Код для регистрации моих маршрутов выглядит так:
var translations = new FluentTranslationProvider();
translations
.AddTranslations()
.FromFile();
routes.MapAttributeRoutes(
config =>
{
config.AddRoutesFromControllersOfType<BaseController>();
config.AddTranslationProvider(translations);
config.CurrentUICultureResolver =
(httpContext, routeData) =>
(string) routeData.DataTokens["cultureName"] ??
Thread.CurrentThread.CurrentUICulture.Name;
});
И это работает, потому что я могу посетить мою страницу Routes.axd и увидеть следующее: http://imm.io/nm7Z
Позже на моей странице мой код показывает, что мой CurrentCulture установлен в es-AR, но когда я вызываю класс URLHelper для создания URL-адреса, он создает только английскую версию по умолчанию и не даст мне испанскую версию. Может ли кто-нибудь дать мне понять, почему это может быть так? Я не могу для жизни своей фигуры.