Utiliser les API Azure AI Traducteur

Dans ce guide pratique, vous apprenez à utiliser l’API REST du service Translator. Vous commencez avec des exemples basiques, puis vous passez à quelques options de configuration principales couramment utilisées pendant le développement, notamment :

Prérequis

  • Abonnement Azure - En créer un gratuitement

  • Une ressource multiservice Azure AI ou Translator. Une fois que vous avez votre abonnement Azure, créez une ressource monoservice ou multiservice dans le portail Azure pour obtenir votre clé et votre point de terminaison. À la fin du déploiement, sélectionnez Accéder à la ressource.

  • Vous pouvez utiliser le niveau tarifaire Gratuit (F0) pour tester le service, puis passer par la suite à un niveau payant pour la production.

  • Vous aurez besoin de la clé et du point de terminaison de la ressource pour connecter votre application au service Translator. Plus loin, vous collez votre clé et votre point de terminaison dans les exemples de code. Vous pouvez trouver ces valeurs sur la page Clés et Points de terminaison du portail Azure :

    Capture d'écran : Page des clés et des points de terminaison du portail Azure.

Important

N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez la sécurité d’Azure AI services.

headers

Pour appeler le service Translator par le biais de l’API REST, vous devez vérifier que les en-têtes suivants sont inclus dans chaque requête. Ne vous inquiétez pas, nous incluons ces en-têtes dans l’exemple de code dans les sections suivantes.

En-tête Valeur Condition
Ocp-Apim-Subscription-Key Votre clé de service Traducteur à partir du Portail Azure.
  • Obligatoire
Ocp-Apim-Subscription-Region Région dans laquelle votre ressource a été créée.
  • Obligatoire lors de l’utilisation d’une ressource multiservice Azure AI ou d’une ressource régionale (géographique) tel que USA Ouest.
  • Facultatif lorsque vous utilisez une ressource Translator monoservice.
Content-Type Type de contenu de la charge utile. Les valeurs acceptées sont application/json ou charset=UTF-8.
  • Obligatoire
Content-Length Longueur du corps de la demande.
  • Facultatif
X-ClientTraceId GUID généré par le client pour identifier de façon unique la demande. Vous pouvez omettre cet en-tête si vous incluez l’ID de trace dans la chaîne de requête à l’aide d’un paramètre de requête nommé ClientTraceId.
  • Facultatif

Configuration de votre application

  1. Vérifiez que la version actuelle de Visual Studio IDE est installée.

    Conseil

    Si vous débutez avec Visual Studio, essayez le module Learn Introduction à Visual Studio.

  2. Ouvrez Visual Studio.

  3. Dans la page de démarrage, choisissez Créer un projet.

    Capture d’écran : fenêtre de démarrage Visual Studio

  4. Dans la page Créer un nouveau projet, entrez console dans la zone de recherche. Choisissez le modèle Application console, puis choisissez Suivant.

    Capture d'écran : La page de création d'un nouveau projet de Visual Studio.

  5. Dans la fenêtre de dialogue Configurer votre nouveau projet, entrez translator_text_app dans la zone Nom de projet. Laissez la case à cocher « Placer la solution et le projet dans le même répertoire » désactivée, puis sélectionnez Suivant.

    Capture d'écran : La fenêtre de dialogue de configuration d'un nouveau projet de Visual Studio.

  6. Dans la fenêtre de dialogue Informations supplémentaires, vérifiez que .NET 6.0 (Support à long terme) est sélectionné. Laissez la case à cocher « Ne pas utiliser d’instructions de niveau supérieur » décochée et sélectionnez Créer.

    Capture d'écran : La fenêtre de dialogue d'informations supplémentaires de Visual Studio.

Installer le package Newtonsoft.json avec NuGet

  1. Cliquez avec le bouton droit sur votre projet translator_quickstart et sélectionnez Gérer les packages NuGet.

    Capture d’écran de la zone de recherche des packages NuGet.

  2. Sélectionnez l’onglet Parcourir et tapez Newtonsoft.

    Capture d’écran de la fenêtre d’installation des packages NuGet.

  3. Sélectionnez Installer dans la fenêtre du gestionnaire de package appropriée pour ajouter le package à votre projet.

    Capture d’écran du bouton d’installation des packages NuGet.

Générer votre application

