SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

278 Plugins, 195 contribs sur SPIP-Zone, 95 visiteurs en ce moment

Accueil > Squelettes > Squelettes éditoriaux > maiis.net > Squelette SPIP [maiis.net] multilingue v0.5

Squelette SPIP [maiis.net] multilingue v0.5

19 décembre 2004 – par maiis

Toutes les versions de cet article : [English] [français] [français]

2 votes

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Des squelettes simples et faciles à modifier pour mettre en place un site multilingue avec SPIP. Son auteur ne peut en assurer le suivi ni corriger les quelques bugs restants

Des squelettes sous license GPL afin de mettre en place un site multilingue. Ces squelettes se veulent simples et faciles à modifier. L’esthétique est inspirée du site de conseil en webdesign Alistapart.

JPEG - 24.1 ko

-  Nom du Squelette : Squelette SPIP [maiis.net] multilingue
-  Version du squelette : 0.5
-  Auteur : Pierre Basson aka maiis
-  Licence : GPL
-  Compatibilite SPIP : compatible SPIP > 1.7
-  Site exemple : www.maiis.net anglais & français
-  Article d’origine : www.maiis.net

TABLE DES MATIERES

-  Spécificités
-  Installation
-  Compatibilité
-  Arborescence de l'archive
-  Inclusions
-  Squelettes
-  mes_fonctions.php3
-  Personnalisation
-  Détails de inc_traductions.html et sommaire.html
-  A faire - Questions diverses

SPECIFICITES

