Tłumaczenie tekstu przy użyciu interfejsu API tłumaczenia tekstu w usłudze Translator
Interfejs API usługi Microsoft Translator może służyć do tłumaczenia mowy i tekstu za pomocą interfejsu API REST. W tym artykule wyjaśniono, jak używać interfejsu API tłumaczenia tekstu w usłudze Microsoft Translator do tłumaczenia tekstu z jednego języka na inny w Xamarin.Forms aplikacji.
Omówienie
Interfejs API usługi Translator ma dwa składniki:
- Interfejs API REST tłumaczenia tekstu do tłumaczenia tekstu na tekst w innym języku. Interfejs API automatycznie wykrywa język tekstu, który został wysłany przed jego tłumaczeniem.
- Interfejs API REST tłumaczenia mowy do transkrypcji mowy z jednego języka na tekst innego języka. Interfejs API integruje również funkcje zamiany tekstu na mowę, aby mówić przetłumaczony tekst z powrotem.
Ten artykuł koncentruje się na tłumaczeniu tekstu z jednego języka na inny przy użyciu interfejsu API tłumaczenia tekstu w usłudze Translator.
Uwaga
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Aby korzystać z interfejsu API tłumaczenia tekstu w usłudze Translator, należy uzyskać klucz interfejsu API tłumaczenia tekstu w usłudze Translator. Można to uzyskać w sekcji Jak zarejestrować się w interfejsie API tłumaczenia tekstu w usłudze Microsoft Translator.
Aby uzyskać więcej informacji na temat interfejsu API tłumaczenia tekstu w usłudze Microsoft Translator, zobacz Dokumentację interfejsu API tłumaczenia tekstu w usłudze Translator.
Uwierzytelnianie
Każde żądanie skierowane do interfejsu API tłumaczenia tekstu w usłudze Translator wymaga tokenu dostępu JSON Web Token (JWT), który można uzyskać z usługi tokenu usług Cognitive Services pod adresem https://api.cognitive.microsoft.com/sts/v1.0/issueToken
. Token można uzyskać, wysyłając żądanie POST do usługi tokenu, określając Ocp-Apim-Subscription-Key
nagłówek zawierający klucz interfejsu API jako jego wartość.
W poniższym przykładzie kodu pokazano, jak zażądać tokenu dostępu z usługi tokenu:
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();
}
Zwrócony token dostępu, który jest tekstem Base64, ma czas wygaśnięcia 10 minut. W związku z tym przykładowa aplikacja odnawia token dostępu co 9 minut.
Token dostępu musi być określony w każdym wywołaniu interfejsu API tłumaczenia tekstu w usłudze Translator jako Authorization
prefiks nagłówka z ciągiem Bearer
, jak pokazano w poniższym przykładzie kodu:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
Aby uzyskać więcej informacji na temat usługi tokenu usług Cognitive Services, zobacz Authentication (Uwierzytelnianie).
Wykonywanie tłumaczenia tekstu
Tłumaczenie tekstu można osiągnąć, wysyłając żądanie GET do interfejsu translate
API pod adresem https://api.microsofttranslator.com/v2/http.svc/translate
. W przykładowej aplikacji TranslateTextAsync
metoda wywołuje proces tłumaczenia tekstu:
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;
}
Metoda TranslateTextAsync
generuje identyfikator URI żądania i pobiera token dostępu z usługi tokenu. Żądanie tłumaczenia tekstu jest następnie wysyłane do interfejsu translate
API, który zwraca odpowiedź XML zawierającą wynik. Odpowiedź XML jest analizowana, a wynik tłumaczenia jest zwracany do metody wywołującej do wyświetlenia.
Aby uzyskać więcej informacji na temat interfejsów API REST tłumaczenia tekstu, zobacz Interfejs API tłumaczenia tekstu w usłudze Translator.
Konfigurowanie tłumaczenia tekstu
Proces tłumaczenia tekstu można skonfigurować, określając parametry zapytania HTTP:
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;
}
Ta metoda ustawia tekst do tłumaczenia, a język, na który ma zostać przetłumaczony tekst. Aby uzyskać listę języków obsługiwanych przez usługę Microsoft Translator, zobacz Obsługiwane języki w interfejsie API tłumaczenia tekstu w usłudze Microsoft Translator.
Uwaga
Jeśli aplikacja musi wiedzieć, w jakim języku znajduje się tekst, Detect
interfejs API można wywołać w celu wykrycia języka ciągu tekstowego.
Wysyłanie żądania
Metoda SendRequestAsync
wysyła żądanie GET do interfejsu API REST tłumaczenia tekstu i zwraca odpowiedź:
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();
}
Ta metoda kompiluje żądanie GET przez dodanie tokenu dostępu do nagłówka Authorization
z prefiksem z ciągiem Bearer
. Żądanie GET jest następnie wysyłane do interfejsu translate
API z adresem URL żądania określającym tekst do tłumaczenia, a język do tłumaczenia tekstu. Odpowiedź jest następnie odczytywana i zwracana do metody wywołującej.
Interfejs translate
API wyśle kod stanu HTTP 200 (OK) w odpowiedzi, pod warunkiem, że żądanie jest prawidłowe, co wskazuje, że żądanie powiodło się i czy żądane informacje są w odpowiedzi. Aby uzyskać listę możliwych odpowiedzi na błędy, zobacz Komunikaty odpowiedzi na stronie GET Translate.
Przetwarzanie odpowiedzi
Odpowiedź interfejsu API jest zwracana w formacie XML. Następujące dane XML przedstawiają typowy komunikat odpowiedzi zakończony powodzeniem:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>
W przykładowej aplikacji odpowiedź XML jest analizowana w XDocument
wystąpieniu, a wartość główna XML jest zwracana do metody wywołującej do wyświetlenia, jak pokazano na poniższych zrzutach ekranu:
Podsumowanie
W tym artykule wyjaśniono, jak używać interfejsu API tłumaczenia tekstu w usłudze Microsoft Translator do tłumaczenia tekstu z jednego języka na tekst innego języka w Xamarin.Forms aplikacji. Oprócz tłumaczenia tekstu interfejs API usługi Microsoft Translator może również transkrybować mowę z jednego języka na tekst innego języka.