Les sites publics francais declarent-ils la langue de leurs pages ?

Le RGAA impose a une page publique de declarer sa langue et de porter un titre. Nous avons releve cinq declarations de base du HTML sur la page d'accueil de 600 domaines publics francais tires au sort. Voici les chiffres, et surtout ce qu'ils ne disent pas.

600

domaines tires au sort

31 904

domaines dans la population

466

repondent en HTTPS

134

ne repondent pas

Ce que rendent les 466 domaines qui repondent

DeclarationDomainesPart
Encodage declare (balise meta ou en-tete HTTP)45798,1 %
Doctype HTML45196,8 %
Balise title non vide44595,5 %
Attribut lang sur la balise html43392,9 %
Balise meta viewport41288,4 %
Les cinq declarations, en part des 466 domaines qui repondentEncodage declare (balise meta ou en-tete HTTP)98.1 %Doctype HTML96.8 %Balise title non vide95.5 %Attribut lang sur la balise html92.9 %Balise meta viewport88.4 %
Cinq barres horizontales de longueur decroissante, de l'encodage a 98,1 % jusqu'au viewport a 88,4 %. Les cinq depassent 88 %, donc les barres se ressemblent : l'ecart entre la premiere et la derniere tient en moins de dix points.

Ce que ces chiffres ne disent pas

Declarer une langue n'est pas declarer la bonne

C'est la reserve la plus importante, et le releve en apporte lui-meme la preuve. Voici les valeurs reellement trouvees dans l'attribut lang.

Valeur trouveeDomainesStatut
fr-FR224Conforme
fr167Conforme
fr-fr23Conforme
en12Anglophone sur un site francais
fr_FR2Tag invalide (BCP 47)
FR1Conforme
Les valeurs reellement trouvees dans l'attribut langfr-FR224fr167fr-fr23en12fr_FR2FR1
Six barres tres inegales. Les trois premieres, fr-FR, fr et fr-fr, sont longues et grises. Les trois dernieres sont si courtes qu'elles se lisent a peine : en (12 domaines), fr_FR (2) et FR (1). Les deux barres en rouge sont celles qui posent probleme, et elles sont presque invisibles a cote des autres. C'est exactement ce que le graphique rend difficile a voir, et c'est le point : quatorze pages defectueuses sur 433 ne se remarquent pas dans un total, mais elles suffisent a rendre faux un taux de conformite.

Douze sites publics francais annoncent leur page d'accueil comme anglophone. Deux autres declarent fr_FR avec un tiret bas, qui n'est pas un tag de langue valide au sens BCP 47. Ces quatorze pages comptent dans les 92,9 % et echoueraient un audit du critere 8.3. Le chiffre de 92,9 % est donc un plafond, pas un taux de conformite.

Les 134 non-reponses ne sont pas 134 sites en panne

Un domaine reserve et jamais mis en service, un domaine qui ne sert qu'en HTTP, un certificat expire et un serveur momentanement lent produisent tous la meme ligne. La seule affirmation defendable est que 134 des 600 domaines de cette liste ne servaient pas de page d'accueil en HTTPS au moment du releve. Ils sont exclus du calcul des parts et comptes a part.

  • DNS absent, connexion refusee ou certificat rejete106
  • Code 4xx ou 5xx renvoye par le serveur21
  • Aucune reponse en 12 secondes4
  • Connexion fermee par le serveur3

Une page d'accueil n'est pas un site

Le releve porte sur une seule page par domaine. Le RGAA se juge sur un echantillon de pages par un auditeur humain, jamais par un robot : l'absence d'une declaration n'est pas une non-conformite prouvee, et ce releve ne rend aucun verdict d'accessibilite.

La methode, pour que le chiffre soit contestable

La population vient du fichier urls.txt publie par Etalab, fige a une version precise. Chaque nom d'hote est mis en minuscules, son prefixe www est retire, puis on deduplique : ce retrait avant deduplication est ce qui fait passer de 35 742 URLs a 31 904 domaines, car une commune presente sous deux formes aurait sinon compte double. L'echantillon est tire avec une graine fixe sur la population triee, le tri etant indispensable pour que la graine reproduise le meme tirage. Une seule requete par domaine, jamais de nouvelle tentative.

Etalab urls.txt · blob 2baca606a77d66b5800ac3591c45eefab2708e03 · 35 742 URLs -> 31 904 · graine 20260828

L'outil et les donnees sont publics

Le script tient en un fichier Python sans aucune dependance, sous licence MIT. Le depot contient le releve complet, ligne par ligne, et la methode detaillee qui permet de le rejouer a l'identique.

Pourquoi nous avons fait ce releve

Nous testons des services en ligne et nous publions nos protocoles. Un point nous a frappes : tout le monde cite la conformite des sites publics, presque personne ne mesure quoi que ce soit de verifiable. La langue declaree et le titre de page sont deux points que l'on peut relever sans jugement humain, en une requete. Nous l'avons fait, et nous publions le resultat avec ses limites plutot que le chiffre seul.