Site multilingue facile

Site multilingue facile permet de mettre en place facilement un site multilingue avec une langue par secteur.

Introduction

Même si le multilinguisme est nativement intégré dans spip, réaliser un site multilingue n’est pas toujours évident. Ce plugin a pour objectif de faciliter cette tâche en permettant de mettre en place en quelques clics un site multilingue avec une langue par secteur. [1]

Principe

Le plugin rassemble plusieurs plugins déjà existants et apporte quelques modifications aux squelettes.

Installation

Le plugin s’installe comme n’importe quel plugin.

Il nécessite toutefois les plugins suivants :

Sous Spip >= 3 l’installation de ces plugins requis se fait automatiquement en installant le présent plugin.

Sous Spip 2 ou 2.1 il est recommandé d’installer auparavant le plugin Step pour installer « Site multilingue facile » et de forcer ainsi l’installation automatique de tous les plugins nécessaires.

Le plugin modifie également quelques squelettes (sommaire.html, rubrique.html et article.html) et quelques noisettes.

Une fois installés les plugins nécessaires, il vous suffit de déterminer les langues du site dans « Configuration »->« Mulilinguisme »->« Gestion des langues » et voilà votre site est multilingue ; vous pouvez maintenant commencer à rédiger vos contenus.

Squelettes

Le plugin surcharge les squelettes sommaire.html, article.html et rubrique.html afin de les adapter à la structure « une langue par secteur »[1].

Évidemment vous pouvez les surcharger à votre tour en copiant les fichier d’origine depuis le dossier squelettes-dist dans votre dossier squelettes, mais vous perdriez les adaptations spécifiques à la structure « langue par secteur »[1]. Vous pouvez également réutiliser les adaptations proposé par ce plugin.

Modifications des squelettes proposés par le plugin

Si vous voulez maintenir la redirection automatique vers le bon secteur de langue [1], veuillez ne pas surcharger le fichier sommaire.html, car il contient la balise #LANGUE_PREFEREE_SECTEUR_REDIRECTION du Plugin « Langue préférée par l’internaute » provoquant la redirection vers le secteur de la bonne langue.

Concernant les squelettes article.html et rubrique.html, si vous souhaitez les modifier, copiez les fichier correspondant à votre version dans votre dossier squelettes, puis renommez-le correctement :

Pour la version spip 2 et 2.1 copiez les fichiers « rubrique_spip2.html » et « article_spip2.html » dans votre dossier squelettes, puis renommez les en leur enlevant « _spip2 ».

Pour la version spip 3 et plus procédez de la même manière en prenant les fichiers contenant « _spip3 ».

Le logo
Ce qui suit est valable pour les versions de Spip inférieurs à 3.2. [2]

Les Balises #LOGO_objet comme par exemple #LOGO_ARTICLE permettent maintenant de chercher le logo de l’objet d’origine si l’objet traduit ne dispose pas de logo. Donc si l’article 2, traduction de l’article 1 n’ait pas de logo attaché, la Balise #LOGO_ARTICLE affichera le logo de l’article 1.

Cette fonctionnalité peut-être désactivé dans le panneau de configuration du plugin.

Le menu de langue

vous pouvez utiliser la noisette
<INCLURE{fond=inclure/menu_langues,env}/>
qui est inclue d’office si vous utilisez ce plugin dans Spip3 et +.

Pour Spip2 et 2.1 vous devriez copier le fichier inc-entete.html dans votre dossier squelettes et remplacer
#MENU_LANG par <INCLURE{fond=inclure/menu_langues,env}/>

Le menu de navigation

Si vous utilisez les squelettes par défaut ou ceux de Zspip, ce plugin inclut directement un menu de rubriques adapté à la structure langue par secteur [1].

Sinon vous pouvez insérer la noisette <INCLURE{fond=inclure/nav,env}/> à l’endroit ou vous voulez faire apparaitre le menu de navigation

Le plugin est compatible avec Zspip

Notes

