asp mvc 核心 url 本地化

我正在尝试本地化我的应用程序的 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 路由)。我无法通过这段代码管理其他路线,因为它已随应用程序一起加载。并且不能动态使用(应用程序允许在我想要的时候更改语言)。


长风秋雁
浏览 136回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP