Détection de la langue

Fonctionnalités Web : Détecteur de langue

L'API Language Detector est une API Web côté client conçue pour identifier la langue d'une chaîne de texte donnée. En effectuant la détection localement dans le navigateur, elle renforce la confidentialité des utilisateurs et réduit le besoin de bibliothèques externes lourdes ou d'appels coûteux côté serveur.

Principaux cas d'utilisation

  • Préparation de la traduction : identifier la langue source avant d'envoyer le texte à un traducteur.
  • Sécurité et filtrage : chargement de modèles spécifiques pour des tâches telles que la détection de toxicité.
  • Accessibilité : libeller le contenu avec l'attribut lang approprié pour les lecteurs d'écran.
  • Localisation de l'interface utilisateur : ajuster les interfaces de l'application en fonction de la langue de saisie de l'utilisateur.

Configuration matérielle et système requise

  • OS : Windows 10/11, macOS 13 ou version ultérieure, Linux ou Chromebook Plus.
  • Stockage : 22 Go d'espace libre (le modèle est supprimé si l'espace disponible est inférieur à 10 Go).
  • RAM/CPU : 16 Go de RAM et au moins 4 cœurs de CPU.
  • VRAM : 4 Go ou plus si vous utilisez un GPU.

Guide d'implémentation

1. Gestion des modèles et activation des utilisateurs

Vérifiez la disponibilité du modèle avant d'essayer d'instancier le détecteur ou de déclencher le téléchargement.

OBLIGATOIRE : L'instanciation du détecteur de langue ou le déclenchement du téléchargement d'un modèle avec LanguageDetector.create() DOIT être initié par un geste de l'utilisateur (par exemple, un clic sur un bouton) pour éviter un NotAllowedError lorsque le modèle est dans un état 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. Détection de course à pied

L'API renvoie une liste classée de langues potentielles avec un score de confiance compris entre 0.0 et 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);
}

Évitez d'utiliser le détecteur sur des expressions très courtes ou des mots isolés, car la précision diminue considérablement.

Sécurité et environnement

  • iFrames : les iFrames interorigines nécessitent une règle d'autorisation explicite pour accéder à l'API.

    <iframe
      src="https://cross-origin.example.com/"
      allow="language-detector"
    ></iframe>
    
  • Web Workers : l'API n'est pas disponible actuellement dans les Web Workers en raison de la complexité des règles d'autorisation.

  • Confidentialité : aucune donnée n'est envoyée à Google ni à des tiers pendant le processus de détection.

Stratégie de remplacement

Avant de l'utiliser, vérifiez si l'objet LanguageDetector est disponible dans le champ d'application global :

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

Si l'API LanguageDetector n'est pas compatible ou si les vérifications de disponibilité renvoient 'unavailable', vous devez effectuer un remplacement progressif :

  1. Solution de secours avec l'API distante : redirigez la requête de détection vers un point de terminaison de serveur ou une API cloud (comme l'API Gemini Vertex AI) pour identifier la langue.
  2. Dégradation élégante : désactivez les éléments/boutons de détection de la langue et informez l'utilisateur que la détection côté client n'est actuellement pas compatible avec ce navigateur, ce qui évite les exceptions non gérées ou les plantages.