private int getDestinationTableColumnIndex( IInheritedSettings settings, DataTable dataTable, string languageCode) { var columnIndex = 0; foreach (DataColumn column in dataTable.Columns) { if (columnIndex > 1) // Column 0=FileGroup checksum, column 1=Tag name. { var lc = ExcelExportController.IsFileName(column.ColumnName) ? new LanguageCodeDetection( _information.Project) .DetectLanguageCodeFromFileName( settings, column.ColumnName) : column.ColumnName; if (string.Compare(lc, languageCode, StringComparison.OrdinalIgnoreCase) == 0) { return(column.Ordinal); } } columnIndex++; } // -- // 2011-01-24, Uwe Keim: No direct (like "en-US") found, try fuzzy (like "en"). columnIndex = 0; foreach (DataColumn column in dataTable.Columns) { if (columnIndex > 1) // Column 0=FileGroup checksum, column 1=Tag name. { var lc = ExcelExportController.IsFileName(column.ColumnName) ? new LanguageCodeDetection( _information.Project) .DetectLanguageCodeFromFileName( settings, column.ColumnName) : column.ColumnName; if (lc.StartsWith(languageCode, StringComparison.InvariantCultureIgnoreCase)) { return(column.Ordinal); } } columnIndex++; } // -- return(-1); }
private void doTakeSnapshot( 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) { if (bw.CancellationPending) { throw new OperationCanceledException(); } } // Column 0=FileGroup checksum, column 1=Tag name. var baseKey = MakeBaseKey(row[0], row[1]); 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.Substring(0, 2))||*/ lcs.Contains(languageCode)) { var key = MakeFullKey(baseKey, languageCode); PutSettingValue(key, languageValue); } } rowIndex++; } }
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++; } }
private void progressBackgroundWorker_DoWork( object sender, DoWorkEventArgs e) { Host.ApplyLanguageSettingsToCurrentThread(); var ei = (ExcelExportInformation)e.Argument; _latestExportInformation = ei; var cp = new ExcelExportController(); cp.Prepare(ei); cp.Process((BackgroundWorker)sender); }
private void progressBackgroundWorker_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled || e.Error is OperationCanceledException) { DialogResult = DialogResult.Cancel; Close(); } else if (e.Error != null) { _exception = e.Error; errorTextMemoEdit.Text = e.Error.Message; wizardControl.SelectedPage = errorOccurredWizardPage; UpdateUI(); } else { if (openFolderAfterGeneratingCheckEdit.Checked || openFileAfterGeneratingCheckEdit.Checked) { wizardControl.SelectedPage = successWizardPage; pleaseWaitFinishLabel.Visible = true; if (hasWarnings) { pleaseWaitFinishLabel.Text = Resources.ExcelExportWizardForm_progressBackgroundWorker_RunWorkerCompleted_Warnings_occurred_; } else { wizardControl.FinishText = string.Empty; } UpdateUI(); Application.DoEvents(); try { if (openFileAfterGeneratingCheckEdit.Checked || openFolderAfterGeneratingCheckEdit.Checked) { // -- if (openFileAfterGeneratingCheckEdit.Checked) { var paths = ExcelExportController.GetFilePaths( _latestExportInformation); foreach (var path in paths) { if (ZlpIOHelper.FileExists(path)) { Process.Start(path); } } } if (openFolderAfterGeneratingCheckEdit.Checked) { var paths = ExcelExportController.GetDirectoryPaths( _latestExportInformation); foreach (var path in paths) { if (ZlpIOHelper.DirectoryExists(path)) { Process.Start(path); } } } } } finally { // Only close if no warnings at all. if (!hasWarnings) { DialogResult = DialogResult.OK; Close(); } } } else { wizardControl.SelectedPage = successWizardPage; pleaseWaitFinishLabel.Visible = false; UpdateUI(); } } }
private void buttonTranslate_Click(object sender, EventArgs e) { var success = false; var cancelled = false; var table = _fileGroupControl.GetDataSource(); var translationCount = 0; var translationSuccessCount = 0; var translationErrorCount = 0; var internallyExistingTranslationTranslatedSuccessCount = 0; var continueOnErrors = _project == null || _project.TranslationContinueOnErrors; var delayMilliseconds = _project?.TranslationDelayMilliseconds ?? 500; var gridEditableData = _fileGroupControl.GridEditableData; var prefixSuccess = prefixCheckBox.Checked ? prefixTextBox.Text.Trim() + @" " : string.Empty; var useExistingTranslations = useExistingTranslationsCheckBox.Checked; var useExistingTranslationsOnly = useOnlyExistingTranslationsCheckEdit.Checked; var prefixError = FileGroup.DefaultTranslationErrorPrefix.Trim() + @" "; var refLanguageCode = ((TranslationLanguageInfo)referenceLanguageGroupBox.SelectedItem).LanguageCode; var toTranslateLanguageCodes = new List <string>(); // ReSharper disable LoopCanBeConvertedToQuery foreach (CheckedListBoxItem item in languagesToTranslateCheckListBox.CheckedItems) // ReSharper restore LoopCanBeConvertedToQuery { var pair = (TranslationLanguageInfo)item.Value; toTranslateLanguageCodes.Add(pair.LanguageCode.ToLowerInvariant()); } // -- // 2017-04-15. var prevPause = MainForm.Current.ProjectFilesControl.WantPauseNodeStateUpdate; MainForm.Current.ProjectFilesControl.WantPauseNodeStateUpdate = true; _fileGroupControl.IsTranslating = true; try { using ( new BackgroundWorkerLongProgressGui( delegate( object s, DoWorkEventArgs a) { var bw = (BackgroundWorker)s; var imtc = new InMemoryTranslationSnapshotController(); var imss = useExistingTranslations ? imtc.CreateSnapshot(_project, toTranslateLanguageCodes.Concat(new[] { refLanguageCode }).ToArray(), bw) : null; // Column 0=FileGroup checksum, column 1=Tag name. var refValueIndex = 2; #pragma warning disable 618, 612 var prev = DevExpress.Data.CurrencyDataController.DisableThreadingProblemsDetection; DevExpress.Data.CurrencyDataController.DisableThreadingProblemsDetection = true; #pragma warning restore 618, 612 try { foreach (DataColumn column in table.Columns) { // Column 0=FileGroup checksum, column 1=Tag name. if (column.Ordinal > 1) { var raw = ExcelExportController.IsFileName(column.ColumnName) ? new LanguageCodeDetection(_project) .DetectLanguageCodeFromFileName( gridEditableData.ParentSettings, column.ColumnName) : column.ColumnName; if (refLanguageCode == raw) { refValueIndex = column.Ordinal; break; } } } // -- var ti = TranslationHelper.GetTranslationEngine(_project); TranslationHelper.GetTranslationAppID( MainForm.Current.ProjectFilesControl.Project ?? Project.Empty, out var appID); foreach (DataColumn column in table.Columns) { // Column 0=FileGroup checksum, column 1=Tag name. if (column.Ordinal > 1 && column.Ordinal != refValueIndex) { var raw = ExcelExportController.IsFileName(column.ColumnName) ? new LanguageCodeDetection(_project) .DetectLanguageCodeFromFileName( gridEditableData.ParentSettings, column.ColumnName) : column.ColumnName; if (toTranslateLanguageCodes.Contains(raw.ToLowerInvariant())) { if (ti.SupportsArrayTranslation) { translationSuccessCount = translateArray( appID, ti, table, refLanguageCode, column, refValueIndex, raw, bw, delayMilliseconds, prefixSuccess, useExistingTranslations, useExistingTranslationsOnly, imss, translationSuccessCount, ref translationErrorCount, continueOnErrors, prefixError, ref translationCount, ref internallyExistingTranslationTranslatedSuccessCount); } else { translationSuccessCount = translateSingle( appID, ti, table, refLanguageCode, column, refValueIndex, raw, bw, delayMilliseconds, prefixSuccess, useExistingTranslations, useExistingTranslationsOnly, imss, translationSuccessCount, ref translationErrorCount, continueOnErrors, prefixError, ref translationCount, ref internallyExistingTranslationTranslatedSuccessCount); } } } } } catch (OperationCanceledException) { // Do nothing. } finally { #pragma warning disable 618, 612 DevExpress.Data.CurrencyDataController.DisableThreadingProblemsDetection = prev; #pragma warning restore 618, 612 MainForm.Current.ProjectFilesControl.WantPauseNodeStateUpdate = prevPause; } }, delegate( object s, RunWorkerCompletedEventArgs a) { success = !a.Cancelled && a.Error == null; cancelled = a.Cancelled; }, BackgroundWorkerLongProgressGui.CancellationMode.Cancelable )) { } } finally { _fileGroupControl.IsTranslating = false; } if (translationCount > 0) { _fileGroupControl.MarkGridContentAsModified(); _fileGroupControl.MarkAsModified(); _fileGroupControl.UpdateUI(); } var message = string.Format( Resources.SR_AutoTranslateForm_buttonTranslateClick_TranslatingTranslatedTexts, translationCount, translationSuccessCount, translationErrorCount); if (useExistingTranslations) { message += @" " + string.Format( Resources.SR_AutoTranslateForm_buttonTranslateClick_TranslatingTranslatedTextsExisting, internallyExistingTranslationTranslatedSuccessCount); } XtraMessageBox.Show( this, message, @"Zeta Resource Editor", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); if (success || cancelled) { DialogResult = DialogResult.OK; Close(); } }