Le système d’internalisation de Spip est traditionnel, complet et optimisé.
Les données sont stockées dans des fichiers de traductions "pré-mâchés". Ces fichiers sont générés à partir de l’outil disponible sur L’espace des traducteurs . Les données sont regroupées par domaine, de base, Spip utilise public pour la partie public et spip pour tout ce qui concerne l’interface d’administration. Les fichiers dictionnaires utilisent une nomenclature précise : $domaine_$langue.php3 et il contienne une Array qui se charge dans une variable globale, indexé par langue. Pour charger un dictionnaire, un simple include suffit.
Dans le code, c’est la fonction _T($text, $args=’’) de ecrire/inc_version.php3 qui est utilisée. $text est un mot clef. _T utilises tout une série de fonction regroupées dans ecrire/inc_lang.php3
Une traduction peut contenir des variables : ceci est une traduction de @auteur@, dans ce cas, il faut que l’argument $args soit un tableau $clef=>$valeur
Par défaut, le domaine recherché est spip, mais il est possible d’en charger d’autres avec une syntaxe spécial dans le mot clef : $list :ma_clef
$list est une chaîne de domaine séparé par des /
Pour profiter du système de traduction de Spip avec son dictionnaire à soit, spécifique à son site, il faut : Au minimum un fichier dictionnaire /lang/monAppli_fr.php3, on pourra ensuite rajouter des traductions /lang/monAppli_en.php3, le français étant considéré langue par défaut.
Ensuite, dans le code un simple echo _T(’monAppli :mon_mot_clef’) ; affichera le mot dans la langue courante. Spip se débrouille tout seul pour déterminer la langue courante, gérer le cache, produire de l’utf8 et palier aux langues non traduites.
Dans un squelette, il faut utiliser la syntaxe < :mon_mot_clef :>
Pour utiliser un dictionnaire de manière minimaliste, sans traduction, sans avoir besoin de le charger spécifiquement, il suffit d’utiliser /lang/perso.php3 comme fichier dictionnaire
Le contenu de la base peut aussi être internationalisé (voir : blocs multi, liens de traduction, etc.)