public void OnActionExecuting(ActionExecutingContext context) { Controller controller = context.Controller as Controller; if (controller != null) { string lang = context.HttpContext.Request.Cookies["lang"]; //If language is null or a not supported if (string.IsNullOrWhiteSpace(lang) || !_cache.AllLanguageSet.Contains(lang)) { //Write a (new?) cookie to the user to keep a default //TODO: examine "Accept-Language" header context.HttpContext.Response.Cookies.Append("lang", _defaultLanguage); lang = _defaultLanguage; } controller.ViewBag.Language = _cache.GetLocalizationData(lang); } }