Korzystanie z interfejsów API usługi Translator usługi Azure AI

Z tego przewodnika z instrukcjami dowiesz się, jak używać interfejsów API REST usługi Translator. Zacznij od podstawowych przykładów i przejdź do niektórych podstawowych opcji konfiguracji, które są często używane podczas programowania, w tym:

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie

  • Zasób usługi Azure AI z wieloma usługami lub translatorem. Po utworzeniu subskrypcji platformy Azure utwórz pojedynczą usługę lub zasób z wieloma usługami w Azure Portal, aby uzyskać klucz i punkt końcowy. Po wdrożeniu wybierz pozycję Przejdź do zasobu.

  • Możesz użyć bezpłatnej warstwy cenowej (F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.

  • Aby połączyć aplikację z usługą Translator, potrzebny jest klucz i punkt końcowy z zasobu. Później wklej klucz i punkt końcowy do przykładów kodu. Te wartości można znaleźć na stronie klucze Azure Portal i punkt końcowy:

    Zrzut ekranu: Azure Portal klucze i strona punktu końcowego.

Ważne

Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak azure Key Vault. Aby uzyskać więcej informacji, zobaczZabezpieczenia usług Azure AI.

Nagłówki

Aby wywołać usługę Translator za pośrednictwem interfejsu API REST, należy upewnić się, że następujące nagłówki są dołączone do każdego żądania. Nie martw się, dołączamy nagłówki do przykładowego kodu w poniższych sekcjach.

Nagłówek Wartość Warunek
Ocp-Apim-Subscription-Key Klucz usługi Translator z Azure Portal.
  • Wymagane
Ocp-Apim-Subscription-Region Region, w którym utworzono zasób.
  • Wymagane w przypadku korzystania z wieloasób usługi Azure AI lub zasobu regionalnego (geograficznego), takiego jak Zachodnie stany USA.
  • Opcjonalnie w przypadku korzystania z zasobu translatora z jedną usługą.
Typ zawartości Typ zawartości ładunku. Akceptowana wartość to application/json lub charset=UTF-8.
  • Wymagane
Długość zawartości Długość treści żądania.
  • Opcjonalne
X-ClientTraceId Identyfikator GUID generowany przez klienta w celu unikatowego zidentyfikowania żądania. Ten nagłówek można pominąć, jeśli w ciągu zapytania dołączysz identyfikator śledzenia przy użyciu parametru zapytania o nazwie ClientTraceId.
  • Opcjonalne

Konfigurowanie aplikacji

  1. Upewnij się, że masz bieżącą wersję środowiska IDE programu Visual Studio.

    Porada

    Jeśli jesteś nowym użytkownikm programu Visual Studio, wypróbuj moduł Wprowadzenie do programu Visual Studio Learn.

  2. Otwórz program Visual Studio.

  3. Na stronie Start wybierz pozycję Utwórz nowy projekt.

    Zrzut ekranu: okno uruchamiania programu Visual Studio.

  4. Na stronie Tworzenie nowego projektu wprowadź ciąg console w polu wyszukiwania. Wybierz szablon Aplikacja konsolowa , a następnie wybierz pozycję Dalej.

    Zrzut ekranu: strona tworzenia nowego projektu w programie Visual Studio.

  5. W oknie dialogowym Konfigurowanie nowego projektu wprowadź translator_text_app wartość w polu Nazwa projektu. Pozostaw niezaznaczone pole wyboru "Umieść rozwiązanie i projekt w tym samym katalogu", a następnie wybierz przycisk Dalej.

    Zrzut ekranu: okno dialogowe konfigurowania nowego projektu w programie Visual Studio.

  6. W oknie dialogowym Dodatkowe informacje upewnij się, że wybrano opcję .NET 6.0 (obsługa długoterminowa). Pozostaw pole wyboru "Nie używaj instrukcji najwyższego poziomu" niezaznaczone i wybierz pozycję Utwórz.

    Zrzut ekranu: okno dialogowe dodatkowych informacji programu Visual Studio.

Instalowanie pakietu Newtonsoft.json przy użyciu narzędzia NuGet

  1. Kliknij prawym przyciskiem myszy projekt translator_quickstart i wybierz polecenie Zarządzaj pakietami NuGet... .

    Zrzut ekranu przedstawiający pole wyszukiwania pakietu NuGet.

  2. Wybierz kartę Przeglądaj i wpisz Newtonsoft.

    Zrzut ekranu przedstawiający okno instalacji pakietu NuGet.

  3. Wybierz pozycję Zainstaluj w oknie odpowiedniego menedżera pakietów, aby dodać pakiet do projektu.

    Zrzut ekranu przedstawiający przycisk Instalacji pakietu NuGet.

Kompilowanie aplikacji

Uwaga

  • Począwszy od platformy .NET 6, nowe projekty korzystające z console szablonu generują nowy styl programu, który różni się od poprzednich wersji.
  • Nowe dane wyjściowe korzystają z najnowszych funkcji języka C#, które upraszczają pisanie kodu.
  • W przypadku korzystania z nowszej wersji wystarczy napisać treść Main metody . Nie trzeba uwzględniać instrukcji najwyższego poziomu, globalnych dyrektyw using ani niejawnych dyrektyw using.
  • Aby uzyskać więcej informacji, zobaczNowe szablony języka C# generują instrukcje najwyższego poziomu.
  1. Otwórz plik Program.cs .

  2. Usuń istniejący kod, w tym wiersz Console.WriteLine("Hello World!"). Skopiuj i wklej przykłady kodu do pliku Program.cs aplikacji. Dla każdego przykładu kodu upewnij się, że zmienne klucza i punktu końcowego są aktualizowane przy użyciu wartości z wystąpienia usługi Azure Portal Translator.

  3. Po dodaniu do aplikacji żądanego przykładu kodu wybierz zielony przycisk startowy obok formRecognizer_quickstart, aby skompilować i uruchomić program, lub naciśnij klawisz F5.

Zrzut ekranu przedstawiający przycisk Uruchom program w programie Visual Studio.

Ważne

Przykłady w tym przewodniku wymagają zakodowanych kluczy i punktów końcowych. Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego rozważ użycie bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń. Aby uzyskać więcej informacji, zobaczZabezpieczenia usług Azure AI.

Tłumaczenie tekstu

Podstawową operacją usługi Translator jest tłumaczenie tekstu. W tej sekcji utworzysz żądanie, które przyjmuje jedno źródło (from) i udostępnia dwa dane wyjściowe (to). Następnie sprawdzimy niektóre parametry, których można użyć do dostosowania zarówno żądania, jak i odpowiedzi.

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 pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź:

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

Możesz sprawdzić zużycie (liczbę opłat) dla każdego żądania w nagłówkach odpowiedzi: x-metered-usage pole.

Wykrywanie języka

Jeśli potrzebujesz tłumaczenia, ale nie znasz języka tekstu, możesz użyć operacji wykrywania języka. Istnieje więcej niż jeden sposób identyfikowania języka tekstu źródłowego. W tej sekcji dowiesz się, jak używać wykrywania języka przy użyciu punktu końcowego translate i punktu końcowego detect .

Wykrywanie języka źródłowego podczas tłumaczenia

Jeśli nie dołączysz parametru from do żądania tłumaczenia, usługa Translator spróbuje wykryć język tekstu źródłowego. W odpowiedzi otrzymasz wykryty język (language) i wskaźnik ufności (score). Im bliżej score jest 1.0wartość , oznacza, że zwiększa się pewność, że wykrywanie jest poprawne.

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 pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź:

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

Wykrywanie języka źródłowego bez tłumaczenia

Za pomocą usługi Translator można wykrywać język tekstu źródłowego bez wykonywania tłumaczenia. W tym celu należy użyć punktu końcowego /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);
        }
    }
}

