Mes impressions sur le web, les standards et autres…


Détection de la langue d’un site

Vous ne l’avez peut être pas remarqué, mais j’ai ajouté ces jours-ci un nouveau champs texte dans le formulaire des commentaires pour ajouter l’adresse de son site. Toujours en quète de pages les plus parfaites possibles, l’absence de hreflang sur les liens vers les sites en question me chagrinait quelque peu. J’ai d’abord pensé ajouter une liste déroulante pour indiquer la langue de son site mais je trouvais que ce n’était pas vraiment le plus simple pour les utilisateurs du formulaire et il aurait fallu donner un choix conséquent de langues sélectionnables, même si la plupart du temps, c’est anglais ou français.

Pour finir, je m’y suis pris autrement. Je lance à l’aide de la fonction fsockopen() de PHP une requète à destination du site indiqué dans le formulaire et je récupère la valeur donnée par l’en-tête Content-Language que me renvoie le serveur. Dans le cas où cet en-tête n’est pas fourni par le serveur, je m’attaque au contenu même qui m’est renvoyé en cherchant les attributs xml:lang et/ou lang sur les éléments html ou body puis le meta Content-Language.

Encore une preuve des bienfaits des pages codées proprement et des bons en-têtes envoyés par le serveur :)

PS : Une copie de la fonction que j’ai faite est disponible ici pour les curieux.