1

我有一个多语言 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 路由?

4

2 回答 2

0

在您的家庭/语言操作中,您需要设置当前文化。

您可以查看此链接“以编程方式设置 ASP.NET 网页的文化和 UI 文化

于 2013-11-08T07:59:40.637 回答
0

看看这篇博文。您不需要控制器中的语言部分,您可以使用 resx 文件来翻译 url。

于 2013-11-08T08:09:06.400 回答