[SPIP] Proposé : Internationaliser les squelettes

SPIP

Article proposé

L’article « Internationaliser les squelettes
(https://www.spip.net/ecrire/?exec=article&id_article=6830) » est proposé
à la publication depuis le lundi 4 septembre 2023.


Internationaliser les squelettes

lundi 4 septembre 2023 , par jack

Sommaire

  • Créer des squelettes multilingues
  • Utiliser des fichiers de langue
  • La structure d’un fichier de langue
  • Créer ses propres codes
  • Les plugins et les fichiers de langue
  • Voir aussi

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

Créer des squelettes multilingues[|Retour au

sommaire](#s-Creer-des-squelettes-multilingues)

Lorsqu’on crée un squelette, il est possible d’introduire de nouvelles
chaines de langue pour les intitulés les plus courants (comme « Plan du
site », « Répondre à cet article » etc…). En plus de favoriser la
maintenance (quand on modifie une chaine de langue, toutes les pages sont
modifiées), cela peut aussi permettre de réaliser des sites dans
d’autres langues (et même des sites multilingues dans lequel on peut
passer d’une langue à l’autre).

Utiliser des fichiers de langue[|Retour au

sommaire](#s-Utiliser-des-fichiers-de-langue)

Quelque soit la structure décidée pour le site (secteurs de langue ou
pas) il suffit d’insérer une « chaine de langue » comme ceci
<:chaine_de_langue:> spip ira chercher la traduction dans un des fichiers
SPIP ou dans un fichier local_xx.php (xx étant la langue) que l’on aura
créé.
Par exemple pour afficher le mot très utilisé « téléchargement » dans
différentes langues il suffit d’insérer dans son squelette
<:telechargement:>

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.

<:telechargement :>

Si l’article en question est en français, cela produira :
télécharger ce fichier (https://www.spip.net/IMG/jpg/mondocument.jpg)

si l’article est en anglais :
download this file (https://www.spip.net/IMG/jpg/mondocument.jpg)

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

La structure d’un fichier de langue[|Retour au

sommaire](#s-La-structure-d-un-fichier-de-langue)

Un fichier de langue est rangé dans un répertoire lang
Il est structuré de la façon suivante :
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.

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
  $GLOBALS[$GLOBALS['idx_lang']] = array(
    'telechargement' => 'Télécharger la dernière version',
    'quoideneuf' => 'Modifications récentes'
  );

Version catalane (lang/monperso_ca.php) :

  <?php
  $GLOBALS[$GLOBALS['idx_lang']] = array(
    'telechargement' => 'Descarregar la darrera versió',
    'quoideneuf' => 'Modificacions recents'
  );

N.B.
— 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[|Retour au

sommaire](#s-Creer-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[|Retour au

sommaire](#s-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 |Retour au sommaire

Pour tout savoir sur les chaines de langue on pourra consulter

P.-S.
Historique :

les versions initiales de cet article présentaient d’autres solutions
que les fichiers de langue pour rendre les squelettes multilingues. Notons
simplement ici que ces solutions ne sont pas recommandées :

  • « 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

— Envoyé par SPIP (https://www.spip.net/)