private List <Tuple <string, string> > ProcessFuzzies(List <TranslationUnit> fuzzyResults) { var projectInfo = this.Project.GetProjectInfo(); var fuzzies = new List <Tuple <string, string> >(); foreach (var res in fuzzyResults) { sourceVisitor.Reset(); foreach (var element in res.SourceSegment.Elements) { element.AcceptSegmentElementVisitor(sourceVisitor); } //targetVisitor.Reset(sourceVisitor.TagStarts, sourceVisitor.TagEnds); targetVisitor.Reset(); foreach (var element in res.TargetSegment.Elements) { element.AcceptSegmentElementVisitor(targetVisitor); } fuzzies.Add( new Tuple <string, string>( sourceVisitor.PlainText, targetVisitor.PlainText)); } return(fuzzies); }
/// <summary> /// Performs the actual search /// </summary> /// <param name="settings"></param> /// <param name="segment"></param> /// <returns></returns> #region "SearchSegment" public SearchResults SearchSegment(SearchSettings settings, Segment segment) { _visitor.Reset(); foreach (var element in segment.Elements) { element.AcceptSegmentElementVisitor(_visitor); } #region "SearchResultsObject" SearchResults results = new SearchResults(); results.SourceSegment = segment.Duplicate(); #endregion string sourceText = _visitor.PlainText; var sourceCode = this._languageDirection.SourceCulture.TwoLetterISOLanguageName; var targetCode = this._languageDirection.TargetCulture.TwoLetterISOLanguageName; var langpair = $"{sourceCode}-{targetCode}"; List <SearchResult> systemResults = this.GenerateSystemResult(sourceText, settings.Mode, segment, sourceCode, targetCode); foreach (var res in systemResults) { results.Add(res); } return(results); #endregion }
/// <summary> /// Performs the actual search /// </summary> /// <param name="settings"></param> /// <param name="segment"></param> /// <returns></returns> #region "SearchSegment" public SearchResults SearchSegment(SearchSettings settings, Segment segment) { // Loop through segment elements to 'filter out' e.g. tags in order to // make certain that only plain text information is retrieved for // this simplified implementation. // TODO: Make it work with tags. Probably alignment information // is needed from the server for this #region "SegmentElements" _visitor.Reset(); foreach (var element in segment.Elements) { element.AcceptSegmentElementVisitor(_visitor); } #endregion #region "SearchResultsObject" SearchResults results = new SearchResults(); results.SourceSegment = segment.Duplicate(); #endregion string sourceText = _visitor.PlainText; // If replacements need to be done to the source segment, here iss the place // sourceText = sourceText.Replace("foo", "bar"); //Get the translation from the server //string translatedSentence = searchInServer(sourceText); var sourceCode = this._languageDirection.SourceCulture.TwoLetterISOLanguageName; var targetCode = this._languageDirection.TargetCulture.TwoLetterISOLanguageName; var langpair = $"{sourceCode}-{targetCode}"; string translatedSentence = FiskmoProviderLanguageDirection._marianProcesses[langpair].Translate(sourceText); if (String.IsNullOrEmpty(translatedSentence)) { return(results); } // Look up the currently selected segment in the collection (normal segment lookup). if (settings.Mode == SearchMode.FullSearch) { Segment translation = new Segment(_languageDirection.TargetCulture); translation.Add(translatedSentence); results.Add(CreateSearchResult(segment, translation, _visitor.PlainText, segment.HasTags)); } #region "SegmentLookup" if (settings.Mode == SearchMode.NormalSearch) { Segment translation = new Segment(_languageDirection.TargetCulture); translation.Add(translatedSentence); results.Add(CreateSearchResult(segment, translation, _visitor.PlainText, segment.HasTags)); } #endregion #region "Close" return(results); #endregion }