Carnet Multilinguisme

FichiersDeLangue

SPIP - Contrib :: Carnet SPIP :: Carnet Multilinguisme :: Derniers changements :: Recherche :
Pour les pressés, le résumé des nouveautés 1.8

- perso.php3 disparaît au profit de :
- local_xx.php3 qui déménage de sous /ecrire/ pour venir dans le répertoire des squelettes.

Introduction : Dans les squelettes, quand on utilise le code <:bonjour:> alors SPIP affiche la traduction de ’bonjour’ dans la langue idoine. Cette langue est déterminée automagiquement par SPIP en fonction de
- la variable lang=xx dans l’URL,
- la langue de l’élément principal de la page (article, rubrique, brève),
- un cookie (ça casse le principe de navigation ’sans état’ mais c’est comme ça).

Les fichiers de langue sont les parties de SPIP qui servent à définir la traduction des codes comme <:bonjour:> dans une langue donnée. Il existe plein de bonnes raisons de vouloir redéfinir ces chaînes ou étendre ce système de code :
- ajouter des codes dans les squelettes persos
- traduire dans une nouvelle langue
- changer de niveau une langue existante (par exemple passer en français 91 au lieu de français Versailles)
- changer de contexte ( le mot article ne sera pas compris de la même manière dans un fanzine, un laboratoire de recherche ou une mercerie)...

C’est possible.

Dans cette page le code xx désigne une langue, par exemple fr, vi, ar ou pt_br. Naviguer à /ecrire/config-multilang.php3 dans l’interface privée pour voir la liste complète.

Fichiers local_xx.php3

Le fichier local_xx.php3 permet d’ajouter des codes pour son site dans la langue xx. C’est un fichier à créer soi même sur le modèle suivant :

<?php
$GLOBALS[$GLOBALS['idx_lang']] = array(
  'soupe_du_jour' => 'Tagsuppe',
  // Répéter la ligne précédente pour toutes les chaînes
);
?>

Le fichier est cherché dans le chemin décrit dans MouvementDeFichiers, ce qui permet en particulier de le mettre dans son $dossier_squelettes. Cet emplacement est préférable puisque lorsqu’un « module » est mis à jour, on ne perdra pas ses chaînes personnalisées. L’ancienne méthode qui consistait à le loger dans /ecrire/lang/local_xx.php3 est déclarée obsolète.

Attention si vous avez un $dossier_squelette personnalisé, le fichier local_xx.php3 n’y sera trouvé que si $dossier_squelette est défini dans ecrire/mes_options. Cela ne marchera pas si vous utilisez mes_fonctions car ce dernier n’est chargé qu’au calcul des pages de l’espace public.

Fichier local.php3

Aussi cherché dans le $path. Pour les aventuriers. À documenter.
Permet par exemple de cacher une chaîne (en la mettant égale à vide) dans toutes les langues ?

Fichiers de langue de SPIP standard dans /ecrire/lang/

(Message de Fil sur spip-dev le 9/2) :

- ecrire_xx.php3 : les chaînes utilisees uniquement dans l’espace privé
- public_xx.php3 : les chaînes utilisées uniquement dans les squelettes par défaut
- spip_xx.php3 : les autres chaînes de spip (par exemple, les formats de date)

Pour les curieux. Ne pas modifier ces fichiers localement mais envoyer un rapport de bug avec la correction sur spip-trad.

Fichiers /ecrire/lang/module_xx.php3

Il est aussi possible de faire un fichier de langue pour un module. Dans les squelettes, on utilise alors le code <:module:truc:> pour faire afficher la chaîne. Pour cela on crée un fichier ecrire/lang/module_xx.php3 (les fichiers ne sont pas cherchés dans le chemin complet) déclarant un tableau :

<?php
$GLOBALS[$GLOBALS['idx_lang']] = array(
 'special' => 'cha&icirc;ne',
  // Répéter la ligne précédente pour toutes les chaînes
);
?>

Cete syntaxe est notament utilisée en interne.

Fichier lang_perso.php3 et lang_perso_xx.php3

Le fichier appelé perso.php3 jusqu’à la 1.8b5 et lang_perso.php3 pendant la 1.8b6 est supprimé.

Conclusion

Les informations ci dessus sont sujettes à modification sans préavis. Merci de suivre de près la discussion sur spip-dev et d’apporter les corrections utiles.