Traduction et boucle événenements

Bonjour,
Je continue mes soucis de traductions très chronophage, mais cette fois avec le pluging Agenda et la boucle événement.
Dans cette boucle j’utilise des mots clés pour nommé des invités (qui pointe vers la fiche de l’invité), la thématique, et les lieux.

J’utilise le plugin Multilang pour traduire mes mots clé et le plugin Site multilingue facile pour tout le reste.

En français tout fonctionne, mais en anglais, soit tout reste en français, soit tout disparait si je tente de mettre le critère lang a la boucle « BOUCLE_jours_uniques(EVENEMENTS) », et la balise Multi ne fonctionne pas sur la boucle evenement, ni même sur ma boucle « thème »…
J’ai tout essayé, mais je ne comprend pas se qui cloche…

voici la page d’accueille où se trouve l’agenda : https://test.weekendalest.com/spip.php?rubrique2&lang=en&var_mode=recalcul

voici ma boucle événement qui n’affiche que en français :

<h2><:prochainement:></h2>
<hr>
<BOUCLE_jours_uniques(EVENEMENTS) {par date_debut} {id_rubrique !IN 14,23} {statut=publie} {age_fin<=0} {fusion date_debut} {0,5}>

   <B_evenements_du_jour>
   <BOUCLE_jour(RUBRIQUES){id_rubrique}{doublons} >
          <h3 class="horaire">#TITRE</h3>
          </BOUCLE_jour>
        
        <BOUCLE_evenements_du_jour(EVENEMENTS) {par date_debut} {statut=publie} {age_fin<=0} {date_debut=#DATE_DEBUT}>
           <multi>[(#GET{date_affichee}|=={#DATE_DEBUT|affdate}|?{'','<div class="evenement_detail">'})]</multi> 
            
            <B_lesevenementsarticle>
                
                
                <BOUCLE_lesevenementsarticle(ARTICLES) {id_article} >
                    
                    
                    
                    <BOUCLE_theme(GROUPES_MOTS) {id_groupe=1}>
                        <BOUCLE_mot_theme(MOTS) {id_article} {id_groupe !IN 2,3}>
                            <h3 style="display:inline"><b><multi>#TITRE</multi> &#x2794;</b></h3>
                        </BOUCLE_mot_theme>
                    </BOUCLE_theme>
                    
                    
                    

                    <a href="#URL_ARTICLE">
                        <h3 class="agenda_ligne"><b><multi> [(#DATE_DEBUT|heures)]h[(#DATE_DEBUT|minutes)] &#x2794; [(#DATE_FIN|heures)]h[(#DATE_FIN|minutes)]</multi>  </b></h3>
                    </a>
                    <h3>#TITRE</h3>

                    <hr>

                    <B_gr>
                        <BOUCLE_gr(GROUPES_MOTS) {id_groupe=2}>
                           <a href="#URL_ARTICLE">  <b><multi>#TITRE</multi></b></a>
                            <BOUCLE_mot_mobile(MOTS) {id_article} {id_groupe !IN 3,1}>
                                <a href="#URL_ARTICLE"><small><multi>#TITRE</multi></small></a>
                            </BOUCLE_mot_mobile>
                        </BOUCLE_gr>
                    </B_gr>

                    <hr>
                </BOUCLE_lesevenementsarticle>
            </B_lesevenementsarticle>
            
           <multi>  [(#GET{date_affichee}|=={#DATE_DEBUT|affdate}|?{'','</div>'})]</multi> 
        </BOUCLE_evenements_du_jour>
</B_evenements_du_jour>

</BOUCLE_jours_uniques>

<BOUCLE_bouton_invite(RUBRIQUES){id_rubrique IN 14,23}{lang}>
    <a href="#URL_RUBRIQUE">
        <button class="bouton"><:voir_toutes_les_expositions:></button>
    </a>
</BOUCLE_bouton_invite>

Merci oour votre aide, il y a bien un moyen d’utilisér Agenda en site bilingue ?

Bien sûr que Agenda peut prendre des langues autres que FR. Pour les champs dans l’espace privé utiliser la balise <multi> (et pas dans le squelette comme je le vois dans ton message ci-dessus). Pour la partie publique, il faut le paramètre dans l’url &lang=en ou ?lang=en donc dans ton squelettes affiche le lien vers ta page agenda |parametre_url{lang,#LANG} (ou #ENV{lang}) en fonction d’où se trouve ce lien (dans une boucle article → #LANG ? en dehors d’un contexte de boucle ? → #ENV{lang}).
Et si la variable de lang ne passe pas, peut-être il manque un env dans un <INCLURE>.

Je n’ai pas suivi tous les échange mais est-ce qu’il ne faudrait pas forcer la langue ?

Hello Fab, Merci de ta réponse,
je comprends pas bien quand tu dis de ne pas mettre la balise Multi dans le squelette, je l’ai fait précédemment, pour mon menu par mot clé / thématique ou pour les mots clés affichés en haut de page et ça marche bien et je ne voie pas comment le faire dans l’espace privé concernant un événement, car il s’agit de la date.

Concernant mon url, sur le lien que j’ai donné, il y a bien &lang=en, tout se traduit sur ma page, sauf mon agenda (a cause de la boucle événements qui me pause problème).

Je remets le lien ici : TBILISI - UN WEEK-END À L’EST

Je remet juste mon Agenda ici, la boucle événement m’empêche même d’avoir le nom de ma rubrique de la boucle « BOUCLE_jour » traduite :

<h2><:prochainement:></h2>
<hr>
<BOUCLE_jours_uniques(EVENEMENTS) {par date_debut} {id_rubrique !IN 14,23} {statut=publie} {age_fin<=0} {fusion date_debut} {0,5}>

   <B_evenements_du_jour>
   <BOUCLE_jour(RUBRIQUES){id_rubrique}{doublons}>
          <h3 class="horaire">#TITRE</h3>
          </BOUCLE_jour>
        
        <BOUCLE_evenements_du_jour(EVENEMENTS) {par date_debut} {statut=publie} {age_fin<=0} {date_debut=#DATE_DEBUT}>
           <multi>[(#GET{date_affichee}|=={#DATE_DEBUT|affdate}|?{'','<div class="evenement_detail">'})]</multi> 
            
            <B_lesevenementsarticle>
                <BOUCLE_lesevenementsarticle(ARTICLES) {id_article}>
                    <BOUCLE_theme(GROUPES_MOTS) {id_groupe=1}>
                        <BOUCLE_mot_theme(MOTS) {id_article} {id_groupe !IN 2,3}>
                            <h3 style="display:inline"><b><multi>#TITRE</multi> &#x2794;  </b></h3>
                        </BOUCLE_mot_theme>
                    </BOUCLE_theme>

                    <a href="#URL_ARTICLE">
                        <h3 class="agenda_ligne"><b><multi> [(#DATE_DEBUT|heures)]h[(#DATE_DEBUT|minutes)] &#x2794; [(#DATE_FIN|heures)]h[(#DATE_FIN|minutes)]</multi>  </b></h3>
                    </a>
                    <h3>#TITRE</h3>

                    <hr>

                    <B_gr>
                        <BOUCLE_gr(GROUPES_MOTS) {id_groupe=2}>
                           <a href="#URL_ARTICLE">  <b> <:ou:> </b></a>
                            <BOUCLE_mot_mobile(MOTS) {id_article} {id_groupe !IN 3,1}>
                                <a href="#URL_ARTICLE"><small><multi>#TITRE</multi></small></a>
                            </BOUCLE_mot_mobile>
                        </BOUCLE_gr>
                    </B_gr>

                    <hr>
                </BOUCLE_lesevenementsarticle>
            </B_lesevenementsarticle>
            
           <multi>  [(#GET{date_affichee}|=={#DATE_DEBUT|affdate}|?{'','</div>'})]</multi> 
        </BOUCLE_evenements_du_jour>
</B_evenements_du_jour>

</BOUCLE_jours_uniques>


Comme ça :

Merci mais ce n’est ce que je cherche, je n’utilise pas le formulaire descriptif ni le titre,
Juste la date que je veux avec les jours en anglais.

Sur cet exemple : Les expositions - UN WEEK-END À L’EST

il est écrit sous l’horaire 17h30 / 20h30 « du mardi 23 novembre au mercredi 27 »
J’aimerai : 5pm30 / 8pm30 " « from Tuesday November 23 to Wednesday 27 »

Mais là En anglais, il ne m’affiche rien même pas la date en français.

Ma boucle événement en question :

<B_lesevenements>
<BOUCLE_lesevenements(EVENEMENTS) {par date} {id_article} {lang}>
    
<h3 class="horaire">
[(#DATE_DEBUT|heures)]h[(#DATE_DEBUT|minutes)] &#x2794; [(#DATE_FIN|heures)]h[(#DATE_FIN|minutes)]</h3>
    
<b>Du [(#DATE_DEBUT|nom_jour)] [(#DATE_DEBUT|affdate{'j'})] [(#DATE_DEBUT|nom_mois|ucfirst)] au [(#DATE_FIN|nom_jour)] [(#DATE_FIN|affdate{'j'})] [(#DATE_FIN|nom_mois|ucfirst)]</b>
    
    <p>Langue courante : [(#ENV{lang})]</p>

</BOUCLE_lesevenements>           
</B_lesevenements>

il faudrait le code la page en entier, à mon avis il doit manquer une transmission de la variable lang dans un inclure, ou quelque chose comme ça. Je vérifie régulièrement l’était des variables un peu partout avec [<pre>(#ENV**|unserialize|print_r{1})</pre>] (j’ai snippet sous VScode pour toujours l’avoir sous le coude)

Merci, j’ai pas un super niveau de compréhension, concernant cette page « expositions » voci le code complet :

<BOUCLE_principale(RUBRIQUES) {id_rubrique}>
<!DOCTYPE html>
<html dir="#LANG_DIR" lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js">
<head>
	<script type='text/javascript'>/*<![CDATA[*/(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);/*]]>*/</script>
	<title>[(#TITRE|couper{80}|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>
	[<meta name="description" content="(#INTRODUCTION{150}|attribut_html)" />]
	[<link rel="canonical" href="(#URL_RUBRIQUE|url_absolue{#URL_SITE_SPIP})" />]
	<INCLURE{fond=inclure/head} />
	[(#REM) Lien vers le flux RSS des articles la rubrique ]
	<link rel="alternate" type="application/rss+xml" title="<:syndiquer_rubrique:>" href="[(#URL_PAGE{backend}|parametre_url{id_rubrique,#ID_RUBRIQUE})]" />
</head>

<body>
 <div id="page">
   
<div id ="choix_langue"><INCLURE{fond=inclure/menu_langues,env}/></div>
    
<INCLURE{fond=inclure/nav,env} />
     <INCLURE{fond=inclure/header,env} />
  
     
     
<section id="contenu"><!-- section global -->
   
    
    <ul id="nav2"><BOUCLE_menu2(RUBRIQUES) {id_rubrique=10}{lang}>
   <BOUCLE_menu(RUBRIQUES) {id_parent} {par num titre}{lang}{tout}{id_rubrique !IN 22}>
       <li> <a [class=(#EXPOSE)] href="[(#URL_RUBRIQUE|parametre_url{lang,#ENV{lang}})]">#TITRE</a></li>
       </BOUCLE_menu>
        </BOUCLE_menu2>
    </ul>
       
<BOUCLE_thematique (GROUPES_MOTS){id_groupe=1}>

    <ul id="nav3">
<BOUCLE_mot__thematique(MOTS){id_groupe} >
<li><a  href="[(#URL_MOT|parametre_url{lang,#ENV{lang}})]"><multi>#TITRE</multi> </a>  </li>
</BOUCLE_mot__thematique>
    </ul>
               
</BOUCLE_thematique>

<!-- LE PROGRAMME  ——————————————————————————————————————————————————— -->
<article id="section-programme"> 

<div id="conteneur_programme">

    <BOUCLE_articles(ARTICLES) {id_rubrique} {par date} {inverse} {lang}>
        
<a href="[(#URL_ARTICLE)]">
<div class="vignette_programme">   

    <div class="info_vignette_expo">
        
      <hr>
    
<BOUCLE_theme(GROUPES_MOTS){id_groupe=1}>
<BOUCLE_mot_theme(MOTS){id_article} {id_groupe !IN 2,3}>
 <h3 class="horaire"><multi> #TITRE</multi></h3>
</BOUCLE_mot_theme>
</BOUCLE_theme> 
        
      <hr>

<B_lesevenements>
<BOUCLE_lesevenements(EVENEMENTS) {par date} {id_article} {lang}>
    
<h3 class="horaire">
[(#DATE_DEBUT|heures)]h[(#DATE_DEBUT|minutes)] &#x2794; [(#DATE_FIN|heures)]h[(#DATE_FIN|minutes)]</h3>
    
<b>Du [(#DATE_DEBUT|nom_jour)] [(#DATE_DEBUT|affdate{'j'})] [(#DATE_DEBUT|nom_mois|ucfirst)] au [(#DATE_FIN|nom_jour)] [(#DATE_FIN|affdate{'j'})] [(#DATE_FIN|nom_mois|ucfirst)]</b>
    
    <p>Langue courante : [(#ENV{lang})]</p>

</BOUCLE_lesevenements>           
</B_lesevenements>

        
        
        
        
        
        <hr>

<h2><a href="#URL_ARTICLE">#TITRE</a></h2> 
        
        <hr>

<BOUCLE_lieux(GROUPES_MOTS){id_groupe=2}>
<b><:ou:></b>
<BOUCLE_mot_lieux(MOTS){id_article} {id_groupe !IN 1,3}>
#TITRE
</BOUCLE_mot_lieux>
</BOUCLE_lieux>  
    
        <hr>
<B_gr>     
<BOUCLE_gr(GROUPES_MOTS){id_groupe=3}>
<b><:avec:></b>
<BOUCLE_mot_mobile(MOTS){id_article} {id_groupe !IN 2,1}>
<BOUCLE_mobile(ARTICLES){id_mot}{id_rubrique=11}{par date}{lang}{inverse}>
<a href="#URL_ARTICLE"><multi>#TITRE</multi> <multi>#SOUSTITRE</multi></a> <mark><b>,</b></mark>
</BOUCLE_mobile>
</BOUCLE_mot_mobile>
</BOUCLE_gr>
</B_gr>   

    </div>
    
<div class="doc_vignette_expo">
<BOUCLE_image(DOCUMENTS) {id_article} {mode=image} {par rang_lien, num titre,} {0,1}>
[(#LOGO_ARTICLE|image_recadre{1:1,'-','center center'}|sinon{#LOGO_DOCUMENT|image_recadre{1:1,'-','center center'}})]
</BOUCLE_image>
[(#LOGO_ARTICLE|image_recadre{1:1,'-','center center'})]
<//B_image>
</div>  
       
<div class="lire_la_suite">En savoir +</div>
</div> 
</a>
        
   </BOUCLE_articles>
   
</div>
    
</article>

        
    
    

    
    

</section >
    
    
    
    
    
    
    

    
    </div>

</body>
</html>
</BOUCLE_principale>

Mais, il y a quelque chose qui cloche de manière plus général, je suis en français sur ma page d’accueil, je clique sur le bouton « english », j’ai ma page qui se traduit avec &lang=en TBILISI - UN WEEK-END À L’EST , j’ai mon agenda non traduit, je vais dans un rubrique et si je reviens sur la page d’acceuille via <a rel="start home" href="[(#URL_SITE_SPIP|parametre_url{lang,#ENV{lang}})]" title="<:accueil_site:>"> et là je suis sur ma page d’accueil non traduite, « TBILISI - UN WEEK-END À L’EST » sans &lang=en.

Je ne comprends pas, ça a a toujours été relativement simple de faire un site bilingue mais là j’ai plein de problème…

Sans pour autant savoir résoudre le problème, le critère {par date_debut} pose problème, j’ai l’impression que comme il ne prend pas en compte la boucle événement en anglais, ce critère fait qu’il ne m’affioche rien du tout.
Je ne comprend pas comment associer mon Agenda à ma traduction…

Sans vouloir paraitre insistant :laughing: je te conseille de regarder du côté du plugin Multilang qui simplifie grandement les choses en n’ayant qu’un objet (article/rubrique/mot) peu importe la langue et évitant ainsi tout un tas de problèmes pour des sites simples.

Je veux bien essayer Multilang, je tente actuellement, si j’ai bien compris, pas besoin de dupliquer mes rubriques, mais comment on obtient le bouton « menu langue » dans linterface public ? pour basculer d’une langue à l’autre ?

Mais cela ne reglera pas mon souci de traduire la date…

Tu pourrais utiliser ce plugin : Menu de langues sous forme de liens - SPIP-Contrib

Oui, c’est ça.
Et Menu de langues sous forme de liens - SPIP-Contrib pour changer de langue.
(voir Quelles langues afficher ? si besoin)

Avec un test dans ce genre ?

[(#ENV{lang}|=={fr}|?{
horaire en français
,
horaire en anglais
})]

Voir |affdate - SPIP pour la forme.

Alors j’ai bien installé Multilang, j’ai fait mes traductions, pour les articles, j’ai installé le bouton Menu de langues sous formes de liens, c’est bien apparue, mais quand j’ai supprimé toutes mes rubriques des mes anciennes traductions avec l’ancienne méthode le bouton à disparue, comme si qu’il ne prenait pzas en compte mes traductions de Multilang…

Je précise, que le site est bien traduit, c’est juste le bouton qui n’apparait pas

il faut voir :

qui indique :

Par défaut, le menu affiche les langues réellement utilisées dans les articles (via le formulaire de choix de la langue).

Si la variable _MLL_LANGUES_MULTILINGUE (V1.3.0) vaut true, le menu est construit à partir de toutes les langues à disposition des rédacteurs (menu Configuration > Multilinguisme), qu’elles soient utilisées ou non.

EDIT : la variable est à ajouter dans le fichier mes_options.php

J’ai pas mal parcouru cette page, et je ne comprends pas tout, en mettant le #MENU_LANG ça marchait, mais avec mon ancienne méthode de traduction, mais pas avec le pluging Multilang, et je ne sais pas ce qu’est la variable _MLL_LANGUES_MULTILINGUE, il n’y a pas de liens vers ça,.

Mais il est écrit « Par défaut, le menu affiche les langues réellement utilisées dans les articles », donc mon menu devrait m’afficher le français et l’anglais, puisqu’ils sont par défaut sélectionné dans mes rubriques et articles.

C’est vraiment frustrant, de passer autant de temps sans solution sur quelque chose d’aussi simple d’avoir un bouton pour switcher entre le français et l’anglais.

Quand tu fais tes tests il faut que tu fasses attention au cookie de Lang que tu as dans le privé : j’avais un site qui marchait très bien mais j’avais l’impression que non (langues mélangées sur différents objets du même article) mais pour les personnes non connectées ça marchait très bien.

Ajoute define('_MLL_LANGUES_MULTILINGUE', true); dans ton fichier mes config/mes_options.php puis dans Configurer > Multilinguisme, tu coches les langues que tu veux afficher.
Et dans Configurer > Multilang, il ne faut cocher aucune case pour qu’elles soient toutes affichées.

Mais tes articles sont dépubliés, j’imagine que ça vient de là.