Spargo.Net: Universidad de Caldas

Integrar servicio de traducción de Bing con Silverlight

Este post muestra como podemos utilizar la API de , para integrar un servicio de traducción dentro de nuestra aplicación .

Para empezar debemos obtener un AppID que nos va a permitir utilizar las API de , para ello debemos ir aquí, autenticarnos con nuestro Live ID y obtener el AppID.

Para acceder a estos servicios tenemos tres maneras

  • Interfaz Ajax
  • HTTP
  • SOAP

Para nuestro ejemplo vamos a utilizar SOAP para consumir los servicios.

Primero creamos desde Visual Studio, una aplicación .

Segundo agregamos la referencia al servicio, la url para acceder vía SOAP es http://api.microsofttranslator.com/V1/SOAP.svc.1 thumb 536B8249 Integrar servicio de traducción de Bing con Silverlight

Vamos a crear entonces los controles necesarios en nuestro XAML.

<StackPanel HorizontalAlignment="Center">

    <TextBlock>Idioma Origen</TextBlock>

    <ComboBox x:Name="comboOrigen"

              Width="250"></ComboBox>

    <TextBlock>Texto Origen</TextBlock>

    <TextBox x:Name="textoOrigen"

             Height="56" Width="250" FontSize="34"/>

    <TextBlock>Idioma Destino</TextBlock>

    <ComboBox x:Name="comboDestino"

              Width="250"></ComboBox>

    <TextBlock>Texto Destino</TextBlock>

    <TextBox x:Name="textoDestino"

             Height="56" Width="250" FontSize="34"/>

    <Button x:Name="botonTraducir"

            Click="botonTraducir_Click"

            Content="Traducir" Width="50"/>

</StackPanel>

Tenemos un ComboBox para elegir los idiomas y un TextBox para el ingresar el texto que quiero traducir y para mostrar el resultado. Un Button para disparar la traducción.

Agregamos las referencias a las librerías que vamos a necesitar.

using BingTranslator.TranslatorService;

using System.Collections.ObjectModel;

Crear algunas variables que vamos a utilizar.

// Referencia SOAP a  Translator

TranslatorService.LanguageServiceClient

    ls = new LanguageServiceClient();

// AppId para utilizar los servicios de 

string AppId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

// Collecion de Idiomas

ObservableCollection<string> langcodes;

Cómo los métodos que utiliza el servicio son asincrónicos, necesitamos generar los handlers necesarios. Esto lo vamos a realizar desde Load de nuestra aplicación.

// Handlers

ls.TranslateCompleted +=

    new EventHandler<TranslateCompletedEventArgs>

        (ls_TranslateCompleted);

ls.GetLanguageNamesCompleted +=

    new EventHandler<GetLanguageNamesCompletedEventArgs>

        (ls_GetLanguageNamesCompleted);

ls.GetLanguagesCompleted +=

    new EventHandler<GetLanguagesCompletedEventArgs>

        (ls_GetLanguagesCompleted);

Vamos a llenar los combos de los idiomas y a guardar en nuestra colección de idiomas los keys de los mismos, que nos servirá después para saber que idiomas pasar al servicio. Esto también lo ponemos dentro del Load.

// Evento para guardar la lista de idiomas disponibles

// Trae el código del Idioma

ls.GetLanguageNamesAsync(AppId, Language.IetfLanguageTag);

// Evento para llenar los combos de Idiomas

// Trae la descripción del Idioma

ls.GetLanguagesAsync(AppId);

Ahora agregamos los handlers que se utilizan para traer los idiomas.

// Guarda la lista de idiomas disponibles

protected void ls_GetLanguagesCompleted(object sender,

                    GetLanguagesCompletedEventArgs e)

{

    if (e.Error == null)

    {

        langcodes = e.Result;

    }

}

// Llena los combos de Idiomas

protected void ls_GetLanguageNamesCompleted(Object sender,

                    GetLanguageNamesCompletedEventArgs e)

{

    if (e.Error == null)

    {

        comboOrigen.ItemsSource = e.Result;

        comboDestino.ItemsSource = e.Result;

        // Origen por defecto es Inglés

        comboOrigen.SelectedIndex =

            langcodes.IndexOf("en");

        // Destino por defecto es Español

        comboDestino.SelectedIndex =

            langcodes.IndexOf("es");

    }

}

Vamos a la parte más interesante, donde vamos a traducir el texto. Nosotros vamos a llamar al método que traduce, al ser asincrónico, cuando termine llamará al handler que especificamos en el Load.

private void botonTraducir_Click(object sender,

                RoutedEventArgs e)

{

    if (comboOrigen.SelectedItem != null &&

        comboDestino.SelectedItem != null)

    {

        ls.TranslateAsync(AppId, textoOrigen.Text,

            (langcodes[comboOrigen.SelectedIndex].ToString()),

            (langcodes[comboDestino.SelectedIndex].ToString()));

    }

}

// Recibe el texto traducido del Servicio

protected void ls_TranslateCompleted(Object sender,

                TranslateCompletedEventArgs e)

{

    if (e.Error == null)

    {

        textoDestino.Text = e.Result;

    }

}

Vemos un screen de la aplicación.

2 thumb 1C617E43 Integrar servicio de traducción de Bing con Silverlight

Pueden descargar el ejemplo aquí.

Filed under:

Via: Weblogs.asp.net

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

Related posts:

  1. Bing sigue mejorando Bing continúa con su progreso y ya ocupa el tercer...
  2. Conferencia: Silverlight como Plataforma de Desarrollo Como muchos de ustedes saben Silverlight es una tecnología...
  3. Noticia de Ultima Hora: Ahora Silverlight 4 Así es.  Nuestro querido amigo Rodrigo Diaz Concha, ha publicado...
  4. Serie de WebCasts: Silverlight 3 y WPF 4.0 para desarrolladores y diseñadores Hola a tod@s. Les recomendamos descargar los siguientes Web Casts...
  5. Algunos ejemplos de Silverlight 3 Silverlight al descubierto es un blog que vale la pena...

Related posts brought to you by Yet Another Related Posts Plugin.

You must be logged in to post a comment.

SEO Powered by Platinum SEO from Techblissonline