2016-08-17 4 views
2

Вот мой заказчик культуры запросов, который возвращает «en» в качестве культуры по умолчанию, если в URL-адресе не указана культура (например, http://sypalo.com/ru или http://sypalo.com/en). Моя идея показать сайт на том языке, который по умолчанию используется в браузере пользователя, поэтому я ищу способ определить его и вернуть его вместо: return Task.FromResult (new ProviderCultureResult («en», «en»)) ;Параметры локализации основного запроса ASP.NET

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")); 
    })); 
}); 

ответ

1

Вы можете получить Accept-Language заголовок из текущего Request и установить язык по умолчанию. Ваш код должен быть примерно таким:

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

Большое спасибо Adem, это именно то, что я искал! –

Смежные вопросы