SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 31 visiteurs en ce moment

Accueil du site > Multilinguisme > Traductions de rubriques > Trouver les « traductions » des rubriques

Trouver les « traductions » des rubriques

31 mai 2005 – par Fil, mortimer – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

Toutes les versions de cet article : [français] [français]

2 votes

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.

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

Zip - 693 octets
Le critère {traduction} étendu aux rubriques

à insérer dans son fichier mes_fonctions.php3.

On pourra alors faire directement une boucle :

Retour en haut de la page

Vos commentaires

  • Le 12 septembre 2005 à 04:43, par François En réponse à : > Trouver les « traductions » des rubriques

    Bonsoir,

    Cette solution est très intéressante, surtout dans des cas où le méthode du mot-clef est peu attirante, car on va avoir un nombre constamment grandissant de rubriques.

    Je cependant eu du mal à faire fonctionner la fonction avec SPIP 1.8.2 ; je vous explique plus en détails :


    Ligne 7 : $not, spécifié en paramètre de fonction, n’est pas trouvé (la fonction est appelée avec 3 paramètres). Je l’ai donc enlevé.


    Ligne 13 : $param est un objet, la propriété ->op contient la valeur ’traduction’, j’ai changé en conséquence.


    Ligne 14 à 28 : J’avais du mal à suivre la construction de la requête dans l’instance $boucle (je suis nouveau sur SPIP, c’est peut-être pour ça), alors je l’ai modifiée pour ceci :

    $boucle->from[] = "spip_articles AS source, spip_articles AS dest";
    $boucle->where[] =
      " source.id_trad = dest.id_trad
      AND source.id_rubrique = \"." . calculer_argument_precedent($idb, 'id_rubrique', $boucles) . ".\"
      AND dest.id_rubrique != \"." . calculer_argument_precedent($idb, 'id_rubrique', $boucles). ".\"
      AND dest.id_rubrique = rubriques.id_rubrique";

    Une fois ces modifications faites, ça marche.

    Enfin voilà. Cette solution ne satisfait pas mon cas, car je vais me retrouver avec des rubriques ne contenant que des sous-rubriques (pas d’articles), je ne pourrai donc pas me fier sur cette fonction. Pour être vraiment solide, il faudrait une inspection récursive des sous-rubriques, s’il n’y a pas d’articles directement dans la rubrique. Mais avec si peu de connaissance (pour l’instant) sur le core de SPIP, je ne sais pas comment y arriver. Ou peut-être est-ce rêver en couleur ? Est-ce que qqun a déjà fait ça ? Qu’en pensez-vous ? J’aimerais beaucoup avoir de vos commentaires.

    PS : Peut-être que qqn peux me répondre ici : j’aimerais savoir si la possibilité de faire un lien de « traduction » entre les rubriques est une fonctionnalité qui est présentement planifiée, et sinon pourquoi ?

    Merci beaucoup

    François

    • Le 12 septembre 2005 à 05:52, par François En réponse à : > Trouver les « traductions » des rubriques

      OK, c’est encore moi.

      J’ai reprogrammé la fonction critere_traduction (et programmé deux fonctions récursives) qui font ce que j’ai décrit plus haut. L’article utilisé pour trouver l’équivalent dans l’autre langue n’est pas seulement recherché dans la rubrique, mais dans toutes ses sous-rubriques. Donc, si on a une rubrique qui ne contient que des sous-rubriques, on peut quand même avoir la « traduction ».

      Je vous averti, cette fonction sent le hack a plein nez, et il me semble qu’elle brise le modèle de fonctionnement de l’application, et c’est très peu testé, et pas commenté, etc, etc.

      Mais, je crois qu’elle marche (SPIP 1.8.2) ! Est-ce que ça intéresse qqn ? Si oui, je pourrais la rendre un peu plus sérieuse.

    • Le 12 septembre 2005 à 11:03, par mortimer En réponse à : > Trouver les « traductions » des rubriques

      Salut,

      oui, ça a changé dans la 1.8.2.

      pour les codes que tu proposes, tu pourrais le faire en extension de la contrib sur le wiki (voir le lien en dessous de la contrib)

    • Le 27 juin 2006 à 14:33, par erational En réponse à : Trouver les « traductions » des rubriques pour spip 1.9 ?

      cela n’a plus l’air de passer en SPIP 1.9... Quelqu’un a t’il un patch pour trouver ce fameux critère {traduction} pour les rubriques ?

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.

  • Navigation AJAX

    31 janvier – 18 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)