【问题标题】:Route localization in ASP.NET Core 2ASP.NET Core 2 中的路由本地化
【发布时间】:2018-04-15 05:40:22
【问题描述】:

我正在使用 ASP.NET Core 2 开发一个在线商店,我正在努力解决如何实现路由本地化,例如。取决于用户所在的国家/地区,我希望他看到 /en/products 或 /pl/produkty。

我设法将文化作为 url 的一部分实现,例如 /en/....,并且用户还可以通过单击网站上的按钮来更改默认语言。但是,我不知道如何本地化整个网址。我不想在 Startup.cs (MapRoute) 中放置数百个 url。我需要一个更好的解决方案,它在幕后自动工作。

如果有人直接更改 url(例如 en/products)并输入 pl 而不是 en,我希望他/她自动重定向到 pl/produkty。

希望你能帮帮我!

【问题讨论】:

    标签: asp.net asp.net-core routes


    【解决方案1】:

    这里有一个很好的资源: Asp.Net core Localization deep dive

    这正是您要寻找的东西:

     IList<CultureInfo> supportedCultures = new List<CultureInfo>
    {
        new CultureInfo("en-US"),
        new CultureInfo("fi-FI"),
    };
    var localizationOptions = new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("en-US"),
        SupportedCultures = supportedCultures,
        SupportedUICultures = supportedCultures
    };
    var requestProvider = new RouteDataRequestCultureProvider();
    localizationOptions.RequestCultureProviders.Insert(0, requestProvider);
    
    app.UseRouter(routes =>
    {
        routes.MapMiddlewareRoute("{culture=en-US}/{*mvcRoute}", subApp =>
        {
            subApp.UseRequestLocalization(localizationOptions);
    
            subApp.UseMvc(mvcRoutes =>
            {
                mvcRoutes.MapRoute(
                    name: "default",
                    template: "{culture=en-US}/{controller=Home}/{action=Index}/{id?}");
            });
        });
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多