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.

No related posts.

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

Etiquetas: , ,

Entradas relacionadas

You must be logged in to post a comment.

SEO Powered by Platinum SEO from Techblissonline