private static int UpdateCustomFieldPickLists(ProgressDialogContext context, IEnumerable <CustomField> customFields, ITranslationMemory tm) { var updatedCount = 0; context?.Report(0, StringResources.Updating_Multiple_PickList_fields); foreach (var customField in customFields.Where(f => f.IsSelected && f.IsPickList)) { foreach (var fieldValue in customField.FieldValues.Where(n => n.IsSelected && n.NewValue != null)) { foreach (var fieldDefinition in tm.FieldDefinitions.Where(n => n.Name.Equals(customField.Name))) { var pickListItem = fieldDefinition.PicklistItems.FirstOrDefault(a => a.Name.Equals(fieldValue.Value)); if (pickListItem != null) { pickListItem.Name = fieldValue.NewValue; updatedCount++; } } } } tm.Save(); return(updatedCount); }
private static int UpdateCustomFieldsSqlite(ProgressDialogContext context, TmFile tmFile, List <TmTranslationUnit> units) { if (units.Count == 0) { return(0); } int updatedCount; var service = new SqliteTmService(tmFile.Path, null, new SerializerService(), new SegmentService()); try { service.OpenConnection(); updatedCount = service.UpdateCustomFields(context, units); } catch (Exception ex) { Console.WriteLine(ex); throw; } finally { service.CloseConnection(); } return(updatedCount); }
private static int UpdateSystemFieldsSqlite(ProgressDialogContext context, TmFile tmFile, IEnumerable <TmTranslationUnit> units, List <User> uniqueUsers) { var updatedCount = 0; var service = new SqliteTmService(tmFile.Path, null, new SerializerService(), new SegmentService()); try { service.OpenConnection(); var updateList = units.Where(unit => UpdateSystemFields(uniqueUsers, unit)).ToList(); if (updateList.Count > 0) { updatedCount = service.UpdateSystemFields(context, updateList); } } catch (Exception ex) { Console.WriteLine(ex); throw; } finally { service.CloseConnection(); } return(updatedCount); }
public Report AnonymizeFileBasedCustomFields(ProgressDialogContext context, TmFile tmFile, List <CustomField> customFields) { _tmService.BackupFileBasedTms(context, new List <TmFile> { tmFile }); var tm = new FileBasedTranslationMemory(tmFile.Path); var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, null, new LanguageDirection { Source = tm.LanguageDirection.SourceLanguage, Target = tm.LanguageDirection.TargetLanguage }); var units = GetUpdatableTranslationUnits(customFields, translationUnits); var report = new Report(tmFile) { ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.CustomFields), UpdatedCount = units.Count, Scope = Report.ReportScope.CustomFields }; var stopWatch = new Stopwatch(); stopWatch.Start(); var changesReport = GetCustomFieldChangesReport(units, customFields); foreach (var change in changesReport) { report.Actions.AddRange(change.Value); } UpdateCustomFieldPickLists(context, customFields, tm); var settings = _settingsService.GetSettings(); if (settings.UseSqliteApiForFileBasedTm) { UpdateCustomFieldsSqlite(context, tmFile, units); } else { UpdateCustomFields(context, tm, units); } ClearPreviousCustomFieldValues(translationUnits); stopWatch.Stop(); report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds; return(report); }
public Report AnonymizeServerBasedCustomFields(ProgressDialogContext context, TmFile tmFile, List <CustomField> customFields, TranslationProviderServer translationProvideServer) { _tmService.BackupServerBasedTms(context, new List <TmFile> { tmFile }); var serverBasedTm = translationProvideServer.GetTranslationMemory(tmFile.Path, TranslationMemoryProperties.All); var languageDirections = new List <LanguageDirection>(); foreach (var languageDirection in serverBasedTm.LanguageDirections) { languageDirections.Add(new LanguageDirection { Source = languageDirection.SourceLanguage, Target = languageDirection.TargetLanguage }); } var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, translationProvideServer, languageDirections); var units = GetUpdatableTranslationUnits(customFields, translationUnits); var report = new Report(tmFile) { ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.CustomFields), UpdatedCount = units.Count, Scope = Report.ReportScope.CustomFields, }; var stopWatch = new Stopwatch(); stopWatch.Start(); var changesReport = GetCustomFieldChangesReport(units, customFields); foreach (var change in changesReport) { report.Actions.AddRange(change.Value); } UpdateCustomFieldPickLists(context, customFields, serverBasedTm); UpdateCustomFields(context, tmFile, translationUnits, units, serverBasedTm); ClearPreviousCustomFieldValues(translationUnits); stopWatch.Stop(); report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds; return(report); }
private int UpdateCustomFields(ProgressDialogContext context, ILocalTranslationMemory tm, List <TmTranslationUnit> units) { var updatedCount = 0; decimal iCurrent = 0; decimal iTotalUnits = units.Count; var groupsOf = 200; var tusGroups = new List <List <TmTranslationUnit> > { new List <TmTranslationUnit>(units) }; if (units.Count > groupsOf) { tusGroups = units.ChunkBy(groupsOf); } foreach (var tus in tusGroups) { iCurrent = iCurrent + tus.Count; if (context != null && context.CheckCancellationPending()) { break; } var progress = iCurrent / iTotalUnits * 100; context?.Report(Convert.ToInt32(progress), "Updating: " + iCurrent + " of " + iTotalUnits + " Translation Units"); var tusToUpdate = new List <TranslationUnit>(); foreach (var tu in tus) { if (tm.LanguageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) && tm.LanguageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language)) { var unit = _tmService.CreateTranslationUnit(tu, tm.LanguageDirection); tusToUpdate.Add(unit); } } if (tusToUpdate.Count > 0) { var results = tm.LanguageDirection.UpdateTranslationUnits(tusToUpdate.ToArray()).ToList(); updatedCount += results.Count(result => result.Action != LanguagePlatform.TranslationMemory.Action.Error); } } return(updatedCount); }
public List <CustomField> GetFilebasedCustomField(ProgressDialogContext context, TmFile tm) { var translationMemory = new FileBasedTranslationMemory(tm.Path); var tus = _tmService.LoadTranslationUnits(context, tm, null, new LanguageDirection { Source = translationMemory.LanguageDirection.SourceLanguage, Target = translationMemory.LanguageDirection.TargetLanguage }); if (tus != null) { var customFieldList = GetCustomFieldList(translationMemory.FieldDefinitions, tus, tm.Path); return(customFieldList); } return(null); }
public List <User> GetUniqueFileBasedSystemFields(ProgressDialogContext context, TmFile tm) { var translationMemory = new FileBasedTranslationMemory(tm.Path); var tus = _tmService.LoadTranslationUnits(context, tm, null, new LanguageDirection { Source = translationMemory.LanguageDirection.SourceLanguage, Target = translationMemory.LanguageDirection.TargetLanguage }); if (tus != null) { var uniqueUsersCollection = GetUniqueUserCollection(tm.Path, tus); return(uniqueUsersCollection); } return(null); }
public Report AnonymizeServerBasedSystemFields(ProgressDialogContext context, TmFile tmFile, List <User> uniqueUsers, TranslationProviderServer translationProvideServer) { _tmService.BackupServerBasedTms(context, new List <TmFile> { tmFile }); var serverBasedTm = translationProvideServer.GetTranslationMemory(tmFile.Path, TranslationMemoryProperties.All); var languageDirections = new List <LanguageDirection>(); foreach (var languageDirection in serverBasedTm.LanguageDirections) { languageDirections.Add(new LanguageDirection { Source = languageDirection.SourceLanguage, Target = languageDirection.TargetLanguage }); } var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, translationProvideServer, languageDirections); var report = new Report(tmFile) { ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.SystemFields), UpdatedCount = translationUnits.Count, Scope = Report.ReportScope.SystemFields, }; report.Actions.AddRange(GetSystemFieldChangesReport(uniqueUsers)); var stopWatch = new Stopwatch(); stopWatch.Start(); report.UpdatedCount = UpdateSystemFields(context, tmFile, uniqueUsers, translationUnits, serverBasedTm); stopWatch.Stop(); report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds; return(report); }
public Report AnonymizeFileBasedSystemFields(ProgressDialogContext context, TmFile tmFile, List <User> uniqueUsers) { _tmService.BackupFileBasedTms(context, new List <TmFile> { tmFile }); var tm = new FileBasedTranslationMemory(tmFile.Path); var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, null, new LanguageDirection { Source = tm.LanguageDirection.SourceLanguage, Target = tm.LanguageDirection.TargetLanguage }); var report = new Report(tmFile) { ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.SystemFields), UpdatedCount = translationUnits.Count, Scope = Report.ReportScope.SystemFields, }; var stopWatch = new Stopwatch(); stopWatch.Start(); report.Actions.AddRange(GetSystemFieldChangesReport(uniqueUsers)); var settings = _settingsService.GetSettings(); report.UpdatedCount = settings.UseSqliteApiForFileBasedTm ? UpdateSystemFieldsSqlite(context, tmFile, translationUnits, uniqueUsers) : UpdateSystemFields(context, translationUnits, tm, uniqueUsers); stopWatch.Stop(); report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds; return(report); }
public List <CustomField> GetServerBasedCustomFields(ProgressDialogContext context, TmFile tm, TranslationProviderServer translationProvideServer) { var translationMemory = translationProvideServer.GetTranslationMemory(tm.Path, TranslationMemoryProperties.All); var translationUnits = new List <TmTranslationUnit>(); foreach (var languageDirection in translationMemory.LanguageDirections) { var tus = _tmService.LoadTranslationUnits(context, tm, translationProvideServer, new LanguageDirection { Source = languageDirection.SourceLanguage, Target = languageDirection.TargetLanguage }); if (tus != null) { translationUnits.AddRange(tus); } } var customFieldList = GetCustomFieldList(translationMemory.FieldDefinitions, translationUnits, tm.Path); return(customFieldList); }
public List <User> GetUniqueServerBasedSystemFields(ProgressDialogContext context, TmFile tm, TranslationProviderServer translationProvideServer) { var translationMemory = translationProvideServer.GetTranslationMemory(tm.Path, TranslationMemoryProperties.All); var translationUnits = new List <TmTranslationUnit>(); foreach (var languageDirection in translationMemory.LanguageDirections) { var tus = _tmService.LoadTranslationUnits(context, tm, translationProvideServer, new LanguageDirection { Source = languageDirection.SourceLanguage, Target = languageDirection.TargetLanguage }); if (tus != null) { translationUnits.AddRange(tus); } } var uniqueUsersCollection = GetUniqueUserCollection(tm.Path, translationUnits.ToArray()); return(uniqueUsersCollection); }
private int UpdateCustomFields(ProgressDialogContext context, TmFile tmFile, List <TmTranslationUnit> translationUnits, IReadOnlyCollection <TmTranslationUnit> units, ServerBasedTranslationMemory serverBasedTm) { var updatedCount = 0; decimal iCurrent = 0; decimal iTotalUnits = translationUnits.Count; var groupsOf = 100; var tusGroups = new List <List <TmTranslationUnit> > { new List <TmTranslationUnit>(units) }; if (units.Count > groupsOf) { tusGroups = translationUnits.ChunkBy(groupsOf); } foreach (var tus in tusGroups) { iCurrent = iCurrent + tus.Count; if (context != null && context.CheckCancellationPending()) { break; } var progress = iCurrent / iTotalUnits * 100; context?.Report(Convert.ToInt32(progress), "Updating: " + iCurrent + " of " + iTotalUnits + " Translation Units"); foreach (var languageDirection in serverBasedTm.LanguageDirections) { var tusToUpdate = new List <TranslationUnit>(); foreach (var tu in tus) { if (languageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) && languageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language)) { var unit = _tmService.CreateTranslationUnit(tu, languageDirection); tusToUpdate.Add(unit); } } if (tusToUpdate.Count > 0) { var results = languageDirection.UpdateTranslationUnits(tusToUpdate.ToArray()); foreach (var result in results) { if (result.Action != LanguagePlatform.TranslationMemory.Action.Error) { updatedCount++; } } } } } foreach (var languageDirection in tmFile.TmLanguageDirections) { _tmService.SaveTmCacheStorage(context, tmFile, languageDirection); } return(updatedCount); }
private int UpdateSystemFields(ProgressDialogContext context, List <TmTranslationUnit> translationUnits, IFileBasedTranslationMemory tm, List <User> uniqueUsers) { var updatedCount = 0; decimal iCurrent = 0; decimal iTotalUnits = translationUnits.Count; var groupsOf = 200; var tusGroups = new List <List <TmTranslationUnit> > { new List <TmTranslationUnit>(translationUnits) }; if (translationUnits.Count > groupsOf) { tusGroups = translationUnits.ChunkBy(groupsOf); } foreach (var tus in tusGroups) { iCurrent = iCurrent + tus.Count; if (context != null && context.CheckCancellationPending()) { break; } var progress = iCurrent / iTotalUnits * 100; context?.Report(Convert.ToInt32(progress), string.Format(StringResources.Updating_0_of_1_Translation_Units, iCurrent, iTotalUnits)); var filteredTusToUpdate = new List <TmTranslationUnit>(); foreach (var tu in tus) { if (UpdateSystemFields(uniqueUsers, tu)) { filteredTusToUpdate.Add(tu); } } if (filteredTusToUpdate.Count > 0) { var tusToUpdate = new List <TranslationUnit>(); foreach (var tu in filteredTusToUpdate) { if (tm.LanguageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) && tm.LanguageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language)) { var unit = _tmService.CreateTranslationUnit(tu, tm.LanguageDirection); tusToUpdate.Add(unit); } } if (tusToUpdate.Count > 0) { var results = tm.LanguageDirection.UpdateTranslationUnits(tusToUpdate.ToArray()); updatedCount += results.Count(result => result.Action != Sdl.LanguagePlatform.TranslationMemory.Action.Error); } } } tm.Save(); return(updatedCount); }