Conception de documents complexes multilingues

La construction de documents complexes multilingues nécessite quelques précautions si l'on veut optimiser la charge de travail. Naturellement on respectera les spécifications relatives à la langue et à la direction de l'écriture de la norme HTML.

1. Structure générale du document complexe

L'idée générale est de séparer les ressources qui dépendent de la langue de celles qui n'en dépendent pas et de regrouper les premières langue par langue.

On créera donc au premier niveau, autant de répertoires qu'il y aura de versions linguistiques en donnant comme nom à chaque répertoire le code ISO 639-2 correspondant à la langue.

Ces codes sont internationalement reconnus ; brefs ils ne rallongent pas trop les URL. Et surtout, autre avantage, certains serveurs utilisent cette structure pour renvoyer au navigateur la version la version du document conforme à ses préférences linguistiques.

Les autres ressources pourront être regroupées soit dans un seul répertoire si elles sont peu nombreuses soit dans des répertoires distincts selon leur type, au même niveau que les ressources linguistiquement dépendantes.

Si l'on utilise des ressources d'une librairie commune à l'ensemble du serveur, celles-ci seront dupliquées sur la plate-forme locale de travail, dans un répertoire de même structure (dénommé ici lib) et seront adressées en conséquence. Ce répertoire ne sera pas transféré sur le serveur mais on demandera à l'administrateur du serveur de le rediriger sur la librairie commune. Cette disposition permet la consultation locale du document complexe même en l'absence de serveur si du moins les ressources sont purement statiques. Dans ces conditions on peut m^même envisager une diffusion sur CD-ROM.

Nous verrons que si l'on n'utilise que des adresses relatives pour établir des liens entre les ressources du document, ces adresses sont invariantes dans les versions linguistiques.


                                    doc
                                     |
         +---------+---------+-------+-----+-----+-----+-----+
         |         |         |       |     |     |     |     |
        fr        en        zh      img   snd   js    css   lib
         |         |         |                               |
      +--+--+   +--+--+   +--+--+                         +--+--+
      |     |   |     |   |     |                         |     |
     img   snd img   snd img   snd                       js    css 
                 
    fr  : ressources en français         img : images communes   
    en  : ressources en anglais          snd : sons communs    
    cn  : ressources en chinois          js  : scripts JavaScript communs 
                                         css : styles CSS communs 
                        lib : ressources communes du site
    

Cette structure est à utiliser, même si la première version du document est monolingue, car elle simplifie beaucoup l'adjonction de nouvelles versions linguistiques.

2. L'élaboration de la version de base

On commencera par monter complètement une des versions linguistiques surtout si l'on veut garder un parallélisme entre les différentes versions.

On n'utilisera dans les liens entre les ressources, que des adresses relatives. Ainsi, si dans une page d'adresse doc/fr/page.html, l'on veut adresser une image commune photo1.jpg se trouvant dans le répertoire doc/img, on utilisera un lien du type :

<a href="../img/photo1.jpg">Première photo</a>

En revanche l'inclusion d'une image contenant du texte sitée en doc/fr/img/image1.jpg sera :

<img src="img/image1.jpg">

et d'un commentaire parlé sitée en doc/fr/snd/comment1.au sera :

<a href="snd/comment1.au">Écoutez</a>

3. L'élaboration des autres versions

Les autres versions linguistiques seront obtenues par copie du contenu du répertoire de la version de base dans le répertoire cible. Les fichiers correspondants auront donc le même nom dans chaque répertoire de langue.

On voit clairement que les liens ci-dessus vont continuer à fonctionner pour les documents parallèles doc/en/page.html et doc/cn/page.html.

Il ne reste qu'a effectuer la substitution du texte et des ressources dépendantes de la langue.