コード例 #1
0
        /// <summary>
        /// First searches DB for translated phrase.  If not found there, uses AutoTranslate.
        /// </summary>
        private async Task <ResultArgs <PhraseEdit> > GetTranslatedPhrase(PhraseEdit phrase,
                                                                          string targetLanguageText)
        {
            var criteria  = new Business.Criteria.TranslationSearchCriteria(phrase, targetLanguageText, true);
            var retriever = await TranslationSearchRetriever.CreateNewAsync(criteria);

            if (retriever.Translation != null)
            {
                var translatedPhrase = BusinessHelper.ExtractPhrase(retriever.Translation,
                                                                    targetLanguageText);
                return(new ResultArgs <PhraseEdit>(translatedPhrase));
            }
            else
            {
                return(null);
            }


            //////THIS IS THE PHRASE WE'RE LOOKING FOR
            //PhraseEdit translatedPhrase = null;

            ////FIRST LOOK IN DB.  IF NOT, THEN AUTO TRANSLATE.
            //#region Thinking (try..)
            //var targetId = Guid.NewGuid();
            //History.Events.ThinkingAboutTargetEvent.Publish(targetId);
            //try
            //{
            //#endregion
            //  var searchCriteria = new Business.Criteria.TranslationSearchCriteria(phrase, targetLanguageText);
            //  var retriever = await TranslationSearchRetriever.CreateNewAsync(searchCriteria);
            //#region (...finally) Thinked
            //}
            //finally
            //{
            //  History.Events.ThinkedAboutTargetEvent.Publish(targetId);
            //}
            //  #endregion
            ////    callback(this, new ResultArgs<PhraseEdit>(r.Error));
            ////    return;
            ////  }

            ////  var retriever = r.Object;
            ////  var foundTranslation = retriever.Translation;
            ////  if (foundTranslation != null)
            ////  {
            ////    //FOUND TRANSLATED PHRASE IN DATABASE.
            ////    translatedPhrase = (from p in foundTranslation.Phrases
            ////                        where p.Language.Text == targetLanguageText
            ////                        select p).First();
            ////    callback(this, new ResultArgs<PhraseEdit>(translatedPhrase));
            ////    return;
            ////  }
            ////  else
            ////  {
            //    //NO TRANSLATION FOUND IN DB, WILL NEED TO AUTO TRANSLATE
            //    var translatedPhrase = await AutoTranslate(phrase, targetLanguageText);//, (s2, r2) =>
            //    //{
            //    //  if (r2.Error != null)
            //    //  {
            //    //    callback(this, new ResultArgs<PhraseEdit>(r2.Error));
            //    //    return;
            //    //  }

            //    //  //GOT TRANSLATED PHRASE VIA AUTOTRANSLATE.  NEED TO CHECK IF WE ALREADY HAVE THIS
            //    //  //PHRASE IN OUR DB, AND USE THAT OBJECT INSTEAD IF WE DO.
            //    //  translatedPhrase = r2.Object;
            //    //  var translatedPhraseLanguageText = translatedPhrase.Language.Text;
            //    //  var criteriaPhrase = new Business.Criteria.ListOfPhrasesCriteria(translatedPhrase);
            //    //  Business.PhrasesByTextAndLanguageRetriever.CreateNew(criteriaPhrase, (s3, r3) =>
            //    //    {
            //    //      if (r3.Error != null)
            //    //      {
            //    //        callback(this, new ResultArgs<PhraseEdit>(r2.Error));
            //    //        return;
            //    //      }

            //    //      //CHECK OUR RETRIEVER IF IT SUCCESSFULLY FOUND A PHRASE EDIT IN THE DB.
            //    //      //IF IT DID FIND ONE (NOT NULL), THEN ASSIGN OUR TRANSLATEDPHRASE VAR TO THE DB VERSION.
            //    //      //THIS WAY, WE WON'T DUPLICATE PHRASES IN OUR DB.
            //    //      var translatedPhraseRetriever = r3.Object;
            //    //      var dbPhraseEdit = translatedPhraseRetriever.RetrievedPhrases[translatedPhrase.Id];
            //    //      if (dbPhraseEdit != null)
            //    //        translatedPhrase = dbPhraseEdit;

            //    //      //FIRE EVENT THAT WE HAVE AUTOTRANSLATED A PHRASE
            //    //      var autoTranslatedEvent =
            //    //        new History.Events.PhraseAutoTranslatedEvent(phrase, translatedPhrase);
            //    //      History.HistoryPublisher.Ton.PublishEvent(autoTranslatedEvent);

            //    //      //CALLBACK
            //    //      callback(this, new ResultArgs<PhraseEdit>(translatedPhrase));
            //    //      return;

            //    //    });

            //    //});
            ////  }
            ////});
        }