AddInitialRequestCultureProvider()
in ASP.NET Core localisation seems to have an undefined behaviour when it is used in both services and application builder configurations to add a custom RequestCultureProvider
.
If you want to use a custom RequestCultureProvider
to customise how the applicable culture is determined for an incoming HTTP request (for example, by looking up the chosen culture of a user in the database), you must configure the provider in the services collection as described in the section ‘Use a custom provider’.
You must also call IApplicationBuilder.UseRequestLocalization()
, but you must not pass any argument to the method.
If a RequestLocalizationOptions
argument is specified here, it supersedes what is configured in the services collection, and your custom RequestCultureProvider
does not work.
Typically, you configure the middleware in the application builder before the services. But in order to emphasise the significance of setting the localisation options only in the services configuration, I have reversed this order on purpose.