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
langcorreto 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:
- 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.
- 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.