Použití rozhraní API služby Azure AI Translator

V tomto návodu se naučíte používat rozhraní REST API služby Translator. Začnete se základními příklady a přesunete se k některým možnostem základní konfigurace, které se běžně používají při vývoji, mezi které patří:

Požadavky

  • Předplatné Azure – Vytvořte si ho zdarma

  • Prostředek služby Azure AI s více službami nebo službou Translator. Jakmile budete mít předplatné Azure, vytvořte v Azure Portal prostředek s jednou nebovíce službami, abyste získali klíč a koncový bod. Po nasazení vyberte Přejít k prostředku.

  • K vyzkoušení služby můžete použít bezplatnou cenovou úroveň (F0) a později upgradovat na placenou úroveň pro produkční prostředí.

  • K připojení aplikace ke službě Translator potřebujete klíč a koncový bod z prostředku. Později do ukázek kódu vložíte klíč a koncový bod. Tyto hodnoty najdete na stránce Azure Portal Klíče a koncový bod:

    Snímek obrazovky: Azure Portal klíče a stránku koncového bodu

Důležité

Až budete hotovi, nezapomeňte klíč z kódu odebrat a nikdy ho nezveřejníte. V produkčním prostředí použijte zabezpečený způsob ukládání a přístupu k přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v tématuZabezpečení služeb Azure AI.

Hlavičky

Pokud chcete volat službu Translator prostřednictvím rozhraní REST API, musíte se ujistit, že každý požadavek obsahuje následující hlavičky. Nemějte obavy, hlavičky zahrneme do ukázkového kódu v následujících částech.

Hlavička Hodnota Podmínka
Ocp-Apim-Subscription-Key Klíč služby Translator z Azure Portal.
  • Požadované
Ocp-Apim-Subscription-Region Oblast, ve které byl prostředek vytvořen.
  • Vyžaduje se při použití prostředku azure AI s více službami nebo regionálním (geografickým) prostředkem, jako je USA – západ.
  • Volitelné při použití prostředku Translator s jednou službou.
Typ obsahu Typ obsahu datové části. Přijatá hodnota je application/json nebo charset=UTF-8.
  • Požadované
Délka obsahu Délka textu požadavku.
  • Volitelné
X-ClientTraceId Identifikátor GUID vygenerovaný klientem pro jedinečnou identifikaci požadavku. Tuto hlavičku můžete vynechat, pokud do řetězce dotazu zahrnete ID trasování pomocí parametru dotazu s názvem ClientTraceId.
  • Volitelné

Nastavte aplikaci

  1. Ujistěte se, že máte aktuální verzi integrovaného vývojového prostředí sady Visual Studio.

    Tip

    Pokud se sadou Visual Studio začínáte, vyzkoušejte modul Learn Úvod do sady Visual Studio .

  2. Otevřete sadu Visual Studio.

  3. Na úvodní stránce zvolte Vytvořit nový projekt.

    Snímek obrazovky: Úvodní okno sady Visual Studio

  4. Na stránce Create a new project (Vytvořit nový projekt) zadejte do vyhledávacího pole console (konzola ). Zvolte šablonu Konzolová aplikace a pak zvolte Další.

    Snímek obrazovky: Stránka pro vytvoření nového projektu v sadě Visual Studio

  5. V dialogovém okně Konfigurovat nový projekt zadejte translator_text_app do pole Název projektu. Políčko Umístit řešení a projekt do stejného adresáře ponechte nezaškrtnuté a vyberte Další.

    Snímek obrazovky: Dialogové okno konfigurace nového projektu v sadě Visual Studio

  6. V dialogovém okně Další informace se ujistěte, že je vybraná možnost .NET 6.0 (Dlouhodobá podpora). Nechte nezaškrtnuté políčko Nepoužívat příkazy nejvyšší úrovně a vyberte Vytvořit.

    Snímek obrazovky: Dialogové okno s dalšími informacemi v sadě Visual Studio

Instalace balíčku Newtonsoft.json pomocí NuGetu

  1. Klikněte pravým tlačítkem na projekt translator_quickstart a vyberte Spravovat balíčky NuGet... .

    Snímek obrazovky s vyhledávacím polem balíčku NuGet

  2. Vyberte kartu Procházet a zadejte Newtonsoft.

    Snímek obrazovky s oknem instalace balíčku NuGet

  3. V pravém okně správce balíčků vyberte nainstalovat a přidejte balíček do projektu.

    Snímek obrazovky s tlačítkem pro instalaci balíčku NuGet

