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)); }
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)); }
public static bool AddCulture([NotNull] string name) { return(CultureInfoHelper.IsCultureName(name) && __supportedCultures.Add(name)); }