我有一个多语言 MVC 应用程序,我在其中定义路由如下(默认路由是/{lang}/{controller}/{action}
):
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" });
这导致网址
- mywebsite.com/en/frequently-asked-questions
- mywebsite.com/nl/veelgestelde-vragen
在我网站的页脚中有一个语言切换,其工作方式如下:
<a href="@Url.Action("Language", "Home", new { returnUrl = Request.Url.PathAndQuery })">Switch language</a>
因此,当有人单击此操作以从 EN 转到 NL 时,returnUrl 是例如/en/frequently-asked-questions
。目前我将frequently-asked-questions
字符串翻译为veelgestelde-vragen
使用带有字符串翻译的数组。这个解决方案的问题是我必须维护两个内容相同的对象;带有字符串翻译的路由和数组。有没有更简单的方法来解决这个问题?例如,是否可以将字符串转换/en/frequently-asked-questions
回 中的FAQ
动作HomeController
,然后获取FAQ
动作的 NL 路由?