控制器的动作命名本地化

时间:2008-11-24 22:27:38

标签: asp.net asp.net-mvc localization

我遇到了问题。 我想在我的项目中本地化我的动作名称,这样法国人就可以拥有带有法语名称的干净网址。

http://www.test.com/Home应为http://www.test.com/Accueil

谷歌索引也是一件好事。 此外,我想对应用程序保持沉默,所以我也希望保留英文名称,因为开发人员(甚至是法国人)更喜欢使用英文名称。

我不知道是否可能以及如何。

我的第一个想法应该是获取浏览器语言,将其分配给CurrentThread.CurrentCulture,这样我就可以选择我想要的视图名称。

非常感谢您的回答。

2 个答案:

答案 0 :(得分:4)

您可以在global.asax中注册路由时执行此操作。

如果通常你有这个:

routes.MapRoute("Catalog-Brands", "catalog/brand/", new {controller = "Brand", action = "Index", isActive = true});

你也可以制作这个(我不懂法语,对不起)

routes.MapRoute("Catalog-Brands-French", "french-catalog/french-brand/", new {controller = "Brand", action = "Index", isActive = true});

你可以让它们全局可用或分开:

public static void RegisterUsRoutes

public static void RegisterFrenchRoutes

您必须在应用程序启动时做出决定(您可能会或可能无法在运行时注册路由。)

答案 1 :(得分:2)

如果您可以使用ISAPI,也就是说,如果您控制IIS,最好的方法是使用ISAPI我建议您使用Ionics Isapi: http://www.codeplex.com/IIRF

它或多或少地实现了Apache中的Rewrite mod(重定向)。