Afficher deux langues sur la même page avec <multi> ?

Bonsoir,

J'utilise la balise <multi> dans le contenu des articles sans aucun problème : avec le menu lang, on peut afficher le même article en francais ou en anglais (même id_article).
Par contre comment afficher sur la MEME page le texte d'un article en français ET plus bas en anglais ? J'ai essayé <BOUCLE_art1(ARTICLES){id_article} {lang=fr} > et <BOUCLE_art2(ARTICLES){id_article} {lang=en} > mais ca ne marche pas. :cry:

Exemple avec #TEXTE = <multi>[fr]xxxxxxxxx[en]yyyyyyyyyyyyyy</multi>
je voudrais afficher sur la même page :

       xxxxxxxxxx

       yyyyyyyyyy

Merci pour votre aide
-Eric

Salut,
Je viens de faire plusieurs tests car ce type de résultat m'intéresse mais je n'y arrive pas non plus.

Apparemment, le critère {lang=xx} n'intervient que sur les traductions d'articles et pas du tout sur la balise <MULTI>.

Et lorsque je supprime $forcer_lang = true; dans mes_options.php, alors, il n'y a plus que le texte en français qui apparait dans mes articles même lorsque le menu lang est en anglais. Je suppose que c'est parceque la langue principale du site est le français.

Donc je pense qu'il faudrait plutôt appliquer un filtre à la balise #TEXTE DU TYPE [(#TEXTE|lang=en)] ou [(#TEXTE|multi=en)].

Mais ce filtre n'existe pas.

Si quelqu'un a une idée...

Mathieu

Tropicaloo a écrit :

Bonsoir,

J'utilise la balise <multi> dans le contenu des articles sans aucun problème : avec le menu lang, on peut afficher le même article en francais ou en anglais (même id_article).
Par contre comment afficher sur la MEME page le texte d'un article en français ET plus bas en anglais ? J'ai essayé <BOUCLE_art1(ARTICLES){id_article} {lang=fr} > et <BOUCLE_art2(ARTICLES){id_article} {lang=en} > mais ca ne marche pas. :cry:

Exemple avec #TEXTE = <multi>[fr]xxxxxxxxx[en]yyyyyyyyyyyyyy</multi>
je voudrais afficher sur la même page :

       xxxxxxxxxx

       yyyyyyyyyy

Merci pour votre aide
-Eric

Tropicaloo wrote:

Par contre comment afficher sur la MEME page le texte d'un article en français ET plus bas en anglais ?

Un peu compliqué, je pense. Soit il faut mettre des boucles environnantes pour "fixer" la langue... quelque chose comme :

<BOUCLE_fr(RUBRIQUES){id_rubrique=n1}>
<BOUCLE_art1(ARTICLES){id_article}{!lang_select} >
#TEXTE
</BOUCLE_art1>
</BOUCLE_fr>

<BOUCLE_en(RUBRIQUES){id_rubrique=n2}>
<BOUCLE_art1(ARTICLES){id_article}{!lang_select} >
#TEXTE
</BOUCLE_art1>
</BOUCLE_fr>

ou rubrique n1 est en fr et n2 en anglais,

soit écrire un filtre dans mes_options pour pouvoir extraire d'un multi toujours la langue désirée. Je ne l'ai pas essayé, mais je ne pense pas qu'il serait trop difficile.

[(#TEXTE|tradmult{'fr'})]
<br />
[(#TEXTE|tradmult{'en'})]

Paolo

Tropicaloo a écrit :

Par contre comment afficher sur la MEME page le texte d'un article en français ET plus bas en anglais ? J'ai essayé <BOUCLE_art1(ARTICLES){id_article} {lang=fr} > et <BOUCLE_art2(ARTICLES){id_article} {lang=en} > mais ca ne marche pas. Exemple avec #TEXTE = <multi>[fr]xxxxxxxxx[en]yyyyyyyyyyyyyy</multi>
je voudrais afficher sur la même page :
       xxxxxxxxxx
       yyyyyyyyyy

Mathieu MAILLET avait prétendu :

Apparemment, le critère {lang=xx} n'intervient que sur les traductions d'articles et pas du tout sur la balise <MULTI>.
Et lorsque je supprime $forcer_lang = true; dans mes_options.php, alors, il n'y a plus que le texte en français qui apparait dans mes articles même lorsque le menu lang est en anglais. Je suppose que c'est parceque la langue principale du site est le français.
Donc je pense qu'il faudrait plutôt appliquer un filtre à la balise #TEXTE DU TYPE [(#TEXTE|lang=en)] ou [(#TEXTE|multi=en)].
Mais ce filtre n'existe pas.
Si quelqu'un a une idée...

Mathieu,
Ce qui est étrange c'est que le lang=en est pris en compte lorsqu'il est passé dans l'URL (ex spip.php?page=article&id_article=1&lang=en
mais pas dans la boucle.
Il doit y avoir un paramètre à passer dans la boucle avec #ENV mais comme j'ai pas trop compris grand chose à son utilisation .....
-Eric

Paolo vient de nous annoncer :

Tropicaloo wrote:

Par contre comment afficher sur la MEME page le texte d'un article en français ET plus bas en anglais ?

Un peu compliqué, je pense. Soit il faut mettre des boucles environnantes pour "fixer" la langue... soit écrire un filtre dans mes_options pour pouvoir extraire d'un multi toujours la langue désirée.

Merci Paolo pour ces pistes.
La solution 1 suppose de créer une rubrique [en] fantôme.
Je me demande s'il n'y a pas de solution avec le #ENV. à creuser...
Quant au filtre, effectivement, il suffit de conserver tout ce qui existe entre [fr] et [en] dans un cas et entre [en] et </multi> dans le deuxième.

En tout cas, merci beaucoup pour tes conseils, je vais essayer.

Tropicaloo wrote:

Quant au filtre, effectivement, il suffit de conserver tout ce qui existe entre [fr] et [en] dans un cas et entre [en] et </multi> dans le deuxième.

Regarde les fonctions dans ecrire/inc/filtres.php

dans la version 1.9.3 lignes après 1184
// Gestion des blocs multilingues ...

pas si simple d'adapter comme filtre que je pensais...

Paolo

Paolo a présenté l'énoncé suivant :
Regarde les fonctions dans ecrire/inc/filtres.php
dans la version 1.9.3 lignes après 1184
// Gestion des blocs multilingues ...
pas si simple d'adapter comme filtre que je pensais...

Super, j'ai trouvé Paolo !!!
il faut appeler un modèle auquel on passe la variable lang=en

<BOUCLE_fr(ARTICLES){id_article}>
#TEXTE
</BOUCLE_fr>
[(#MODELE{boucle_en} {id_article=#ID_ARTICLE} {lang=en})]

Dans le modèle {boucle_en} il y a :
<BOUCLE_en(ARTICLES){id_article}>
#TEXTE
</BOUCLE_en>

Et voilà !
Reste à gérer les cas où il n'y a que du français et pas de trad en anglais > le multi affiche alors par défaut le français. Mais ça c'est le comportement normal du <multi>.

@+
Eric