public IAsyncContinuation Translate2(IEnumerable <string> stringsToTranslate, ILanguage destLanguage, ILanguage sourceLanguage = null) { if (stringsToTranslate == null) { throw new ArgumentNullException("stringsToTranslate"); } // Convert stringsToTranslate to a list because I need to send them all at once // to the translation engine. We can only get benefit of IEnumberable in one direction List <string> stringList = stringsToTranslate.ToList(); if (sourceLanguage == null) { // detect language from the first string in the list to translate sourceLanguage = this.DetectLanguage(stringsToTranslate.First()); } Guid translationGuid = Guid.NewGuid(); IAsyncTranslationPayload asyncObj = new AsyncTranslationPayload(Guid.NewGuid(), stringList, sourceLanguage, destLanguage, this); BingTranslatorUserState userState = new BingTranslatorUserState { Id = asyncObj.Id, SourceLanguage = sourceLanguage as BaseLanguage, DestLanguage = destLanguage as BaseLanguage }; // TODO: Do we want this to be done async? if so update this code using (BingTranslatorService.SoapService client = new BingTranslatorService.SoapService()) { client.TranslateArrayAsync( this.ApiKey, stringList.ToArray(), sourceLanguage.Language, destLanguage.Language, this.TranslateOptions, userState); client.TranslateArrayCompleted += HandleTranslationComplete; } return(asyncObj); }
public IAsyncContinuation Translate2(IEnumerable<string> stringsToTranslate, ILanguage destLanguage, ILanguage sourceLanguage = null) { if (stringsToTranslate == null) { throw new ArgumentNullException("stringsToTranslate"); } // Convert stringsToTranslate to a list because I need to send them all at once // to the translation engine. We can only get benefit of IEnumberable in one direction List<string> stringList = stringsToTranslate.ToList(); if (sourceLanguage == null) { // detect language from the first string in the list to translate sourceLanguage = this.DetectLanguage(stringsToTranslate.First()); } Guid translationGuid = Guid.NewGuid(); IAsyncTranslationPayload asyncObj = new AsyncTranslationPayload(Guid.NewGuid(), stringList, sourceLanguage, destLanguage, this); BingTranslatorUserState userState = new BingTranslatorUserState { Id = asyncObj.Id, SourceLanguage = sourceLanguage as BaseLanguage, DestLanguage = destLanguage as BaseLanguage }; // TODO: Do we want this to be done async? if so update this code using (BingTranslatorService.SoapService client = new BingTranslatorService.SoapService()) { client.TranslateArrayAsync( this.ApiKey, stringList.ToArray(), sourceLanguage.Language, destLanguage.Language, this.TranslateOptions, userState); client.TranslateArrayCompleted += HandleTranslationComplete; } return asyncObj; }