Перевести приложение asp.net mvc 2? - PullRequest
0 голосов
/ 12 сентября 2010

Я надеюсь, что это довольно простой вопрос, но я довольно новичок в MVC и не могу ясно видеть, как это должно быть сделано. У меня есть сайт, который мне нужно перевести на другой язык. Я попытался найти это, но все, что я нашел, это довольно сложные переводы о том, как обрабатывать строки и т. Д. В файлах resx. Это может быть что-то на потом, но пока все, что мне нужно, - это позволить пользователю переключать язык (по ссылкам, которые я могу разместить на главной странице), а затем, основываясь на этом выборе, иметь разные страницы, показанные на разных языках.

Судя по моим поискам, этого можно было достичь путем маршрутизации. Как предлагается в другом посте:

routes.MapRoute(
"Default", 
"{language}/{controller}/{action}/{id}", 
new { language = "en", controller = "Home", action = "Index", id = "" }
);

А на главной странице переключаются ссылки:

<li><%= Html.ActionLink(
    "Spanish", 
    ViewContext.RouteData.Values["action"].ToString(), 
    new { language = "es" })%></li>
<li><%= Html.ActionLink(
    "French", 
    ViewContext.RouteData.Values["action"].ToString(), 
    new { language = "fr" })%></li>
<li><%= Html.ActionLink(
    "English", 
    ViewContext.RouteData.Values["action"].ToString(), 
    new { language = "en" })%></li>

Я мог бы попробовать это, но то, что я не понимаю, какой тип маршрутов это создает? Это "язык / имя контроллера / имя действия"? И если да, то к чему это приведет? Я имею в виду, обычно, только с контроллером и действием, все, что у меня есть, это один контроллер и одно представление, и пока это представление существует, оно будет работать. Но что это за язык? Это просто как папка, поэтому, если у меня есть папка, скажем en-GB / Home, такой маршрут будет работать? Это не имеет смысла, так что я думаю, нет. Так как же на самом деле заставить эти маршруты вести куда-то? Где разместить переведенные виды?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2010

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

Проверьте эту ссылку для получения дополнительной информации.

Вот краткий как на нем.использование ресурсов в .Net MVC с решениями .

1 голос
/ 12 сентября 2010

URL-адрес, как вы сказали / как он читает - язык / имя контроллера / имя действия

то, что он называет - на что нужно обратить внимание, чтобы понять это, в этом бите определения маршрута:

new { language = "en", controller = "Home", action = "Index", id = "" }

{controller} / {action}, соответствует соответствующий контроллер и действие, как и раньше. Language и id соответствуют этим параметрам в определяемом вами методе действия. Это также могут быть свойства модели (view), если это параметр, который вы указали в методе.

Я не думаю, что в mvc есть что-то автоматически подключенное к языкам, поэтому вы должны явно решить, как вы хотите с этим справиться. Один из способов состоит в том, чтобы ваши методы действия возвращали представление в подпапке для каждого языка или добавляя язык как часть имени файла.

Еще один способ сделать это - определить обработчик в маршруте, который устанавливает нить культуры пользовательского интерфейса, как в классическом asp.net. С этого момента вы используете ресурсы asp.net mvc, как в ссылках klabranche.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...