Sdílet prostřednictvím


Použití rozhraní Azure AI Translator API

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řejdete na některé základní možnosti konfigurace, které se běžně používají při vývoji, mezi které patří:

Požadavky

  • Předplatné Azure: Můžete si ho vytvořit zdarma.

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

  • Službu můžete vyzkoušet pomocí cenové úrovně Free (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 svůj klíč a koncový bod vložíte do ukázek kódu. Tyto hodnoty najdete na stránce Klíče webu Azure Portal a koncový bod :

    Snímek obrazovky: Klíče webu Azure Portal a stránka koncového bodu

Důležité

Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v zabezpečení služeb Azure AI.

Hlavičky

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

Hlavička Hodnota Podmínka
Ocp-Apim-Subscription-Key Klíč služby Translator z webu Azure Portal.
  • Povinní účastníci
Ocp-Apim-Subscription-Region Oblast, ve které byl prostředek vytvořen.
  • Vyžaduje se při použití víceslužbového nebo regionálního (geografického) prostředku Azure AI, jako je USA – západ.
  • Volitelné při použití prostředku translatoru s jednou službou.
Typ obsahu Typ obsahu datové části. Přijatá hodnota je application/json nebo charset=UTF-8.
  • Povinní účastníci
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 s sadou Visual Studio začínáte, vyzkoušejte modul Úvod do sady Visual Studio Learn.

  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 Vytvořit nový projekt zadejte konzolu do vyhledávacího pole. Zvolte šablonu konzolové aplikace a pak zvolte Další.

    Snímek obrazovky: Stránka pro vytvoření nového projektu sady 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 zaškrtněte políčko Další.

    Snímek obrazovky: Dialogové okno pro konfiguraci 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). Nezaškrtnuté políčko Nepoužívat příkazy nejvyšší úrovně a vyberte Vytvořit.

    Snímek obrazovky: Dialogové okno s dalšími informacemi sady 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 instalaci a přidejte balíček do projektu.

    Snímek obrazovky s tlačítkem Instalace balíčku NuGet

Sestavení aplikace

Poznámka:

  • Od .NET 6 vygenerují nové projekty používající console šablonu nový styl programu, který se liší od předchozích verzí.
  • Nový výstup používá nedávné funkce jazyka C#, které zjednodušují psaní kódu.
  • Pokud používáte novější verzi, stačí napsat pouze tělo Main metody. Nemusíte zahrnovat příkazy nejvyšší úrovně, globální direktivy using ani implicitní direktivy using.
  • Další informace najdete v tématu Nové šablony jazyka C#, které 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 proměnné klíče a koncového bodu hodnotami z instance služby Azure Portal Translator.

  3. Jakmile do aplikace přidáte požadovanou ukázku kódu, zvolte zelené tlačítko Start vedle formRecognizer_quickstart pro 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. Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí zvažte použití zabezpečeného způsobu ukládání a přístupu k vašim přihlašovacím údajům. Další informace najdete v tématu Zabezpeč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é se dají 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"
         }
      ]
   }
]

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

Rozpoznat jazyk

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

Rozpoznání zdrojového jazyka během překladu

Pokud do požadavku na from překlad nezadáte parametr, služba Translator se pokusí 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 1.0, znamená to, že existuje větší jistota, že detekce je 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 transklitace pro všechny zjištěné jazyky. 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

Transliterace je proces převodu slova nebo fráze ze skriptu (abecedy) jednoho jazyka na jiný na základě fonetické podobnosti. K převodu "สวัสสดี" (thai) na sawatdi (latn). Existuje více než jeden způsob, jak provést transkteraci. 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, budete možná potřebovat transkliteraci. 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 transkci přeložené fráze pomocí latinky.

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

Poznámka:

Úplný seznam dostupných jazykůach

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 pomocí abecedy výstupního jazyka a transkliteraci pomocí latinky.

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

Transkripce bez překladu

Pomocí koncového transliterate bodu můžete také získat transkliteraci. Při použití koncového bodu transliterace musíte jako parametry zadat zdrojový jazyk (languagezdrojový skript/ abecedufromScript) a výstupní skript nebo abecedu (toScript). V tomto příkladu získáme transkci pro สวัสดีเพื่อน! วันนี้คุณทำอะไร.

Poznámka:

Úplný seznam dostupných jazykůach

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 výstup a výstup script.

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

      "script":"latn"
   }
]

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

Pomocí služby Translator můžete získat počet znaků pro větu nebo řadu vět. Odpověď se vrátí jako pole s počty znaků pro každou zjištěnou větu. Délky vět můžete získat s translate koncovými body.breaksentence

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

Pomocí koncového bodu můžete získat počty znaků pro zdrojový text i výstup překladu translate . Chcete-li vrátit délku includeSentenceLength věty (srcSenLen a transSenLen) je nutné nastavit 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ět bez překladu

Služba Translator také umožňuje požádat o délku vět 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 vrátí počet znaků pouze pro zdrojový text v poli s názvem sentLen.

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

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

S koncovým bodem můžete získat alternativní překlady slova nebo fráze. Například při překladu slova "sunshine" z en do 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ého uživatele (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)

Jakmile provedete vyhledávání ve slovníku, předejte do koncového bodu zdrojový text a text dictionary/examples překladu, 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 použijete a z vyhledávací odpovědi slovníku normalizedText normalizedTarget jako text a translation v uvedeném pořadí. Jsou vyžadovány parametry zdrojového jazyka (from) a cíle výstupu (to).

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í problému

Běžné stavové kódy HTTP

Stavový kód HTTP Popis Možný důvod
200 OK Požadavek byl úspěšný.
400 Nesprávná žádost Požadovaný parametr chybí, je prázdný nebo null. Nebo hodnota předaná požadovanému nebo volitelnému parametru je neplatná. Běžným problémem je příliš dlouhá hlavička.
401 Neautorizováno Požadavek 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 dojít k vypršení platnosti vašeho certifikátu TLS/SSL. Pokud chcete tento problém vyřešit, nainstalujte digiCertGlobalRootG2.crt do privátního úložiště.

Další kroky