مترجم متن اے پی آئی کا استعمال کرتے ہوئے پروگرامی طور پر متن کا ترجمہ کریں

صفحہ تخلیق تاریخ :

پیشگی کیا تیار کرنا ہے

پہلے سے مائیکروسافٹ ایجور اکاؤنٹ بنائیں۔ تخلیق کا طریقہ کار اس صفحے پر بیان کیا گیا ہے۔

اس کے علاوہ، اس بار ہم مفت ورژن کے ساتھ رجسٹر کریں گے، لہذا اگر آپ ادائیگی شدہ ورژن استعمال کرنا چاہتے ہیں تو براہ کرم اسے بروقت تبدیل کریں۔

اے پی آئی وسائل بنائیں

مائیکروسافٹ ایجور پورٹل کھولیں اور بائیں مینو میں نیا پر کلک کریں۔

「新規」をクリック

توسیع شدہ مینیو سے ذہانت + تجزیات منتخب کریں۔

「Intelligence + analytics」を選択

توسیع شدہ مینیو سے، کاگنیٹو سروسز اے پی آئی (پیش منظر) منتخب کریں۔

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

جب تخلیق سکرین ظاہر ہو جائے تو اپنی پسند کا نام درج کریں (یہ ڈیش بورڈ پر ڈسپلے نام ہوگا) اور سبسکرپشن کے لیے "فری ٹرائل" منتخب کریں۔ اس کے بعد اے پی آئی قسم پر کلک کریں۔

API type をクリック

اے پی آئی کی فہرست میں سے مترجم متن اے پی آئی منتخب کریں۔

「Translator Text API」を選択

اس کے بعد قیمتوں کا درجہ منتخب کریں۔

Pricing tier を選択

چونکہ آپ مفت ورژن استعمال کر رہے ہیں، اس لیے "ایف 0 مفت" پر کلک کریں اور "منتخب کریں" بٹن پر کلک کریں۔ مفت ورژن ماہانہ ٢ ملین حروف تک تبدیل کر سکتا ہے۔

「F0 Free」を選択

اگر آپ پہلی بار سروس رجسٹر کر رہے ہیں تو ایک نیا ریسورس گروپ بنائیں۔ آپ اپنے بنائے ہوئے وسائل کو کسی بھی نام کے گروپوں میں گروپ کر سکتے ہیں۔

ایک مقام خدمت رکھنے کی جگہ ہے۔ بنیادی طور پر جاپان میں ترقی کرتے وقت اگر اسے جاپان میں نصب کیا جائے تو کارکردگی میں بہتری آنے کا امکان زیادہ ہوتا ہے۔

آخر میں، "ڈیش بورڈ پر پن" چیک کریں اور "تخلیق کریں" بٹن پر کلک کریں۔

作成

ڈیش بورڈ میں وہ وسیلہ ہے جو آپ نے پہلے بنایا تھا، لہذا اسے کھولنے کے لیے اس پر کلک کریں۔

リソースを開く

میرے خیال میں جائزہ کھلا ہے، لہذا دائیں طرف "اختتامی نقطہ" کے لئے یو آر ایل چیک کریں۔ یہ اے پی آئی کا یو آر ایل ہے جس تک پہلے توثیق کے ذریعے رسائی حاصل کی جانی چاہئے۔ تاہم، یہ شاذ و نادر ہی تبدیل ہوتا ہے، اور پروگرام میں بیان کیا گیا ہے جسے میں بعد میں متعارف کراتی ہوں، لہذا یہ یاد رکھنا اچھا ہے کہ یہ فی الحال یہاں ہے۔

Endpoint

مینیو سے کلیدیں منتخب کریں۔

「Keys」を選択

ظاہر ہونے والی کلید 1 کا نوٹ بنائیں اور اس کی تصدیق کے لئے استعمال کریں۔ میرے خیال میں دو چابیاں رکھنا شاید ایک ریزرو ہے۔ ویسے، اگر کلید کسی وجہ سے باہر لیک, آپ اوپر "دوبارہ پیدا ..." کے ساتھ اسے دوبارہ تخلیق کر سکتے ہیں.

「KEY 1」をメモ

اس سے ایجور سائیڈ پر سیٹ اپ ختم ہوتا ہے۔

متن کا ترجمہ کرنے کے لیے پروگرامکے لحاظ سے اے پی آئی تک رسائی

اب وقت آگیا ہے کہ اصل میں ایک پروگرام بنایا جائے تاکہ آپ متن کا ترجمہ کر سکیں۔ ڈبلیو پی ایف ایپلی کیشن بنانے اور ایسی سکرین بنانے کے لیے ویژیول سٹوڈیو 2015 استعمال کریں جو اس طرح نظر آتی ہے:

متن در از، اور زبان میں درج کریں، داخل کریں کہ آپ کس زبان میں تبدیل کرنا چاہتے ہیں۔ اور اگر آپ "کنورٹ رن" بٹن پر کلک کریں تو آپ نیچے "منزل" میں ترجمہ شدہ متن دیکھ سکیں گے۔

