Internationaliser les squelettes

SPIP affiche naturellement les éléments d’interface (dates, intitulés des boutons) dans la langue choisie dans la configuration.

Créer des squelettes multilingues

Lorsqu’on crée un squelette multilingue, il est indispensable d’utiliser les chaînes de langue pour que le contenu de l’interface soit affiché dans la langue demandée.

SPIP fournit déjà les intitulés les plus courants (comme "Plan du site", "Répondre à cet article" etc...).
Cet article indique comment en ajouter des nouveaux selon vos besoins.

De plus, utiliser les chaînes de langue améliore la maintenance de votre squelette (quand on modifie une chaîne de langue, toutes les pages sont modifiées)

Utiliser des fichiers de langue

Créer un fichier de langue
Quelque soit la structure décidée pour le site (secteurs de langue ou pas) il suffit d’insérer une "chaîne de langue" comme ceci <:chaine_de_langue:> SPIP ira chercher la traduction dans un des fichiers SPIP ou dans un fichier lang/local_xx.php (xx étant la langue) que l’on aura créé.

Le suffixe langue xx est celui généralement usité dans les normes ISO.
Par exemple fr pour français

On supporte aussi les variantes régionales :
Par exemple pt_br pour le portugais brésilien

Par exemple, on fait afficher une section musique dans notre site

<h4>Musique</h4> 

Pour internationaliser, on passera le texte dans une chaine de langue

<h4><:musique:></h4> 

Selon la langue retenue, la chaine <:musique:> sera affichée
— en français, à la chaîne « Musique »,
— en anglais, à la chaîne « Music »,
— en japonais, à la chaîne « 音楽 »,

Il faut donc créer autant que fichiers de langue que les langues utilisées par votre site.
Dans le cas précédent il faut donc créer un lang/local_fr.php, lang/local_en.php et lang/local_ja.php

La structure d’un fichier de langue

Un fichier de langue est rangé dans un répertoire lang

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

Attention :
Le nom de ces fichiers de langue ne devra pas contenir le caractère « _ » (« underscore » ou « tiret-bas ») sauf pour marquer la séparation avec l’initiale de la langue (en, fr, it,...). Par exemple, on créera « monperso_fr.php » et non « mon_perso_fr.php ».

Ces fichiers contiendront par exemple :

Version française (lang/monperso_fr.php) :

<?php
return [
  'telechargement' => 'Télécharger la dernière version',
  'quoideneuf' => 'Modifications récentes'
];

Version catalane (lang/monperso_ca.php) :

<?php
return [
    'telechargement' => 'Descarregar la darrera versió',
    'quoideneuf' => 'Modificacions recents'
];
  

Syntaxe des fichiers de langue
-  Chaque ligne de définition se termine par une virgule, sauf la dernière ligne.
-  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 écrite : sur l\'internet.
-  Il est possible de ne pas échapper les apostrophes à condition d’utiliser des apostrophes du type "guillemet simple fermant"

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_xx.php. Pour créer ses propres fichiers, on installera, dans un répertoire squelettes/lang (à créer le cas échéant)
— local_fr.php pour définir les chaînes en français,
— local_en.php en anglais,
— ...

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

    'code' => 'La chaîne à afficher',

Les plugins et les fichiers de langue

Beaucoup de fonctionnalités sont assurées par des plugins, soit des plugins du core comme porte-plume ou svp, soit des plugins ajoutés par les webmestres parce qu’ils souhaitent utiliser une fonctionnalité spécifique. Tous ces plugins ont des fichiers de langue.

Voir aussi

Pour tout savoir sur les chaines de langue on pourra consulter
https://programmer.spip.net/-Elements-linguistiques- et notamment la syntaxe complète : https://programmer.spip.net/Syntaxe-complete-des-balises-de-langue

Historique

Fichiers de langue

À noter que pour les versions antérieures à SPIP 4.1, le fichier se présente de la manière suivante :

<?php
$GLOBALS[$GLOBALS['idx_lang']] = [
	'cle' => 'valeur',
	'cle2' => 'valeur2',
	// ...
];

Cette syntaxe par peuplement de globale est dépréciée à partir de SPIP 4.4 et sera supprimé en SPIP 5.0.

Anciennes solutions historiques

-  "un squelette par langue" (nécessitait le plugin "squelettes_par_rubrique") : c’est lourd à maintenir et simplement inutile pour un usage basique.
-  "les blocs multilingues" : ces blocs <multi> sont très utiles dans la partie rédactionnelle ; présenter un titre en différentes langues possibles, permettre d’afficher des légendes différentes par langue... mais à éviter dans la partie structure.

Auteur erational, jack Publié le : Mis à jour : 27/10/24

Traductions : عربي, English, français, Português