コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 /// <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;
            }
        }
コード例 #5
0
 /// <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;
     }
 }