SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Multilinguisme > Navigation multilingue > Formulaire menu_lang plat

Formulaire menu_lang plat sans URL sur la langue sélectionnée

mercredi 7 mars 2007, par vianatalia. Dernier ajout lundi 14 avril 2008


Une variation sur le choix des langues et de l’aspect de l’URL engendrée

Dans un site multilingue, #MENU_LANG permet aux visiteurs de passer d’une langue à l’autre. Pour cela, il dépose un cookie sur l’ordinateur du visiteur où il indique en quelle langue naviguer. Cette contrib agit exactement pareil, mais n’affiche pas le choix des langues de la même manière.


Il s’agit d’afficher #MENU_LANG mais :
- une langue à côté de l’autre
- sans URL pour la langue dans laquelle on navigue

Installation

Configuration site

Vous avez dans un premier temps configuré, dans la partie privée de SPIP (configuration : gestion des langues > multilinguisme), toutes les langues dans lesquelles sera traduit votre site, en cochant / décochant celles-ci dans la longue liste.

Préparation de « mes_fonctions.php »

Si vous n’avez pas encore créé le fichier mes_fonctions.php, créez un fichier et nommez-le mes_fonctions.php dans votre répertoire /squelettes. Collez le code suivant dans un premier temps, en veillant bien à ne pas avoir de caractères (espaces, retour de chariot…) ni avant, ni après :

Puis, entre les deux balises ci-dessus, copiez/collez dans ce fichier la fonction qui suit (fonction mise à jour le 30/11/07) :

Pour afficher les langues en deux lettres (EN - FR) :

Pour afficher les langues en entier (English - Français) :

Utilisation

Squelettes

Dans vos squelettes, appelez le menu avec la balise #CONFIG{langues_utilisees} suivie du filtre url_lang :

