! [spip-dev] multilinguisme côté visiteur

Coucou,

et voici la dernière pierre qui manquait au chateau multilingue :
l'affichage du contenu en fonction des préférences de langue du visiteur.

Bizarrement, c'est ce qu'il fallait faire en dernier, car le cache de SPIP
implique pas mal de contraintes.

Comment ça marche :

- si un squelette (sommaire.html, par exemple) doit s'adapter à la langue du
  visiteur, il faut le préciser en ajoutant, dans le fichier d'appel
  (sommaire.php3), en ajoutant la ligne
        $multilang = true;

- à ce moment-là, le squelette s'enregistrera dans un cache différent en
  fonction de la langue du visiteur, et respectera cette langue comme s'il
  s'agissait de la "langue du site" (pour les formulaires, par exemple), ou
  de la "langue du contexte" (pour le critère {lang})

Exemple :
  <BOUCLE_articles(ARTICLES){lang}>#TITRE</BOUCLE_articles>
  donnera tous les titres des articles de la langue du visiteur.

- une balise #FORMULAIRE_LANG affiche un menu de sélection de langue.

Exemple :
        <html lang="#LANG" dir="#LANG_DIR">
        <div align="right">#FORMULAIRE_LANG</div>
        <BOUCLE_articles(ARTICLES){lang}{par date}{inverse}{0,1}>
        #TITRE - [(#DATE|affdate_court)]</BOUCLE_articles>
        </html>
   affichera l'article le plus récent dans la langue sélectionnée dans le
   menu en haut à droite.

- On peut utiliser $multilang dans les INCLURE, par exemple si seul le
  formulaire d'inscription au site doit être multilingue-visiteur (comme par
  exemple sur http://www.spip.net/rubrique4.html ), il vaut mieux garder
  le squelette normal en fonctionnement noraml, pour ne pas le recalculer
  pour chaque langue (alors qu'il va donner le même résultat dans toutes les
  langues-visiteur) ; et mettre le formulaire en question en
  <INCLURE(formulaire-inscription.php3)>
  en indiquant $multilang=true; dans formulaire-inscription.php3, et en
  mettant juste #FORMULAIRE_INSCRIPTION dans le squelette correspondant,
  formulaire-inscription.html

- La variable d'URL lang=xx, ou celle précisée avec
  <INCLURE(...){lang=..}> s'impose sur celle du visiteur.

- $multilang est une variable globale, qui descend en cascade dans les
  fichiers inclus ; donc, si on inclut un squelette indépendant de la
  langue du visiteur, il vaut mieux mettre $multilang=false; dans le fichier
  inclus, histoire de ne pas multiplier les fichiers cache (et leurs
  problèmes de synchronisation).

- le cache multilingue-visiteur est géré comme suit : lorsque SPIP veut lire
  ou écrire le fichier cache d'un squelette marqué "$multilang", il ajoute
  simplement -$lang à son nom.

-- Fil

Bonjour,

Dans quelle version cette modif figure t-elle ? La CVS ou la 1.7.1 ?

Merci