1. Bonjour François. Comme d'habitude ici, deux petites questions simples avant d'attaquer le vif du sujet : quand as-tu découvert l'Internet ? Windows, Linux ou Mac ?

J'ai découvert l'Internet vers 1990, alors que j'étais chercheur à l'Université Laval à Québec. Je me rappelle distinctement que l'université entière était alors reliée au monde par une considérable connexion à 64 kbits/s ! Quant à la question « religieuse », je suis windowsien de fait, mais unixien (y compris Linux bien sûr) de cœur. Pas de Mac, non pas par mépris mais par manque d'occasions.

2. Qu'est-ce que l'internationalisation du Web et quelle est la différence avec la localisation ? Quels sont les domaines techniques du Web touchés par l'internationalisation (protocole, langages, etc.) ?

Vaste sujet ! Je connais un type qui donne un tutoriel d'une journée entière sur ces questions... Mais résumons : la localisation, c'est lorsqu'on traduit quelque chose dans une autre langue. On parle de localisation plutôt que simplement de traduction parce que, dans le cas de sites web ou de logiciels, il faut souvent procéder à une adaptation (technique ou culturelle) en plus de la traduction du texte. Quant à l'internationalisation, c'est la préparation technique à la localisation : l'adaptation préalable des protocoles, formats et logiciels qui facilite la traduction et leur permet de traiter le texte en écritures étrangères, de gérer des formats de date divers, et tout un tas d'autres petites choses qui varient d'une langue à l'autre. En gros, lorsque l'internationalisation est bien faite et exhaustive, la localisation se réduit pratiquement à la traduction.

Dans le cas du web, l'idée maîtresse est qu'il s'agit d'une seule application, d'envergure mondiale. D'où le besoin de standards, pour que les diverses parties de l'application puisse bien fonctionner ensemble. Et comme les mêmes standards doivent être exploités partout dans le monde pour que le web fonctionne, ceux-ci doivent être entièrement internationalisés, aptes à être utilisés en n'importe quelle langue sans modification.

En principe donc, l'internationalisation doit toucher les trois pierres d'assise du web, à savoir les formats de document (HTML, CSS, XML et Cie), le protocole de transmission (HTTP) et les adresses (URI).

3. Si depuis l'époque du CERN, le Web s'appelle le World Wide Web, il a fallu longtemps pour que celui-ci commence à s'internationaliser (d'un point de vue technique) réellement. Quels étaient, quels sont les enjeux de l'internationalisation du Web et quelles ont été les difficultés techniques à résoudre ?

Au tout début le langage des pages web, HTML, a été défini sur la base d'un jeu de caractères très limité, ISO 8859-1 (mieux connu sous le vocable ISO-Latin-1). Celui-ci ne permettait la rédaction de pages web qu'en un petit nombre de langues, essentiellement celles de l'Europe occidentale. Le premier enjeu fut donc de lever cette hypothèque, en refondant HTML sur la base d'Unicode, un jeu de caractères d'ambition universelle, tout en permettant l'utilisation d'autres jeux de caractères, notamment l'ISO-Latin-1 pour fins de compatibilité avec l'existant. Le protocole de transmission HTTP ne fut jamais un gros enjeu, puisque la nécessité de transmettre des images l'avait rendu dès le départ apte au transport de données quelconques. Quant aux adresses URL, ce fut le plus gros obstacle, en partie à cause d'une définition déficiente à l'origine, en partie à cause d'un moins grand besoin (les utilisateurs sont moins bridés par les limites des URL qu'ils ne le seraient s'ils ne pouvaient rédiger leurs pages dans leurs langues) et enfin, plus récemment, par des problèmes de sécurité liés à la solution d'internationalisation récemment standardisée.

4. Qu'est-ce qu'Unicode ? Pourquoi est-il si long et si compliqué d'informatiser toutes les écritures du monde ?

