Esempio n. 1
0
 public virtual IActionResult ChangeCulture(string name, string returnUrl)
 {
     name = name?.Trim();
     if (!CultureInfoHelper.IsCultureName(name))
     {
         return(LocalRedirect(returnUrl));
     }
     Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(name)), new CookieOptions
     {
         Secure      = Request.IsHttps,
         IsEssential = true,
         Expires     = DateTimeOffset.UtcNow.AddDays(7)
     });
     return(LocalRedirect(returnUrl));
 }
Esempio n. 2
0
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                return(Task.FromCanceled <HttpResponseMessage>(token));
            }

            // here you can chose to get the lang from database, cookie or from the request if the culture is stored on local storage.
            CultureInfo ci = null;

            if (!string.IsNullOrEmpty(request.RequestUri.Query))
            {
                NameValueCollection queryString = HttpUtility.ParseQueryString(request.RequestUri.Query);
                string name = queryString[_parameterName]?.Trim();
                if (!string.IsNullOrEmpty(name))
                {
                    ci = CultureInfoHelper.Get(name);
                }
            }

            if (ci == null && request.Headers.AcceptLanguage.Count > 0)
            {
                foreach (StringWithQualityHeaderValue headerValue in request.Headers.AcceptLanguage)
                {
                    if (string.IsNullOrEmpty(headerValue.Value) || headerValue.Value.Length < 2)
                    {
                        continue;
                    }
                    string name = headerValue.Value.Substring(0, 2);
                    if (!CultureInfoHelper.IsCultureName(name))
                    {
                        continue;
                    }
                    ci = CultureInfoHelper.Get(name);
                }
            }

            if (ci != null)
            {
                request.Headers.AcceptLanguage.Clear();
                request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(ci.Name));
                Thread.CurrentThread.CurrentCulture   = ci;
                Thread.CurrentThread.CurrentUICulture = ci;
            }

            return(base.SendAsync(request, token));
        }
Esempio n. 3
0
 public static bool AddCulture([NotNull] string name)
 {
     return(CultureInfoHelper.IsCultureName(name) && __supportedCultures.Add(name));
 }