Les approches simples utilisent des statistiques de n-grammes de caractères : chaque langue a des motifs de caractères distinctifs (« th » est fréquent en anglais, « tion » en français, « ung » en allemand). Le modèle d'identification de langue de FastText utilise des n-grammes de caractères avec un réseau de neurones peu profond et peut identifier 176 langues avec une grande précision à partir d'aussi peu qu'une phrase. Pour du texte très court (quelques mots), la précision baisse parce qu'il n'y a pas assez de signal.
Certaines paires de langues sont extrêmement difficiles à distinguer : le serbe (cyrillique) vs le serbe (latin) vs le croate vs le bosniaque partagent la plupart du vocabulaire et de la grammaire. Le chinois simplifié vs traditionnel nécessite d'examiner des choix de caractères spécifiques. Un texte court ambigu comme « no » pourrait être de l'anglais, de l'espagnol, de l'italien ou du portugais. Du texte avec alternance codique (« I went to the tienda to buy leche ») mélange les langues au sein d'une même phrase. Les systèmes robustes gèrent ces cas limites par des scores de confiance statistique plutôt que par une classification dure.
Pour la plupart des applications, CLD3 de Google, lid.176.bin de FastText, ou la librairie Python langdetect offrent une précision suffisante. Les LLM peuvent aussi détecter la langue comme effet secondaire de leur entraînement, même si utiliser un modèle de 70B pour la détection de langue c'est comme utiliser une tronçonneuse pour couper du beurre. L'architecture pratique : détection de langue rapide d'abord (FastText, <1ms), puis routage vers un traitement spécifique à la langue.