Изменить культуру в MVC - PullRequest
       15

Изменить культуру в MVC

1 голос
/ 03 марта 2010

Я использую логику локализации на основе URL в моем приложении MVC. таким образом, маршрут по умолчанию будет mysite / someControler, а локализованный маршрут будет mysite / en-US / someControler.

"en-US" - это значение для параметра "культура", значение которого по умолчанию.

Мне интересно, какой существует общий способ переключения между культурами и сохранения всех значений и параметров маршрута URL?

Спасибо

1 Ответ

0 голосов
/ 04 марта 2010

Я делаю что-то простое:
В моем базовом контроллере (все остальные контроллеры наследуются от него) я установил следующие биты ViewData:

    If Request.Path.Contains("/en/") Then
        ViewData("PathEs") = Request.Path.Replace("/en/", "/es/")
        ViewData("PathPt") = Request.Path.Replace("/en/", "/pt/")
    ElseIf Request.Path.Contains("/pt/") Then
        ViewData("PathEn") = Request.Path.Replace("/pt/", "/en/")
        ViewData("PathEs") = Request.Path.Replace("/pt/", "/es/")
    Else
        ViewData("PathEn") = Request.Path.Replace("/es/", "/en/")
        ViewData("PathPt") = Request.Path.Replace("/es/", "/pt/")
    End If

А потом на главной странице

 <div id="langbar">
    <% if not string.isnullorempty(ViewData("PathEs")) then %>
       <a href="<%= ViewData("PathEs") %>">Español</a>
    <% end  if %>
    <% if not string.isnullorempty(ViewData("PathEn")) then %>
       <a href="<%= ViewData("PathEn") %>">English</a>
    <% end  if %>
    <% if not string.isnullorempty(ViewData("PathPt")) then %>
       <a href="<%= ViewData("PathPt") %>">Portugues</a>
    <% end  if %>
</div>

Не слишком умно, но сделайте свою работу хорошо, если вы имеете дело с несколькими ударами (вы точно можете оптимизировать обе процедуры)

...