/// <summary>
 /// 设置当前语言文化,使用的是Cookies存储,使用之前必须启用Cookies
 /// </summary>
 /// <param name="context">上下文</param>
 /// <param name="culture">文化</param>
 /// <param name="expireDay">过期天数,默认为30天</param>
 public static void SetCurrentCulture(this HttpContext context, string culture, int expireDay = 30)
 {
     context.Response.Cookies.Append("Culture", culture, new CookieOptions()
     {
         HttpOnly = false,
         Expires  = DateTimeOffset.UtcNow.AddDays(expireDay)
     });
     LocalizationUtil.SetCurrentCulture(culture);
 }
Пример #2
0
        /// <summary>
        /// Change Application Culture
        /// </summary>
        /// <param name="culture">new culture</param>
        /// <param name="url">Previous Url to redirect</param>
        /// <returns>Redirect to previous url</returns>
        public ActionResult ChangeCulture(string culture, Uri url)
        {
            MemberState state = MemberStateBL.State;

            // Path to Redirect
            try
            {
                // Change Culture
                LocalizationUtil.SetCurrentCulture(culture);
                state.Culture = culture;
            }
            catch
            {
            }
            return(Redirect(url.ToString()));
        }
Пример #3
0
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="context">http上下文</param>
        /// <returns>任务</returns>
        public async Task InvokeAsync(HttpContext context)
        {
            var routeValue = context.Request.RouteValues;
            var routes     = routeValue.GetControllerAction();

            if (routes.IsNullOrLength0())
            {
                await next(context);

                return;
            }

            // 使用上下文里的文化
            string culture = context.GetCurrentCulture();

            if (string.IsNullOrWhiteSpace(culture))
            {
                // 使用子类的文化
                culture = context.GetCurrentCulture();
            }
            if (string.IsNullOrWhiteSpace(culture))
            {
                // 使用默认的文化
                culture = App.DefaultCulture;
            }
            if (string.IsNullOrWhiteSpace(culture))
            {
                await next(context);

                return;
            }

            LocalizationUtil.SetCurrentCulture(culture);

            await next(context);
        }