Tradução com IA integrada

Publicado em 12 de novembro de 2024

Use a API Translator no Chrome para traduzir textos no navegador usando modelos de IA locais.

Talvez seu site já ofereça conteúdo em vários idiomas para que seja acessível a um público global. Com ela, os usuários podem contribuir no primeiro idioma deles. Por exemplo, os usuários podem participar de chats de suporte no idioma materno deles, e seu site pode traduzir para o idioma usado pelos agentes de suporte antes de sair do dispositivo do usuário. Isso cria uma experiência tranquila, rápida e inclusiva para todos os usuários.

A tradução de conteúdo da Web costuma ser necessária com o uso de um serviço de nuvem. Primeiro, o conteúdo de origem é enviado para um servidor, que executa a tradução para um idioma de destino. Em seguida, o texto resultante é transferido por download e retornado ao usuário. Ao executar a tradução no cliente, você economiza o tempo necessário para as viagens do servidor e o custo de hospedagem do serviço de tradução.

Disponibilidade

Embora o idioma de destino selecionado seja sempre conhecido, em algumas situações, o idioma de origem pode ser desconhecido, por exemplo, com conteúdo gerado pelo usuário. Nesses casos, a proposta da API Translator inclui a API Translator e a API Language Detector, também disponível em um teste de origem. Inscreva-se nos dois testes de origem para usar essas APIs juntas.

Detecção de recursos

Para determinar se a API Translator é compatível, execute o snippet de detecção de recursos abaixo.

if ('translation' in self && 'createTranslator' in self.translation) {
  // The Translator API is supported.
}

Verificar o suporte a pares de idiomas

A tradução é gerenciada com pacotes de idiomas, transferidos por download sob demanda. Um pacote de idiomas é como um dicionário de um determinado idioma. Esses pacotes são pareados com a função assíncrona canTranslate(), que permite determinar se um par de idiomas é compatível.

A função canTranslate() exige um parâmetro options com dois campos:

  • sourceLanguage: o idioma atual do texto.
  • targetLanguage: o idioma final para o qual o texto será traduzido.

Use os códigos curtos de idioma BCP 47 como strings. Por exemplo, 'es' para espanhol ou 'fr' para francês.

await translation.canTranslate({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});
// 'readily'

A função canTranslate() pode retornar qualquer um dos seguintes resultados:

  • no: não é possível que esse navegador faça a tradução solicitada.
  • readily: o navegador pode traduzir conforme solicitado.
  • after-download: o navegador pode realizar a tradução, mas somente depois de fazer o download do modelo ou dos pacotes de idiomas relevantes.

É possível detectar o progresso do download usando o evento downloadprogress:

translator.ondownloadprogress = progressEvent => {
  updateDownloadProgressBar(progressEvent.loaded, progressEvent.total);
};

Se o download falhar, os eventos downloadprogress vão parar de ser emitidos, e a promessa ready será rejeitada.

Criar e executar o tradutor

Para criar um tradutor, chame a função translation.createTranslator() assíncrona. Assim como canTranslate(), ele exige um parâmetro de opções com dois campos, um para sourceLanguage e outro para targetLanguage.

// Create a translator that translates from English to French.
const translator = await self.translation.createTranslator({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});

Depois de ter um tradutor, chame a função translate() assíncrona para traduzir o texto.

await translator.translate('Where is the next bus stop, please?');
// "Où est le prochain arrêt de bus, s'il vous plaît ?"

Limitações no teste de origem

As limitações a seguir se aplicam durante o teste de origem.

Pares de idiomas compatíveis

No momento, é possível fazer o download de até três pacotes de idiomas para tradução. Temos o compromisso de ampliar a variedade de idiomas compatíveis em versões futuras, mantendo altos padrões de privacidade do usuário. É possível confirmar se o par de idiomas necessário tem suporte com a função canTranslate().

É possível que determinados pares de idiomas menos usados sejam usados para impressão digital. Por exemplo, é mais comum traduzir entre inglês e espanhol do que entre idiomas menos comuns, como gaélico e catalão. Um par de idiomas menos comum pode ser considerado um ponto de dados para a identificação do usuário.

Durante o teste de origem, estamos limitando os possíveis pares de idiomas traduzíveis para proteger a privacidade do usuário. Os pares de idiomas precisam atender aos seguintes critérios:

  • Os idiomas de origem e de destino são definidos como idiomas preferidos no Chrome.
  • Ou uma das línguas está definida como preferida no Chrome, e a outra está entre as seguintes línguas populares:
    • Inglês (en)
    • Chinês mandarim (zh; simplificado) ou mandarim de Taiwan (zh-Hant; tradicional)
    • Japonês (ja)
    • Português (pt)
    • Russo (ru)
    • Espanhol (es)
    • Turco (tr)
    • Hindi (hi)
    • Vietnamita (vi)
    • Bengalês (bn)

Ignorar restrições de idioma para testes locais

Para prototipagem local, é possível ignorar essas verificações executando o Chrome com a opção de linha de comando --disable-features=TranslationAPIAcceptLanguagesCheck. Se preferir, defina chrome://flags/#translation-api como Ativar sem limite do pacote de idioma.

Acesse chrome://on-device-translation-internals/ para instalar e desinstalar manualmente os pacotes de idiomas.

Traduções sequenciais

As traduções são processadas sequencialmente. Se você enviar grandes quantidades de texto para tradução, as traduções seguintes serão bloqueadas até que as anteriores sejam concluídas.

Para ter a melhor capacidade de resposta das suas solicitações de tradução, agrupe-as e considere exibir uma interface de carregamento, como um ícone de carregamento, para transmitir que uma tradução está em andamento.

Disponibilidade do web worker

Durante o teste de origem, a API Translator só tem suporte na linha de execução principal. Pretendemos oferecer suporte a ela em workers da Web assim que a API estiver disponível.

Demonstração

Você pode conferir a API Translator, usada em combinação com a API Language Detector, no playground da API Translator e Language Detector.

Esforço de padronização

Estamos trabalhando para padronizar a API Translator e garantir a compatibilidade entre navegadores.

Nossa proposta de API recebeu apoio da comunidade e foi transferida para o Grupo da comunidade do Incubator da Web do W3C para mais discussões. A equipe do Chrome solicitou feedback do W3C Technical Architecture Group e pediu a Mozilla e ao WebKit as posições dos padrões.

Participar e compartilhar feedback

Comece a testar a API Translator agora mesmo participando do teste de origem e compartilhando seu feedback. Sua contribuição pode afetar diretamente a forma como criamos e implementamos versões futuras dessa API e de todas as APIs de IA integradas.