Traduceți programatic textul utilizând API-ul Translator Text

Data creării paginii :

Ce să pregătești în avans

Creați un cont Microsoft Azure în prealabil. Procedura de creare este descrisă pe această pagină.

De asemenea, de data aceasta ne vom înregistra cu versiunea gratuită, așa că vă rugăm să o schimbați în timp util dacă doriți să utilizați versiunea plătită.

Crearea resurselor API

Deschideți portalul Microsoft Azure și faceți clic pe Nou în meniul din stânga.

「新規」をクリック

Selectați Inteligență + Analiză din meniul extins.

「Intelligence + analytics」を選択

Din meniul extins, selectați API-uri pentru servicii cognitive (Previzualizare).

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

Când apare ecranul de creare, introduceți un nume la alegere (va fi numele afișat pe tabloul de bord) și selectați "Încercare gratuită" pentru abonament. Apoi faceți clic pe tipul de API.

API type をクリック

Selectați API Text traducător din lista de API-uri.

「Translator Text API」を選択

Apoi selectați Nivelul de prețuri.

Pricing tier を選択

Deoarece utilizați versiunea gratuită, faceți clic pe "F0 Free" și faceți clic pe butonul "Selectați". Versiunea gratuită poate converti până la 2 milioane de caractere pe lună.

「F0 Free」を選択

Dacă înregistrați un serviciu pentru prima dată, creați un nou grup de resurse. Puteți grupa resursele pe care le creați în grupuri cu orice nume.

O locație este un loc pentru a pune un serviciu. Atunci când se dezvoltă în principal în Japonia, este mai probabil să se îmbunătățească performanța dacă este instalat într-o Japonie.

În cele din urmă, verificați "Fixați la tabloul de bord" și faceți clic pe butonul "Creare".

作成

Tabloul de bord are resursa pe care ați creat-o mai devreme, așa că faceți clic pe ea pentru a o deschide.

リソースを開く

Cred că prezentarea generală este deschisă, așa că verificați adresa URL pentru "Endpoint" din dreapta. Aceasta este adresa URL a API-ului care ar trebui să fie accesată mai întâi prin autentificare. Cu toate acestea, rareori se schimbă și este descris în programul pe care îl voi introduce mai târziu, deci este bine să ne amintim că este aici pentru moment.

Endpoint

Selectați Taste din meniu.

「Keys」を選択

Notați TASTA 1 care apare și utilizați-l pentru autentificare. Cred că a avea două chei este, probabil, o rezervă. Apropo, dacă cheia se scurge în exterior dintr-un anumit motiv, o puteți recrea cu "Regenerați..." de mai sus.

「KEY 1」をメモ

Aceasta încheie configurarea pe partea Azure.

Accesați programatic API-ul pentru a traduce textul

Acum este timpul să creați de fapt un program, astfel încât să puteți traduce textul. Utilizați Visual Studio 2015 pentru a crea o aplicație WPF și a crea un ecran care arată astfel:

Introduceți text în De la și, în Limbă, introduceți limba în care doriți să efectuați conversia în ce limbă. Și dacă faceți clic pe butonul "Convert Run", veți putea vedea textul tradus în "Destinația" de mai jos.

XAML (MainWindow.xaml)

Nu afectează în mod direct traducerea, deci numai codul este inclus.

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

Obțineți simbolul de acces (MainWindow.xaml.cs)

Fluxul de bază pentru traducerea textului este după cum urmează:

  1. Arunca TASTA 1 în API pentru a obține un simbol de acces.
  2. Utilizați simbolul de acces pentru a arunca textul la serviciul de traducere pentru a obține textul tradus.
  3. Obțineți din nou simbolul de acces, dacă este necesar

Este vorba de a.

În primul rând, să definim o metodă de a obține un simbol de acces și de a-l face ușor de utilizat. Dacă treceți cheia 1 obținută mai devreme ca argument, puteți obține simbolul de acces. De asemenea, poate fi obținut prin procesare sincronă, dar din moment ce C# 5.0 asincron / așteptare poate fi utilizat, să facem un proces asincron cu ușurință.

Ca punct, setați URL-ul la Endpoint + "/issueToken" așa cum este confirmat în Azure și setați TASTA 1 obținută cu "Ocp-Apim-Subscription-Key" ca cheie în antetul care urmează să fie trimis.

Ca răspuns, șirul simbolului de acces poate fi obținut așa cum este, deci este folosit ca valoare returnată. Apropo, acest simbol de acces este valabil doar timp de 10 minute.

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

Accesați API-ul pentru traducerea textului (MainWindow.xaml.cs)

Acest lucru este, de asemenea, făcut într-o metodă pentru a face mai ușor de utilizat. Argumentele vă permit să specificați simbolul de acces pe care îl obțineți și textul de tradus și ce limbă să convertiți în ce limbă.

Rețineți că adresa URL pe care o accesați este diferită de adresa URL de unde ați obținut simbolul. Textul și limba care urmează să fie traduse sunt trimise ca un șir de interogare în URL-ul, așa că scapă-le folosind "Uri.EscapeDataString" în avans.

Metoda GET trimite apoi autorizarea antetului cu schema "Purtător" și simbolul din parametru.

Deoarece răspunsul este luat în format XML, XDocument este utilizat pentru a regăsi textul tradus în interior. Cu toate acestea, în cazul în care textul conține xml escape caractere, poate pentru că utilizați XML, acestea pot rămâne scăpat. Convertiți-l după cum este necesar.

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

Procesul de executare a butoanelor (MainWindow.xaml.cs)

După ce ați implementat două metode, tot ce trebuie să faceți este să sunați la fiecare. Aveți posibilitatea să traduceți text prin setarea KEY1 și specificând valoarea introdusă pentru fiecare metodă. Deoarece este un proces asincron, vă rugăm să adăugați asincron la metoda de manipulare a butoanelor.

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

Lista limbilor traductibile

Se recomandă să consultați următoarele pagini Micorsoft: Deoarece este unul dintre serviciile cloud, acesta poate fi modificat în orice moment.