Käännä teksti ohjelmallisesti Translator Text API:n avulla

Sivun luontipäivämäärä :

Mitä valmistautua etukäteen

Luo Microsoft Azure -tili etukäteen. Luomismenettely on kuvattu tällä sivulla.

Tällä kertaa rekisteröidymme myös ilmaiseen versioon, joten vaihda se ajoissa, jos haluat käyttää maksettua versiota.

API-resurssien luominen

Avaa Microsoft Azure -portaali ja valitse vasemmanpuoleisesta valikosta Uusi.

「新規」をクリック

Valitse laajennetusta valikosta Älykkyys + Analytiikka.

「Intelligence + analytics」を選択

Valitse laajennetusta valikosta Cognitive Services -ohjelmointirajapinnat (esiversio).

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

Kun luontinäyttö tulee näkyviin, kirjoita haluamasi nimi (se on näyttönimi kojelaudassa) ja valitse tilaukselle "Ilmainen kokeilu". Napsauta sitten API-tyyppi.

API type をクリック

Valitse Ohjelmointirajapintojen luettelosta Translator Text API.

「Translator Text API」を選択

Valitse sitten Hinnoittelutaso.

Pricing tier を選択

Koska käytät ilmaista versiota, napsauta "F0 Free" ja napsauta "Valitse" -painiketta. Ilmainen versio voi muuntaa jopa 2 miljoonaa merkkiä kuukaudessa.

「F0 Free」を選択

Jos rekisteröit palvelun ensimmäistä kertaa, luo uusi resurssiryhmä. Voit ryhmitellä luomasi resurssit minkä tahansa nimisiin ryhmiin.

Sijainti on paikka palvelun järjestämiseen. Kun se kehittyy pääasiassa Japanissa, se parantaa todennäköisemmin suorituskykyä, jos se asennetaan Japaniin.

Valitse lopuksi "Kiinnitä kojelautaan" ja napsauta "Luo" -painiketta.

作成

Koontinäytössä on aiemmin luomasi resurssi, joten avaa se napsauttamalla sitä.

リソースを開く

Luulen, että yleiskatsaus on auki, joten tarkista oikealla olevan "Päätepisteen" URL-osoite. Tämä on sen ohjelmointirajapinnan URL-osoite, jota tulisi käyttää ensin todennuksella. Se kuitenkin muuttuu harvoin, ja se on kuvattu ohjelmassa, jonka esittelen myöhemmin, joten on hyvä muistaa, että se on täällä toistaiseksi.

Endpoint

Valitse valikosta Näppäimet.

「Keys」を選択

Kirjoita muistiin näkyviin tuleva AVAIN 1 ja käytä sitä todentamiseen. Luulen, että kahden avaimen omistaminen on luultavasti varaus. Muuten, jos avain vuotaa jostain syystä ulkopuolelle, voit luoda sen uudelleen yllä olevalla "Regeneroi...".

「KEY 1」をメモ

Tämä päättää asennuksen Azure-puolella.

Käytä ohjelmointirajapintaa tekstin kääntämiseen

Nyt on aika luoda ohjelma, jotta voit kääntää tekstin. Visual Studio 2015:n avulla voit luoda WPF-sovelluksen ja luoda seuraavanlaisen näytön:

Kirjoita teksti Lähettäjä- ja Kieli-kohtaan, kirjoita kieli, jolle haluat muuntaa muunnettavan kielen. Ja jos napsautat "Muunna suorita" -painiketta, näet käännetyn tekstin alla olevassa "Määränpäässä".

XAML (MainWindow.xaml)

Se ei vaikuta suoraan käännökseen, joten vain koodi sisältyy.

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

Hanki käyttöoikeustunnus (MainWindow.xaml.cs)

Tekstin kääntämisen perusvirta on seuraava:

  1. Heitä AVAIN 1 ohjelmointirajapintaan saadaksesi käyttöoikeustietueen.
  2. Käytä käyttöoikeustietuetta tekstin heittämiseen käännöspalveluun, jotta saat käännetyn tekstin.
  3. Hanki käyttöoikeustietue tarvittaessa uudelleen

Se tulee.

Määritellään ensin menetelmä käyttöoikeustietueen saamiseksi ja sen käytön helpottamiseksi. Jos välität argumenttina aiemmin saadun AVAIMEN 1, voit saada käyttöoikeustietueen. Se voidaan saada myös synkronisella käsittelyllä, mutta koska C # 5.0 asynkronista / odottaa voidaan käyttää, tehdään siitä asynkroninen prosessi helposti.

Aseta url-osoitteeksi Endpoint + "/issueToken", kuten Azuressa on vahvistettu, ja aseta avain 1, joka on saatu lähetettävän otsikon avaimeksi "Ocp-Apim-Subscription-Key".

Vastauksena käyttöoikeustietueen merkkijono voidaan saada sellaisenaan, joten sitä käytetään palautusarvona. Muuten, tämä käyttöoikeustietue on voimassa vain 10 minuuttia.

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

Käytä tekstin kääntämisen ohjelmointirajapintaa (MainWindow.xaml.cs)

Tästä on tehty myös menetelmä, joka tekee siitä helppokäyttöisen. Argumenttien avulla voit määrittää saamasi käyttöoikeustietueen ja käännettävän tekstin sekä muunnettavan kielen millekin kielelle.

Huomaa, että käyttämäsi URL-osoite on eri kuin URL-osoite, josta sait tunnuksen. Käännettävä teksti ja kieli lähetetään kyselymerkkijonona URL-osoitteessa, joten vältä niitä käyttämällä "Uri.EscapeDataString" -toimintoa etukäteen.

GET-menetelmä lähettää sitten otsikon valtuutuksen, jossa on kaava "Bearer" ja parametrin tunnus.

Koska vastaus on otettu XML-muodossa, XDocumentia käytetään käännetyn tekstin noutamiseen sisältä. Jos teksti kuitenkin sisältää XML-pakomerkkejä, ehkä siksi, että käytät XML:ää, ne saattavat jäädä huomaamatta. Muunna se tarpeen mukaan.

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

Painikkeiden suoritusprosessi (MainWindow.xaml.cs)

Kun olet ottanut käyttöön kaksi menetelmää, sinun tarvitsee vain soittaa jokaiselle. Voit kääntää tekstiä asettamalla KEY1:n ja määrittämällä kullekin menetelmälle syötetyn arvon. Koska se on asynkroninen prosessi, lisää asynkroninen painikkeen käsittelymenetelmään.

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

Luettelo käännettävistä kielistä

Voit viitata seuraaviin Micorsoft-sivuihin: Koska se on yksi pilvipalveluista, sitä voidaan muuttaa milloin tahansa.