Version 2 — Octobre 2005 — lb00.ou-data.net
[Erreur...2]Contrainte :
- Dans la même arborescence de rubriques, des articles dans plusieurs langues. Il peut y avoir des articles non traduits dans n’importe quelle langue.
Préalable :
[Erreur...6]- SPIP 1.8.2 : la notation {lang=%lang}
est doit être remplacée par {lang=#ENV{lang}}
- $forcer_lang=true;
dans ecrire/mes_options.php3.
- Insérer #MENU_LANG
là où il faut dans la page pour que le visiteur puisse choisir sa langue.
- Pour les squelettes en morceaux, penser à passer le paramètre {lang}
à tous les <INCLURE(machin.php)>
qui deviennent donc des <INCLURE(machin.php) {lang}>
Objectif :
En fonction du choix du visiteur sur #MENU_LANG
,
[Erreur...13][Erreur...14]Sélectionner les articles qui sont dans la langue du visiteur ( # ENVlang % lang ), et exclure leurs traductions (y compris les versions originales) de la suite du traitement.
<BOUCLE_articles_with_translation(ARTICLES){id_rubrique}{lang=#ENV{lang}}>
<BOUCLE_traductions(ARTICLES){lang!=#ENV{lang}}{traduction}{doublons}>
</BOUCLE_traductions></BOUCLE_articles_with_translation>
[Erreur...17]
<BOUCLE_coming(ARTICLES){id_rubrique}{doublons}>
#TITRE
#TEXTE
</BOUCLE_coming>
</BOUCLE_rubrique_principale> // Tout en bas par defaut dans les squelettes SPIP
[Erreur...20][Erreur...21]- Au niveau de l’article : Si le visiteur change de langue (avec #MENU_LANG) au niveau d’un article, on tente de lui proposer le même article traduit dans sa langue si disponible.
<BOUCLE_article_principal(ARTICLES) {id_article}> // Tout en haut par defaut dans les squelettes SPIP
[Erreur...24][Erreur...25]C’est moins élégant que pour les rubriques. Je vais chercher une meilleure méthode sans redondance, y doit bien y en avoir une dans le meme style que ci dessus...
Mais en tout cas, ca marche bien.
Mortimer remarque : ce code oblige l’utilisateur à regarder l’article dans la langue qu’il a choisie. S’il décide de visiter le site en français, mais veut tout de même lire la traduction en anglais (disons id=15) d’un article qu’il vient de lire en francais (id=14) (il y a plein de bonnes raisons pour vouloir le faire), il doit changer de langue sur le site (i.e. s’il demande l’article 15, il verra toujours l’article 14, à moins de passer tout le site en anglais).