Usar as APIs do Tradutor da IA do Azure

Neste guia de instruções, você aprenderá a usar as APIs REST do serviço Tradução. Você começa com exemplos básicos e passa para algumas opções de configuração básicas que são comumente usadas durante o desenvolvimento, incluindo:

Pré-requisitos

  • Assinatura do Azure – Criar uma gratuitamente

  • Um recurso de vários serviços ou de Tradutor da IA do Azure. Quando tiver sua assinatura do Azure, crie um recurso de serviço único ou um de serviço múltiplo no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, selecione Ir para recurso.

  • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

  • Você precisará da chave e do ponto de extremidade do recurso para conectar seu aplicativo ao serviço de Tradução. Mais adiante, você vai colar a chave e o ponto de extremidade nos exemplos de código. Você pode encontrar esses valores na página Chaves e ponto de extremidade do portal do Azure:

    Captura de tela: página Chaves e ponto de extremidade do portal do Azure.

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações, consulte a segurança dos serviços de IA do Azure.

Cabeçalhos

Para chamar o serviço de Tradução por meio da API REST, os cabeçalhos a seguir devem estar incluídos em cada solicitação. Não se preocupe, vamos incluir os cabeçalhos no código de exemplo nas próximas seções.

Cabeçalho Valor Condição
Ocp-Apim-Subscription-Key Sua chave de serviço de Tradução do portal do Azure.
  • Obrigatório
Ocp-Apim-Subscription-Region A região em que o recurso foi criado.
  • Obrigatório ao usar um recurso dos Serviços de IA do Azure de vários serviços ou um recurso regional (geográfico) como Oeste dos EUA.
  • Opcional quando um recurso de Tradução de serviço único é usado.
Content-Type O tipo de conteúdo da carga. Os valores aceitos são application/json ou charset=UTF-8.
  • Obrigatório
Content-Length O tamanho do corpo da solicitação.
  • Opcional
X-ClientTraceId Um GUID gerado pelo cliente para identificar exclusivamente a solicitação. Você poderá omitir esse cabeçalho se incluir a ID de rastreamento na cadeia de consulta usando um parâmetro de consulta chamado ClientTraceId.
  • Opcional

Configurar o aplicativo

  1. Verifique se você tem a versão atual do IDE do Visual Studio.

    Dica

    Caso não esteja familiarizado com o Visual Studio, experimente o módulo Introdução ao Visual Studio do Learn.

  2. Abra o Visual Studio.

  3. Na página Iniciar, escolha Criar um projeto.

    Captura de tela: janela inicial do Visual Studio.

  4. Na página Criar um projeto, insira console na caixa de pesquisa. Escolha o modelo Aplicativo de Console e selecione Avançar.

    Captura de tela: página Criar novo projeto do Visual Studio.

  5. Na janela do diálogo Configurar seu novo projeto, insira translator_text_app na caixa Nome do projeto. Mantenha a caixa de seleção "Colocar solução e projeto no mesmo diretório" desmarcada e selecione Avançar.

    Captura de tela: janela de diálogo Configurar novo projeto do Visual Studio.

  6. Na janela da caixa de diálogo Informações adicionais, verifique se .NET 6.0 (suporte a longo prazo) está selecionado. Mantenha a caixa de seleção "Não usar instruções de nível superior" desmarcada e selecione Criar.

    Captura de tela: janela de diálogo Informações adicionais do Visual Studio.

Instalar o pacote Newtonsoft.json com o NuGet

  1. Clique com o botão direito do mouse no projeto translator_quickstart e selecione Gerenciar Pacotes NuGet….

    Captura de tela da caixa de pesquisa de pacotes NuGet.

  2. Selecione a guia Procurar e digite Newtonsoft.

    Captura de tela da janela de instalação de pacotes NuGet.

  3. Selecione Instalar na janela certa do gerenciador de pacotes para adicionar o pacote ao projeto.

    Captura de tela do botão de instalação de pacotes NuGet.

Crie seu aplicativo

