Traduction d’un article ET de l’interface d’un clic

Cette contrib est destinée aux sites multilingues qui ont choisi de relier entre elles les traductions d’un article (chaque article a sa propre langue), dans le cadre d’une navigation une rubrique = plusieurs langues (traduites grâce aux balises multi).

Le contexte

Dans le contexte expliqué ci-dessus (une rubrique = plusieurs langues), changer la langue d’une rubrique se fait grâce au #MENU_LANG. Si vos squelettes sont construits de cette manière :
-  vous entrez sur le site par une langue (si vous êtes arrivé par un autre moyen, c’est la langue par défaut du site qui vous est proposée)
-  vous naviguez dans cette langue, mais avez toujours un lien pour passer d’une langue à une autre grâce au #MENU_LANG
-  Dans chaque rubrique, s’affichent les articles dans la langue de navigation, ou dans toutes les langues, selon ce que vous avez mis en place.

Si vous cliquez sur un article, celui-ci s’affiche dans sa propre langue. Mais l’interface de navigation va continuer à s’afficher selon la langue que vous aurez sélectionné pour votre navigation (c’est un cookie sur votre ordinateur qui sélectionne la langue de navigation, lorsque vous la choisissez dans #MENU_LANG). Pour changer de langue dans cette page d’article, vous avez alors deux possibilités :
-  changer la langue de l’interface de navigation (tout change sauf le contenu de l’article qui reste dans sa propre langue à lui), avec #MENU_LANG
-  cliquer sur la traduction de l’article (une simple boucle traduction). Dans ce cas, l’article va changer, et s’afficher dans une autre langue, mais l’interface de navigation va rester dans la langue du cookie.

Mixer les deux clics

Cette contrib vous propose de mixer les deux clics : dans un squelette article, lorsqu’on clique sur la traduction d’un article, changer aussi la langue de navigation. La solution la plus simple est de provoquer le changement de langue dans le cookie à travers l’URL des boucles de traduction.

<BOUCLE_Traductions(ARTICLES){traduction}{exclus}{unique}>
<a href="spip.php?action=cookie&url=#URL_ARTICLE&var_lang=#LANG">
[(#LANG|traduire_nom_langue)]</a> </BOUCLE_Traductions>

Et si vous utilisez le critère {origine_traductionl} pour indiquer la version originale de chaque article :

<BOUCLE_Original(ARTICLES){traduction}{origine_traduction}{exclus}{unique}>
<a href="spip.php?action=cookie&url=#URL_ARTICLE&var_lang=#LANG">
[ (#LANG|traduire_nom_langue)]</a>  (original) </BOUCLE_Original>
<BOUCLE_Traductions(ARTICLES){traduction}{exclus}{unique}>
<a href="spip.php?action=cookie&url=#URL_ARTICLE&var_lang=#LANG">
[(#LANG|traduire_nom_langue)]</a> </BOUCLE_Traductions>

Pour jouer la transparence, on peut mettre cette boucle au même endroit qu’on aura mis #MENU_LANG dans les autres squelettes.

updated on 2 October 2019

Discussion

5 discussions

  • Bonjour,
    je veut obtenir une traduction(du anglais à français) correcte à des phrases trés liés à son contexte .merci

    Reply to this message

  • 1

    Dans mes_options.php (qui sera enregistré dans le dossier /config) :
    //Gestion des langues
    $forcer_lang=true;

    Normalement ça règle ce genre de problèmes. A savoir que je ne l’ai pas testé sous Spip 2.0...

    Le graphisme du site http://evasalmon.free.fr est absolument génial :)

    • j’ai trouvé comment faire pour que les rubriques soit traduites et qu’elles ne lâchent pas le critère lang quand on navigue, super ! merci le forum Spip !
      mais est-ce que vous avez une solution pour qu’on puisse recharger l’article lors de la demande de traduction (MENU_LANG) et faire afficher l’article traduit correspondant à la demande ?
      cela éviterait qu’on ait deux manip à faire,
      audedo

    Reply to this message

  • bonjour,
    j’ai un soucis avec cette gestion multilingue, sur le site en question j’ai souhaité afficher tous les articles en anglais si on choisit l’anglais et également ceux écrit en français lorsque ceux-ci ne sont pas traduit. Jusque là tout fonctionne, je clique sur l’article et les rubrique sont bien traduites (gestion avec la balise multi)
    Mon problème se trouve au clique sur les rubriques : lorsque je suis en anglais et que je clique sur une rubrique je retrouve la langue d’origine c’est à dire le francais.
    J’ai tout essayé avec lang_select=non ou ! land-select dans les boucles RUBRIQUES et rien n’y fait,
    j’ai essayé avec cette contrib dans les articles et çà ne fonctionne pas non plus,
    merci pour votre aide je suis vraiment perdue !!
    voir sur http://evasalmon.free.fr

    audedo

    Reply to this message

  • Merci bcp pour cette contrib, ca marche tres bien!!!!

    Reply to this message

  • Bonsoir,
    Cette contrib marche très bien lorsque je place la boucle dans le squelette article.html, c’est très pratique merci.

    J’aurais bien voulu placer ces liens de traduction dans l’entête de la page qui est appelée par <INCLURE{fond=inc-entete}{lang=#ENV{lang}}{id_rubrique}{id_article}>

    mais cela ne fonctionne pas : les liens n’apparaissent pas.
    dd

    Reply to this message

Ajouter un commentaire

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom