Les chaines de langues

  SPIP est multi-lingue (et facile à traduire !)

Avec une informatique mondialisée (et pas toujours anglophone) la traduction des programmes est depuis longtemps un sujet d’importance....
En plus du Multilinguisme depuis SPIP 3 des textes (facilitant la rédaction parallèle d’une version d’article dans une nouvelle langue), c’est tout le corpus linguistique de SPIP (ses libellés internes, comme vos libellés de plugins) qu’il est facile de traduire, sans aucune connaissance de programmation.

D’ailleurs, vous êtes invités à participer dans vos langues...

Article publié le 12 mars 2025, et actualisé en mars 2025

 
 
 
 

En informatique, les libellés sont des chaines de caractères qui doivent être adaptées à l’humain qui les aperçoit (et bientôt les entendra..), en d’autre termes des éléments de l’interface homme-machine, au contraire des programmes (écrits en Php comme SPIP) toujours exécutés en binaire...
En conséquence, ceux-ci doivent pouvoir être traduits (c’est-à-dire rechargés dans une autre langue), avec trois possibilités de variation :

  1. les mots utilisés changent selon la langue de l’utilisateur (et donc la longueur du texte, modifiable selon la langue)
  2. le jeu de caractères utilisé peut nécessiter des caractères spéciaux,
  3. et même le sens de lecture (et donc d’affichage à l’écran) peut différer !

Spip gère très bien tous ces aspects, de façon assez souple pour un utilisateur ou un webmestre non informaticien, que ce soit pour proposer d’écrire la rédaction d’un article dans plusieurs langues, ou pour "transcrire" l’interface dans une autre langue : https://programmer.spip.net/-Multil....

 L’écriture de chaines de langues dans SPIP

Ecrit en Php, Spip profite de la qualité du langage interprété pour offrir à l’utilisateur multi-langues une solution souple pour modifier les libellés linguistiques, encore plus simple que le désormais ’standard’ de chaînes POEdit.
Il suffit d’écrire dans votre squelette source votre libellé /plusieurs mots éventuellement, reliés par des ’souligné’ pour constituer un mot long/ dans un fichier texte php (avec un formalisme un peu strict) l’équivalence entre un libellé écrit dans le source (du programme, mais ce peut être un libellé affiché à l’écran par un squelette ou même une réponse du programme) ; par défaut, SPIP saura afficher le texte en retirant ces traits de continuité, ce qui vous permet d’avoir un libellé initial assez clair.
La syntaxe retenue pour écrire ces "chaînes de langues" consiste à encadre le mot_long constituant le message à pouvoir traduire par le couple de caractères <: et :>, syntaxe adaptée à l’usage dans le HTML.

 Constituer les fichiers de traductions de langues

A la compilation des squelettes, SPIP va reconnaître cette syntaxe particulière, et va de lui-même rechercher la traduction dans un fichier de langues, celui correspondant à la langue de l’interface de l’utilisateur.
Ces fichiers de langues sont de simples fichiers textes (programme source sans accents) établissant une liste de correspondance entre le libellé codé, et l’énoncé correspondant ;
bien sûr, comme il s’agit de texte, vous encadrerez le libellé codé d’apostrophes simples, comme l’énoncé correspondant (si une quote y est déjà présente, redoublez-la !). Ce qui peut donner

        'avis_aucun_resultat' => 'Aucun résultat.',
     'theme_graphique' => 'Th&egrave;me graphique adapt&eacute;   ',

Si la transcription des caractères accentués de la seconde ligne n’est plus nécessaire avec le passage systématique en caractères UTF, vous veillerez néanmoins à mettre ou non un point terminal, selon votre usage.
Ces lignes de correspondance sont écrites dans un fichier de langue au nom standardisé [1], enregistré dans un sous-dossier ./lang/, composé d’un radical suivi d’un souligné et du code de langue concerné (sur deux caractères) en suffixe, avant l’extension extension .php
-  en SPIP 3 et 4 :
Ces valeurs sont enregistrées dans une variable interne au programme, grâce à une ligne ’barbare’ : vous écrirez les deux lignes suivantes au début du fichier, puis vos lignes de correspondance, en adéquation avec le suffixe , _fr pour le français, _en pour l’anglais, etc....

<?php
$GLOBALS[$GLOBALS['idx_lang']] = [

Vous trouverez les exemples dans le dossier SPIP

Mais attention, un changement de formalisme est en-cours dans SPIP 4.x pour les prochaines versions SPIP 5.x

 : en fait, cela simplifie juste la première ligne du/des fichier/s de langues...
- pour SPIP 5.x
La ligne barbare est maintenant :

<?php
return [

Et sinon, rien de changé !

Pour les passionnés, on peut même insérer des valeurs paramétrables dans ces chaines de libellés, en encadrant le nom de variable voulu entre @...


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1En pratique, vous vous personnaliserez votre fichier de langues dans ./squelettes/lang/local_xx.php, sauf dans le cas d’un plugin.


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 12 mars 2025, et actualisé en mars 2025 .

Répondre à cet article