Detecção de idioma com IA integrada

Publicado: 24 de setembro de 2024, Última atualização: 20 de maio de 2025

ExplicaçãoWebExtensõesStatus do ChromeIntenção
MDN Chrome 138 Chrome 138VerIntent de envio

Antes de traduzir um texto de um idioma para outro, você precisa determinar qual idioma é usado no texto. Antes, a tradução exigia fazer o upload do texto para um serviço em nuvem, realizar a tradução no servidor e fazer o download dos resultados.

A API Language Detector funciona do lado do cliente, o que significa que você pode proteger a privacidade do usuário. Embora seja possível enviar uma biblioteca específica que faça isso, seriam necessários recursos adicionais para fazer o download.

Quando usar a detecção de idioma

A API Language Detector é útil principalmente nos seguintes cenários:

  • Determina o idioma do texto de entrada para que ele possa ser traduzido.
  • Determine o idioma do texto de entrada para que o modelo correto possa ser carregado para tarefas específicas de linguagem, como a detecção de toxicidade.
  • Determinar a linguagem do texto de entrada para que ele possa ser rotulado corretamente, por exemplo, em sites de redes sociais on-line.
  • Determine o idioma do texto de entrada para que a interface de um app possa ser ajustada de acordo. Por exemplo, em um site belga, mostrar apenas a interface relevante para usuários que falam francês.

Primeiros passos

A API Language Detector está disponível no Chrome 138 estável. Execute a detecção de recursos para saber se o navegador oferece suporte à API Language Detector.

if ('LanguageDetector' in self) {
  // The Language Detector API is available.
}

Analisar os requisitos de hardware

As APIs Language Detector e Translator funcionam em computadores somente no Chrome.

As APIs Prompt, Summarizer, Writer e Rewriter funcionam no Chrome quando as seguintes condições são atendidas:

  • Sistema operacional: Windows 10 ou 11, macOS 13 ou mais recente (Ventura e versões mais recentes) ou Linux. O Chrome para Android, iOS e ChromeOS ainda não são compatíveis com nossas APIs com suporte do Gemini Nano.
  • Armazenamento: pelo menos 22 GB no volume que contém seu perfil do Chrome.
  • GPU: estritamente mais de 4 GB de VRAM.
  • Rede: dados ilimitados ou uma conexão ilimitada.

Esses requisitos existem para você no processo de desenvolvimento e para os usuários que trabalham com os recursos que você cria.

Download do modelo

A detecção de idioma depende de um modelo ajustado para a tarefa específica de detectar idiomas. Enquanto a API é criada no navegador, o modelo é transferido por download sob demanda na primeira vez que um site tenta usar a API. No Chrome, esse modelo é muito pequeno em comparação com outros. Talvez ele já esteja presente, já que esse modelo é usado por outros recursos do Chrome.

Para saber se o modelo está pronto para uso, chame a função LanguageDetector.availability() assíncrona e inspecione a promessa resultante. Há três respostas possíveis:

  • "unavailable": as opções solicitadas não têm suporte ou o modelo não pode ser solicitado.
  • "downloadable": a solicitação tem suporte, mas outros downloads são necessários para criar uma sessão. Esses downloads podem incluir o modelo de linguagem ou o ajuste fino.
  • "downloading": a solicitação tem suporte e um download está em andamento, o que precisa ser concluído antes da criação de uma sessão.
  • "available": a solicitação tem suporte e é possível criar uma sessão.

Para acionar o download e instanciar o detector de idioma, chame a função LanguageDetector.create() assíncrona. Se a resposta para availability() foi 'downloadable' ou 'downloading', é recomendável detectar o progresso do download para informar o usuário caso o download demore.

O exemplo a seguir demonstra como inicializar o detector de idioma.

const availability = await LanguageDetector.availability();

let detector;
if (availability === 'unavailable') {
  // The language detector isn't usable.
  return;
}
if (availability === 'available') {
  // The language detector can immediately be used.
  detector = await LanguageDetector.create();
} else {
  // The language detector can be used after model download.
  detector = await LanguageDetector.create({
    monitor(m) {
      m.addEventListener('downloadprogress', (e) => {
        console.log(`Downloaded ${e.loaded * 100}%`);
      });
    },
  });
  await detector.ready;
}

Executar o detector de idioma

A API Language Detector usa um modelo de classificação para determinar qual idioma é mais provável de ser usado em um determinado texto. O ranking é um tipo de aprendizado de máquina, em que o objetivo é ordenar uma lista de itens. Nesse caso, a API Language Detector classifica os idiomas da maior para a menor probabilidade.

A função detect() pode retornar o primeiro resultado, a resposta mais provável ou iterar os candidatos classificados com o nível de confiança. Isso é retornado como uma lista de objetos {detectedLanguage, confidence}. O nível confidence é expresso como um valor entre 0.0 (menor confiança) e 1.0 (maior confiança).

const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);
for (const result of results) {
  // Show the full list of potential languages with their likelihood, ranked
  // from most likely to least likely. In practice, one would pick the top
  // language(s) that cross a high enough threshold.
  console.log(result.detectedLanguage, result.confidence);
}
// (Output truncated):
// de 0.9993835687637329
// en 0.00038279531872831285
// nl 0.00010798392031574622
// ...

Playground da API

Teste a API Language Detector no nosso ambiente de testes da API. Digite texto em diferentes idiomas no campo de texto.

Esforço de padronização

A equipe do Chrome pediu feedback do W3C Technical Architecture Group e pediu à Mozilla e ao WebKit as posições dos padrões.

Envie feedback

Queremos saber o que você está criando com a API Language Detector. Compartilhe seus sites e aplicativos da Web com a gente no X, YouTube e LinkedIn.

Se você tiver feedback sobre a implementação do Chrome, registre um bug do Chromium.