Squelette SPIP [maiis.net] multilingue v0.5

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.

-  Nom du Squelette : Squelette SPIP [maiis.net] multilingue
-  Version du squelette : 0.5
-  Licence : GPL
-  Compatibilite SPIP : compatible SPIP > 1.7

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.

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.

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.

Discussion

Aucune discussion

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