Notes

  • À compter de .NET 6, de nouveaux projets utilisant le modèle console génèrent un nouveau style de programme qui diffère des versions précédentes.
  • La nouvelle sortie utilise des fonctionnalités C# récentes qui simplifient le code que vous devez écrire.
  • Lorsque vous utilisez la version la plus récente, vous devez uniquement écrire le corps de la Main méthode. Vous n’avez pas besoin d’inclure des instructions de niveau supérieur, des directives globales à l’aide de directives ou des directives implicites.
  • Pour plus d’informations, consulteznouveaux modèles C# générer des instructions de niveau supérieur.
  1. Ouvrez le fichier Program.cs.

  2. Supprimez le code préexistant, y compris la ligne Console.WriteLine("Hello World!"). Copiez et collez les exemples de code dans le fichier Program.cs de votre application. Pour chaque exemple de code, veillez à mettre à jour les variables de clé et de point de terminaison avec les valeurs de votre instance Translator dans le Portail Azure.

  3. Une fois que vous avez ajouté un exemple de code à votre application, choisissez le bouton vert Démarrer en regard de formRecognizer_quickstart pour générer et exécuter votre programme, ou appuyez sur F5.

Capture d’écran du bouton d’exécution du programme dans Visual Studio.

Important

Les exemples de ce guide nécessitent des clés et des points de terminaison codés en dur. N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, envisagez d’utiliser une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Pour plus d’informations, veuillez consulterSécurité d’Azure AI services.

Traduire le texte

Traduire du texte est l’opération fondamentale du service Translator. Dans cette section, vous générez une requête qui prend une source unique (from) et fournit deux sorties (to). Ensuite, nous examinons quelques paramètres que vous pouvez utiliser pour ajuster à la fois la requête et la réponse.

using System.Text;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
    // required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // Input and output languages are defined as parameters.
        string route = "/translate?api-version=3.0&from=en&to=sw&to=it";
        string textToTranslate = "Hello, friend! What did you do today?";
        object[] body = new object[] { new { Text = textToTranslate } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);
            // location required if you're using a multi-service or regional (not global) resource.
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante :

[
   {
      "translations":[
         {
            "text":"Halo, rafiki! Ulifanya nini leo?",
            "to":"sw"
         },
         {
            "text":"Ciao, amico! Cosa hai fatto oggi?",
            "to":"it"
         }
      ]
   }
]

Vous pouvez vérifier la consommation (le nombre de caractères facturés) pour chaque requête dans le champ en-têtes de réponse : x-metered-usage.

Détecter la langue

Si vous avez besoin d’une traduction, mais que vous ne connaissez pas la langue du texte, vous pouvez utiliser l’opération de détection de la langue. Il existe plusieurs façons d’identifier la langue du texte source. Dans cette section, vous apprenez à utiliser la détection de la langue en utilisant le point de terminaison translate et le point de terminaison detect.

Détecter la langue source pendant la traduction

