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
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.
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.