public override async Task <ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext) { // Accès à la culture par défaut de la requête // IRequestCultureFeature cultureFeature = httpContext.Features.Get<IRequestCultureFeature>(); CookieRequestCultureProvider cookieCulture = new CookieRequestCultureProvider(); AcceptLanguageHeaderRequestCultureProvider headerCulture = new AcceptLanguageHeaderRequestCultureProvider(); // 1 - On teste les cookies ProviderCultureResult res = await cookieCulture.DetermineProviderCultureResult(httpContext); if (res != null) { if ((Options == null) || Options.SupportedUICultures.Any(c => res.UICultures.Contains(c.TwoLetterISOLanguageName))) { return(res); } } // 2 - On teste l'entête http res = await headerCulture.DetermineProviderCultureResult(httpContext); if (res != null) { if ((Options == null) || Options.SupportedUICultures.Any(c => res.UICultures.Contains(c.TwoLetterISOLanguageName))) { return(res); } } // 3 - Valeur par défaut... // Par défaut en dur, à améliorer. return(new ProviderCultureResult("en-US")); }
// GET: Accommodations public async Task <IActionResult> Index(int page = 1) { var provider = new AcceptLanguageHeaderRequestCultureProvider(); var cultures = await provider.DetermineProviderCultureResult(HttpContext); ViewData["languages"] = cultures.UICultures[0]; var pageInfo = new PageInfo(10, page); var accommodationsItems = await _accommodations.GetAsync(pageInfo, 1033, localizedAccommodations => localizedAccommodations.OrderBy(p => p.RealEstate.SequenceNumber).ThenBy(p => p.Id)); return(View(accommodationsItems.AsPagedList(pageInfo))); }
protected internal virtual string GetCultureNavigationTooltip() { var informationArgument = this.RequestCultureFeature.Provider switch { null => this.Localizer.GetString("the default settings"), AcceptLanguageHeaderRequestCultureProvider _ => this.Localizer.GetString("the request-header (browser-settings)"), CookieRequestCultureProvider _ => this.Localizer.GetString("a cookie"), OpenIdConnectRequestCultureProvider _ => this.Localizer.GetString("the query-string"), _ => null }; string tooltip = this.Localizer.GetString("Select a culture."); if (informationArgument != null) { tooltip += " " + this.Localizer.GetString("The current culture is determined by {0}.", informationArgument); } return(tooltip); }
//[NonAction] public override void OnActionExecuting(ActionExecutingContext context) { Logger.LogTrace("============================= OnActionExecuting in"); Sites = Storage.GetRepository <ISiteRepository>(EnumDB.UserSites); Users = Storage.GetRepository <IUserRepository>(EnumDB.UserSites); LoadSessionUser(); if (context.Result != null) { return; } ResolveCurrentSite(context); if (context.Result != null) { return; } SiteLanguages = Languages.GetUnblocked(Site.Id).ToList(); var provider = new AcceptLanguageHeaderRequestCultureProvider(); var languagePreferences = provider.DetermineProviderCultureResult(context.HttpContext).Result; try { Localizer2Garin.ResolveCulture(context.RouteData.Values["Culture"] as string, SiteLanguages, languagePreferences != null && languagePreferences.Cultures != null ? languagePreferences.Cultures : null); } catch (CultureException) { var url = Url.CurrentUrl(new { culture = (string)null }); Logger.LogTrace("ResolveCulture redirect to {0}", url); context.Result = new RedirectResult(url, true); } if (context.Result != null) { return; } //base.OnActionExecuting(context); }
public async Task <IActionResult> Index() { //var userLanguages = Request.Headers["Accept-Language"].ToString(); //if (userLanguages != null) await Response.WriteAsync(userLanguages); //Thread.CurrentThread.CurrentUICulture = new CultureInfo(1033); var provider = new AcceptLanguageHeaderRequestCultureProvider(); var cultures = await provider.DetermineProviderCultureResult(HttpContext); ViewData["languages"] = cultures.UICultures[0]; // ViewData["H1"] = _localizer["Travel"]; const int languageId = 1033; var continents = await _travel.Regions.GetContinentsAsync(languageId); return(View(continents)); }