ترجمة النص برمجيا باستخدام واجهة برمجة تطبيقات نص المترجم

تاريخ إنشاء الصفحة :

ما يجب إعداده مقدما

قم بإنشاء حساب Microsoft Azure مسبقا. يتم وصف إجراء الإنشاء في هذه الصفحة.

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

إنشاء موارد واجهة برمجة التطبيقات

افتح مدخل Microsoft Azure وانقر فوق جديد في القائمة اليمنى.

「新規」をクリック

حدد الذكاء + التحليلات من القائمة الموسعة.

「Intelligence + analytics」を選択

من القائمة الموسعة، حدد واجهات برمجة تطبيقات الخدمات المعرفية (معاينة).

「Cognitive Services APIs (プレビュー)」を選択

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

API type をクリック

حدد واجهة برمجة تطبيقات نص المترجم من قائمة واجهات برمجة التطبيقات.

「Translator Text API」を選択

ثم حدد طبقة التسعير.

Pricing tier を選択

نظرا لأنك تستخدم الإصدار المجاني ، انقر فوق "F0 Free" وانقر فوق الزر "تحديد". يمكن للنسخة المجانية تحويل ما يصل إلى 2 مليون حرف شهريا.

「F0 Free」を選択

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

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

أخيرا ، حدد "تثبيت لوحة المعلومات" وانقر فوق الزر "إنشاء".

作成

تحتوي لوحة المعلومات على المورد الذي أنشأته سابقا، لذا انقر فوقه لفتحه.

リソースを開く

أعتقد أن النظرة العامة مفتوحة ، لذا تحقق من عنوان URL ل "نقطة النهاية" على اليمين. هذا هو عنوان URL لواجهة برمجة التطبيقات التي يجب الوصول إليها عن طريق المصادقة أولا. ومع ذلك ، نادرا ما يتغير ، ويتم وصفه في البرنامج الذي سأقدمه لاحقا ، لذلك من الجيد أن نتذكر أنه موجود هنا في الوقت الحالي.

Endpoint

حدد مفاتيح من القائمة.

「Keys」を選択

قم بتدوين المفتاح 1 الذي يظهر واستخدمه للمصادقة. أعتقد أن وجود مفتاحين هو على الأرجح احتياطي. بالمناسبة ، إذا تسرب المفتاح إلى الخارج لسبب ما ، فيمكنك إعادة إنشائه باستخدام "Renewrate ..." أعلاه.

「KEY 1」をメモ

هذا يختتم الإعداد على جانب Azure.

الوصول برمجيا إلى واجهة برمجة التطبيقات لترجمة النص

الآن حان الوقت لإنشاء برنامج بالفعل حتى تتمكن من ترجمة النص. استخدم Visual Studio 2015 لإنشاء تطبيق WPF وإنشاء شاشة تبدو كالتالي:

أدخل نصا في من، وفي اللغة، أدخل اللغة التي تريد التحويل إليها إلى أي لغة. وإذا قمت بالنقر فوق الزر "تحويل تشغيل" ، فستتمكن من رؤية النص المترجم في "الوجهة" أدناه.

XAML (MainWindow.xaml)

لا يؤثر بشكل مباشر على الترجمة ، لذلك يتم تضمين الرمز فقط.

<Window x:Class="AzureTranslatorTextApi.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:AzureTranslatorTextApi"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="*"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Label x:Name="label" Content="変換元" HorizontalAlignment="Left" Grid.Row="0"/>
    <TextBox x:Name="textBoxInput" Margin="4" Text="ここに変換するテキストを入力します。" Grid.Row="1" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"/>
    <Label x:Name="labelLang" Content="言語" HorizontalAlignment="Left" Grid.Row="2"/>
    <Label x:Name="labelLangFrom" Content="from" HorizontalAlignment="Left" Grid.Row="2" Margin="56,0,0,0"/>
    <TextBox x:Name="textBoxLangFrom" Margin="96,4,0,4"  HorizontalAlignment="Left" Text="ja" Grid.Row="2" Width="50"/>
    <Label x:Name="labelLangTo" Content="to" HorizontalAlignment="Left" Grid.Row="2" Margin="164,0,0,0"/>
    <TextBox x:Name="textBoxLangTo" Margin="190,4,0,4"  HorizontalAlignment="Left" Text="en" Grid.Row="2" Width="50" />
    <Button x:Name="button" Content="変換実行"  Margin="24,4" Height="24" Grid.Row="3" Click="button_Click"/>
    <Label x:Name="label_Copy" Content="変換先" HorizontalAlignment="Left" Grid.Row="4"/>
    <TextBox x:Name="textBoxOutput" Margin="4" Grid.Row="5" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" IsReadOnly="True" Background="#FFE8E8E8" HorizontalScrollBarVisibility="Auto"/>
  </Grid>
</Window>

الحصول على رمز الوصول (MainWindow.xaml.cs)

التدفق الأساسي لترجمة النص هو كما يلي:

  1. قم برمي KEY 1 في واجهة برمجة التطبيقات للحصول على رمز مميز للوصول.
  2. استخدم رمز الوصول المميز لإلقاء النص على خدمة الترجمة للحصول على النص المترجم.
  3. احصل على رمز الوصول مرة أخرى إذا لزم الأمر

يتعلق الأمر.

