Plugin Menus: comment afficher un menu différent par langue?

Bonsoir,

Sur un site SPIP 4 multilingue, j’utilise le plugin Menus mais je n’arrive pas à avoir un menu par langue.

La problématique est complexe car, avec un secteur par langue, pour chaque article du secteur « Français » ont a un article de traduction dans le secteur « English ».

Mon menu ne pointe que vers des pages et pour chaque page on a 2 articles : l’original en français et l’article de traduction.

Il faudrait sans doute compléter les formulaires de configuration du plugin Menus pour qu’il y ait la possibilité d’ajouter un numéro d’article pour la traduction.

Des champs extra peut-être ?

J’ai tenté les bloc multi, mais ça ne fonctionne pas.

Une idée ?

Merci d’avance,

Cordialement,

Hervé

Il y a sans doute plusieurs solutions, celle que j’utilise sur un site multilingue avec un secteur français et un English est de dupliquer le menu avec un en français et l’autre en anglais.
J’ai donc un menu pied_en et un menu pied_fr
Et dans mon squelette j’appelle le menu ainsi :
#INCLURE{fond=inclure/menu, env, identifiant=pied_(#ENV{lang})}
Le menu correspondant s’affiche en fonction du contexte de langue.
Si les menus ne changent pas souvent c’est une solution viable.

Bonne idée, je vais tenter

Une alternative un peu dans la même idée que celle proposée par @Jack31 : depuis la v1.7 il est possible d’associer des menus aux contenus.

Dans la config, activer les menus sur les rubriques, puis créer un menu par secteur de langue, et les associer à ces derniers.
Ensuite dans les squelettes, il suffit de récupérer le menu associé au secteur courant.
De tête, quelque chose comme ça (vérifier qu’il y ait bien id_secteur dans l’env, sinon adapter) :

<BOUCLE_menu(MENUS) {id_rubrique=#ENV{id_secteur}}>
<INCLURE{fond=inclure/menu, identifiant, env}>
</BOUCLE_menu>

avec comme identifiant du menu en anglais « barre_en », j’ai tenté, sans succès:
<div class="NavHoriz">#INCLURE{fond=inclure/menu, env, identifiant=barre_(#ENV{lang})}</div>

Où me suis-je trompé?

Merci d’avance,

Cordialement,

Hervé

Comment les associe-t-on?
Je ne suis pas sûr d’avoir compris tes explications.

J’ai un secteur par langue.

Pour l’instant, à part le menu du site, le multilinguisme fonctionne très bien avec les liens de traduction sous les titre d’articles.

Merci d’avance,

Cordialement,

Hervé

Pour la solution avec le suffixe en, tu as bien l’environnement de langue passée dans l’url ?
?lang=en

En ce qui concerne la solution proposée par Tcharlss il faut d’abord que tu ailles dans la configuration du plugin menus ecrire/?exec=configurer_menus tu sélectionnes rubrique dans « Choisissez les contenus auxquels on peut associer des menus », tu enregistres et ensuite tu as la possibilité d’associer un des menus que tu as créés en allant dans la rubrique.
Je ne connaissais pas mais ça a l’air assez élégant comme solution

Finalement, #INCLURE{fond=inclure/menu, env, identifiant=barre_(#ENV{lang})} fonctionne avec mes menus barre_fr et barre_en, mais c’est le plugin Menu de langues sous forme de liens - SPIP-Contrib qui empêche une bonne part des éléments des squelettes de basculer entre les langues et même avec les squelettes_dist.
une fois ce plugin désactivé, on retrouve le comportement multilingue normal.

il faudrait investiguer ce qui ne va pas dans ce plugin qui est fort utile ne temp normal.
j’ai laissé un commentaire sur sa page sur contrib.spip.net

merci en core de tes conseils

MLL n’utilise pas le paramètre de lang dans l’URL mais le cookie de langue.

Ceci explique peut-être cela…

Je comprend mieux :wink:

Bah, j’utilise MLL sur le site où j’utilise les menus avec suffixe de langue et tout fonctionne correctement.

Le 14/08/2021 à 12:47, Hervé Le Dantec via Discuter de SPIP a écrit :

[Herve_Le_Dantec] Hervé Le Dantec https://discuter.spip.net/u/herve_le_dantec Herve_Le_Dantec
Août 14

Jack31:

#INCLURE{fond=inclure/menu, env, identifiant=pied_(#ENV{lang})}

avec comme identifiant du menu en anglais « barre_en », j’ai tenté, sans succès:
#INCLURE{fond=inclure/menu, env, identifiant=barre_(#ENV{lang})}

Peut être irace mieux sans les parenthèses :

#INCLURE{fond=inclure/menu, env, identifiant=barre_#ENV{lang}}

JL