private void SetupTranslator() { try { var results = new ObservableCollection<KeyValuePair<string, string>>(); Translations.ItemsSource = results; IObservable<string> translationTexts = (from keyup in Observable.FromEvent<KeyEventArgs>(Input, "KeyUp") where !String.IsNullOrEmpty(Input.Text) select Input.Text) .Throttle(TimeSpan.FromSeconds(PressDelay)) .ObserveOnDispatcher() .Do(_ => results.Clear()) ; var destLanguages = new string[] { "de", "es", "zh-CHT", "fr", "it", "ar", "ht", "he", "ja", "ko", "no", "ru", "th" }; LanguageService svc = new BingTranslatorService.LanguageServiceClient(); var svcObs = Observable.FromAsyncPattern<TranslateRequest, TranslateResponse>(svc.BeginTranslate, svc.EndTranslate); var query = from lang in destLanguages.ToObservable() from text in translationTexts from res in svcObs.Invoke(new TranslateRequest(AppID, text, "en-us", lang)) .TakeUntil(translationTexts) select new { Result = res.TranslateResult, TargetLanguage = lang }; query.ObserveOnDispatcher().Subscribe( trans => results.Add(new KeyValuePair<string, string>(trans.TargetLanguage, trans.Result)), err => results.Add(new KeyValuePair<string, string>("Error", err.ToString()))); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } }
/// <summary> /// Uses auto translation service (as of writing, this is BingTranslatorService) to translate phrase /// into another phrase, which is returned in the callback. /// </summary> private void AutoTranslate(PhraseEdit untranslatedPhrase, string targetLanguageText, AsyncCallback<PhraseEdit> callback) { BingTranslatorService.LanguageServiceClient client = new BingTranslatorService.LanguageServiceClient(); client.TranslateCompleted += (s, r) => { if (r.Error != null) { callback(this, new ResultArgs<PhraseEdit>(r.Error)); return; } var translatedText = r.Result; PhraseEdit.NewPhraseEdit(targetLanguageText, (s2, r2) => { if (r2.Error != null) { callback(this, new ResultArgs<PhraseEdit>(r.Error)); return; } var translatedPhrase = r2.Object; translatedPhrase.Text = translatedText; callback(this, new ResultArgs<PhraseEdit>(translatedPhrase)); return; }); }; var untranslatedPhraseLanguageCode = BingTranslateHelper.GetLanguageCode(untranslatedPhrase.Language.Text); var targetLanguageCode = BingTranslateHelper.GetLanguageCode(targetLanguageText); try { client.TranslateAsync(StudyResources.BingAppId, untranslatedPhrase.Text, untranslatedPhraseLanguageCode, targetLanguageCode, @"text/plain", //this as opposed to "text/html" "general"); //only supported category is "general" //GOTO ABOVE TRANSLATECOMPLETED HANDLER } catch (Exception ex) { callback(this, new ResultArgs<PhraseEdit>(ex)); } }
public TranslationService() { translation_service_client = new BingTranslatorService.LanguageServiceClient(); authentication_provider = new AuthenticationProvider("LunchViewerID", "9J9NlGfKUUU4j4UFNmbDUHz/oV2bQXBATevKDix8f/8="); }
protected void UseClient(Action<BingTranslatorService.LanguageService> action) { if (!IsAccessTokenValid) { ObtainAccessToken(); } // Add TranslatorService as a service reference, Address:http://api.microsofttranslator.com/V2/Soap.svc BingTranslatorService.LanguageServiceClient client = new BingTranslatorService.LanguageServiceClient(); //Set Authorization header before sending the request HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty(); httpRequestProperty.Method = "POST"; httpRequestProperty.Headers.Add("Authorization", String.Format("Bearer {0}", AccessTokenInfo.AccessToken)); // Creates a block within which an OperationContext object is in scope. using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) { OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty; action(client); } }