gestion des langues dans les squelettes

Bonjour,

Sur une version de spip 2.0.5, j'ai configuré les articles multilingues,
sélectionné la langue anglaise..

J'ai ensuite (mal) traduit un article;:slight_smile:

A partir des squelettes par défaut (recopié dans un dossier squelettes),
j'ai ajouté un filtre {lang?} dans la bouble <BOUCLE_articles du
squelette rubrique.html afin que ne soit affiché que les articles dans
une seule langue..

le passage via les liens du squelette des deux traductions se fait comme
attendu..

par contre le formulaire #MENU_LANG, présent dans inc-entete.html, ne
semble fonctionner qu'en indication de la langue : si j'essaie de
changer la langue du site via ce formulaire, cela ne change rien, la
langue déterminé par l'article en court reste (il n'y a que
#MODELE{article_traductions} dans le squelette article.html qui donne un
résulat..).

Je souhaite, offrir à l'internaute le choix de la langue via deux
drapeaux.. Ces drapeaux devant être liés à une url permettant de
préciser la langue du site..

merci

--
Nouveau single de Michel Sardon : OGM Pas !
_____________________________________________________________________
réseaux d'artistes autoproduits, label autogéré, plateforme de téléchargement libre, média indépendant
-----------------------
http://www.dadaprod.org
_____________________________________________________________________

Bonjour,

je 'merde' tranquillement sur le meme sujet....
Bien qu'il existe bcp d'articles et d'infos, ce n'est pas evident !
peut-etre qu'un article de synthèse le ferait mieux, mais pour l'ecrire, il
faut d'abord que je reussise a le faire....

Un autre de mes soucis (mais je suis sur que denisb me depannera qd j'en
aurai besoin) :
utiliser des fichiers images par langue pour certains textes traduits
=> en clair, charger un fichier #CHEMIN{images\texte#LANG.jpg}
qui sache accéder à #CHEMIN{images\texte.jpg} si texte#LANG.jpg n'existe
pas

ci-dessous quelques pistes :

"sonic steph" <ml@dadaprod.org> a écrit dans le message de news:
49BCD571.6040708@dadaprod.org...

le passage via les liens du squelette des deux traductions se fait comme
attendu..

par contre le formulaire #MENU_LANG, présent dans inc-entete.html, ne
semble fonctionner qu'en indication de la langue : si j'essaie de
changer la langue du site via ce formulaire, cela ne change rien, la
langue déterminé par l'article en court reste (il n'y a que
#MODELE{article_traductions} dans le squelette article.html qui donne un
résulat..).

Meme souci ; cela commence a marcher qd on rajoute
<?php
/* config/mes_options.php*/
$forcer_lang = true ;
?>

Je souhaite, offrir à l'internaute le choix de la langue via deux
drapeaux.. Ces drapeaux devant être liés à une url permettant de
préciser la langue du site..

Ci-dessous ce que j'avais récupéré pour commencer a travailler sur le sujet
:

<?php
function balise_MENU_LANG_ecrire /ecrire/lang
// http://doc.spip.org/@menu_lang_pour_tous
function menu_lang_pour_tous($nom, $default) {
include_spip('inc/lang');

if ($GLOBALS['spip_lang'] <> $default) {
  $opt = lang_select($default); # et remplace
  if ($GLOBALS['spip_lang'] <> $default) {
   $default = ''; # annule tout choix par defaut
   if ($opt) lang_select();
  }
}

$opt = liste_options_langues($nom, $default);
if (!$opt)
  return '';

# lien a partir de /
$cible = parametre_url(self('&', /* racine */ true), 'lang' , '', '&');
$post = generer_url_action('converser', 'redirect='. rawurlencode($cible),
'&');

return array('formulaires/menu_lang',
  3600,
  array('nom' => $nom,
   'url' => $post,
   'langues' => $opt
  )
);
}

//* RESULTAT standard #MENU_LANG
<div class="formulaire_spip formulaire_menu_lang" id="formulaire_menu_lang">
<form method="post"
action="http://localhost/vg/spip.php?action=converser&amp;redirect=%2Fvg%2Fspip.php&quot;&gt;
<input name="action" value="converser" type="hidden" />
<input name="redirect" value="/vg/spip.php" type="hidden" />
<label for="var_lang">Langues du site</label>
<select name="var_lang" id="var_lang"
onchange="this.parentNode.submit()"><option class='maj-debut'
value='en'>English</option>
<option class='maj-debut' value='fr'
selected='selected'>fran&#231;ais</option>
</select>
<noscript><input type="submit" class="submit" value="&gt;&gt;"
/></noscript>

