protected void Session_Start(object sender, EventArgs e) { WebUtils.ChangeThemeViaLang(WebUtils.Configinfo.DefaultLang); }
public ActionResult ChangeLanguage(string language) { DataCache.RemoveCache("CategoriesInfoCache"); if (Session["CustomTheme"] == null || string.IsNullOrEmpty((string)Session["CustomTheme"])) { WebUtils.ChangeThemeViaLang(language); } var lang = language == "zh-cn" ? "" : language; Session["CurrentLanguage"] = new CultureInfo(lang); if (Request.UrlReferrer == null) { return(Redirect(Url.Content("~/"))); } var referrerUrl = Request.UrlReferrer.AbsolutePath.TrimEnd('/'); var absoluteUrl = Url.Content("~/").TrimEnd('/'); var redirectUrl = Request.UrlReferrer.AbsoluteUri; if (!redirectUrl.ToLower().Contains("admin")) { if (!string.IsNullOrEmpty(referrerUrl) && !string.IsNullOrEmpty(absoluteUrl)) { referrerUrl = referrerUrl.Replace(absoluteUrl, "/"); } else { referrerUrl = "/"; } var langStr = language.ToLower() != Configinfo.DefaultLang ? language : ""; if (Configinfo.IfIndependentContentViaLang == 1) { redirectUrl = langStr; } else { referrerUrl = WebUtils.Langs.Aggregate(referrerUrl, (current, c) => current.Replace(c + "", "")); if (!string.IsNullOrWhiteSpace(langStr) && !string.IsNullOrWhiteSpace(referrerUrl)) { referrerUrl = ("/" + referrerUrl + "/").Replace("//", "/"); if (referrerUrl.Split('/')[1] == Configinfo.WebStaticFolderPart1) { referrerUrl = referrerUrl.Replace("/" + Configinfo.WebStaticFolderPart1, ""); redirectUrl = "/" + Configinfo.WebStaticFolderPart1 + "/" + langStr + "/" + referrerUrl; } else { redirectUrl = langStr + "/" + referrerUrl; } } else { redirectUrl = string.Empty; } } redirectUrl = absoluteUrl + "/" + redirectUrl.TrimStart('/'); redirectUrl = redirectUrl.Replace("//", "/"); } else { redirectUrl = Request.UrlReferrer.ToString(); } return(Redirect(redirectUrl)); }
protected void Application_AcquireRequestState(object sender, EventArgs e) { var url = Request.Url.AbsoluteUri.ToLower(); var files = new[] { ".axd", ".asmx", "/upload/", "/content/", ".ashx", ".css", ".js", ".png", ".gif", ".jpg", ".jpeg", ".bmp", ".swf", ".xml" }; var currentfile = Array.Find(files, element => url.IndexOf(element, StringComparison.Ordinal) > -1); if (!string.IsNullOrEmpty(currentfile)) { return; } if (HttpContext.Current.Session == null) { return; } var customTheme = (HttpContext.Current.Request["theme"] ?? string.Empty).Trim(); if (!string.IsNullOrEmpty(customTheme) && customTheme != "default") { Session.Remove("CustomTheme"); Session.Add("CustomTheme", customTheme); WebUtils.ChangeTheme(customTheme); } //set lang start var referer = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]; if (string.IsNullOrEmpty(referer)) { DataCache.RemoveCache("CategoriesInfoCache"); Session["CurrentLanguage"] = null; } var defaultlang = WebUtils.Configinfo.DefaultLang; var currentlang = (Session["CurrentLanguage"] != null ? Session["CurrentLanguage"].ToString() : defaultlang).ToLower(); var lang = currentlang == "" ? defaultlang : currentlang; if (!url.Contains("/admin/") || url.Contains("u/admin")) { lang = Array.Find(WebUtils.Langs, element => url.IndexOf(element, StringComparison.Ordinal) > -1); lang = string.IsNullOrWhiteSpace(lang) ? defaultlang : lang.Trim('/'); } var ci = (CultureInfo)Session["CurrentLanguage"]; if (ci == null || lang != currentlang || string.IsNullOrEmpty(referer)) { ci = new CultureInfo(lang == "zh-cn" ? "" : lang); Session["CurrentLanguage"] = ci; if (Session["CustomTheme"] == null) { WebUtils.ChangeThemeViaLang(lang); } } //set lang end if (customTheme == "default") { Session.Remove("CustomTheme"); WebUtils.ChangeThemeViaLang(lang); } var currentThemeFolder = string.Empty; var rve = (BlogViewEngine)ViewEngines.Engines.FirstOrDefault(a => a.GetType() == typeof(BlogViewEngine)); if (rve != null && rve.PartialViewLocationFormats != null && rve.PartialViewLocationFormats.Any()) { currentThemeFolder = rve.PartialViewLocationFormats[0].StartsWith("~/Views/") ? "" : rve.PartialViewLocationFormats[0].Split('/')[2]; } if (Session["CustomTheme"] != null) { if (currentThemeFolder != Session["CustomTheme"].ToString()) { WebUtils.ChangeTheme(Session["CustomTheme"].ToString()); } } else { var theme = WebUtils.GetLangTemplate(lang); if (currentThemeFolder != theme) { WebUtils.ChangeTheme(theme); } } Thread.CurrentThread.CurrentUICulture = ci; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); }