Compartir a través de


Traducción de texto mediante la API Translator

La API de Traductor de Microsoft se puede usar para traducir voz y texto a través de una API de REST. En este artículo se explica cómo usar la API de Microsoft Translator Text para traducir texto de un idioma a otro en una aplicación Xamarin.Forms.

Información general

La API Translator tiene dos componentes:

  • Una API REST para traducir texto de un idioma a texto en otro idioma. La API detecta automáticamente el idioma del texto que se ha enviado antes de traducirlo.
  • Una API REST de traducción de voz para transcribir voz de un idioma a texto en 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 la API Translator Text.

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 la API Translator Text. Esto se puede obtener en Cómo suscribirse a la API Microsoft Translator Text.

Para obtener más información sobre la API Microsoft Translator Text, consulte Documentación de la API Translator Text.

Autenticación

Cada solicitud realizada a la API Translator Text 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 mediante la realización de una solicitud POST al servicio de token, especificando un encabezado Ocp-Apim-Subscription-Key que contiene la clave de API como su valor.

En el ejemplo de código siguiente se muestra cómo solicitar un token de acceso desde el 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 de 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 de la API Translator Text como encabezado Authorization con el prefijo de cadena Bearer, como se muestra en el ejemplo de código siguiente:

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

Para más información sobre el servicio de token de Cognitive Services, consulte Autenticación.

Traducción de texto

La traducción de texto se puede lograr mediante la realización de una solicitud GET a la API translate en https://api.microsofttranslator.com/v2/http.svc/translate. En la aplicación de ejemplo, el método TranslateTextAsync invoca al 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 método TranslateTextAsync 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 API translate, que devuelve una respuesta XML que contiene el resultado. La respuesta XML se analiza y el resultado de la traducción se devuelve al método de llamada para su presentación.

Para más información sobre las API REST de traducción de texto, consulte API Translator Text.

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. Para obtener una lista de los idiomas que admite Microsoft Translator, consulte Idiomas admitidos en la API Microsoft Translator Text.

Nota:

Si una aplicación necesita saber en qué idioma está el texto, se puede llamar a la API Detect para detectar el idioma de la cadena de texto.

Envío de la solicitud

El método SendRequestAsync realiza la solicitud GET a la API REST de traducción de texto y devuelve la respuesta siguiente:

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 encabezado Authorization, con la cadena Bearer como prefijo. A continuación, la solicitud GET se envía a la API translate, 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 el texto. A continuación, la respuesta se lee y se devuelve al método de llamada.

La API translate enviará el código de estado HTTP 200 (CORRECTO) en la respuesta, siempre que la solicitud sea válida, lo que indicará que la solicitud se ha realizado correctamente y que la información solicitada está en la respuesta. Para obtener una lista de posibles respuestas de error, consulte 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 XDocument y el valor raíz XML se devuelve al método de llamada para su visualización, como se muestra en las siguientes capturas de pantalla:

Traducción de texto a alemán

Resumen

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