コード例 #1
0
        public void SetCulture(string culture)
        {
            var httpContext = _httpContextAccessor.Current();

            if (httpContext == null)
            {
                return;
            }

            var cookieName = ContextHelpers.IsRequestAdmin(httpContext) ? AdminCookieName : FrontEndCookieName;

            var cookie = new HttpCookie(cookieName, culture)
            {
                Expires = _clock.UtcNow.AddYears(DefaultExpireTimeYear),
            };

            if (!String.IsNullOrEmpty(_shellSettings.RequestUrlHost))
            {
                cookie.Domain = _shellSettings.RequestUrlHost;
            }

            if (!String.IsNullOrEmpty(_shellSettings.RequestUrlPrefix))
            {
                cookie.Path = GetCookiePath(httpContext);
            }

            httpContext.Request.Cookies.Remove(cookieName);
            httpContext.Response.Cookies.Remove(cookieName);
            httpContext.Response.Cookies.Add(cookie);
        }
コード例 #2
0
        public CultureSelectorResult GetCulture(HttpContextBase context)
        {
            if (context == null || ContextHelpers.IsRequestAdmin(context))
            {
                return(null);
            }

            // Attempt to determine culture by route.
            // This normally happens when you are using non standard pages that are not content items
            // {culture}/foo or ?culture={culture}
            var routeCulture = context.Request.RequestContext.RouteData.Values["culture"] ??
                               context.Request.RequestContext.HttpContext.Request.Params["culture"];

            if (routeCulture != null && !string.IsNullOrWhiteSpace(routeCulture.ToString()))
            {
                try {
                    var culture = CultureInfo.GetCultureInfo(routeCulture.ToString());
                    return(new CultureSelectorResult {
                        Priority = -3, CultureName = culture.Name
                    });
                }
                catch {}
            }

            return(null);
        }
コード例 #3
0
        public CultureSelectorResult GetCulture(HttpContextBase context)
        {
            if (context == null || ContextHelpers.IsRequestAdmin(context))
            {
                return(null);
            }

            // Attempt to determine culture by previous route if by POST
            string path;

            if (context.Request.HttpMethod.Equals(HttpVerbs.Post.ToString(), StringComparison.OrdinalIgnoreCase))
            {
                if (context.Request.UrlReferrer != null)
                {
                    path = context.Request.UrlReferrer.AbsolutePath;
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                path = context.Request.Path;
            }

            var appPath    = context.Request.ApplicationPath ?? "/";
            var requestUrl = (path.StartsWith(appPath) ? path.Substring(appPath.Length) : path).TrimStart('/');

            var prefix = _shellSettings.RequestUrlPrefix;

            if (!string.IsNullOrEmpty(prefix))
            {
                requestUrl = (requestUrl.StartsWith(prefix) ? requestUrl.Substring(prefix.Length) : requestUrl).TrimStart('/');
            }

            var content = GetByPath(requestUrl);

            if (content != null)
            {
                return(new CultureSelectorResult {
                    Priority = -2, CultureName = _localizationService.Value.GetContentCulture(content)
                });
            }

            return(null);
        }
コード例 #4
0
        public CultureSelectorResult GetCulture(HttpContextBase context)
        {
            if (context == null)
            {
                return(null);
            }

            var cookieName = ContextHelpers.IsRequestAdmin(context) ? AdminCookieName : FrontEndCookieName;

            var cookie = context.Request.Cookies.Get(cookieName);

            if (cookie != null)
            {
                return new CultureSelectorResult {
                           Priority = -1, CultureName = cookie.Value
                }
            }
            ;

            return(null);
        }