Sestavení aplikace

Poznámka

  • Počínaje .NET 6 generují nové projekty používající console šablonu nový styl programu, který se liší od předchozích verzí.
  • Nový výstup používá nejnovější funkce jazyka C#, které zjednodušují kód, který potřebujete napsat.
  • Při použití novější verze stačí napsat text Main metody . Nemusíte zahrnovat příkazy nejvyšší úrovně, globální direktivy using ani implicitní direktivy using.
  • Další informace najdete v tématuNové šablony jazyka C# generují příkazy nejvyšší úrovně.
  1. Otevřete soubor Program.cs .

  2. Odstraňte existující kód včetně řádku Console.WriteLine("Hello World!"). Zkopírujte a vložte ukázky kódu do souboru Program.cs vaší aplikace. Pro každou ukázku kódu nezapomeňte aktualizovat klíče a proměnné koncového bodu hodnotami z instance Azure Portal Translator.

  3. Po přidání požadované ukázky kódu do aplikace zvolte zelené tlačítko Start vedle formRecognizer_quickstart k sestavení a spuštění programu nebo stiskněte klávesu F5.

Snímek obrazovky s tlačítkem Spustit program v sadě Visual Studio

Důležité

Ukázky v této příručce vyžadují pevně zakódované klíče a koncové body. Až budete hotovi, nezapomeňte klíč z kódu odebrat a nikdy ho nezveřejníte. V produkčním prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k přihlašovacím údajům. Další informace najdete v tématuZabezpečení služeb Azure AI.

Přeložení textu

Základní operací služby Translator je překlad textu. V této části vytvoříte požadavek, který přebírá jeden zdroj (from) a poskytuje dva výstupy (to). Pak zkontrolujeme některé parametry, které je možné použít k úpravě požadavku i odpovědi.

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

Po úspěšném volání by se měla zobrazit následující odpověď:

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

Spotřebu (počet účtovaných znaků) pro každý požadavek můžete zkontrolovat v hlavičce odpovědi: x-metered-usage pole.

Rozpoznání jazyka

Pokud potřebujete překlad, ale neznáte jazyk textu, můžete použít operaci rozpoznávání jazyka. Existuje více způsobů, jak identifikovat jazyk zdrojového textu. V této části se dozvíte, jak používat rozpoznávání jazyka pomocí koncového translate bodu a koncového detect bodu.

Zjištění zdrojového jazyka během překladu

Pokud do žádosti o from překlad nezadáte parametr, pokusí se služba Translator zjistit jazyk zdrojového textu. V odpovědi získáte zjištěný jazyk (language) a skóre spolehlivosti (score). Čím blíže score je hodnota 1.0, znamená, že existuje větší jistota, že je detekce správná.

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

Po úspěšném volání by se měla zobrazit následující odpověď:

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

Rozpoznání zdrojového jazyka bez překladu

Službu Translator je možné použít ke zjištění jazyka zdrojového textu bez provedení překladu. K tomu použijete /detect koncový bod.

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

Odpověď /detect koncového bodu zahrnuje alternativní detekce a označuje, jestli se podporuje překlad a transkripce ve všech zjištěných jazycích. Po úspěšném volání by se měla zobrazit následující odpověď:

[
   {
      "language":"de",

      "score":1.0,

      "isTranslationSupported":true,

      "isTransliterationSupported":false
   }
]

Transliterace textu

Transkripce je proces převodu slova nebo fráze ze skriptu (abecedy) jednoho jazyka na jiný na základě fonetické podobnosti. Pomocí transkripce můžete například převést "สวัสดี" (thai) na "sawatdi" (latn). Existuje více než jeden způsob, jak transkripci provést. V této části se dozvíte, jak používat rozpoznávání jazyka pomocí koncového translate bodu a koncového transliterate bodu.

Transkripce během překladu

Pokud překládáte do jazyka, který používá jinou abecedu (nebo fonély), než je váš zdroj, možná budete potřebovat transkripci. V tomto příkladu přeložíme "Hello" z angličtiny do thajštiny. Kromě získání překladu v thajštině získáte transkripci přeložené fráze pomocí latinky.

Pokud chcete získat transkripci z koncového translate bodu, použijte toScript parametr .

Poznámka

Úplný seznam dostupných jazyků a možností transkripce najdete v tématu Podpora jazyků.

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

Po úspěšném volání by se měla zobrazit následující odpověď. Mějte na paměti, že odpověď z translate koncového bodu zahrnuje zjištěný zdrojový jazyk se skóre spolehlivosti, překlad s použitím abecedy výstupního jazyka a transkripci pomocí latinky.

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

