/// <summary> /// Spracuje prichadzajuci request a nastavi aktualny jazyk /// </summary> /// <param name="sender">Odosielatel udalosti</param> /// <param name="e">EventArgs</param> private void WebApplication_BeginRequest(object sender, EventArgs e) { Nullable <LanguageTypes> language = null; var request = this.Request; if (request != null) { //pridame do requestu id request.CreateRequestId(); //ziskame aktualny jazyk, //ak sa v parametroch stranky nachadza 'language' tak nastavime jazyk a redirecneme stranku na rovnaku url bez parametra 'language' String languageValue = request.QueryString["language"]; if (!String.IsNullOrWhiteSpace(languageValue)) { language = UserBase.GetLanguage(languageValue); if (languageValue != null) { UserBase.CurrentLanguage = language.Value; } var queryString = new NameValueCollection(request.QueryString); if (queryString != null) { queryString.Remove("language"); } StringBuilder newPath = new StringBuilder(); newPath.Append(request.Path + (queryString.Count > 0 ? "?" : String.Empty)); for (var i = 0; i < queryString.Count; i++) { if (i > 0) { newPath.Append("&"); } newPath.Append(String.Format("{0}={1}", queryString.GetKey(i), queryString[i])); } this.Response.Redirect(newPath.ToString(), true); base.CompleteRequest(); } } language = UserBase.CurrentLanguage; CultureInfo culture = this.InternalGetCurrentCulture(language.Value); if (culture != null) { Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; } }
/// <summary> /// Vrati aktualne nastaveny jazyk pre prichadzajuci request /// </summary> /// <returns>Aktualne nastaveny jazyk, alebo default</returns> private static LanguageTypes InternalGetCurrentLanguage() { HttpContext current = HttpContext.Current; var languageItem = current.Items[UserBase.LanguageCookieName]; if (languageItem == null || languageItem.GetType() != typeof(LanguageTypes)) { Nullable <LanguageTypes> language = null; if (current != null) { HttpRequest request = current.Request; if (request != null) { HttpCookie cookie = request.Cookies.Get(UserBase.LanguageCookieName); if (cookie != null) { language = UserBase.GetLanguage(cookie.Value); } else if (request.UserLanguages != null && request.UserLanguages.Length > 0) { for (int i = 0; i < request.UserLanguages.Length; i++) { language = UserBase.GetLanguage(request.UserLanguages[i]); if (language != null) { break; } } } } } if (language == null) { language = UserBase.InternalGetDefaultLanguage(); } return(language.Value); } return((LanguageTypes)languageItem); }