[(#REM) Si _MLL_LANGUES_MULTILINGUE est definie, on utilise la variable meta langues_multilingue (langues à disposition des rédacteurs, comportement natif de SPIP). Sinon, on utilise langues_utilisees (langues reellement utilisees dans les articles). Les langues "invisibles" sont les langues que le webmestre peut choisir de ne pas afficher dans le menu, a partir du formulaire de configuration du plugin. ] [(#VAL{_MLL_LANGUES_MULTILINGUE}|defined|et{#VAL{_MLL_LANGUES_MULTILINGUE}|constant|=={true}}|?{ #SET{mll_langues,langues_multilingue} , #SET{mll_langues,langues_utilisees} })] [(#SET{langues_a_afficher,[(#CONFIG{#GET{mll_langues}}|explode{","}|array_diff{#CONFIG{menu_lang_liens/langues_invisibles, #ARRAY}})]})] #SET{redirections, #ARRAY} [(#REM) Stocker les traductions eventuelles de l'article en cours si on trouve un article avec l'environnement donné ] #SET_MERGE{redirections,#GET{redirections},#ARRAY{#LANG,#ID_ARTICLE|generer_url_entite{article, lang=#LANG}}} [(#REM) Seulement si pas d'id_article on regarde si id_rubrique valide pour chercher une trad Stocker les traductions eventuelles de la rubrique en cours si le plugin Tradrub est installe (permet l'utilisation du critere traduction sur les rubriques) ] #SET_MERGE{redirections,#GET{redirections},#ARRAY{#LANG,#ID_RUBRIQUE|generer_url_entite{rubrique, lang=#LANG}}} [(#REM) Pour chaque langue à afficher on finit de définir où ça doit amener ] [(#REM) Si configuré pour revenir à l'accueil quand aucun trad explicite Chercher l'accueil où rediriger si la config le demande sinon on cherche une rubrique de la langue via les liens de traduction entre articles ] #SET_MERGE{redirections,#ARRAY{#_liens:VALEUR,#URL_RUBRIQUE},#GET{redirections}} #SET_MERGE{redirections,#ARRAY{#_liens:VALEUR,#URL_SITE_SPIP},#GET{redirections}} [(#REM) Si configuré pour rester sur la page en cours Pour les pages rubrique uniquement, on cherche quand même par une méthode détourné, en cherchant un article traduit dans la bonne langue, et en remontant à la rubrique parente Il faut bien vérifier qu'on est pas sur une page article ] 0}{0,1} {si #ENV{id_article}|non}> #SET{url_rubrique, #ID_RUBRIQUE|generer_url_entite{rubrique, lang=#_liens:VALEUR}} #SET_MERGE{redirections,#ARRAY{#_liens:VALEUR,#GET{url_rubrique}},#GET{redirections}} [(#REM) Si on est sur une rubrique (id_rubrique sans id_article), on cherche la meilleure URL de cette rubrique suivant la langue Sinon on reste vraiment sur la même page en cours pile telle quelle ] [(#ENV{id_article}|non|et{#ENV{id_rubrique}}|?{ [(#SET_MERGE{redirections,[(#ARRAY{#_liens:VALEUR,[(#ENV{id_rubrique}|generer_url_entite{rubrique, lang=#_liens:VALEUR})]})],#GET{redirections}})], [(#SET_MERGE{redirections,[(#ARRAY{#_liens:VALEUR,[(#SELF|parametre_url{lang,''})]})],#GET{redirections}})] })] #SET{liste,#CONFIG{menu_lang_liens/formatliste,bloc}} #SET{format,#CONFIG{menu_lang_liens/format,abrege}} #SET{separateur,#CONFIG{menu_lang_liens/separateur,''}} [(#REM) Seulement s'il y a au moins deux langues à afficher (dont la courante sera peut-être masquée ensuite) ] [<(#GET{liste}|=={liste}|?{ul,[(#GET{liste}|=={bloc}|?{div,''})]}) id="menu_lang">][(#REM) On liste les langues utilisees dans le site ]#SET{nom_langue,#GET{format}|!={complet}|?{#CLE,#CLE|traduire_nom_langue}}[ (#GET{liste}|match{^liste}|oui) ]#SET{nom_langue,#GET{format}|!={complet}|?{#CLE,#CLE|traduire_nom_langue}}[ (#GET{liste}|match{^liste}|oui)
  • ][(#REM) Si la langue n'est pas celle en cours, on fait un lien qui fait 2 actions : - fixer le cookie de langue sur la langue demandee - rediriger sur l'article dans la langue demandee si opportun sinon, revenir sur la page en cours url_absolue pour éviter des problèmes en urls arbo ] [[[[(#GET{separateur})](#GET{liste}|match{^liste}|non)](#COMPTEUR_BOUCLE|>{1}|oui)][(#GET{nom_langue})](#CLE|=={#ENV{lang}}|non)][ (#REM) Si la langue est celle en cours, afficher celle-ci en gras, sans lien ][[[[[(#GET{separateur})](#GET{liste}|match{^liste}|non)](#COMPTEUR_BOUCLE|>{1}|oui)](#GET{nom_langue})](#CLE|=={#ENV{lang}}|oui|et{#CONFIG{menu_lang_liens/langue_courante_invisible}|non})][ (#GET{liste}|match{^liste}|oui)
  • ] [] #FILTRE{trim}