Changement de langue
Un changement de langue, c'est un mot ou un passage rédigé dans une langue différente de la langue principale de la page. En HTML, on le signale avec l'attribut lang sur l'élément qui encadre ce texte. Sans ce balisage, les lecteurs d'écran prononcent le texte étranger avec l'accent de la langue principale.
Sur une page française, le mot newsletter passe sans problème. Mais une citation de Shakespeare sans attribut lang="en" ? Le lecteur d'écran la prononce en français. Chaque syllabe. Avec l'accent.
#Quand baliser, quand ne pas baliser
Le critère 3.1.2 des WCAG (niveau AA) demande que chaque passage en langue étrangère soit identifiable dans le code. Le RGAA reprend cette exigence au critère 8.7.
La mise en œuvre tient en un attribut :
<p>Il a dit <span lang="en">"Hello World"</span> en entrant.</p>
<blockquote lang="en">
"The only thing we have to fear is fear itself."
</blockquote>Mais tout ne se balise pas. Les WCAG prévoient quatre exceptions :
- Noms propres : Google, Shakespeare, Berlin.
- Termes techniques : HTML, USB, API.
- Mots passés dans l'usage courant : parking, week-end, pizza.
- Mots de langue indéterminée : un néologisme qui n'appartient à aucune langue.
#Le piège du surbaliser
Un contributeur consciencieux pourrait vouloir baliser chaque mot anglais. Mauvaise idée. Chaque attribut lang déclenche un changement de voix dans le lecteur d'écran : la synthèse vocale charge un nouveau moteur de prononciation, marque une pause, prononce le mot, puis revient à la voix d'origine. Pour parking ou week-end, le résultat est pire que l'absence de balisage.
La règle : si le mot se prononce correctement avec l'accent français et qu'il figure dans un dictionnaire français, ne le balisez pas.
#Ce que les lecteurs d'écran font vraiment
Sans attribut lang, un lecteur d'écran comme NVDA ou VoiceOver applique les règles phonétiques de la langue déclarée sur <html>. Le mot anglais through dans une page lang="fr" sera lu comme s'il était français. Avec lang="en" sur le <span>, le lecteur bascule en voix anglaise, prononce le mot correctement, puis revient au français.
Ce balisage sert aussi aux afficheurs braille : les règles de contraction changent selon la langue.
#En résumé
Balisez les passages en langue étrangère avec lang, mais seulement quand la prononciation l'exige. Noms propres, termes techniques et mots du dictionnaire français n'ont pas besoin de balisage. La bonne pratique tient en une question : est-ce qu'un lecteur d'écran prononcerait ce texte de travers sans indication de langue ?