Beispiel #1
0
        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));
              }
        }
Beispiel #3
0
 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);
     }
 }
Beispiel #5
0
 public TranslationService()
 {
     translation_service_client = new BingTranslatorService.LanguageServiceClient();
     authentication_provider    = new AuthenticationProvider("LunchViewerID", "9J9NlGfKUUU4j4UFNmbDUHz/oV2bQXBATevKDix8f/8=");
 }