Detecção de idiomas

Recursos da Web: Detector de idioma

A API Language Detector é uma API da Web do lado do cliente projetada para identificar o idioma de uma determinada string de texto. Ao realizar a detecção localmente no navegador, ela melhora a privacidade do usuário e reduz a necessidade de bibliotecas externas pesadas ou chamadas caras do lado do servidor.

Principais casos de uso

  • Preparação para tradução: identificar o idioma de origem antes de enviar o texto para um tradutor.
  • Segurança e filtragem: carregamento de modelos específicos para tarefas como detecção de toxicidade.
  • Acessibilidade: rotular o conteúdo com o atributo lang correto para leitores de tela.
  • Localização da interface: ajuste das interfaces do aplicativo com base no idioma de entrada do usuário.

Requisitos de hardware e requisitos do sistema

  • SO: Windows 10/11, macOS 13+, Linux ou Chromebook Plus.
  • Armazenamento: 22 GB de espaço livre (o modelo será removido se o espaço cair para menos de 10 GB).
  • RAM/CPU: 16 GB de RAM e mais de 4 núcleos de CPU.
  • VRAM: mais de 4 GB se você estiver usando uma GPU.

Guia de implementação

1. Gerenciamento de modelos e ativação de usuários

Verifique a disponibilidade do modelo antes de tentar instanciar o detector ou acionar o download.

OBRIGATÓRIO: a instanciação do detector de idioma ou o acionamento de um download de modelo com LanguageDetector.create() PRECISA ser iniciada por uma interação do usuário (como um clique em um botão) para evitar um NotAllowedError quando o modelo estiver em um estado downloadable ou downloading.

// Check if the model is available or downloadable
const availability = await LanguageDetector.availability();

if (availability !== 'unavailable') {
  button.addEventListener('click', async () => {
    const detector = await LanguageDetector.create({
      monitor(m) {
        m.addEventListener('downloadprogress', (e) => {
          console.log(`Downloaded ${e.loaded * 100}%`);
        });
      },
    });
  });
}

2. Detecção de corrida

A API retorna uma lista classificada de possíveis idiomas com uma pontuação de confiança entre 0.0 e 1.0.

const someUserText = 'Hallo und herzlich willkommen!';
const results = await detector.detect(someUserText);

for (const result of results) {
  // result.detectedLanguage (e.g., 'de')
  // result.confidence (e.g., 0.999)
  console.log(result.detectedLanguage, result.confidence);
}

Evite usar o detector em frases muito curtas ou palavras isoladas, porque a precisão cai significativamente.

Segurança e meio ambiente

  • Iframes: os iframes entre origens exigem uma política de permissões explícita para acessar a API.

    <iframe
      src="https://cross-origin.example.com/"
      allow="language-detector"
    ></iframe>
    
  • Web Workers: no momento, a API não está disponível em Web Workers devido a complexidades da política de permissões.

  • Privacidade: nenhum dado é enviado ao Google ou a terceiros durante o processo de detecção.

Estratégia de fallback

Antes de usar, verifique se o objeto LanguageDetector está disponível no escopo global:

if ('LanguageDetector' in self) {
  // The Language Detector API is supported.
} else {
  // Execute fallback strategy
}

Se a API LanguageDetector não for compatível ou as verificações de disponibilidade retornarem 'unavailable', você precisará usar um substituto:

  1. Fallback da API remota: redirecione a solicitação de detecção para um endpoint de servidor ou uma API do Cloud (como a API Gemini da Vertex AI) para identificar o idioma.
  2. Degradação suave: desative os elementos/botões de detecção de idioma e informe ao usuário que a detecção do lado do cliente não é compatível com o navegador no momento, evitando exceções ou falhas não processadas.