[spip-dev] #LANG_DIR / #LANG_LEFT

Bonsoir !
Mes essais ce soir (en arabe) me font penser que
    #_nom-de-boucle:LANG_DIR
ne marche pas,
ni #LANG_LEFT dans cette boucle
    <BOUCLE_rubs2(RUBRIQUES){meme_parent}{par
titre}{0,5}{titre_mot=mainsection}{tout}>
qui se trouve dans un squelette inclus.

La semaine prochaine j'essayerai de cerner le bug un peu plus...

Paolo

Bonsoir de nouveau !
J'écrivais :

Mes essais ce soir (en arabe) me font penser que
   #_nom-de-boucle:LANG_DIR
ne marche pas,

Ce n'est pas ça, mais plutôt que #LANG_DIR ne suis pas #LANG pas à pas dans
les boucles.
Regardant la 3-ème ligne de la source de :
http://www.taize.asso.fr/en_article78.html?lang=ar&recalcul=oui

on voit que #LANG = en , mais #LANG_DIR = rtl (devrait être ltr quand #LANG
= en)
Le squelette est : t_regform.html
($forcer_lang = oui sur cette page)

Je veux caler le menu en arabe à droite, mais je n'arrive pas - à cause de
ce bug, je pense.

Paolo

Je n'ai pas eu le temps d'essayer cette fonction mais sans dire trop de betises, je crois que ton menu arabe est justifie a gauche a cause des <ul>, non?

George

Paolo wrote:

George Kandalaft wrote:

Je n'ai pas eu le temps d'essayer cette fonction mais sans dire trop de
betises, je crois que ton menu arabe est justifie a gauche a cause des
<ul>, non?

Oui, le css contient un "float: left" pour le <li>

Le problème c'est que #LANG_LEFT - avec lequel j'aurais pu remplacer le css
avec un
<li style="float: #LANG_LEFT ...> dans l'HTML ne marche pas - car il indique
toujours "LEFT" même quand #LANG = ar -- c'est pas normal !

Je vais devoir résoudre ce problème provisoirement en ajoutant du PHP dans
le squelette.

Si quelqu'un peut m'indiquer où #LANG_LEFT/RIGHT et #LANG_DIR sont définis,
je veux bien regarder le code, tout en craignant que cela va dépasser mes
capacités....

merci, Paolo

Elles sont définies dans inc-balises comme retournant 'left' ou 'right'
selon la valeur de la globale spip_lang. Es-tu sur que celle-ci a la bonne
valeur à ce point de ton squelette ?

      Emmanuel

Déesse A. écrit :

Elles sont définies dans inc-balises comme retournant 'left' ou 'right'
selon la valeur de la globale spip_lang.

Emmanuel,

Merci de m'avoir répondu, malgré ton probable manque d'intérêt direct dans
les langues qui s'écrivent de droite à gauche :wink:

Est-ce que spip_lang est la valeur fixé par "?lang=xx" dans l'URL, ou est-ce
que c'est la valeur de #LANG dans la boucle en cours ? (Ou est-ce fixé par
l'URL seulement dans la cas ou forcer_lang=1 -- c'est possible que mes
ennuis viennent encore de là.)

Je pense et crains que c'est le premier cas. Et de là viennent mes
problèmes. Dans un document comme
http://www.taize.asso.fr/en_article163.html?lang=ar qui contient de l'arabe,
mais aussi du français et de l'anglais, j'ai besoin d'avoir certains parties
du texte avec #LANG_DIR = "ltr" et d'autres "rtl".

Si #LANG_DIR, #LANG_LEFT, #LANG_RIGHT sont fixés pour toute la page, cela ne
sert pas à grand-chose dans une situation comme celle-ci. Là j'ai utilisé un
peu de PHP pour m'en sortir ( http://www.taize.asso.fr/t_art2cols.html )

Ne serait-il pas possible que les valeurs de ces trois balises suivent
étroitement les variations de #LANG dans chaque boucle?

Qu'en pensent les autres qui utilisent ces balises ? JMB? George?

Paolo

Qu'en pensent les autres qui utilisent ces balises ? JMB? George?

Bonjour,

Pour l'instant, je n'ai pas ce problème car nous ne gérons que peu de
langues (le chinois va se rajouter d'ici peu). Mais nous risquerions d'avoir
un problème si, par exemple, nous ajoutons l'arabe. Et, comme nous faisons
en sorte que l'internaute navigue dans le site avec la langue de son choix
mais peu visiter des articles d'une autre langue, on risque bien de se
trouver confronter à cela.

Par exemple : je navigue en français et, dans un article sur tel ou tel
sujet, je retrouve tous les articles liés à ses mot-clés, dans la langue de
l'internaute puis dans les autres langues. Dans ce dernier cas, jai une
liste de titre d'articles mais, pour l'instant, ils sont écrits de la gauche
vers la droite. Et si j'ai de l'arabe au milieu, comment ferais-je ???

C'est donc une très bonne question que se pose là Paolo.

Et moi, je vais autoriser le chinois pour l'instant et éviter de trouver des
contributeurs en arabe ;-))

