2013-09-24 6 views
1

У меня есть многоязычных приложений MVC, где я определить маршруты следующим образом (маршрут по умолчанию /{lang}/{controller}/{action}):ASP MVC 4 мультиязычный переключатель маршрута

routes.MapRoute("FAQEN", "{lang}/frequently-asked-questions/", new { controller = "Home", action = "FAQ", lang = "en" }, new { lang = "en" }); 
routes.MapRoute("FAQNL", "{lang}/veelgestelde-vragen/", new { controller = "Home", action = "FAQ", lang = "nl" }, new { lang = "nl" }); 

Это приводит к URLs

  • МойВебСайт. ком/о/часто задаваемые вопросы-
  • mywebsite.com/nl/veelgestelde-vragen

В сноске моего сайта есть переключатель языка, который работает следующим образом:

<a href="@Url.Action("Language", "Home", new { returnUrl = Request.Url.PathAndQuery })">Switch language</a> 

Так что, когда кто-то нажимает на эту акцию, чтобы перейти от EN до Н.Л. ReturnUrl, например, /en/frequently-asked-questions. В настоящее время я переводил строку frequently-asked-questions в veelgestelde-vragen с использованием массива со строковыми переводами. Проблема с этим решением заключается в том, что я должен поддерживать два объекта только одного и того же контента; маршруты и массив со строковыми переводами. Есть ли более простой способ решить эту проблему? Например, можно ли преобразовать строку /en/frequently-asked-questions в действие FAQ в HomeController, а затем получить маршрут NL для действия FAQ?

ответ

0

В вашем домашнем/языковом действии вам необходимо установить текущую культуру.

Вы можете посмотреть по этой ссылке «To set the culture and UI culture for an ASP.NET Web page programmatically»

+0

Для подхода, основанного на MVC, посмотрите, поддерживает ли эта ссылка: http://adamyan.blogspot.in/2010/07/addition-to-aspnet-mvc-localization.html –

+0

Спасибо Vishnoo Rath, я взгляну на источник. Может быть, я могу найти что-то полезное. – Marthijn

0

Взгляните на this blogpost. Вам не нужна часть языка в контроллере, и вы можете использовать файлы resx для перевода URL-адресов.

+0

Спасибо. Проблема заключается не в том, чтобы иметь разные маршруты для каждого языка, а для связывания с одним языком с другим (переключить язык), переведя URL-адрес реферала ('Request.Url.PathAndQuery'). – Marthijn

Смежные вопросы