/// <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; }); }); } }); }
/// <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; // // }); // //}); //// } ////}); }
/// <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; // // }); // //}); //// } ////}); }