Partager via


Traduction de texte à l’aide de l’API Traducteur

L’API Traducteur Microsoft peut être utilisée pour traduire la parole et le texte via une API REST. Cet article explique comment utiliser l’API de texte Traducteur Microsoft pour traduire du texte d’une langue à une autre dans une Xamarin.Forms application.

Vue d’ensemble

L’API Traducteur a deux composants :

  • API REST de traduction de texte pour traduire du texte d’une langue en texte d’une autre langue. L’API détecte automatiquement la langue du texte envoyé avant de le traduire.
  • API REST de traduction vocale pour transcrire la parole d’une langue en texte d’une autre langue. L’API intègre également des fonctionnalités de synthèse vocale pour prononcer le texte traduit.

Cet article se concentre sur la traduction de texte d’une langue vers une autre à l’aide de l’API texte Traducteur.

Remarque

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Une clé API doit être obtenue pour utiliser l’API texte Traducteur. Vous pouvez obtenir cette opération à l’adresse How to sign up for the Traducteur Microsoft Text API.

Pour plus d’informations sur l’API texte Traducteur Microsoft, consultez Traducteur documentation de l’API texte.

Authentification

Chaque requête adressée à l’API de texte Traducteur nécessite un jeton d’accès JWT (JSON Web Token), qui peut être obtenu à partir du service de jeton cognitive services à l’adresse https://api.cognitive.microsoft.com/sts/v1.0/issueToken. Un jeton peut être obtenu en effectuant une requête POST au service de jetons, en spécifiant un Ocp-Apim-Subscription-Key en-tête qui contient la clé API comme valeur.

L’exemple de code suivant montre comment demander un jeton d’accès auprès du service de jetons :

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

Le jeton d’accès retourné, qui est du texte Base64, a une durée d’expiration de 10 minutes. Par conséquent, l’exemple d’application renouvelle le jeton d’accès toutes les 9 minutes.

Le jeton d’accès doit être spécifié dans chaque appel d’API texte Traducteur en tant qu’en-tête Authorization précédé de la chaîneBearer, comme indiqué dans l’exemple de code suivant :

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

Pour plus d’informations sur le service de jeton cognitive services, consultez Authentification.

Exécution d’une traduction de texte

La traduction de texte peut être obtenue en effectuant une requête GET à l’API à l’adresse translatehttps://api.microsofttranslator.com/v2/http.svc/translate. Dans l’exemple d’application, la TranslateTextAsync méthode appelle le processus de traduction de texte :

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

La TranslateTextAsync méthode génère un URI de requête et récupère un jeton d’accès à partir du service de jetons. La demande de traduction de texte est ensuite envoyée à l’API translate , qui retourne une réponse XML contenant le résultat. La réponse XML est analysée et le résultat de la traduction est retourné à la méthode appelante pour l’affichage.

Pour plus d’informations sur les API REST de traduction de texte, consultez Traducteur’API de texte.

Configuration de la traduction de texte

Le processus de traduction de texte peut être configuré en spécifiant les paramètres de requête 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;
}

Cette méthode définit le texte à traduire et la langue dans laquelle traduire le texte. Pour obtenir la liste des langues prises en charge par Traducteur Microsoft, consultez les langues prises en charge dans l’API texte Traducteur Microsoft.

Remarque

Si une application doit connaître la langue dans laquelle se trouve le texte, l’API Detect peut être appelée pour détecter la langue de la chaîne de texte.

Envoi de la requête

La SendRequestAsync méthode effectue la requête GET à l’API REST traduction de texte et retourne la réponse :

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

Cette méthode génère la requête GET en ajoutant le jeton d’accès à l’en-tête Authorization , précédée de la chaîne Bearer. La requête GET est ensuite envoyée à l’API translate , avec l’URL de requête spécifiant le texte à traduire et la langue vers laquelle traduire le texte. La réponse est ensuite lue et retournée à la méthode appelante.

L’API envoie le translate code d’état HTTP 200 (OK) dans la réponse, à condition que la demande soit valide, ce qui indique que la demande a réussi et que les informations demandées sont dans la réponse. Pour obtenir la liste des réponses d’erreur possibles, consultez Messages de réponse à GET Translate.

Traitement de la réponse

La réponse de l’API est retournée au format XML. Les données XML suivantes affichent un message de réponse réussi classique :

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

Dans l’exemple d’application, la réponse XML est analysée dans une XDocument instance, avec la valeur racine XML retournée à la méthode d’appel pour l’affichage, comme indiqué dans les captures d’écran suivantes :

Traduction de texte en allemand

Résumé

Cet article a expliqué comment utiliser l’API de texte Traducteur Microsoft pour traduire du texte d’une langue en texte d’une autre langue dans une Xamarin.Forms application. Outre la traduction de texte, l’API Traducteur Microsoft peut également transcrire la parole d’une langue en texte d’une autre langue.