title: ASP.NET Core Request Localization Options
body: <p>Here is my custom request culture provider which returns "en" as a default culture if no culture specified in url (for example <a href="http://sypalo.com/ru" rel="noreferrer">http://sypalo.com/ru</a> or <a href="http://sypalo.com/en" rel="noreferrer">http://sypalo.com/en</a>).
  My idea to show website on that language which is default in user's browser, so I'm looking a way how to determine it and return it instead of: return Task.FromResult(new ProviderCultureResult("en", "en"));</p>
  
  <pre><code>services.Configure&lt;RequestLocalizationOptions&gt;(options =&gt;
  {
      var supportedCultures = new List&lt;CultureInfo&gt;
      {
          new CultureInfo("en"),
          new CultureInfo("ru")                            
      };
  
      options.DefaultRequestCulture = new RequestCulture(culture: "en", uiCulture: "en");
      options.SupportedCultures = supportedCultures;
      options.SupportedUICultures = supportedCultures;
  
      options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context =&gt;
      {                    
          var pathSegments = context.Request.Path.Value.Split('/');
          if (pathSegments.Count() &gt; 0)
          if (supportedCultures.Select(x =&gt; x.TwoLetterISOLanguageName).Contains((pathSegments[1])))
              return Task.FromResult(new ProviderCultureResult(pathSegments[1], pathSegments[1]));
         return Task.FromResult(new ProviderCultureResult("en", "en"));
     }));
  });
  </code></pre>