コード例 #1
0
        /// <summary>
        /// First searches DB for translated phrase.  If not found there, uses AutoTranslate.
        /// </summary>
        private void GetTranslatedPhrase(PhraseEdit phrase, 
                                     string targetLanguageText, 
                                     AsyncCallback<PhraseEdit> callback)
        {
            //THIS IS THE PHRASE WE'RE LOOKING FOR
              PhraseEdit translatedPhrase = null;

              //FIRST LOOK IN DB.  IF NOT, THEN AUTO TRANSLATE.
              var searchCriteria = new Business.Criteria.TranslationSearchCriteria(phrase, targetLanguageText);
              TranslationSearchRetriever.CreateNew(searchCriteria, (s, r) =>
              {
            if (r.Error != null)
            {
              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
              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;

              });

              });
            }
              });
        }
コード例 #2
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;

            //    //    });

            //    //});
            ////  }
            ////});
        }
コード例 #3
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;

      //    //    });

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