Пример #1
0
        public ActionResult ChangeCulture(string lang)
        {
            string returnUrl = Request.UrlReferrer.PathAndQuery;

            if (!LanguageHelper.IsRelevantLanguage(lang))
            {
                lang = "en";
            }
            // Сохраняем выбранную культуру в куки
            HttpCookie cookie = Request.Cookies["lang"];

            if (cookie != null)
            {
                cookie.Value = lang;   // если куки уже установлено, то обновляем значение
            }
            else
            {
                cookie          = new HttpCookie("lang");
                cookie.HttpOnly = false;
                cookie.Value    = lang;
                cookie.Expires  = DateTime.UtcNow.AddYears(1);
            }

            LanguageHelper.ClearCurrentLanguage();

            if (lang != LanguageHelper.GetDefaultLanguage())
            {
                if (!returnUrl.Contains("/ru"))
                {
                    returnUrl = string.Concat('/', lang, returnUrl);
                }
            }
            else
            {
                if (Request.RequestContext.RouteData.Values["lang"] != null)
                {
                    returnUrl = returnUrl.Replace("/" + Request.RequestContext.RouteData.Values["lang"].ToString(), "");
                }
            }
            Response.Cookies.Add(cookie);
            return(Redirect(!string.IsNullOrEmpty(returnUrl) ? returnUrl : "/"));
        }