Textübersetzung mithilfe der Übersetzer-API

Die Microsoft Translator-API kann verwendet werden, um Sprache und Text über eine REST-API zu übersetzen. In diesem Artikel wird erläutert, wie Sie die Microsoft Translator-Text-API verwenden, um Text in einer Xamarin.Forms-Anwendung aus einer Sprache in eine andere zu übersetzen.

Übersicht

Die Übersetzer-API verfügt über zwei Komponenten:

  • Eine REST-API für die Textübersetzung, um Text aus einer Sprache in Text einer anderen Sprache zu übersetzen. Die API erkennt automatisch die Sprache des Texts, der vor der Übersetzung gesendet wurde.
  • Eine REST-API für die Sprachübersetzung zum Transkribieren von Sprache in Text einer anderen Sprache. Darüber hinaus integriert die API auch Text-to-Speech-Funktionen, damit der übersetzte Text in Form einer Audioaufnahme zurückübertragen werden kann.

Dieser Artikel konzentriert sich auf die Übersetzung von Text aus einer Sprache in eine andere mithilfe der Übersetzer Text-API.

Hinweis

Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.

Ein API-Schlüssel muss abgerufen werden, um die Übersetzer Text-API zu verwenden. Dies kann unter How to sign up for the Microsoft Übersetzer Text API abgerufen werden.

Weitere Informationen zur Microsoft Übersetzer Text-API finden Sie in der Dokumentation zur Text-API Übersetzer.

Authentifizierung

Jede Anforderung an die Übersetzer Text-API erfordert ein JSON-Webtoken (JWT)-Zugriffstoken, das vom Cognitive Services-Tokendienst abgerufen https://api.cognitive.microsoft.com/sts/v1.0/issueTokenwerden kann. Ein Token kann durch Senden einer POST-Anforderung an den Tokendienst abgerufen werden und einen Ocp-Apim-Subscription-Key Header angeben, der den API-Schlüssel als Wert enthält.

Das folgende Codebeispiel zeigt, wie ein Zugriffstoken vom Tokendienst angefordert wird:

public AuthenticationService(string apiKey)
{
    subscriptionKey = apiKey;
    httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", apiKey);
}
...
async Task<string> FetchTokenAsync(string fetchUri)
{
    UriBuilder uriBuilder = new UriBuilder(fetchUri);
    uriBuilder.Path += "/issueToken";
    var result = await httpClient.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
    return await result.Content.ReadAsStringAsync();
}

Das zurückgegebene Zugriffstoken, das Base64-Text ist, hat eine Ablaufzeit von 10 Minuten. Daher erneuert die Beispielanwendung das Zugriffstoken alle 9 Minuten.

Das Zugriffstoken muss in jedem Übersetzer Text-API-Aufruf als Authorization Header angegeben werden, der der Zeichenfolge Bearervorangestellt ist, wie im folgenden Codebeispiel gezeigt:

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

Weitere Informationen zum Tokendienst für kognitive Dienste finden Sie unter "Authentifizierung".

Durchführen der Textübersetzung

Die Textübersetzung kann erreicht werden, indem sie eine GET-Anforderung an die translate API unter https://api.microsofttranslator.com/v2/http.svc/translate. In der Beispielanwendung ruft die TranslateTextAsync Methode den Textübersetzungsprozess auf:

public async Task<string> TranslateTextAsync(string text)
{
  ...
  string requestUri = GenerateRequestUri(Constants.TextTranslatorEndpoint, text, "en", "de");
  string accessToken = authenticationService.GetAccessToken();
  var response = await SendRequestAsync(requestUri, accessToken);
  var xml = XDocument.Parse(response);
  return xml.Root.Value;
}

Die TranslateTextAsync Methode generiert einen Anforderungs-URI und ruft ein Zugriffstoken vom Tokendienst ab. Die Textübersetzungsanforderung wird dann an die translate API gesendet, die eine XML-Antwort zurückgibt, die das Ergebnis enthält. Die XML-Antwort wird analysiert, und das Übersetzungsergebnis wird zur Anzeige an die aufrufende Methode zurückgegeben.

Weitere Informationen zu den REST-APIs für die Textübersetzung finden Sie unter Übersetzer Text-API.

Konfigurieren der Textübersetzung

Der Textübersetzungsprozess kann durch Angabe von HTTP-Abfrageparametern konfiguriert werden:

string GenerateRequestUri(string endpoint, string text, string to)
{
  string requestUri = endpoint;
  requestUri += string.Format("?text={0}", Uri.EscapeUriString(text));
  requestUri += string.Format("&to={0}", to);
  return requestUri;
}

Mit dieser Methode wird der zu übersetzende Text und die Sprache festgelegt, in die der Text übersetzt werden soll. Eine Liste der von Microsoft Übersetzer unterstützten Sprachen finden Sie unter "Unterstützte Sprachen" in der Microsoft Übersetzer-Text-API.

Hinweis

Wenn eine Anwendung wissen muss, in welcher Sprache sich der Text befindet, kann die Detect API aufgerufen werden, um die Sprache der Textzeichenfolge zu erkennen.

Senden der Anforderung

Die SendRequestAsync Methode sendet die GET-Anforderung an die REST-API für Textübersetzung und gibt die Antwort zurück:

async Task<string> SendRequestAsync(string url, string bearerToken)
{
    if (httpClient == null)
    {
        httpClient = new HttpClient();
    }
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

    var response = await httpClient.GetAsync(url);
    return await response.Content.ReadAsStringAsync();
}

Diese Methode erstellt die GET-Anforderung durch Hinzufügen des Zugriffstokens Authorization zum Header mit dem Präfix "string Bearer". Die GET-Anforderung wird dann an die translate API gesendet, wobei die Anforderungs-URL den zu übersetzenden Text angibt, und die Sprache, in die der Text übersetzt werden soll. Die Antwort wird dann gelesen und an die aufrufende Methode zurückgegeben.

Die translate API sendet den HTTP-Statuscode 200 (OK) in der Antwort, vorausgesetzt, die Anforderung ist gültig, was angibt, dass die Anforderung erfolgreich war und dass die angeforderten Informationen in der Antwort enthalten sind. Eine Liste der möglichen Fehlerantworten finden Sie unter "Antwortnachrichten bei GET Translate".

Verarbeiten der Antwort

Die API-Antwort wird im XML-Format zurückgegeben. Die folgenden XML-Daten zeigen eine typische erfolgreiche Antwortnachricht:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>

In der Beispielanwendung wird die XML-Antwort in eine XDocument Instanz analysiert, wobei der XML-Stammwert an die aufrufende Methode zurückgegeben wird, wie in den folgenden Screenshots dargestellt:

Textübersetzung ins Deutsche

Zusammenfassung

In diesem Artikel wird erläutert, wie Sie die Microsoft Übersetzer-Text-API verwenden, um Text aus einer Sprache in Text einer anderen Sprache in einer Xamarin.Forms Anwendung zu übersetzen. Neben der Übersetzung von Text kann die Microsoft Übersetzer-API auch Sprache aus einer Sprache in Text einer anderen Sprache transkribieren.