Carnet Wiki

ArticleDeReferenceOrigineTraduction

post original

Je viens d’uploader un nouveau critère de boucle pour pouvoir sélectionner
l’article d’origine d’une traduction: origine_traduction (dans une boucle
ARTICLES, évidemment). Si vous ajoutez ce critère à une boucle, seuls les
articles qui sont à l’origine d’une traduction sont affichés.

Vous pouvez voir cela sur le Scarabée (regardez le source)

Sur le Scarabée, les articles en anglais sont des traductions réalisées par
Eric Cotte. J’ai choisi d’attribuer comme auteur “ARNO” à mes propres
textes, et “Eric Cotte” aux traductions. Voici ce que j’ai fait pour
afficher de manière distincte:
-  que je suis l’auteur unique quand ce sont les versions françaises;
-  qu’Eric Cotte est le traducteur des versions anglaises, et que je suis
l’auteur de la version d’origine.
A priori, cette méthode fonctionne quel que soit le nombre de traductions
différentes (je pourrais ajouter des versions en allemand, espagnol... en
n’indiquant que le nom du traducteur aux versions traduites).

http://www.scarabee.com/article.html

<BOUCLE_tester_traduction(ARTICLES){id_article}{traduction}>
        <BOUCLE_traduit(ARTICLES){id_article}{origine_traduction}>
                [<p>par (#LESAUTEURS)]
        </BOUCLE_traduit>
                <BOUCLE_auteur_origine(ARTICLES){traduction}{origine_traduction}>
                [<p>by (#LESAUTEURS)]
                </BOUCLE_auteur_origine>
                [<br>translation by (#LESAUTEURS)]
        <//B_traduit>
</BOUCLE_tester_traduction>
        [<p>par (#LESAUTEURS)]
<//B_tester_traduction>

La BOUCLE_tester_traduction détermine si l’article actuel (ici, celui de la
boucle principale) est traduit ou non (on sélectionne l’article lui-même
par id_article, on le prend dans un éventuel groupe de traduction par
traduction. S’il n’en existe pas de traduction, on va à la fin (avant
//B_tester_traduction) et on affiche directement le nom de l’auteur ("par
ARNO").

Si cet article est dans un groupe de traduction, alors on passe à
l’intérieur de la boucle.

Là, une seconde boucle (BOUCLE_traduit) teste si c’est l’article d’origine
(on resélectionne l’article lui-même par id_article et on teste s’il est
l’article de référence de la trad par origine_traduction (la requête
mySQL vérifie que id_article est l’article actuel, et que
id_article=id_trad).

Si oui (id_article et id_article=id_trad), alors il s’agit de l’article
original (sur le Scarabée, on est en train de visiter la version française)
, on se contente donc d’afficher le nom de l’auteur (“par ARNO”).

Si non (id_article n’est pas égal à id_trad), c’est donc une traduction, et
non l’original (sur le Scarabée, c’est donc une version anglaise). Dans ce
cas, le nom de l’auteur est affiché en tant que “translation by” (ici, Eric
Cotte). J’ajoute ici une petite boucle pour récupérer l’article d’origine
et afficher le nom de son auteur (BOUCLE_auteur_origine va chercher, parmi
les articles traduction celui qui est origine_traduction). Cela me
permet donc, quand il s’agit d’une traduction d’un article, d’afficher: “by
ARNO, translation by Eric Cotte”.

Avec ce système, sans modif, si quelqu’un (disons un certain Gunther) me
fait une version en allemand, cette version sera, dans l’espace privé,
simplement signée par ce “Gunther”. Sur le site public, ça affichera: “by
ARNO, translation by Gunther”.

[Note par mathieu@bidon.ca] Pour les squelettes multilingues ou encore
dans les cas où les noms d’auteurs sont affichés en plusieurs alphabets
(ex: <multi>[fr] Mathieu [bg] Матю</multi>), il faut ajouter le critère
{!lang_select} dans la boucle sur l’article de référence, sinon
le “par nom_auteur” s’affiche dans la langue de l’article de référence.


Bon, on peut faire beaucoup plus simple (par exemple, simplement afficher
le nom de l’auteur, puis indiquer dans une seule boucle que l’auteur de
l’article d’origine est...). Ca afficherait simplement: “par Eric Cotte,
article original par ARNO”:

[par (#LESAUTEURS)]
<BOUCLE_auteur_origine(ARTICLES){traduction}{origine_traduction}{exclus}>
        [<br>article original par (#LESAUTEURS)]
</BOUCLE_auteur_origine>

(non testé)
Ici, le critère supplémentaire exclus permet de sélectionner la
traduction d’origine _si et seulement si_ cette traduction n’est pas
l’article en cours.

ARNO*

- Mise à jour :18 November 2007 at 17:26