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

Télécharger l’exemple Télécharger l’exemple

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

Vue d’ensemble

L’API Translator 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 Translator Text.

Notes

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 Translator Text. Vous pouvez l’obtenir dans Comment s’inscrire à l’API Microsoft Translator Text.

Pour plus d’informations sur l’API Microsoft Translator Text, consultez Documentation de l’API Translator Text.

Authentification

Chaque requête adressée à l’API Translator Text 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 demande POST auprès du 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 au service de jeton :

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 de 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 de l’API Translator Text en tant qu’en-tête Authorization précédé de la chaîne Bearer, 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 de la traduction de texte

La traduction de texte peut être effectuée en effectuant une demande 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 API Translator Text.

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 vers laquelle traduire le texte. Pour obtenir la liste des langues prises en charge par Microsoft Translator, consultez Langues prises en charge dans l’API Microsoft Translator Text.

Notes

Si une application doit savoir dans quelle langue 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 demande

La SendRequestAsync méthode effectue la requête GET à l’API REST de 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é de la chaîne Bearer. La requête GET est ensuite envoyée à l’API translate , l’URL de la demande 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 translate envoie le code HTTP status 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 se situent dans la réponse. Pour obtenir la liste des réponses d’erreur possibles, consultez Messages de réponse sur 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 classique réussi :

<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 un XDocument instance, la valeur racine XML étant renvoyée à la méthode appelante pour l’affichage, comme illustré dans les captures d’écran suivantes :

Traduction de texte en allemand

Résumé

Cet article explique comment utiliser l’API Microsoft Translator Text pour traduire du texte d’une langue en texte d’une autre langue dans une Xamarin.Forms application. En plus de traduire du texte, l’API Microsoft Translator peut également transcrire la parole d’une langue en texte d’une autre langue.