Azure AI Translator API-k használata

Ebből az útmutatóból megtudhatja, hogyan használhatja a Translator szolgáltatás REST API-jait. Alapszintű példákkal kell kezdenie, és továbbléphet a fejlesztés során gyakran használt alapvető konfigurációs beállításokra, többek között a következőkre:

Előfeltételek

  • Azure-előfizetés – Ingyenes létrehozás

  • Többszolgáltatásos Azure AI- vagy Translator-erőforrás. Miután megkapta az Azure-előfizetését, hozzon létre egy egyszolgáltatásos vagy többszolgáltatásos erőforrást a Azure Portal a kulcs és a végpont lekéréséhez. Az üzembe helyezés után válassza az Erőforrás megnyitása lehetőséget.

  • Az ingyenes tarifacsomag (F0) használatával kipróbálhatja a szolgáltatást, és később fizetős szintre frissíthet éles környezetben.

  • Az alkalmazásnak a Translator szolgáltatáshoz való csatlakoztatásához szüksége van az erőforrás kulcsára és végpontjára. Később illessze be a kulcsot és a végpontot a kódmintákba. Ezeket az értékeket a Azure Portal Kulcsok és végpont lapon találja:

    Képernyőkép: Azure Portal kulcsok és végpontok lapja.

Fontos

Ne felejtse el eltávolítani a kulcsot a kódból, amikor elkészült, és soha ne tegye közzé nyilvánosan. Éles környezetben biztonságos módon tárolhatja és érheti el a hitelesítő adatait, például az Azure Key Vault. További információ : Az Azure AI-szolgáltatások biztonsága.

Fejlécek

Ha a REST API-val szeretné meghívni a Translator szolgáltatást, győződjön meg arról, hogy az egyes kérések a következő fejléceket tartalmazzák. Ne aggódjon, az alábbi szakaszokban a mintakódban szereplő fejléceket is belefoglaljuk.

Fejléc Érték Feltétel
Ocp-Apim-Subscription-Key A Translator szolgáltatáskulcsa a Azure Portal.
  • Kötelező
Ocp-Apim-Subscription-Region Az a régió, ahol az erőforrás létre lett hozva.
  • Az Azure AI többszolgáltatásos vagy regionális (földrajzi) erőforrás, például az USA nyugati régiója esetén szükséges.
  • Nem kötelező , ha egyszolgáltatásos Translator-erőforrást használ.
Tartalomtípus A hasznos adat tartalomtípusa. Az elfogadott érték az application/json vagy charset=UTF-8.
  • Szükséges
Tartalom hossza A kérelem törzsének hossza .
  • Választható
X-ClientTraceId Ügyfél által létrehozott GUID a kérés egyedi azonosításához. Ezt a fejlécet kihagyhatja, ha a nyomkövetési azonosítót a lekérdezési sztringbe egy ClientTraceId nevű lekérdezési paraméterrel adja meg.
  • Választható

Az alkalmazás beállítása

  1. Győződjön meg arról, hogy a Visual Studio IDE aktuális verziójával rendelkezik.

    Tipp

    Ha még nem ismerkedik a Visual Studióval, próbálja ki a Bevezetés a Visual Studio Learnbe modult.

  2. Nyissa meg a Visual Studiót.

  3. A Start lapon válassza az Új projekt létrehozása lehetőséget.

    Képernyőkép: A Visual Studio startablaka.

  4. Az Új projekt létrehozása lapon írja be a konzol kifejezést a keresőmezőbe. Válassza a Konzolalkalmazás sablont, majd a Tovább gombot.

    Képernyőkép: A Visual Studio új projektlapjának létrehozása.

  5. Az Új projekt konfigurálása párbeszédpanelen írja be translator_text_app a Projekt neve mezőbe. Hagyja bejelölve a "Megoldás és projekt elhelyezése ugyanabban a könyvtárban" jelölőnégyzetet, és válassza a Továbbgombot.

    Képernyőkép: A Visual Studio új projektkonfigurálási párbeszédpanelje.

  6. A További információ párbeszédpanelen győződjön meg arról, hogy a .NET 6.0 (hosszú távú támogatás) van kiválasztva. Hagyja bejelölve a "Ne használjon legfelső szintű utasításokat" jelölőnégyzetet, és válassza a Létrehozás lehetőséget.

    Képernyőkép: A Visual Studio további információk párbeszédpanelje.

A Newtonsoft.json csomag telepítése a NuGet használatával

  1. Kattintson a jobb gombbal a translator_quickstart projektre, és válassza a NuGet-csomagok kezelése... lehetőséget.

    A NuGet-csomag keresőmezőjének képernyőképe.

  2. Válassza a Tallózás lapot, és írja be a Newtonsoft kifejezést.

    Képernyőkép a NuGet-csomag telepítési ablakáról.

  3. Válassza a telepítés lehetőséget a megfelelő csomagkezelő ablakból a csomag projekthez való hozzáadásához.

    Képernyőkép a NuGet-csomag telepítési gombjáról.