[1Langue par secteur signifie que pour chaque langue, une rubrique est crée à la racine du site (rubrique secteur). Les rubriques d’une même langue seront alors des sous-rubriques de la rubrique secteur correspondante à la langue.

[2A partir de Spip 3.2 le logo original est ajouté automatiquement à la traduction, donc cette fonctionnalité n’est plus d’utilité.

Discussion

27 discussions

  • 8

    Très bon plug ! Facile à installer.

    J’ai été visiter votre site et je serais curieuse de savoir comment vous avez procédé pour gérer vos événements sachant que le plug agenda ne permet pas d’associer plusieurs articles à un événement...

    1 article français = 1 événement en français
    1 article anglais = le même événémen mais en anglais

    J’avoue ne pas trop savoir ce qui serait le plus simple à mettre en place...

    Autre question, sachant que les articles traduits sont liés peut-on avoir un même bloc de commentaires (forum) côté français et anglais pour une intéraction internationale ?

    • Tu te réfères au site muziekpublique, j’imagine.
      D’abord agenda permet dans problème d’ajouter plusieurs événement à un seul article. Sur le site en question, afin de diminuer le travail, l’événement est encodé seulement pour l’article de référence.

      <BOUCLE_art(ARTICLES){id_article}>
      <BOUCLE_art_or(ARTICLES){traduction}{origine_traduction}>
        <BOUCLE_ev(EVENEMENTS){id_article}>
        </BOUCLE_ev>
      </BOUCLE_art_or
      </BOUCLE_art>
      >

      permet de récupérer l’événement rattaché à l’article de référence. De même les images et logos sont récupéres de l’article de référence, mais peuvent être surchargé.

      Oui tout à fait

      En faisant un tableau pour récupérer les id_articles des articles liées par traduction et on les utilisant pour la séléction de message tu devrais obtenir ce que tu souhaite. (modifier/surcharger : inclure/forum.html de squelettes_dist)

      #SET{id_article,#ARRAY}
      <BOUCLE_art(ARTICLES){id_article}>
      <BOUCLE_art_or(ARTICLES){traduction}>
        #SET{id_article, #GET{id_article}|array_merge{#ARRAY{#COMPTEUR_BOUCLE,#ID_ARTICLE}
      </BOUCLE_art_or
      </BOUCLE_art>
      
      <BOUCLE_comments(FORUMS?){id_article IN #GET{id_article}} {par date}>
      
      </BOUCLE_comments>

      Est-ce que cela répond à tes questions ?

    • C’est nickel ! Merci de ta réactivité :)

    • Ahhh si tout était simple :) Petit soucis pour le switch de langue.

      Côté BO
      Chaque rubrique française à la racine est liée à une rubrique en anglais (aussi à la racine). Dans les rubriques on peut switcher de la rubrique fr/en sans soucis. Mais !!! Il y a un mais, ces rubriques ont bien entendu un id différent.

      Côté FO
      Quand je demande depuis ma rubrique 1 de passer à la rubrique anglaise (avec le petit inclure menu_langues), a lieu de passer à la bonne rubrique anglaise, je reste sur ma rubrique en français. En effet, l’adresse m’indique spip.php ?rubrique1&lang=en alors je migre pas au bon endroit.

      Infos en plus : j’ai rajouté lang à mes fichiers rubrique.html...

      Où cela pêche t’il ?

    • « Côté BO
      Chaque rubrique française à la racine est liée à une rubrique en anglais (aussi à la racine). Dans les rubriques on peut switcher de la rubrique fr/en sans soucis. Mais !!! Il y a un mais, ces rubriques ont bien entendu un id différent. »

      C’est normal, chaque traduction d’une rubrique est une nouvelle rubrique

      « Côté FO
      Quand je demande depuis ma rubrique 1 de passer à la rubrique anglaise (avec le petit inclure menu_langues), a lieu de passer à la bonne rubrique anglaise, je reste sur ma rubrique en français. En effet, l’adresse m’indique spip.php ?rubrique1&lang=en alors je migre pas au bon endroit. »

      Est-ce que tu as bien passé l’id_rubrique dans l’inclure ? Si tu as pris les squelettes du plugin, c’est le cas, sinon vérifié bien que <INCLURE{fond=inclure/header,id_rubrique} ></INCLURE> passe bien la variable id_rubrique dans le squelette rubrique.html

    • Seulement chaque rubrique à la racine a un squelette différent, je suis obligée d’utiliser le rubrique=1.html par exemple afin de customise ma page.
      Je me suis peut-être aussi trop précipitée. Le plug utilise sûrement en FO le système natif de SPIP pour le contrôle des langues.

    • Cela ne devrait pas avoir d’influence, maisas-tu vérifié ce que j’ai mis plus haut ?

      Généralement je déconseille d’utiliser des squelettes distincts par rubrique ou articles. Ça devient très complexe à gérér suivant le cas.

      Je préfère gérér la plupart des adaptations via des inclure appelé selon le contexte, en utilisant la Balise #ID_TRAD
      [(#ID_TRAD|=={1}|oui)<INCLURE{fond=inc/noisette}></INCLURE>]

      Ainsi tu peux gérer la plupart de tes adaptations de puis un seul squelette rubrique.html, pareille pour les articles.

      Le système de traduction dans le FO et BO est le même, base dur l’id_trad de la rubrique et la variable lang

    • Oui c’est exact, ça marche à présent en ayant copié-collé le code du plug :) Par contre je n’ai pas trouvé la subtilité qui fait tout marcher :)

      Par contre le site que je réalise à titre personnel, est une vraie usine à gaz bourrée d’inclure :D Un p’tit challenge pour moi. D’abord je m’occupe de toute la partie technique, puis le squelette HTML5 puis enfin le CSS3 et de l’animation. Quand tout sera posé et que je serai satisfaite du résultat je pourrai le montrer dans l’herbier !

      Il n’y a en fait que 3 grosses rubriques principales avec un squelette propre.

    • le menu langue produit ces liens en cherchant d’abord s’il on est en présence d’un article(présence de l’id_article) si oui il produit les liens des articles traduites

      sinon il teste si c’est une rubrique (présence de l’id_rubrique) si oui il produit les liens des rubriques traduites

      sinon il crée les liens de traduction en cherchant les langues du site et en rajoutant la variable lang à l’url actuel [(SELF|parametre_url{lang,#ENV{lang}})]

      Ce qui était ton cas, j’imagine

    Répondre à ce message

  • 1

    Est-ce sarka-spip compatible ? car ce sera une bonne chose.
    William

    • Je ne sais pas comment fonctionne Sarkaspip et je n’ai rien fait de spécifique pour ce squelette. Si quelqu’un qui s’y connait a le temps et l’envie ça pourrait se regarder. Moi je n’aurais pas le temps maintenant, désolé

      RAiner

    Répondre à ce message

  • 1

    Bonjour,

    Où est-il possible de voir des exemples de réalisation sous Spip 3.0 ?
    Ça serait très pratique pour se faire une idée pour ceux qui comme moi débutent.

    Merci par avance.

    Répondre à ce message

  • 2

    Pour info : le fichier menu_langues.html renvoie un HTML mal balisé : tags non fermés, etc.

    • Je ne constate pas d’erreur html lié à ce fichier, tu peux détailler les erreurs ?

    • J’avais des balises non fermées, un mélange de A et SPAN qui faisaient planté l’affichage de ma page. Au final j’ai fait mon fichier custom comme tu le proposes c’était bcp mieux ;-)

    Répondre à ce message

  • 1

    On le telechrge comment ? je ne vois pas le lien de telechargement... Merci.

    Répondre à ce message

  • 4

    Bonjour,

    Est ce que c’est Z-compatible ?

    nat33

    • Oui et non, les modifications des menus de langue et rubrique sans sans doute possible d’intégrer facilement en adaptant les squelettes z, il faut donc pour le moment adapter ces squelettes, je ferai bientôt une adaptation pour z qui n’aurai plus besoin de faire ces manipulations.

    • je viens d’adapter le plugin pour le rendre compatible avec z, comme je ne connais pas bien z, dis moi si il y a des incohérences

    • Bonjour,

      Je viens de relever une anomalie en l’état le plugin empêche la prise en compte des compositions sur la rubrique.

      J’ai repris le fichier rubrique.html de z et la composition est prise en compte normalement.

      l’anomalie est observée avec z + composition en spip 2.1

      A toutes fins utiles, je remarque que dans le fichier rubrique.html du plugin l’inclure n’est pas positionné dans une boucle rubrique, comme c’est le cas dans celui de Z.

      En tout cas merci pour ce plugin.

      Nat33

    • Bonjour,

      je viens de corriger les fichiers rubrique.html et article.html afin de mettre des boucles autour des noisettes, ce qui évidemment était nécessaire, merci. Cependant je ne sais pas si cela arrange ton problème

      Rainer

    Répondre à ce message

  • Merci Rainer,

    Je teste et je reviens vers toi

    nat33

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom