/// <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; } } }
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); }
/// <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); }
/// <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]); }