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);
        }
示例#2
0
        /// <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
        }
示例#3
0
        /// <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
        }