private void AddWordCounts(string status, SegmentPairInfo segmentPairInfo, string match) { AddWordCounts(status, ConfirmationStatistics.WordCounts.Processed, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Processed, segmentPairInfo); AddWordCounts(status, ConfirmationStatistics.WordCounts.Total, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Total, segmentPairInfo); }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { if (paragraphUnit.IsStructure || !paragraphUnit.SegmentPairs.Any()) { return; } foreach (var segmentPair in paragraphUnit.SegmentPairs) { var segmentPairInfo = new SegmentPairInfo { FileId = _fileProperties.FileConversionProperties.FileId.Id, ParagraphUnit = paragraphUnit, SegmentPair = segmentPair, ParagraphUnitId = paragraphUnit.Properties.ParagraphUnitId.Id, SegmentId = segmentPair.Properties.Id.Id }; try { segmentPairInfo.SourceWordCounts = SegmentPairProcessor.GetSegmentPairInfo(segmentPair)?.SourceWordCounts; } catch { // catch all; ignore } SegmentPairInfos.Add(segmentPairInfo); } }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { if (paragraphUnit.IsStructure) { UpdateParagraphUnit(paragraphUnit); return; } if (!paragraphUnit.SegmentPairs.Any()) { return; } var segmentPairs = new List <ISegmentPair>(); foreach (var segmentPair in paragraphUnit.SegmentPairs) { if (_subSegmentParagraphUnitIds.Contains(paragraphUnit.Properties.ParagraphUnitId.Id) || _selectedSegments.Exists(a => a.ParagraphUnitId == paragraphUnit.Properties.ParagraphUnitId.Id && a.SegmentId == segmentPair.Properties.Id.Id)) { segmentPairs.Add(segmentPair); var subSegmentParagraphUnitIds = GetSubSegmentParagraphUnitIds(segmentPair); foreach (var paragraphUnitId in subSegmentParagraphUnitIds.Where(paragraphUnitId => !_subSegmentParagraphUnitIds.Exists(a => a == paragraphUnitId))) { _subSegmentParagraphUnitIds.Add(paragraphUnitId); } var segmentPairInfo = new SegmentPairInfo { FileId = _fileProperties.FileConversionProperties.FileId.Id, ParagraphUnit = paragraphUnit, SegmentPair = segmentPair, ParagraphUnitId = paragraphUnit.Properties.ParagraphUnitId.Id, SegmentId = segmentPair.Properties.Id.Id }; try { segmentPairInfo.SourceWordCounts = SegmentPairProcessor.GetSegmentPairInfo(segmentPair)?.SourceWordCounts; } catch { // catch all; ignore } SegmentPairInfos.Add(segmentPairInfo); } } AddSegmentPairs(paragraphUnit, segmentPairs); }
public List <SegmentPairInfo> GetSegmentPairInfos(List <ProjectFileInfo> projectFiles, IEnumerable <ISegmentPair> selectedSegmentPairs) { var segmentPairInfos = new List <SegmentPairInfo>(); foreach (var selectedSegmentPair in selectedSegmentPairs) { var segmentPairInfo = new SegmentPairInfo { ParagraphUnitId = selectedSegmentPair.GetParagraphUnitProperties().ParagraphUnitId.Id, SegmentId = selectedSegmentPair.Properties.Id.Id }; segmentPairInfo.FileId = GetProjectFileInfo(projectFiles, segmentPairInfo.ParagraphUnitId, segmentPairInfo.SegmentId)?.FileId; segmentPairInfos.Add(segmentPairInfo); } return(segmentPairInfos); }
private static SegmentPairInfo GeSegmentPairInfoResult(SearchResults searchResults) { var result = new SegmentPairInfo(); var searchResult = searchResults?.Results?[0]; if (searchResult != null) { result.SourceSegment = searchResult.MemoryTranslationUnit.SourceSegment; result.TargetSegment = searchResult.MemoryTranslationUnit.TargetSegment; result.SourceWordCounts = new WordCounts { Words = searchResults.SourceWordCounts.Words, Characters = searchResults.SourceWordCounts.Characters, Tags = searchResults.SourceWordCounts.Tags, Placeables = searchResults.SourceWordCounts.Placeables }; } return(result); }
private static void AddWordCounts(string category, ICollection <WordCount> wordCounts, SegmentPairInfo segmentPairInfo) { var count = wordCounts.FirstOrDefault(a => a.Category == category); if (count != null) { count.Segments++; count.Words += segmentPairInfo.SourceWordCounts.Words; count.Characters += segmentPairInfo.SourceWordCounts.Characters; count.Placeables += segmentPairInfo.SourceWordCounts.Placeables; count.Tags += segmentPairInfo.SourceWordCounts.Tags; } else { var wordCount = new WordCount { Category = category, Segments = 1, Words = segmentPairInfo.SourceWordCounts.Words, Characters = segmentPairInfo.SourceWordCounts.Characters, Placeables = segmentPairInfo.SourceWordCounts.Placeables, Tags = segmentPairInfo.SourceWordCounts.Tags }; wordCounts.Add(wordCount); } }
private void UpdateTranslationOrigin(ISegment originalTarget, ISegment targetSegment, SegmentPairInfo segmentPairInfo) { SegmentVisitor.VisitSegment(originalTarget); var originalText = SegmentVisitor.Text; SegmentVisitor.VisitSegment(targetSegment); var updatedText = SegmentVisitor.Text; if (string.Compare(originalText, updatedText, StringComparison.Ordinal) != 0) { if (!string.IsNullOrEmpty(_importOptions.StatusTranslationUpdatedId)) { if (targetSegment.Properties.TranslationOrigin != null) { var currentTranslationOrigin = (ITranslationOrigin)targetSegment.Properties.TranslationOrigin.Clone(); targetSegment.Properties.TranslationOrigin.OriginBeforeAdaptation = currentTranslationOrigin; SetTranslationOrigin(targetSegment); } else { targetSegment.Properties.TranslationOrigin = _segmentBuilder.CreateTranslationOrigin(); SetTranslationOrigin(targetSegment); } var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusTranslationUpdatedId, true, out var result); var statusTranslationUpdated = success ? result : ConfirmationLevel.Unspecified; targetSegment.Properties.ConfirmationLevel = statusTranslationUpdated; } var status = targetSegment.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(targetSegment.Properties.TranslationOrigin, _analysisBands); AddWordCounts(status, ConfirmationStatistics.WordCounts.Processed, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Processed, segmentPairInfo); } else { if (!string.IsNullOrEmpty(_importOptions.StatusTranslationNotUpdatedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusTranslationNotUpdatedId, true, out var result); var statusTranslationNotUpdated = success ? result : ConfirmationLevel.Unspecified; targetSegment.Properties.ConfirmationLevel = statusTranslationNotUpdated; } var status = targetSegment.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(targetSegment.Properties.TranslationOrigin, _analysisBands); AddWordCounts(status, ConfirmationStatistics.WordCounts.Excluded, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Excluded, segmentPairInfo); } }
private void UpdateTargetSegment(ISegmentPair segmentPair, SegmentPair importedSegmentPair, SegmentPairInfo segmentPairInfo) { var targetSegment = segmentPair.Target; var originalSource = (ISegment)segmentPair.Source.Clone(); var originalTarget = (ISegment)targetSegment.Clone(); // clear the existing content from the target segment targetSegment.Clear(); var containers = new Stack <IAbstractMarkupDataContainer>(); containers.Push(targetSegment); var lockedContentId = 0; foreach (var element in importedSegmentPair.Target.Elements) { if (element is ElementComment elementComment) { UpdateComment(elementComment, containers); } if (element is ElementTagPair elementTagPair) { UpdateTagPair(elementTagPair, originalTarget, originalSource, containers); } if (element is ElementLocked elementLocked) { lockedContentId = UpdateLockedContent(elementLocked, lockedContentId, originalTarget, originalSource, containers); } if (element is ElementPlaceholder elementPlaceholder) { UpdatePlaceholder(elementPlaceholder, originalTarget, originalSource, containers); } if (element is ElementText elementText && !string.IsNullOrEmpty(elementText.Text)) { UpdateText(elementText, containers); } } UpdateTranslationOrigin(originalTarget, targetSegment, segmentPairInfo); }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { if (paragraphUnit.IsStructure || !paragraphUnit.SegmentPairs.Any()) { return; } var transUnit = new TransUnit { Id = paragraphUnit.Properties.ParagraphUnitId.Id }; var file = GetFileContainer(paragraphUnit); UpdateContexts(file, paragraphUnit, transUnit); foreach (var segmentPair in paragraphUnit.SegmentPairs) { SegmentPairInfo segmentPairInfo = null; try { segmentPairInfo = SegmentPairProcessor.GetSegmentPairInfo(segmentPair); } catch { // catch all; ignore } var status = segmentPair.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); if (_exportOptions.ExcludeFilterIds != null) { if ((segmentPair.Properties.IsLocked && _exportOptions.ExcludeFilterIds.Exists(a => a == "Locked")) || _exportOptions.ExcludeFilterIds.Exists(a => a == status) || _exportOptions.ExcludeFilterIds.Exists(a => a == match)) { AddWordCounts(status, segmentPairInfo, match); continue; } } SegmentVisitor.VisitSegment(segmentPair.Source); if (SegmentVisitor.HasRevisions) { //throw new Exception(PluginResources.Message_UnableToProcessFileWithTrackChanges + //Environment.NewLine + //PluginResources.Message_AccecptRejectTrackChangesBeforeExporting); } var sourceElements = SegmentVisitor.Elements; if (SegmentVisitor.Comments.Count > 0) { foreach (var comment in SegmentVisitor.Comments) { if (!Xliff.DocInfo.Comments.ContainsKey(comment.Key)) { Xliff.DocInfo.Comments.Add(comment.Key, comment.Value); } } } UpdateTagIds(); if (segmentPair.Target?.Count == 0 && _exportOptions.CopySourceToTarget) { segmentPair.Target.Clear(); foreach (var sourceElement in segmentPair.Source) { segmentPair.Target.Add(sourceElement.Clone() as IAbstractMarkupData); } } SegmentVisitor.VisitSegment(segmentPair.Target); if (SegmentVisitor.HasRevisions) { //throw new Exception(PluginResources.Message_UnableToProcessFileWithTrackChanges + //Environment.NewLine + //PluginResources.Message_AccecptRejectTrackChangesBeforeExporting); } var targetElements = SegmentVisitor.Elements; if (SegmentVisitor.Comments.Count > 0) { foreach (var comment in SegmentVisitor.Comments) { if (!Xliff.DocInfo.Comments.ContainsKey(comment.Key)) { Xliff.DocInfo.Comments.Add(comment.Key, comment.Value); } } } UpdateTagIds(); var newSegmentPair = new SegmentPair(_segmentBuilder) { Id = segmentPair.Properties.Id.Id, Source = new Source { Elements = sourceElements }, Target = new Target { Elements = targetElements }, IsLocked = segmentPair.Properties.IsLocked, ConfirmationLevel = segmentPair.Properties.ConfirmationLevel, TranslationOrigin = segmentPair.Properties.TranslationOrigin }; transUnit.SegmentPairs.Add(newSegmentPair); AddWordCounts(status, segmentPairInfo, match); } if (transUnit.SegmentPairs.Count > 0) { file.Body.TransUnits.Add(transUnit); } }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { if (paragraphUnit.IsStructure || !paragraphUnit.SegmentPairs.Any()) { base.ProcessParagraphUnit(paragraphUnit); return; } var importedTransUnit = GetTransUnit(paragraphUnit); if (importedTransUnit == null) { if (!string.IsNullOrEmpty(_importOptions.StatusSegmentNotImportedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusSegmentNotImportedId, true, out var result); var statusSegmentNotImported = success ? result : ConfirmationLevel.Unspecified; foreach (var segmentPair in paragraphUnit.SegmentPairs) { SegmentPairInfo segmentPairInfo = null; try { segmentPairInfo = SegmentPairProcessor.GetSegmentPairInfo(segmentPair); } catch { // catch all; ignore } segmentPair.Target.Properties.ConfirmationLevel = statusSegmentNotImported; var status = segmentPair.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); AddWordCounts(status, segmentPairInfo, match); } } base.ProcessParagraphUnit(paragraphUnit); return; } if (importedTransUnit.Contexts.Count > 0) { var contexts = paragraphUnit.Properties.Contexts.Contexts; foreach (var importContext in importedTransUnit.Contexts) { var existingContext = contexts.FirstOrDefault(a => string.Compare(a.ContextType, importContext.ContextType, StringComparison.CurrentCultureIgnoreCase) == 0 && string.Compare(a.DisplayCode, importContext.DisplayCode, StringComparison.CurrentCultureIgnoreCase) == 0 && string.Compare(a.DisplayName, importContext.DisplayName, StringComparison.CurrentCultureIgnoreCase) == 0 && string.Compare(a.Description, importContext.Description, StringComparison.CurrentCultureIgnoreCase) == 0); if (existingContext == null) { var newContext = _segmentBuilder.CreateContextInfo(importContext); contexts.Add(newContext); } } } foreach (var segmentPair in paragraphUnit.SegmentPairs) { SegmentPairInfo segmentPairInfo = null; try { segmentPairInfo = SegmentPairProcessor.GetSegmentPairInfo(segmentPair); } catch { // catch all; ignore } var importedSegmentPair = importedTransUnit.SegmentPairs.FirstOrDefault(a => a.Id == segmentPair.Properties.Id.Id); if (importedSegmentPair == null) { if (!string.IsNullOrEmpty(_importOptions.StatusSegmentNotImportedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusSegmentNotImportedId, true, out var result); var statusSegmentNotImported = success ? result : ConfirmationLevel.Unspecified; segmentPair.Target.Properties.ConfirmationLevel = statusSegmentNotImported; } var status = segmentPair.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); AddWordCounts(status, segmentPairInfo, match); continue; } var noOverwrite = !_importOptions.OverwriteTranslations && segmentPair.Target.Any(); var excludeFilter = false; if (_importOptions.ExcludeFilterIds?.Count > 0) { var status = segmentPair.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); excludeFilter = (segmentPair.Properties.IsLocked && _importOptions.ExcludeFilterIds.Exists(a => a == "Locked")) || _importOptions.ExcludeFilterIds.Exists(a => a == status) || _importOptions.ExcludeFilterIds.Exists(a => a == match); } if (noOverwrite || excludeFilter) { if (!string.IsNullOrEmpty(_importOptions.StatusTranslationNotUpdatedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusTranslationNotUpdatedId, true, out var result); var statusTranslationNotUpdated = success ? result : ConfirmationLevel.Unspecified; segmentPair.Target.Properties.ConfirmationLevel = statusTranslationNotUpdated; } else { segmentPair.Target.Properties.ConfirmationLevel = importedSegmentPair.ConfirmationLevel; } var status = segmentPair.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); AddWordCounts(status, segmentPairInfo, match); continue; } UpdateTargetSegment(segmentPair, importedSegmentPair, segmentPairInfo); } base.ProcessParagraphUnit(paragraphUnit); }
private void UpdateTargetSegment(ISegmentPair segmentPair, SegmentPair importedSegmentPair, SegmentPairInfo segmentPairInfo) { var sourceSegment = segmentPair.Source; var targetSegment = segmentPair.Target; var originalSource = (ISegment)sourceSegment.Clone(); var originalTarget = (ISegment)targetSegment.Clone(); if (_importBackTranslations && importedSegmentPair.TranslationOrigin != null && importedSegmentPair.TranslationOrigin.MetaDataContainsKey("back-translation")) { var backTranslation = importedSegmentPair.TranslationOrigin.GetMetaData("back-translation"); var backTranslationTokens = JsonConvert.DeserializeObject <List <Token> >(backTranslation); targetSegment = _segmentBuilder.GetUpdatedSegment(targetSegment, backTranslationTokens, sourceSegment); } else { // clear the existing content from the target segment targetSegment.Clear(); var containers = new Stack <IAbstractMarkupDataContainer>(); containers.Push(targetSegment); var lockedContentId = 0; foreach (var element in importedSegmentPair.Target.Elements) { if (element is ElementComment elementComment) { UpdateComment(elementComment, containers); } if (element is ElementTagPair elementTagPair) { UpdateTagPair(elementTagPair, originalTarget, originalSource, containers); } if (element is ElementLocked elementLocked) { lockedContentId = UpdateLockedContent(elementLocked, lockedContentId, originalTarget, originalSource, containers); } if (element is ElementPlaceholder elementPlaceholder) { UpdatePlaceholder(elementPlaceholder, originalTarget, originalSource, containers); } if (element is ElementGenericPlaceholder genericPlaceholder) { UpdateGenericPlaceholder(genericPlaceholder, originalTarget, originalSource, containers); } if (element is ElementText elementText && !string.IsNullOrEmpty(elementText.Text)) { UpdateText(elementText, containers); } } } UpdateTranslationOrigin(originalTarget, targetSegment, segmentPairInfo, importedSegmentPair); }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { if (paragraphUnit.IsStructure) { return; } var priority = paragraphUnit.Properties.Contexts.Contexts.FirstOrDefault( a => a.ContextType == "Recommended" || a.ContextType.StartsWith("Alternative")); var textFunction = paragraphUnit.Properties.Contexts.Contexts.FirstOrDefault( a => string.Compare(a.DisplayName, "Text Function", StringComparison.CurrentCultureIgnoreCase) == 0); if (priority == null) { return; } if (_contextTypes.Count == 0) { _contextTypes.Add(priority.ContextType); _wordWriter.AddNewTable(priority.ContextType); } foreach (var segmentPair in paragraphUnit.SegmentPairs) { SegmentPairInfo segmentPairInfo = null; try { segmentPairInfo = SegmentPairProcessor.GetSegmentPairInfo(segmentPair); } catch { // catch all; ignore } var status = segmentPair.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); if (SkipSegment(segmentPair)) { AddWordCounts(status, ConfirmationStatistics.WordCounts.Excluded, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Excluded, segmentPairInfo); AddWordCounts(status, ConfirmationStatistics.WordCounts.Total, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Total, segmentPairInfo); continue; } AddWordCounts(status, ConfirmationStatistics.WordCounts.Processed, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Processed, segmentPairInfo); AddWordCounts(status, ConfirmationStatistics.WordCounts.Total, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Total, segmentPairInfo); _tokenVisitor.Process(segmentPair.Source); var sourceText = _tokenVisitor.PlainText.ToString(); var sourceTokens = CloneList(_tokenVisitor.Tokens); _tokenVisitor.Process(segmentPair.Target); var targetText = _tokenVisitor.PlainText.ToString(); var targetTokens = CloneList(_tokenVisitor.Tokens); var comments = _tokenVisitor.Comments; List <Token> backTranslationTokens = null; if (segmentPair.Target.Properties.TranslationOrigin != null && segmentPair.Target.Properties.TranslationOrigin.MetaDataContainsKey("back-translation")) { //TODO check if we need to create TranslationOrigin?? var backTranslation = segmentPair.Target.Properties.TranslationOrigin.GetMetaData("back-translation"); backTranslationTokens = JsonConvert.DeserializeObject <List <Token> >(backTranslation); } var textFunctionDescription = textFunction?.Description; if (string.IsNullOrEmpty(textFunctionDescription)) { textFunctionDescription = _previousTextFunctionDescription; } else { _previousTextFunctionDescription = textFunctionDescription; } _wordWriter.WriteEntry( segmentPair.Properties.Id.Id, paragraphUnit.Properties.ParagraphUnitId.Id, priority.ContextType, textFunctionDescription, sourceTokens, targetTokens, segmentPair.Properties, backTranslationTokens); } }
public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { if (paragraphUnit.IsStructure) { base.ProcessParagraphUnit(paragraphUnit); return; } foreach (var segmentPair in paragraphUnit.SegmentPairs) { SegmentPairInfo segmentPairInfo = null; try { segmentPairInfo = SegmentPairProcessor.GetSegmentPairInfo(segmentPair); } catch { // catch all; ignore } var status = segmentPair.Properties.ConfirmationLevel.ToString(); var match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); var targetSegment = segmentPair.Target; //capture if segment contains tracked changes //var hasTrackedChanges = false; var segmentIdentifier = string.Empty; if (SegmentExists(paragraphUnit.Properties.ParagraphUnitId.Id, segmentPair.Properties.Id.Id, ref segmentIdentifier)) { var noOverwrite = !_importOptions.OverwriteTranslations && segmentPair.Target.Any(); var excludeFilter = false; if (_importOptions.ExcludeFilterIds != null) { excludeFilter = (segmentPair.Properties.IsLocked && _importOptions.ExcludeFilterIds.Exists(a => a == "Locked")) || _importOptions.ExcludeFilterIds.Exists(a => a == status) || _importOptions.ExcludeFilterIds.Exists(a => a == match); } if (noOverwrite || excludeFilter) { if (!string.IsNullOrEmpty(_importOptions.StatusTranslationNotUpdatedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusTranslationNotUpdatedId, true, out var result); var statusTranslationNotUpdated = success ? result : ConfirmationLevel.Unspecified; segmentPair.Target.Properties.ConfirmationLevel = statusTranslationNotUpdated; segmentPair.Properties.ConfirmationLevel = statusTranslationNotUpdated; status = segmentPair.Properties.ConfirmationLevel.ToString(); match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); } AddWordCounts(status, ConfirmationStatistics.WordCounts.Excluded, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Excluded, segmentPairInfo); AddWordCounts(status, ConfirmationStatistics.WordCounts.Total, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Total, segmentPairInfo); continue; } var tokenVisitor = new TokenVisitor(); tokenVisitor.VisitSegment(targetSegment); var originalText = tokenVisitor.PlainText.ToString(); try { if (segmentPair.Target.Properties.TranslationOrigin == null) { targetSegment.Properties.TranslationOrigin = _segmentBuilder.ItemFactory.CreateTranslationOrigin(); } else { var currentTranslationOrigin = (ITranslationOrigin)targetSegment.Properties.TranslationOrigin.Clone(); targetSegment.Properties.TranslationOrigin.OriginBeforeAdaptation = currentTranslationOrigin; } SetTranslationOrigin(targetSegment); var updatedSegment = _updatedSegments[segmentIdentifier]; if (updatedSegment.TranslationTokens.Count > 0) { targetSegment = _segmentBuilder.GetUpdatedSegment(targetSegment, updatedSegment.TranslationTokens, segmentPair.Source); } if (updatedSegment.BackTranslationTokens.Count > 0) { var backTranslations = JsonConvert.SerializeObject(updatedSegment.BackTranslationTokens); segmentPair.Target.Properties.TranslationOrigin.SetMetaData("back-translation", backTranslations); } } catch (Exception ex) { throw new Exception("Problem when merging content of segment " + segmentPair.Properties.Id.Id, ex); } tokenVisitor.Process(targetSegment); var updatedText = tokenVisitor.PlainText.ToString(); if (string.Compare(originalText, updatedText, StringComparison.Ordinal) != 0) { if (!string.IsNullOrEmpty(_importOptions.StatusTranslationUpdatedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusTranslationUpdatedId, true, out var result); var statusTranslationUpdated = success ? result : ConfirmationLevel.Unspecified; targetSegment.Properties.ConfirmationLevel = statusTranslationUpdated; segmentPair.Properties.ConfirmationLevel = statusTranslationUpdated; status = segmentPair.Properties.ConfirmationLevel.ToString(); match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); } AddWordCounts(status, ConfirmationStatistics.WordCounts.Processed, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Processed, segmentPairInfo); AddWordCounts(status, ConfirmationStatistics.WordCounts.Total, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Total, segmentPairInfo); } else { if (!string.IsNullOrEmpty(_importOptions.StatusTranslationNotUpdatedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusTranslationNotUpdatedId, true, out var result); var statusTranslationNotUpdated = success ? result : ConfirmationLevel.Unspecified; targetSegment.Properties.ConfirmationLevel = statusTranslationNotUpdated; } status = targetSegment.Properties.ConfirmationLevel.ToString(); match = Enumerators.GetTranslationOriginType(targetSegment.Properties.TranslationOrigin, _analysisBands); AddWordCounts(status, ConfirmationStatistics.WordCounts.Excluded, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Excluded, segmentPairInfo); AddWordCounts(status, ConfirmationStatistics.WordCounts.Total, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Total, segmentPairInfo); } } else { if (!string.IsNullOrEmpty(_importOptions.StatusSegmentNotImportedId)) { var success = Enum.TryParse <ConfirmationLevel>(_importOptions.StatusTranslationNotUpdatedId, true, out var result); var statusTranslationNotUpdated = success ? result : ConfirmationLevel.Unspecified; segmentPair.Target.Properties.ConfirmationLevel = statusTranslationNotUpdated; segmentPair.Properties.ConfirmationLevel = statusTranslationNotUpdated; status = segmentPair.Properties.ConfirmationLevel.ToString(); match = Enumerators.GetTranslationOriginType(segmentPair.Target.Properties.TranslationOrigin, _analysisBands); } AddWordCounts(status, ConfirmationStatistics.WordCounts.NotProcessed, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.NotProcessed, segmentPairInfo); AddWordCounts(status, ConfirmationStatistics.WordCounts.Total, segmentPairInfo); AddWordCounts(match, TranslationOriginStatistics.WordCounts.Total, segmentPairInfo); } } base.ProcessParagraphUnit(paragraphUnit); }