У меня есть многоязычных приложений 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
?
Для подхода, основанного на MVC, посмотрите, поддерживает ли эта ссылка: http://adamyan.blogspot.in/2010/07/addition-to-aspnet-mvc-localization.html –
Спасибо Vishnoo Rath, я взгляну на источник. Может быть, я могу найти что-то полезное. – Marthijn