#SET / #GET et chaine de langue

Bonsoir,

J'aimerais utiliser les chaines de langues dans un squelettes avec #SET et #GET.

Globalement:
#SET{titre_liste,<:derniers_articles:>}

Puis [(#GET{titre_liste})]

J'ai essayé divers méthodes , dont:
#SET{titre_liste,derniers_articles}
Puis [(#GET{titre_liste}|_T)]
(trouvée la : http://www.mail-archive.com/spip@rezo.net/msg20549.html )
Dans ce cas , ma chaine devient derniers articles et non Derniers articles. Elle ne semble pas passer par les chaines de traduction.

Quelle autre solution pourrais je utiliser ? Ais je fait une grosse bétise ?

Merci
Denis

Bonjour :slight_smile:

Voici une solution possible qui nécessite quelques
manipulations, notamment l'installation d'une
nouvelle balise.

Il s'agit d'utiliser le système de mémorisation
proposé par la balise "#TMP", voir sur Spip-Contrib :
http://www.spip-contrib.net/Nouvelle-balise-exemple-avec-TMP

Il faut télécharger l'archive ".zip", la décompresser
puis, par un simple copier/coller, insérer tout son
code dans le fichier "mes_fonctions.php" de ton
squelette (si le fichier n'existe pas, il suffit alors
de le créer).

Attention à ne pas oublier, ou doubler, les balises
d'ouverture et fermeture "Php".

Une fois la balise installée, il suffit de l'utiliser
comme suit dans tes squelettes (Spip 2.x) :

Pour mémoriser une valeur :

[(#VAL{<:le_texte_localise:>}|tmp{nom_variable})]

Pour l'afficher à l'endroit de ton choix :

[(#TMP{nom_variable})]

Attention !
Bien lire le mode d'utilisation de la balise "#TMP",
ainsi que ses limitations, notamment avec les squelettes
inclus (utiliser toujours la syntaxe "#INCLURE" plutôt que
la syntaxe "<INCLURE>" pour que ça marche bien).

Volô :slight_smile:

Le 30/12/2009 18:31, FredoMkb a écrit :

Bonjour :slight_smile:

Voici une solution possible qui nécessite quelques
manipulations, notamment l'installation d'une
nouvelle balise.

Il s'agit d'utiliser le système de mémorisation
proposé par la balise "#TMP", voir sur Spip-Contrib :
Nouvelle balise : exemple avec #TMP - SPIP-Contrib

Il faut télécharger l'archive ".zip", la décompresser
puis, par un simple copier/coller, insérer tout son
code dans le fichier "mes_fonctions.php" de ton
squelette (si le fichier n'existe pas, il suffit alors
de le créer).

Attention à ne pas oublier, ou doubler, les balises
d'ouverture et fermeture "Php".

Une fois la balise installée, il suffit de l'utiliser
comme suit dans tes squelettes (Spip 2.x) :

Pour mémoriser une valeur :

[(#VAL{<:le_texte_localise:>}|tmp{nom_variable})]

Pour l'afficher à l'endroit de ton choix :

[(#TMP{nom_variable})]

Attention !
Bien lire le mode d'utilisation de la balise "#TMP",
ainsi que ses limitations, notamment avec les squelettes
inclus (utiliser toujours la syntaxe "#INCLURE" plutôt que
la syntaxe "<INCLURE>" pour que ça marche bien).

Volô :slight_smile:
   

Merci beaucoup, je pensais tenter de ne pas utiliser de nouvelle balise, mais comme c'est pour un plugin, je vais m'y mettre ... La balise #TMP me semble bien appropriée (surtout que c'est pour des #INCLURE ;))

Denis

Denis Chenu <shnoulle <at> spip.org> writes:

>
Merci beaucoup, je pensais tenter de ne pas utiliser de nouvelle balise,
mais comme c'est pour un plugin, je vais m'y mettre ... La balise #TMP
me semble bien appropriée (surtout que c'est pour des #INCLURE ;))

Voici une autre solution possible, sans installer de nouvelle balise :

Il suffit d'utiliser la balise "#ENV" qui propose la possibilité
d'indiquer une valeur par défaut lorsque la variable d'environnement
n'existe pas, du coup, on peut placer une chaîne localisée.

Pour mémoriser une chaîne :

[(#SET{ma_chaine,#ENV{xxxx,<:ma_chaine_localisee:>}})]

Ici "xxxx" est une variable d'environnement bidon, comme
elle n'existe pas, Spip la remplacera par la chaîne localisée.

Pour afficher la variable mémorisée :

[(#GET{ma_chaine})]

Je viens de tester sur Spip 2.x et ça a l'air de bien marcher...

@+ :slight_smile:

FredoMkb <fredomkbfr <at> yahoo.fr> writes:

Il suffit d'utiliser la balise "#ENV" qui propose la possibilité
d'indiquer une valeur par défaut lorsque la variable d'environnement
n'existe pas, du coup, on peut placer une chaîne localisée.

Tiens, il y a peut-être même un peu plus simple, avec la balise
"#VAL" de Spip 2.x :

[(#SET{ma_chaine,#VAL{<:ma_chaine_localisee:>}})]

[(#GET{ma_chaine})]

À tester... :slight_smile:

Non, mais vraiment, pour un truc si simple...
Pourquoi est-on obligé à chercher un truc si compliqué !!??
Pat

FredoMkb a écrit :

Pour mémoriser une chaîne :
[(#SET{ma_chaine,#ENV{xxxx,<:ma_chaine_localisee:>}})]

Ici "xxxx" est une variable d'environnement bidon, comme elle n'existe pas, Spip la remplacera par la chaîne localisée.

Pour afficher la variable mémorisée :
[(#GET{ma_chaine})]

Le 30/12/2009 18:47, FredoMkb a écrit :

Tiens, il y a peut-être même un peu plus simple, avec la balise
"#VAL" de Spip 2.x :

[(#SET{ma_chaine,#VAL{<:ma_chaine_localisee:>}})]

[(#GET{ma_chaine})]

À tester... :slight_smile:

Ca marche, génial !!

Merci merci !!!!

Pat <patrice.vanneufville <at> laposte.net> writes:

Non, mais vraiment, pour un truc si simple...
Pourquoi est-on obligé à chercher un truc si compliqué !!??
Pat

Très bonne question !

Je ne suis pas assez calé pour donner une réponse juste,
mais il me semble que Spip effectue ses traitements
et calculs dans un certain ordre de priorités, du coup,
apparemment, certaines balises semblent s'exécuter avant
le remplacement des chaînes de caractères localisées...

Ceci-dit, il y a peut-être d'autres raisons plus pertinentes,
comme les questions liées à la sécurité...

Bref, j'en sais pas plus, en attendant, le plus important
est de trouver une solution, non ?

@+ :slight_smile:

Le 30/12/09 19:04, Denis Chenu a écrit :

Ca marche, génial !!

je ne comprends pas...
   [(#SET{ma_chaine, #VAL{<:ma_chaine_localisee:>}})]
c'est pareil que
   [(#SET{ma_chaine, <:ma_chaine_localisee:>})]

et dans les 2 cas
   #GET{ma_chaine}
retourne la traduction de 'ma_chaine_localisee'
en fonction de la langue de l'environnement

le test (spip 2.0.10 [14819]) :
   [(#SET{ma_chaine1, <:date_saison_3:>})]
   [(#SET{ma_chaine2, #VAL{<:date_saison_3:>}})]
   #GET{ma_chaine1} - #GET{ma_chaine2}

j'ai bien :
   'été - été' en '&lang=fr' ;
   'Sommer - Sommer' en '&lang=de'

denisb <denisb <at> laposte.net> writes:

Le 30/12/09 19:04, Denis Chenu a écrit :
> Ca marche, génial !!

je ne comprends pas...
   [(#SET{ma_chaine, #VAL{<:ma_chaine_localisee:>}})]
c'est pareil que
   [(#SET{ma_chaine, <:ma_chaine_localisee:>})]

et dans les 2 cas
   #GET{ma_chaine}
retourne la traduction de 'ma_chaine_localisee'
en fonction de la langue de l'environnement

En effet, c'est étrange :-/

À mon premier essais, j'ai eu une erreur en retours,
maintenant, ça a l'air de bien fonctionner... bizarre...

Je pense que Denis Chenu devait aussi rencontrer
des soucis lors des ses tests pour qu'il pose la question.

Je pense que ça mérite d'autres tests pour bien définir
la nature du problème... si problème il y a :slight_smile:

@+ :slight_smile:

Le 30/12/2009 19:40, FredoMkb a écrit :

denisb<denisb<at> laposte.net> writes:

Le 30/12/09 19:04, Denis Chenu a écrit :
     

Ca marche, génial !!
       

je ne comprends pas...
    [(#SET{ma_chaine, #VAL{<:ma_chaine_localisee:>}})]
c'est pareil que
    [(#SET{ma_chaine,<:ma_chaine_localisee:>})]

et dans les 2 cas
    #GET{ma_chaine}
retourne la traduction de 'ma_chaine_localisee'
en fonction de la langue de l'environnement
     

En effet, c'est étrange :-/

À mon premier essais, j'ai eu une erreur en retours,
maintenant, ça a l'air de bien fonctionner... bizarre...

Je pense que Denis Chenu devait aussi rencontrer
des soucis lors des ses tests pour qu'il pose la question.

Je pense que ça mérite d'autres tests pour bien définir
la nature du problème... si problème il y a :slight_smile:

@+ :slight_smile:
   

Salut,

Au final, ce sont les [( et )] les fautifs.
Sans, les 2 systèmes ne fonctionnent pas comme prévus. Avec les 2 fonctionnent.

Au début, j'utilisai #SET{ma_chaine, <:ma_chaine_localisee:>} . En ajoutant les [()], ca fonctionne.

Ca force le passage de Spip avant de traduire la chaine ?

Denis

PS: C'est Denis , ou Shnoulle