أولا ، دعنا نحدد طريقة للحصول على رمز وصول مميز وجعله سهل الاستخدام. إذا قمت بتمرير المفتاح 1 الذي تم الحصول عليه سابقا كوسيطة ، فيمكنك الحصول على رمز الوصول. يمكن أيضا الحصول عليها عن طريق المعالجة المتزامنة ، ولكن نظرا لأنه يمكن استخدام C # 5.0 غير متزامن / انتظار ، دعنا نجعلها عملية غير متزامنة بسهولة.

كنقطة ، قم بتعيين عنوان URL إلى Endpoint + "/issueToken" كما هو مؤكد في Azure ، وقم بتعيين KEY 1 الذي تم الحصول عليه باستخدام "Ocp-Apim-Subscription-Key" كمفتاح في الرأس المراد إرساله.

كاستجابة ، يمكن الحصول على سلسلة رمز الوصول المميز كما هي ، لذلك يتم استخدامه كقيمة إرجاع. بالمناسبة ، رمز الوصول هذا صالح فقط لمدة 10 دقائق.

/// <summary>
/// 非同期でアクセストークンを取得します。
/// </summary>
/// <param name="subscriptionKey">認証に必要なキー文字列。</param>
/// <returns>取得したアクセストークン。</returns>
private async Task<string> GetAccessTokenAsync(string subscriptionKey)
{
  using (var client = new HttpClient())
  using (var request = new HttpRequestMessage())
  {
    request.Method = HttpMethod.Post;
    request.RequestUri = new Uri("https://api.cognitive.microsoft.com/sts/v1.0/issueToken");
    request.Content = new StringContent(string.Empty);
    request.Headers.TryAddWithoutValidation("Ocp-Apim-Subscription-Key", subscriptionKey);
    using (var response = await client.SendAsync(request))
    {
      response.EnsureSuccessStatusCode();
      var token = await response.Content.ReadAsStringAsync();

      Trace.WriteLine($"token={token}");

      return token;
    }
  }
}

الوصول إلى واجهة برمجة التطبيقات لترجمة النصوص (MainWindow.xaml.cs)

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

لاحظ أن عنوان URL الذي تدخل إليه يختلف عن عنوان URL الذي حصلت فيه على الرمز المميز. يتم إرسال النص واللغة المراد ترجمتهما كسلسلة استعلام في عنوان URL ، لذا اهرب منهما باستخدام "Uri.EscapeDataString" مقدما.

ثم ترسل طريقة GET تفويض الرأس مع المخطط "Bearer" والرمز المميز في المعلمة.

نظرا لأن الاستجابة يتم أخذها بتنسيق XML ، يتم استخدام XDocument لاسترداد النص المترجم في الداخل. ومع ذلك، إذا كان النص يحتوي على أحرف هروب XML، ربما لأنك تستخدم XML، فقد تظل هاربة. قم بتحويله حسب الحاجة.

/// <summary>
/// テキストを翻訳します。
/// </summary>
/// <param name="token">API のアクセスに必要なトークン。</param>
/// <param name="text">翻訳するテキスト、</param>
/// <param name="fromLang">翻訳元の言語。</param>
/// <param name="toLang">翻訳先の言語。</param>
/// <returns>翻訳されたテキスト。</returns>
private async Task<string> TranslateText(string token, string text, string fromLang, string toLang)
{
  using (var client = new HttpClient())
  using (var request = new HttpRequestMessage())
  {
    // URL につけて送信するのでエンコードする
    var escapeText = Uri.EscapeDataString(text);
    Trace.WriteLine($"escapeText={escapeText}");

    var uriStr = "http://api.microsofttranslator.com/V2/Http.svc/Translate?"
      + $"text={escapeText}&from={fromLang}&to={toLang}";

    request.Method = HttpMethod.Get;
    request.RequestUri = new Uri(uriStr);
    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
    using (var response = await client.SendAsync(request))
    {
      response.EnsureSuccessStatusCode();
      var resultText = await response.Content.ReadAsStringAsync();

      // <string>XXXXXX</string> 形式で取得されるので XDocument で操作する
      XDocument xdoc = XDocument.Parse(resultText);

      Trace.WriteLine($"xdoc={xdoc.ToString()}");

      // XML エスケープ対象文字が正しく変換されない場合があるので
      // 必要があれば対処すること
      return xdoc.Descendants().First().Value;
    }
  }
}

عملية تنفيذ الزر (MainWindow.xaml.cs)

بمجرد تنفيذ طريقتين ، كل ما عليك فعله هو الاتصال بكل طريقة. يمكنك ترجمة النص عن طريق تعيين KEY1 وتحديد القيمة المدخلة لكل طريقة. نظرا لأنها عملية غير متزامنة ، يرجى إضافة غير متزامن إلى طريقة معالجة الأزرار.

private async void button_Click(object sender, RoutedEventArgs e)
{
  // ここに認証キー(KEY1)を入力してください
  string subscriptionKey = "XXXXXXXXX";

  // アクセストークンを取得します。有効時間は10分程度です。(おそらく)
  var token = await GetAccessTokenAsync(subscriptionKey);

  // テキストを翻訳し表示します
  textBoxOutput.Text = await TranslateText(token, textBoxInput.Text, textBoxLangFrom.Text, textBoxLangTo.Text);
}

قائمة اللغات القابلة للترجمة

قد ترغب في الرجوع إلى صفحات Micorsoft التالية: نظرا لأنها واحدة من الخدمات السحابية ، فقد يتم تغييرها في أي وقت.