Observação

  • A partir do .NET 6, os novos projetos que usam o modelo console geram um novo estilo de programa diferente das versões anteriores.
  • A nova saída usa recursos recentes do C# que simplificam a codificação.
  • Ao usar a versão mais recente, você só precisa escrever o corpo do método Main. Você não precisa incluir instruções de nível superior, diretivas de uso globais nem diretivas de uso implícitas.
  • Para obter mais informações, consulteNovos modelos C# geram instruções de nível superior.
  1. Abra o arquivo Program.cs.

  2. Exclua o código preexistente, incluindo a linha Console.WriteLine("Hello World!"). Copie e cole os exemplos de código no arquivo Program.cs do seu aplicativo. Para cada exemplo de código, atualize as variáveis de chave e de ponto de extremidade com valores da sua instância de Tradução do portal do Azure.

  3. Depois de adicionar um exemplo de código desejado ao aplicativo, escolha o botão Iniciar verde ao lado de formRecognizer_quickstart para compilar e executar seu programa ou pressione F5.

Captura de tela do botão Executar programa no Visual Studio.

Importante

Os exemplos deste guia exigem chaves e pontos de extremidade embutidos em código. Lembre-se de remover a chave do código quando terminar e nunca poste-a publicamente. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Para obter mais informações, consulte a segurança dos serviços de IA do Azure.

Traduzir o texto

A principal operação do serviço de Tradução é traduzir o texto. Nesta seção, você vai criar uma solicitação que usa uma origem (from) e fornece duas saídas (to). Em seguida, vamos examinar alguns parâmetros que podem ser usados para ajustar a solicitação e a resposta.

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

Após uma chamada bem-sucedida, você deverá ver a seguinte resposta:

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

Você pode verificar o consumo (o número de caracteres cobrados) para cada solicitação no campo cabeçalhos de resposta: x-metered-usage.

Detectar o idioma

Se você precisar de uma tradução, mas não conhecer o idioma do texto, use a operação de detecção de idioma. Há mais de uma forma de identificar o idioma do texto de origem. Nesta seção, você vai aprender a usar a detecção de idioma usando o ponto de extremidade translate e o ponto de extremidade detect.

Detectar idioma de origem durante a tradução

Se você não incluir o parâmetro from na solicitação de tradução, o serviço Tradução tentará detectar o idioma do texto de origem. Na resposta, você vai obter o idioma detectado (language) e uma pontuação de confiança (score). Quanto mais próximo score estiver de 1.0, maior será a confiança de que a detecção está correta.

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

Após uma chamada bem-sucedida, você deverá ver a seguinte resposta:

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

Detectar idioma de origem sem tradução

É possível usar o serviço de Tradução para detectar o idioma do texto de origem sem executar uma tradução. Para fazer isso, você usa o ponto de extremidade /detect.

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

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

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

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

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            // Build the request.
            request.Method = HttpMethod.Post;
            request.RequestUri = new Uri(endpoint + route);
            request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
            request.Headers.Add("Ocp-Apim-Subscription-Key", key);
            request.Headers.Add("Ocp-Apim-Subscription-Region", location);

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

A resposta do ponto de extremidade /detect inclui detecções alternativas e indica se há suporte para tradução e transliteração em todos os idiomas detectados. Após uma chamada bem-sucedida, você deverá ver a seguinte resposta:

[
   {
      "language":"de",

      "score":1.0,

      "isTranslationSupported":true,

      "isTransliterationSupported":false
   }
]

Transcrição de texto

A transliteração é o processo de converter uma palavra ou frase do script (alfabeto) de uma linguagem para outra com base na similaridade fonética. Por exemplo, você pode usar o transliteração para converter "สวัสดี" (thai) em "sawatdi" (latn). Há mais de uma forma de executar a transliteração. Nesta seção, você vai aprender a usar a detecção de idioma usando o ponto de extremidade translate e o ponto de extremidade transliterate.

Transliteração durante a tradução

Se você estiver traduzindo para um idioma que use um alfabeto diferente (ou fonemas) do que a origem, talvez seja necessário usar transliteração. Neste exemplo, traduzimos "Hello" do inglês para o tailandês. Além de obter a tradução em tailandês, você obterá uma transliteração da frase traduzida usando o alfabeto latino.

Para obter uma transliteração do ponto de extremidade translate, use o parâmetro toScript.

Observação

Para uma lista completa de idiomas disponíveis e opções de transliteração, confira suporte ao idioma.

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

Após uma chamada bem-sucedida, você deverá ver a resposta a seguir. Lembre-se de que a resposta do ponto de extremidade translate inclui o idioma de origem detectado com uma pontuação de confiança, uma tradução usando o alfabeto do idioma de saída e uma transliteração usando o alfabeto latino.

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

Transliteração sem tradução

