Carnet Wiki

MenuLangSurClic

Version 8 — May 2008 erational

Changer de langue sur un clic sans passer par le menu_lang

dans le contexte $forcer_lang=true Le #MENU_LANG permet d’afficher un selecteur de langue sous forme de menu select (dropmenu) qui est en fait un formulaire qui permet de poser un cookie lang.

cette contribution permet d’avoir la même fonctionnalité sur un simple lien hypertexte grâce à jquery

Mise en place squelette

bonjour les crayons !
je suis le hacker fou
sans être identifié, je modifie l’article comme je veux...

  • on affiche #MENU_LANG pour avoir le formulaire (on le masque dynamiquement
  • on crée des liens hypertextes en indiquant le suffixe de langue dans l’attribut rel et on leur applique la classe cookie_lang

syntaxe

<a href="lien_pour_non_js" rel="code_lang" class="cookie_lang">cliquer pour changer de langue</a>

exemple

#MENU_LANG
<ul id="nav-lang">
 <li><a href="[(#URL_PAGE{sommaire}|parametre_url{'lang','pt'})]" rel="pt" class="cookie_lang [(#LANG|=={pt}|?{'on',''})]">Português</a></li>
 <li><a href="[(#URL_PAGE{sommaire}|parametre_url{'lang','en'})]" rel="en" class="cookie_lang [(#LANG|=={en}|?{'on',''})]">English</a></li>
 <li><a href="[(#URL_PAGE{sommaire}|parametre_url{'lang','fr'})]" rel="fr" class="cookie_lang [(#LANG|=={fr}|?{'on',''})]">Français</a></li>
</ul>

et on appelle une petite fonction javascript jquery non obstructif

// menulang sur clic  
// author : erational <http://www.erational.org>
$(document).ready(function(){
    $(".formulaire_menu_lang").hide();     // on cache le menu_lang
    
    $(".cookie_lang").click( function() {  // sur les liens qui possedent la classe cookie_lang, on pose le cookie de leur attribut rel.
        var lang = $(this).attr("rel");
        $(".formulaire_menu_lang form option").removeAttr("selected");
        $(".formulaire_menu_lang form option[@value='"+lang+"']").attr("selected","selected");
        $(".formulaire_menu_lang form").submit();
        return false;
    });
        
});

-  Erational / mai 2008 / sur spip 192d et $forcer_lang=true