JMB

Déesse A. écrit :

Elles sont définies dans inc-balises comme retournant 'left' ou 'right'
selon la valeur de la globale spip_lang.

Emmanuel,

Merci de m'avoir répondu, malgré ton probable manque d'intérêt direct dans
les langues qui s'écrivent de droite à gauche :wink:

intérêt si si, mais compétence dans cette partie de Spip moins.

Est-ce que spip_lang est la valeur fixé par "?lang=xx" dans l'URL, ou est-ce
que c'est la valeur de #LANG dans la boucle en cours ? (Ou est-ce fixé par
l'URL seulement dans la cas ou forcer_lang=1 -- c'est possible que mes
ennuis viennent encore de là.)

de ce que je comprends du code ici c'est que spip_lang prend la valeur du critere lang de la boucle en cours que si forcer_lang est vrai. Je ne sais pas si c'est ça qu'il te faut.

      Emmanuel

Déesse A. wrote:

de ce que je comprends du code ici c'est que spip_lang prend la valeur du
critere lang de la boucle en cours que si forcer_lang est vrai. Je ne
sais pas si c'est ça qu'il te faut.

Emmanuel,

Si spip_lang est ce que j'imagine qu'elle est, ça doit être le contraire qui
est vrai: elle prend la valeur de la boucle seulement si forcer_lang est
faux, sinon elle est préétabli (forcée) -- par exemple par lang=xx passé
dans l'URL.

Ainsi avec http://www.taize.asso.fr/en_article163.html?lang=ar le titre, qui
est écrit avec <multi>[en]...[ar]...etc.</multi>, s'affiche en arabe bien
que à l'intérieur d'une boucle article dont #LANG = en.
A l'intérieur de cette même boucle j'aurais besoin de #LANG_DIR = "ltr" car
la langue de l'article est quand même anglais, mais #LANG_DIR demeure
obstinément sur "rtl" sur tout la page.

Sans avoir encore regardé le code du tout, mais imaginant les pas qui sont à
faire, je pense qu'il s'agit de :

1) Regarder comment #LANG_DIR, #LANG_LEFT/RIGHT sont définis dans
inc-balises.

2) Trouver où #LANG est définis pour chaque boucle (aussi dans inc_balises
?).

3) Lier la définition de #LANG_DIR, #LANG_LEFT/RIGHT à celle de #LANG et
enlever sa correspondance à spip_lang.

Paolo

Si spip_lang est ce que j'imagine qu'elle est, ça doit être le contraire qui
est vrai: elle prend la valeur de la boucle seulement si forcer_lang est
faux, sinon elle est préétabli (forcée) -- par exemple par lang=xx passé
dans l'URL.

oui, pardon j'avais zappé le "!" c'est bien comme tu le souhaites.

Ainsi avec http://www.taize.asso.fr/en_article163.html?lang=ar le titre, qui
est écrit avec <multi>[en]...[ar]...etc.</multi>, s'affiche en arabe bien
que à l'intérieur d'une boucle article dont #LANG = en.
A l'intérieur de cette même boucle j'aurais besoin de #LANG_DIR = "ltr" car
la langue de l'article est quand même anglais, mais #LANG_DIR demeure
obstinément sur "rtl" sur tout la page.

Sans avoir encore regardé le code du tout, mais imaginant les pas qui sont à
faire, je pense qu'il s'agit de :

1) Regarder comment #LANG_DIR, #LANG_LEFT/RIGHT sont définis dans
inc-balises.

2) Trouver où #LANG est définis pour chaque boucle (aussi dans inc_balises
?).

3) Lier la définition de #LANG_DIR, #LANG_LEFT/RIGHT à celle de #LANG et
enlever sa correspondance à spip_lang.

Je ne comprends pas tout dans ce code, mais il me semble qu'il y avait effectivement une incohérence entre #LANG et les 3 autres. J'ai modifié, dis-moi si c'est bien ça ou si j'ai empiré
la situation.

      Emmanuel

Déesse A. wrote :

il me semble qu'il y avait effectivement une incohérence entre #LANG et
les 3 autres. J'ai modifié, dis-moi si c'est bien ça ou si j'ai empiré
la situation.

Bonjour Emmanuel !
Alors, je dirais que tu as sensiblement amélioré la situation :slight_smile:

Maintenant les tests que j'ai mis dans des boucles successives :
<!-- LANG = #LANG : LANG_DIR = #LANG_DIR : LANG_LEFT = #LANG_LEFT :
LANG_RIGHT = #LANG_RIGHT ?> -->

donnent :
<!-- LANG = en : LANG_DIR = ltr : LANG_LEFT = left : LANG_RIGHT = right -->

<!-- LANG = ar : LANG_DIR = rtl : LANG_LEFT = right : LANG_RIGHT = left -->

-- comme il le faut ! Un grand merci.

Je vais enlever de nouveau tout le PHP de mes squelettes...

Si tu veux être parfait, une dernière (je pense !) chose serait #PUCE. Cette
balise insère soit
puce.gif, soit puce_rtl.gif -- et c'est la même histoire: actuellement il
semble que c'est la globale spip_lang qui contrôle laquelle des deux images
est utilisée tandis qu'il serait préferable de lier ce choix à la valeur de
#LANG dans la boucle en cours. Comme ça la puce sera dans le bon sens sur
des pages comme :
http://www.taize.asso.fr/en_article382.html?lang=ar - mais c'est un détail!

Paolo

Déesse A. wrote :

il me semble qu'il y avait effectivement une incohérence entre #LANG et
les 3 autres. J'ai modifié, dis-moi si c'est bien ça ou si j'ai empiré
la situation.

Alors, je dirais que tu as sensiblement amélioré la situation :slight_smile:

extraordinaire

Si tu veux être parfait, une dernière (je pense !) chose serait #PUCE. Cette
balise insère soit
puce.gif, soit puce_rtl.gif -- et c'est la même histoire: actuellement il
semble que c'est la globale spip_lang qui contrôle laquelle des deux images
est utilisée tandis qu'il serait préferable de lier ce choix à la valeur de
#LANG dans la boucle en cours.

De nouveau je raisonne uniquement par analogie. J'espère que le CVS n'empirera pas...

      Emmanuel

Paolo wrote:

une dernière (je pense !) chose serait #PUCE.

...

lier ce choix à la valeur de #LANG dans la boucle en cours.

Déesse A. wrote:

De nouveau je raisonne uniquement par analogie. J'espère que le CVS
n'empirera pas...

Bonsoir !

Là c'est moins réussi. Le changement dans inc_balises.php3 n'a aucun
effet -- du moins sur les pages que je teste. J'ai changé $p->code
(ligne117ss) à toutes sortes de choses sans que cela change le comportement
de #PUCE.

Peut-être mieux remettre la CVS comme avant ?

Une piste plus prometteuse me semble dans inc_texte.php3 - le bloc de code à
partir de ligne 715.
Apparemment dans une boucle #LANG_DIR peut être "ltr", mais la condition
$lang_dir == 'rtl' AND $GLOBALS['puce_rtl'] à cet endroit de inc_texte.php3
est toutefois remplie, car c'est puce_rtl.gif qui en ressort.

C'est difficile de savoir par où entrer dans la logique de toutes ces
fonctions !

En tout cas, comme je disais, c'est un détail : à laisser pour une journée
quand rien ne presse.

Paolo

Justement: le code d'orgine de #PUCE était d'appeler cette partie de inc_texte,
sachant que l'argument transmis était "-".
J'ai pris comme nouveau code de #PUCE la partie de inc_texte qui me semble
concerner le traitement de la chaine "-", en remplaçant $spip_lang comme je l'ai fait pour #LANG_DIR.

Tes squelettes appellent-ils #PUCE explicitement ou utilises-tu le raccourci "-" ?
Pour #PUCE ça devrait marcher, pour le raccourci c'est clair que je n'ai rien changé
et je ne préfère pas: une modif dans ce code est à la limite du prévisible
(cf mes déboires de cet été avec les effets de bords sur la gestion des doublons de documents, j'ai pas envie de retomber là-dedans).

Donc, précise moi si #PUCE explicite marche.

      Emmanuel

Déesse A. wrote:

Tes squelettes appellent-ils #PUCE explicitement ou utilises-tu le
raccourci "-" ?

Ce sont des "- " dans le texte. C'est peut-être la différence majeure entre
#LANG_DIR etc. et #PUCE :
les premières ne s'utilisent qu'en squelette, tandis que #PUCE serait assez
rarement utilisé en squelette, mais plus souvent appelée par le raccourci
typographique "- ".

Donc, précise moi si #PUCE explicite marche.

D'après un essai en local - non. La puce affichée garde la direction de
spip_lang, et non de la #LANG de la boucle où elle se trouve. Mais même
s'elle marchait, elle n'aurait que peu d'intérêt.
Je comprends très bien ton hésitation à entrer dans les raccourcis. Laissons
tomber.

merci pour toute cette aide !
Paolo

Paolo wrote:

merci pour toute cette aide !

En attendant, tu peux peut-être remplacer les puces asymétrique de SPIP par
des symétriques (ronde, carré, losange), donc interchangeable gauche droite.
Non ?

Jacques PYRAT wrote:

En attendant, tu peux peut-être remplacer les puces asymétrique de SPIP
par
des symétriques

Merci, Jacques, pour ta sollicitude ! Je peux t'assurer que ce n'est pas
quelques puces qui vont m'empêcher de dormir :wink:

(Par contre, il y a étrangement bcp de moustiques cette année en notre coin
de la Bourgogne.)

Paolo