Я пытаюсь локализовать URL-адреса своего приложения. К сожалению, на большинстве страниц мне представлены примеры локализации приложений. Например:
Это не то, что я хочу. Я бы локализовал URL-адреса вот так:
http://localhost/Bienvenue [приветственное слово на французском]
На моей стороне культура уже управлялась с помощью cookie и хорошо работала с классом CookieRequestCultureProvider.
Так что у меня есть эта информация и с локализацией на страницах все в порядке.
Мне удалось прописать все нужные мне маршруты. Оба приведенных выше примера работают и отображают страницу. Благодаря этому:
public void Apply(ApplicationModel application)
{
foreach (var controller in application.Controllers)
{
foreach (var action in controller.Actions)
{
var localizedRouteAttributes = action.Attributes.OfType<LocalizedRouteAttribute>().ToArray();
if (localizedRouteAttributes.Any())
{
foreach (var localizedRouteAttribute in localizedRouteAttributes)
{
var localizedVersions = GetLocalizedVersionsForARoute(localizedRouteAttribute.Name); // GetLocalizedVersionsForARoute contains all routes translated and group by culture.
foreach (var localizedVersion in localizedVersions)
{
if (!action.Selectors.Any(s => s.AttributeRouteModel.Template == localizedVersion.Template))
action.Selectors.Add(new SelectorModel(action.Selectors.First()) { AttributeRouteModel = localizedVersion });
}
}
}
}
}
}
Таким образом, mvc берет последний регистр маршрута в Селекторах (если FR, он принимает маршрут FR). Я не могу управлять другими маршрутами с помощью этого фрагмента кода, потому что он загружается вместе с приложением. И не может работать с динамическим использованием (приложение позволяет менять язык, когда я хочу).
Заранее спасибо.