SPIP Forums

[ar] [ca] [cpf] [de] [en] [es] [fr] [it]

Ce forum d’entraide est recommandé pour les utilisateurs et utilisatrices occasionnels de SPIP (système de publication pour l’Internet). Avant de poser une question, faites une recherche sur ce site, consultez les liens utiles. Si vous ne trouvez pas de réponse, postez votre message dans la rubrique appropriée, avec un titre explicite.


Accueil du site> Forums de discussion >  Création de squelettes > site multilingue : problème pour afficher le bon article traduit selon (...)

site multilingue : problème pour afficher le bon article traduit selon l'id

par val - 23 septembre 2008 16:07 - Réponse(s) : 29

Bonjour,

Je souhaite réaliser un site multilingue en 2 langues. Après avoir lu les articles correspondants sur le site spip.net, je me retrouve avec quelques soucis que je n’arrive pas à résoudre.

Voilà, en bref, ce que j’ai réallisé :
- dans l’administration, j’ai configuré sous l’onglet "multilinguisme" les paramètres suivants : article=non, rubrique=oui, racine=oui, gestion des liens de traductions=oui.
- toujours dans l’administration, j’ai coché les cases français et allemand

- j’ai ensuite créer une rubrique en français et une autre en allemand
- j’ai écrit un article en spécifiant la langue "français", je l’ai associé à la rubrique française et je l’ai publié. Le no id de l’article est le 7.
- une fois l’article publié, j’ai ensuite cliqué sur "langues et traductions de l’article" et j’ai cliqué sur "écrire une nouvelle traduction de cette article". Article, dont l’id est le no 10, que j’ai associé ensuite à la rubrique allemande.

et voilà le problème. lorsque je vais sur le site pour afficher l’article en français, tout va bien. Si ensuite, je sélectionne la langue allemande (avec le menu déroulant #MENU_LANG), il va chercher l’article avec le même no d’id_article, soit l’id 7. Il ne m’affiche donc aucun article, car l’id de l’article traduit en allemand est le no 10. Comment faire pour que le changement de langue permette d’afficher le bon article selon le bon no id ??

Merci


Indiquez l'intérêt que vous portez à cette question

Suivre la vie du site

site multilingue : problème pour afficher le bon article traduit selon l'id

24 septembre 2008 16:41 - par val

est-ce que qqn qui a déjà réalisé un squelette multilingue peux m’aider svp ?


site multilingue : problème pour afficher le bon article traduit selon l'id

25 septembre 2008 10:38 - par pixys

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


site multilingue : problème pour afficher le bon article traduit selon l'id

25 septembre 2008 12:35 - par val

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.


site multilingue : problème pour afficher le bon article traduit selon l'id

2 octobre 2008 17:26 - par Pierre Roger

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...


site multilingue : problème pour afficher le bon article traduit selon l'id

3 octobre 2008 11:58 - par Rainer

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), '&amp;'), '&amp;').'&amp;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


site multilingue : problème pour afficher le bon article traduit selon l'id

9 octobre 2008 13:47 - par val

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.


site multilingue : problème pour afficher le bon article traduit selon l'id

9 octobre 2008 13:56 - par val

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


site multilingue : problème pour afficher le bon article traduit selon l'id

9 octobre 2008 14:21 - par val

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


site multilingue : problème pour afficher le bon article traduit selon l'id

10 octobre 2008 12:41 - par Rainer

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


site multilingue : problème pour afficher le bon article traduit selon l'id

10 octobre 2008 13:37 - par val

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


site multilingue : problème pour afficher le bon article traduit selon l'id

10 octobre 2008 14:20 - par Rainer

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.


site multilingue : problème pour afficher le bon article traduit selon l'id

11 octobre 2008 12:17 - par val

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.


site multilingue : problème pour afficher le bon article traduit selon l'id

11 octobre 2008 14:07 - par Rainer

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


site multilingue : problème pour afficher le bon article traduit selon l'id

11 octobre 2008 14:11 - par Rainer

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}


site multilingue : problème pour afficher le bon article traduit selon l'id

11 octobre 2008 14:52 - par val

- 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.


site multilingue : problème pour afficher le bon article traduit selon l'id

13 octobre 2008 09:14 - par Rainer

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


site multilingue : problème pour afficher le bon article traduit selon l'id

13 octobre 2008 13:17 - par val

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


site multilingue : problème pour afficher le bon article traduit selon l'id

14 octobre 2008 16:04 - par val

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.


site multilingue : problème pour afficher le bon article traduit selon l'id

14 octobre 2008 18:27 - par Rainer

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


site multilingue : problème pour afficher le bon article traduit selon l'id

15 octobre 2008 12:06 - par val

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.


site multilingue : problème pour afficher le bon article traduit selon l'id

15 octobre 2008 19:52 - par val

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


site multilingue : problème pour afficher le bon article traduit selon l'id

16 octobre 2008 08:43 - par Rainer

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


site multilingue : problème pour afficher le bon article traduit selon l'id

5 novembre 2008 12:24 - par forzayalta

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.


site multilingue : problème pour afficher le bon article traduit selon l'id

5 novembre 2008 15:33 - par Rainer

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


site multilingue : problème pour afficher le bon article traduit selon l'id

6 novembre 2008 15:34 - par forzayalta

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 à ’./’)


site multilingue : problème pour afficher le bon article traduit selon l'id

6 novembre 2008 16:31 - par Rainer

Essaie ceci

[(#ID_ARTICLE|=={'7'}|?{'<li class="actif"',''})]

Rainer


site multilingue : problème pour afficher le bon article traduit selon l'id

6 novembre 2008 17:26 - par forzayalta

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


site multilingue : problème pour afficher le bon article traduit selon l'id

6 novembre 2008 20:14 - par fred

site multilingue : problème pour afficher le bon article traduit selon l'id

7 novembre 2008 11:14 - par forzayalta

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...


Répondre à la question


Un message, un commentaire ?
  • (Pour créer des paragraphes, laissez simplement des lignes vides.)

  • Vous pouvez étiqueter cette page de forum avec les mots-clés qui vous semblent les plus appropriés ; ils permettront aux prochains visiteurs du site de mieux se repérer :
  • Installation, mise à jour

    Utilisation de l’espace privé

    Administration, gestion, configuration du site

    Créer ses squelettes

Qui êtes-vous ? (optionnel)
  • [Se connecter]

  • par ubiq - 13 mars 23:29

    Alternative à age_relative

    Réponse(s) : 2

    L’inspiration m’est venue quand je n’y croyais plus. A la racine de mon squelette, hors de toute boucle, je place : <BOUCLE_EVENEMENTS_A_EXCLURE(evenements) age_relatif>0 doublons evts> </BOUCLE_EVENEMENTS_A_EXCLURE> Que je peux (...)

  • par Guronsan - 13 mars 22:17

    Problème utilisation critère doublons ou unique dans boucle perso

    Réponse(s) : 2

    nope. MY_INSCRIPTIONS a une entrée id_article et id_membre dans la base de données. la boucle MY_MEMBRE récupère l’id_membre dans MY_INSCRIPTION en fonction de l’article déjà défini

  • par blazouf - 13 mars 18:28

    Squelettes, rubriques et sous rubriques

    Réponse(s) : 2 - Résolu

    Super !! J’ai ENFIN compris comment marche ce systeme de squelette ! milles merci pour la réponse rapide !

  • par ubiq - 13 mars 15:08

    Balise FICHIER et crash

    Réponse(s) : 5 - Résolu

    Autre chose, j’ai regardé les dernières entrées de ma table documents par PHPmyAdmin, et la table me paraît "clean".

  • par cogicube - 13 mars 13:56

    articles triés par nombre de visites sur 7 jours

    Réponse(s) : 8

    Marche pô :( Je vais pas tourner 5 mois la dessus ! Je vais mettre un champ supplémentaire dans la table article par exemple visites7. Dans mes_fonctions.php une petite moulinette qui met à jour ce champ et une boucle avec par visites7inverse Je (...)

  • par Guronsan - 12 mars 19:05

    Soustraire les résultats d'une boucle à une boucle parente

    Réponse(s) : 1

    Pour être plus précis, j’ai essayé ceci qui ne fonctionne pas : <BOUCLE_membres_repondus(MY_INSCRIPTIONS)id_articlepresent IN oui,non,nsppar maj> <BOUCLE_nom_membre_repondus(MY_MEMBRES)par nomdoublons></BOUCLE_nom_membre_repondus (...)

  • par Krol - 12 mars 18:07

    Problème de compréhension pour créer un plugin #AUTORISER

    Pas de réponse

    Bonjour, J’essaie de comprendre l’utilisation de #AUTORISER Voici ce que je voudrais faire, j’utilise le plugin "accès restreint" pour un site communautaire, avec des possibilités de charger des docs , modifier des articles, etc ... Pour cela (...)

  • par aurelie - 12 mars 15:52

    Gestion des couleurs : Insérer feuille de styles dynamique en PHP

    Réponse(s) : 3

    À mon avis, ton inc-head n’inclut pas style.php. Tu peux vérifier cela en affichant la source de la page calculée (page publique d’une rubrique par exemple). <link rel="stylesheet" (...)

  • par pierre batton - 12 mars 14:20

    squelettes compteur(incrémentation) suite

    Réponse(s) : 1

    je me répond tout seul comme un grand j’ai trouvé avec le filtre duree par contre après avoir copier comme indiqué ...case "jour" : $str = ($diff_days+($diff_weeks*7)+($diff_years*24*7*365)) ; break ; ... j’obtiens une réponse en semaines ou en (...)

  • par davduf - 12 mars 10:03

    Lister les articles avec un même mot clé

    Réponse(s) : 9 - Résolu

    Me revoila ,) Je suis bien embêté car chez moi (exemple), ça ne marche pas. La boucle englobante est bien positionnée, tout en haut : <BOUCLE_principale(ARTICLES) id_article doublons > Tout en bas </BOUCLE_principale> Pour la (...)


squelettes-dist/spip.png voir le squelette de cette page