-  code XHTML
-  feuilles de style CSS 2 (@media screen & print)
-  un secteur par langue
-  un sommaire dans la langue préférée du navigateur (contribution de Laurent Laville)
-  un fil RSS par langue (détection automatique par firefox et safari 2
-  un forum dans chaque langue (contribution de BoOz)
-  une recherche dans la langue en cours
-  simulation des « liens de traduction » des rubriques (utilisation des mots-clés)
-  fichiers de langue (français et anglais)
-  affichage des résultats de recherche à la sauce google (contribution Nicolas Steinmetz et pdepaepe)
-  smileys version II (contribution de BoOz) modifiés de manière à les inclure dans le message en cliquant sur les images
-  inclusion massive de squelette (facilitant les mises à jour)
-  accord au pluriel

Remarque : les brèves et la syndication de sites ne sont pas utilisées.

INSTALLATION

1. Décompressez l’archive, vous trouvez dans le répertoire squelette multilingue v0.5 le répertoire maiis/ et le fichier mes_fonctions.php3.

2. Déplacez le répertoire maiis/ à la racine du site SPIP et copiez le contenu de mes_fonctions.php3 dans mes_fonctions.php3 si vous ne voulez pas écraser vos fonctions. Les squelettes sont tous rangés dans le répertoire maiis/ et la variable $GLOBALS[ 'dossier_squelettes' ] = "maiis" ; dans mes_fonctions.php3 indique à SPIP où regarder pour les squelettes, c’est moins invasif et vous pouvez revenir à vos squelettes en supprimant cette dernière ligne.

3. Configurez votre site de manière à activer les liens de traduction. Ma configuration est la suivante :

ActionRéglage
Activer le menu de langue sur les articles ? Non
Activer le menu de langue sur les rubriques ? Oui
... seulement pour les rubriques situées à la racine ? Oui
Gérer les liens de traduction ? Oui

4. J’ai opté pour une architecture par secteur (rubrique de premier niveau) à savoir : à chaque rubrique de la racine du site correspond une langue modifiable par l’administrateur, qui concerne toutes ses sous-rubriques ainsi que les articles. Dans l’espace privée, créez des secteurs en leur attribuant chacun une langue, un logo normal et un logo de survol (les petits drapeaux). Pour simuler une traduction de rubrique, c’est-à-dire rediriger l’utilisateur vers la rubrique correspondante dans la nouvelle langue sélectionnée : créez le groupe de mots-clés structure_rubriques. Maintenant vous devez recréer autant de mots-clés dans ce groupe que vous avez de rubriques communes dans chaque secteur. Pour mettre en place un forum, créez le groupe de mots clés structure_article et associez-le à un article dans chaque secteur.

JPEG - 46.8 ko

ex : pour la page d’accueil créez un mot-clé « accueil » et associez le à vos secteurs, si vous avez une rubrique SPIP dans chacun de vos secteur, créez le mot-clé « spip » et associez-le à la rubrique SPIP dans chaque secteur.

JPEG - 23.5 ko
JPEG - 29.5 ko
JPEG - 21.2 ko
JPEG - 18.8 ko

Quand l’utilisateur affiche le contenu d’une rubrique (ie. rubrique.php3 ?id_rubrique=x) il est redirigé vers la rubrique correspondante s’il clique sur le drapeau d’une autre langue. Sinon il arrive sur la page d’accueil du site dans la langue sélectionnée.

COMPATIBILITE

Testé ?PlateformeNavigateurVersion
oui Windows Internet Explorer 5.5, 6
oui Windows Mozilla 1.6
oui MacosX Safari 1.2.3
oui MacosX Mozilla 1.6
oui MacosX Internet Explorer 5.2
non MacosX Opera
non Windows Opera
non Linux Mozilla
non Linux Konqueror

Merci de me faire savoir si les squelettes s’affichent correctement sur les plateformes/navigateurs non testés.

ARBORESCENCE DE L’ARCHIVE

maiis/
     images/
            smileys/   // contient les smileys
            logo.gif   // le logo du site
            icon.gif   // l'icône de raccourci
            en_off.png   // drapeau anglais desactivé
            en_on.png   // drapeau anglais activé
            fr_off.png   // drapeau francais desactivé
            fr_on.png   // drapeau francais activé
     inclusions/   // contient les inclusions
            inc_decompte.html
            inc_decompte.php3
            inc_derniers_commentaires.html
            inc_derniers_commentaires.php3
            inc_entete.html
            inc_entete.php3
            inc_head.html
            inc_head.php3
            inc_meme_rubrique.html
            inc_meme_rubrique.php3
            inc_menu.html
            inc_menu.php3
            inc_pied_de_page.html
            inc_pied_de_page.php3
            inc_recherche.html
            inc_recherche.php3
            inc_rubriques.html
            inc_rubriques.php3
            inc_smileys.html
            inc_smileys.php3
            inc_traductions.html
            inc_traductions.php3
     lang/   // contient les fichiers de langue locaux
            local_en.php3   // la version anglaise
            local_fr.php3   // la version française
     styles/   // contient les feuilles de style
            impression.css   // pour l'impression
            style.css   // pour l'écran
     article.html
     auteur.html
     forum.html
     login.html
     plan.html
     recherche.html
     resume.html
     rubrique.html
     sommaire.html
mes_fonctions.php3 // contient les filtres perso

INCLUSIONS

Tous les fichiers inclus sont placés dans le répertoire maiis/inclusions

fichier appelérôle
inc_head.html gère les balise META, les liens vers les feuilles de styles, le lien vers la syndication du site dans la langue en cours et l’icône pour les favoris
inc_entete.html affiche le nom du site sous SPIP ainsi que la hiérarchie en cours (en omettant le secteur)
inc_menu.html affiche le menu horizontal
inc_traductions.html permet :
-  la redirection vers la traduction d’un article
-  la redirection vers la rubrique correspondante dans une des autres langues (il faut configurer les mot-clés à priori)

tout en mémorisant la langue sélectionnée dans le cookie pour les futures connexions

inc_rubriques.html génère l’arborescence de chaque secteur et affiche le nombre d’articles contenus dans chaque rubrique
inc_recherche.html affiche le formulaire de recherche permettant une recherche dans la langue en cours
inc_derniers_commentaires.html affiche les 7 derniers commentaires pour la langue en cours
inc_decompte.html affiche le nombre de réactions d’un article
inc_meme_rubrique.html affiche les articles contenus dans la même rubrique et grise l’article en cours
inc_smileys.html génère les smileys à partir du contenu du répertoire maiis/images/smileys et permet d’inclure dans le message le raccourci en cliquant sur l’image (IE et mozilla seulement, j’utilise les fonctions de la barre spip)
inc_pied_de_page.html affiche le copyright et l’icône XML pour la syndication dans la langue en cours

SQUELETTES

fichierrôle
sommaire.html redirige l’utilisateur vers la langue préférée du navigateur ou la langue sauvegardée dans le cookie et sert de passage obligé pour le changement de langue en cours de route
rubrique.html affiche la page d’accueil en cours lorsque id_rubrique est un secteur et le contenu d’une rubrique sinon
article.html affiche un article, ou bien le forum dans le cas ou cet article est lié au mot-clé forum (il faut configurer les mot-clés à priori)
auteur.html permet de lire la biographie de l’auteur, de lister les articles qu’il a publié et de le contacter
forum.html permet de poster un message en réponse à un article ou à un commentaire
login.html est la page d’identification pour l’accès à l’espace privé
plan.html liste les rubriques et les articles du secteur en cours
recherche.html affiche les résultats d’une recherche
resume.html liste tous les articles du secteur par ordre chronologique inverse (10 par page)

MES_FONCTIONS.PHP3

fonctionrôle
$GLOBALS[ ’dossier_squelettes’ ] indique dans quel répertoire SPIP doit regarder pour les squelettes
$GLOBALS[ ’puce’ ] personalise les puces générées par les raccourcis typographique SPIP
smileys() une contribution de BoOz, qui permet d’ajouter des smileys à un texte [(#TEXTE/smileys)]
gerer_menu_langues() pour être sûr que l’utilisateur est redirigé vers la langue préférée de son navigateur
google_like() coupe un texte autour d’un mot recherché, cf. la contribution de Nicolas Steinmetz et pdepaepe

PERSONNALISATION

-  le bandeau : c’est dans la feuille de style maiis/styles/styles.css que vous pouvez changer le chemin du bandeau logo.gif.

#entete {
        background: #fff url(../images/logo.gif) no-repeat;
        /*                       ICI                     */
        border: 0;
        margin: 0;
        height: 65px;
        padding: 0 0 0 10px;
        text-align: left;
        line-height: 65px;
        font-size: 16px;
        font-weight: bold;
        text-decoration: none;
        letter-spacing: 1px;
        color: #000;
}

-  l’icône de raccourci, sur mon site ce sont des grains de maïs, dans l’archive c’est un smiley : c’est dans maiis/inclusions/inc_head.html que vous pouvez modifier le lien vers icon.gif.

<!-- Icone du site pour les favoris -->
<link rel="shortcut icon" type="image/gif" href="maiis/images/icon.gif" />

-  le positionnement des éléments, les marges, les couleurs, la police etc... : c’est dans la feuille de style maiis/styles/styles.css que ça se passe. Une page est toujours composée des éléments suivants :

 +--body---------------------------------------------+
 |                                                   |
 |                                                   |
 |     +---#page-------------------------------+     |
 |     | +---#entete-------------------------+ |     |
 |     | |                                   | |     |
 |     | |                                   | |     |
 |     | +-----------------------------------+ |     |
 |     | +---#menu---------------------------+ |     |
 |     | |                                   | |     |
 |     | +-----------------------------------+ |     |
 |     | +---#contenu_principal--++-#barre_--+ |     |
 |     | |                       || laterale | |     |
 |     | |                       ||          | |     |
 |     | |                       ||          | |     |
 |     | |                       ||          | |     |
 |     | +-----------------------++----------+ |     |
 |     | +---#pied_de_page-------------------+ |     |
 |     | |                                   | |     |
 |     | +-----------------------------------+ |     |
 |     +---------------------------------------+     |
 |                                                   |
 |                                                   |
 +---------------------------------------------------+

pour le reste il va falloir apprendre les feuilles de styles :langue ou regarder les commentaires de cette feuille de styles.

DETAILS DE INC_TRADUCTIONS.HTML ET SOMMAIRE.HTML

C’est le plus gros du travail : donner l’impression à l’utilisateur que tout est traduit à la volée héhé.

1. sommaire.html :

  • le premier test récupère la langue préférée du navigateur ou celle présente dans le cookie SPIP si ce n’est pas la première connexion.

if ($HTTP_SERVER_VARS['REQUEST_METHOD'] == 'GET') {...

D’ailleurs je ne sais pas pourquoi depuis la version 1.7.2 ces lignes

//
// Regler la langue courante selon les infos envoyees par le brouteur
//
function regler_langue_navigateur() {
        global $HTTP_SERVER_VARS, $HTTP_COOKIE_VARS;

        /* CES LIGNES-CI
        if ($cookie_lang = $HTTP_COOKIE_VARS['spip_lang']) {
                if (changer_langue($cookie_lang)) return $cookie_lang;
        }
        */

        $accept_langs = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']);
        if (is_array($accept_langs)) {
                while(list(, $s) = each($accept_langs)) {
                        if (eregi('^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$', trim($s), $r)) {
                                $lang = strtolower($r[1]);
                                if (changer_langue($lang)) return $lang;
                        }
                }
        }
        return false;
}

ont été décommentées dans la fonction regler_langue_navigateur() du fichier ecrire/inc_lang.php3 car SPIP ne va plus regarder les préférences de l’utilisateur dans le cookie SPIP. Il faut sûrement que je regarde sur spip-dev mais comme j’ai la flemme je l’ai réinsérée :lol

  • le deuxième test sert à récupérer les données du formulaire envoyées par inc_traductions.html et à rediriger vers la traduction une fois le changement de langue pris en compte. Je me suis inspiré de #MENU_LANG pour ça, regardez le code généré par cette balise.

2. inc_traductions.html : je ne transmets pas seulement la langue destination via les formulaires « invisibles » que l’utilisateur valide en cliquant sur un drapeau. J’indique aussi s’il s’agit d’une rubrique que l’on veut traduire ou un article dont on veut une traduction. C’est le rôle du champ caché :

<?php
        $formulaire_type         = "<input type=\"hidden\" name=\"type\" value=\"article\" />" ;
?>

pour un article et qui prend rubrique comme valeur si on a cliqué sur un drapeau alors qu’on naviguait dans une rubrique (ie. rubrique.php3 ?id_rubrique=x). C’est dans ce fichier que l’ID destination est calculée et transmise à maiis/sommaire.html.

ex : si vous avez 3 secteurs, et une traduction dans chacune des langues pour un article, vous aurez donc 2 formulaires avec des champs cachés, que l’utilisateur validera en cliquant sur un des drapeaux (qui ne sont autres que les logos normal et survol des secteurs).

A FAIRE - QUESTIONS DIVERSES

-  j’ai ajouté depuis la version précédente un forum dans les squelettes, c’est un « petit » forum qui peut devenir inergonomique s’il y a beaucoup de messages. Je pense devoir le couper à la manière des forums du site spip.net
-  j’ai trouvé les drapeaux français et anglais sur un site lié à SPIP (je ne le retrouve plus) et j’aimerai mettre la main sur d’autres, je pense que ces drapeaux viennent du bureau Gnome mais je n’en suis pas sûr.
-  j’ai modifié la contribution de BoOz pour qu’un clic sur un smileys insert le raccourci dans le champ texte. pour info c’est dans maiis/forum.html mais ça ne marche pas pour tous les navigateurs. Il y a du javascript qui se perd... d’ailleurs ça serait bien de pouvoir afficher les smileys lors de la prévisualisation d’un message, existe-t’il un filtre genre [(#FORMULAIRE_FORUM|smileys)] ?
-  comment appliquer ses filtres pour les images insérées directement dans le texte (ie. <embxxx|center>) ? j’aimerais bien être le maître de toute la mise en page :clindoeil
-  peut’on récupérer les images incluses dans un article (re ie. <embxxx|ssss>) dans l’ordre du texte de l’article dans une <BOUCLE_x(DOCUMENTS)> ? j’aimerais faire un portfolio.
-  je n’utilise plus les brèves car on ne peut pas les traduire et on ne sait pas qui les écrits, néanmoins j’ai derrière la tête de les remettre en place afin de changer de feuille de style et du coup de bandeau à certains moment de l’année, une feuille de style pour noël ? après tout on a bien un champ URL pour une brève.
-  depuis que j’ai testé les squelettes Nono et Epona je me demande si je ne vais pas créer un fichier de configuration pour personnaliser le site sans toucher trop aux squelettes. ce sera sûrement pour la prochaine version weblog.
-  tronquer le texte dans l’entête pour éviter qu’il ne déborde sur le contenu principal.

Retour en haut de la page

Tout afficher

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Mailsubscribers

    16 janvier 2013 – 110 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes de (...)

  • Newsletters

    16 janvier 2013 – 225 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, d’un (...)

  • Champs Extras 3

    16 janvier 2012 – 302 commentaires

    Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP. Screencast Vous n’aimez pas (...)

  • Groupes de mots clés arborescents

    26 juillet 2012 – 14 commentaires

    Ce plugin permet de gérer une arborescence de groupes de mots clés. Les sous groupes de mots héritent des propriétés du groupe racine (sur quoi peut on le lier ? peut il y avoir un ou plusieurs mots). Les formulaires de liens qui permettent de lier (...)

  • Rechercher remplacer

    17 octobre 2011 – commentaires

    Ce plugin permet de simplement rechercher une chaine dans les champs textes de la base de donnée, et éventuellement de la remplacer par une autre chaine. Cet outil peut servir tant à l’administrateur d’un site, qu’à son rédacteur en chef. (...)