Bonjour !
Hier Fil a évoqué la nécessité d'une réflexion sur l'implémentation
multilingue de Spip.
Comme cela m'intéresse beaucoup, voici ci-dessous trois
réflections/propositions touchant {lang} et forcer_lang. Je ne comprends pas
Spip de l'intérieur, et alors ces idées sont peut-être complètement à côté
ou impossibles. Mais si ça stimule la réflexion d'autres qui connaissent les
entrailles, alors le but serait atteint
1. Proposition de modification de comportement du critère {lang}
Est ce que le critère {lang} pourrait fonctionner de cette façon :
Si lang=xx se trouve dans l'URL, alors {lang} prend *toujours* cette valeur
en priorité (sans référence à forcer_lang); en effet avec 1.8, si on ne
souhaite pas ce comportement, on peut maintenant prendre la valeur de
n'importe quelle boucle sur la page avec la syntaxe {lang =
#_maboucle:LANG}.
Si le comportement était tel, cela pourrait éliminer pour certains la
nécessité d'utiliser $forcer_lang.
2. Idée pour remplacer forcer_lang
Abandonner un forcer_lang booléen, et avoir à la place une variable
(lang_pref ?) qui est soit 0 (par défaut), soit une abréviation d'une langue
(fr, de, en, . etc.) avec une balise #LANG_PREF. La valeur de lang_pref
pourrait être modifiée par #MENU_LANG et gardée (cookie?). je ne sais
comment! Il serait possible d'écrire des boucles avec {lang = #LANG_PREF}
3. Les deux fonctionnalités de {lang}
{lang} fonctionne à la fois comme une critère de sélection, mais aussi pour
indiquer une préférence de langue. Pourrait-on donner accès à ces deux
fonctions par des critères séparés? A titre d'exemple :
..article.php3?id_article=2&lang=fr
Actuellement,
<BOUCLE(ARTICLES){id_article}{lang}>
ne donnera rien, à moins que article numéro 2 est en français. Si on veut
prendre de toute façon article numéro 2, mais indiquer que à l'intérieur de
la boucle on veut avoir tout ce qui est possible ( <:xxx:> et <multi> ) en
français, comment faire? Actuellement c'est possible, je pense, mais
acrobatique, avec {!lang_select} etc.
Si les deux fonctions étaient séparés, on pourrait avoir, par exemple :
<BOUCLE(ARTICLES){id_article}{lang}>
=> comme à présent : afficher article numéro 2 seulement si elle est en
français
ou utilisant, par exemple "{lang&}" :
<BOUCLE(ARTICLES){id_article}{lang&}>
=> afficher article numéro 2 (même s'il n'est pas en français), et prendre
[fr] comme langue d'affichage pour les <multi> et <:xxx:> rencontrés dans la
boucle ou dans les champs de l'article lui-même.
J'espère stimuler, non pas accabler !
C'est déjà vraiment pas si mal...
merci, Paolo