[Résolu] Squelette - problème fichiers de langues

Bonjour !

J’ai un problème avec mon spip 4.4.13. J’essaie d’internationaliser un squelette qui s’applique aux articles d’un ensemble de rubriques spécifiques. Ces articles peuvent être en langue française ou anglaise. Dans le squelette j’ai deux chaines de caractères qui nécessitent de changer en fonction de la langue.

J’ai mis dans mes fichiers squelettes/lang/local_fr.php et local_en.php une nouvelle valeur « whatdoyoudo » avec en français « Que faites-vous ? » et en anglais « What will you do? »

Dans mon squelette j’appelle cette chaîne de langue via <p><:whatdoyoudo:></p> situé dans la boucle principale(ARTICLES).

Quand je visite la version française de la page qui utilise ce squelette je vois bien « Que faites-vous ? » qui s’affiche.

Mais quand je visite la version anglaise, je vois aussi « Que faites-vous ? » Comme si la traduction anglaise n’était pas prise en compte…

Même comportement si j’utilise un <multi> dans mon squelette à la place.

Le seul moyen de faire passer le texte en version anglaise est de rajouter un ?lang=en à la fin de mon URL anglaise.

L’article traduit en anglais est bien a) dans un secteur racine avec la bonne langue associée,
b) avec lui-même la bonne langue associée.

Bizarre bizarre. Des idées ?

Je note aussi que quand j’appelle ma page anglaise directement depuis le mode privé de mon navigateur, Spip me fait une redirection 302 vers la même page suivie de ?lang=fr … je cherche d’où vient cette redirection dans les logs. J’ai les plug-ins « Traduction entre rubriques », « Menu de langues avec liens » et « Langue préférée »…

Est-ce que ta boucle ARTICLES englobe bien la partie que tu veux voir traduite ?

oui !

OK je pense que c’est lié à cette histoire de ?lang=fr ajouté automatiquement par quelque chose… je cherche…

J’ai ça dans mon tmp/log/spip.log (blog/Main-page étant la page anglaise):

2026-03-26 16:58:26 127.0.0.1 (pid 12764) :Pub:debug: GET Main-page - /home/mathieu/public_html/blog/config/connect.php
2026-03-26 16:58:26 127.0.0.1 (pid 12764) :Pub:info: redirige 302: http://localhost/~mathieu/blog/Main-page?lang=fr
2026-03-26 16:58:26 127.0.0.1 (pid 12764) :Pub:debug: GET Main-page?lang=fr - /home/mathieu/public_html/blog/config/connect.php
2026-03-26 16:58:26 ::1 (pid 13435) :Pub:debug: GET spip.php?action=cron - /home/mathieu/public_html/blog/config/connect.php

Je vais voir s’il y a moyen d’activer des logs plus détaillés.

Bonsoir,

Un lien vers le site peut être pour voir ?

Alors je fais des essais sur mon localhost… il n’est pas accessible en ligne ! Mais je vais bien arriver à comprendre ce qui se passe :slightly_smiling_face: il faut que je trouve quel script php avait le pid 12764…

(J’ai essayé de désactiver langue préférée, pas de changement)

pas de #ENV{lang} ?

peut etre : Réaliser un site multilingue - SPIP

Alors c’est amusant mais je ne trouve plus, dans l’interface d’administration, où régler le niveau de langue. C’est ni dans « langue principale du site » ni dans « multilinguisme ». Normalement on doit pouvoir faire ça d’après l’article ci-dessus :

Configurer l’espace privé

Pour gérer plus facilement le site, on peut choisir dans la configuration du site avec quelle précision s’effectuera le réglage des langues, ce qui permet de masquer l’interface là où elle n’est pas nécessaire et de limiter les risques d’erreurs [1]. SPIP propose trois niveaux d’interface différents pour choisir les langues affectées aux articles (et brèves, etc.) ; par ordre croissant de complexité :

  • Par secteur (rubrique de premier niveau) : à chaque secteur du site correspond une langue modifiable par les administrateurs, qui concerne toutes ses sous-rubriques ainsi que les articles et les brèves qui y sont publiés ; ce réglage devrait satisfaire les besoins de la plupart des sites multilingues tout en conservant une structure et une interface simples.

  • Par rubrique : de manière plus fine, avec ce réglage, on peut changer la langue pour chacune des rubriques du site, pas seulement celles de premier niveau.

  • Par article : la langue peut être modifiée au niveau de chaque article ; ce choix est compatible avec les précédents (on peut par exemple choisir la langue par rubrique mais appliquer des exceptions de-ci de-là à certains articles) et permet toutes les finesses imaginables, mais attention à ne pas produire un site à la structure incompréhensible…

Et il me semble que quand j’ai créé mon site (c’était en Spip 4.1) j’avais accès à cette configuration. Mais maintenant impossible de retrouver ça dans l’interface d’administration ?

Sur mon site actuel la gestion des langues buggue un peu, quand je crée un article en anglais dans mon secteur anglais, souvent la langue est mise par défaut en français (mais pas systématiquement) et je dois la remettre en anglais manuellement ensuite. Si ça se trouve c’est lié…

/ecrire/?exec=configurer_multilinguisme

Ou Configuration puis Multilinguisme dans l’espace privé

Alors justement je n’ai que ça dans « multilinguisme » :

Je ne peux pas choisir la granularité (par secteur, par rubrique, ou par article)

Euh… tu as justement tout coché sauf « Articles : activer le menu de langues »
Il n’y a rien d’autre à ma connaissance

Oui je ne veux pas afficher le menu de langue sur les articles puisque les liens de traduction sont déjà affichés, ça fait double emploi :slight_smile:

Quand j’affiche #ENV{lang} dans le squelette ça affiche « fr » et par contre #LANG affiche « en ».

J’ai essayé de vider mon cache, effacer mes cookies (me disant que ça venait peut-être d’une donnée stockée dans un cookie…) ça persiste tel quel.

[edit] c’est bon j’ai trouvé. C’est que j’avais fait une boucle un peu naive pour rediriger vers les traductions, comme ceci :

<B_traducts>
<div class="trad"><ul>
<BOUCLE_traducts(ARTICLES){traduction}{exclus}>
<li><a href="[(#URL_ARTICLE)]">#LANG</a></li> 
</BOUCLE_traducts>
</ul>
</div>
</B_traducts>

Si j’utilise la boucle de traductions fournie en standard avec Spip (via <INCLURE{fond=inclure/nav,env} />, ça marche correctement :slight_smile: