Carnet Wiki

MultilinguismeExemple3

Voici ma petite contrib au multilinguisme.

Contrairement aux autres essais qui gérent une langue par secteur,
j’ai choisi d’utiliser les critères de langue au niveau de chaque article.

La rubrique a la langue par défaut du site.
Dans chaque rubrique se trouve x articles, chacun avec sa langue, certains pouvant être la traduction d’autres.

exemple d’arborescence.

sommaire
  |- rub1
       |- art1  fr
       |- art2  en   traduction de art1
       |- art3  de
  |- rub2 
       |- art4  fr
       |- art5  en   traduction de art4


Dans ce type d’arborescence, il faut pouvoir afficher seulement le nécessaire.

J’ai donc choisi de permettre à l’internaute de choisir la langue de navigation a tout moment avec
#MENU_LANG

J’ai ajouté dans le fichier ecrire/mes_options.php3 le paramètre $forcer_lang=true

La boucle permettant de lister les articles doit donc permettre :
1) d’afficher en priorité les articles dans la langue choisie par #MENU_LANG
2) d’afficher les autres articles ne possédant pas de traduction dans la langue choisie (par défaut l’article d’origine).
3) Eventuellement d’afficher une liste des traductions disponibles

Après divers essais, je suis arrivé à la boucle suivante :

<!-- AFFICHE LES ARTICLES RECENTS DANS LA LANGUE DE L'UTILISATEUR -->
<BOUCLE_articles_recents(ARTICLES){id_rubrique}{par titre}{lang?}{doublons}>
        <BOUCLE_elim_trad(ARTICLES) {traduction} {doublons}>
        </BOUCLE_elim_trad>     
    <h2><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></h2>
    <div class="detail">
    [(#DATE|nom_jour)] [(#DATE|affdate)]
    <B_auteurs_recents><:par_auteur:> <BOUCLE_auteurs_recents(AUTEURS){id_article} {", "}>#NOM</BOUCLE_auteurs_recents>
    </div>
    <br>
</BOUCLE_articles_recents>

<h2><multi>[en]Other langages[fr]Autres langues</multi></h2>
<!-- AFFICHE LES ARTICLES RECENTS DANS LES AUTRES LANGUES -->
<!-- AFFICHE DE PREFERENCE L'ARTICLE D'ORIGINE  -->
<BOUCLE_articles_recents2(ARTICLES){id_rubrique}{par lang}{par titre}{doublons}>
<BOUCLE_tester_traduction(ARTICLES){id_article}{traduction}>
    <BOUCLE_traduit(ARTICLES){id_article}{origine_traduction}>
    </BOUCLE_traduit>
       <BOUCLE_auteur_origine(ARTICLES){traduction}{origine_traduction}>
       <h2><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)] <font size="2">#LANG</font></a>
        <BOUCLE_articles_autrelangue(ARTICLES) {traduction} {exclus} {"|"}>
        <font size="2"><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#LANG)]</a></font>
        </BOUCLE_articles_autrelangue>
       </h2>
       <div class="detail">
       [(#DATE|nom_jour)] [(#DATE|affdate)]
       <B_auteurs_recents2><:par_auteur:><BOUCLE_auteurs_recents2(AUTEURS){id_article} {", "}>#NOM</BOUCLE_auteurs_recents2>
       </div>
       <br>
       </BOUCLE_auteur_origine>
    <//B_traduit>
</BOUCLE_tester_traduction>
  <h2><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></h2>
  <div class="detail">
  [(#DATE|nom_jour)] [(#DATE|affdate)]
  <B_auteurs_recents3><:par_auteur:><BOUCLE_auteurs_recents3(AUTEURS){id_article} {", "}>#NOM</BOUCLE_auteurs_recents3>
  </div>
  <br>
<//B_tester_traduction>
</BOUCLE_articles_recents2>

Problème rencontré :
La boucle précédente marche bien sauf lorsque l’un des articles a une traduction en cours de rédaction.
Dans ce cas, l’article d’origine ne s’affiche plus si le visiteur navigue dans la langue de l’article en cours de rédaction.

si vous avez une idée, n’hésitez pas a laisser un message...

@+ COYOTE

- Mise à jour :18 November 2007 at 16:07