Exemplo n.º 1
0
        /// <summary>
        /// Binds data source to grid
        /// </summary>
        public override void DataBind()
        {
            base.DataBind();

            LanguageCultureCollection LanguagesDataSource = (LanguageCultureCollection)DataSource;

            if (LanguagesDataSource.Count > 1)
            {
                Columns[2].Visible = true;
            }
            else
            {
                Columns[2].Visible = false; //do not allow deleting last row
            }
            for (Int32 i = 0; i < Items.Count; i++)
            {
                DropDownList ddLanguage = (DropDownList)Items[i].Cells[0].Controls[0];
                DropDownList ddCulture  = (DropDownList)Items[i].Cells[1].Controls[0];

                if (ddLanguage.Items.FindByValue(LanguagesDataSource[i].UICulture.Name) != null)
                {
                    ddLanguage.Items.FindByValue(LanguagesDataSource[i].UICulture.Name).Selected = true;
                }

                if (ddCulture.Items.FindByValue(LanguagesDataSource[i].Culture.Name) != null)
                {
                    ddCulture.Items.FindByValue(LanguagesDataSource[i].Culture.Name).Selected = true;
                }
            }
        }
Exemplo n.º 2
0
        public LanguageCultureCollection(string LanguageCultureCollection)
        {
            LanguageCultureCollection mylist = (LanguageCultureCollection)LanguageCultureCollection;

            foreach (LanguageCultureItem l in mylist)
            {
                Add(l);
            }
        }
        /// <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);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Updates data sources with grid content
        /// </summary>
        public void UpdateRows()
        {
            LanguageCultureCollection LanguagesDataSource = (LanguageCultureCollection)DataSource;

            for (Int32 i = 0; i < Items.Count; i++)
            {
                DropDownList ddLanguage = (DropDownList)Items[i].Cells[0].Controls[0];
                DropDownList ddCulture  = (DropDownList)Items[i].Cells[1].Controls[0];

                LanguagesDataSource[i].UICulture = new CultureInfo(ddLanguage.SelectedItem.Value);
                LanguagesDataSource[i].Culture   = new CultureInfo(ddCulture.SelectedItem.Value);
            }
        }
        /// <summary>
        /// Get current Language from User language list
        /// </summary>
        /// <param name="myLanguagesCultureList"></param>
        /// <returns></returns>
        private static LanguageCultureItem InternalGetUserLanguages(LanguageCultureCollection myLanguagesCultureList)
        {
            //Get userLangs
            CultureInfo[] userLangs;

            if (HttpContext.Current != null && HttpContext.Current.Request.UserLanguages != null &&
                HttpContext.Current.Request.UserLanguages.Length > 0)
            {
                ArrayList arrUserLangs = new ArrayList(HttpContext.Current.Request.UserLanguages);
                if (arrUserLangs.Count > 0)
                {
                    for (Int32 i = 0; i <= arrUserLangs.Count - 1; i++)
                    {
                        string currentLanguage;
                        if (arrUserLangs[i].ToString().IndexOf(';') >= 0)
                        {
                            currentLanguage =
                                arrUserLangs[i].ToString().Substring(0, arrUserLangs[i].ToString().IndexOf(';'));
                        }
                        else
                        {
                            currentLanguage = arrUserLangs[i].ToString();
                        }
                        try
                        {
                            // We try the full one... if this fails we catch it
                            arrUserLangs[i] = new CultureInfo(currentLanguage);
                        }
                        catch (ArgumentException)
                        {
                            try
                            {
                                // Some browsers can send an invalid language
                                // we try to get first two letters.. this is usually valid
                                arrUserLangs[i] = new CultureInfo(currentLanguage.Substring(2));
                            }
                            catch (ArgumentException)
                            {
                            }
                            return(null);
                        }
                    }
                }
                userLangs = (CultureInfo[])arrUserLangs.ToArray(typeof(CultureInfo));

                // Try to match browser "accept languages" list
                return(myLanguagesCultureList.GetBestMatching(userLangs));
            }
            return(null);
        }
 /// <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>
 /// Get current Language from Querystring
 /// </summary>
 /// <param name="myLanguagesCultureList"></param>
 /// <returns></returns>
 private static LanguageCultureItem InternalGetQuerystring(LanguageCultureCollection myLanguagesCultureList)
 {
     if (HttpContext.Current != null && HttpContext.Current.Request.Params["Lang"] != null &&
         HttpContext.Current.Request.Params["Lang"].Length > 0)
     {
         try
         {
             return
                 (myLanguagesCultureList.GetBestMatching(
                      new CultureInfo(HttpContext.Current.Request.Params["Lang"])));
         }
         catch (ArgumentException) //Maybe an invalid CultureInfo
         {
             return(null);
         }
     }
     return(null);
 }
 /// <summary>
 /// Get current Language from Cookie
 /// </summary>
 /// <param name="myLanguagesCultureList"></param>
 /// <param name="cookieAlias"></param>
 /// <returns></returns>
 private static LanguageCultureItem InternalGetCookie(LanguageCultureCollection myLanguagesCultureList,
                                                      string cookieAlias)
 {
     if (HttpContext.Current != null && cookieAlias != null &&
         HttpContext.Current.Request.Cookies[SWITCHER_COOKIE_PREFIX + cookieAlias] != null &&
         HttpContext.Current.Request.Cookies[SWITCHER_COOKIE_PREFIX + cookieAlias].Value.Length > 0)
     {
         try
         {
             return
                 (myLanguagesCultureList.GetBestMatching(
                      new CultureInfo(
                          HttpContext.Current.Request.Cookies[SWITCHER_COOKIE_PREFIX + cookieAlias].Value)));
         }
         catch (ArgumentException)
         {
             //Maybe an invalid CultureInfo
         }
     }
     return(null);
 }
        private LanguageCultureCollection GetLanguagesCultureList(string keyValueList)
        {
            //Trim last separator if found
            keyValueList = keyValueList.TrimEnd(itemsSeparator);

            string[] nameValues = keyValueList.Split(itemsSeparator);
            LanguageCultureCollection nameValueColl = new LanguageCultureCollection();

            foreach (string nameValue in nameValues)
            {
                if (nameValue != string.Empty)
                {
                    string[] arrNameValue = nameValue.Split(keyValueSeparator);

                    CultureInfo language;
                    CultureInfo culture;

                    language = new CultureInfo(arrNameValue[0]);

                    if (arrNameValue.Length == 2)
                    {
                        culture = new CultureInfo(arrNameValue[1]);
                        nameValueColl.Add(new LanguageCultureItem(language, culture));
                    }
                    if (arrNameValue.Length == 1)
                    {
                        culture = new CultureInfo(arrNameValue[0]);
                        if (culture.IsNeutralCulture)                                  //we cannot allow this
                        {
                            culture = CultureInfo.CreateSpecificCulture(culture.Name); //creates a specific culture
                        }
                        nameValueColl.Add(new LanguageCultureItem(language, culture));
                    }
                }
            }
            return(nameValueColl);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Occours when user clicks on ADD or DELETE
        /// </summary>
        /// <param name="e">A <see cref="T:System.Web.UI.WebControls.DataGridCommandEventArgs"></see> that contains event data.</param>
        protected override void OnItemCommand(DataGridCommandEventArgs e)
        {
            LanguageCultureCollection LanguagesDataSource = (LanguageCultureCollection)DataSource;

            switch (e.CommandName)
            {
            case "Add":
                LanguagesDataSource.Insert(e.Item.ItemIndex, new LanguageCultureItem());
                DataBind();
                break;

            case "Delete":
                LanguagesDataSource.RemoveAt(e.Item.ItemIndex);
                DataBind();
                break;

            case "Up":
                break;

            case "Down":
                break;
            }
            base.OnItemCommand(e);
        }
 /// <summary>
 /// Get default
 /// </summary>
 /// <param name="myLanguagesCultureList"></param>
 /// <returns></returns>
 private static LanguageCultureItem InternalGetDefault(LanguageCultureCollection myLanguagesCultureList)
 {
     return(myLanguagesCultureList[0]);
 }