/// <summary> /// The user changed the selected RESX file to edit /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void lstResX_SelectedIndexChanged(object sender, EventArgs e) { lblFileName.Text = ResXUnified.GetBaseName(lstResX.SelectedValue); CurrentSelection = lstResX.SelectedValue; FillGridView(lstResX.SelectedValue, true); FillLanguages(); btSave.Visible = true; currCultureName = ""; currEditLang = ""; }
/// <summary> /// Get all the Resx in the web site and list them in a list /// </summary> protected void GetResX() { SortedList <string, string> list = ResXUnified.GetResXInDirectory(Path, new GenericPredicate <string, string>(delegate(string[] path) { return(path[0].Replace(path[1], "").Replace("App_LocalResources", "").Replace("App_GlobalResources", "")); })); foreach (KeyValuePair <string, string> val in list) { lstResX.Items.Add(new ListItem(val.Key, val.Value)); } }
private void FillGridView(string p, bool reloadFile) { if (Unified == null || reloadFile) Unified = new ResXUnified(p); gridView.Columns.Clear(); SortedList<string, string> langs = Unified.GetLanguages(); Unit columnSize = new Unit((gridView.Width.Value - 30) / (langs.Values.Count), UnitType.Pixel); /* ImageField keyColumn = new ImageField(); keyColumn.HeaderText = "Key"; keyColumn.DataAlternateTextField = "Key"; keyColumn.DataImageUrlField = "Key"; keyColumn.DataImageUrlFormatString = "~/images/information.png"; // ignore key //keyColumn.DataField = "Key"; //keyColumn.ItemStyle.BackColor = Color.Gray; //keyColumn.ItemStyle.ForeColor = Color.White; keyColumn.ReadOnly = true; keyColumn.ItemStyle.Width = new Unit(30); keyColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Left; keyColumn.ControlStyle.Width = new Unit(16); gridView.Columns.Add(keyColumn); * */ BoundField keyColumn = new BoundField(); keyColumn.HeaderText = "Key"; keyColumn.DataField = "Key"; keyColumn.ItemStyle.BackColor = Color.Gray; keyColumn.ItemStyle.ForeColor = Color.White; keyColumn.ReadOnly = true; keyColumn.ItemStyle.Width = new Unit(30); keyColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Left; keyColumn.ControlStyle.Width = new Unit(16); gridView.Columns.Add(keyColumn); foreach (string lang in langs.Values) { BoundField field = new BoundField(); CultureInfo culture = null; try { culture = new CultureInfo(lang); } catch { } if (culture != null) field.HeaderText = culture.DisplayName; else field.HeaderText = "Default"; field.DataField = lang; field.ItemStyle.Width = columnSize; field.ControlStyle.Width = columnSize; gridView.Columns.Add(field); } gridView.DataSource = Unified.ToDataTable(!chShowEmpty.Checked); gridView.DataBind(); }
// process files protected void ProcessFiles(DirectoryInfo dir, List <string> processed) { // Subfiles try // Avoid errors such as "Access Denied" { foreach (FileInfo iInfo in dir.GetFiles()) { if (Path.GetExtension(iInfo.FullName).ToLower().EndsWith("resx")) { // default culture resx file string defaultFile = Path.Combine(dir.FullName, ResXUnified.GetBaseName(iInfo.FullName) + ".resx"); // only the culture name string culture = ResXUnified.FindCultureInFilename(iInfo.FullName); switch (this.OperationSettings.OperationMode) { case ResXOperationModes.GetAvailableCultures: this.AddCultureToAvailables(culture); break; case ResXOperationModes.CreateNewCulture: if (this.ContinueCondition(processed, defaultFile)) { continue; } // build target file name var targetFile = Path.Combine(dir.FullName, ResXUnified.GetBaseName(iInfo.FullName) + "." + OperationSettings.SelectedCulture + ".resx"); // copy default resx to the new resx if (!File.Exists(targetFile) && File.Exists(defaultFile)) { File.Copy(defaultFile, targetFile, false); mMessage(targetFile); } processed.Add(defaultFile); break; case ResXOperationModes.Synchronize: if (this.ContinueCondition(processed, defaultFile)) { continue; } // some kind of bug here with the full path concatenation - quick & dirty fix if (File.Exists(defaultFile)) { mMessage(defaultFile); processed.Add(defaultFile); SynchronizeMultipleFiles(defaultFile, this.OperationSettings.Backup, this.OperationSettings.AddOnly, true); } break; case ResXOperationModes.CreatePackage: // buffer default resx culture file string translatedFile = defaultFile; // get selected culture for exporting string selectedCulture = GetCultureFromCombo(OperationSettings.SelectedCulture); // process all cultures except the default if (culture.ToLower() != "default") { translatedFile = Path.Combine(dir.FullName, ResXUnified.GetBaseName(iInfo.FullName) + "." + culture + ".resx"); } if (this.ContinueCondition(ResXFiles, translatedFile)) { continue; } if (selectedCulture.ToLower().Equals(culture.ToLower())) { ResXFiles.Add(translatedFile); } break; default: break; } } } } catch (Exception ex) { mMessage(ex.ToString()); // send message to the status textbox } }
public ResXUnifiedIndexer(ResXUnified resx, string language) { this.resx = resx; this.language = language; }
private void FillGridView(string p, bool reloadFile) { if (Unified == null || reloadFile) { Unified = new ResXUnified(p); } gridView.Columns.Clear(); SortedList <string, string> langs = Unified.GetLanguages(); Unit columnSize = new Unit(Math.Round((gridView.Width.Value) / (langs.Values.Count)), UnitType.Percentage); ImageField keyColumn = new ImageField(); keyColumn.HeaderText = "Key"; keyColumn.DataAlternateTextField = "Key"; keyColumn.DataImageUrlField = "Key"; keyColumn.DataImageUrlFormatString = "~/App_Themes/" + Page.Theme + "/images/information.png"; // ignore key //keyColumn.DataField = "Key"; //keyColumn.ItemStyle.BackColor = Color.Gray; //keyColumn.ItemStyle.ForeColor = Color.White; keyColumn.ReadOnly = true; keyColumn.ItemStyle.Width = new Unit(30); keyColumn.ItemStyle.HorizontalAlign = HorizontalAlign.Left; keyColumn.ControlStyle.Width = new Unit(16, UnitType.Pixel); gridView.Columns.Add(keyColumn); foreach (string lang in langs.Values) { CultureInfo culture = null; try { culture = new CultureInfo(lang); } catch { } BoundField field = new BoundField { HeaderText = culture != null ? culture.DisplayName : @"Default", DataField = lang, ReadOnly = (culture == null) && !Roles.IsUserInRole("Administrator") }; field.ControlStyle.Width = new Unit(99, UnitType.Percentage); if (culture != null) { if (culture.TextInfo.IsRightToLeft) { field.ItemStyle.HorizontalAlign = HorizontalAlign.Right; field.ControlStyle.CssClass = "rtl"; } } if (lang == "Default") { gridView.Columns.Insert(1, field); } else if (culture.TwoLetterISOLanguageName.ToLower() == currEditLang.ToLower()) { currCultureName = culture.TextInfo.CultureName; gridView.Columns.Add(field); } } if (gridView.Columns.Count < 3 && !String.IsNullOrEmpty(currEditLang)) { try { if (!String.IsNullOrEmpty(currCultureName)) { ddLanguage.SelectedValue = currCultureName; } } catch (Exception) { //don't throw an error if it doesn't exist in the list } pnlAddLang.Visible = true; } else { pnlAddLang.Visible = false; } gridView.DataSource = Unified.ToDataTable(true); gridView.DataBind(); }