Azure Cognitive Services Translator es un servicio de traducción automática que forma parte de la familia de API REST de Azure Cognitive Services. Permite traducir textos (Text Translation), documentos (Document Translation) o hacer traducciones personalizadas (Custom Traslator).

En este post veremos solo cómo traducir textos.

Text Translation es una característica de API REST basada en la nube del servicio Translator que permite la traducción de un texto de forma rápida y precisa en tiempo real en todos los idiomas y dialectos admitidos. Sus métodos son:

  • Languages (GET) 🡒 Devuelve el conjunto de idiomas admitidos actualmente por los métodos de traducción, transliteración y diccionario. Esta solicitud no requiere encabezados de autenticación y no necesita un recurso Translator para ver el conjunto de idiomas admitido; simplemente copie y pegue la siguiente solicitud GET en su explorador o herramienta de API favoritos: https://api.cognitive.microsofttranslator.com/languages?api-version=3.0
  • Translate (POST) 🡒 Traduce un texto de un idioma de origen en varios idiomas de destino con una sola solicitud.
  • Transliterar (POST) 🡒 Convierte caracteres o letras de un idioma de origen en los caracteres o letras correspondientes de un idioma de destino.
  • Detectar(POST) 🡒 Devuelve el código fuente del idioma y una variable booleana que indica si el idioma detectado es compatible con la traducción y la transliteración de texto.
  • BreakSentence (POST) 🡒 Devuelve una matriz de enteros que representa la longitud de las oraciones en un texto de origen.
  • Dictionary/lookup (POST) 🡒 Devuelve alternativas para traducciones de palabras individuales.
  • Dictionary/examples (POST) 🡒 Devuelve ejemplos de estructura gramatical y contexto para el par formado por el término de origen y el término de destino.

Si quieres ver cuáles son los idiomas y dialectos disponibles, en este link aparecen todos:
https://docs.microsoft.com/en-us/azure/cognitive-services/translator/language-support

Lo primero que necesitamos es crearnos un recurso del traductor en Azure. Iniciamos sesión en el portal y en la barra de búsqueda escribimos “Translators”. Creamos un nuevo recurso con el grupo de recursos, nombre, región y el pricing tier que queramos. En este caso usaré el gratuito. Una vez creado, accedemos a él y nos dirigimos al apartado “Keys and Endpoint”. Aquí se encuentra la clave y la región que necesitaremos cuando escribamos el código.

Creamos una nueva aplicación de consola en Visual Studio. Necesitamos instalar el NugetNewtonsoft.Json” para poder mandar al API el texto que queremos traducir. Reemplazamos el código de “Program.cs” por el que encontraremos en la documentación oficial:
https://docs.microsoft.com/en-us/azure/cognitive-services/translator/quickstart-translator?tabs=csharp#translate-text

Este código creará una solicitud que toma un solo origen (from=en) y genera dos salidas (to=de&to=it); es decir, traducirá el texto guardado en la variable textToTranslate, que está en inglés, al alemán y al italiano.

Podemos editarlo para que traduzca del idioma origen al idioma destino que queramos cambiando los datos en el “route”. Si, por ejemplo, queremos que traduzca un texto de español a inglés y francés, habría que ponerlo de esta forma:

string route = "/translate?api-version=3.0&from=es&to=en&to=fr";

En este ejemplo solo vamos a traducir un mensaje de español a inglés.

También debemos cambiar las variables “key” y “location” por las que nos salen en el recurso que hemos creado en el portal de Azure, y si queremos añadimos o cambiamos algo más como que el usuario escriba el texto que quiere traducir.

Finalmente quedaría así:

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    private static readonly string key = "TU_KEY";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com/";

    private static readonly string location = "TU_REGION";
    
    static async Task Main(string[] args)
    {
        string route = "/translate?api-version=3.0&from=es&to=en";
        Console.WriteLine("Introduzca el texto a traducir:");
        string textToTranslate = Console.ReadLine();
        object[] body = new object[] { new { Text = textToTranslate } };
        var requestBody = JsonConvert.SerializeObject(body);
    
        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            request.Method = HttpMethod.Post;
            request.RequestUri = new Uri(endpoint + route);
            request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
            request.Headers.Add("Ocp-Apim-Subscription-Key", key);
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);
    
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Así de sencillo es utilizar Azure Text Translation y con sus distintos métodos puedes personalizarlo como quieras.

En caso de que quieras conocer más sobre Azure Text Translation, te dejo el link de la documentación oficial:
https://docs.microsoft.com/en-us/azure/cognitive-services/translator/text-translation-overview

Autor: María del Mar Carrión García
Curso: Desarrollo Web Full Stack + MultiCloud + Multiplataforma
Centro: Tajamar
Año académico: 2021-2022
Código: https://github.com/MariMar9/AzureTranslatorPost.git

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.