/detect Odpowiedź punktu końcowego obejmuje alternatywne wykrycia i wskazuje, czy tłumaczenie i transliteracja są obsługiwane dla wszystkich wykrytych języków. Po pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź:

[
   {
      "language":"de",

      "score":1.0,

      "isTranslationSupported":true,

      "isTransliterationSupported":false
   }
]

Transliteracja tekstu

Transliteracja to proces konwertowania wyrazu lub frazy ze skryptu (alfabetu) jednego języka na inny w oparciu o podobieństwo fonetyczne. Na przykład można użyć transliteracji do konwersji "สวัสดี" (thai) na "sawatdi" (latn). Istnieje więcej niż jeden sposób przeprowadzania transliteracji. W tej sekcji dowiesz się, jak używać wykrywania języka przy użyciu punktu końcowego translate i punktu końcowego transliterate .

Transliteracja podczas tłumaczenia

Jeśli tłumaczysz na język, który używa innego alfabetu (lub fonemów) niż źródło, może być konieczne transliteracja. W tym przykładzie przetłumaczymy tekst "Hello" z języka angielskiego na tajski. Oprócz uzyskania tłumaczenia w języku tajskim otrzymujesz transliterację przetłumaczonej frazy przy użyciu alfabetu łacińskiego.

Aby uzyskać transliterację z punktu końcowego translate , użyj parametru toScript .

Uwaga

Aby uzyskać pełną listę dostępnych języków i opcji transliteracji, zobacz obsługa języków.

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 pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź. Należy pamiętać, że odpowiedź z translate punktu końcowego zawiera wykryty język źródłowy z współczynnikiem ufności, tłumaczeniem przy użyciu alfabetu wyjściowego i transliteracją przy użyciu alfabetu łacińskiego.

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

Transliteracja bez tłumaczenia

