<C²: webløg />

Courriel - email address

Avatar Denis

lundi 13 octobre 2003
par Denis Boudreau

Définir la langue d'un document Web

Voilà déjà longtemps que vous définissez la langue dans laquelle vous servez vos documents Web. Tellement longtemps en fait, que c'est devenu une seconde nature, tout comme débuter vos documents par un viril DOCTYPE. D'ailleurs, vous le savez bien, omettre de le faire causerait systématiquement une invalidité de votre code, et du code non-conforme, vous ne sauriez tolérer cela. Si vous avez, à un moment ou un autre, cherché à en savoir plus sur l'accessibilité et l'interprétation du contenu d'un document Web par les lecteurs d'écran au moment de l'interprétation verbale des contenus, vous êtes probablement passés par les recommandation du "Dive Into Accessibility" de Mark Pilgrim.

Cet excellent document, destiné à vous aider à mettre en place une dynamique d'eccessibilisation de vos contenus, vous invitait tout d'abord à spécifier la langue générale de votre document dans l'élément racine <html>. Selon la saveur de HTML ou de XHTML que vous préfériez servir à vos clients, vous en spécifiez donc la langue ainsi :

  • HTML 4.0 : <html lang="fr">
  • XHTML 1.0 : <html lang="fr" xml:lang="fr">
  • XHTML 1.1 : <html xml:lang="fr">

Voilà déjà qui est très bien puisque cela vous assure que le jour où un lecteur d'écran passera sur votre document, l'utilisateur se fera servir la lecture de vos contenus dans la prononciation appropriée... un bien petit effort pour améliorer l'expérience de vos utilisateurs et vous assurer de la bonne livraison de votre message. En effet, personne n'aimerait se faire servir la lecture d'un site francophone avec une prononciation anglaise, ou vice versa !

Mais qu'en est-il lorsque vous devez utiliser un terme anglais dans une page toute en français ? Comment vous assurer que ce seul mot anglais sera bien interprété ? En effet, il pourrait être assez délicat de comprendre ce que signifierait le terme toolmaker, s'il fut prononcé to-ol-ma-kèr... Important donc, pour une meilleure accessibilité de vos documents, d'être en mesure de spécifier les exceptions au cas par cas. Encore là, les mêmes règles s'appliquent, il suffit de spécifier, dans un élément HTML quelconque (que vous choisirez le plus sémantique possible), le basculement vers l'autre langue.

Pour un seul mot, ça va bien, c'est relativement simple. Mais que faites-vous lorsque vous avez plusieurs paragraphes de suite à coder dans une autre langue ? Répéter votre spécification de langues à chaque fois ? Heureusement non, ça ferait très lourd de répéter xml:lang="en" sur une série de paragraphes successifs... Imaginez sur une liste XHTML de 15 éléments... répéter 15 fois xml:lang="en", un pour chaque <li> ?

C'est une question que je me posais depuis longtemps, sans forcément trouver une réponse officielle. Je me souviens d'avoir codé cette répétition dans une longue liste HTML et j'en étais à la fois contrarié et gêné. Confronté à un cas de figure extrème de ce type aujourd'hui en discutant avec Bleizig, je me suis finalement renseigné à la source, c'est-à-dire, directement chez un spécialiste d'accessibilité qui utilise régulièrement un lecteur d'écran. La réponse, suffit d'englober tout le bloc de texte dans un <div xml:lang="en"></div> et le tour est joué. C'est tout le contenu qui sera interprété dans la langue du basculement.

Évident et logique, certes, mais maintenant, il n'y a plus de doutes, ni pour vous ni pour moi. Un autre mystère de résolu.

Denis Boudreau | 2003.10.13 @ 22:19

Alors, qu'en pensez-vous ?

Voici ce que vous aviez à en dire... vos impressions, recueillies à vif.

2003.10.14 @ 08:34 par Bobe

'Imaginez sur une liste XHTML de 15 éléments... répéter 15 fois xml:lang='en', un pour chaque <li> ?'
Oui, c'est vrai que ce serait un peu lourd. Par contre, on peut mettre la langue sur le <ul> ou <ol>.

La règle est simple. Les blocs enfants héritent de la langue de leur bloc parent, à défaut d'avoir une langue définie.

A nous de coller les lang et/ou xml:lang aux endroits adéquats.

Haut retour au début de la page

2003.10.14 @ 10:40 par Anubis

ET ENCORE UNE AVANCÉE POUR CyberCODEUR !
MAIS JUSQU'OÙ IRA-T-IL ?!

PS: Remarquez à quel point ces phrases serait illisibles si je n'avait pas mis les accents ;-)

PPS: Oui, je sais, ce PS est de la propagande, et alors ?!

Haut retour au début de la page

2003.10.14 @ 10:51 par CYBERcodeur

Exactement Bobe :)

Sauf que dans le doute, on se met à les appliquer partout, ce qui revient à allourdir considérablement le code pour rien. Parfois, à trop vouloir bien faire on finit par faire pire. :)

Quant à toi Anubis et bien... t'es sûr que ça va ? ;)

Haut retour au début de la page

Les commentaires et trackbacks sont désormais fermés. Pour toute remarque, vous pouvez toujours nous contacter.

Pisteur (Trackback)