![]() |
|
|
HTML en toutes langues |
|
|
HTML est l'aspect du Web où le besoin d'internationalisation était le plus criant, mais ce fût peut-être aussi le plus facile à internationaliser. Le problème original est bien sûr le codage des caractères : un document HTML est constitué de texte et de balises HTML qui structurent et enrichissent le texte. Or, les caractères du texte doivent être codés, et HTML a été conçu autour du jeu de caractères ISO 8859-1 (alias ISO Latin-1), qui ne permet que la représentation des langues d'Europe de l'ouest. Les autres langues doivent se débrouiller !
Lorsqu'on a voulu utiliser HTML en d'autres langues, on a d'abord procédé à tâtons. Pour
certaines écritures, il est possible de simplement substituer une police de caractères
correspondante à une police ISO Latin-1, et d'obtenir ainsi des résultats passables.
On peut ainsi utiliser une police cyrillique pour visionner un document en russe, à
condition que le codage du document corresponde à celui de la police, ce qui est loin
d'être certain puisque plusieurs codages sont populaires en Russie. De plus, il faut
d'une façon ou d'une autre connaître le codage du document et régler son logiciel en
conséquence, ce qui est un problème chronique sur le Web d'aujourd'hui. Finalement,
ce truc ne fonctionne pas dans le cas de nombreuses langues qui requièrent
un traitement plus évolué : analyse contextuelle, texte bidirectionnel, bris de
ligne particulier, etc. Une autre mauvaise idée est d'utiliser l'élément
Pour régler le problème une fois pour toutes et faire d'HTML un langage de balisage digne de sa position de lingua franca du Web, le groupe de travail HTML (html-wg) de l'IETF1 a entrepris en 1995 d'étendre la spécification d'HTML, sur la base de l'adoption du jeu de caractères ISO 106462 comme jeu de caractères de référence. Ce jeu contient quelques dizaines de milliers de caractères, suffisamment pour représenter à peu près toutes les langues du monde. Cet effort a donné lieu à la publication d'un RFC, (un standard Internet). HTML est ainsi adéquat pour presque toutes les langues, les exceptions restant à combler par les extensions à venir de l'ISO 10646. En plus d'adopter l'ISO 10646, le nouveau standard ajoute à HTML quelques éléments de balisage nécessaires ou utiles avec diverses langues, en particulier les langues bidirectionnelles ou à analyse contextuelle. On y mentionne aussi quelques règles de « bonne conduite » pour les serveurs HTTP, les mécanismes de codage et de soumission de formulaires et d'autres aspects d'internationalisation qui débordent un peu le cadre d'HTML. Tous les détails se trouve dans le standard RFC 2070, « Internationalisation d'HTML », dont l'histoire s'étend sur presque 18 mois.
Non, l'internationalisation d'HTML ne signifie pas que vous devez rédiger
vos documents en Unicode. Vous pouvez en principe coder vos documents en
n'importe quel jeu de caractères approprié à la langue, mais il est
impératif que les clients (fureteurs, etc.) puisse savoir lequel vous avez
choisi, et de plus il vaut mieux s'en tenir à des jeux de caractères
normalisés et bien connus : série ISO 8859, normes nationales
importantes (ISCII, ASMO, VISCII, etc.) ou bien sûr ISO 10646.
Pour signaler le codage de vos documents, un truc utile est d'ajouter
la ligne suivante à l'en-tête de votre document, immédiatement après
la balise
|
Remplacez bien sûr Les caractères spéciaux, les entités et les références numériques Il est d'usage d'appeler caractères spéciaux tout ce qui ne fait pas partie de l'ASCII. En fait, c'est plutôt le contraire : c'est l'ASCII qui tient une place spéciale en informatique, de par sa quasi-universalité. Une croyance tenace veut qu'on ne puisse mettre que des caractères ASCII (lettres non-accentuées, chiffres, quelques signes de ponctuation et autres) dans un document HTML. Cette croyance exige que l'on code les lettres accentuées soit comme des références d'entité (par ex. é pour un e accent aigu), soit comme une référence numérique (par ex. é pour ce même e accent aigu). C'est faux ! Ces références sont légales, bien sûr, mais elle ne sont nullement obligatoires ; elles existent surtout comme raccourci lorsqu'on ne dispose pas d'un clavier adéquat pour taper directement les caractères en question. En plus de rendre votre source HTML (le texte balisé, tel qu'on le voit dans un éditeur de texte) plus ou moins illisible, les références ont d'autres défauts. Par exemple, si on utilise un des moteurs de recherche du Web pour rechercher les documents contenant un mot dont au moins une lettre est accentuée (ou, a fortiori non-latine), il n'y aura pas correspondance avec les documents où ce mot est codé avec une référence — à moins bien sûr que le moteur de recherche ne prenne la peine de remplacer la référence par le caractère approprié, ce que l'auteur lui-même aurait dû faire. D'autre part, on voit trop souvent des documents contenir des références à des caractères n'existant pas, comme ’. Avant l'internationalisation d'HTML, le jeu de caractères de référence était ISO 8859-1, qui ne contient aucun caractères entre 128 et 159 ; depuis, le jeu de caractères de référence est ISO 10646, qui n'a rien non plus dans cette zone, réservée à des caractères de contrôle.
En résumé, la bonne manière de coder un document est comme
suit : 1) choisir un jeu de caractères approprié à la langue
du document et le plus standard possible ; 2) taper autant
que possible tous les caractères dans ce jeu de caractères, sans
utiliser de références d'entité ou numériques ; 3) sauver le
document et le transmettre avec une étiquette de codage de
caractères ( À part le cas évident d'insuffisance du clavier, les références d'entités (lorsqu'elles existent) ou numériques ont tout de même une certaine utilité. D'une part, il arrive que l'on veuille inclure dans un document un caractères qui ne fait pas partie du jeu de caractères choisi ; une référence est alors tout indiquée. D'autre part, il se peut que le logiciel utilisé ne permette pas l'édition dans le jeu de caractères choisi (par ex. un éditeur naïf sur Macintosh ne sait pas produire de l'ISO 8859-1, qui est le choix évident pour tout document en une langue d'Europe occidentale) ; il faut bien se résoudre alors à coder tout ce qui n'est pas de l'ASCII par des références, à moins de disposer d'un autre logiciel capable de transcoder le résultat final.
Finalement, les caractères significatifs pour le balisage lui-même
(<, > et &) doivent toujours être codé par des
références lorsqu'on veut obtenir le caractère lui-même, et non
pas l'utiliser dans le balisage. Par exemple, pour obtenir 1 L'Internet Engineering Task Force est l'organisme qui s'occupe de créer et de maintenir à jour les standards d'Internet. 2 Aussi connu sous le nom d' Unicode. Unicode est en fait un standard industriel distinct de l'ISO 10646, mais qui reprend exactement les mêmes caractères aux mêmes positions. En pratique, on peut généralement les confondre sans problème. |
| Le navigateur multilingue Tango assure l'affichage correct de toutes les langues de Babel. | ![]() |
© 1996, Alis Technologies inc. |