Możesz również użyć punktu końcowego transliterate , aby uzyskać transliterację. W przypadku korzystania z punktu końcowego transliteracji należy podać język źródłowy (language), skrypt źródłowy/alfabet (fromScript) oraz skrypt wyjściowy/alfabet (toScript) jako parametry. W tym przykładzie uzyskamy transliterację dla aplikacji สวัสดีเพื่๋อน! วันนี้คุณทำอะไร.

Uwaga

Aby uzyskać pełną listę dostępnych języków i opcji transliteracji, zobacz obsługa języków.

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 pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź. W przeciwieństwie do wywołania punktu końcowego translate funkcja transliterate zwraca tylko elementy text i .script

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

      "script":"latn"
   }
]

Uzyskiwanie długości zdania

Za pomocą usługi Translator można uzyskać liczbę znaków dla zdania lub serii zdań. Odpowiedź jest zwracana jako tablica z liczbami znaków dla każdego wykrytego zdania. Długości zdań można uzyskać za translate pomocą punktów końcowych i breaksentence .

Uzyskiwanie długości zdań podczas tłumaczenia

Liczbę znaków dla tekstu źródłowego i danych wyjściowych tłumaczenia można uzyskać przy użyciu punktu końcowego translate . Aby zwrócić długość zdania (srcSenLen i transSenLen), należy ustawić 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 pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź. Oprócz wykrytego języka źródłowego i tłumaczenia uzyskasz liczbę znaków dla każdego wykrytego zdania zarówno dla źródła (srcSentLen), jak i tłumaczenia (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
               ]
            }
         }
      ]
   }
]

Uzyskiwanie długości zdania bez tłumaczenia

Usługa Translator umożliwia również żądanie długości zdania bez tłumaczenia przy użyciu punktu końcowego 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);
        }
    }
}

Po pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź. W przeciwieństwie do wywołania punktu końcowego translate funkcja breaksentence zwraca tylko liczbę znaków dla tekstu źródłowego w tablicy o nazwie sentLen.

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

Wyszukiwanie w słowniku (alternatywne tłumaczenia)

Za pomocą punktu końcowego można uzyskać alternatywne tłumaczenia wyrazów lub fraz. Na przykład podczas tłumaczenia wyrazu "sunshine" z en na es, ten punkt końcowy zwraca wartość "luz solar", "rayos solares", "soleamiento", "sol" i "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 pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź. Przyjrzyjmy się bliżej odpowiedzi, ponieważ kod JSON jest bardziej złożony niż niektóre z innych przykładów w tym artykule. Tablica translations zawiera listę tłumaczeń. Każdy obiekt w tej tablicy zawiera współczynnik ufności (confidence), tekst zoptymalizowany pod kątem wyświetlania przez użytkownika końcowego (displayTarget), znormalizowany tekst (normalizedText), część mowy (posTag) i informacje o poprzednim tłumaczeniu (backTranslations). Aby uzyskać więcej informacji na temat odpowiedzi, zobacz Wyszukiwanie w słowniku

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

Przykłady słowników (tłumaczenia w kontekście)

Po wykonaniu wyszukiwania w słowniku przekaż do punktu końcowego tekst źródłowy i tekst dictionary/examples tłumaczenia, aby uzyskać listę przykładów, które pokazują oba terminy w kontekście zdania lub frazy. Korzystając z poprzedniego przykładu, należy użyć normalizedText odpowiednio odpowiedzi text wyszukiwania w słowniku i normalizedTargettranslation . Wymagany jest język źródłowy (from) i docelowy element wyjściowy (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 pomyślnym wywołaniu powinna zostać wyświetlona następująca odpowiedź. Aby uzyskać więcej informacji na temat odpowiedzi, zobacz Wyszukiwanie w słowniku

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

Rozwiązywanie problemów

Typowe kody stanu HTTP

Kod stanu HTTP Opis Możliwe przyczyny
200 OK Żądanie zakończyło się pomyślnie.
400 Nieprawidłowe żądanie Brak wymaganego parametru, pusty lub null. Lub wartość przekazana do wymaganego lub opcjonalnego parametru jest nieprawidłowa. Typowym problemem jest nagłówek, który jest za długi.
401 Brak autoryzacji Żądanie nie jest autoryzowane. Upewnij się, że klucz lub token jest prawidłowy i w poprawnym regionie. Zobacz teżUwierzytelnianie.
429 Zbyt wiele żądań Przekroczono limit przydziału lub szybkość żądań dozwolonych dla subskrypcji.
502 Nieprawidłowa brama Problem z siecią lub po stronie serwera. Może również wskazywać nieprawidłowe nagłówki.

Użytkownicy języka Java

Jeśli występują problemy z połączeniem, może to oznaczać, że certyfikat TLS/SSL wygasł. Aby rozwiązać ten problem, zainstaluj plik DigiCertGlobalRootG2.crt w magazynie prywatnym.

Następne kroki