استخدام واجهات برمجة تطبيقات مترجم Azure الذكاء الاصطناعي

في هذا الدليل الإرشادي، تتعلم استخدام واجهات برمجة تطبيقات REST لخدمة المترجم. تبدأ بالأمثلة الأساسية، وتنتقل إلى بعض خيارات التكوين الأساسية التي يتم استخدامها بشكل شائع أثناء التطوير، بما في ذلك:

المتطلبات الأساسية

  • الاشتراك في Azure - إنشاء اشتراك مجانًا

  • مورد Azure الذكاء الاصطناعي متعدد الخدمات أو المترجم. بمجرد حصولك على اشتراك Azure الخاص بك، قم بإنشاء خدمة واحدة أو مورد متعدد الخدمات ، في مدخل Microsoft Azure، للحصول على المفتاح ونقطة النهاية. وبعد نشره انقر فوق اذهب إلى المورد.

  • يمكنك استخدام مستوى التسعير الحر (F0⁩) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.

  • أنت بحاجة إلى المفتاح ونقطة النهاية من المورد لتوصيل تطبيقك بخدمة المترجم. لاحقا، يمكنك لصق المفتاح ونقطة النهاية في نماذج التعليمات البرمجية. يمكنك العثور على هذه القيم على صفحة Keys and Endpoint

    لقطة شاشة: مفاتيح مدخل Azure وصفحة نقطة النهاية.

هام

تذكر إزالة المفتاح من التعليمات البرمجية عند الانتهاء، وعدم نشره على الملأ مطلقًا. للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. لمزيد من المعلومات، راجعأمان خدمات الذكاء الاصطناعي Azure.

الرؤوس

لاستدعاء خدمة المترجم عبر واجهة برمجة تطبيقات REST، تحتاج إلى التأكد من تضمين العناوين التالية مع كل طلب. لا تقلق، نقوم بتضمين الرؤوس في نموذج التعليمات البرمجية في الأقسام التالية.

الرأس القيمة الشرط
Ocp-Apim-Subscription-Key مفتاح خدمة المترجم من مدخل Microsoft Azure.
  • مطلوب
Ocp-Apim-Subscription-Region المنطقة التي تم فيها إنشاء المورد الخاص بك.
  • مطلوب عند استخدام Azure الذكاء الاصطناعي متعدد الخدمات أو مورد إقليمي (جغرافي) مثل غرب الولايات المتحدة.
  • Optional عند استخدام مورد Translator لخدمة واحدة.
نوع المحتوى نوع محتوى الحمولة. القيمة المقبولة هي application/json أو charset = UTF-8.
  • مطلوب
طول المحتوى طول نص الطلب.
  • ‏‏اختياري
X-ClientTraceId معرّف GUID تم إنشاؤه بواسطة العميل لتعريف الطلب بشكل فريد. يمكنك حذف هذا الرأس إذا قمت بتضمين معرف التتبع في سلسلة الاستعلام باستخدام معلمة استعلام تسمى ClientTraceId.
  • ‏‏اختياري

إعداد التطبيق الخاص بك

  1. تأكد من أن لديك الإصدار الحالي من Visual Studio IDE.

    تلميح

    إذا كنت جديدًا على Visual Studio، فجرب مقدمة إلى وحدة Visual Studio النمطية Learn.

  2. افتح Visual Studio.

  3. في صفحة البدء، اختر Create a new project.

    لقطة شاشة: نافذة البدء لـ Visual Studio.

  4. في صفحة إنشاء مشروع جديد، أدخل وحدة التحكم في مربع البحث. اختر قالب تطبيق وحدة التحكم، ثم اختر التالي.

     لقطة شاشة: أنشأ Visual Studio صفحة مشروع جديدة.

  5. في نافذة الحوار تكوين مشروعك الجديد، أدخل translator_text_app في مربع اسم المشروع. اترك مربع الاختيار "Place solution and project in the same directory" غير محدد وحدد Next.

    لقطة شاشة: يقوم Visual Studio بتكوين نافذة حوار مشروع جديد.

  6. في نافذة الحوار Additional information، تأكد من تحديد .NET 6.0 (دعم طويل الأجل). اترك مربع الاختيار "Don't use top-level statements" غير محدد وحدد Create.

    لقطة شاشة: نافذة حوار المعلومات الإضافية لبرنامج Visual Studio.