Az alkalmazás összeállítása

Megjegyzés

  • A .NET 6-tól kezdődően a console sablont használó új projektek új programstílust hoznak létre, amely eltér a korábbi verzióktól.
  • Az új kimenet a legutóbbi C#-funkciókat használja, amelyek leegyszerűsítik az írandó kódot.
  • Az újabb verzió használatakor csak a metódus törzsét kell írnia Main . Nem kell legfelső szintű utasításokat, globális, direktívákat használó vagy implicit utasításokat megadnia.
  • További információt az Új C#-sablonok legfelső szintű utasítások létrehozásacímű témakörben talál.
  1. Nyissa meg a Program.cs fájlt.

  2. Törölje a már meglévő kódot, beleértve a sort Console.WriteLine("Hello World!")is. Másolja és illessze be a kódmintákat az alkalmazás Program.cs fájljába. Minden kódmintához frissítse a kulcs- és végpontváltozókat a Azure Portal Translator-példány értékeivel.

  3. Miután hozzáadott egy kívánt kódmintát az alkalmazáshoz, válassza a zöld start gombot a formRecognizer_quickstart mellett a program létrehozásához és futtatásához, vagy nyomja le az F5 billentyűt.

Képernyőkép a Program futtatása gombról a Visual Studióban.

Fontos

Az útmutatóban szereplő mintákhoz szigorúan kódolt kulcsok és végpontok szükségesek. Ne felejtse el eltávolítani a kulcsot a kódból, amikor elkészült, és soha ne tegye közzé nyilvánosan. Éles környezetben fontolja meg a hitelesítő adatok biztonságos tárolását és elérését. További információ :Azure AI-szolgáltatások biztonsága.

Szöveg lefordítása

A Translator szolgáltatás fő művelete a szöveg fordítása. Ebben a szakaszban létrehoz egy kérést, amely egyetlen forrást (from) vesz igénybe, és két kimenetet (to) biztosít. Ezután áttekintünk néhány paramétert, amelyek a kérés és a válasz módosítására is használhatók.

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

A sikeres hívás után a következő választ kell látnia:

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

A válaszfejlécek: x-metered-usage mezőben ellenőrizheti az egyes kérések felhasználását (a felszámított karakterek számát).

Nyelvfelismerés

Ha fordításra van szüksége, de nem ismeri a szöveg nyelvét, használhatja a nyelvészlelési műveletet. A forrásszöveg nyelvének azonosítására több módon is lehetőség van. Ebben a szakaszban megtudhatja, hogyan használhatja a nyelvfelismerést a végpont és a translatedetect végpont használatával.

Forrásnyelv észlelése fordítás közben

Ha nem adja meg a paramétert a from fordítási kérelemben, a Translator szolgáltatás megpróbálja észlelni a forrásszöveg nyelvét. A válaszban megkapja az észlelt nyelvet (language) és egy megbízhatósági pontszámot (score). Minél közelebb van a score értékhez 1.0, az azt jelenti, hogy nagyobb a megbízhatóság, hogy az észlelés helyes.

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

A sikeres hívás után a következő választ kell látnia:

[
   {
      "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"
         }
      ]
   }
]

Forrásnyelv észlelése fordítás nélkül

A Translator szolgáltatással fordítás nélkül is felismerhető a forrásszöveg nyelve. Ehhez használja a végpontot /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);
        }
    }
}

A /detect végpont válasza alternatív észleléseket tartalmaz, és jelzi, hogy a fordítás és az átírás támogatott-e az összes észlelt nyelv esetében. A sikeres hívás után a következő választ kell látnia:

[
   {
      "language":"de",

      "score":1.0,

      "isTranslationSupported":true,

      "isTransliterationSupported":false
   }
]

Szöveg átírása

Az átírás az a folyamat, amely során egy szót vagy kifejezést az egyik nyelv szkriptje (ábécéje) egy másik nyelvre konvertál fonetikus hasonlóság alapján. Az átírással például a "สวัสดี" () értéket "sawatdi" (thailatn) értékre konvertálhatja. Az átírásnak több módja is van. Ebben a szakaszban megtudhatja, hogyan használhatja a nyelvfelismerést a végpont és a translatetransliterate végpont használatával.

Fordítás közbeni átírás

Ha olyan nyelvre fordít, amely a forrástól eltérő ábécét (vagy fonefont) használ, előfordulhat, hogy átírásra van szüksége. Ebben a példában a "Hello" kifejezést angolról thai nyelvre fordítjuk le. Amellett, hogy a fordítást thai nyelven kapja meg, átírást kap a lefordított kifejezésről a latin ábécé használatával.

Ha átírást szeretne lekérni a translate végpontról, használja a paramétert toScript .

Megjegyzés

Az elérhető nyelvek és az átírási lehetőségek teljes listáját a nyelvi támogatás című témakörben találja.

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

A sikeres hívás után a következő válasznak kell megjelennie. Ne feledje, hogy a végpont válasza translate tartalmazza az észlelt forrásnyelvet megbízhatósági pontszámmal, a kimeneti nyelv ábécéjét használó fordítást és a latin ábécét használó átírást.

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

