Version 14 — Septembre 2009 — 193.51.xx.xx
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
#MENU_LANG
pour avoir le formulaire (on le masque dynamiquementsyntaxe
<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
- Alexandra mai 2008
On peut aussi utiliser la méthode de kent1 en full SPIP et sans js :
[(#URL_ACTION{'converser'}|parametre_url{var_lang,[(#ENV{lang}|=={fr}|?{'en','fr'})]}|parametre_url{redirect,#SELF})]
Ca fait la même chose mais en une seule ligne ;)
- Aurais tu la référence de ce code ? il ne fonctionne pas et il n’est documenté nul part.. s’agit il de #URL_ACTION_AUTEUR. merci
- Alexandra octobre 2008 En fait il fonctionne en SVN uniquement. Il est parfait pour deux langues, après y a risque que se soit plus aléatoire. Pour un petit lien cf : http://www.annelauremaison.com/sque...
- Potter64, 23 Avril 2009 :
<BOUCLE_langues(ARTICLES){par lang}>
[<span lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR"[ (#LANG|=={#ENV{lang}}|?{class="on",''})]>
<a href="[(#URL_ACTION_AUTEUR{'converser',[(#ENV{lang}|=={fr}|?{'en','fr'})]&var_lang=#LANG,[(#SELF|parametre_url{lang,''})]})]" rel="alternate" hreflang="(#LANG|unique{langues})" title="[(#LANG|traduire_nom_langue)]">
#LANG
</a>
</span>]
</BOUCLE_langues>
est très joli en SPIP 2
Sinon un post et une méthode très interessante de Fil postée sur la la liste SPIP-EN
http://article.gmane.org/gmane.comp...
<BOUCLE_langues(ARTICLES){fusion lang}{par lang}>
<a rel="alternate" hreflang="#LANG"
href="[(#REM|sinon{spip.php?action=cookie}|parametre_url{var_lang,#LANG})]&url=<?php
echo urlencode(self()); ?>">[(#LANG|traduire_nom_langue)]</a>
</BOUCLE_langues>
Bonjour, ayant cherché trop longtemps à mon gout, j’apporte ma pierre à l’édifice (basé sur le code au-dessus) ;
[(#LANG|=={fr}?{<li><a href="[(#URL_ACTION{'converser'}|parametre_url{var_lang,'en'}|parametre_url{redirect,#SELF})]" title="English"><img src="<:chemin_drap_en:>" height="13" width="21" /></a></li>})]
[(#LANG|=={en}?{<li><a href="[(#URL_ACTION{'converser'}|parametre_url{var_lang,'fr'}|parametre_url{redirect,#SELF})]" title="Français"><img src="<:chemin_drap_fr:>" height="13" width="21" /></a></li>})]