[<div class="menu_langues">(#CONFIG{langues_utilisees}|url_lang)</div>]

Feuilles de styles

Dans vos CSS, vous pouvez personnaliser la balise avec la classe « .menu_langues » et « .languencours »

Exemple

Exemple de résultat visible ici.


Répondre à cet article

  • Menu plat - compatibilité 1.9.3

    9 mai 2008 11:22, par Rainer

    Bonjour,

    Je viens d’essayer ce menu avec un spip 1.9.3 dev [11578] et chaque fois que je clique sur le lien je suis renvoié à l’espace interne.

    Comment faire pour faire cette contrib compatible avec 1.9.3

    Merci Rainer

    Répondre à ce message

    Retour au début des forums

  • Bonjour,

    J’ai utilisé ce menu de mon site. Il s’affiche correctement Il se trouve que le lien de traduction se retrouve "fixer" : je m’explique :
    - Je vide le cache ds l’interface admin
    - je vais sur le site... et navigue... je demande un changement de langue pour l’article X : ça fonctionne
    - si je continue à naviguer et redemande une traduction d’un autre article... le lien me renvoie toujours sur la traduction de l’article X, et cela même si je me connecte avec une autre machine. ... ds l’urgence je l’ai fait sur la homepage... mais c’est pas très pratique.

    Avez-vous une idée ?

    Merci de votre collaboration

    Vin.

    Répondre à ce message

    • Pb dû au cache ? 5 mai 2008 22:39, par vianatalia

      J’ai remarqué récemment un dysfonctionnement mais apparemment pas le même : je suis sur la page accueil en EN. Je vais à la page recherche. Je change la langue : FR. Je navigue vers des pages que je n’ai pas encore visité : tout va bien. Je reviens à la page accueil, elle s’affiche en EN.

      Dans les deux cas je crois que c’est lié au cache de SPIP. Si jamais je mets le cache à 0 dans le squelette, le problème disparaît. Non ?

      Répondre à ce message

      • Pb dû au cache ? 6 mai 2008 15:00

        Bonjour,

        Tout d’abord merci de votre réponse. La piste semble plausible. J’ai fait l’essai en rajoutant : #CACHE{0} au début des squelettes : sommaire, rubrique et article.html Résultat : aucun changement notoire malheureusement ! Le changement de langue s’effectue toujours correctement mais cela ne renvoie pas sur la bonne page.

        Cela fonctionne si, dans une page je clic sur le bouton "Recalculer la page" : Là le lien se fait parfaitement.

        Mais après : tous les changement de langue ramène à cette dernière traduction : comme si le numéro de l’article ou de la rubrique étais "scotché" une 1ère fois dans le lien langue.

        Je continue à chercher mais je ne suis pas très à l’aise en php.

        Salutations

        Vin.

        Répondre à ce message

    Retour au début des forums

  • menu_lang plat une langue par secteur ?

    17 décembre 2007 15:53, par Fourmy

    Bonjour, j’essaie de mettre en place un site multilingue fr-en-es. J’ai du mal à comprendre et ma logique actuelle serait de traduire les rubriques. par exemple rubrique 1 présentation [en français] puis une traduction de la rubrique en espagnol et une autre traduction pour l’affichage de la rubrique 1 en anglais Seulement acuellement je n’ai pas la possibilité de traduire les rubriques. Pourtant j’ai bien configuré la gestion des langues sur "Activer le menu de langue sur les rubriques"

    ou alors une langue par rubrique ?

    merci de vos éclaircissements.

    Fourmy

    Répondre à ce message

    • menu_lang plat une langue par secteur ? 19 décembre 2007 23:20, par Yffic

      Tu peux d’abord lire ca si tu ne l’a pas encore fait :

      http://www.spip.net/fr_rubrique467.html

      Apres, y’a un super plugin basé sur l’utilisation des blocs multi. Qui permet donc de garder une seule arborescence : extension_multilingue_pour_BTV2

      Répondre à ce message

      • menu_lang plat une langue par secteur ? 20 décembre 2007 12:19, par Fourmy

        Bonjour et merci,

        J’ai lu un peu tout ce qui existe sur le sujet mais suis parfois un peu flippé de lire des articles plus adaptés à la version 9.2 de spip. Quoi qu’il en soit j’ai effectivement mis en place une arborescence via les blocs multi ( donc sans duplication de l’arbo par secteur langue) ensuite je procede par traduction d’articles. ça marche niquel !

        Pour le plugin dont tu me parles. Il permettrait donc aux utilisateurs du back office de creer des rubriques et sous rubriques sans avoir a saisir les balises multi et [es][fr][en] ? j’ai juste ?

        sais tu s’il rentre en conflit avec fckeditor ?

        Voilà j’ai des milliers d’autres questions parceque je démarre juste mais c’est plutot super bien foutu spip !.

        Merci de ton aide

        Fourmy

        [ j’ai biensur répondu à l’alerte mail (ce qu’il ne fallait pas faire !) avant de capter le lien vers le forum- Désolé]

        Répondre à ce message

        • menu_lang plat une langue par secteur ? 20 décembre 2007 13:32, par yffic

          Pour le plugin dont tu me parles. Il permettrait donc aux utilisateurs du back office de creer des rubriques et sous rubriques sans avoir a saisir les balises multi et [es][fr][en] ? j’ai juste ?

          Tout a fait

          Mais pour le conflit avec fckeditor, je ne sais pas... Essaye

          Répondre à ce message

    Retour au début des forums

  • Dans un site (SPIP 1.9.2c [10268]) configuré en multilingue, avec un menu de langue activé sur les articles et les rubriques, tous les titres : du site, des rubriques et des articles sont bien gérés au changement de langue avec les balises (utilisation du plugin : extension_multilingue_pour_BTV2). L’affichage des bons textes des différentes traductions se fait bien aussi dans toutes les pages. L’option : $forcer_lang = true ; est présente dans mes_options.php (dossier ecrire) et filtre lang est utilisé sur les boucles. Pourtant ce script présent dans mes_fonction.php (dossier squelettes) et bien appelé dans les squelettes ne donne RIEN. J’ai sans doute oublié quelque chose, mais quoi ? Antoine

    Répondre à ce message

    • Une source d’erreur certaine : le fichier mes_options.php se range désormais dans config/ avec la version 1.9.2. Pour plus de détails : http://www.spip.net/fr_article3567.html, paragraphe sur la réorganisation des répertoires !

      Répondre à ce message

      • Tout petit détail complémentaire : vérifie que tu as bien un fichier mes_fonctions.php dans squelettes/ et pas mes_fonction.php comme écrit dans ton message ;-)

        Répondre à ce message

        • Cela ne donne toujours rien (même avec les bons fichiers "options.." et "fonctions.." au bon emplacement). Sur la page "config_multilang" le "Français" (lien vert) est affiché mais pas le lien "Anglais" alors que cette langue est cochée plus bas dans la liste. Il n’y a pas de traduction d’articles en anglais, mais les titres et les textes sont présents dans les articles en français et en anglais avec les balises , et le changement de langue fonctionne bien dans le site public et privé avec la balise #MENU_LANG. Cependant, quand j’utilise un menu PLAT pour le choix entre l’anglais et le français, toutes les formules ne donnent que le français, car c’est la seule langue reconnue comme étant utilisée dans le site, pourquoi ?

          Répondre à ce message

          • Sur la page « config_multilang » le « Français » (lien vert) est affiché mais pas le lien « Anglais » alors que cette langue est cochée plus bas dans la liste.

            Le français apparaît ainsi car c’est la langue principale du site. Les langues de traduction sont simplement cochées dans la liste.

            Cependant, quand j’utilise un menu PLAT pour le choix entre l’anglais et le français, toutes les formules ne donnent que le français.

            Nous en sommes au même point : j’obtiens exactement le même comportement sur mon site. J’ai testé un double affichage (#MENU_LANG et menu_lang plat) dans ma page sommaire. Résultat : le français est affiché seul à plat alors que le menu local me propose bien les deux langues.

            Répondre à ce message

            • URL ? 28 novembre 2007 22:08, par natalia

              Bonjour, merci à Michael d’avoir "sonné" ma boîte mail pour que je vienne faire un tour ici :-)

              Avant toute chose j’ai besoin de l’URL du site qui pose problème ? Et de celle du plugin "multilingue" que je ne connais pas et que je soupçonne un peu.

              Voilà une URL où ça marche avec Spip 1.9.2c : http://www.new-school-of-athens.org/

              Répondre à ce message

              • URL ? site local pour l’instant ! 29 novembre 2007 05:35, par michael

                Merci de ton retour dans le débat Natalia !

                Voici la méthode de contournement trouvée ce matin. Il suffit de remplacer la déclaration de la variable $tab_langues

                $tab_langues = explode(",",$langues);

                par

                $tab_langues = explode(',', $GLOBALS['meta']['langues_multilingue']);

                Avantage de la méthode : elle fonctionne aussi au niveau des articles et des brèves avec l’appel proposé dans la contrib :

                [<div class="menu_langues">(#CONFIG{langues_utilisees}|url_lang)</div>]

                Comme je en suis pas un codeur, pas même un patcheur, je m’inquiète d’éventuelles conséquences imprévues. Une idée sur le sujet ? Est-ce “safe” ?

                Répondre à ce message

                • Bravo cette modification me donne parfaitement satisfaction et j’obtiens enfin un menu de langues plat dans un site multiligue qui n’utilise que la gestion des différentes traductions avec les balise "multi". Gestion très facile avec le plugin "extension_multilingue_pour_BTV2". J’espère aussi que ce code, qui marche apparemment bien, est fiable et sans effet négatif sur le fonctionnement général de Spip. Merci beaucoup Antoine

                  Répondre à ce message

                • merci + contrib à jour 30 novembre 2007 01:17, par natalia

                  Merci beaucoup pour ta contribution Michael, ça marche impec. A priori je trouve ça plutôt safe, on verra à l’usage !

                  J’ai mis à jour la contrib, du coup :-)

                  Répondre à ce message

    Retour au début des forums

  • Et pourquoi pas une solution purement SPIP, sans PHP, ni de fichier mes_fonctions.php ?

    - Une BOUCLE de Menu de langues

    - Exemple d’application

    Répondre à ce message

    Retour au début des forums

  • Intéressant, mais si c’est basé sur les deux premières lettres de la langue, ça ne marche pas pour le néerlandais. En effet, on symbolise cette langue par NL et non NE... Il faudrait plutôt un système basé sur des symboles textes ou images préencodés dans l’interface privée. On pourrait y mettre des lettre, mais aussi des drapeaux,...

    Répondre à ce message

    Retour au début des forums

  • Mise à jour de la contrib en 1.9.2

    16 mars 2007 21:09, par natalia

    Mise à jour de la fonction suite au passage en 1.9.2a :

    Il faut juste remplacer la fonction de l’article par celle-ci dans le fichier mes_fonctions.php

    Répondre à ce message

    • Fonction simplifiée qui devrait marcher sur toutes les versions de spip.... (à confirmer) :

      J’ai ajouté une classe sur la langue en cours, afin de la personnaliser. Remplacez la fonction + ajoutez une classe nommée "languencours" à votre feuille de styles.

      Répondre à ce message

    • Mise à jour de la contrib en 1.9.2 30 juillet 2007 18:24, par cy_altern

      Après test des 2 modifications proposées pour la fonction url_lang() sur un spip version 1.9.3 [9398] utilisant les url_propres, seul le code de la première mise à jour (celle du 16 mars) semble fonctionner.

      Pour compléter, si on veut afficher les langues en entier (English - Français...) cette fonction donne donc :

      Ne pas oublier de paramétrer la variable de personnalisation $forcer_lang à true dans le fichier mes_options.php si on souhaite que l’intégralité de la navigation passe dans la langue souhaitée lors du clic sur un lien de traduction.

      Merci pour cette contrib très pratique !

      Répondre à ce message

    Retour au début des forums

  • C’est sympa comme approche, mais qu’est-ce qu’on fait avec les url_propres ?

    FDM

    Répondre à ce message

    Retour au début des forums

0 | 25



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net