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 :
Action | Ré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é ? | Plateforme | Navigateur | Version |
---|---|---|---|
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
fichier | rô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
fonction | rô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.
Discussions par date d’activité
Une discussion
Pour accéder à l’article, il faut cliquer sur le menu. C’est nouveau, c’est tout beau ;-)
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 :
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.
Suivre les commentaires : |