Trouver les « traductions » des rubriques

Voici une méthode simple — sans mots clefs — pour lier les rubriques de même contenu dans différentes langues.
On simule alors les liens de traductions des articles retournés par le critère {traduction}

Les liens de traduction entre rubriques n’existent pas dans SPIP. Quand on pense à un site comme spip-contrib, les secteurs de langues différentes n’ont pas le même plan et des liens de traduction entre rubriques n’auraient aucun sens.

Pourtant, beaucoup de sites adoptent le multilinguisme en dupliquant le plan des rubriques de la langue principale dans les secteurs des autres langues. C’est alors tentant et censé d’afficher à l’utilisateur une liste de liens vers les autres langues.

Si on pense au site adoptant la structure stricte décrite plus haut, les « traductions » d’une rubrique sont les rubriques qui contiennent les traductions des articles de cette rubrique.

On voit alors une solution se profiler : Faire une boucle qui trouve ces rubriques en parcourant la liste des traductions des articles de la rubrique actuelle.

<BOUCLE_rub_pr(RUBRIQUES) {id_rubrique}>

ici le contenu habituel de la rubrique.

    <B_art_traduits>    

        Ici le texte avant s'il y a au moins une traduction
    
    <BOUCLE_art_traduits(ARTICLES) {id_trad > 0} {id_rubrique} {par lang}>
        <BOUCLE_trad(ARTICLES) {traduction} {exclus}>
            <BOUCLE_rub(RUBRIQUES) {id_rubrique} {doublons}>
                <a href="#URL_RUBRIQUE">[(#LANG|traduire_nom_langue)]</a>
            </BOUCLE_rub>
        </BOUCLE_trad>
    </BOUCLE_art_traduits>
    
        Ici le texte après s'il y a au moins une traduction

    </B_art_traduits>

    Ici le texte s'il n'y aucune traduction de la rubrique.

    <//B_art_traduits>


ici le contenu habituel de la rubrique.

</BOUCLE_rub_pr>

La boucle rub_pr est la boucle principale qui détermine dans quel rubrique on se trouve actuellement. Si on édite le squelette rubrique.html, alors elle s’y trouve déjà.

La boucle art_traduits liste les articles de la rubrique. Le critère {id_trad > 0} nous permet de limiter l’affichage aux articles ayant au moins une traduction. C’est cette boucle qui détermine si une liste de rubrique va être affichée. C’est donc à elle que l’on ajoutera les balises « optionnelles » s’il y en a besoin.

La boucle trad cherche les traductions des articles de la rubrique.

La boucle rub va afficher un lien vers la rubrique qui contient la traduction trouvée. On utilise le critère {doublons} pour s’assurer que l’on affiche pas deux fois la même rubrique. En effet, comme on regarde plusieurs articles de la rubrique principale, on pourrait trouver plusieurs traductions se trouvant dans la même rubrique.

Remarque : il n’y a pas moyen de trier cette liste selon beaucoup de critère. On peut juste la trier selon les langues avec le critère {par lang} dans la boucle art_traduits.

Nouveau critère

Pour contourner le problème des tris, on peut, à partir de [SPIP 1.8], déclarer une nouvelle version du critère {traduction} qui fera la même chose.

C’est ce qui est fait par le code proposé dans le fichier

Le critère {traduction} étendu aux rubriques

à insérer dans son fichier mes_fonctions.php3.

On pourra alors faire directement une boucle :

<BOUCLE_rub(RUBRIQUES)>
<hr>
#TITRE #ID_RUBRIQUE
<BOUCLE_trad(RUBRIQUES){traduction}>
<br />#PUCE #TITRE #ID_RUBRIQUE
</BOUCLE_trad>
</BOUCLE_rub>

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom