SPIP

[ar] [ast] [bg] [ca] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [sv] [tr] [vi] [zh] Espace de traduction

Télécharger

Internationaliser les squelettes

Octobre 2003 — maj : Décembre 2007

Toutes les versions de cet article :

L’internationalisation des squelettes, abordée dans cet article est disponible à partir de SPIP 1.7.


Pourquoi créer des squelettes multilingues ?

Dès la mise en ligne de documents, SPIP adapte certaines informations « automatiques » dans la langue désirée. Notamment les dates sont affichées dans la langue du site, ou d’un article, ou d’une rubrique, les formulaires sont affichés dans la langue correspondante (par exemple l’interface pour poster des messages de forums)... Tout cela est d’ores et déjà traduit par SPIP.

Ce n’est cependant pas suffisant : les webmestres insèrent dans leurs squelettes un certain nombre d’informations, décrivant notamment les principes de navigation dans le site. Il est nécessaire, par exemple, d’afficher des textes du style « Plan du site », « Répondre à cet article », « Articles du même auteur », « Dans la même rubrique »... Pour un site dans une seule langue, ces différents éléments sont faciles à insérer : on les insère tels quels dans le code HTML des squelettes. Le problème apparaît lorsque le site est multilingue : sous un article en français, on veut afficher « Répondre à cet article », mais sous un article en anglais, on a besoin d’afficher un autre texte (« Comment on this article »).

[SPIP 1.7.2] propose trois méthodes pour gérer ces éléments de texte différents selon les langues :

