Multilang

Ce plugin rajoute un menu de langues du type [fr] [en] [it] au dessus de chaque formulaire, en fonction des langues activées dans la configuration du site.

Préambule

holaaaaaaaaaa!!!
Ce plugin a été initié par Renato en 2009. Son “cœur” est le fichier multilang.js. A l’origine il ne fonctionnait que sur les pages d’édition des rubriques. Le fichier multilang.js était stocké dans prive/javascript mais sans être utilisé nulle part dans le core... Manque l’historique du pourquoi. Une version dérivée de ce fichier existe aussi dans le plugin “Forms&Tables”.

Description

Le traitement consiste à rajouter un menu de langues du type [fr] [en] [it] au dessus de chaque formulaire, en fonction des langues activées dans la configuration du site. Le clic sur une langue, bascule le contenu de tous les champs éligibles du formulaire dans la langue choisie. Le résultat est sauvegardé sous la forme “multi” de spip, à savoir <multi>[fr]texte français[en]English text</multi>. Si le plugin est désactivé, l’ensemble reste donc compatible spip. C’est donc juste une aide à la rédaction.

Installation

Récupérez le zip du plugin sur l’espace de téléchargement de la Zone : https://files.spip.net/spip-zone/mu.... L’installation se déroule ensuite comme pour tous les autres plugins, cf. https://www.spip.net/fr_article3396.html

Pour fonctionner, ce plugin requiert également l’installation :

Attention

Les pages qui comportent beaucoup de formulaires (comme par exemple un article avec 80 documents joints et qu’on n’utilise pas le plugin Médiathèque) peuvent être longues à s’exécuter et générer des timeout d’execution de scripts au niveau du navigateur. Le nombre de langues est également un facteur important de ralentissement. Avec un grand nombre de langues, mieux vaut gérer le multilinguisme sur les articles en utilisant le système de traduction d’articles fourni avec SPIP.

Fonctionnement

Une fois activé, tous les champs input:text et textarea sauf ceux des forms .form_upload et .form_upload_icon sont traites dans les objets suivants (et suivant la configuration du plugin) :

  • articles
  • rubriques
  • configuration du site
  • auteurs (intéressant uniquement pour le champs BIO)
  • documents dans les colonnes de gauche des pages d’édition d’articles et de rubriques
  • documents dans les parties basses des pages de présentation des articles et rubriques
  • mots clés et groupe de mots clés
  • sites
  • brèves

Un champ “numéro” est rajouté au dessus des champs #titre (articles, rubriques, mots clés) et #titre_documentXX pour saisir le numéro de l’objet (sans le point qui est rajouté automatiquement)

Une image est rajoutée en background de chaque champs traité et indique son état :

  • no multi : pas de multi dans le champ
  • multi (barré) : multi désactivé dans ce champ
  • multi fr : texte affiché actuellement en français
  • multi en : texte affiché actuellement en anglais

Dans le menu des langues, un item “Tout” est rajouté en dernier. Il permet de visualiser le contenu des champs du formulaire sans le traitement “Multilang” et donc de copier le contenu (mais de modification possible)

Si un des champs du formulaire contentant une structure multi, contient une valeur de langue non renseignée, ladite langue est surlignée dans le menu des langues.

Champs éligibles :

  • input:text
  • textarea
  • select
  • ... ?

Les champs contenant du texte (autre que espace, tab, retour) en dehors de la structure multi ne sont pas traités (image “multi barré” en background). Par exemple :

du texte avant
<multi>[fr]texte[en]text</multi>
et du texte après

Intégration dans d’autres plugins

D’une manière générale et dans toutes les pages de l’espace privé, le plugin est actif : dès qu’il trouve un champ de class “multilang”, il rajoute un menu de langues au “form” parent.

A faire... ou pas

  • Le faire fonctionner avec les crayons
  • Le faire fonctionner avec la lame “Tout Couleur” du couteau suisse

updated on 6 April 2020

Discussion

