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
- Participe do teste de origem da API Translator, executado no Chrome 131 a 137, para testar a API com usuários reais em produção. Os testes de origem ativam o recurso para todos os usuários na sua origem no Chrome. Saiba como começar a usar os testes de origem.
- Siga nossa implementação no ChromeStatus.
- A proposta da API Translator está aberta para discussão.
- Participe do programa de pré-lançamento antecipado para conferir as novas APIs de IA integradas e ter acesso à discussão na nossa lista de e-mails.
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
)
- Inglês (
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.
- Para receber feedback sobre a implementação do Chrome, envie um relatório do bug ou uma solicitação de recurso.
- Discuta o design da API Tradutor (link em inglês) no GitHub comentando um problema ou abra um novo.
- Participe do esforço de padronização entrando para o grupo da comunidade do Web Incubator.