public override void OnActionExecuting(ActionExecutingContext context)
        {
            var lang = context.RouteData.Values["lang"] as string;

            if (lang == null)
            {
                var request = new GetPreferredLanguageRequest
                {
                    AvailableLanguages = new string[] { "en-gb", "fr-fr", "de-de" }
                };

                var preferredLang = this.languageService.GetPreferredLanguage(request);

                var routes = new RouteValueDictionary
                {
                    { "lang", preferredLang },
                    { "controller", context.RouteData.Values["controller"] },
                    { "action", context.RouteData.Values["action"] },
                    { "id", context.RouteData.Values["id"] }
                };

                // 301 redirects are cached aggressively by browsers
                context.HttpContext.Response.CacheControl = "no-cache";
                context.Result = new RedirectToRouteResult("DefaultLocalized", routes, true);
            }
        }
Esempio n. 2
0
        public GetPreferredLanguageResponse GetPreferredLanguage(GetPreferredLanguageRequest request)
        {
            var response = new GetPreferredLanguageResponse();

            if (request.AvailableLanguages.Any())
            {
                var savedValue = this.storageService.GetValue <string>(key);

                if (savedValue.Status == StatusCode.OK && request.AvailableLanguages.Any(x => x.Equals(savedValue.Value, StringComparison.InvariantCultureIgnoreCase)))
                {
                    response.LanguageCode = savedValue.Value;
                }
                else
                {
                    response.LanguageCode = this.GetPreferredLanguage(request.AvailableLanguages, request.DefaultLanguage ?? defaultLanguage);
                }

                response.Status = StatusCode.OK;
            }
            else
            {
                response.Status = StatusCode.BadRequest;
            }

            return(response);
        }
Esempio n. 3
0
        public GetPreferredLanguageResponse GetPreferredLanguage(GetPreferredLanguageRequest request)
        {
            var response = new GetPreferredLanguageResponse();

            if (request.AvailableLanguages.Any())
            {
                var savedValue = this.storageService.GetValue<string>(key);

                if (savedValue.Status == StatusCode.OK && request.AvailableLanguages.Any(x => x.Equals(savedValue.Value, StringComparison.InvariantCultureIgnoreCase)))
                {
                    response.LanguageCode = savedValue.Value;
                }
                else
                {
                    response.LanguageCode = this.GetPreferredLanguage(request.AvailableLanguages, request.DefaultLanguage ?? defaultLanguage);
                }

                response.Status = StatusCode.OK;
            }
            else
            {
                response.Status = StatusCode.BadRequest;
            }

            return response;
        }