32 discussions

  • Bonjour,
    J’ai installé et paramétré le plugin pour les articles.
    Il ne fonctionne pas (SPIP 3.2.7 et PHP 7.2).
    Avez-vous une piste ?
    Est-il incompatible avec d’autres plugins ?
    Merci

    Reply to this message

  • 4

    Bonjour, je viens de mettre à jour mon site SPIP et par conséquent les plugins
    J’utilise “Multilang” & “Interface de traduction pour objets”
    Seulement, le changement d’interface rend, l’emploie des deux plugins en parallèlle vraiment perturbant, car beaucoup trop similaire on ne comprend plus rien. (voir screenshoot joint, la zone A correspond à interface de traduction pour objects, la zone B à multilang)

    C’était bien mieux avec le petit menu discret d’avant.

    Mais au delà de ce souci esthétique, mon plus gros problème, viens du fait que j’aimerai désactiver “Multilang” pour les articles et ne les garder que pour les rubriques, mais sans succès. Lorsque je décoche article dans configuration du plugin, je n’ai aucun changement.

    Avez vous constatez cela aussi ?
    Merci d’avance.

    • Et dans la suite, je n’arrive pas à activer le plugin sur les mots clés ou groupe de mot clés. Malgré la case coché dans la configuration.

      Au ca sou liste des plugins activé sur mon site:
      Analyclick 0.3.4 - test
      Authority 0.12.0 - stable
      Automatic backup 1.2.6 - stable
      Control API 1.9.5 - stable
      CVT Upload 1.18.0 - test
      Déclarer le parent 1.3.5 - dev
      Duplicator 2.0.6 - stable
      Entries for forms 3.30.0 - stable
      Extra fields 3.12.4 - stable
      Extra fields (Interface) 3.5.8 - stable
      Formidable 3.46.7 - stable
      Home article 1.2.2 - stable
      Interface de traduction pour objets 1.1.5 - test
      LESS CSS 1.4.4 - stable
      MailCrypt 2 2.4.5 - stable
      minibando 1.3.10 - stable
      Multilang 1.4.3 - stable
      NoSPAM 2.1.3 - test
      Pencils 1.26.19 - stable
      Postman 3.7.2 - stable
      Raccourci Accordéon 1.0.5 - test
      Rang 1.0.13 - test
      Recycle bin 3.1.2 - stable
      Rubriqueur 2.1.1 - stable
      SPIP Bonux 3.5.4 - stable
      YAML 2.0.11 - test

    • Pour le point 2), il y a un cache d’1 semaine sur le javascript qui gère le menu de langue, il faut sans doute vider le cache pour voir un changement de config tout de suite.

      Pour le point 1), je plaide coupable votre honneur !
      Suite à des retours utilisateurs qui avaient des soucis avec l’ancien menu (pas assez visible et libellés peu clairs), j’ai mis une petite couche de peinture.
      Efectivement, le menu est assez ressemblant avec celui de traduction par objets.
      Cela dit, dans quel cas de figure y a-t-il besoin d’avoir à la fois les balises <multi>et les “vraies” traductions sur un même objet ?

    • Besoin je ne sais pas ^^
      Mais perso il m’arrive souvent de faire des sites multi avec les rubriques commune à toutes les langues, (donc utilisant multi) et des articles traduit.

      Peut etre est ce une mauvaise pratique ?

    • Ah ok, oui dans ce cas, je comprends le besoin d’avoir les 2 plugins en même temps. Je sais pas si c’est une bonne pratique ou pas, mais je comprends :)

      Par contre je ne vois pas de solution simple au niveau interface pour ce cas de figure : il faut bien afficher 2 menus de langues différents, et il n’y a pas de raison d’en rendre un des 2 “moins visible” que l’autre. En tout cas pour multilang, ça pénaliserait les utilisateurs qui ne l’utilisent pas en conjenction avec l’autre plugin, ce qui je pense est la majorité des cas (mais j’ai pas de stats sous la main).

    Reply to this message

  • 3

    Bonjour,
    Merci à vous pour cette contrib géniale que j’utilise massivement sur mes sites !

    Depuis une mise à jour récente, multilang ne fonctionne plus dans les crayons (dans l’interface publique). La console de mon navigateur est pleine d’erreur JS.

    Merci d’y jetter un oeil à l’occasion!

    Jul

    Reply to this message

  • 1
    Benoît Labourdette

    Souci qui vient d’apparaître, qui empêche l’usage de ce plugin (parfait, par ailleurs, que j’utilise depuis des années), qui ne vient peut-être pas du plugin lui-même.
    Voici le problème bloquant : lorsqu’il crée la chaîne :
    <multi>[fr]texte_fr[en]texte_en</multi>
    Eh bien, maintenant, au lieu de [en] il met [nglis]. Bizarre...
    Du coup, ça ne marche plus !
    PS : c’est apparu chez moi après la mise à jour du 15/11/2019. Mais maintenant, même si je remet une version précédente du plugin, le problème reste le même.

    • Benoît Labourdette

      Le problème s’est réglé, peut-être parce que, dans la configuration du plugin j’ai sélectionné les deux langues :

    Reply to this message

  • 2

    Bonjour

    La traduction semble ne pas fonctionner pour les crédits des images.
    Les documents sont bien cochés dans la config du plugin.
    Le titre et la description sont bien traduits.
    Mais les crédits sont laissés tels quels :

    <multi>[fr]Crédits : Observatoire d'Arecibo[en]Credits : Arecibo Observatory</multi>

    et cela m’affiche [fr]Crédits : Observatoire d’Arecibo[en]Credits : Arecibo Observatory sous mon image

    • Je précise que dans l’interface privée, multilang semble bien fonctionner : j’ai bien le “no multi” quand la traduction n’est pas faite, et les “multi fr” et “multi en” quand je demande une langue.

      C’est uniquement dans le rendu (à la fois dans l’interface privée et publique)

    • Hello, c’est très certainement car la balise Credits n’est pas traitée de la même manière.

      Peux tu essayer quelquechose du genre dans un fichier mes_options.php :

      $GLOBALS['table_des_traitements']['CREDITS']['documents'] = 'extraire_multi(%s, "TYPO", $connect, $Pile[0])';

    Reply to this message

  • 3

    Bonjour,
    le plugin Multilang ne fonctionne pas sur “groupe de mots clés” il me semble. Je n’ai pas les raccourcis typographique pour changer de langue.

    Reply to this message

  • 1
    Fabrice Lapeyrere

    Petit souci de mise en page, il manque la classe “editer” sur le li du champ numéro (pour les champs numérotables), il faut rajouter la classe “editer” lignes 375, 378 et 381 du fichier javascript/multilang.js

    ex ligne 375 :
    .before('<li class="editer editer_'+numid+'"><label for="titre_numero">'+multilang_lang.numero+'</label><input id="'+numid+'" name="titre_numero" type="text" value="'+el.field_pre_lang+'" size="4" class="text nomulti" /></li>');

    Reply to this message

  • 1

    Avec ce plugin, pourrait-on avoir la possibilité de restreindre l’affichage des langues à certains utilisateurs ? Dans l’espace privé uniquement.

    Ou c’est un autre plugin qu’il faudrait faire?

    Julien.

    • Du coup il faudrait brancher un système d’autorisation dessus. Mettre peut être une autorisation simpliste au minimum qui retourne true tout le temps et que tu surchargerais dans un fichier d’options

      Tu peux essayer cela et l’envoyer sur la zone si ça fonctionne

    Reply to this message

  • Bonjour j’ai un souci avec le plugin. lorsque j’ai une entrée dont la traduction est la même dans plusieurs langues par exemple, la balise multi que l’on vois lorsqu’on clique sur tout, se contente de la version dans la langue d’origine. Ce qui dans l’absolu ne me gène pas.

    En revanche sur le site public il ajoute dans le cas là avant mon titre un qui me retourne uen erreur W3C.

    Sauriez vous comment résoudre ce comportement pour éviter que ne s’ajoute ce span inutile ? Merci.

    Reply to this message

  • 1

    Problème rencontré le 13 janvier 2015 dans ce qui semble être la dernière mise à jour de la version 1.1.0 du plugin.

    Il manqua apparemment le " de fermeture - à la ligne 30 - du fichier paquet.xml:

    <utilise nom="crayons" compatibilite="[1.13.0;] ></utilise>

    à la place de:

    <utilise nom="crayons" compatibilite="[1.13.0;]" ></utilise>

    Ce qui pose un problème lors de l’installation du plugin.

    Merci pour ce plugin très utile.

    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