</form>
</div>
/* ****************************************************
    * Formulaire menu_lang plat sans URL sur la langue sélectionnée - SPIP-Contrib
*
************************************************** */
// menu_lang plat sans URL sur la langue sélectionnée
// ajouter dans mes_fonctions.php
function url_lang ($langues) {
    include_spip('inc/charsets');
    $texte = '';
    $tab_langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
    while ( list($clef, $valeur) = each($tab_langues) )
if ($valeur == $GLOBALS['spip_lang']) {
$texte .= '<span class="languencours">'.$valeur.'</span>&nbsp;';
}
else { $GLOBALS['delais'] = 0;
$texte .= '<a href="'.parametre_url(generer_url_action('cookie'), 'url',
parametre_url(self(true), '&'), '&').'&amp;var_lang='.$valeur.'"
alt="'.traduire_nom_langue($valeur).'">'.$valeur.'&nbsp;</a>';
}
    return $texte;
}
// ou
// menu_lang plat sans URL sur la langue sélectionnée
function url_lang ($langues) {
    include_spip('inc/charsets');
    $texte = '';
    $tab_langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
    while ( list($clef, $valeur) = each($tab_langues) )
if ($valeur == $GLOBALS['spip_lang']) {
$texte .= '<span
class="languencours">'.traduire_nom_langue($valeur).'</span>&nbsp;';
}
else { $GLOBALS['delais'] = 0;
$texte .= '<a href="'.parametre_url(generer_url_action('cookie'), 'url',
parametre_url(self(true), '&'), '&').'&amp;var_lang='.$valeur.'"
alt="'.traduire_nom_langue($valeur).'">'.traduire_nom_langue($valeur).'&nbsp;</a>';
}
    return $texte;
}
// Utilisation

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 » */
//fin

?>

_____________________________________________________________________
réseaux d'artistes autoproduits, label autogéré, plateforme de
téléchargement libre, média indépendant
-----------------------
http://www.dadaprod.org
_____________________________________________________________________

YannX a écrit :

<?php
/* config/mes_options.php*/
$forcer_lang = true ;
?>

en effet, ça marche déjà mieux ainsi.. on remarque alors que l'on peur
changer l'environnement de langue en ajoutant lang=fr ou lang=en dans
l'URL..

en tant que paramètre, si il n'y a pas de paramètre, on doit ajouter
?lang=fr et &lang=en sinon..

J'ai essayer d'intégrer tout ça dans le squelette "inc-entete.html", ç
marche pas mal sauf pour la page d'accueil

#CACHE{0}
<a
href="[(#SELF|=={#URL_SITE_SPIP}|?{#URL_SITE_SPIP?lang=en,#SELF&lang=en})]"><img
src="#CHEMIN{images/ang.gif}"
onMouseOut='this.src="#CHEMIN{images/ang.gif}"'
onMouseOver='this.src="#CHEMIN{images/ang2.gif}";'></a>

<a
href="[(#SELF|=={#URL_SITE_SPIP}|?{#URL_SITE_SPIP?lang=fr,#SELF&lang=fr})]"><img
src="#CHEMIN{images/fr.gif}"
onMouseOut='this.src="#CHEMIN{images/fr.gif}"'
onMouseOver='this.src="#CHEMIN{images/fr2.gif}";'></a>

ne pas oublier le #CACHE{0} !!

en fait le test ne marche pas, cela revient au même que d'écrire ça :

#CACHE{0}
<a href="#SELF&lang=en"><img src="#CHEMIN{images/ang.gif}"
onMouseOut='this.src="#CHEMIN{images/ang.gif}"'
onMouseOver='this.src="#CHEMIN{images/ang2.gif}";'></a>

<a href="#SELF&lang=fr"><img src="#CHEMIN{images/fr.gif}"
onMouseOut='this.src="#CHEMIN{images/fr.gif}"'
onMouseOver='this.src="#CHEMIN{images/fr2.gif}";'></a>

je le trouve pas si mal que ça mon filtre de test pourtant, non ?

merci