Překlad textu pomocí rozhraní Translator API
Rozhraní Microsoft Translator API je možné použít k překladu řeči a textu prostřednictvím REST API. Tento článek vysvětluje, jak používat rozhraní API Microsoft Translator Text k překladu textu z jednoho jazyka do jiného v Xamarin.Forms aplikaci.
Přehled
Rozhraní TRANSLATOR API má dvě komponenty:
- Překlad textu REST API k překladu textu z jednoho jazyka do textu jiného jazyka. Rozhraní API automaticky rozpozná jazyk textu, který byl odeslán před jeho překladem.
- Překlad řeči REST API přepis řeči z jednoho jazyka do textu jiného jazyka. Rozhraní API také integruje funkce převodu textu na řeč, aby bylo možné přeložený text vrátit zpět.
Tento článek se zaměřuje na překlad textu z jednoho jazyka do jiného pomocí rozhraní API Translator Text.
Poznámka
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Aby bylo možné používat rozhraní API Translator API. Tuto možnost najdete v tématu Jak se zaregistrovat k rozhraní Microsoft Translator Text API.
Další informace o rozhraní API Microsoft Translator Text najdete v dokumentaci Translator Text API.
Authentication
Každý požadavek na rozhraní Translator Text API vyžaduje přístupový token JWT (JSON Web Token), který je možné získat ze služby tokenů cognitive services na adrese https://api.cognitive.microsoft.com/sts/v1.0/issueToken . Token lze získat vytvořením požadavku POST na službu tokenů zadáním hlavičky, která obsahuje klíč rozhraní Ocp-Apim-Subscription-Key API jako jeho hodnotu.
Následující příklad kódu ukazuje, jak požádat o přístupový token ze služby 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();
}
Vrácený přístupový token, což je text Base64, má dobu vypršení platnosti 10 minut. Ukázková aplikace proto obnovuje přístupový token každých 9 minut.
Přístupový token je nutné zadat v každém Translator Text API jako hlavičku s řetězcem , jak je znázorněno v AuthorizationBearer následujícím příkladu kódu:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
Další informace o službě tokenů služeb Cognitive Services najdete v tématu Ověřování.
Provádění překladu textu
Překlad textu lze dosáhnout vytvořením požadavku GET na translate rozhraní API na adrese https://api.microsofttranslator.com/v2/http.svc/translate . V ukázkové aplikaci metoda TranslateTextAsync vyvolá proces překladu textu:
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 vygeneruje identifikátor URI požadavku a načte přístupový token ze služby tokenu. Požadavek na překlad textu se pak odesílá do rozhraní translate API, které vrátí odpověď XML obsahující výsledek. Odpověď XML se parsuje a výsledek překladu se vrátí volající metodě pro zobrazení.
Další informace o rozhraních REST API pro překlad textu najdete v Translator Text API.
Konfigurace překladu textu
Proces překladu textu je možné nakonfigurovat zadáním parametrů dotazu 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;
}
Tato metoda nastaví text, který se má přeložit, a jazyk, do který se má text přeložit. Seznam jazyků podporovaných rozhraním MICROSOFT TRANSLATOR najdete v tématu Podporované jazyky v Microsoft Translator Text API.
Poznámka
Pokud aplikace potřebuje vědět, v jaký jazyk se text nachází, může být rozhraní API voláno za účelem rozpoznání jazyka Detect textového řetězce.
Odeslání žádosti
Metoda vytvoří požadavek GET na překlad REST API a SendRequestAsync vrátí odpověď:
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();
}
Tato metoda sestaví požadavek GET přidáním přístupového tokenu do Authorization hlavičky s předponou . Bearer Požadavek GET se pak odesílá do rozhraní API s adresou URL požadavku určujícím text, který se má přeložit, a translate jazykem pro překlad textu. Odpověď se pak načte a vrátí volající metodě.
Rozhraní API odešle v odpovědi stavový kód HTTP 200 (OK) za předpokladu, že je požadavek platný, což značí, že požadavek byl úspěšný a že v odpovědi jsou translate požadované informace. Seznam možných chybových odpovědí najdete v tématu Zprávy odpovědí na adrese GET Translate.
Zpracování odpovědi
Odpověď rozhraní API se vrátí ve formátu XML. Následující data XML zobrazují typickou zprávu úspěšné odpovědi:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Morgen kaufen gehen ein</string>
V ukázkové aplikaci se odpověď XML parsuje do instance s vrácenou kořenovou hodnotou XML do volající metody pro zobrazení, jak je znázorněno na XDocument následujících snímcích obrazovky:

Souhrn
Tento článek vysvětlil, jak pomocí rozhraní API Microsoft Translator Text překládat text z jednoho jazyka do textu jiného jazyka v Xamarin.Forms aplikaci. Kromě překladu textu může rozhraní API Microsoft Translator také přepis řeči z jednoho jazyka do textu jiného jazyka.
Stažení ukázky