Carnet Wiki

MultilinguismeExemple5

Version 1 — October 2005 — Dan Hetzel — Version initiale

[Error...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 :

[Error...6]- SPIP 1.8.2: la notation {lang=%lang} 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,

[Error...13][Error...14]Sélectionner les articles qui sont dans la langue du visiteur ( %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>

[Error...17]

<BOUCLE_coming(ARTICLES){id_rubrique}{doublons}>
        #TITRE
        #TEXTE
</BOUCLE_coming>

</BOUCLE_rubrique_principale>   // Tout en bas par defaut dans les squelettes SPIP

[Error...20][Error...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

[Error...24][Error...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).