var Phenix = function () {
Troll du Web depuis 1996

Trouver la traduction d’un objet #SPIP

Une fonction bien pratique quand on travaille avec des squelettes multilingues. Avant j’utilisais un assemblage de boucles et de critères, un peu illisible.

Cette fonction simplifie grandement le travail en retrouvant automatiquement une traduction en fonction d’un couple id_objet/objet.
Cela devrait fonctionner avec n’importe quel objet utilisant le système de traduction de SPIP.

  1. <?php
  2. /**
  3.  * Récupère la traduction d'un objet via la langue et l'id_objet
  4.  *
  5.  * @param int $id_objet
  6.  * @param string $objet
  7.  * @param string $lang
  8.  * @access public
  9.  * @return int
  10.  */
  11. function objet_trouver_traduction($id_objet, $objet, $lang) {
  12.  
  13. // Pas de lang, on sort
  14. if (!isset($lang)) {
  15. return $id_objet;
  16. }
  17.  
  18. // Table
  19. $table = table_objet_sql($objet);
  20. $cle_primaire = id_table_objet($objet);
  21. // On récupère l'éventuelle traduction
  22. $id_traduction = sql_getfetsel(
  23. $cle_primaire,
  24. $table,
  25. 'id_trad='.intval($id_objet),
  26. 'lang='.sql_quote($lang),
  27. 'statut='.sql_quote('publie')
  28. )
  29. );
  30.  
  31. return $id_traduction;
  32. }
  33.  
  34. function article_trouver_traduction($id_article, $lang) {
  35. return objet_trouver_traduction($id_article, 'article', $lang);
  36. }
  37.  
  38. // Si le plugin Traduction entre rubriques est activé
  39. // http://contrib.spip.net/Traduction-des-rubriques
  40. function rubrique_trouver_traduction($id_article, $lang) {
  41. return objet_trouver_traduction($id_article, 'rubrique', $lang);
  42. }

Je l’utilise surtout pour les liens directs dans les squelettes :

  1. <a href="#URL_ARTICLE{[(#EVAL{_ID_ARTICLE_CONTACT}|article_trouver_traduction{#ENV{lang}})]}" class="button large">
  2. Nous contacter
  3. </a>

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message
  • Pour créer des paragraphes, laissez simplement des lignes vides.