Skip to content

Commit

Permalink
Language Weaver Provider 2.0.3.1 - CRQ-40112: Standalone app support …
Browse files Browse the repository at this point in the history
…- TQE metadata
  • Loading branch information
ealbu committed Oct 19, 2024
1 parent b7fc597 commit d983661
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using LanguageWeaverProvider.Model;
using Sdl.FileTypeSupport.Framework.Core.Utilities.NativeApi;
using Sdl.FileTypeSupport.Framework.NativeApi;
using System;
using System.Collections.Generic;
Expand All @@ -16,7 +17,7 @@ public static class TranslationOriginExtension

public static int GetLastTqeIndex(this ITranslationOrigin translationOrigin)
{
var lastIndex = 1;
var lastIndex = 0;
while (translationOrigin.MetaDataContainsKey(Constants.METADATA_EVALUATED_AT_PREFIX + (lastIndex + 1)))
{
lastIndex++;
Expand All @@ -28,6 +29,9 @@ public static void SetMetaData(this ITranslationOrigin translationOrigin, Transl
{
var evaluationTime = DateTime.Now.ToUniversalTime();




if (!string.IsNullOrWhiteSpace(translationData.QualityEstimation))
{
translationOrigin.StoreTQEDataInMetaData(translationData.Index, Constants.METADATA_EVALUATED_AT_PREFIX,
Expand Down
2 changes: 1 addition & 1 deletion LanguageWeaverProvider/LanguageWeaverProvider.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

<PropertyGroup>
<PluginDeploymentPath>$(AppData)\Trados\Trados Studio\18\Plugins</PluginDeploymentPath>
<TradosFolder>C:\Code\SDL\Trados\Bin\Mixed Platforms\Debug</TradosFolder>
<TradosFolder>$(MSBuildProgramFiles32)\Trados\Trados Studio\Studio18</TradosFolder>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
Expand Down
22 changes: 14 additions & 8 deletions LanguageWeaverProvider/Model/StandaloneCredentials.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,24 @@ public AuthenticationType AuthenticationType
if (IsCloudCredential)
{
if (CloudCredentials.ClientID is not null) authenticationType = AuthenticationType.CloudAPI;
if (CloudCredentials.UserPassword is not null) authenticationType = AuthenticationType.CloudCredentials;
if (CloudCredentials.ConnectionCode is not null) authenticationType = AuthenticationType.CloudSSO;

if (authenticationType != AuthenticationType.None) EdgeCredentials = null;
else if (CloudCredentials.UserPassword is not null) authenticationType = AuthenticationType.CloudCredentials;
else if (CloudCredentials.ConnectionCode is not null) authenticationType = AuthenticationType.CloudSSO;

if (authenticationType != AuthenticationType.None)
{
EdgeCredentials = null;
return authenticationType;
}
}

CloudCredentials = null;

if (EdgeCredentials?.Host is not null) return AuthenticationType.EdgeApiKey;
if (EdgeCredentials?.Password is not null) return AuthenticationType.EdgeCredentials;
if (EdgeCredentials?.Host is not null) authenticationType = AuthenticationType.EdgeApiKey;
else if (EdgeCredentials?.Password is not null) authenticationType = AuthenticationType.EdgeCredentials;
//if (EdgeCredentials is not null) return AuthenticationType.EdgeSSO;
return AuthenticationType.None;

if (authenticationType == AuthenticationType.None) EdgeCredentials = null;
return authenticationType;
}
}

Expand Down
2 changes: 1 addition & 1 deletion LanguageWeaverProvider/Services/CredentialManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public static void GetCredentials(ITranslationOptions translationOptions, bool a
{
var credentialStore = ApplicationInitializer.CredentialStore;

if (standaloneCredentials is not null)
if (ApplicationInitializer.IsStandalone && standaloneCredentials is not null && standaloneCredentials.AuthenticationType != AuthenticationType.None)
{
translationOptions.PluginVersion = standaloneCredentials.IsCloudCredential
? PluginVersion.LanguageWeaverCloud
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public override void ProcessParagraphUnit(IParagraphUnit paragraphUnit)
ModelName = ratedSegment.ModelName,
Model = ratedSegment.Model,
AutoSendFeedback = ratedSegment.AutosendFeedback,
Index = translationOrigin.GetLastTqeIndex()
Index = translationOrigin.GetLastTqeIndex() + 1
};

translationOrigin.SetMetaData(translationData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ private void SetSavedSegmentMetadata(ISegmentPairProperties segmentProperties)
Translation = ratedSegment.Translation,
ModelName = ratedSegment.ModelName,
AutoSendFeedback = ratedSegment.AutosendFeedback,
Index = translationOrigin.GetLastTqeIndex()
Index = translationOrigin.GetLastTqeIndex() + 1
};

translationOrigin.SetMetaData(translationData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@
using LanguageWeaverProvider.XliffConverter.Converter;
using LanguageWeaverProvider.XliffConverter.Model;
using Sdl.Core.Globalization;
using Sdl.FileTypeSupport.Framework.Core.Utilities.BilingualApi;
using Sdl.FileTypeSupport.Framework.NativeApi;
using Sdl.LanguagePlatform.Core;
using Sdl.LanguagePlatform.TranslationMemory;
using Sdl.LanguagePlatform.TranslationMemoryApi;
using Sdl.TranslationStudioAutomation.IntegrationApi;
using TranslationUnit = Sdl.LanguagePlatform.TranslationMemory.TranslationUnit;
using Sdl.FileTypeSupport.Framework.Core.Utilities.NativeApi;
using Sdl.FileTypeSupport.Framework.BilingualApi;

namespace LanguageWeaverProvider
{
Expand Down Expand Up @@ -143,12 +145,19 @@ public SearchResults[] SearchTranslationUnitsMasked(SearchSettings settings, Tra
var translatedSegment = translatedSegments[translatedSegmentsIndex++];

searchResults[i] = new SearchResults { SourceSegment = currentSegment.Duplicate() };
searchResults[i].Add(CreateSearchResult(currentSegment, translatedSegment));

var translationOrigin = _currentTranslationUnit.DocumentSegmentPair.Properties.TranslationOrigin;
var tuSearchResult = CreateTuSearchResult(currentSegment, translatedSegment);

var translationOrigin = tuSearchResult.DocumentSegmentPair.Properties.TranslationOrigin;
var lastTqeIndex = translationOrigin is not null ? translationOrigin.GetLastTqeIndex() + 1 : 1;

SetMetadataOnSegment(evaluatedSegment, mappedPair, fileName, lastTqeIndex);
SetMetadataOnSegment(evaluatedSegment, mappedPair, fileName, lastTqeIndex, translationOrigin);

searchResults[i].Add(new SearchResult(tuSearchResult)
{
ScoringResult = new ScoringResult { BaseScore = 0 },
TranslationProposal = new TranslationUnit(tuSearchResult)
});
}

ManageBatchTaskWindow();
Expand Down Expand Up @@ -196,7 +205,14 @@ private SearchResults CreateDraftNotResentSearchResults(Segment segment)
targetSegment.Add(PluginResources.TranslationDraftNotResent);

var searchResults = new SearchResults { SourceSegment = segment.Duplicate() };
searchResults.Add(CreateSearchResult(segment, targetSegment));
var tuSearchResult = CreateTuSearchResult(segment, targetSegment);

searchResults.Add(new SearchResult(tuSearchResult)
{
ScoringResult = new ScoringResult { BaseScore = 0 },
TranslationProposal = new TranslationUnit(tuSearchResult)
});

return searchResults;
}

Expand Down Expand Up @@ -242,11 +258,16 @@ private SearchResult TranslateSegment(Segment segment, Segment sourceSegment)
var mappedPair = GetMappedPair();
var translation = CloudService.Translate(_translationOptions.AccessToken, mappedPair, xliff).Result;
var translatedSegment = translation.GetTargetSegments().First();
var searchResult = CreateSearchResult(segment, translatedSegment.Translation);
SetMetadataOnSegment(translatedSegment, mappedPair, null, 1);
var tuSearchResult = CreateTuSearchResult(segment, translatedSegment.Translation);

return searchResult;
}
SetMetadataOnSegment(translatedSegment, mappedPair, null, 1, tuSearchResult.DocumentSegmentPair.Properties.TranslationOrigin);

return new SearchResult(tuSearchResult)
{
ScoringResult = new ScoringResult { BaseScore = 0 },
TranslationProposal = new TranslationUnit(tuSearchResult)
};
}

private Xliff CreateXliffFile(IEnumerable<Segment> segments)
{
Expand All @@ -272,10 +293,9 @@ private Xliff CreateXliffFile(IEnumerable<Segment> segments)
return xliffDocument;
}

private void SetMetadataOnSegment(EvaluatedSegment evaluatedSegment, PairMapping pairMapping, string fileName, int index)
private void SetMetadataOnSegment(EvaluatedSegment evaluatedSegment, PairMapping pairMapping, string fileName,
int index, ITranslationOrigin translationOrigin)
{
if (ApplicationInitializer.IsStandalone) return;

if (_batchTaskWindow is not null || _currentTranslationUnit.ConfirmationLevel == ConfirmationLevel.Draft)
{
StoreSegmentMetadata(evaluatedSegment, pairMapping, fileName);
Expand All @@ -292,16 +312,7 @@ private void SetMetadataOnSegment(EvaluatedSegment evaluatedSegment, PairMapping
Index = index
};

var editorController = SdlTradosStudio.Application.GetController<EditorController>();
if (editorController.ActiveDocument is null) return;

var currentSegmentId = _currentTranslationUnit.DocumentSegmentPair.Properties.Id;
var currentSegmentPair = editorController.ActiveDocument.SegmentPairs.First(p => p.Properties.Id == currentSegmentId);

var translationOrigin = currentSegmentPair.Properties.TranslationOrigin;
translationOrigin.SetMetaData(translationData);

editorController.ActiveDocument.UpdateSegmentPairProperties(currentSegmentPair, currentSegmentPair.Properties);
}

private void StoreSegmentMetadata(EvaluatedSegment evaluatedSegment, PairMapping pairMapping, string fileName)
Expand Down Expand Up @@ -359,23 +370,26 @@ private PairMapping GetMappedPair()
&& x.LanguagePair.TargetCultureName.Equals(TargetLanguage.Name));
}

private SearchResult CreateSearchResult(Segment searchSegment, Segment translation)
private TranslationUnit CreateTuSearchResult(Segment searchSegment, Segment translation)
{
var translationUnit = new TranslationUnit
{
ConfirmationLevel = ConfirmationLevel.Draft,
Origin = TranslationUnitOrigin.Nmt,
SourceSegment = searchSegment.Duplicate(),
TargetSegment = translation
TargetSegment = translation
};

translationUnit.ResourceId = new PersistentObjectToken(translationUnit.GetHashCode(), Guid.Empty);
return new SearchResult(translationUnit)
{
ScoringResult = new ScoringResult { BaseScore = 0 },
TranslationProposal = new TranslationUnit(translationUnit)
};
}
var itemFactory = DefaultDocumentItemFactory.CreateInstance();
//var propertyFactory = DefaultPropertiesFactory.CreateInstance();

translationUnit.DocumentSegmentPair = _currentTranslationUnit.DocumentSegmentPair;
translationUnit.DocumentSegmentPair.Properties.TranslationOrigin ??= itemFactory.CreateTranslationOrigin();
translationUnit.ResourceId = new PersistentObjectToken(translationUnit.GetHashCode(), Guid.Empty);

return translationUnit;

}

#region To finish
private List<Segment> ExtractTranslatableSegments(TranslationUnit[] translationUnits, bool[] mask, SearchResults[] searchResults, List<Segment> segments)
Expand Down

0 comments on commit d983661

Please sign in to comment.