Présentation
Initialement créé par yohannp pour le squelette Squelette SoyezCréateurs Rebirth [1], ce menu peut être utilisé de 2 manières :
-
#MENU_LANG
: affichage du menu en mode de fonctionnalité réduite : permet de changer le cookie de langue en restant sur la même page. -
[(#INCLURE{fond=formulaires/menu_lang,env})]
:- changer la langue de navigation (cookie de langue)
- aller sur la traduction de l’article ou de la rubrique en cours si elle existe,
sinon, rester sur la même page
Le plugin a été porté sur SPIP3 par Cerdic
Installation
« Menu de langue sous forme de liens » s’installe comme tous les plugins. Il faut ensuite rajouter dans les squelettes le menu souhaité :
-
#MENU_LANG
: affichage du menu en mode de fonctionnalité réduite : permet de changer le cookie de langue en restant sur la même page. -
[(#INCLURE{fond=formulaires/menu_lang,env})]
: fonctionnalité ci-dessus + redirection vers l’article traduit si il existe.
Notez que menu_lang.html doit impérativement recevoir dans ses paramètres l’identifiant de l’article ou de la rubrique courante. C’est le cas si [(#INCLURE{fond=formulaires/menu_lang,env})]
est inséré directement dans article.html ou rubrique.html, puisque le critère env
permet de transmettre tout le contexte de compilation du squelette en cours à celui inclus (voir http://programmer.spip.org/Transmet...).
Par contre, si vous insérez [(#INCLURE{fond=formulaires/menu_lang,env})]
dans un autre squelette inclus, assurez-vous que ce squelette inclus possède bien tout le contexte de compilation.
Par exemple, si sous SPIP 3, vous dupliquez dans le répertoire « squelettes » les squelettes par défaut de SPIP (extensions/dist) et vous choisissez d’insérer [(#INCLURE{fond=formulaires/menu_lang,env})]
dans /inclure/header.html, vous devrez modifier toutes les occurrences de <INCLURE{fond=inclure/header} />
pour y rajouter le paramètre env
: <INCLURE{fond=inclure/header, env} />
.
Vous n’avez pas besoin de forcer la langue du site, le plugin le fait automatiquement.
Vous pouvez également installer le plugin CFG pour modifier les configurations avancées du plugin ainsi que le plugin Traduction entre rubriques (Tradrub) pour déclarer des traductions de rubriques.
Choix du format de langue
Par défaut, le plugin affiche le format complet de la langue (ex. Français, English).
Si vous avez installé le plugin CFG, vous pouvez choisir un format d’affichage abrégé (ex. Fr, En).
La liste des abréviations peut être consultée dans l’espace privé de votre site : « Configuration > Gestion des langues > Multilinguisme ».
Exclure des langues de l’affichage
Dès que vous commencez à déclarer des articles ou des rubriques dans une langue, celle-ci apparait dans le menu, même si les articles ne sont pas publiés.
Vous pouvez toutefois la faire disparaitre du menu en modifiant la configuration du plugin : « Configuration > CFG > Menu de langue sous forme de liens > Langues invisibles du menu ».
Quelles langues afficher ?
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.
Redirection vers la traduction des rubriques
Pour créer un site multilingue, vous pouvez soit laisser les traductions dans les mêmes rubriques que les articles de la langue principale et saisir les traductions des titres de rubriques avec des blocs multilingues :
Rubrique « Fleurs / Flowers » (Fr)
|_ Article « Marguerite » (Fr)
|_ Article « Daisy » (En)
Le titre de la rubrique « Fleurs » sera saisi de la façon suivante : <multi>[fr]Fleurs[en]Flowers</multi>
.
Soit créer dupliquer les rubriques (une par langue) :
Rubrique « Fleurs » (Fr)
|_ Article « Marguerite » (Fr)
Rubrique « Flowers » (En)
|_ Article « Daisy » (En)
Par défaut, SPIP permet de définir la langue d’une rubrique, mais pas de lier les traductions de rubriques entre elles, comme c’est le cas pour les articles. Pour ajouter cette fonctionnalité vous pouvez installer le plugin Traduction entre rubriques (Tradrub).
Quoi qu’il en soit, ces deux modes de fonctionnement sont supportés par le plugin : Dans le premier cas, si un visiteur change la langue du site sur la page d’une rubrique, le titre de la rubrique s’affichera dans la langue choisie (si elle a été saisie) dans le second cas, le visiteur sera redirigé vers la rubrique qui fait office de traduction.
Fonctionnement du plugin
Le fonctionnement est tout simple. Le menu utilise l’action converser de SPIP pour changer la langue (et le cookie avec) et si on est sur une page article et que ce même article affiché est traduit dans la langue sélectionnée, on redirige sur l’article traduit dans la langue sélectionnée.
Ressources sur le multilinguisme dans SPIP
- Réaliser un site multilingue (Documentation officielle)
Discussions par date d’activité
2 discussions
Bonjour
A priori le plugin ne fonctionne pas sur SPIP 4.2.3
#MENU_LANG ne génère pas de menu, pas plus que avec la syntaxe d’inclusion.
Pour vérifier j’ai désactivé le plugin et le menu de langue « vanilla » est réapparu.
Si quelqu’un a une idée de ce que je pourrai recoller ?
Merci
Bonjour,
Chez moi cela fonctionne avec Menu de langues avec liens 2.0.12
Je l’ai inséré avec
[<div c l a s s ="menu_lang">(#INCLURE{fond=formulaires/menu_lang,env})</div>]
dd
Merci pour l’info, je viens de tester et c’est ma syntaxe d’inclusion qui n’était pas bonne car pas d’environnement.
Tout marche c’est bien cool
Répondre à ce message
Bonjour,
en regardant sur « Google search console », je remarque que le robot qui indexe fait un peu ce qu’il veut quand ça ne lui plait pas.
Des meta desc farfelues, parce que celles indiquées sont un peu trop courtes.
Mai bref, de plus, plutôt que de prendre les URL canoniques déclarées du type
il référence à la place
et retire l’URL canonique du référencement, ce qui est moins élégant et peut-être moins efficace.
A priori, Google reprend les liens qu’il trouve dans « Menu de langues sous forme de liens ». Du coup sur des sites multilingues, il y a pas mal de pages indexées ainsi.
Y a-t-il quelque chose à faire pour éviter cela ?
PS : Est-il possible de mettre la version 2.10 en téléchargement si elle est fonctionnelle ? Elle corrige un bug d’URL dans les redirections
Merci et bonne journée !.
Pour les url indexée qui ne devraient pas l’être, est-ce qu’un paramètre dans le lien (de type rel=« noindex » ou autre à trouver) résoudrait la question ?
PS : et fondamentalement, un peu marre de travailler pour Google ;-)
J’entends bien le ras-le-bol de se plier pour Google ;) Malheureusement quand on se décarcasse à faire du contenu original, on a un peu l’impression que ce gros Mastodonte décide de notre visibilité... C’est assez flippant...
Le rel=« alternate » utilisé actuellement me semble pertinent et pour cela, le changer en rel=« noindex » m’embêtait. J’ai un peu peur que cela joue en défaveur du référencement.
Du coup, je suppose que l’on ne peut pas avoir les liens qui pointent sur les URL canoniques directement.
J’aurai au moins remonté ce truc, même si la réponse n’est pas évidente.
En tout cas, je te rassure, plus que de travailler pour Google, ce que tu fais est grandement apprécié par la communauté ! (Même si on ne le dit jamais assez ;) )
Bon, je documente mon échec de la journée, au moins tout ne sera pas perdu ;)
Je me suis dis, tant pis, je vais faire sans le plugin (réinventer la roue, c’est toujours une bonne idée...).
Du coup, après quelques tests, j’ai recréé les liens de langue avec un code récupéré ici : Traductions de rubriques autrement
Ça marche nickel et je mets cela sur mes rubriques seulement.
C’est après avoir crié victoire (certes beaucoup trop tôt), qu’en naviguant avec le menu spip (Plugin Menus), si les liens vont bien dans des contenus avec la langue souhaitée, l’interface qui utilise des chaines de langue n’est pas dans la même langue que le contenu.
J’avais bien activé « force lang » (Plugin couteau suisse), mais non.
J’avais aussi « trad » (Choisir la traduction en fonction du contexte) dans les menus, mais walou...
J’ai alors tenté de mettre en paramètre (du menu de plugin Menus) « lang=#ENVlang » en y croyant, mais cela renvoie nom_du_lien ?lang=#ENVlang et non pas nom_du_lien ?lang=en
C’est là que j’ai enfin compris que « action=conserver » devait avoir une utilité qui m’échappait.
Bref, j’ai réinventé la roue, mais elle est carrée... ;)
J’ai tenté des trucs comme
[(#MENU_LANG|inserer_attribut{rel, noindex})]
pour l’ajout de l’attribut noindex. Ça n’est pas le bon moyen a priori ;)
J’ai changé cela directement dans le fichier mll/formulaires/menu_lang.html en ajoutant noindex dans
rel="alternate noindex"
Quelqu’un sait s’il y a plus propre pour faire ça ? (sans avoir à le refaire pour chaque mise à jour du plugin.
Bonne journée !
Oups, correctif, c’est
rel="alternate nofollow"
qu’il faut mettre et non pas noindexEt avec
les versions dans les autres langues sont indexées avec la bonne URL ?
Pour l’instant, je ne vois pas de souci.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |