|
val
24 septembre 2008 16:41
|
site multilingue : problème pour afficher le bon article traduit selon l’id
est-ce que qqn qui a déjà réalisé un squelette multilingue peux m’aider svp ?
|
|
pixys
25 septembre 2008 10:38
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Salut,
Je galère déjà pour mettre en place le menu langue, alors...
Cela dit, j’ai trouvé une solution, genre sparadrap sur jambe de bois : tu peux aller voir le site www.lesfilmsdupresent.fr ce que ça donne.
La plupart des sites multilingues que je connais ne proposent guère mieux qu’une page d’accueil dans chaque langue, à commencer par Spip-contrib qui ne gère même pas les liens de traduction...
Cela dit, je suis aussi à la recherche des tuyaux... Ciao
|
|
val
25 septembre 2008 12:35
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Merci pour l’info.
Ce qui est rageant, c’est que théoriquement ça a l’air très simple. Mais là, je galère. J’ai essayé la méthode des blocs multi, mais ça ne fonctionne pas et je ne comprends pourquoi.
|
|
Pierre Roger
2 octobre 2008 17:26
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Bonjour Val,
Pour que les articles sortent en fonction de leurs langues, il faut que dans les boucles, soit précisé le filtre lang.
Je ne suis pas sur que cela réponde à ton problèeme mais ça peut aider...
|
|
Rainer
3 octobre 2008 11:58
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Personnellement je trouve plus simple de traduire les rubriques avec les balises multi.
Afin que ça marche tu dois mettre $forcer_langue = true ; dans mes_options.php ou utiliser la lame force langue du plugin couteau suisse.
http://www.spip-contrib.net/Le-Cout....
Pour le balise multi je te conseille le plugin Barre typographique multilingue : http://www.spip-contrib.net/Extensi... qui te rendra la vie beaucoup plus simple.
Puis, arrivant au menu langue. N’aimant pas trop les menus drop down comme celui que #MENU_LANGUE produit, je vais utiliser la contribution suivant pour afficher un menu plat :
http://www.spip-contrib.net/-Formul...
Crée un fichier mes_fonctions.php à mettre dans le dossier squelette. Dans ce fichier ajoute le contenu suivant :
<?php
// 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 .= '<li class="on">'.traduire_nom_langue($valeur).'</li><li> | </li>';
}
else { $GLOBALS['delais'] = 0;
$texte .= '<li><a href="'.parametre_url(generer_url_action('cookie'), 'url', parametre_url(self(true), '&'), '&').'&var_lang='.$valeur.'" title="'.traduire_nom_langue($valeur).'">'.traduire_nom_langue($valeur).'</a></li><li> | </li>';
}
return $texte;
}
//fin
?>
Si tu traduis tes articles avec de fonction traduction de spip. Tu devrais proposer deux menus distinct. Un pour les articles et un pour le reste.
Si tu le mets dans inc-entete cela pourrait se voir ainsi :
<BOUCLE_Articles(ARTICLES){id_article}>
<div id="lang">
<ul>
<BOUCLE_traductions(ARTICLES) {traduction} {par lang}{'<li> | </li>'}>
[(#EXPOSE{<li class="on">[(#LANG|traduire_nom_langue)]</li>,<li><a href="#URL_ARTICLE" rel="alternate" hreflang="#LANG"[ title="(#TITRE|texte_backend)"]>[(#LANG|traduire_nom_langue)]</a></li>})]
</BOUCLE_traductions>
</ul>
</div>
</BOUCLE_Articles>
</B_Articles>
[<div id="lang"><ul>(#CONFIG{langues_utilisees}|url_lang)</ul></div>]
<//B_Articles>
J’espère que ça sera utile
|
|
val
9 octobre 2008 13:47
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Bonjour à tous,
Merci pour vos réponses !
Je me suis concentré sur la réponse donnée par Rainer qui propose d’utiliser le plugin barre typo multilingue.
J’ai installé les plugins nécessaire. Je n’ai pas eu d’erreurs, mais j’ai tout de même quelques questions.
Je ne comprends pas dans quel répertoire créer un fichier "mes_options.php" avec le $forcer_langue = true ; ? Ce fichier existe-t-il déjà ou dois-je le créer (dans ce cas dans quel répertoire) ?
Après l’installation de la barre typographique multilingue, je constate que les onglets ne sont pas activés pour les champs "Titre" de mes articles ou rubriques ! Pourtant, il me semble avoir activer les boutons nécessaire dans la configuration du plugin (d’ailleurs, les champs "Texte" ont les onglets de langues !! Comment se fait-il ? Est-ce possible de traduire le titre ?
Et pour Pierre Roger, dans ma première solution, j’avais bien fait le nécessaire en ajoutant le critère {lang} dans mes boucles, mais cela ne fonctionne pas.
Merci pour votre aide.
|
|
val
9 octobre 2008 13:56
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Bonjour à tous,
Je me suis concentré sur la proposition de rainer concernant l’ajout du plugin "barre typographique multilingue". Je n’ai pas rencontré de difficulté à l’installation, mais "seulement" à la configuration du plugin.
Je m’explique :
Après avoir activé et configuré le plugin, je me rends compte que les onglets français, allemand apparaissent uniquement sur le champ "texte". Or, j’ai bien configuré la barre typo multilingue pour le champ "titre". Comment se fait-il que cela ne fonctionne pas ? Y-a-t-il qqch que j’aurais oublié ?
Question simple et bête, dans quel répertoire dois-je mettre le fichier "mes_options.php" ? dans "config" ?
A propos de la réponse de Pierre Roger, j’avais bien mis le critère {lang}à mes boulces, mais je rencontre tjs le même problème ! je trouve cela justement très étrange !
Merci
|
|
val
9 octobre 2008 14:21
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Désolé, pour les 2 messages.... un problème d’affichage de mon navigateur.
J’ai réussi à mettre les onglets français et allemand sur le champ "Titre".
Par contre, j’ai des problèmes lorsque je souhaite afficher la page en allemand.
En fait, la page s’affiche normalement en français (langue par défaut), mais lorsque je clique sur le menu allemand, absolument rien n’apparaît.
J’ai pourtant ajouter le critère {lang} dans ma boucle ! Mais rien à faire. Pourquoi ?
Merci
|
Rainer
10 octobre 2008 12:41
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Salut Val,
Pour le fichier mes_options.php, il faut bien le mettre dans config, comme tu disais.
le contenu serait ainsi :
<?php
$forcer_langue = true ;
?>
Du reste je ne vois pas trop pourquoi rien ne s’affiche.
Tu est sur quel version de spip ?
Tu travaille en local ou tu peux me donner un lien pour voir ?
Rainer
|
|
val
10 octobre 2008 13:37
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Bonjour Rainer,
Je travaille en distant sur le site sur la version 1.9.2d de spip.
Si j’ai bien compris, la barre typographique multilingue s’occupe de générer les balises <multi>. Je me demande s’il ne s’agit pas d’un problème de configuration de mon site.
Dans configuration > multilinguisme > j’ai configuré de la manière suivante :
articles > oui,
rubriques > oui,
racine > non,
gérer les liens de traduction > oui.
J’ai traduits pour l’instant que la page d’accueil.
merci
|
Rainer
10 octobre 2008 14:20
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Bonjour Val,
Si tu fais un système ou les langues ne sont pas définies par secteur, mais où chaque rubrique contient de textesdans le différentes langues (balises multilingues - plugin), tu ne dois pas activer le menu de langue sur les rubriques, et pas non plus mettre de {lang}sur les rubriques. Car ceux ci sont neutre au niveau de langue. Le {lang} ne sera utilisé uniquement pour les boucles articles.
En regardant ton site, il est possible que le problème vienne du fait que tu as mis {lang} dans les boucles rubriques. Vérifie, sinon poste ton squelette.
|
|
val
11 octobre 2008 12:17
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Bonjour Rainer,
Malheureusement, après avoir suivi tes instructions, le site ne change pas au niveau des langues.
J’ai donc désactivé le menu de langue dans les rubriques et supprimé le critère {lang} dans la navigation. La seule différence qui me paraît bizarre est que maintenant, la navigation s’affiche... mais toujours en français. Auparavant, la navigation ne s’affichait pas du tout dès le changement de langue en version allemande.
Par contre, les articles, eux, n’apparaissent tjs pas en allemand.... un peu rageant.
voilà, le code de la page sommaire :
[(#REM) paramètre de cache ]
[(#REM) #CACHE{3600} ]
<html>
<head>
[(#REM) include des métas ]
[(#INCLURE{fond=inc_meta})]
[(#REM) include du js du menu déroulant ]
[(#INCLURE{fond=inc_menuderoulant})]
[(#REM) include du css ]
[(#INCLURE{fond=inc_css})]
[(#REM) Lien vers l'icone destinee a la barre de bookmarks ]
[<link rel="shortcut icon" href="(#CHEMIN{favicon.ico})" />]
[(#REM) Lien vers le flux RSS du site ]
<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="#URL_PAGE{backend}" />
</head>
<body onload="setHover('menulist')">
[(#REM) include du header ]
[(#INCLURE{fond=inc_header})]
<div id="main">
<div id="content">
[(#REM) include de la navigation ]
[(#INCLURE{fond=inc_menulist})]
<div id="page">
<BOUCLE_sommaire(ARTICLES){id_rubrique=1}{lang}>
#DESCRIPTIF
<div class="spacer"> </div>
<br /><br />
<span class="title">#TITRE</span>
<br />
#TEXTE
</BOUCLE_sommaire>
</div>
</div>
</div>
</body>
</html>
et le code du menu déroulant :
<ul id="menulist">
<BOUCLE_menu(RUBRIQUES){par num titre}{racine}>
<li><a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>[(#TITRE|supprimer_numero)]</a>
<B_sousmenu><ul>
<BOUCLE_sousmenu(RUBRIQUES){id_parent}{par num titre}>
<li><a href="#URL_RUBRIQUE"[class="(#EXPOSE)"]>[(#TITRE|supprimer_numero)]</a>
<BOUCLE_ssousmenu(boucle_sousmenu){par num titre}></BOUCLE_ssousmenu>
</li>
</BOUCLE_sousmenu>
</ul></B_sousmenu>
</li>
</BOUCLE_menu>
<li>----------</li>
<li>[<div class="menu_langues">(#CONFIG{langues_utilisees}|url_lang)</div>]</li>
</ul>
tout ça est quand même très étrange et je n’arrive pas à comprendre quelle pourrait être la source du problème.
Merci dans tous les cas pour ta réponse.
|
Rainer
11 octobre 2008 14:07
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Ok, faisant une check :
configuation de langues :activé seulement langue article - avec liens de traduction activé
les rubriques contiennent les textes traduites avec les bases multilingues, pas de rubriques par langue.
existence d’un fichier mes_options.php dans les dossier config avec le contenu
<?php
$forcer_langue = true ;
?>
les articles sont traduits avec la fonction traduire article et sont gardé dans la bonne langue. (il ya bien des articles en allemand dans la section 1 ?)
C’est ainsi que tu as fait ?
Rainer
|
Rainer
11 octobre 2008 14:11
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Concernant le menu.
Ta boucle rubrique affiche seulement les rubriques contenant des articles. Si tu veux faire apparaître toutes les rubriques, tu dois mettre le critère {tout}
|
|
val
11 octobre 2008 14:52
|
site multilingue : problème pour afficher le bon article traduit selon l’id
configuation de langues :activé seulement langue article - avec liens de traduction activé C’EST FAIT
les rubriques contiennent les textes traduites avec les bases multilingues, pas de rubriques par langue. OK
existence d’un fichier mes_options.php dans les dossier config avec le contenu
<?php
$forcer_langue = true ;
?>
LE FICHIER EXISTE BEL ET BIEN
les articles sont traduits avec la fonction traduire article et sont gardé dans la bonne langue. (il ya bien des articles en allemand dans la section 1 ?)
toutes les rubriques ont été traduites, sauf la rubrique agenda actuellement en test.
Qu’entends-tu exactement par "la fonction traduire article" ?
De plus, je constate que tous les articles sont en français par défaut dans « langue et traductions de l’article » dans la partie administrative
et malgré cela, toujours pas de résultat positif.
|
Rainer
13 octobre 2008 09:14
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Salut Val,
Comme tu n’as pas attribué la langue allemand à aucun article, la boucle
<BOUCLE_sommaire(ARTICLES){id_rubrique=1}{lang}>
#DESCRIPTIF
<div class="spacer"> </div>
<br /><br />
<span class="title">#TITRE</span>
<br />
#TEXTE
</BOUCLE_sommaire>
ne peut rien produire car justement il n’existe aucun article en allemand.
Les traductions des articles se gèrent là ou tu as vu la langue de l’article (« langue et traductions de l’article »). C’est à cet endroit que tu dois lier la traduction à l’origine de l’article et c’est aussi là que tu dois définir la langue de l’article en question.
A part ça. J’ai constaté un truc bizarre sur ton site qui me fait penser qu’il y un problème basique dans ta configuration/installation du site.
Tes urls ne paraissent pas fonctionner correctement :
P.ex.
http://www.tangoplaisir.ch/v1/spip.php?rubrique10000000&lang=fr
http://www.tangoplaisir.ch/v1/spip.php?article10000000&lang=fr
ne donnent pas d’erreur
Cela signifierait que tu as 10000000 articles et rubriques publiés
et quand tu prends une page produit avec un squelette de la dist comme
http://www.tangoplaisir.ch/v1/spip....
Les traductions des toutes les balises multilingues du squelettes fonctionnent, mais apparemment n’ont pas été traduite les titres des rubriques (accueil, p.ex).
A part ça, pourquoi as-tu mis l’accueil dans la rubrique 1 au lieu d’utiliser le squelette sommaire.html pour cela ?
Existe-il un fichier .htacces à la source de ton installations spip, si oui tu peux me poster son contenu ?
Maintenant
Je te propose donc
de mettre d’abord tes articles dans la bonne langue
traduire les titres des rubriques (balises multilingues avec le plugin).
Puis regarde si la traduction des menus fonctionnent.
Si cela ne fonctionne pas, fais un test avec la dist. Change le nom de ton dossier squelettes en p.ex squelettes 2.
Puis teste, si on rajoutant &lang=de à tes urls les titres se traduisent.
Si les titres des rubrique ne se traduisent pas, à mon avis tu as mal utilisé les balises multilingues et que les titres disposent pas de traductions.
Si ça marche c’est qu’il y a un autre truc qui cloche dans ton squelette ou dans ton dossier squelette ou bien un plugin.
Puis faudrait aussi regarde d’où vient le problème de tes urls ?
Quand tu fais tes tests avec la dist, regarde aussi si :
http://www.tangoplaisir.ch/v1/spip.php?rubrique10000000&lang=fr donne un messages d’erreur ou non.
Si oui, le problème se trouve dans ton dossier squelette, sinon peut-être dans mes_options.php, peut-être un plugin ou bien il y avait un problème dans l’installation de ton spip.
Essaie donc et raconte tes expériences
Salutations
Rainer
|
|
val
13 octobre 2008 13:17
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Salut Rainer,
Bonne nouvelle, la traduction des articles fonctionnent ! Ils sont bien traduits.
Pour ce qui est du problème éventuel de l’installation (url qui fonctionne avec un article 10000), je pense qu’il s’agit plutot de la création d’une page d’erreur 404. J’avais essayé de comprendre son fonctionnement, mais en vain. Il faudra que j’y jette un coup d’oeil à l’occasion.
Mon problème principal concerne les rubriques. Malgré la traduction des rubriques en langue allemande par le biais des onglets, les rubriques allemandes n’apparaissent pas lorsque je clique sur allemand. Seul les rubriques françaises apparaissent et en plus, elle charge les pages en allemand !!
Je me demande s’il ne s’agit pas d’un problème dans la boucle. Peut-être faut-il ajouter un critère supplémentaire ?
A part ça, pourquoi as-tu mis l’accueil dans la rubrique 1 au lieu d’utiliser le squelette sommaire.html pour cela ?
Pour afficher tout simplement le premier article qui correspond à ma page d’accueil. Y-a-t-il une autre solution que je ne connais pas ?
Existe-il un fichier .htacces à la source de ton installations spip, si oui tu peux me poster son contenu ?
Je vais me renseigner et vais t’envoyer la source ce soir ou demain.
Merci pour tes réponses
val
|
|
val
14 octobre 2008 16:04
|
site multilingue : problème pour afficher le bon article traduit selon l’id
J’ai contrôlé mon site sur le dist en renommant le fichier squellette.
Même en ajoutant la mention "&lang=de", les rubriques restent affichées en allemand !
Comme si la balise <multi> n’est pas prise en compte... d’ailleurs, je crois que c’est le cas.
Pourtant, j’ai vérifié les plugin, la configuration et désactivé les plugins qui n’était pas nécessaires, mais rien à faire.
Je l’avoue, je désespère. Cela fait plusieurs heures que je me bats pour trouver une solution en vain.
Rainer, je ne pense pas pouvoir accéder au fichier htaccess... en fait, je ne le trouve pas.
|
Rainer
14 octobre 2008 18:27
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Salut Val,
on avance malgré tout.
je n’a pas l’impression que les champs multilingues ne marchent pas,
si tu rajoute &lang=de quand tu visites tes rubriques il y a le texte en allemand qui s’affiche : voir p.ex http://www.tangoplaisir.ch/v1/spip.php?rubrique3&lang=de
Ou je ne comprends pas ce que tu veux afficher dans les traductions.
Ce qui ne marche pas c’est le forcer_langue. Car normalement spip devrait rajouter automatiquement la variable langue dans l’url.
Tu m’as dit que tu l’as bien mis dans mes_options.php.
Je te propose donc d’utiliser le plugin couteau suisse et d’y activer la lame Forcer langue que tu trouve sous Affichage public.
et supprime ton fichier mes_options.php (s’il ne contient pas d’autres codes que celui de forcer_langue). Dis moi si ça fonctionne maintenant.
Pour le Htaccess, c’était juste pour voir si qc clochait à ce niveau, comme tu n’en a pas, pas de prob.
Si cela ne fonctionne toujours pas, peux tu peut-être me donner un accès administrateur à ta page, pour que je puisse regarde de près. mon email c’est : rainer.mueller at gmx.ch
Bonne chance
Rainer
|
|
val
15 octobre 2008 12:06
|
site multilingue : problème pour afficher le bon article traduit selon l’id
salut rainer,
je vais un peu de mésaventure en mésaventure...
l’installation du couteau suisse à provoquée une fatal error répondant au doux nom de :
Fatal error : Cannot redeclare execute_pipeline_bt_gadgets() (previously declared in /home/www/web330/html/v1/tmp/charger_pipelines.php:202) in /home/www/web330/html/v1/tmp/charger_pipelines.php on line 240
C’est sûrement un conflit entre plugins. J’ai laissé à ce sujet un post à l’adresse suivante sur spip-contrib.
Donc pour l’heure, je garde espoir.... et j’attends de régler ce problème de plugin avant de vérifier si tout fonctionne pour les rubriques multilingues. Car, en effet, seuls les rubriques ne "switchent" pas en langue allemande.
Merci.
|
|
val
15 octobre 2008 19:52
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Salut,
ça marche.... enfin.
en fait, l’installation du plugin "couteau suisse" créait un conflit comme indiqué sur le post précédent.
J’ai constaté que le problème provenait du plugin "barre typographique multilingue". Je l’ai donc désinstallé (en l’effaçant manuellement via un FTP). Ceci a pour conséquence cela :
mes rubriques affichent la balise <multi>[fr]...[de]...</multi>, sans les onglets. Ce qui est bien dommage.
par contre, la navigation fonctionne. l’activation du site en version allemande permet de gérer parfaitement le passage d’une langue à l’autre en conservant la bonne page.
J’ai posté un message sur le forum du plugin "barre typographique multilingue" en leur précisant le problème et en espérant que j’obtienne une réponse.
Ce plugin est vraiment utile !
En tout merci pour ton aide. Je tâcherai d’ajouter un post récapitulatif dès que j’obtiens une réponse pour le plugin.
vielen Dank Rainer
|
Rainer
16 octobre 2008 08:43
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Salut Val,
félicitations. Concernant le conflit entre les deux plugins, il paraìt que c’est corrigé :
Le bug a été corrigé.
Il suffit de :
mettre à jour tous les plugins : Couteau suisse, barre_typo_generalisee, barre_typo_v2, extension_multilingue_pour_BTV2, etc.
supprimer le fichier tmp/charger_pipelines.php et le dossier tmp/couteau-suisse/
vider le cache de SPIP
Bonne continuation
et
gärn gscheh
Rainer
|
|
forzayalta
5 novembre 2008 12:24
|
site multilingue : problème pour afficher le bon article traduit selon l’id
bonjour,
je rencontre également un soucis du même type, mais les solutions exposées ci-dessus ne donnent rien.
Dans mon site, j’ai créé 3 catégories : Français, Deutsch et English, qui contiennent chacune les différentes pages de mon site traduites dans les langues appropriées.
Ma configuration mulitlinguisme est la suivante :
Activer le menu de langue sur les articles ? Oui
Activer le menu de langue sur les rubriques ? Oui
... seulement pour les rubriques situées à la racine ? Non
Gérer les liens de traduction ? Oui
Pour chaque article en français (et donc situé dans la rubrique ’Français’, je crée deux traductions, ce qui me donne par exemple :
30. Visite virtuelle (article de référence) français
(article de référence) 30. Virtuelle Besichtigung Deutsch
(article de référence) 30. Virtual visit English
J’affiche sur mon site le menu de changement de langue. Hors, quand je sélectionne une autre langue, cela ne fait qu’ajouter le code langue à la fin de l’url. Mon menu est alors traduit, mais le fil fil d’ariane et le contenu de l’article ne sont pas traduits. Mon fichier ’mes_options.php’ contient pourtant l’instruction ’$forcer_lang = true ;’, et j’ai bien activé la fonction ’Gérer les liens de traduction ?’. Je ne vois pas comment changer pour que la traduction soit automatiquement prise en compte.
|
Rainer
5 novembre 2008 15:33
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Apparament tu as choisi de travailler avec un secteur par langue. Il faut donc faire quelques changement par rapport à ce qui a été dit pour Val.
Mets d’abord "oui" pour "seulement pour les rubriques situées à la racine ?", cela t’évitera de devoir définir la langue pour chaque sous-rubrique.
Puis tu peux enlever le "forcer_langue" de "mes_options.php". Cela n’est utile seulement quand chaque section contient les contenu des différentes langues en utilisant les balises multilingues)
Distinguons le menu langue pour article et rubrique
Article.
Tu peux utiliser le modèle par défaut de la dist et mettre simplement :
#MODELEarticle_traductions
Si tu veux le changer, copie le dans un dossier "modeles" crée dans dans dossier squelettes et change le à ton aise.
Rubriques
Comme spip ne prévoit pas les traductions pour les rubriques tu ne peux pas utiliser le critère traduction utilisé dans le modèle, mais tu dois trouver une solution alternative. J’avais testé deux manières :
- Mots clé : A chaque rubrique liée par traduction tu attribue le même mot clé. Tous les mots clés utilisés pour les traductions des rubriques font partie du même groupe, nommant le "Traductions rubrique" qui pour notre exemple aura l’id_groupe=1. Puis tu pourras utiliser la boucle suivante
<B_rubrique>
<div class="traductions">
<ul>
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{tout}>
<BOUCLE_mot(MOTS){id_rubrique}{id_groupe=1}>
<BOUCLE_rubrique_trad(RUBRIQUES){id_mot}{tout}>
[<li>(#EXPOSE{[(#LANG|traduire_nom_langue)],<a href="#URL_RUBRIQUE" rel="alternate" hreflang="#LANG" [ title="(#TITRE|texte_backend)"]>[(#LANG|traduire_nom_langue)]</a>})</li>]
</BOUCLE_rubrique_trad><br/>
</BOUCLE_mot>
</BOUCLE_rubrique>
</ul>
</div>
</B_rubrique>
Combiné avec les traductions articles cela donnera :
<BOUCLE_article(ARTICLES){id_article}>
#MODELE{article_traductions}
</BOUCLE_article>
<B_rubrique>
<div class="traductions">
<ul>
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{tout}>
<BOUCLE_mot(MOTS){id_rubrique}{id_groupe=1}>
<BOUCLE_rubrique_trad(RUBRIQUES){id_mot}{tout}>
[<li>(#EXPOSE{[(#LANG|traduire_nom_langue)],<a href="#URL_RUBRIQUE" rel="alternate" hreflang="#LANG" [ title="(#TITRE|texte_backend)"]>[(#LANG|traduire_nom_langue)]</a>})</li>]
</BOUCLE_rubrique_trad><br/>
</BOUCLE_mot>
</BOUCLE_rubrique>
</ul>
</div>
</B_rubrique>
<//B_article>
via les traductions des articles. Cette solution ne marche seulement si chaque rubrique à traduire contient des articles traduites dans toutes les langues.
Tu peux utiliser la boucle suivante
<B_rub_pr>
<div class="traductions">
<ul>
<BOUCLE_rub_pr(RUBRIQUES) {id_rubrique}>
<BOUCLE_art_traduits(ARTICLES) {id_trad > 0} {id_rubrique} {par lang}><BOUCLE_trad(ARTICLES) {traduction} {exclus} {par lang}><BOUCLE_rub(RUBRIQUES) {id_rubrique} {doublons} {par lang}{0,2}> [<li>(#EXPOSE{[(#LANG|traduire_nom_langue)],<a href="#URL_RUBRIQUE" rel="alternate" hreflang="#LANG" [ title="(#TITRE|texte_backend)"]>[(#LANG|traduire_nom_langue)]</a>})</li>] </BOUCLE_rub></BOUCLE_trad></BOUCLE_art_traduits></div></B_art_traduits>
</ul>
</div>
</B_rub_pr>
et combiné avec les articles
<BOUCLE_article(ARTICLES){id_article}>
#MODELE{article_traductions}
</BOUCLE_article>
<B_rub_pr>
<div class="traductions">
<ul>
<BOUCLE_rub_pr(RUBRIQUES) {id_rubrique}>
<B_art_traduits><div class="floatright_dashed"><BOUCLE_art_traduits(ARTICLES) {id_trad > 0} {id_rubrique} {par lang}><BOUCLE_trad(ARTICLES) {traduction} {exclus} {par lang}><BOUCLE_rub(RUBRIQUES) {id_rubrique} {doublons} {par lang}{0,2}> [<li>(#EXPOSE{[(#LANG|traduire_nom_langue)],<a href="#URL_RUBRIQUE" rel="alternate" hreflang="#LANG" [ title="(#TITRE|texte_backend)"]>[(#LANG|traduire_nom_langue)]</a>})</li>] </BOUCLE_rub></BOUCLE_trad></BOUCLE_art_traduits></div></B_art_traduits>
</ul>
</div>
</B_rub_pr>
<//B_article>
J’espère que cela correspond à ce que tu cherches
Et n’oubliant pas de mentionner le plugin langue_prefere pour que le visiteur tome directement sur sa langue préféré : http://zine.spip.org/spip.php?artic...
En espérant que cela te sera utile
Rainer
|
|
forzayalta
6 novembre 2008 15:34
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Merci pour la réponse ! Comme solution, j’ai choisit d’utiliser la traduction. Sur le squelette ’article.html’, je génère l’affichage des drapeaux des différentes langues, avec un lien sur la traduction de l’article.
<BOUCLE_article(ARTICLES){id_article}>
<BOUCLE_traductions(ARTICLES){traduction}{par titre}>
<a href="#URL_ARTICLE?lang=#LANG" dir="#LANG_DIR">
<img src="IMG/drap_#LANG.gif" border="0" />
</a>
</BOUCLE_traductions>
</BOUCLE_article>
Merci beaucoup pour l’aide !
Par contre, j’ai un autre problème. Dans mon menu, je gère l’affichage des liens vers les pages de la langue en cours :
#CACHE{0}
<B_articles>
<div class="rubriques">
<ul>
<BOUCLE_articles(ARTICLES) {id_rubrique=14} {par titre}>
<li
[(#URL_ARTICLE|=={#SELF}|?{' class="actif"'})] [(#URL_ARTICLE|!= {#SELF}|?{''})]
[(#URL_ARTICLE|=={'spip.php?article7'}|{#SELF}=={'./'} |?{'<li class="actif"'})]
>
<a href="#URL_ARTICLE"[ class="(#EXPOSE)"]>[(#TITRE|supprimer_numero)]</a>
</li>
</BOUCLE_articles>
</ul>
</div>
</B_articles>
Ce code attribut la classe ’actif’ à l’élément du menu sur lequel on se trouve. Par contre, j’aimerai (dans le 2ème test) activer la classe ’actif’ sur le lien menant vers ’spip.php ?article7’ lorsque l’on se trouve sur la page d’accueil. Le problème, c’est que je ne sais pas comment gérer les 2 conditions dans le même test.
Dans le code suivant, seul le premier test (qui permet de voir si le lien actuel correspond à l’article 7) fonctionne, alors que le second ne fonctionne pas.
[(#URL_ARTICLE|=={'spip.php?article7'}|{#SELF}=={'./'} |?{'<li class="actif"'})]
Résultat, le lien vers la page d’accueil est ’actif’ sur toutes les pages, alors qu’il devrait l’être uniquement sur la page root du site (dont l’url correspond à ’./’)
|
Rainer
6 novembre 2008 16:31
|
site multilingue : problème pour afficher le bon article traduit selon l’id
Essaie ceci
[(#ID_ARTICLE|=={'7'}|?{'<li class="actif"',''})]
Rainer
|
|
forzayalta
6 novembre 2008 17:26
|
site multilingue : problème pour afficher le bon article traduit selon l’id
en fait je me suis peut-être mal exprimé. En php, ce que je veux donnerait ca :
if ( (#URL_ARTICLE=='spip.php?article7') && (#SELF=='./') ) { echo 'class="actif"';
Il s’agit donc de lier deux tests via l’opérateur logique ’ET’, ce que je n’ai pas réussi à faire. J’ai également essayé d’imbriquer deux tests à la suite, du genre
if ( (#URL_ARTICLE=='spip.php?article7') { if (#SELF=='./') ) { echo 'class="actif"'; } }
je n’ai plus le code spip que j’avais tenté d’insérer pour ça, mais ca ne fonctionnait pas
|
|
fred
6 novembre 2008 20:14
|
site multilingue : problème pour afficher le bon article traduit selon l’id
regarde http://www.cent20.net/spip.php?article84
|
|
forzayalta
7 novembre 2008 11:14
|
site multilingue : problème pour afficher le bon article traduit selon l’id
merci, j’ai essayé de m’inspirer du dernier exemple, mais mon code ne fonctionne toujours pas :
[(#URL_ARTICLE|=={#SELF}|?{
'<li class="actif">',
[(#URL_ARTICLE|=={'spip.php?article7'}|?{
[({#SELF}=='./'|?{
'<li class="actif">','<li>'
}],'<li>'
}]
}]
Si l’article à afficher correspond à la page actuelle -> on choisit la classe "actif"
Sinon, si on doit afficher l’article 7 et que la page actuelle est la page c’accueil (./), alors on met la classe "actif", sinon on ne met pas de classe...
|