2016-08-17 2 views
2

Hier ist mein benutzerdefinierter Anforderungskulturanbieter, der "en" als Standardkultur zurückgibt, wenn in url keine Kultur angegeben ist (z. B. http://sypalo.com/ru oder http://sypalo.com/en). Meine Idee, Website auf dieser Sprache zu zeigen, die im Browser des Benutzers standardmäßig ist, so suche ich einen Weg, wie man es bestimmen und es zurückgeben kann: return Task.FromResult (new ProviderCultureResult ("en", "en")) ;ASP.NET Core Request-Lokalisierungsoptionen

services.Configure<RequestLocalizationOptions>(options => 
{ 
    var supportedCultures = new List<CultureInfo> 
    { 
     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 => 
    {      
     var pathSegments = context.Request.Path.Value.Split('/'); 
     if (pathSegments.Count() > 0) 
     if (supportedCultures.Select(x => x.TwoLetterISOLanguageName).Contains((pathSegments[1]))) 
      return Task.FromResult(new ProviderCultureResult(pathSegments[1], pathSegments[1])); 
     return Task.FromResult(new ProviderCultureResult("en", "en")); 
    })); 
}); 

Antwort

1

Sie können Accept-Language Header aus dem aktuellen Request und Standardsprache erhalten. Ihr Code sollte in etwa so aussehen:

services.Configure<RequestLocalizationOptions>(options => 
{ 
    //... 

    options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context => 
    {      
     //... 
     var userLangs = context.Request.Headers["Accept-Language"].ToString(); 
     var firstLang = userLangs.Split(',').FirstOrDefault(); 
     var defaultLang = string.IsNullOrEmpty(firstLang) ? "en" : firstLang; 
     return Task.FromResult(new ProviderCultureResult(defaultLang, defaultLang)); 
    })); 
}); 
+0

Vielen Dank Adem, das ist genau das, was ich gesucht habe! –