[(#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,#URL_ARTICLE}}
[(#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,#ENV{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
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
]
0}{0,1}>
#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}