resolved issue when setting initial culture cookie

This commit is contained in:
sbwalker 2024-11-08 15:41:24 -05:00
parent 0f698e0c50
commit 5a91b143b6

View File

@ -192,26 +192,29 @@
_bodyResources += ParseScripts(site.BodyContent); _bodyResources += ParseScripts(site.BodyContent);
// set culture if not specified // set culture if not specified
string culture = Context.Request.Cookies[Shared.CookieRequestCultureProvider.DefaultCookieName]; string cultureCookie = Context.Request.Cookies[Shared.CookieRequestCultureProvider.DefaultCookieName];
if (culture == null) if (cultureCookie == null)
{ {
// get default language for site // get default language for site
if (site.Languages.Any()) if (site.Languages.Any())
{ {
// use default language if specified otherwise use first language in collection // use default language if specified otherwise use first language in collection
culture = (site.Languages.Where(l => l.IsDefault).SingleOrDefault() ?? site.Languages.First()).Code; cultureCookie = (site.Languages.Where(l => l.IsDefault).SingleOrDefault() ?? site.Languages.First()).Code;
} }
else else
{ {
culture = LocalizationManager.GetDefaultCulture(); // fallback language
cultureCookie = LocalizationManager.GetDefaultCulture();
} }
SetLocalizationCookie(culture); // convert language code to culture cookie format (ie. "c=en|uic=en")
cultureCookie = Shared.CookieRequestCultureProvider.MakeCookieValue(new Models.RequestCulture(cultureCookie));
SetLocalizationCookie(cultureCookie);
} }
// set language for page // set language for page
if (!string.IsNullOrEmpty(culture)) if (!string.IsNullOrEmpty(cultureCookie))
{ {
_language = Shared.CookieRequestCultureProvider.ParseCookieValue(culture).Culture.Name; _language = Shared.CookieRequestCultureProvider.ParseCookieValue(cultureCookie).Culture.Name;
} }
// create initial PageState // create initial PageState
@ -577,7 +580,7 @@
} }
} }
private void SetLocalizationCookie(string culture) private void SetLocalizationCookie(string cookieValue)
{ {
var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions var cookieOptions = new Microsoft.AspNetCore.Http.CookieOptions
{ {
@ -589,7 +592,7 @@
Context.Response.Cookies.Append( Context.Response.Cookies.Append(
Shared.CookieRequestCultureProvider.DefaultCookieName, Shared.CookieRequestCultureProvider.DefaultCookieName,
Shared.CookieRequestCultureProvider.MakeCookieValue(new Models.RequestCulture(culture)), cookieValue,
cookieOptions cookieOptions
); );
} }