قم بتثبيت حزمة Newtonsoft.json مع NuGet

  1. انقر بزر الماوس الأيمن فوق مشروع translator_تشغيل سريع الخاص بك وحدد Manage NuGet Packages....

    لقطة شاشة لمربع بحث حزمة NuGet.

  2. حدد علامة التبويب استعراض واكتب Newtonsoft.

    لقطة شاشة لنافذة تثبيت حزمة NuGet.

  3. حدد التثبيت من نافذة مدير الحزم الصحيحة لإضافة الحزمة إلى مشروعك.

    لقطة شاشة لزر تثبيت حزمة NuGet.

إنشاء التطبيق الخاص بك

ملاحظة

  • بدءًا من .NET 6، تولد المشاريع الجديدة باستخدام قالب console نمطًا جديدًا للبرنامج يختلف عن الإصدارات السابقة.
  • يستخدم المخرج الجديد ميزات C# الحديثة التي تبسط الكود الذي تحتاج إلى كتابته.
  • عندما تستخدم الإصدار الأحدث، تحتاج فقط إلى كتابة هيكل الأسلوبMain. لست بحاجة إلى تضمين بيانات عالية المستوى أو توجيهات عالمية باستخدام توجيهات أو استخدام ضمني للتوجيهات.
  • للمزيد من المعلومات، انظر قوالب C# جديدة تولد بيانات المستوى الأعلى .
  1. افتح الملف Program.cs.

  2. احذف التعليمة البرمجية الموجود مسبقاً، بما في ذلك السطر Console.WriteLine("Hello World!"). انسخ نماذج التعليمات البرمجية والصقها في ملف Program.cs للتطبيق الخاص بك. لكل نموذج تعليمة برمجية، تأكد من تحديث المفتاح ومتغيرات نقطة النهاية بقيم من مثيل Translator في مدخل Microsoft Azure.

  3. بمجرد إضافة نموذج التعليمة البرمجية المطلوب إلى التطبيق الخاص بك، اختر زر البدء الأخضر بجوار formRecognizer_تشغيل سريع لإنشاء البرنامج وتشغيله، أو اضغط على F5.

لقطة شاشة لزر تشغيل البرنامج في Visual Studio.

هام

تتطلب العينات في هذا الدليل مفاتيح ونقاط نهاية مشفرة. تذكر إزالة المفتاح من التعليمات البرمجية عند الانتهاء، وعدم نشره على الملأ مطلقًا. للإنتاج، ضَع في اعتبارك استخدام طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها. لمزيد من المعلومات، راجعأمان خدمات azure الذكاء الاصطناعي.

ترجمة النص

وتتمثل العملية الأساسية لخدمة المترجم في ترجمة النص. في هذا القسم، يمكنك إنشاء طلب يأخذ مصدر واحد (from) ويوفر مخرجين (to). ثم نراجع بعض المعلمات التي يمكن استخدامها لضبط كل من الطلب والاستجابة.

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

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية:

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

يمكنك التحقق من الاستهلاك (عدد الأحرف التي تم تحصيلها) لكل طلب في عناوين الاستجابة: حقل x-metered-usage .

اكتشاف اللغة

إذا كنت بحاجة إلى ترجمة، ولكنك لا تعرف لغة النص، يمكنك استخدام عملية اكتشاف اللغة. هناك أكثر من طريقة واحدة لتحديد لغة النص المصدر. في هذا القسم، ستتعلم كيفية استخدام الكشف عن اللغة باستخدام translate نقطة النهاية ونقطة detect النهاية.

اكتشاف اللغة المصدر أثناء الترجمة

إذا لم تقم بتضمين المعلمة from في طلب الترجمة، تحاول خدمة المترجم اكتشاف لغة النص المصدر. في الاستجابة، تحصل على اللغة المكتشفة (language) ودرجة الثقة (score). كلما اقترب score من 1.0، فهذا يعني أن هناك ثقة متزايدة في صحة الاكتشاف.

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

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية:

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

اكتشاف اللغة المصدر بدون ترجمة

من الممكن استخدام خدمة «المترجم» للكشف عن لغة النص المصدر دون إجراء ترجمة. للقيام بذلك، يمكنك استخدام /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 تتضمن استجابة نقطة النهاية عمليات الكشف البديلة، وتشير إلى ما إذا كانت الترجمة والترجمة النصية مدعومة لجميع اللغات المكتشفة. بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية:

[
   {
      "language":"de",

      "score":1.0,

      "isTranslationSupported":true,

      "isTransliterationSupported":false
   }
]

نص مكتوب بحروف لغة أخرى

التعريب هو عملية تحويل كلمة أو عبارة من النص (الأبجدية) للغة إلى أخرى على أساس التشابه الصوتي. على سبيل المثال، يمكنك استخدام التعريب لتحويل "สวัสดี" (thai) إلى "sawatdi" (latn). هناك أكثر من طريقة لأداء التعريب. في هذا القسم، ستتعلم كيفية استخدام الكشف عن اللغة باستخدام translate نقطة النهاية ونقطة transliterate النهاية.

التعريب أثناء الترجمة

إذا كنت تترجم إلى لغة تستخدم أبجدية مختلفة (أو أرقام هواتف) عن المصدر، فقد تحتاج إلى تعريب. في هذا المثال، نترجم "مرحبا" من العربية إلى التايلاندية. بالإضافة إلى الحصول على الترجمة باللغة التايلاندية، يمكنك الحصول على تحويل العبارة المترجمة باستخدام الأبجدية اللاتينية.

للحصول على التعريب من نقطة النهاية translate، استخدم المعلمة toScript.

ملاحظة

للحصول على قائمة كاملة باللغات المتاحة وخيارات التعريب، راجع دعم اللغة.

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

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية: ضع في اعتبارك أن الاستجابة من نقطة النهاية translate تتضمن اللغة المصدر المكتشفة مع درجة الثقة، والترجمة باستخدام أبجدية لغة الإخراج، والتعريب باستخدام الأبجدية اللاتينية.

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

التعريب بدون ترجمة

يمكنك أيضاً استخدام نقطة النهاية transliterate للحصول على تعريب. عند استخدام نقطة نهاية التعريب، يجب توفير اللغة المصدر (language)، والنص / الأبجدية المصدر (fromScript)، والنص / الأبجدية الناتجة (toScript) كمعلمات. في هذا المثال، سنحصل على الترجمة الصوتية لـ สวัสดี เพื่อน! วันนี้คุณทำอะไร.

ملاحظة

للحصول على قائمة كاملة باللغات المتاحة وخيارات التعريب، راجع دعم اللغة.

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

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية: على النقيض من الاستدعاء لنقطة النهاية translate، يرجع transliterate فقط text والإخراج script.

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

      "script":"latn"
   }
]

الحصول على طول الجملة

مع خدمة المترجم، يمكنك الحصول على عدد الأحرف لجملة أو سلسلة من الجمل. يتم إرجاع الاستجابة كصفيف، مع عدد الأحرف لكل جملة تم الكشف عنها. يمكنك الحصول على أطوال الجملة مع نقطتي النهاية translate وbreaksentence.

الحصول على مدة الجملة أثناء الترجمة

