You are setting “arabic” as DefaultRequestCulture
but DefaultRequestCulture
is used if none of the built-in providers can determine the request culture. The default providers are:
QueryStringRequestCultureProvider
CookieRequestCultureProvider
AcceptLanguageHeaderRequestCultureProvider
Most likely the culture is determined from the Accept-Language HTTP header that the browser is sending.
You have to remove the AcceptLanguageHeaderRequestCultureProvider
in order to fallback to DefaultRequestCulture
. To do that, we can overwrite the RequestCultureProviders
list of RequestLocalizationOptions
and use only the other two providers. In Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
CultureInfo[] supportedCultures = new[]
{
new CultureInfo("ar"),
new CultureInfo("en")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("ar");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider>
{
new QueryStringRequestCultureProvider(),
new CookieRequestCultureProvider()
};
});
}
and in Configure
method just use app.UseRequestLocalization();
before app.UseMvc();