Traducción de texto mediante Traductor API
La API Traductor de Microsoft se puede usar para traducir voz y texto a través de una API REST. En este artículo se explica cómo usar Traductor de Microsoft Text API para traducir texto de un idioma a otro en una Xamarin.Forms aplicación.
Información general
La API Traductor tiene dos componentes:
- API REST de traducción de texto para traducir texto de un idioma a texto de otro idioma. La API detecta automáticamente el idioma del texto que se envió antes de traducirlo.
- UNA API REST de traducción de voz para transcribir la voz de un idioma en texto de otro idioma. La API también integra las funcionalidades de texto a voz para volver a hablar el texto traducido.
Este artículo se centra en traducir texto de un idioma a otro mediante Traductor Text API.
Nota:
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Se debe obtener una clave de API para usar Traductor Text API. Esto se puede obtener en Cómo registrarse entext API Traductor de Microsoft .
Para obtener más información sobre Traductor de Microsoft Text API, consulte la documentación Traductor Text API.
Autenticación
Cada solicitud realizada a Traductor Text API requiere un token de acceso JSON Web Token (JWT), que se puede obtener del servicio de token de Cognitive Services en https://api.cognitive.microsoft.com/sts/v1.0/issueToken . Un token se puede obtener realizando una solicitud POST al servicio de token, especificando un encabezado que contiene la clave Ocp-Apim-Subscription-Key de API como su valor.
En el ejemplo de código siguiente se muestra cómo solicitar un token de acceso del servicio de token:
public AuthenticationService(string apiKey)
{
subscriptionKey = apiKey;
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", apiKey);
}
...
async Task<string> FetchTokenAsync(string fetchUri)
{
UriBuilder uriBuilder = new UriBuilder(fetchUri);
uriBuilder.Path += "/issueToken";
var result = await httpClient.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
return await result.Content.ReadAsStringAsync();
}
El token de acceso devuelto, que es texto Base64, tiene un tiempo de expiración de 10 minutos. Por lo tanto, la aplicación de ejemplo renueva el token de acceso cada 9 minutos.
El token de acceso debe especificarse en cada llamada Traductor Text API como un encabezado con el prefijo de la cadena , como se muestra Authorization en el ejemplo de código Bearer siguiente:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
Para obtener más información sobre el servicio de token de Cognitive Services, vea Autenticación.
Realización de la traducción de texto
La traducción de texto se puede lograr realizando una solicitud GET a la translate API en https://api.microsofttranslator.com/v2/http.svc/translate . En la aplicación de ejemplo, el TranslateTextAsync método invoca el proceso de traducción de texto:
public async Task<string> TranslateTextAsync(string text)
{
...
string requestUri = GenerateRequestUri(Constants.TextTranslatorEndpoint, text, "en", "de");
string accessToken = authenticationService.GetAccessToken();
var response = await SendRequestAsync(requestUri, accessToken);
var xml = XDocument.Parse(response);
return xml.Root.Value;
}
El TranslateTextAsync método genera un URI de solicitud y recupera un token de acceso del servicio de token. A continuación, la solicitud de traducción de texto se envía a la translate API, que devuelve una respuesta XML que contiene el resultado. Se analiza la respuesta XML y el resultado de la traducción se devuelve al método de llamada para su presentación.
Para obtener más información sobre las API REST de traducción de texto, vea Traductor Text API.
Configuración de la traducción de texto
El proceso de traducción de texto se puede configurar especificando parámetros de consulta HTTP:
string GenerateRequestUri(string endpoint, string text, string to)
{
string requestUri = endpoint;
requestUri += string.Format("?text={0}", Uri.EscapeUriString(text));
requestUri += string.Format("&to={0}", to);
return requestUri;
}
Este método establece el texto que se va a traducir y el idioma al que se va a traducir el texto. Para obtener una lista de los idiomas admitidos por Traductor de Microsoft, consulte Idiomas admitidos en Traductor de Microsoft Text API.
Nota:
Si una aplicación necesita saber en qué idioma se encuentra el texto, se puede llamar a la API para detectar el Detect idioma de la cadena de texto.
Envío de la solicitud
El SendRequestAsync método realiza la solicitud GET a la API REST Text Translation y devuelve la respuesta:
async Task<string> SendRequestAsync(string url, string bearerToken)
{
if (httpClient == null)
{
httpClient = new HttpClient();
}
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
var response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
Este método compila la solicitud GET agregando el token de acceso al Authorization encabezado, con el prefijo de la cadena Bearer . A continuación, la solicitud GET se envía a la API, con la dirección URL de solicitud que especifica el texto que se va a traducir y el idioma al que se va a traducir translate el texto. A continuación, la respuesta se lee y se devuelve al método que realiza la llamada.
La API enviará el código de estado HTTP 200 (CORRECTO) en la respuesta, siempre que la solicitud sea válida, lo que indica que la solicitud se ha hecho correctamente y que la información solicitada está en translate la respuesta. Para obtener una lista de posibles respuestas de error, vea Mensajes de respuesta en GET Translate.
Procesamiento de la respuesta
La respuesta de la API se devuelve en formato XML. Los siguientes datos XML muestran un mensaje de respuesta correcto típico:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>
En la aplicación de ejemplo, la respuesta XML se analiza en una instancia de , y el valor raíz XML se devuelve al método de llamada para su presentación, como se muestra en las capturas de XDocument pantalla siguientes:

Resumen
En este artículo se explica cómo usar Traductor de Microsoft Text API para traducir texto de un idioma a texto de otro idioma en una Xamarin.Forms aplicación. Además de traducir texto, la API de Traductor de Microsoft también puede transcribir la voz de un idioma en texto de otro idioma.
Descarga del ejemplo