Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }