繁体   English   中英

在ASP.NET Core 2中路由本地化

[英]Route localization in ASP.NET Core 2

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

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

如果有人直接更改网址(例如en / products)并将pl替换为en,我希望他/她自动重定向到pl / produkty。

我希望你能帮帮我!

这里有一个非常好的资源: Asp.Net核心本地化深潜

准确地说,这就是你要找的东西:

 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?}");
        });
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM