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"));
        }
Exemple #2
0
        // 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)));
        }
Exemple #3
0
        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));
        }