我正在尝试本地化我的应用程序的 URL。不幸的是,大多数页面都向我展示了应用程序本地化的示例,例如:http://localhost/en-US/Home/Index这不是我想要的。我想本地化这样的 URL:http://localhost/欢迎http://localhost/Bienvenue [法语欢迎词]这种文化已经在我这边用 cookie 管理,并且与“CookieRequestCultureProvider”类配合得很好。所以我有这些信息,页面中的本地化是可以的。我成功注册了我需要的所有路线。上面的两个示例都可以工作并显示页面。多亏了这一点: public void Apply(ApplicationModel application) { foreach (var controller in application.Controllers) { foreach (var action in controller.Actions) { var localizedRouteAttributes = action.Attributes.OfType<LocalizedRouteAttribute>().ToArray(); if (localizedRouteAttributes.Any()) { foreach (var localizedRouteAttribute in localizedRouteAttributes) { var localizedVersions = GetLocalizedVersionsForARoute(localizedRouteAttribute.Name); // GetLocalizedVersionsForARoute contains all routes translated and group by culture. foreach (var localizedVersion in localizedVersions) { if (!action.Selectors.Any(s => s.AttributeRouteModel.Template == localizedVersion.Template)) action.Selectors.Add(new SelectorModel(action.Selectors.First()) { AttributeRouteModel = localizedVersion }); } } } } } }所以 mvc 取选择器中的最后一个路由寄存器(如果是 FR,则取 FR 路由)。我无法通过这段代码管理其他路线,因为它已随应用程序一起加载。并且不能动态使用(应用程序允许在我想要的时候更改语言)。
2 回答
- 2 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消