Menggunakan API Penerjemah Azure AI

Dalam panduan cara ini, Anda belajar menggunakan REST API layanan Penerjemah. Anda mulai dengan contoh dasar dan beralih ke beberapa opsi konfigurasi inti yang umum digunakan selama pengembangan, termasuk:

Prasyarat

  • Langganan Azure - Membuat langganan gratis

  • Sumber daya multi-layanan atau Penerjemah Azure AI. Setelah Anda memiliki langganan Azure, buat layanan tunggal atau sumber daya multi-layanan, di portal Azure, untuk mendapatkan kunci dan titik akhir Anda. Setelah menyebar, pilih Buka sumber daya.

  • Untuk mencoba layanan, Anda dapat menggunakan tingkat harga gratis (F0), lalu meningkatkannya ke tingkat berbayar untuk produksi.

  • Anda memerlukan kunci dan titik akhir dari sumber daya untuk menyambungkan aplikasi Anda ke layanan Penerjemah. Kemudian, Anda menempelkan kunci dan titik akhir Anda ke dalam sampel kode. Anda dapat menemukan nilai ini di halaman Kunci dan Titik Akhir portal Microsoft Azure:

    Cuplikan layar: Halaman kunci dan titik akhir portal Microsoft Azure.

Penting

Ingatlah untuk menghapus kunci dari kode Anda setelah selesai, dan jangan pernah memposting kode secara publik. Untuk produksi, gunakan cara aman menyimpan dan mengakses informasi masuk Anda seperti Azure Key Vault. Untuk informasi selengkapnya, lihatkeamanan layanan Azure AI.

Header

Untuk memanggil layanan Penerjemah melalui REST API, Anda perlu memastikan header berikut disertakan dengan setiap permintaan. Jangan khawatir, kami menyertakan header dalam kode sampel di bagian berikut.

Header Nilai Kondisi
Ocp-Apim-Subscription-Key Kunci layanan Penerjemah Anda dari portal Azure.
  • Diperlukan
Ocp-Apim-Subscription-Region Wilayah tempat sumber daya Anda dibuat.
  • Diperlukan saat menggunakan sumber daya multi-layanan azure AI atau regional (geografis) seperti US Barat.
  • Opsional saat menggunakan Sumber Daya Penerjemah layanan tunggal.
Tipe-Konten Jenis konten payload. Nilai yang diterima adalah application/json atau charset=UTF-8.
  • Diperlukan
Panjang-Konten Panjang isi permintaan.
  • Opsional
X-ClientTraceId GUID yang dibuat oleh klien untuk mengidentifikasi permintaan secara unik. Anda dapat menghilangkan header ini jika Anda menyertakan ID pelacakan dalam string kueri menggunakan parameter kueri bernama ClientTraceId.
  • Opsional

Menyiapkan aplikasi Anda

  1. Pastikan Anda memiliki versi Visual Studio IDE saat ini.

    Tip

    Jika Anda baru mengenal Visual Studio, coba modul Learn Pengantar untuk Visual Studio.

  2. Buka Visual Studio.

  3. Dari halaman Mulai, pilih Buat proyek baru.

    Cuplikan layar: Jendela mulai Visual Studio.

  4. Pada halaman Buat proyek baru, masukkan konsol di kotak pencarian. Pilih templat Aplikasi Konsol, lalu pilih Berikutnya.

    Cuplikan layar: Halaman membuat proyek baru di Visual Studio.

  5. Di jendela dialog Konfigurasikan proyek baru Anda, masukkan translator_text_app di kotak Nama proyek. Biarkan kotak centang "Tempatkan solusi dan proyek di direktori yang sama" tidak dicentang dan pilih Berikutnya.

    Cuplikan layar: Jendela mengonfigurasi dialog proyek baru di Visual Studio.

  6. Di jendela dialog Informasi tambahan, pastikan .NET 6.0 (Dukungan jangka panjang) dipilih. Biarkan kotak centang "Jangan gunakan pernyataan tingkat atas" tidak dicentang dan pilih Buat.

    Cuplikan layar: Jendela dialog informasi tambahan Visual Studio.

Menginstal paket Newtonsoft.json dengan NuGet

  1. Klik kanan pada proyek translator_quickstart Anda dan pilih Kelola Paket NuGet... .

    Cuplikan layar kotak pencarian paket NuGet.

  2. Pilih tab Browse dan ketik Newtonsoft.

    Cuplikan layar jendela penginstalan paket NuGet.

  3. Pilih instal dari jendela manajer paket yang tepat untuk menambahkan paket ke proyek Anda.

    Cuplikan layar tombol penginstalan paket NuGet.

Bangun aplikasi Anda

