[(#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}}}
/B_article>
[(#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}}
/B_chercher_secteur_langue>
[(#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}})]
})]
/B_TrouveArticleTraduitDansRubrique>
/B_test_accueil>
#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)
]
[(#GET{liste}|=={liste}|?{ul,[(#GET{liste}|=={bloc}|?{div,''})]})>]
#FILTRE{trim}