Non aux brevets logiciels

SpipLab

i18n

PagePrincipale :: DerniersChangements :: Vous êtes 38.103.63.61 (Connexion)

1. L’internationalisation des chaînes du code de SPIP

Le système d’internalisation de Spip est traditionnel, complet et optimisé.

Stockage

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.

Fonctionnement interne

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 /

Utilisation concrète

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

2. Le contenu de la base

Le contenu de la base peut aussi être internationalisé (voir : blocs multi, liens de traduction, etc.)