private void doTakeSnapshot( InMemoryTranslationSnapshot imss, Project project, IGridEditableData fileGroup, IEnumerable <string> languageCodes, BackgroundWorker bw) { //var fgi = fileGroup.GetFileByLanguageCode(Project, languageCode); var table = new DataProcessing(fileGroup).GetDataTableFromResxFiles(project, true); var lcs = new List <string>(languageCodes); for (var i = 0; i < lcs.Count; i++) { lcs[i] = lcs[i].ToLowerInvariant(); } var rowIndex = 0; foreach (DataRow row in table.Rows) { if (rowIndex % 25 == 0 && (bw?.CancellationPending ?? false)) { throw new OperationCanceledException(); } var dic = new Dictionary <string, string>(); for (var sourceColumnIndex = 2; sourceColumnIndex < table.Columns.Count - 1; // Subtract 1, because last column is ALWAYS the comment. ++sourceColumnIndex) { var languageValue = row[sourceColumnIndex] as string; var languageCode = ExcelExportController.IsFileName(table.Columns[sourceColumnIndex].ColumnName) ? new LanguageCodeDetection(project) .DetectLanguageCodeFromFileName( fileGroup.ParentSettings, table.Columns[sourceColumnIndex].ColumnName) : table.Columns[sourceColumnIndex].ColumnName; languageCode = languageCode.ToLowerInvariant(); if (lcs.Contains(languageCode)) { dic[languageCode] = languageValue; } } imss.AddBatchTranslation(dic); rowIndex++; } }
public InMemoryTranslationSnapshot CreateSnapshot( Project project, string[] languageCodes, BackgroundWorker bw) { var imss = new InMemoryTranslationSnapshot(); project.FileGroups.ForEach(fg => doTakeSnapshot(imss, project, fg, languageCodes, bw)); return(imss); }