— (1) une méthode consistant à stocker les éléments de texte des squelettes dans des fichiers de langue (un fichier différent par langue utilisée sur le site), séparés des squelettes ; un squelette unique (par exemple article.html appelant, selon des codes définis par le webmestre, ces éléments de texte en fonction de la langue utilisée ; de cette façon, un même squelette article.html affichera automatiquement le texte « Répondre à cet article » ou « Comment on this document » en fonction de la langue de l’article. Cette méthode est vivement conseillée, elle offre le plus de souplesse, elle facilite les mises à jour du site (on travaille avec un squelette unique qui gère automatiquement plusieurs langues), et à terme des outils seront ajoutés à SPIP facilitant le travail collectif de traduction de l’interface de votre site (plusieurs administrateurs, parlant chacun une langue différente, pourront traduire l’interface d’un même site depuis l’espace privé, sans avoir besoin d’intervenir sur les fichiers des squelettes) ;

— (2) une méthode plus rapidement accessible, techniquement très simple, reposant sur la création de fichiers de squelettes différents pour chaque langue. Dans cette méthode, on fabrique un fichier article.html pour gérer les articles en français, et un fichier article.en.html pour les articles en anglais (note : article.html gère en réalité toutes les langues sauf l’anglais). Cette méthode est déconseillée si le site utilise de nombreuses langues et/ou si on utilise des squelettes distincts selon les rubriques. Par ailleurs, elle est dans tous les cas avantageusement remplacée par la méthode 3 décrite ci-dessous :

— (3) la méthode des « blocs multilingues », introduite par [SPIP 1.7.2], fonctionne aussi bien dans les contenus que dans les squelettes. Il suffit de mettre dans le squelette la construction suivante :

et la phrase s’affichera dans la langue voulue. Si ce système est très souple, il atteint toutefois ses limites dès que le nombre de langues est important, et que l’on souhaite que différents traducteurs interviennent dans le site (il faut en effet qu’ils puissent modifier le squelette, ce que la méthode des fichiers de langue permet d’éviter).

1. Méthode des fichiers de langue

Le principe des fichiers de langue consiste à insérer dans un squelette unique un code, lequel correspondra dans chaque langue à un élément de texte (une « chaîne ») ; entre les différentes langues le code ne varie pas, mais le texte est traduit.

Par exemple, nous pouvons décider que le code telechargement correspond :
— en français, à la chaîne « télécharger ce fichier »,
— en anglais, à la chaîne « download this file »,
— en espagnol, à la chaîne « descargar este archivo »,
— etc.

Dans le fichier de squelette des articles (un seul fichier gérera toutes les langues), article.html, il suffit d’insérer le code (notez la syntaxe) :

Lors de l’affichage d’un article, ce code sera remplacé par sa traduction dans la langue de l’article.

Par exemple, dans le squelette article.html, nous insérons dans la boucle affichant les documents associés à l’article, le code suivant :

Si l’article en question est en français, cela produira :

<a href="/IMG/jpg/mondocument.jpg">télécharger ce fichier</a>

si l’article est en anglais :

<a href="/IMG/jpg/mondocument.jpg">download this file</a>

et ainsi de suite. Un unique squelette, contenant un unique code, affiche un texte traduit dans toutes les langues utilisées sur le site.

-  Utiliser des textes déjà traduits

Pour faciliter le travail des webmestres, SPIP fournit un ensemble de chaînes déjà traduites (par les traducteurs de SPIP). En utilisant ces chaînes, correspondant à des éléments de texte fréquemment utilisés sur des sites Web, le webmestre peut rapidement réaliser une interface fonctionnant dans différentes langues, mêmes celles qu’il ne parle pas lui-même.

Vous pouvez lister les chaînes disponibles depuis l’espace privé : allez dans la section « Gestion des langues » de la partie « Administration du site », puis cliquez sur l’onglet « Fichiers de langues ». Vous n’avez plus qu’à y piocher les codes de votre choix pour la réalisation de vos squelettes.

PNG - 14.3 ko
Les fichiers de langue dans l’espace privé

Exemple : un webmestre veut réaliser l’interface pour un site en français, en espagnol et en arabe, mais il ne parle pas lui-même l’espagnol et l’arabe. En insérant dans ses squelettes les codes livrés avec SPIP, il n’a pas à se soucier d’obtenir des traductions en espagnol et en arabe, car le travail de traduction a déjà été effectué en amont par les traducteurs de SPIP ; ainsi, en mettant au point l’interface en français avec les codes fournis par SPIP, il sait que ses pages s’afficheront immédiatement en espagnol et en arabe.

Si par la suite on ajoute des articles en polonais, ils seront immédiatement affichés avec les éléments de texte traduits en polonais, sans que le webmestre ait à intervenir à nouveau.

Autre avantage de cette méthode : elle facilite la création de squelettes « à distribuer » immédiatement multilingues. Des squelettes réalisés selon cette méthode seront immédiatement utilisables dans toutes les langues dans lesquelles sera traduit SPIP.

D’un point de vue technique, les éléments de texte fournis en standard avec SPIP sont stockés dans les fichiers de langue « public » :
— /ecrire/lang/public_fr.php contient les chaînes en français,
— /ecrire/lang/public_en.php en anglais
— etc.

-  Créer ses propres codes

Il est de plus possible de créer ses propres codes, correspondant à des chaînes que l’on désire ajouter soi-même.

Il s’agit alors de créer des fichiers de langue personnels, sur le modèle des fichiers public.... Pour créer ses propres fichiers, on installera, dans votre répertoire de squelette ou dans le répertoire /ecrire/lang :

— local_fr.php pour définir les chaînes en français,
— local_en.php en anglais,
— ...

historique : Dans les versions antérieures à [SPIP 1.8], les fichiers de langue personnels se plaçaient seulement dans le répertoire /ecrire/lang.

Par exemple, on pourra créer les chaînes suivantes :
— telechargement pour afficher « Télécharger la dernière version »,
— quoideneuf pour afficher « Modifications récentes ».

Selon cette méthode, on insère dans les squelettes les codes <:telechargement:> et <:quoideneuf:>, ils seront ensuite affichés avec les traductions correspondantes, telles qu’elles sont définies dans les fichiers local_...php.

Notons que les codes sont arbitraires : c’est vous qui les choisissez. Nous recommandons bien évidemment de choisir des codes qui vous permettent de les retenir facilement (plutôt que des numéros par exemple). Comme souvent avec les codes informatiques, il est préférable de n’utiliser que des lettres de l’alphabet latin, et sans accents...

Les fichiers de langue contiennent les différentes traductions des codes que vous utiliserez ; ce sont des fichiers PHP contenant chacun un tableau associant aux codes les chaînes correspondantes dans chaque langue.

Ils contiendront par exemple :

-  Version française :

-  Version catalane :

La construction est la suivante :

— au début du fichier :

— à la fin du fichier :

— la partie qu’il faut enrichir soit-même consiste en plusieurs lignes de définitions, sur le modèle :

N.B. Chaque ligne de définition se termine par une virgule, sauf la dernière ligne.

N.B.2. Le texte de la chaîne à traduire doit être convertie en codes HTML (les caractères accentués, par exemple, sont convertis en leur équivalent HTML, du type &eacute;).

Les apostrophes à l’intérieur de la chaîne doivent être échappées, c’est-à-dire précédées d’un antislash. Par exemple, la chaîne « sur l’internet » doit être inscrit : sur l\'internet.

Note : à terme, il est prévu d’inclure un outil permettant de gérer et créer ses propres fichiers de langue sans avoir à modifier « à la main » des fichiers PHP. Un tel outil facilitera de plus l’utilisation de caractères « spéciaux » (caractères accentués, caractères dans des alphabets non occidentaux, échappement des apostrophes...), ainsi que la collaboration de plusieurs personnes au processus de traduction de l’interface du site public.

Pour l’instant, l’outil permettant de gérer la traduction des chaînes de texte n’est pas livré directement avec SPIP, et son utilisation très généraliste (nous l’utilisons pour traduire toute l’interface de SPIP, et pas seulement des fichiers de langue de type local...php) le rend un peu complexe par rapport à cette tâche. Ce programme, trad-lang, qui nous sert à traduire le logiciel SPIP, le site spip.net, etc., est lui-même disponible sous licence GNU/GPL, mais il n’est pas intégré en standard à SPIP. Vous pourrez le télécharger, pour l’utiliser pour votre site ou pour d’autres projets de logiciels. Si vous l’améliorez, ou avez des idées pour le transformer, venez en discuter sur la liste des traducteurs de SPIP, spip-trad.

2. Des squelettes séparés pour chaque langue

La seconde méthode, plus accessible aux webmestres débutants, consiste à créer des squelettes différents pour chaque langue. Un peu sur le même principe qui consiste à créer des squelettes spécifiques pour différentes rubriques pour obtenir des interfaces graphiques différentes.

Nous voulons réaliser un site en français (langue par défaut), en anglais et en espagnol. Nous réalisons trois fichiers de squelette différents :
— article.html pour le français (en réalité, pour toutes les langues qui n’ont pas de fichier de langue spécifique ci-après),
— article.en.html pour l’anglais,
— article.es.html pour l’espagnol.

(Note : si on publie un article en allemand, alors qu’il n’existe pas de squelette article.de.html sur notre site, c’est le squelette article.html qui sera utilisé.)

Important : pour que les squelettes « par langue », définis par l’ajout d’un .lang à la fin du nom, soient pris en compte, il faut obligatoirement qu’il existe la version « par défaut » sur le site.

Ici, si article.html n’existe pas (on aurait préféré nommer directement un article.fr.html), les fichiers anglais et espagnol ne seront pas pris en compte.

On peut combiner cela avec le nommage « par rubriques », et l’ordre suivant sera pris en compte :
— article=8.es.html (le squelette pour les articles en espagnol de la rubrique 8, mais pas ses sous-rubriques),
— article=8.html (le squelette pour les articles de la rubrique 8, mais pas ses sous-rubriques),
— article-2.es.html (le squelette pour les articles en espagnol de la rubrique 2 et ses sous-rubriques),
— article-2.html (le squelette pour les articles de la rubrique 2 et ses sous-rubriques),
— article.es.html (le squelette pour les articles en espagnol),
— article.html (le squelette pour les articles),
— article-dist.html (le squelette pour les articles livré avec SPIP).

Note : sauf pour quelques exceptions, il faut utiliser ici les codes de langues à deux lettres normalisés par l’ISO, comme « es ». On en trouvera notamment la liste sur le site de la Bibliothèque du Congrès des Etats-Unis (eh oui !). Pour s’assurer d’un maximum de compatibilité, il faut utiliser en priorité les codes ISO à deux lettres (« iso 639-1 »), quand ils existent, et pour une désignation plus spécialisée d’une langue dans sa famille linguistique les codes ISO à trois lettres (« iso 639-2 T »). Par exemple, l’allemand sera désigné comme « de ». Mais l’ISO ne prend en compte que 182 langues sur les 5 000 à 7 000 langues parlées dans le monde ; pour les langues non encore répertoriées, on peut s’inspirer du répertoire proposé par le site ethnologue.com ; pour en savoir plus, rendez-vous sur la liste spip-trad.
Se simplifier la vie. Une des méthodes de structuration très simple qu’autorise SPIP pour gérer un site multilingue consiste à associer directement les langues aux rubriques (et non article par article). Ainsi, dans le cas où les articles d’une même langue sont regroupés dans une même rubrique (voire par secteurs), on peut se contenter de créer les squelettes spécifiques par rubrique, sans utiliser alors les noms de fichiers par langues.

De cette façon, si, tous les articles en espagnol sont regroupés dans la rubrique 8 (et ses sous-rubriques), on peut se contenter de nommer le fichier adapté à l’espagnol rubrique-8.html plutôt que rubrique.es.html.

On devine les problèmes qui peuvent se poser avec cette méthode :
— le fichier article-2.html doit exister si on veut que article-2.es.html puisse être sélectionné ;
— on ne peut pas décider, à l’inverse, que article.es.html doit être utilisé à la place d’article-2.html si article-2.es.html n’existe pas : la sélection par rubriques a toujours la priorité sur la sélection par langues ;
— une correction de mise en page dans un squelette implique de faire la même correction dans les autres versions,
— on doit pouvoir insérer soi-même des éléments de texte dans les fichiers des squelettes, alors qu’on ne comprend pas forcément la langue (imaginez-vous créer ainsi les squelettes en arabe alors que vous parlez un peu le français de l’ouest et assez mal l’occitan du nord...).

Cette méthode est donc destinée à travailler rapidement sur des sites peu complexes (peu ou pas de squelettes spécifiques aux rubriques) et/ou comportant peu de langues différentes. Dès que votre projet multilingue devient un peu plus ambitieux, il est vivement conseillé de travailler avec la méthode des fichiers de langue.

3. Les blocs multilingues

Les blocs multi définis dans l’article Réaliser un site multilingue fonctionnent aussi bien dans le texte des auteurs ou mots-clés que dans les squelettes. Attention, ces blocs ne gèrent que du texte, et pas des boucles SPIP !

Pour gérer rapidement un site multilingue, c’est sans doute, dans un premier temps, la meilleure méthode, à la fois accessible et efficace ; ensuite, une fois votre site stabilisé, si vous avez besoin d’affiner vos squelettes (par exemple, pour les ouvrir à plus de langues ; ou pour les distribuer sous forme de contrib ; ou encore pour les « professionnaliser »), il faudra transformer vos blocs multi en fichiers de langue.


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé