/// <summary> /// /// </summary> /// <param name="langItem"></param> /// <param name="cookieAlias">Cookie name used for persist Language</param> /// <param name="switcher"></param> internal static void SetCurrentLanguage(LanguageCultureItem langItem, string cookieAlias, LanguageSwitcher switcher) { Thread.CurrentThread.CurrentUICulture = langItem.UICulture; Thread.CurrentThread.CurrentCulture = langItem.Culture; //Persists choice InternalSetViewState(langItem, switcher); InternalSetCookie(langItem, cookieAlias); }
/// <summary> /// Examines/combines all the variables involved and sets /// CurrentUICulture and CurrentCulture /// </summary> /// <param name="langList">Languages list. Something like it=it-IT;en=en-US</param> /// <param name="cookieAlias">Alias used to make this cookie unique. Use null is you do not want cookies.</param> /// <param name="switcher">A referenct to a Switcher control for accessing viewstate</param> internal static void ProcessCultures(string langList, string cookieAlias, LanguageSwitcher switcher) { LanguageCultureCollection myLanguagesCultureList = (LanguageCultureCollection)langList; //Verify that at least on language is provided if (myLanguagesCultureList.Count <= 0) { throw new ArgumentException("Please provide at least one language in the list.", "langList"); } // Language Item LanguageCultureItem langItem; // Querystring langItem = InternalGetQuerystring(myLanguagesCultureList); //Trace.WriteLine("Evaluated InternalGetQuerystring: '" + (langItem == null ? "null" : langItem) + "'"); if (langItem != null) { goto setLanguage; } // Viewstate langItem = InternalGetViewState(myLanguagesCultureList, switcher); //Trace.WriteLine("Evaluated InternalGetViewState: '" + (langItem == null ? "null" : langItem) + "'"); if (langItem != null) { goto setLanguage; } // Cookie langItem = InternalGetCookie(myLanguagesCultureList, cookieAlias); //Trace.WriteLine("Evaluated InternalGetCookie: '" + (langItem == null ? "null" : langItem) + "'"); if (langItem != null) { goto setLanguage; } // UserLanguageList langItem = InternalGetUserLanguages(myLanguagesCultureList); //Trace.WriteLine("Evaluated InternalGetUserLanguages: '" + (langItem == null ? "null" : langItem) + "'"); if (langItem != null) { goto setLanguage; } // Default langItem = InternalGetDefault(myLanguagesCultureList); //Trace.WriteLine("Evaluated InternalGetDefault: '" + (langItem == null ? "null" : langItem) + "'"); setLanguage: // Updates current cultures SetCurrentLanguage(langItem, cookieAlias); }
/// <summary> /// Get current Language from ViewState /// </summary> /// <param name="myLanguagesCultureList"></param> /// <returns></returns> private static LanguageCultureItem InternalGetViewState(LanguageCultureCollection myLanguagesCultureList, LanguageSwitcher switcher) { if (switcher != null && switcher.ViewState["RB_Language_CurrentUICulture"] != null && switcher.ViewState["RB_Language_CurrentCulture"] != null) { return (new LanguageCultureItem((CultureInfo)switcher.ViewState["RB_Language_CurrentUICulture"], (CultureInfo)switcher.ViewState["RB_Language_CurrentCulture"])); } else { return(null); } }
/// <summary> /// Component is the instance of the component or control that /// this designer object is associated with. This property is /// inherited from System.ComponentModel.ComponentDesigner. /// </summary> /// <returns></returns> public override string GetDesignTimeHtml() { try { LanguageSwitcher langSwitcher = (LanguageSwitcher)Component; StringWriter sw = new StringWriter(CultureInfo.CurrentUICulture); //IFormatProvider should be passed HtmlTextWriter tw = new HtmlTextWriter(sw); langSwitcher.RenderControl(tw); return(sw.ToString()); } catch (Exception ex) { Debug.WriteLine("Exception occurred rendering Language Switcher at design time: "); Debug.WriteLine(ex.Message); throw; } }
/// <summary> /// Get current Language from ViewState /// </summary> /// <param name="myLanguageCultureItem"></param> /// <returns></returns> private static void InternalSetViewState(LanguageCultureItem myLanguageCultureItem, LanguageSwitcher switcher) { if (switcher != null) { //Trace.WriteLine("Persisting in viewstate"); switcher.ViewState["RB_Language_CurrentUICulture"] = myLanguageCultureItem.UICulture; switcher.ViewState["RB_Language_CurrentCulture"] = myLanguageCultureItem.Culture; } }