/// <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); }
/// <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())); }
/// <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); }