Partilhar via


Tradução de texto usando a API do tradutor

A API do Microsoft Translator pode ser usada para traduzir fala e texto por meio de uma API REST. Este artigo explica como usar a API de texto do Microsoft Translator para traduzir texto de um idioma para outro em um Xamarin.Forms aplicativo.

Visão geral

A API do Translator tem dois componentes:

  • Uma API REST de tradução de texto para traduzir texto de um idioma para texto de outro idioma. A API detecta automaticamente o idioma do texto que foi enviado antes de traduzi-lo.
  • Uma API REST de tradução de fala para transcrever a fala de um idioma para o texto de outro idioma. A API também integra funcionalidades de conversão de texto em fala para falar o texto traduzido novamente.

Este artigo se concentra na tradução de texto de um idioma para outro usando a API de Texto do Tradutor.

Observação

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Uma chave de API deve ser obtida para usar a API de Texto do Tradutor. Isso pode ser obtido em Como se inscrever na API de Texto do Microsoft Translator.

Para obter mais informações sobre a API de texto do Microsoft Translator, consulte Documentação da API de texto do tradutor.

Autenticação

Cada solicitação feita à API de Texto do Tradutor requer um token de acesso JWT (JSON Web Token), que pode ser obtido do serviço de token de serviços cognitivos em https://api.cognitive.microsoft.com/sts/v1.0/issueToken. Um token pode ser obtido fazendo uma solicitação POST para o serviço de token, especificando um Ocp-Apim-Subscription-Key cabeçalho que contém a chave de API como seu valor.

O exemplo de código a seguir mostra como solicitar um token de acesso do serviço de token:

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

O token de acesso retornado, que é o texto Base64, tem um tempo de expiração de 10 minutos. Portanto, o aplicativo de exemplo renova o token de acesso a cada 9 minutos.

O token de acesso deve ser especificado em cada chamada da API de Texto do Tradutor como um Authorization cabeçalho prefixado com a cadeia de caracteres Bearer, conforme mostrado no exemplo de código a seguir:

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

Para obter mais informações sobre o serviço de token de serviços cognitivos, consulte Autenticação.

Realizando a tradução de texto

A tradução de texto pode ser obtida fazendo uma solicitação GET para a translate API em https://api.microsofttranslator.com/v2/http.svc/translate. No aplicativo de exemplo, o TranslateTextAsync método invoca o processo de tradução de texto:

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

O TranslateTextAsync método gera um URI de solicitação e recupera um token de acesso do serviço de token. A solicitação de conversão de texto é enviada para a translate API, que retorna uma resposta XML contendo o resultado. A resposta XML é analisada e o resultado da conversão é retornado ao método de chamada para exibição.

Para obter mais informações sobre as APIs REST de tradução de texto, consulte API de texto do tradutor.

Configurando a tradução de texto

O processo de tradução de texto pode ser configurado especificando parâmetros de consulta 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;
}

Esse método define o texto a ser traduzido e o idioma para o qual traduzir o texto. Para obter uma lista dos idiomas suportados pelo Microsoft Translator, consulte Idiomas suportados na API de texto do Microsoft Translator.

Observação

Se um aplicativo precisar saber em que idioma o texto está, a Detect API poderá ser chamada para detectar o idioma da cadeia de caracteres de texto.

Enviando a solicitação

O SendRequestAsync método faz a solicitação GET para a API REST de tradução de texto e retorna a resposta:

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

Esse método cria a solicitação GET adicionando o token de acesso ao Authorization cabeçalho, prefixado com a cadeia de caracteres Bearer. A solicitação GET é então enviada para a translate API, com a URL da solicitação especificando o texto a ser traduzido e o idioma para o qual traduzir o texto. A resposta é então lida e retornada ao método de chamada.

A translate API enviará o código de status HTTP 200 (OK) na resposta, desde que a solicitação seja válida, o que indica que a solicitação foi bem-sucedida e que as informações solicitadas estão na resposta. Para obter uma lista de possíveis respostas de erro, consulte Mensagens de resposta em GET Translate.

Como processar a resposta

A resposta da API é retornada no formato XML. Os dados XML a seguir mostram uma mensagem de resposta bem-sucedida típica:

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

No aplicativo de exemplo, a resposta XML é analisada em uma XDocument instância, com o valor raiz XML sendo retornado ao método de chamada para exibição, conforme mostrado nas seguintes capturas de tela:

Tradução de texto para alemão

Resumo

Este artigo explicou como usar a API de texto do Microsoft Translator para traduzir texto de um idioma em texto de outro idioma em um Xamarin.Forms aplicativo. Além de traduzir texto, a API do Microsoft Translator também pode transcrever fala de um idioma para texto de outro idioma.