Catatan

  • Dimulai dengan .NET 6, proyek baru yang menggunakan templat console menghasilkan gaya program baru yang berbeda dari versi sebelumnya.
  • Output baru menggunakan fitur C# terbaru yang menyederhanakan kode yang perlu Anda tulis.
  • Saat Anda menggunakan versi yang lebih baru, Anda hanya perlu menulis isi metode Main. Anda tidak perlu menyertakan pernyataan tingkat atas, global menggunakan direktif, atau implisit menggunakan direktif.
  • Untuk informasi selengkapnya, lihattemplat C# Baru menghasilkan pernyataan tingkat atas.
  1. Buka file Program.cs.

  2. Hapus kode yang sudah ada sebelumnya, termasuk baris Console.WriteLine("Hello World!"). Salin dan tempel sampel kode ke dalam file Program.cs aplikasi Anda. Untuk setiap sampel kode, pastikan Anda memperbarui variabel kunci dan titik akhir dengan nilai dari instans portal Azure Penerjemah Anda.

  3. Setelah Anda menambahkan sampel kode yang diinginkan ke aplikasi Anda, pilih tombol mulai hijau di samping formRecognizer_quickstart untuk membangun dan menjalankan program Anda, atau tekan F5.

Cuplikan layar tombol jalankan program di Visual Studio.

Penting

Sampel dalam panduan ini memerlukan kunci dan titik akhir yang dikodekan secara permanen. Ingat untuk menghapus kunci dari kode Anda saat sudah selesai, dan jangan mempostingnya secara publik. Untuk produksi, pertimbangkan untuk menggunakan cara menyimpan dan mengakses info masuk Anda dengan aman. Untuk informasi selengkapnya, lihatKeamanan layanan Azure AI.

Terjemahkan teks

Operasi inti dari layanan Penerjemah adalah menerjemahkan teks. Di bagian ini, Anda membuat permintaan yang mengambil satu sumber (from) dan menyediakan dua output (to). Kemudian kami meninjau beberapa parameter yang dapat digunakan untuk menyesuaikan permintaan dan respons.

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

Setelah panggilan berhasil, Anda akan melihat respons berikut:

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

Anda dapat memeriksa konsumsi (jumlah karakter yang dibebankan) untuk setiap permintaan di header respons: bidang x-metered-usage .

Mendeteksi bahasa

Jika Anda membutuhkan terjemahan, tetapi tidak mengetahui bahasa teks, Anda dapat menggunakan operasi deteksi bahasa. Ada lebih dari satu cara untuk mengidentifikasi bahasa teks sumber. Di bagian ini, Anda mempelajari cara menggunakan deteksi bahasa menggunakan translate titik akhir, dan detect titik akhir.

Mendeteksi bahasa sumber selama terjemahan

Jika Anda tidak menyertakan from parameter dalam permintaan terjemahan, layanan Penerjemah mencoba mendeteksi bahasa teks sumber. Sebagai respons, Anda mendapatkan bahasa yang terdeteksi (language) dan skor keyakinan (score). Semakin dekat score ke 1.0, berarti ada peningkatan keyakinan bahwa deteksi tersebut benar.

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

Setelah panggilan berhasil, Anda akan melihat respons berikut:

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

Deteksi bahasa sumber tanpa penerjemahan

Anda dapat menggunakan layanan Penerjemah untuk mendeteksi bahasa teks sumber tanpa melakukan penerjemahan. Untuk melakukannya, Anda menggunakan /detect titik akhir.

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

Respons /detect titik akhir mencakup deteksi alternatif, dan menunjukkan apakah terjemahan dan transliterasi didukung untuk semua bahasa yang terdeteksi. Setelah panggilan berhasil, Anda akan melihat respons berikut:

[
   {
      "language":"de",

      "score":1.0,

      "isTranslationSupported":true,

      "isTransliterationSupported":false
   }
]

Teks transliterasi

Transliterasi adalah proses mengonversi kata atau frasa dari skrip (alfabet) dari satu bahasa ke bahasa lain berdasarkan kesamaan fonetis. Misalnya, Anda dapat menggunakan transliterasi untuk mengonversi "สวัสดี" (thai) ke "sawatdi" (latn). Ada lebih dari satu cara untuk melakukan transliterasi. Di bagian ini, Anda mempelajari cara menggunakan deteksi bahasa menggunakan translate titik akhir, dan transliterate titik akhir.

Transliterasi selama terjemahan

Jika Anda menerjemahkan ke dalam bahasa yang menggunakan alfabet (atau fonem) yang berbeda dari sumber Anda, Anda mungkin memerlukan transliterasi. Dalam contoh ini, kami menerjemahkan "Halo" dari bahasa Inggris ke Thailand. Selain mendapatkan terjemahan dalam bahasa Thailand, Anda mendapatkan transliterasi frasa yang diterjemahkan menggunakan alfabet Latin.

Untuk mendapatkan transliterasi dari titik akhir translate, gunakan parameter toScript.

Catatan

Untuk daftar lengkap opsi bahasa dan transliterasi yang tersedia, lihat dukungan bahasa.

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

Setelah panggilan berhasil, Anda akan melihat respons berikut. Perlu diingat bahwa respons dari titik akhir translate mencakup bahasa sumber yang terdeteksi dengan skor kepercayaan diri, terjemahan menggunakan alfabet bahasa output, dan transliterasi menggunakan alfabet Latin.

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

Transliterasi tanpa terjemahan

Anda juga dapat menggunakan titik akhir transliterate untuk mendapatkan transliterasi. Saat menggunakan titik akhir transliterasi, Anda harus menyediakan bahasa sumber (language), skrip/alfabet sumber (fromScript), dan skrip/alfabet output (toScript) sebagai parameter. Dalam contoh ini, kita akan mendapatkan transliterasi untuk สวัสดีเพื่อน! วันนี้คุณทำอะไร.

Catatan

Untuk daftar lengkap opsi bahasa dan transliterasi yang tersedia, lihat dukungan bahasa.

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

Setelah panggilan berhasil, Anda akan melihat respons berikut. Tidak seperti panggilan ke titik akhir translate, transliterate hanya mengembalikan text dan output script.

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

      "script":"latn"
   }
]

Dapatkan panjang kalimat

Dengan layanan Penerjemah, Anda bisa mendapatkan jumlah karakter untuk kalimat atau serangkaian kalimat. Respons dikembalikan sebagai array, dengan jumlah karakter untuk setiap kalimat yang terdeteksi. Anda bisa mendapatkan panjang kalimat dengan translate dan titik akhir breaksentence.

Dapatkan panjang kalimat selama terjemahan

Anda bisa mendapatkan jumlah karakter untuk teks sumber dan output terjemahan menggunakan titik akhir translate. Untuk mengembalikan panjang kalimat (srcSenLen dan transSenLen) Anda harus mengatur parameter includeSentenceLength ke 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);
        }
    }
}

Setelah panggilan berhasil, Anda akan melihat respons berikut. Selain bahasa dan terjemahan sumber yang terdeteksi, Anda mendapatkan jumlah karakter untuk setiap kalimat yang terdeteksi untuk sumber (srcSentLen) dan terjemahan (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
               ]
            }
         }
      ]
   }
]

Dapatkan panjang kalimat tanpa terjemahan

Layanan Penerjemah juga memungkinkan Anda meminta panjang kalimat tanpa terjemahan menggunakan titik akhir 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);
        }
    }
}

Setelah panggilan berhasil, Anda akan melihat respons berikut. Tidak seperti panggilan ke titik akhir translate, breaksentence hanya mengembalikan jumlah karakter untuk teks sumber dalam array yang disebut sentLen.

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

Pencarian kamus (terjemahan alternatif)

Dengan titik akhir, Anda bisa mendapatkan terjemahan alternatif untuk kata atau frasa. Misalnya, saat menerjemahkan kata "sinar matahari" dari en ke es, titik akhir ini mengembalikan "luz solar," "rayos solares," dan "soleamiento," "sol," dan "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);
        }
    }
}

Setelah panggilan berhasil, Anda akan melihat respons berikut. Mari kita periksa responsnya lebih dekat karena JSON lebih kompleks daripada beberapa contoh lain dalam artikel ini. Array translations mencakup daftar terjemahan. Setiap objek dalam array ini mencakup skor kepercayaan diri (confidence), teks yang dioptimalkan untuk tampilan pengguna akhir (displayTarget), teks yang dinormalisasi (normalizedText), bagian ucapan (posTag), dan informasi tentang terjemahan sebelumnya (backTranslations). Untuk informasi selengkapnya tentang respons, lihat Pencarian Kamus

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

Contoh kamus (terjemahan dalam konteks)

Setelah Anda melakukan pencarian kamus, teruskan teks sumber dan terjemahan ke dictionary/examples titik akhir, untuk mendapatkan daftar contoh yang memperlihatkan kedua istilah dalam konteks kalimat atau frasa. Membangun pada contoh sebelumnya, Anda menggunakan normalizedText dan normalizedTarget dari respons pencarian kamus sebagai text dan translation masing-masing. Bahasa sumber (from) dan parameter target output (to) diperlukan.

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

Setelah panggilan berhasil, Anda akan melihat respons berikut. Untuk informasi selengkapnya tentang respons, lihat Pencarian Kamus

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

Pemecahan Masalah

Kode status HTTP umum

Kode status HTTP Deskripsi Kemungkinan alasan
200 OK Permintaan berhasil.
400 Permintaan Buruk Parameter yang diperlukan hilang, kosong, atau null. Atau, nilai yang diteruskan ke parameter yang diperlukan atau opsional tidak valid. Masalah umum adalah header yang terlalu panjang.
401 Tidak diizinkan Permintaan tersebut tidak diotorisasi. Periksa untuk memastikan kunci atau token Anda valid dan di wilayah yang benar. Lihat jugaAuthentication.
429 Terlalu Banyak Permintaan Anda telah melebihi kuota atau tarif permintaan yang diizinkan untuk langganan Anda.
502 Gateway buruk Masalah jaringan atau sisi server. Mungkin juga menunjukkan header yang tidak valid.

Pengguna Java

Jika Anda mengalami masalah koneksi, mungkin sertifikat TLS/SSL Anda telah kedaluwarsa. Untuk mengatasi masalah ini, pasang DigiCertGlobalRootG2.crt ke toko privat Anda.

Langkah berikutnya