Unicode est un jeu de caractères, c'est à dire une convention pour représenter du texte (formé de caractères) dans la mémoire des ordinateurs, qui ne connaissent a priori que les nombres. La caractéristique essentielle d'Unicode, par rapport aux centaines d'autres jeux de caractères qui existent, est son ambition de représenter toutes les écritures du monde. C'est une lourde tâche, pour plusieurs raisons :

  • Il y a des dizaines et des dizaines d'écritures. Cf. par exemple la norme ISO 15924 qui leur associe des codes à 4 lettres.
  • Les écritures sont des créations humaines, souvent compliquées et pas toujours très logiques.
  • Il n'est pas toujours facile d'obtenir des renseignements fiables et complets sur les écritures, surtout dans le cas d'écritures, disons, exotiques et peu répandues. Or un standard qui prétend durer longtemps n'a guère le droit à l'erreur, puisque changer le standard pour une écriture après un premier essai manqué risque d'invalider toutes les données créées précédemment. Une très grande prudence s'impose donc, ce qui allonge les délais.
  • Il y avait, et il demeure encore aujourd'hui dans une bonne mesure, une forte exigence de compatibilité avec tous les jeux de caractères d'importance préexistants. Cet aspect a assez fortement influencé la conception d'Unicode, augmentant sa complexité et menant à quelques compromis douteux, ce qui pèse encore aujourd'hui quand il s'agit de compléter le travail.

Malgré tout, Unicode est aujourd'hui un grand succès. Toutes les écritures n'y sont pas encore, mais le travail continue, ce qui est la fois surprenant et réjouissant puisque toutes les écritures d'importance numérique et économique sont déjà codées.

5. Toutes les langues, toutes les écritures, toutes les cultures sont-elles égales devant l'Internet et le Web ?

Non. Pour commencer elles ne sont pas intrinsèquement égales. Prenons les écritures : certaines, comme la latine, sont très simples : petit alphabet, les lettres se mettent les unes derrière les autres toujours dans le même sens, sans complication autre que quelques ligatures optionnelles. Pour l'arabe ça se corse : non seulement ça va de droite à gauche, avec les nombres imbriqués de gauche à droite, mais en plus les lettres changent de forme selon leur voisinage et il y a une ligature obligatoire. En dévanâgarî (langue hindi et autres), il y a des conjointes (genre de ligatures), des voyelles qui se déplacent et d'autres petits trucs amusants. Et on n'a pas encore abordé les écritures tibétaine ou khmère...

