Integrar servicio de traducción de Bing con Silverlight
Este post muestra como podemos utilizar la API de Bing, para integrar un servicio de traducción dentro de nuestra aplicación Silverlight.
Para empezar debemos obtener un AppID que nos va a permitir utilizar las API de Bing, 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 Silverlight.
Segundo agregamos la referencia al servicio, la url para acceder vía SOAP es http://api.microsofttranslator.com/V1/SOAP.svc.![]()
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.
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.
Pueden descargar el ejemplo aquí.
Filed under: bing
Via: Weblogs.asp.net
Related posts:
- Bing sigue mejorando Bing continúa con su progreso y ya ocupa el tercer...
- Conferencia: Silverlight como Plataforma de Desarrollo Como muchos de ustedes saben Silverlight es una tecnología...
- Noticia de Ultima Hora: Ahora Silverlight 4 Así es. Nuestro querido amigo Rodrigo Diaz Concha, ha publicado...
- 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...
- 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.