Megosztás a következőn keresztül:


Azure AI Translator API-k használata

Ebben az útmutatóban megismerheti a Translator szolgáltatás REST API-jait. Alapszintű példákkal kezd, és a fejlesztés során gyakran használt alapvető konfigurációs beállításokra lép, például:

Előfeltételek

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

  • Többszolgáltatásos Azure AI- vagy Translator-erőforrás. Ha már rendelkezik Azure-előfizetéssel, hozzon létre egy egy vagy többszolgáltatásos erőforrást az Azure Portalon a kulcs és a végpont lekéréséhez. Az üzembe helyezés után válassza az Ugrás az erőforrásra lehetőséget.

  • Az ingyenes tarifacsomag (F0) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre az é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 beillesztheti a kulcsot és a végpontot a kódmintákba. Ezeket az értékeket az Azure Portal Kulcsok és végpont lapján találja:

    Képernyőkép: Azure Portal-kulcsok és végpontoldal.

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 Vaultot. További információkért tekintse meg az Azure AI-szolgáltatások biztonságát.

Fejlécek

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

Fejléc Érték Feltétel
Ocp-Apim-Subscription-Key A Translator szolgáltatáskulcsa az Azure Portalról.
  • Szükséges
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ő egyszolgáltatásos Translator-erőforrás használata esetén.
Tartalomtípus A hasznos adat tartalomtípusa. Az elfogadott érték az application/json vagy charset=UTF-8.
  • Szükséges
Tartalomhossz 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 Visual Studio Learn bevezetési modulját.

  2. Nyissa meg a Visual Studiót.

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

    Képernyőkép: Visual Studio startablak.

  4. Az Új projekt létrehozása lapon adja meg a konzolt a keresőmezőbe. Válassza ki a konzolalkalmazás-sablont, majd válassza 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ább gombot.

    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) ki van jelölve. 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 NuGettel

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

    Képernyőkép a NuGet-csomag keresőmezőjéről.

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

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

  3. Válassza a telepítést 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

Feljegyzés

  • A .NET 6-tól kezdve 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 Main kell megírnia. Nem kell felső szintű utasításokat, globális irányelveket vagy implicit irányelveket használnia.
  • További információ: Új C#-sablonok legfelső szintű utasítások létrehozása.
  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 az 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 rögzített 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 alapvető művelete a szöveg fordítása. Ebben a szakaszban egy olyan kérést hoz létre, 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);
        }
    }
}

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écekben ellenőrizheti az egyes kérések használatát (a felhasznált karakterek számát): x-metered-usage mező.

Nyelv felismerése

Ha fordításra van szüksége, de nem ismeri a szöveg nyelvét, használhatja a nyelvfelismeré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álhat nyelvfelismerést a végpont és a translate detect 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 score van, 1.0annál 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);
        }
    }
}

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 a végpontot /detect kell használnia.

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 is tartalmaz, és jelzi, hogy a fordítás és az átírás támogatott-e az összes észlelt nyelv esetében. 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 a fonetikai hasonlóság alapján. Az átírással például átalakíthatja a "สวัสดี" () értéket "sawatdi" (thailatn) értékre. Az átírásnak több módja is van. Ebben a szakaszban megtudhatja, hogyan használhat nyelvfelismerést a végpont és a translate transliterate 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 fonetikus betűt) használ, szükség lehet az átírásra. Ebben a példában angolról thai nyelvre fordítjuk a "Hello" szöveget. Amellett, hogy a fordítást thai nyelven kapja, a lefordított kifejezés átírását is megkapja 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 .

Feljegyzés

Az elérhető nyelvek és az átírási lehetőségek teljes listáját a nyelvi támogatásban 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);
        }
    }
}

Sikeres hívás után a következő választ kell látnia. 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éterké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 สวัสดีเพื่อน átírását fogjuk megkapni! วันนี้คุณทำอะไร.

Feljegyzés

Az elérhető nyelvek és az átírási lehetőségek teljes listáját a nyelvi támogatásban 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);
        }
    }
}

Sikeres hívás után a következő választ kell látnia. A végpont transliterate hívásával translate ellentétben csak a kimenetet é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 mondathosszok a végpontokkal translate együtt breaksentence is lekérhetők.

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

A végpont használatával a forrásszöveg és a fordítás kimenetének karakterszámát translate is lekérheti. A mondathossz (srcSenLen és transSenLen) visszaadásához a paramétert a includeSentenceLength következőre Truekell állítania: .

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

Sikeres hívás után a következő választ kell látnia. Az észlelt forrásnyelven és fordításon kívül a forrás () és a fordítás (srcSentLentransSentLen) minden észlelt mondatának karakterszámát is megkapja.

[
   {
      "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 ké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);
        }
    }
}

Sikeres hívás után a következő választ kell látnia. A végpont breaksentence hívásától translate eltérően csak a forrásszöveg karakterszámát adja vissza egy úgynevezett sentLentömbben.

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

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

A végponton alternatív fordításokat kaphat egy szóhoz vagy kifejezéshez. Ha például a "napfény" szót a "esnapfény" szóra en fordítja, ez a végpont "luz solar," "rayos solares" és "", "soleamientosol" és "insolación" értéket ad 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);
        }
    }
}

Sikeres hívás után a következő választ kell látnia. 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 a fordítások listáját tartalmazza. A tömb minden objektuma tartalmaz 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 (backTranslations) kapcsolatos információkat. 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 (fordítások a kontextusban)

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, és szerezze be 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 normalizedText normalizedTarget szótár keresési válaszát text használja a következőképpen és translation annak megfelelően. A forrásnyelv (from) és a kimeneti cél (to) paraméterei szükségesek.

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

Sikeres hívás után a következő választ kell látnia. 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 Hiányzik egy kötelező paraméter, üres vagy null. 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érés 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-t a privát áruházba.

Következő lépések