Ces différences ont des conséquences sur l'informatisation des écritures, qui doit intervenir avant leur utilisation sur l'internet. Et il y a bien sûr aussi les différences économiques : moins une écriture (et donc les langues qui l'utilisent) est économiquement importante, et plus elle est techniquement difficile, plus longtemps il faut pour qu'elle jouisse d'un bon soutien informatique. Triste mais incontournable.

6. L'internationalisation du Web a-t-elle été déjà contrecarrée par des politiques locales ou nationales ?

Pas que je sache. À la limite, on pourrait mentionner le cas de la Chine, qui oblige depuis quelques années les logiciels – y compris les logiciels internet – à soutenir un certain jeu de caractères national pour être vendus en Chine. Cette obligation a pu détourner des efforts qui auraient été mieux dépensés ailleurs, au bénéfice d'autres langues et de l'internationalisation en général, au lieu de devoir mettre en œuvre ce jeu de caractères qui n'apporte rien qu'Unicode n'offre pas déjà.

7. Quid des outils Internet et Web (navigateurs, éditeurs, agents de messagerie, etc..) ? Quelle est la part dévolue au Système d'Exploitation ?

La part du système d'exploitation varie beaucoup d'une appli à l'autre. À un extrême, il y a ce navigateur sur lequel j'ai travaillé dans les années 1990, Tango : il devait tourner sur Windows 3.x et 95, et soutenir une pléthore de langues et d'écritures. Ce qui fut fait en mettant en œuvre une grosse couche d'Unicode au-dessus du S/E, qui à cette époque ne faisait rien à cet égard. Mais aujourd'hui le soutien d'Unicode est bien plus grand, alors on a l'autre extrême, des applis qui n'ont qu'à s'occuper de leur métier et délèguent au S/E tout ce qui est affichage et saisie de texte. Et entre les deux des applis portables, tournant sur plusieurs S/E dont le soutien pour l'internationalisation est inégal, et qui doivent donc en mettre en œuvre une partie dans l'appli.

8. Que va apporter ITS, la solution en cours de discussion sur l'internationalisation et la localisation d'XML ?

Ce nouveau standard s'adresse aux schémas de documents XML, c'est à dire aux ensembles de noms d'éléments et d'attributs XML, comme XHTML ou DocBook, que les auteurs utilisent lorsqu'ils rédigent. Le standard vise à s'assurer que les schémas soient internationalisés, utilisables en n'importe quelle langue ou écriture, et que les documents soient facilement localisables. L'exemple le plus simple et pourtant le problème le plus courant pour un traducteur est de déterminer ce qui doit être traduit et ce qui ne doit pas l'être dans un texte : noms de produit, hyperliens, divers « codes », certains acronymes, etc. ITS propose une manière standard d'indiquer la traductibilité, qui pourra être comprise aussi bien par les auteurs, par les traducteurs et par leurs outils respectifs. Et il y a bien plus.

9. Aujourd'hui en 2006, a-t-on progressé et que reste-t-il à faire ?

On a énormément progressé. En 1990 le courriel était en ASCII seulement (lettres latines sans accent) et le web voyait tout juste le jour. Aujourd'hui ces deux composantes principales de l'Internet sont pleinement internationalisées sur le papier – dans les standards – et les mises en œuvre respectent de mieux en mieux ces standards et soutiennent de plus en plus de langues et d'écritures. Ce qu'il reste à faire n'est plus au niveau de base du soutien de l'écriture, sauf pour les cas plus exotiques. Il y a encore un pas à franchir pour les noms de domaines et les URL : les standards sont en place, mais les mises en œuvre et le déploiement en vraie grandeur tardent un peu. L'inertie du web est bien plus grande qu'autrefois ! Et dans le cas des adresses de courriel internationalisées, les discussions sérieuses, au sein d'un groupe de travail de l'IETF, ont à peine commencées. Étant donné la complexité de l'infrastructure, la nécessité de respecter l'existant et la frilosité d'un bon nombre des anciens de l'IETF, ce n'est pas demain que je pourrai avoir l'adresse François@Yergeau.com...

10. As-tu souvent des difficultés avec des serveurs Web refusant ou maltraitant le c cédille de ton prénom ? Si oui, y compris avec des serveurs Web francophones ?

C'est devenu rare, fort heureusement. Mais il reste des cas, liés à au moins deux phénomènes : premièrement, l'introduction d'Unicode un peu partout (que je prône avec enthousiasme) mène parfois à l'apparition de nouveaux bogues là où les choses fonctionnait avant. Deuxièmement, on a des cas comme les cartes bancaires comme Visa, qui notent votre nom sans accent ; ça cause parfois des erreurs lorsqu'on saisit son nom correctement sur un site, qui le compare alors avec une base de données bancaire. Je n'ai pas fait de statistiques, mais j'ai l'impression que les serveurs web francophones ne sont ni pires ni meilleurs à cet égard.

11. Quelque chose à ajouter ?

Un petit conseil peut-être ? Si vous concevez une application, ne gardez pas l'internationalisation pour la fin. Ce n'est pas une fonction de plus, ça fait partie de l'architecture. Pas besoin de tout mettre en œuvre dans la version 1.0, mais il faut prévoir, laisser de la place et ne pas coder sur la base d'hypothèses insuffisantes qui ne tiendront pas la route face aux langues et écritures du monde entier.

12. Merci François.

Pas de quoi, ce fut un plaisir.

1. Hello François. As usual here, two introductory questions before the main course : when did you discover the Internet ? Windows, Linux or Mac ?

I discovered the Internet around 1990, when I was a researcher at Université Laval in Quebec City. I clearly remember that the whole university was connected to the world by a fabulous 64 kbps connection! As for the “religious” question, I am a de facto Windowsian, but Unixian at heart (including of course Linux). No Mac, not by scorn but more for lack of opportunity.

2. What is the internationalization of the Web and what's the difference with localization ? Which are the areas of the Web impacted by internationalization (protocol, languages, ...) ?

Wide topic! I know a guy who gives a full-day tutorial on these questions... But let's summarize: localization is when one translates something to another language. It's called localization instead of just translation because, in the case of software or Web sites, it is often necessary to do some technical or cultural adaptation, in addition to translating the text. As for internationalization, it consists of the technical preparation for localization: prior adaptation of protocols, formats and software that facilitates translation allows them to process text in foreign scripts, to manage various date formats, and a lot of little things that vary from one language or culture to another. Roughly speaking, when internationalization is well done and thorough, localization reduces essentially to translation.

In the case of the Web, the central idea is that it is a single, global application. Hence the need for standards, so that the various parts of the application can work together. And since the same standards must be used everywhere for the Web to work, they must be fully internationalized, fit for use in any language without modification.

So in principle, internationalization must address the three cornerstones of the Web: document formats (HTML, CSS, XML, etc.), the transport protocol (HTTP) and addressing (URIs).

3. If the real name of the Web is the World Wide Web since its inception at CERN, its internationalization (on a technical basis) took a lot of time to even begin. What were, what are the issues with the internationalization of the Web and what kind of technical problems had to be solved ?

In the beginning the language of Web pages, HTML, was defined to use a very limited character set: ISO 8859-1 (better known as ISO-Latin-1). This character set only allowed the authoring of Web pages in a small number of languages, essentially those of Western Europe. The first challenge was therefore to remove this limitation, by redefining HTML on the basis of Unicode, a character set with an ambition of universality, while still allowing the use of other character sets (including ISO-Latin-1) to maintain backwards compatibility. HTTP, the transport protocol, was never a major stake, since the need to transmit images had made it able to carry arbitrary data from day one. URLs were the biggest obstacle, partly because of a poor original definition, partly because of a lesser need (users are less bothered by the limitations of URLs than they would be if they couldn't write pages in their own languages) and last, by some security issues with the internationalization solutions recently adopted.

4. What's Unicode ? Why is it so long and so complex to computerize all the human scripts existing in the world ?

Unicode is a character set, i.e. a convention for representing text (consisting of characters) within computers which a priori know only about numbers. The essential characteristic of Unicode, compared to the hundreds of other existing character sets, is its ambition to represent all the scripts of the world. This is a tall order, for a number of reasons:

  • There are dozens and dozens of scripts. See for example the ISO 15924 standard, which gives each script a four-letter code.
  • Scripts are human creations, complex and often not quite logical.
  • It is not always easy to collect reliable and comprehensive information about a script, especially when the script is, let's say, exotic and not widespread. But a standard intended to last for a long time cannot really afford errors – changing the standard for a given script after an erroneous first attempt would run the risk of invalidating all previously encoded data. Prudence is therefore of the essence, which slows down things.
  • There was, and still is to a large extent, a strong requirement for compatibility with all pre-existing character sets of some import. This need has quite strongly influenced the design of Unicode, increasing its complexity and leading to a few questionable trade-offs, which to this day burdens the job of completing the standard.

Despite all this, Unicode is now a great success. It does not yet support all scripts but the extension work is ongoing, which is both surprising and laudable since all numerically and economically important scripts are already encoded.

5. Are all human languages, all human scripts and cultures equal in front of the Internet and the Web ?

No. For starters they are not intrinsically equal. Let's look at scripts: some, like Latin, are very simple: a small alphabet, the letters just line up one after the other always in the same direction, without any complication other than a few optional ligatures. Things get hairier with the Arabic script: not only is it written from right to left, with numbers running left to right, but also the letters change shape according to their neighbours and there is a compulsory ligature. In Devanagari (Hindi language and others), there are conjuncts (kind of ligatures), vowels that move around and other amusing stuff. And we haven't approached the Tibetan or Khmer scripts yet...

These differences bear on the computerization of scripts, which must take place before they can be used on the Internet. And of course there are economic differences: a script (and the languages using it) that is economically less important, and technically harder, will take more time to obtain good support on computers. Sad but undeniable.

6. Has the internationalization of the Web ever been blocked by local or national political decisions ?

Not that I know. Stretching a bit, one could mention the case of China, which has for the last few years mandated software – including Internet software – to support a certain national character set in order to be allowed to be sold in China. This obligation may have diverted efforts which would have been better spent elsewhere, to the benefit of other languages and of internationalization in general, instead of having to implement this character set which brings nothing not already provided by Unicode.

7. What about Internet and Web tools (browsers, editors, mail user agents, ...) ? What part of the internationalization is under the operating system's responsability ?

The responsibilities farmed out to the operating system vary a lot from one application to another. At one extreme, the is this browser on which I worked in the 90's, Tango: it had to run on Windows 3.x and 95, and to support a plethora of languages and scripts. Which we did by adding a thick Unicode layer on top of the O/S, since the latter had basically no Unicode support at this time. But this support is much better today, so we have the other extreme: apps that care only about their business logic, delegating to the O/S all text display and input. And in between portable applications, running of several systems with uneven internationalization support and therefore having to implement some of it themselves.

8. What is ITS, the new XML internationalization and localization spec currently being discussed, really about ?

This new standard concerns XML document schemas, i.e. the sets of elements and attributes, such as XHTML or DocBook, that authors use when writing XML documents. The standard aims to ensure that schemas are properly internationalized, usable in any language, and that documents are easily localizable. The simplest example, and yet the most common problem faced by translators, is to determine what is to be translated and what not in a text: product names, hyperlinks, various “codes”, some acronyms, etc. ITS provides a standard way to indicate translatability, which will be understandable by authors, translators and their respective tools. And there's much more.

9. Did the situation really improve, and, as of today in 2006, what's still on the todo list ?

There has been enormous progress. In 1990, email was ASCII-only (unaccented Latin letters) and the Web was just starting. Today these two principal components of the Internet are fully internationalized on paper – in the standards – and actual implementations display better and better conformance to these standards and support more and more languages and scripts. What remains to be done is not at the level of basic script support anymore, except for the more exotic cases. There is still some distance to go for domain names and URLs: the standards are in place, but implementations and full-scale deployment are still lagging. The Web's inertia has become much larger than it was! As for internationalized email addresses, serious discussion within an IETF working group have only just gotten underway recently. Given the complexity of the infrastructure, the backward compatibility requirements and the cold feet of many of the IETF elders, I'm not about to be reachable at François@Yergeau.com...

10. Do you often have issues with Web servers refusing or badly handling the cedilla in your first name ? If yes, even with french-speaking Web servers ?

It's become rare, fortunately. But there are still cases, coming from at least two reasons: first, the introduction of Unicode everywhere (which I heartily support) sometimes leads to new bugs where things used to work OK. Second, there are cases such a bank cards (VISA et al.) which record one's name unaccented; this sometimes causes problems when a name is typed correctly on a site and is then naively compared with a bank database. I haven't done any statistics, but my impression is that francophone sites are neither worse nor better in this respect.

11. Something to add ?

A little advice, perhaps? If you design an application, don't postpone internationalization till the end. It's not just one more feature, it's part of the architecture. No need to implement everything in version 1.0, but one needs to plan ahead, keep some elbow room and avoid coding based on assumptions that won't work with the world's many languages and scripts.

12. Thanks a lot, François !

My pleasure!