Traduction des multis dans des boucles #3496

Closed
opened 8 years ago by marcimat · 7 comments
marcimat commented 8 years ago
Owner

En 3.0 et 3.1, fa_b a noté un comportement assez inattendu il semble, qu'on peut reproduire de la sorte.
Les multis ne semblent pas correctement traduits en fonction de l'environnement.

Pour reproduire, avec le squelette proposé dessous :

  • Prendre au moins 2 rubriques racines
  • Mettre un titre normal à une rubrique, exemple "Non traduit"
  • Mettre dans le champ texte de la rubrique, un multi, exemple : <multi>[fr]Français[en]English</multi>
  • Faire pareil avec une 2è rubrique, mais en mettant un titre de rubrique avec multi tel que : <multi>[fr]Français[en]English</multi>
  • Appeler le squelette avec ou sans ?lang=en, lang=fr…
  • Le texte est parfois traduit correctement, parfois pas, dépendant du fait que le titre soit multi ou pas !

Test multi sur titre rubrique et texte

[
(#ENV**|unserialize|print_r{1})
]

<BOUCLE_rub(RUBRIQUES){racine}{par num titre, titre}>

Rubrique : #TITRE


lang : "#CHAMP_SQL{lang}", langue_choisie: "#CHAMP_SQL{langue_choisie}"


#TEXTE
</BOUCLE_rub>

Est-ce que ce comportement est normal ?

En 3.0 et 3.1, fa_b a noté un comportement assez inattendu il semble, qu'on peut reproduire de la sorte. Les multis ne semblent pas correctement traduits en fonction de l'environnement. Pour reproduire, avec le squelette proposé dessous : - Prendre au moins 2 rubriques racines - Mettre un titre normal à une rubrique, exemple "Non traduit" - Mettre dans le champ texte de la rubrique, un multi, exemple : `<multi>[fr]Français[en]English</multi>` - Faire pareil avec une 2è rubrique, mais en mettant un titre de rubrique avec multi tel que : `<multi>[fr]Français[en]English</multi>` - Appeler le squelette avec ou sans ?lang=en, lang=fr… - Le texte est parfois traduit correctement, parfois pas, dépendant du fait que le titre soit multi ou pas ! <pre> <h1>Test multi sur titre rubrique et texte</h1> [<pre>(#ENV**|unserialize|print_r{1})</pre>] <BOUCLE_rub(RUBRIQUES){racine}{par num titre, titre}> <h2>Rubrique : #TITRE</h2> <h3>lang : "#CHAMP_SQL{lang}", langue_choisie: "#CHAMP_SQL{langue_choisie}"</h3> #TEXTE </BOUCLE_rub> </pre> Est-ce que ce comportement est normal ?
Poster
Owner

Précisions :

  • En ajoutant le critère {lang_select}, les multis (titre et texte) fonctionnent (prennent systématiquement la langue de la rubrique)
  • En ajoutant le critère {!lang_select}, les multis (titre et texte) fonctionnent (prennent systématiquement la langue de l'environnement)

Le cas indéterminé est sans ce critère donc.

Précisions : - En ajoutant le critère {lang_select}, les multis (titre et texte) fonctionnent (prennent systématiquement la langue de la rubrique) - En ajoutant le critère {!lang_select}, les multis (titre et texte) fonctionnent (prennent systématiquement la langue de l'environnement) Le cas indéterminé est sans ce critère donc.
Poster
Owner

Autre précision : la présence de #TITRE ou pas dans la boucle n'influence pas le comportement étrange.

Autre précision : la présence de `#TITRE` ou pas dans la boucle n'influence pas le comportement étrange.
Poster
Owner

Un peu de phpdoc avec r22298 et r22299

Un peu de phpdoc avec r22298 et r22299
Poster
Owner

J'ai bien un patch pour avoir un comportement plus cohérent avec la doc des fonctions appelées.
Ça consiste à appeler l'affectation de langue et sa restauration à chaque itération de boucle, et non uniquement avant et après l'ensemble de la boucle.

Avec le patch, ce qui influence les multis dans le texte des rubriques dans notre exemple, c'est la présence ou non de multi dans le titre de la rubrique.
Et rien d'autre. En fait là avec ce patch il y a bien restauration dans la bonne langue après chaque itération, et non à chaque fois qu'une nouvelle rubrique avec titre 'non multi' arrive.
Dit autrement actuellement dans SPIP, dès qu'une rubrique a un titre multi, elle prend la langue de la rubrique précédente dans la boucle (et non la langue du squelette ou de la boucle parente).

Le patch améliore donc le comportement, mais ce comportement général peut paraître tout de même quelque peu étrange.

J'ai bien un patch pour avoir un comportement plus cohérent avec la doc des fonctions appelées. Ça consiste à appeler l'affectation de langue et sa restauration à chaque itération de boucle, et non uniquement avant et après l'ensemble de la boucle. Avec le patch, ce qui influence les multis dans le texte des rubriques dans notre exemple, c'est la présence ou non de multi dans le titre de la rubrique. Et rien d'autre. En fait là avec ce patch il y a bien restauration dans la bonne langue après chaque itération, et non à chaque fois qu'une nouvelle rubrique avec titre 'non multi' arrive. Dit autrement actuellement dans SPIP, dès qu'une rubrique a un titre multi, elle prend la langue de la rubrique précédente dans la boucle (et non la langue du squelette ou de la boucle parente). Le patch améliore donc le comportement, mais ce comportement général peut paraître tout de même quelque peu étrange.
Poster
Owner
There is no content yet.

Le patch ne semble pas fonctionner sur un cas : titre normal sans multi avec texte multi, le texte reste dans la langue du contexte de la rubrique.
Par exemple si la rubrique est marquée fr, la balise multi est ignorée, ou du moins ne prend en compte que fr.

Le patch ne semble pas fonctionner sur un cas : titre normal sans multi avec texte multi, le texte reste dans la langue du contexte de la rubrique. Par exemple si la rubrique est marquée fr, la balise multi est ignorée, ou du moins ne prend en compte que fr.
Owner

Je pense que c'est un doublon de #3430 corrigé par r22346
Version cible mise à 3.1
Statut changé à Fermé

Je pense que c'est un doublon de #3430 corrigé par r22346 **Version cible mise à 3.1** **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.