protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var language = requestContext.RouteData.Values["language"] as string;
if (!string.IsNullOrWhiteSpace(language)
&& (!LocalizationAppConfig.SupportedLanguages.Any() || LocalizationAppConfig.SupportedLanguages.Contains(language, StringComparer.OrdinalIgnoreCase)))
try
{
var request =requestContext.HttpContext.Request;
if (request.Url.PathAndQuery.StartsWith(FormsAuthentication.LoginUrl, StringComparison.OrdinalIgnoreCase))
{
var returnUrl = request.QueryString["returnUrl"];
if (!string.IsNullOrWhiteSpace(returnUrl))
{
var routeInfo = new RouteInfo(new Uri(request.Url, returnUrl), HttpContext.Current.Request.ApplicationPath);
var returnUrlLanguage = routeInfo.RouteData.Values["language"] as string;
language = string.IsNullOrWhiteSpace(returnUrlLanguage) ? language : returnUrlLanguage;
}
}
if (language == "lib" || language == "css")
requestContext.RouteData.Values["language"] = language = "en";
var cultureInfo = CultureInfo.CreateSpecificCulture(language);
if (cultureInfo != null)
{
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureInfo.Name);
}
}
catch
{
//if invalid culture, do nothing
}
return base.GetHttpHandler(requestContext);
}