ایکس اے ایم ایل (مین ونڈو.ایکس ایم ایل)

یہ براہ راست ترجمہ پر اثر انداز نہیں ہوتا، لہذا صرف ضابطہ شامل ہے۔

<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>

رسائی ٹوکن حاصل کریں (مین ونڈو.ایکس ایم ایل.cs)

متن ترجمہ کے لیے بنیادی بہاؤ درج ذیل ہے:

  1. رسائی ٹوکن حاصل کرنے کے لئے کی ١ کو اے پی آئی میں پھینک دیں۔
  2. ترجمہ شدہ متن حاصل کرنے کے لیے متن کو ترجمہ خدمت پر پھینکنے کے لیے رسائی ٹوکن کا استعمال کریں۔
  3. ضرورت پڑنے پر دوبارہ رسائی ٹوکن حاصل کریں

یہ آتا ہے.

سب سے پہلے، آئیے رسائی ٹوکن حاصل کرنے اور اسے استعمال کرنے میں آسان بنانے کے لئے ایک طریقہ کی وضاحت کرتے ہیں۔ اگر آپ دلیل کے طور پر پہلے حاصل کردہ کلید 1 پاس کرتے ہیں، تو آپ رسائی ٹوکن حاصل کرسکتے ہیں۔ یہ ہم وقت سازی پروسیسنگ کے ذریعے بھی حاصل کیا جا سکتا ہے، لیکن چونکہ سی# 5.0 ہم آہنگی/انتظار کا استعمال کیا جا سکتا ہے، آئیے اسے آسانی سے ایک ہم آہنگ عمل بناتے ہیں۔

ایک نقطہ کے طور پر، ایجور میں تصدیق کے مطابق یو آر ایل کو اختتامی نقطہ + "/جاری ٹوکن" پر سیٹ کریں، اور بھیجے جانے والے ہیڈر میں کلید کے طور پر "او سی پی-اپیم-سبسکرپشن-کلید" کے ساتھ حاصل کردہ کلید 1 سیٹ کریں۔

جواب کے طور پر، رسائی ٹوکن کی سٹرنگ جیسا ہے ویسا ہی حاصل کیا جا سکتا ہے، لہذا اسے واپسی کی قدر کے طور پر استعمال کیا جاتا ہے۔ ویسے، یہ رسائی ٹوکن صرف 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;
    }
  }
}

متن ترجمہ کے لیے اے پی آئی تک رسائی (مین ونڈو.ایکس ایم ایل.cs)

اسے استعمال میں آسان بنانے کے لئے ایک طریقہ بھی بنایا جاتا ہے۔ دلائل آپ کو حاصل کردہ رسائی ٹوکن اور ترجمہ کرنے کے لئے متن اور کس زبان کو کس زبان میں تبدیل کرنے کی اجازت دیتے ہیں۔

نوٹ کریں کہ آپ جس یو آر ایل تک رسائی حاصل کرتے ہیں وہ یو آر ایل سے مختلف ہے جہاں آپ نے ٹوکن حاصل کیا تھا۔ ترجمہ کیا جانے والا متن اور زبان یو آر ایل میں طلب کی سٹرنگ کے طور پر بھیجا جاتا ہے، لہذا پیشگی "اڑی.فرار ڈیٹا سٹرنگ" کا استعمال کرتے ہوئے ان سے بچ جائیں۔

اس کے بعد جی ای ٹی طریقہ شجرہ "بیئرر" اور پیرامیٹر میں ٹوکن کے ساتھ ہیڈر کی اجازت بھیجتا ہے۔

چونکہ جواب ایکس ایم ایل فارمیٹ میں لیا جاتا ہے، اس لیے ایکس دستاویز کا استعمال اندر ترجمہ شدہ متن کی بازیافت کے لیے کیا جاتا ہے۔ تاہم، اگر متن میں ایکس ایم ایل فرار کریکٹر شامل ہیں، شاید اس لئے کہ آپ ایکس ایم ایل استعمال کر رہے ہیں، تو وہ فرار ہو سکتے ہیں۔ ضرورت کے مطابق اسے تبدیل کریں۔

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

بٹن عمل درآمد (مین ونڈو.ایکس ایم ایل.cs)

ایک بار جب آپ دو طریقوں پر عمل درآمد کر چکے ہیں، تو آپ کو صرف ہر ایک کو کال کرنا ہے۔ آپ کی1 سیٹنگ اور ہر طریقہ کار کے لیے داخل قدر کا اختصاص کرکے متن کا ترجمہ کرسکتے ہیں۔ چونکہ یہ ایک ہم وقت ساز عمل ہے، براہ کرم بٹن ہینڈلنگ کے طریقہ کار میں ہم آہنگی شامل کریں۔

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

قابل ترجمہ زبانوں کی فہرست

آپ مندرجہ ذیل مائکورسافٹ صفحات کا حوالہ دینا چاہیں گے: چونکہ یہ کلاؤڈ سروسز میں سے ایک ہے، اس لیے اسے کسی بھی وقت تبدیل کیا جاسکتا ہے۔