Bon, j’ai finalement réussi à résoudre mon problème en le contournant de la façon suivante pour créer un menu « propre » avec des liens du style <a href="url de la version de langue du site/lang/url de la version de langue de la page>Nom de la langue
J’ai donc opté pour les urls arbo, avec, pour rester sur des urls les plus courtes que possible :
define('_url_arbo_multilang', true);
$GLOBALS['url_arbo_parents'] = array('rubrique' => array(),'article' => array());
$GLOBALS['url_arbo_types'] = array('rubrique' => '','article' => '');
Dans mes squelettes, j’ai créé une noisette incluse dans une boucle « secteurs » (car je travaille par secteur de langue, afin de recréer un contexte de langue.
La boucle qui appelle la noisiette :
<BOUCLE_secteurs (RUBRIQUES) {racine} {par lang} {tout}>
<BOUCLE_pages (ARTICLES) {traduction} {lang=#LANG}>
<INCLURE{fond=inclure/alternate,id_secteur=#_secteurs:ID_RUBRIQUE,lang=#_secteurs:LANG,id_article=#ID_ARTICLE} />
</BOUCLE_pages>
</BOUCLE_secteurs>
La noisette :
<BOUCLE_secteur (RUBRIQUES) {id_rubrique=#ENV{id_secteur}} {tout}>
<BOUCLE_version (SITES) {id_rubrique}>
<BOUCLE_page (ARTICLES) {id_article=#ENV{id_article}}>
<BOUCLE_reference (URLS) {type=article} {id_objet=#ENV{id_article}} {langue=''} {par date} {inverse} {0,1}>
<li><a href="[(#ENV{lang}|=={fr}|?{[(#VAL{fr/#URL}|url_absolue{#_version:URL_SITE})],[(#URL_ARTICLE|url_absolue{#_version:URL_SITE})]})]" rel="alternate" hreflang="#ENV{lang}"[ title="(#H1|extraire_multi{#ENV{lang}}|attribut_html)"]>[(#ENV{lang}|traduire_nom_langue|ucfirst)]</a></li>
</BOUCLE_reference>
</BOUCLE_produit>
</BOUCLE_version>
</BOUCLE_secteur>
Voilà, la boucle version, c’est parce que j’ai créé un site associé à chaque secteur pour les informations liées aux versions de langue du site. On peut très bien aussi créer des champs supplémentaires sur les secteurs.
Voilà, je ne sais pas si ma solution est farfelue, mais elle fonctionne. Par souci esthétique, si vous avez plus simple et plus classe, je suis preneur !