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 2 October 2019

Discussion

28 discussions

  • 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 :

    1. <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:

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

    à la place de:

    1. <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

  • Bonjour,
    Je voudrais savoir comment mettre les liens cliquables des langues sur la page d’accueil du site?
    Quels balises ou code faut il insérer?
    Merci

    Reply to this message

  • Ce plugin est formidable et me sauve la vie, vraiment. Parce qu’effectivement ça rend la saisie des mots-clés et des titres des documents tellement plus confortable

    Cela dit, il y a un truc un peu bizarre, je suis sous SPIP 3 (toute dernière version) et, bien qu’ “Article” soit décoché dans les paramètres du plugin, Multilang reste actif dans les articles.

    Je crois que c’est dû à un autre réglage, mais j’ai oublié lequel.

    Reply to this message

  • Bonjour,

    je ne suis pas si c’est ici que je dois poster cette question ou plutôt dans champs extras ou saisies.

    Quand je déclare un champ extra de (type textarea dans la table spip_syndic) via l’api de champs extras, le champ reçoit la classe multi_lang_no_multi et le javascript n’agit pas sur ce champ.

    Selon la documentation le javascript devrait réagir sur textarea, ce qu’il fait pour le textarea “descriptif” du formulaire mais pas le champ extra; ajouter une classe “text” ne change rien non plus.

    Si par contre j’entre manuellement la structure multi et je sauvegarde, alors il reconnait le champ extra et l’inclue dans la gestion des langue par le plugin.

    Comment dois-je déclarer ce champ que le javascript l’inclut d’office?

    Merci

    Rainer

    Reply to this message

  • Bonjour tout le monde,
    Je remercie le créateur de ce plugin, qui, une fois installé sur le site, à laisser entendre un grand souffle de soulagement de la part de mes utilisateurs : “Oufffff, plus besoin de saisir ces PUxAINS de balises multi !!! Hourra!”
    Par contre, nous utilisions également des éléments hors balises, il est vraiment regrettable que le bouton “tout”, nous contraignent aux champs complets en lecture seule ...
    Il serait génial de pouvoir éditer celui-ci, grace a quoi nous pourrions mettre du texte hors balises.

    De plus mes utilisateurs rencontrent également des soucis, lorsque ils saisissent qu’une seule langue dans l’article (dans l’optique de mettre l’autre langue dans un second temps), et que celle-ci n’est pas celle par défaut. J’essaierais de détailler cela dans un autre post.

    Merci à vous,

    Jul

    Reply to this message

Comment on this article

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