يمكنك الحصول على عدد الأحرف لكل من إخراج النص المصدر والترجمة باستخدام نقطة النهاية translate. لإرجاع طول الجملة (srcSenLen وtransSenLen)، يجب تعيين المعلمة includeSentenceLength إلى 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);
        }
    }
}

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية: بالإضافة إلى اللغة المصدر المكتشفة والترجمة، تحصل على عدد الأحرف لكل جملة تم اكتشافها لكل من المصدر (srcSentLen) والترجمة (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
               ]
            }
         }
      ]
   }
]

الحصول على طول الجملة دون ترجمة

تتيح لك خدمة المترجم أيضا طلب طول الجملة دون ترجمة باستخدام نقطة النهاية 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);
        }
    }
}

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية: على عكس الاستدعاء إلى نقطة النهاية translate، يرجع breaksentence فقط عدد الأحرف للنص المصدر في صفيف يسمى sentLen.

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

بحث القاموس (ترجمات بديلة)

باستخدام نقطة النهاية، يمكنك الحصول على ترجمات بديلة لكلمة أو عبارة. على سبيل المثال، عند ترجمة كلمة "أشعة الشمس" من en إلى es، ترجع نقطة النهاية هذه "luz solarو"rayos solares و"" و"soleamiento" و"solو" و"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);
        }
    }
}

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية: دعنا نفحص الاستجابة عن كثب لأن JSON أكثر تعقيداً من بعض الأمثلة الأخرى في هذه المقالة. يتضمن صفيف translations قائمة بالترجمات. يتضمن كل عنصر في هذا الصفيف نقاط الثقة (confidence)، والنص الأمثل لعرض المستخدم النهائي (displayTarget)، والنص العادي (normalizedText)، وجزء من الكلام (posTag)، ومعلومات حول الترجمة السابقة (backTranslations). لمزيد من المعلومات حول الاستجابة، راجع بحث القاموس

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

أمثلة القاموس (ترجمات في السياق)

بعد إجراء بحث في القاموس، مرر النص المصدر والترجمة إلى dictionary/examples نقطة النهاية، للحصول على قائمة بالأمثلة التي تعرض كلا المصطلحين في سياق جملة أو عبارة. بناء على المثال السابق، يمكنك استخدام normalizedText و normalizedTarget من استجابة البحث عن القاموس ك text و translation على التوالي. مطلوب اللغة المصدر (from) ومعلمات هدف الإخراج (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);
        }
    }
}

بعد الاستدعاء الناجح، يجب أن تشاهد الاستجابة التالية: لمزيد من المعلومات حول الاستجابة، راجع بحث القاموس

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

استكشاف الأخطاء وإصلاحها

التعليمات البرمجية لحالة HTTP الشائعة

رمز حالة HTTP الوصف السبب المحتمل
200 موافق الطلب ناجح.
400 طلب غير صالح معلمة مطلوبة مفقودة أو فارغة أو خالية. أو، القيمة التي تم تمريرها إلى معلمة مطلوبة أو اختيارية غير صالحة. مشكلة شائعة هي رأس طويل جدا.
401 غير مصرح به الطلب غير مفوض به. تحقق للتأكد من أن المفتاح أو الرمز المميز صالح وفي المنطقة الصحيحة. راجع أيضاًالمصادقة.
429 عدد كبير جدًا من الطلبات تجاوزت الحصة النسبية أو معدل الطلبات المسموح بها لاشتراكك.
502 بوابة غير صالحة مشكلة على جانب الشبكة أو الخادم. قد يشير أيضاً إلى رؤوس غير صالحة.

مستخدمو Java

إذا كنت تواجه مشكلات في الاتصال، فقد تكون شهادة TLS/SSL الخاصة بك قد انتهت صلاحيتها. لحل هذه المشكلة، قم بتثبيت DigiCertGlobalRootG2.crt إلى مخزن خاص بك.

الخطوات التالية