В настоящее время я занимаюсь разработкой веб-приложения в ASP.NET MVC Core, где пользователи должны зарегистрироваться. Это локализованное веб-приложение, которое должно работать на нескольких языках. Чтобы оптимизировать SEO, я выбрал маршрутизацию локализации, поэтому мой URL выглядит так:
https://localhost:5001/en/Catalogue или https://localhost:5001/fr/catalogue.
Чтобы разрешить это, я добавил этот фрагмент кода в свой метод ConfigureServices в Startup.cs
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization()
.AddDataAnnotationsLocalization();
В моем методе Configure я добавил это:
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("en"),
new CultureInfo("fr"),
};
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
var requestProvider = new RouteDataRequestCultureProvider();
localizationOptions.RequestCultureProviders.Insert(0, requestProvider);
app.UseRouter(routes =>
{
routes.MapMiddlewareRoute("{culture=en}/{*mvcRoute}", subApp =>
{
subApp.UseRequestLocalization(localizationOptions);
subApp.UseMvc(mvcRoutes =>
{
mvcRoutes.MapRoute(
name: "areaRoute",
template: "{culture=en}/{area:exists}/{controller=Home}/{action=Index}/{id?}");
mvcRoutes.MapRoute(
name: "default",
template: "{culture=en}/{controller=Home}/{action=Index}/{id?}");
});
});
});
Это работает как шарм. Я могу перевести свои страницы MVC в любой вкус, который я хочу. Моя проблема с идентификационными страницами. Я добавил эти страницы как элементы лесов. Их URL указывают на https://localhost:5001/Identity/Account/Register. Попытка получить к ним доступ с помощью https://localhost:44339/en/Identity/Account/Register не работает. Как я могу реализовать локализованную локализацию с идентификационными страницами?