SPIP-Contrib

SPIP-Contrib

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

273 Plugins, 191 contribs sur SPIP-Zone, 39 visiteurs en ce moment

Accueil du site > Multilinguisme > Archives Multilinguisme > Une page d’accueil dans la bonne langue pour chaque visiteur

Une page d’accueil dans la bonne langue pour chaque visiteur

28 août 2003 – par Nicolas Hoizey – 12 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

1 vote

Avec la généralisation des problématiques de gestion de contenus multi langues, il devient difficile de réussir à proposer aux visiteurs un contenu cohérent (pour eux) et susceptible de les intéresser.

La première chose à faire lorsque l’on dispose d’un contenu en plusieurs langues est tant que possible de proposer à chaque nouveau visiteur la version la plus appropriée.

En général, si je suis un utilisateur français et que j’arrive sur un site qui dispose de plusieurs versions linguistiques, dont une française, je serais heureux qu’on me propose celle-ci par défaut.

La méthode proposée ici s’applique bien sûr dans les grandes lignes à tout type de site, et donc en particulier aux sites gérés avec SPIP.

Un mécanisme éprouvé

Pour présenter la solution que je propose, je m’appuie sur une expérience concrête que je mène depuis des années pour mon site phpHeaven.

PNG - 22.7 ko
phpHeaven en anglais
PNG - 23.5 ko
phpHeaven en français

Voici les quelques règles qui y sont appliquées pour optimiser la satisfaction du visiteur :

  1. Un utilisateur dont le navigateur est configuré avec le français comme langue préférée arrive pour la première fois sur phpHeaven, il arrive directement sur la version française du site.
  2. Un utilisateur dont le navigateur est configuré avec l’anglais comme langue préférée arrive directement sur la version anglaise du site.
  3. Un utilisateur dont le navigateur est configuré avec l’allemand comme langue préférée et l’anglais comme seconde langue arrive directement sur la version anglaise du site.
  4. Un utilisateur qui n’a aucune configuration de langue mais a installé une version française de IE arrive directement sur la version française.
  5. Une fois sur le site, a tout moment, il est possible de passer d’une version à une autre.
  6. Un utilisateur qui autorise les cookies aura par défaut la version qu’il a consulté la dernière fois qu’il est venu, quelle que soit sa configuration de navigateur.

A propos de ce dernier point, en voici la logique : mes browsers sont configurés avec l’anglais comme langue principale et le français comme seconde langue. La plupart des sites multilingues sont anglophones, et les versions traduites qu’ils proposent sont souvent déplorables, donc je préfère la version d’origine. Par contre, sur mon site bilingue phpHeaven, je consulte plutôt la partie francophone, grace à un cookie placé par phpLang.

Surtout ne pas réinventer la roue

En fait, c’est historiquement le système que j’ai développé pour le site phpHeaven, que j’ai ensuite diffusé sous le nom phpLang, puis appliqué dans phpMyChat, et qui a été appliqué par un des développeurs de ce dernier, Loïc Chapeau, dans phpMyAdmin.

Tant d’utilisations qui font que ce tout petit script est largement éprouvé fonctionnellement et techniquement, et n’est donc pas à réinventer.

D’accord, mais comment ça marche ?

Entrons enfin dans le vif du sujet, avec l’adaptation faite pour gérer le contenu bilingue (Français et Anglais) du SPIP de phpHeaven.

Sur phpHeaven, j’ai donc mon script index.php qui fait juste appel à phpLang :

index.php

<?php
require_once 'phpLang.inc.php';
?>

phpLang s’occupe alors de détecter lequel de index.fr.php et index.en.php est le plus approprié pour l’utilisateur, et en fait l’inclusion.

index.en.php redirige en fait vers en.html qui est intercepté par une rewrite rule Apache pour servir finalement secteur.php3?id_rubrique=1, et de même avec la version française :

index.en.php

<?php
header('Location: http://'.$_SERVER['HTTP_HOST'].'/en.html');
?>

httpd.conf ou .htaccess

RewriteRule ^(.*)en.html$ $1secteur.php3?id_rubrique=1 [QSA]
RewriteRule ^(.*)fr.html$ $1secteur.php3?id_rubrique=2 [QSA]

J’ai ainsi un secteur d’identifiant 1 avec les contenus en anglais et un secteur d’identifiant 2 avec les contenus en français.

Il n’y a que très peu de textes d’interface en dehors des contenus d’articles, donc je fais la différence entre anglais et français directement dans les squelettes via du PHP qui teste la valeur de #ID_SECTEUR.