Fordítás nélküli átírás

A végpont használatával transliterate is lekérheti az átírást. Az átírási végpont használatakor paraméterekként meg kell adnia a forrásnyelvet (language), a forrásszkriptet/ábécét (fromScript), valamint a kimeneti szkriptet/ábécét (toScript). Ebben a példában a สวัสดีเพื่อน! วันนี้คุณทำอะไร.

Megjegyzés

Az elérhető nyelvek és az átírási lehetőségek teljes listáját a nyelvi támogatás című témakörben találja.

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

A sikeres hívás után a következő válasznak kell megjelennie. A végpont transliterate hívásától translate eltérően csak a és a text kimenetet scriptadja vissza.

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

      "script":"latn"
   }
]

Mondathossz lekérése

A Translator szolgáltatással lekérheti egy mondat vagy mondatsorozat karakterszámát. A rendszer tömbként adja vissza a választ, és minden egyes mondat karakterszámmal rendelkezik. A mondathosszokat a és breaksentence a translate végpontokkal is lekérheti.

Mondathossz lekérése fordítás közben

A végpont használatával a forrásszöveg és a translate fordítás kimenetének karakterszámát is lekérheti. A mondat hosszának (srcSenLen és transSenLen) visszaadásához a paramétert a includeSentenceLength következőre kell állítania 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);
        }
    }
}

A sikeres hívás után a következő válasznak kell megjelennie. Az észlelt forrásnyelven és fordításon kívül az észlelt mondatok karakterszámát is megkapja a forrás (srcSentLen) és a fordítás (transSentLen) esetében is.

[
   {
      "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
               ]
            }
         }
      ]
   }
]

Mondathossz lekérése fordítás nélkül

A Translator szolgáltatás lehetővé teszi a mondathossz lekérését fordítás nélkül is a breaksentence végpont használatával.

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

A sikeres hívás után a következő válasznak kell megjelennie. A végpont breaksentence hívásától translate eltérően csak a forrásszöveg karakterszámát adja vissza egy nevű sentLentömbben.

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

Szótárkeresés (alternatív fordítások)

A végponttal alternatív fordításokat kaphat egy szóhoz vagy kifejezéshez. Ha például a "napfény" szót a -ről enesa -re fordítja, ez a végpont a "luz solar," "" és "soleamientorayos solares", "" és "solinsolación" értéket adja vissza.

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

A sikeres hívás után a következő válasznak kell megjelennie. Vizsgáljuk meg közelebbről a választ, mivel a JSON összetettebb, mint a cikkben szereplő néhány példa. A translations tömb tartalmazza a fordítások listáját. A tömb minden objektuma tartalmaz egy megbízhatósági pontszámot (confidence), a végfelhasználói megjelenítésre optimalizált szöveget (displayTarget), a normalizált szöveget (normalizedText), a beszédrészt (posTag), valamint az előző fordítással kapcsolatos információkat (backTranslations). A válaszról további információt a Szótárkeresés című témakörben talál.

[
   {
      "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
               }
            ]
         }
      ]
   }
]

Szótári példák (kontextusban történő fordítások)

Miután elvégezte a szótárkeresést, adja át a forrás- és fordítási szöveget a dictionary/examples végpontnak, hogy lekérje azokat a példákat, amelyek egy mondat vagy kifejezés kontextusában mindkét kifejezést megjelenítik. Az előző példára építve a és a normalizedTextnormalizedTarget függvényt használja a szótárkeresési válaszban a és translation a értékkénttext. A forrásnyelv (from) és a kimeneti cél (to) paramétereinek megadása kötelező.

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

A sikeres hívás után a következő válasznak kell megjelennie. A válaszról további információt a Szótárkeresés című témakörben talál.

[
   {
      "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."
         }
      ]
   }
]

Hibaelhárítás

Gyakori HTTP-állapotkódok

HTTP-állapotkód Leírás Lehetséges ok
200 OK A kérés sikeres volt.
400 Hibás kérés A kötelező paraméter hiányzik, üres vagy null értékű. Vagy a kötelező vagy nem kötelező paraméternek átadott érték érvénytelen. Gyakori probléma a túl hosszú fejléc.
401 Nem engedélyezett A kérelem nincs engedélyezve. Ellenőrizze, hogy a kulcs vagy a jogkivonat érvényes-e, és hogy a megfelelő régióban van-e. Lásd még:Hitelesítés.
429 Túl sok kérés Túllépte az előfizetéséhez engedélyezett kérelmek kvótáját vagy arányát.
502 Hibás átjáró Hálózati vagy kiszolgálóoldali probléma. Érvénytelen fejléceket is jelezhet.

Java-felhasználók

Ha csatlakozási problémákat tapasztal, előfordulhat, hogy a TLS-/SSL-tanúsítvány lejárt. A probléma megoldásához telepítse a DigiCertGlobalRootG2.crt elemet a magántárolóba.

Következő lépések