I am using Request Localization in a NET Core 7 and Razor Pages application:
builder.Services.AddRazorPages();
builder.Services.Configure<RequestLocalizationOptions>(options => {
options.DefaultRequestCulture = new RequestCulture("pt");
options.SupportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("pt") };
options.SupportedUICultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("pt") };
options.RequestCultureProviders.Insert(0, new RouteDataRequestCultureProvider {
RouteDataStringKey = "culture",
UIRouteDataStringKey = "culture",
Options = options
});
});
WebApplication application = builder.Build();
application.UseRouting();
application.MapRazorPages();
application.UseRequestLocalization();
The method UseRequestLocalization
also accepts RequestLocalizationOptions
.
Do I need to pass RequestLocalizationOptions
to this method and also use:
builder.Services.Configure<RequestLocalizationOptions>
Or just one of those? And which one?
You can use
AddRequestLocalization
/UseRequestLocalization
, first one accepts action allowing to configureRequestLocalizationOptions
via options pattern, second one setupsRequestLocalizationMiddleware
(enables automatic setting of the culture for HttpRequests based on information sent by the client in headers and logic provided by the application, consumesIOptions<RequestLocalizationOptions>
).Or you can pass the instance of
RequestLocalizationOptions
directly to as done in the docs:The only difference how
IOptions<RequestLocalizationOptions>
created and handled - in first case they would be handled via DI.