public static ResourceRow Parse(string csvLine, char separator) { var cells = csvLine.Split(separator); var key = cells[0]; var noLang = cells[1]; var assemblyName = cells[cells.Length - 2]; var resourceFileName = cells[cells.Length - 1]; var row = new ResourceRow(assemblyName, resourceFileName, key, noLang); row.AddTranslation("fr", cells[2]); row.AddTranslation("it", cells[3]); return row; }
private void exportRowsToTranslateToolStripMenuItem_Click(object sender, EventArgs e) { var folderBrowser = new FolderBrowserDialog(); if (Directory.Exists(_exportPath)) { folderBrowser.SelectedPath = _exportPath; } var result = folderBrowser.ShowDialog(); if (result == DialogResult.OK) { try { // create sortable list var rows = new SortedList<string, string>(); foreach (var resource in this.Resources.Values) { // export foreach (DataRow dr in resource.StringsTable.Rows) { var row = new ResourceRow(resource.DisplayFolder, resource.Filename, dr["Key"].ToString(), dr["NoLanguageValue"].ToString()); foreach (var culture in resource.Languages) { row.AddTranslation(culture.Key, dr[culture.Key].ToString()); } if (row.HasOpenTranslations()) { var key = CreateTranslationKey(dr, resource); rows.Add(key, row.ToString()); } } } var exportFilePath = Path.Combine(folderBrowser.SelectedPath, "translationExport.csv"); if (File.Exists(exportFilePath)) { File.Delete(exportFilePath); } using (var textStream = new FileStream(exportFilePath, FileMode.CreateNew, FileAccess.Write)) { using (var tw = new StreamWriter(textStream, Encoding.UTF8)) { // headers tw.WriteLine(ResourceRow.GetHeaderNames()); // write values foreach (var key in rows.Keys) { tw.WriteLine(rows[key]); } tw.Close(); } } _exportPath = folderBrowser.SelectedPath; } catch (Exception ex) { MessageBox.Show(String.Format("Error: {0}", ex.GetBaseException().Message)); } } }