Voici par exemple comment afficher différemment une date selon la langue :

<?php
if (#ID_SECTEUR == 1) {
        echo '[(#DATE|mois)]/[(#DATE|jour)]/[(#DATE|annee)]';
} else {
        echo '[(#DATE|jour)]/[(#DATE|mois)]/[(#DATE|annee)]';
}
?>

OK, ça marche, mais maintenant je voudrais bien avoir de jolis drapeaux pour changer de langue ...

Pour gérer l’affichage des drapeaux de la langue alternative, et potentiellement de plusieurs langues alternatives, de simples boucles suffisent si l’on applique les principes suivants :

-  le code de langue est indiqué dans le descriptif du secteur
-  le nom de la langue est indiqué dans le texte du secteur
-  le drapeau de la langue est mis en logo du secteur

Voici ainsi les boucles à utiliser pour afficher les drapeaux de sélection de langue(s) alternative(s) :

Ces boucles doivent être placées au sein de la boucle principale du squelette, puisqu’elles utilisent l’identifiant du secteur courant pour déterminer la langue courante.

Notez que pour afficher tous les drapeaux, y compris celui de la langue courante, il suffit de supprimer la première boucle dont l’objectif unique est en effet de supprimer cette langue courante.

Retour en haut de la page

Vos commentaires

  • Le 25 février 2009 à 18:37, par joz En réponse à : incompatible ?

    Bonjour,

    ceci est une très vieille contrib, mais le plugin est quand même marqué fonctionnel pour spip2. (Je me suis dis que ça dois être un tout petit plugin tout simple mais tellement indispensable pour des sites multilingus !!) Et il est toujours en test.. il va probablement le rester ?

    Là j’ai un problème de compatibilité avec spip-listes, il y a un erreur sur le sommaire dès que j’active spip-liste :

    Fatal error : Call to undefined function spip_query_db() in /mon_chemin/mon_site_spip/plugins/spip-listes_1_9_3/inc/spiplistes_api_abstract_sql.php(59) : eval()’d code on line 2

    J’ai déjà eu ce même erreur dans d’autres situations, mais je ne me rappelle plus quand exactement (vais faire plus d’attention la prochaine fois) mais en tout cas toujours par rapport au plugin langues_préférés.

    Quelqu’un sais par où chercher le problème ou encore mieux : comment le résoudre ?

    merci d’avance
    joz

    Répondre à ce message

  • Le 16 mars 2004 à 13:11, par DeathMatser9 En réponse à : Moi j’ai un autre problème

    Salut,

    Je veux faire un site où le sommaire affiche des bouts d’articles en français, anglais et arabe. pour le français et l’anglais l’affichage se passe sans problème. Par contre pour l’arabe les textes sont tous alignés à gauche au lieu que ça soit à droite. L’option internationalisation de SPIP m’a permis de résoudre ce problème pour les rubriques et les articles, mais pas pour le sommaire.

    Comment faire :’( ?

    Répondre à ce message

  • Le 3 janvier 2004 à 14:52, par dani En réponse à : Une autre solution

    J’ai fait une autre contrib qui propose une autre solution à la même problématique, en utilisant la nouvelle balise #LANG de la 1.7. Les fonctionnalités ne sont pas exactement les mêmes :
    -  elle est un peu plus générale, car une seule boucle résoud toutes les langues (après, tout est géré dans l’espace privé),
    -  elle ne requiert pas d’avoir accès aux Rewrite rules d’Apache (je ne sais pas si beaucoup d’hébergeurs les autorisent dans le .htaccess)
    -  mais l’utilisation de phpLang dans celle ci-dessus a un avantage fonctionnel indéniable : la « mémoire » du choix de l’utilisatuer avec des cookies.

    Ce serait bien de réfléchir à un mix des deux.

    • Le 12 janvier 2004 à 23:27, par Nicolas Hoizey En réponse à : > Une autre solution

      Je présente ici la solution utilisée sur phpHeaven avec des rewrite rules, mais cela n’est pas du tout nécessaire !

    • Le 13 janvier 2004 à 12:55, par Laurent Laville En réponse à : > Un mixe de vos deux solutions

      Pour toutes celles et ceux qui revaient d’un mixe des deux solutions.

      Venez lire mon article sur la page d’accueil multi-langues

      J’espère que Nicolas ne m’en voudra pas d’avoir repris une grande partie de son article ;-)
      Mais comme je le dis, il faudrait être fou pour réinventer ce que d’autres avant nous ont très bien fait !

    • Le 13 janvier 2004 à 13:03, par Nicolas Hoizey En réponse à : > Un mixe de vos deux solutions


      J’espère que Nicolas ne m’en voudra pas d’avoir repris une grande partie de son article Mais comme je le dis, il faudrait être fou pour réinventer ce que d’autres avant nous ont très bien fait !

      Pas de problème, cela ne me gêne pas puisque tu cites de toute façon mon article.

      Par contre, je pense que ta solution est moins riche que l’utilisation de phpLang telle que je la présente au niveau de la détermination de la langue favorite de l’utilisateur, cf la doc de phpLang.

      Le mieux aurait sans doute été que j’écrive mon article sans la particularité des rewrite rules de phpHeaven, peut-être le ferais-je un jour ...

    Répondre à ce message

  • Le 31 octobre 2003 à 14:46, par Gwendal En réponse à : > Une page d’accueil dans la bonne langue pour chaque visiteur

    à l’aube de l’arrivée de la 1.7 de SPIP qui intègre en natif pas mal de choses concernant le multilinguisme, est-il envisagé de mettre à jour cet article (ou d’en faire un autre) pour préciser comment utiliser ce script avec une version 1.7 ?

    • Le 3 janvier 2004 à 14:36, par dani En réponse à : multi-lingue et la 1.7

      En fait l’arrivée de la 1.7 ne change pas grand chose à la contrib ci-dessus : SPIP 1.7 apporte la notion de langues d’articles et de rubriques (et tout le traitement de la typographie qui va avec, y compris les langues de droite à gauche), les traductions d’articles, le multilingüisme des squelettes, etc.

      Mais, comme d’habitude, le comportement du site est à construire par le webmeste. Donc cette contrib garde toute sa pertinence, sans modif particulière.

    Répondre à ce message

  • Le 29 août 2003 à 18:01, par vincent bray En réponse à : > Une page d’accueil dans la bonne langue pour chaque visiteur

    Bonjour,
    Merci pour ces précisions que personnellement j’attendais avec impatience.
    Où peut-on trouver le fichier phplang.inc.php spécifique à cette approche car d’après mes souvenirs de phplang, il y avait plusieurs possibilités de portage sur le fichier index.
    La source de l’ensemble des éléments serait évidemement un plus par rapport à l’article.
    Merci dorénavant pour cette contribution,
    Vincent

    Répondre à ce message

  • Le 31 août 2003 à 12:53, par ? En réponse à : > Une page d’accueil dans la bonne langue pour chaque visiteur

    est-il prévu une intégration à la prochaine version de spip ?
    et si oui est-ce bien utile dans ce cas d’utiliser cette contrib ?

    si non, pourquoi ? vu la pertinence d’un tel outil ?

    • Le 1er septembre 2003 à 06:46, par Dorian En réponse à : > Une page d’accueil dans la bonne langue pour chaque visiteur

      est-il prévu une intégration à la prochaine version de spip ?
      peut être, il faut poser la question sur la liste spip-dev...

      et si oui est-ce bien utile dans ce cas d’utiliser cette contrib ?
      en attendant si ça peut servir a qqn c’est utile

      si non, pourquoi ? vu la pertinence d’un tel outil ?
      ... spip-contrib ce n’est pas la liste des dévellopeurs...

      mais ce genre de message peut les réveiller ;-)

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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

  • Typographie avancée

    3 mars 2010 – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    « Typographie avancée » active automatiquement un grand nombre d’automatismes destinés à affiner la typographie des textes produits par SPIP. Nécessite PHP 5 au minimum. « Typographie avancée » est l’adaptation, pour SPIP, de la classe « PHP Typography », (...)

  • Plugin Convertisseur

    24 février 2008 – 15 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Convertit différents formats d’articles (wiki, docx, pdf, etc..). en format SPIP (texte avec les raccourcis typographiques SPIP)

  • Thèmes pour l’interface privée

    22 février 2010 – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un sélecteur d’interfaces graphiques pour l’espace privé de SPIP 2.1. Une petite collection d’interfaces est livrée avec le plugin. Ce plugin permet à chaque participant à l’espace privé de sélectionner sa propre interface graphique en fonction de ses (...)

  • Albums

    8 novembre 2011 – 29 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet d’afficher une ou plusieurs galeries d’images au fil du texte, dans les articles et ailleurs. Qui rédige un récit de voyage, par exemple, aimerait pouvoir illustrer son article de plusieurs petites séries de photos, une par jour. Or (...)

  • Navigation AJAX

    31 janvier – 17 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)