La API de Language Detector es una API web del cliente diseñada para identificar el idioma de una cadena de texto determinada. Como la detección se realiza de forma local en el navegador, se mejora la privacidad del usuario y se reduce la necesidad de usar bibliotecas externas pesadas o realizar llamadas costosas del lado del servidor.
Casos prácticos clave
- Preparación para la traducción: Identificar el idioma de origen antes de enviar el texto a un traductor.
- Seguridad y filtrado: Carga modelos específicos para tareas como la detección de toxicidad.
- Accesibilidad: Etiquetar el contenido con el atributo
langcorrecto para los lectores de pantalla. - Localización de la IU: Ajustar las interfaces de la aplicación según el idioma de entrada del usuario.
Requisitos de hardware y del sistema
- SO: Windows 10/11, macOS 13 o versiones posteriores, Linux o Chromebook Plus.
- Almacenamiento: 22 GB de espacio libre (el modelo se quita si el espacio disminuye a menos de 10 GB).
- RAM/CPU: 16 GB de RAM y más de 4 núcleos de CPU
- VRAM: 4 GB o más si se usa una GPU
Guía de implementación
1. Administración de modelos y activación de usuarios
Verifica la disponibilidad del modelo antes de intentar crear una instancia del detector o activar la descarga.
OBLIGATORIO: La creación de una instancia del detector de idioma o la activación de la descarga de un modelo con LanguageDetector.create() DEBE iniciarse con un gesto del usuario (como un clic en un botón) para evitar un NotAllowedError cuando el modelo está en un estado downloadable o 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. Detección de carrera
La API devuelve una lista clasificada de idiomas potenciales con una puntuación de confianza entre 0.0 y 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);
}
Evita usar el detector en frases muy cortas o palabras individuales, ya que la precisión disminuye de forma significativa.
Seguridad y entorno
Iframes: Los iframes de origen cruzado requieren una política de permisos explícita para acceder a la API.
<iframe src="https://cross-origin.example.com/" allow="language-detector" ></iframe>Web Workers: Actualmente, la API no está disponible en Web Workers debido a las complejidades de la política de permisos.
Privacidad: No se envían datos a Google ni a terceros durante el proceso de detección.
Estrategia de resguardo
Antes de usarlo, verifica si el objeto LanguageDetector está disponible en el alcance global:
if ('LanguageDetector' in self) {
// The Language Detector API is supported.
} else {
// Execute fallback strategy
}
Si la API de LanguageDetector no es compatible o las verificaciones de disponibilidad devuelven 'unavailable', debes recurrir a una alternativa de forma correcta:
- Resguardo de la API remota: Redirige la solicitud de detección a un extremo del servidor o a una API de Cloud (como la API de Vertex AI Gemini) para identificar el idioma.
- Degradación elegante: Inhabilita los elementos o botones de detección de idioma y, para evitar excepciones o fallas no controladas, informa al usuario que la detección del cliente no se admite actualmente en este navegador.