Si vous n’incluez pas le paramètre from dans votre requête de traduction, le service Translator essaie de détecter la langue du texte source. Dans la réponse, vous obtenez la langue détectée (language) et un score de confiance (score). Plus le score est proche de 1.0, plus la confiance est grande dans la fiabilité de la détection.

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
// required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // Output languages are defined as parameters, input language detected.
        string route = "/translate?api-version=3.0&to=en&to=it";
        string textToTranslate = "Halo, rafiki! Ulifanya nini leo?";
        object[] body = new object[] { new { Text = textToTranslate } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            request.Method = HttpMethod.Post;
            request.RequestUri = new Uri(endpoint + route);
            request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
            // location required if you're using a multi-service or regional (not global) resource. 
            request.Headers.Add("Ocp-Apim-Subscription-Key", key);
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante :

[
   {
      "detectedLanguage":{
         "language":"sw",
         "score":0.8
      },
      "translations":[
         {
            "text":"Hello friend! What did you do today?",
            "to":"en"
         },
         {
            "text":"Ciao amico! Cosa hai fatto oggi?",
            "to":"it"
         }
      ]
   }
]

Détecter la langue source sans traduction

Il est possible d’utiliser le service Translator pour détecter la langue du texte source sans effectuer de traduction. Pour cela, vous utilisez le point de terminaison /detect.

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
// required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // Just detect language
        string route = "/detect?api-version=3.0";
        string textToLangDetect = "Hallo Freund! Was hast du heute gemacht?";
        object[] body = new object[] { new { Text = textToLangDetect } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

La réponse du point de terminaison /detect inclut d’autres détections et indique si la traduction et la translittération sont prises en charge pour toutes les langues détectées. Quand l’appel aboutit, vous devez voir la réponse suivante :

[
   {
      "language":"de",

      "score":1.0,

      "isTranslationSupported":true,

      "isTransliterationSupported":false
   }
]

Translittérer du texte

La translittération est le processus de conversion d’un mot ou d’une expression depuis l’écriture (l’alphabet) d’une langue vers une autre en fonction de similarités phonétiques. Par exemple, vous pouvez utiliser la translittération pour convertir « สวัสดี » (thai) en « sawatdi » (latn). Il existe plusieurs façons d’effectuer une translittération. Dans cette section, vous apprenez à utiliser la détection de la langue en utilisant le point de terminaison translate et le point de terminaison transliterate.

Translittérer pendant la traduction

Si vous traduisez dans une langue qui utilise un autre alphabet (ou d’autres phonèmes) que votre source, une translittération peut s’avérer nécessaire. Dans cet exemple, nous traduisons « Hello » de l’anglais au thaï. En plus d’obtenir la traduction en thaï, vous obtenez une translittération du mot traduit à l’aide de l’alphabet latin.

Pour obtenir une translittération à partir du point de terminaison translate, utilisez le paramètre toScript.

Notes

Pour obtenir la liste complète des langues et options de translittération disponibles, consultez Langues prises en charge.

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
   // required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // Output language defined as parameter, with toScript set to latn
        string route = "/translate?api-version=3.0&to=th&toScript=latn";
        string textToTransliterate = "Hello, friend! What did you do today?";
        object[] body = new object[] { new { Text = textToTransliterate } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante. N’oubliez pas que la réponse du point de terminaison translate comprend la langue source détectée avec un score de confiance, une traduction qui utilise l’alphabet de la langue de sortie et une translittération à l’aide de l’alphabet latin.

[
  {
    "detectedLanguage": {
      "language": "en",
      "score": 1
    },
    "translations": [
      {
        "text": "หวัดดีเพื่อน! วันนี้เธอทำอะไรไปบ้าง ",
        "to": "th",
        "transliteration": {
          "script": "Latn",
          "text": "watdiphuean! wannithoethamaraipaiang"
        }
      }
    ]
  }
]

Translittérer sans traduction

Vous pouvez également utiliser le point de terminaison transliterate pour obtenir une translittération. Quand vous utilisez le point de terminaison de translittération, vous devez fournir la langue source (language), l’écriture/alphabet source (fromScript) et l’écriture/alphabet de sortie (toScript) en tant que paramètres. Dans cet exemple, nous allons obtenir la translittération de สวัสดีเพื่อน! วันนี้คุณทำอะไร.

Notes

Pour obtenir la liste complète des langues et options de translittération disponibles, consultez Langues prises en charge.

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
   // required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // For a complete list of options, see API reference.
        // Input and output languages are defined as parameters.
        string route = "/transliterate?api-version=3.0&language=th&fromScript=thai&toScript=latn";
        string textToTransliterate = "สวัสดีเพื่อน! วันนี้คุณทำอะไร";
        object[] body = new object[] { new { Text = textToTransliterate } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);
            // location required if you're using a multi-service or regional (not global) resource.
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante. Contrairement à l’appel au point de terminaison translate, transliterate retourne uniquement le text et la sortie script.

[
   {
      "text":"sawatdiphuean! wannikhunthamarai",

      "script":"latn"
   }
]

Obtenir la longueur de phrase

Avec le service Translator, vous pouvez obtenir le nombre de caractères dans une phrase ou une série de phrases. La réponse est retournée sous la forme d’un tableau, avec le nombre de caractères dans chaque phrase détectée. Vous pouvez obtenir les longueurs de phrase avec les points de terminaison translate et breaksentence .

Obtenir la longueur de phrase pendant la traduction

Vous pouvez obtenir le nombre de caractères dans le texte source et dans la sortie traduite à l’aide du point de terminaison translate. Pour retourner la longueur de phrase (srcSenLen et transSenLen), vous devez définir le paramètre includeSentenceLength sur True.

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
   // required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // Include sentence length details.
        string route = "/translate?api-version=3.0&to=es&includeSentenceLength=true";
        string sentencesToCount =
                "Can you tell me how to get to Penn Station? Oh, you aren't sure? That's fine.";
        object[] body = new object[] { new { Text = sentencesToCount } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);
            // location required if you're using a multi-service or regional (not global) resource.
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante. En plus de la langue source détectée et de la traduction, vous obtenez le nombre de caractères dans chaque phrase détectée pour la source (srcSentLen) et la traduction (transSentLen).

[
   {
      "detectedLanguage":{
         "language":"en",
         "score":1.0
      },
      "translations":[
         {
            "text":"¿Puedes decirme cómo llegar a Penn Station? Oh, ¿no estás seguro? Está bien.",
            "to":"es",
            "sentLen":{
               "srcSentLen":[
                  44,
                  21,
                  12
               ],
               "transSentLen":[
                  44,
                  22,
                  10
               ]
            }
         }
      ]
   }
]

Obtenir la longueur de phrase sans traduction

Le service Translator vous permet également de demander la longueur de phrase sans traduction à l’aide du point de terminaison breaksentence.

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
   // required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // Only include sentence length details.
        string route = "/breaksentence?api-version=3.0";
        string sentencesToCount =
                "Can you tell me how to get to Penn Station? Oh, you aren't sure? That's fine.";
        object[] body = new object[] { new { Text = sentencesToCount } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);
            // location required if you're using a multi-service or regional (not global) resource.
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante. Contrairement à l’appel au point de terminaison translate, breaksentence retourne uniquement le nombre de caractères dans le texte source dans un tableau appelé sentLen.

[
   {
      "detectedLanguage":{
         "language":"en",
         "score":1.0
      },
      "sentLen":[
         44,
         21,
         12
      ]
   }
]

Recherche dans le dictionnaire (autres traductions)

Avec le point de terminaison, vous pouvez obtenir d’autres traductions d’un mot ou d’une expression. Par exemple, lors de la traduction du mot « sunshine » de en vers es, ce point de terminaison retourne « luz solar », « rayos solares », « soleamiento », « sol » et « insolación ».

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
   // required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // See many translation options
        string route = "/dictionary/lookup?api-version=3.0&from=en&to=es";
        string wordToTranslate = "sunlight";
        object[] body = new object[] { new { Text = wordToTranslate } };
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);
            // location required if you're using a multi-service or regional (not global) resource.
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante. Examinons la réponse plus étroitement car le code JSON est plus complexe que certains des autres exemples cités dans cet article. Le tableau translations comprend la liste des traductions. Chaque objet de ce tableau comprend un score de confiance (confidence), le texte optimisé pour l’affichage à l’utilisateur final (displayTarget), le texte normalisé (normalizedText), la nature grammaticale (posTag) et des informations sur la traduction précédente (backTranslations). Pour plus d’informations sur la réponse, consultez Recherche dans le dictionnaire.

[
   {
      "normalizedSource":"sunlight",
      "displaySource":"sunlight",
      "translations":[
         {
            "normalizedTarget":"luz solar",
            "displayTarget":"luz solar",
            "posTag":"NOUN",
            "confidence":0.5313,
            "prefixWord":"",
            "backTranslations":[
               {
                  "normalizedText":"sunlight",
                  "displayText":"sunlight",
                  "numExamples":15,
                  "frequencyCount":702
               },
               {
                  "normalizedText":"sunshine",
                  "displayText":"sunshine",
                  "numExamples":7,
                  "frequencyCount":27
               },
               {
                  "normalizedText":"daylight",
                  "displayText":"daylight",
                  "numExamples":4,
                  "frequencyCount":17
               }
            ]
         },
         {
            "normalizedTarget":"rayos solares",
            "displayTarget":"rayos solares",
            "posTag":"NOUN",
            "confidence":0.1544,
            "prefixWord":"",
            "backTranslations":[
               {
                  "normalizedText":"sunlight",
                  "displayText":"sunlight",
                  "numExamples":4,
                  "frequencyCount":38
               },
               {
                  "normalizedText":"rays",
                  "displayText":"rays",
                  "numExamples":11,
                  "frequencyCount":30
               },
               {
                  "normalizedText":"sunrays",
                  "displayText":"sunrays",
                  "numExamples":0,
                  "frequencyCount":6
               },
               {
                  "normalizedText":"sunbeams",
                  "displayText":"sunbeams",
                  "numExamples":0,
                  "frequencyCount":4
               }
            ]
         },
         {
            "normalizedTarget":"soleamiento",
            "displayTarget":"soleamiento",
            "posTag":"NOUN",
            "confidence":0.1264,
            "prefixWord":"",
            "backTranslations":[
               {
                  "normalizedText":"sunlight",
                  "displayText":"sunlight",
                  "numExamples":0,
                  "frequencyCount":7
               }
            ]
         },
         {
            "normalizedTarget":"sol",
            "displayTarget":"sol",
            "posTag":"NOUN",
            "confidence":0.1239,
            "prefixWord":"",
            "backTranslations":[
               {
                  "normalizedText":"sun",
                  "displayText":"sun",
                  "numExamples":15,
                  "frequencyCount":20387
               },
               {
                  "normalizedText":"sunshine",
                  "displayText":"sunshine",
                  "numExamples":15,
                  "frequencyCount":1439
               },
               {
                  "normalizedText":"sunny",
                  "displayText":"sunny",
                  "numExamples":15,
                  "frequencyCount":265
               },
               {
                  "normalizedText":"sunlight",
                  "displayText":"sunlight",
                  "numExamples":15,
                  "frequencyCount":242
               }
            ]
         },
         {
            "normalizedTarget":"insolación",
            "displayTarget":"insolación",
            "posTag":"NOUN",
            "confidence":0.064,
            "prefixWord":"",
            "backTranslations":[
               {
                  "normalizedText":"heat stroke",
                  "displayText":"heat stroke",
                  "numExamples":3,
                  "frequencyCount":67
               },
               {
                  "normalizedText":"insolation",
                  "displayText":"insolation",
                  "numExamples":1,
                  "frequencyCount":55
               },
               {
                  "normalizedText":"sunstroke",
                  "displayText":"sunstroke",
                  "numExamples":2,
                  "frequencyCount":31
               },
               {
                  "normalizedText":"sunlight",
                  "displayText":"sunlight",
                  "numExamples":0,
                  "frequencyCount":12
               },
               {
                  "normalizedText":"solarization",
                  "displayText":"solarization",
                  "numExamples":0,
                  "frequencyCount":7
               },
               {
                  "normalizedText":"sunning",
                  "displayText":"sunning",
                  "numExamples":1,
                  "frequencyCount":7
               }
            ]
         }
      ]
   }
]

Exemples du dictionnaire (traductions en contexte)

Une fois que vous avez effectué une recherche dans le dictionnaire, passez le texte source et le texte de traduction au point de terminaison dictionary/examples pour obtenir une liste d’exemples qui montrent les deux termes dans le contexte d’une phrase ou d’une expression. En reprenant l’exemple précédent, vous utilisez les valeurs normalizedText et normalizedTarget données dans la réponse de la recherche dans le dictionnaire en tant que text et translation respectivement. Les paramètres de langue source (from) et de cible de sortie (to) sont obligatoires.

using System;
using Newtonsoft.Json; // Install Newtonsoft.Json with NuGet

class Program
{
    private static readonly string key = "<YOUR-TRANSLATOR-KEY>";
    private static readonly string endpoint = "https://api.cognitive.microsofttranslator.com";

    // location, also known as region.
   // required if you're using a multi-service or regional (not global) resource. It can be found in the Azure portal on the Keys and Endpoint page.
    private static readonly string location = "<YOUR-RESOURCE-LOCATION>";

    static async Task Main(string[] args)
    {
        // See examples of terms in context
        string route = "/dictionary/examples?api-version=3.0&from=en&to=es";
        object[] body = new object[] { new { Text = "sunlight",  Translation = "luz solar" } } ;
        var requestBody = JsonConvert.SerializeObject(body);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            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);
            // location required if you're using a multi-service or regional (not global) resource.
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

            // Send the request and get response.
            HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
            // Read response as a string.
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
    }
}

Quand l’appel aboutit, vous devez voir la réponse suivante. Pour plus d’informations sur la réponse, consultez Recherche dans le dictionnaire.

[
   {
      "normalizedSource":"sunlight",
      "normalizedTarget":"luz solar",
      "examples":[
         {
            "sourcePrefix":"You use a stake, silver, or ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"Se usa una estaca, plata, o ",
            "targetTerm":"luz solar",
            "targetSuffix":"."
         },
         {
            "sourcePrefix":"A pocket of ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"Una bolsa de ",
            "targetTerm":"luz solar",
            "targetSuffix":"."
         },
         {
            "sourcePrefix":"There must also be ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"También debe haber ",
            "targetTerm":"luz solar",
            "targetSuffix":"."
         },
         {
            "sourcePrefix":"We were living off of current ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"Estábamos viviendo de la ",
            "targetTerm":"luz solar",
            "targetSuffix":" actual."
         },
         {
            "sourcePrefix":"And they don't need unbroken ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"Y ellos no necesitan ",
            "targetTerm":"luz solar",
            "targetSuffix":" ininterrumpida."
         },
         {
            "sourcePrefix":"We have lamps that give the exact equivalent of ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"Disponemos de lámparas que dan el equivalente exacto de ",
            "targetTerm":"luz solar",
            "targetSuffix":"."
         },
         {
            "sourcePrefix":"Plants need water and ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"Las plantas necesitan agua y ",
            "targetTerm":"luz solar",
            "targetSuffix":"."
         },
         {
            "sourcePrefix":"So this requires ",
            "sourceTerm":"sunlight",
            "sourceSuffix":".",
            "targetPrefix":"Así que esto requiere ",
            "targetTerm":"luz solar",
            "targetSuffix":"."
         },
         {
            "sourcePrefix":"And this pocket of ",
            "sourceTerm":"sunlight",
            "sourceSuffix":" freed humans from their ...",
            "targetPrefix":"Y esta bolsa de ",
            "targetTerm":"luz solar",
            "targetSuffix":", liberó a los humanos de ..."
         },
         {
            "sourcePrefix":"Since there is no ",
            "sourceTerm":"sunlight",
            "sourceSuffix":", the air within ...",
            "targetPrefix":"Como no hay ",
            "targetTerm":"luz solar",
            "targetSuffix":", el aire atrapado en ..."
         },
         {
            "sourcePrefix":"The ",
            "sourceTerm":"sunlight",
            "sourceSuffix":" shining through the glass creates a ...",
            "targetPrefix":"La ",
            "targetTerm":"luz solar",
            "targetSuffix":" a través de la vidriera crea una ..."
         },
         {
            "sourcePrefix":"Less ice reflects less ",
            "sourceTerm":"sunlight",
            "sourceSuffix":", and more open ocean ...",
            "targetPrefix":"Menos hielo refleja menos ",
            "targetTerm":"luz solar",
            "targetSuffix":", y más mar abierto ..."
         },
         {
            "sourcePrefix":"",
            "sourceTerm":"Sunlight",
            "sourceSuffix":" is most intense at midday, so ...",
            "targetPrefix":"La ",
            "targetTerm":"luz solar",
            "targetSuffix":" es más intensa al mediodía, por lo que ..."
         },
         {
            "sourcePrefix":"... capture huge amounts of ",
            "sourceTerm":"sunlight",
            "sourceSuffix":", so fueling their growth.",
            "targetPrefix":"... capturan enormes cantidades de ",
            "targetTerm":"luz solar",
            "targetSuffix":" que favorecen su crecimiento."
         },
         {
            "sourcePrefix":"... full height, giving more direct ",
            "sourceTerm":"sunlight",
            "sourceSuffix":" in the winter.",
            "targetPrefix":"... altura completa, dando más ",
            "targetTerm":"luz solar",
            "targetSuffix":" directa durante el invierno."
         }
      ]
   }
]

Dépannage

Codes d'état HTTP courants

Code d'état HTTP Description Raison possible
200 OK La demande a abouti.
400 Demande incorrecte Un paramètre obligatoire est manquant, vide ou présente une valeur Null. Il est également possible que la valeur transmise à un paramètre obligatoire ou facultatif ne soit pas valide. Ce problème est généralement dû à un en-tête trop long.
401 Non autorisé La requête n’est pas autorisée. Vérifiez que votre clé ou votre jeton est valide et dans la région appropriée. Voir aussiAuthentification.
429 Trop de demandes Vous avez dépassé le quota ou le taux de requêtes autorisé pour votre abonnement.
502 Passerelle incorrecte Problème de réseau ou côté serveur. Cette erreur peut également signaler des en-têtes non valides.

Utilisateurs de Java

Si vous rencontrez des problèmes de connexion, il est possible que votre certificat TLS/SSL ait expiré. Pour résoudre ce problème, installez DigiCertGlobalRootG2.crt dans votre magasin privé.

Étapes suivantes