Transkripce bez překladu

K získání transkripce můžete použít také transliterate koncový bod. Při použití koncového bodu transkripce musíte jako parametry zadat zdrojový jazyk (language), zdrojový skript nebo abecedu (fromScript) a výstupní skript nebo abecedu (toScript). V tomto příkladu získáme transkripci pro สวัสดีเพื่อน! วันนี้คุณทำอะไร.

Poznámka

Úplný seznam dostupných jazyků a možností transkripce najdete v tématu Podpora jazyků.

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

Po úspěšném volání by se měla zobrazit následující odpověď. Na rozdíl od volání koncového translate bodu transliterate vrátí text pouze a výstup script.

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

      "script":"latn"
   }
]

Získání délky věty

Se službou Translator můžete získat počet znaků pro větu nebo řadu vět. Odpověď se vrátí jako pole s počtem znaků pro každou zjištěnou větu. Délky vět můžete získat pomocí translate koncových bodů a breaksentence .

Získání délky věty během překladu

Počet znaků pro zdrojový text i výstup překladu můžete získat pomocí koncového translate bodu. Pokud chcete vrátit délku věty (srcSenLen a transSenLen), musíte nastavit includeSentenceLength parametr na 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);
        }
    }
}

Po úspěšném volání by se měla zobrazit následující odpověď. Kromě zjištěného zdrojového jazyka a překladu získáte počty znaků pro každou zjištěnou větu pro zdroj (srcSentLen) i překlad (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
               ]
            }
         }
      ]
   }
]

Získání délky věty bez překladu

Služba Translator také umožňuje požádat o délku věty bez překladu pomocí koncového breaksentence bodu.

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

Po úspěšném volání by se měla zobrazit následující odpověď. Na rozdíl od volání koncového translate bodu breaksentence vrací počet znaků pouze pro zdrojový text v matici s názvem sentLen.

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

Vyhledávání slovníku (alternativní překlady)

Pomocí koncového bodu můžete získat alternativní překlady pro slovo nebo frázi. Například při překladu slova "sunshine" z en na es, tento koncový bod vrátí "luz solar, " "rayos solares," a "soleamiento," "sol, " a "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);
        }
    }
}

Po úspěšném volání by se měla zobrazit následující odpověď. Podívejme se na odpověď podrobněji, protože JSON je složitější než některé z dalších příkladů v tomto článku. Pole translations obsahuje seznam překladů. Každý objekt v tomto poli obsahuje skóre spolehlivosti (confidence), text optimalizovaný pro zobrazení koncovým uživatelem (displayTarget), normalizovaný text (normalizedText), část řeči (posTag) a informace o předchozím překladu (backTranslations). Další informace o odpovědi najdete v tématu Vyhledávání slovníku.

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

Příklady slovníku (překlady v kontextu)

Po provedení vyhledávání ve slovníku předejte zdrojový a překlad textu koncovému dictionary/examples bodu, abyste získali seznam příkladů, které zobrazují oba termíny v kontextu věty nebo fráze. Na základě předchozího příkladu normalizedText použijete vyhledávací odpověď a normalizedTarget ze slovníku jako text a translation v uvedeném pořadí. Parametry zdrojového jazyka (from) a cíle výstupu (to) jsou povinné.

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

Po úspěšném volání by se měla zobrazit následující odpověď. Další informace o odpovědi najdete v tématu Vyhledávání slovníku.

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

Řešení potíží

Běžné stavové kódy HTTP

Stavový kód HTTP Popis Možný důvod
200 OK Žádost byla úspěšná.
400 Chybný požadavek Požadovaný parametr chybí, je prázdný nebo null. Nebo je hodnota předaná povinnému nebo volitelnému parametru neplatná. Běžným problémem je příliš dlouhé záhlaví.
401 Neautorizováno Žádost není autorizovaná. Zkontrolujte, jestli je klíč nebo token platný a ve správné oblasti. Viz takéOvěřování.
429 Příliš mnoho požadavků Překročili jste kvótu nebo míru požadavků povolených pro vaše předplatné.
502 Chybná brána Problém na straně sítě nebo serveru. Může také znamenat neplatné hlavičky.

Uživatelé Javy

Pokud dochází k problémům s připojením, může to být tím, že vypršela platnost vašeho certifikátu TLS/SSL. Chcete-li tento problém vyřešit, nainstalujte DigiCertGlobalRootG2.crt do privátního úložiště.

Další kroky