Você também pode usar o ponto de extremidade transliterate para obter uma transliteração. Ao usar o ponto de extremidade de transliteração, você deve informar o idioma de origem (language), o script/alfabeto de origem (fromScript) e o script/alfabeto de saída (toScript) como parâmetros. Neste exemplo, vamos obter a transliteração de สวัสดีเพื่อน! วันนี้คุณทำอะไร.

Observação

Para uma lista completa de idiomas disponíveis e opções de transliteração, confira suporte ao idioma.

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

Após uma chamada bem-sucedida, você deverá ver a resposta a seguir. Ao contrário da chamada para o ponto de extremidade translate, transliterate retorna apenas o text e a saída script.

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

      "script":"latn"
   }
]

Obter o comprimento da frase

Com o serviço de Tradução, você pode obter a contagem de caracteres de uma frase ou série de frases. A resposta é retornada como uma matriz, com contagens de caracteres para cada frase detectada. Você pode obter comprimentos de sentença com os pontos de extremidade translate e breaksentence.

Obter o tamanho da frase durante a tradução

Você pode obter contagens de caracteres para o texto de origem e a saída de tradução usando o ponto de extremidade translate. Para retornar o comprimento da frase (srcSenLen e transSenLen), defina o parâmetro includeSentenceLength como 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);
        }
    }
}

Após uma chamada bem-sucedida, você deverá ver a resposta a seguir. Além do idioma de origem e tradução detectados, você obterá as contagens de caracteres para cada frase detectada tanto para a origem (srcSentLen) quanto para a tradução (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
               ]
            }
         }
      ]
   }
]

Obter tamanho da frase sem tradução

O serviço de Tradução também permite que você solicite o tamanho da frase sem tradução usando o ponto de extremidade breaksentence.

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

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

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

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

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

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

Após uma chamada bem-sucedida, você deverá ver a resposta a seguir. Ao contrário da chamada para o ponto de extremidade translate, breaksentence retorna apenas as contagens de caracteres para o texto de origem em uma matriz chamada sentLen.

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

Pesquisa em dicionário (traduções alternativas)

Com o ponto de extremidade, você pode obter traduções alternativas para uma palavra ou frase. Por exemplo, ao traduzir a palavra "sunshine" de en para es, esse ponto de extremidade retornará "luz solar", "rayos solares" e "soleamiento", "sol" e "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);
        }
    }
}

Após uma chamada bem-sucedida, você deverá ver a resposta a seguir. Vamos examinar a resposta mais de perto, pois o JSON é mais complexo do que alguns dos outros exemplos deste artigo. A matriz translations inclui uma lista de traduções. Cada objeto nessa matriz inclui uma pontuação de confiança (confidence), o texto otimizado para exibição do usuário final (displayTarget), o texto normalizado (normalizedText), a parte da fala (posTag) e informações sobre a tradução anterior (backTranslations). Para obter mais informações sobre a resposta, confira Pesquisa em Dicionário

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

Exemplos de dicionário (traduções no contexto)

Depois de executar uma pesquisa em dicionário, passe o texto de origem e tradução para o ponto de extremidade dictionary/examples, para obter uma lista de exemplos que mostram os dois termos no contexto de uma frase ou oração. Desenvolvendo o exemplo anterior, você usa o normalizedText e normalizedTarget da resposta da pesquisa em dicionário como text e translation, respectivamente. Os parâmetros do idioma de origem (from) e do destino de saída (to) são necessários.

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

Após uma chamada bem-sucedida, você deverá ver a resposta a seguir. Para obter mais informações sobre a resposta, confira Pesquisa em Dicionário

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

Solução de problemas

Códigos de status HTTP comuns

Código de status HTTP Descrição Possível motivo
200 OK A solicitação foi bem-sucedida.
400 Solicitação incorreta Um parâmetro obrigatório está ausente, vazio ou nulo. Ou então, o valor passado como um parâmetro obrigatório ou opcional é inválido. Um problema comum é um cabeçalho que é muito longo.
401 Não Autorizado A solicitação não está autorizada. Verifique se a chave ou o token são válidos e se estão na região correta. Confira tambémAutenticação.
429 Número Excessivo de Solicitações Você excedeu a cota ou a taxa de solicitações permitidas para a sua assinatura.
502 Gateway incorreto Problema de rede ou do servidor. Também pode indicar cabeçalhos inválidos.

Usuários do Java

Caso você encontre problemas de conexão, talvez seu certificado TLS/SSL tenha vencido. Para resolver esse problema, instale o DigiCertGlobalRootG2.crt em seu armazenamento privado.

Próximas etapas