Локализация с отдельными языковыми папками в представлениях - PullRequest
0 голосов
/ 17 июня 2010

Я пытаюсь иметь определенные папки для каждого языка в представлениях.(Я знаю, что это не лучший способ сделать это, но на данный момент так должно быть)
например, /Views/EN/User/Edit.aspx /Views/US/User/Edit.aspx

Они оба используют один и тот же контроллер и модель, но имеютразные взгляды для каждого языка.

В моем Global.asax.cs у меня есть:

routes.MapRoute(
    "Default", // Route name
    "{language}/{controller}/{action}/{id}", // URL with parameters
    new { language = "en", controller = "Logon", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
    new { language = @"en|us" } // validation
);

Это работает нормально, но всегда указывает на одно и то же представление.
Если указать путь к папке Lanagugage, оно будет работать:

return View("~/Views/EN/User/Edit.aspx");

Но очевидно, что это не очень хороший способ сделать это.
Есть ли способ заставить MVC искать нужную языковую папку?

Я знаю, что нет 'Это лучший способ локализации, но я не могу использовать файлы ресурсов.

1 Ответ

0 голосов
/ 18 июня 2010

Измените ViewEngine для использования параметра маршрута

Изменить правило поиска для представлений

EDIT

Поскольку список путей, сканируемых на предмет просмотра, является статическим, нет возможности выбирать разные виды в зависимости от экземпляра контроллера, работая над изменением списка по ссылке выше. Это выглядит более многообещающей отправной точкой:

http://www.dotnetguy.co.uk/post/2010/01/31/ASPNET-MVC-e28093-Dynamically-Changing-The-Master-Page-%28Theming%29.aspx

Перезаписывает CreateView, чтобы изменить представление. Образец изменяет мастер-страницу, но, надеюсь, он также работает для представлений.

...