Condividi tramite


Traduzione testuale con l'API Traduttore

L'API Microsoft Traduttore può essere usata per tradurre la voce e il testo tramite un'API REST. Questo articolo illustra come usare l'API Testo di Microsoft Traduttore per tradurre testo da una lingua a un'altra in un'applicazioneXamarin.Forms.

Panoramica

L'API Traduttore include due componenti:

  • API REST di traduzione testuale per tradurre testo da una lingua in testo di un'altra lingua. L'API rileva automaticamente la lingua del testo inviato prima della traduzione.
  • API REST per la traduzione vocale per trascrivere il parlato da una lingua in testo di un'altra lingua. L'API integra anche funzionalità di sintesi vocale per riconvertire in audio il testo tradotto.

Questo articolo è incentrato sulla traduzione di testo da una lingua a un'altra usando l'API Text Traduttore.

Nota

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Per usare l'API Traduttore API Text, è necessario ottenere una chiave API. Questa operazione può essere ottenuta in Come iscriversi all'API Testo di Microsoft Traduttore.

Per altre informazioni sull'API Testo di Microsoft Traduttore, vedere Traduttore documentazione dell'API Text.

Autenticazione

Ogni richiesta inviata all'API text di Traduttore richiede un token di accesso token JSON Web (JWT), che può essere ottenuto dal servizio token dei servizi cognitivi all'indirizzo https://api.cognitive.microsoft.com/sts/v1.0/issueToken. È possibile ottenere un token effettuando una richiesta POST al servizio token, specificando un'intestazione Ocp-Apim-Subscription-Key che contiene la chiave API come valore.

L'esempio di codice seguente illustra come richiedere un token di accesso dal servizio 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();
}

Il token di accesso restituito, ovvero testo Base64, ha una scadenza di 10 minuti. Pertanto, l'applicazione di esempio rinnova il token di accesso ogni 9 minuti.

Il token di accesso deve essere specificato in ogni Traduttore chiamata API Text come Authorization intestazione preceduta dalla stringa Bearer, come illustrato nell'esempio di codice seguente:

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

Per altre informazioni sul servizio token di Servizi cognitivi, vedere Autenticazione.

Esecuzione della traduzione testuale

La traduzione testuale può essere ottenuta effettuando una richiesta GET all'API all'indirizzo translatehttps://api.microsofttranslator.com/v2/http.svc/translate. Nell'applicazione di esempio il TranslateTextAsync metodo richiama il processo di traduzione testuale:

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;
}

Il TranslateTextAsync metodo genera un URI di richiesta e recupera un token di accesso dal servizio token. La richiesta di traduzione testuale viene quindi inviata all'API translate , che restituisce una risposta XML contenente il risultato. La risposta XML viene analizzata e il risultato della traduzione viene restituito al metodo chiamante per la visualizzazione.

Per altre informazioni sulle API REST Traduzione testuale, vedere Traduttore API Text.

Configurazione della traduzione testuale

Il processo di traduzione testuale può essere configurato specificando i parametri di query 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;
}

Questo metodo imposta il testo da tradurre e la lingua in cui tradurre il testo. Per un elenco delle lingue supportate da Microsoft Traduttore, vedere Lingue supportate nell'API Microsoft Traduttore Text.

Nota

Se un'applicazione deve conoscere la lingua in cui si trova il testo, l'API Detect può essere chiamata per rilevare la lingua della stringa di testo.

Invio della richiesta

Il SendRequestAsync metodo effettua la richiesta GET all'API REST Traduzione testuale e restituisce la risposta:

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();
}

Questo metodo compila la richiesta GET aggiungendo il token di accesso all'intestazione Authorization , preceduto dalla stringa Bearer. La richiesta GET viene quindi inviata all'API translate , con l'URL della richiesta che specifica il testo da tradurre e la lingua in cui tradurre il testo. La risposta viene quindi letta e restituita al metodo chiamante.

L'API translate invierà il codice di stato HTTP 200 (OK) nella risposta, purché la richiesta sia valida, che indica che la richiesta è riuscita e che le informazioni richieste sono nella risposta. Per un elenco delle possibili risposte agli errori, vedere Messaggi di risposta in GET Translate.

Elaborazione della risposta

La risposta API viene restituita in formato XML. I dati XML seguenti mostrano un tipico messaggio di risposta riuscito:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>

Nell'applicazione di esempio, la risposta XML viene analizzata in un'istanza XDocument , con il valore radice XML restituito al metodo chiamante per la visualizzazione, come illustrato negli screenshot seguenti:

Traduzione testuale in tedesco

Riepilogo

Questo articolo ha illustrato come usare l'API Microsoft Traduttore Text per tradurre testo da una lingua in testo di un'altra lingua in un'applicazioneXamarin.Forms. Oltre a tradurre testo, l'API Microsoft Traduttore può anche trascrivere il parlato da una lingua in testo di un'altra lingua.