如何通过子系统MVC4实现语言切换器

时间:2014-02-24 11:39:23

标签: c# asp.net asp.net-mvc-4 routing

如何实现解决方案,其中语言切换器不会包含在会话变量或URL中的xyz.com/{language}参数中(我现在有这种方法)。

只需en.XYZ.com/Account/Login或例如de.XYZ.com/SomeController/SomeAction(子域名切换语言变量 - 对SEO更友好)

如何实施?

1 个答案:

答案 0 :(得分:0)

你有没有理由使用会话变量?更常见的解决方案是在路线中包含语言代码,即blah.com/en/info或blah.com/jp/info(英语和日语)

如果您这样做,网站上的每个页面都可以包含指向每种语言的链接。如果您正在撰写可公开访问的网站,这也可以让Google更轻松地为您的所有内容编制索引。

本文解释了如何在域中包含该语言,即。 en.blah.com或jp.blah.com: http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx

更新:这是一个在URL路由中包含语言代码的简单示例。

更改默认路由以包含语言参数:

routes.MapRoute(
"Default", 
"{language}/{controller}/{action}/{id}", 
new { language = "en", controller = "Home", action = "Index", id = "" }
);
Add links for each language to your masterpage:

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

这些链接将呈现为您所在页面的链接 - 只有更改语言。