[spip-dev] Réflexion sur {lang} / forcer_lang

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 :slight_smile:

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

Hier Fil a évoqué la nécessité d'une réflexion sur l'implémentation
multilingue de Spip.

Je parlais un peu au passé : il aurait fallu réfléchir {avant} de se
lancer dans l'invention de forcer_lang :slight_smile:

Là je pense qu'on a quelque chose de satisfaisant, même si pas
parfait, et qu'il manque surtout une belle documentation bien
pédagogique ; un peu comme ce qu'Arno* a fait sur "les jeux video".

Cela dit, si quelqu'un se lance dans l'implémentation des idées de
Paolo, j'attends de pied ferme le code à intégrer !

-- Fil