[plugin] MyMultiLingue

124678

Réponses

  • StéphaneStéphane Member, PluXml Former Project Manager
    @Scith
    Tu peux essayer ça stp
    <link rel="alternate" hreflang="<?php $plxShow->defaultLang() ?>" href="<?php $plxShow->urlRewrite($plxShow->defaultLang(false).'/'.$plxShow->plxMotor->get) ?>" />
    
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • ScithScith Member
    Merci c'est pas mal en effet ! mais si j'ai bien compris le principe de ce "hreflang", il faudrait afficher la liste de la même page dans toutes les langues :
    [== HTML ==]
    <link rel=”alternate” hreflang=”en” href=”http://monsite.com/en/” />
    <link rel=”alternate” hreflang=”fr” href=”http://monsite.com/fr/” />
    <link rel=”alternate” hreflang=”de” href=”http://monsite.com/de/” />
    

    Donc peut-être via une sorte de boucle (avec l'array aLangs) ?
    Merci
  • StéphaneStéphane Member, PluXml Former Project Manager
    @Scith: change de langue coté visiteur et tu verras que le lien se mets dynamiquement à jour automatiquement

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, PluXml Former Project Manager
    a noter que pour un article tu auras ce genre de balise
    <link rel="alternate" hreflang="fr" href="http://localhost/PluXml/fr/article1/nouvel-article-1" />
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • ScithScith Member
    mai 2015 modifié
    En effet mais j'ai l'impression qu'il affiche le lien dans la même langue que côté visiteur ? Quand je suis sur la version FR il indique le lien fr, sur la version EN le lien en.

    Or d'après la doc de Google : https://support.google.com/webmasters/answer/189077?hl=en
    il faudrait la liste des liens vers les mêmes pages dans d'autres langues. Donc une genre de boucle qui écrit la liste des URLS vers la même page dans chaque langue ?

    merci

    Après comme dit je ne sais pas si ça a un gros impact sur le référencement et je ne maintiens qu'un petit site perso donc ça ne mérite peut-être pas le tracas
  • StéphaneStéphane Member, PluXml Former Project Manager
    ça ne sera pas possible car il n'y a pas forcément correspondance entre les liens fr et en par exemple. par exemple l'article 001 en français peut ne pas avoir le même contenu de l'article 001 en anglais. Tout dépend des choix de l'admin dans la façon de rédiger les articles. On peut même envisager des contenu complètement différent suivant les langues.

    La seule chose faisable et que je peut rajouter dans le plugin c'est comme tu l'as écris: reporter tous les liens suivants en fonction des langues gérées par le plugin
    <link rel=”alternate” hreflang=”en” href=”http://monsite.com/en/” />
    <link rel=”alternate” hreflang=”fr” href=”http://monsite.com/fr/” />
    <link rel=”alternate” hreflang=”de” href=”http://monsite.com/de/” />
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, PluXml Former Project Manager
    Tomek a écrit:
    Ah, je viens de remarquer autre chose : le lien vers l'accueil dans le menu à la même url quelle que soit la langue utilisée...

    Pris en compte. Sera dispo dans la prochaine mise à jour

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, PluXml Former Project Manager
    Scith a écrit:
    Bonjour et merci pour ce plugin.
    Soucis chez moi également avec la page d'accueil. J'ai une page statique définie comme page d'accueil (en cochant la case). Mais je ne peux pas cocher la case à la fois dans la version FR et la version EN. Du coup la page d'accueil est soit la statique anglaise, soit la statique française mais pas les deux. Le soucis qui en résulte est que mon blog n'apparaît dans le menu que dans la langue pour laquelle la statique est en accueil ...

    Je ne constate pas ce problème; J'ai bien une page statique (comme page d'accueil) différente en fonction de la langue.
    Quand on clic sur un drapeau coté visiteur, le contenu de la page d'accueil bascule en fonction de la langue cliquée.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • ScithScith Member
    Hum pourtant quand je coche la case "homepage" dans l'interface admin en langue anglaise, ça enlève la case cochée dans la version française :(
    J'utilise les plugins MultiLingue, MyBetterUrls, spxshortcodes, spxdatas, spxplugindownloader et champArt
    Peut-être ais-je mal créé mes pages statiques ? Elles ont des identifiants différents : page 002 en FR correspond à page 007 en EN. J'avais pourtant coché dans les options "Basculer sur le même identifiant lors du changement de langue pour les articles, catégories ou pages statiques" mais je n'ai pas du comprendre alors comment créer mes statiques ?
  • StéphaneStéphane Member, PluXml Former Project Manager
    Je vais refaire des tests avec les nouveaux éléments que tu as donner pour essayer de reproduire ce qui se passe chez toi

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Je confirme que je n'ai pas ce problème tout en utilisant le plugin pour un site bilingue Français-Anglais !
    A voir sur http://computing.travellingfroggy.info/
  • StéphaneStéphane Member, PluXml Former Project Manager
    J'ai identifié le problème et trouvé la solution. Je vous donne bientôt les éléments pour corriger tout ça

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, PluXml Former Project Manager
    voilà les modifications a reporter manuellement pour avoir une page statique d'accueil différente en fonction de la langue (cf bug remonté par Scith ici)

    Editez le fichier /plugins/plxMyMultiLingue/plxMyMultiLingue.php

    1. En dessous de la ligne
    		$this->setConfigProfil(PROFIL_ADMIN);
    

    ajoutez
    		$this->addHook('plxMotorGetStatiques', 'plxMotorGetStatiques');	
    		$this->addHook('plxAdminEditStatiquesUpdate', 'plxAdminEditStatiquesUpdate');
    		$this->addHook('plxAdminEditStatiquesXml', 'plxAdminEditStatiquesXml');	
    

    2. à la fin du fichier, juste avant les 2 lignes suivantes
    }
    ?>
    

    ajoutez
    
    	public function plxMotorGetStatiques() {
    		echo '<?php
    			# Recuperation du numéro la page statique d\'accueil
    			$homeStatic = plxUtils::getValue($iTags["homeStatic"][$i]);
    			$this->aStats[$number]["homeStatic"]=plxUtils::getValue($values[$homeStatic]["value"]);
    			if($this->aStats[$number]["homeStatic"]) {
    				$this->aConf["homestatic"]=$number;
    			}
    		?>';
    	}
    	
    	public function plxAdminEditStatiquesUpdate() {
    		echo '<?php $this->aStats[$static_id]["homeStatic"] = intval($content["homeStatic"][0]==$static_id); ?>';
    	}
    
    	public function plxAdminEditStatiquesXml() {
    		echo '<?php $xml .= "<homeStatic><![CDATA[".plxUtils::cdataCheck($static["homeStatic"])."]]></homeStatic>"; ?>';
    	}
    	
    

    Voilà, je ne peut pas publier officiellement le correctif pour le moment. ça sera dispo dans la prochaine version du plugin

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • ScithScith Member
    Ca marche parfaitement maintenant, merci beaucoup !
  • StéphaneStéphane Member, PluXml Former Project Manager
    @Scith: ok super. merci pour la confirmation

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • ScithScith Member
    Salut, nouveau soucis par ici. Quand je colle des URL dans un article, il me rajoute des /en/ partout :
    <div class="frame"><iframe src="http://wl.figshare.com/articles/93259/embed?show_title=1" frameborder="0"></iframe></div>
    
    Après avoir sauvegardé :
    <div class="frame"><iframe src="http://wl.figshare.com/en/articles/93259/embed?show_title=1" frameborder="0"></iframe></div>
    
    Et ensuite :
    <div class="frame"><iframe src="http://wl.figshare.com/en/en/articles/93259/embed?show_title=1" frameborder="0"></iframe></div>
    
    Etc...
  • StéphaneStéphane Member, PluXml Former Project Manager
    version 0.6 (28/05/2015)
    [+] Compatibilité PluXml 5.4
    [+] Ajout drapeau occitan
    [+] Ajout en automatique dans la partie <head> balise du type: <link rel="alternate" hreflang="en" href=”http://monsite.com/en/"; />
    [+] Ajout de la langue dans le lien de la page d'accueil dans la liste des pages statiques (fct: plxShow::staticList)
    [-] Suppression gestion dossier Documents
    BUG Warning sur langue occitan non déclarée
    BUG Mauvaise page statique d'accueil en focntion de la langue sélectionnée

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Salut à tous !

    J'espère exposer ma question au bon endroit, sinon je m'excuse d'avance auprès des modérateurs qui s'occuperont du déplacement du message.

    Voilà, j'ai installé ce plugin multilingue sur mon site qui est essentiellement un site vitrine (donc avec des pages statiques définies comme pages d'accueil) mais pour lequel il y a tout de même une partie blog. Le problème est que cette partie blog n'est pas destinée à être traduite, ou alors à l'intérieur même des billets, de façon à ne pas séparer les commentaires.

    De fait, j'aimerais que le lien "blog" dans la navigation renvoie toujours au blog fr, quelle que soit la langue sélectionnée par l'utilisateur.

    J'avais pensé à une solution mais je pense qu'elle est incomplète : dans mon thème, j'ai modifié la page header.php de façon un peu barbare afin de forcer le lien vers l'adresse du blog fr, c'est-à-dire que j'ai remplacé
    <?php $plxShow->pageBlog('<li id="#page_id"><a class="#page_status" href="#page_url" title="#page_name">#page_name</a></li>'); ?>
    

    par
    <li><a class="#page_status" href="/_recette/index.php?fr/blog" title="blog">blog</a></li>
    

    Mais il y a un inconvénient majeur : si l'utilisateur est sur le blog fr et s'il clique sur le lien pour changer de langue, alors il est redirigé vers le blog es ou en... qui est vide.

    Cette solution comporte deux autres problèmes :
    - si l'on est sur le blog, la langue fr se sélectionne, or je voudrais que l'utilisateur puisse accéder au blog depuis des pages en ou es tout en gardant le menu dans la langue qu'il a préalablement définie ;
    - je ne suis pas familière du moyen qui permet de savoir quelle est la page active pour lui attribuer une css particulière. Du coup, le lien "blog" de la navigation s'affiche comme non-actif même si on est dessus.

    Je pense que c'est tout ! Ah, si, une dernière chose. Je vous donne l'adresse du site concerné afin que vous puissiez constater les choses de vous-même, c'est peut-être plus simple : http://editionsdusamedi.fr/_recette/

    Voilà, en tout cas, merci d'avoir pris le temps de me lire et merci aussi par avance pour l'aide que vous voudrez bien m'apporter o/
  • StéphaneStéphane Member, PluXml Former Project Manager
    @Zacharielle:
    Peux-tu essayer ceci pour voir si ça te convient

    1) créer une page statique pour chaque langue que tu mets comme page d'accueil (cocher l'option "Page d'accueil" dans la gestion des pages statiques pour la page concernée)
    2) édite le fichier header.php de ton thème et remplace
    remplace
    <?php $plxShow->pageBlog('<li id="#page_id"><a class="#page_status" href="#page_url" title="#page_name">#page_name</a></li>'); ?>
    
    par
    <li><a href="<?php $plxShow->urlRewrite('?fr/blog') ?>" title="Blog">Blog</a></li>
    

    c'est un peu ce que tu as fait, mais ce que je vois de mon coté
    1) le lien blog (quelque soit la langue) renvoie bien sur la partir blog en français à chaque fois
    2) quand on clic sur un drapeau pour changer de langue on est redirigé vers la page d'accueil de la langue

    inconvénient: le lien blog n'est pas mis en surbrillance lorsqu'on est sur le blog à cause qu'il est codé en dur

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci beaucoup pour ta réponse Stéphane !

    1) en fait c'était déjà le cas ^^

    2) OK, j'ai modifié le header.php avec ta suggestion mais même si c'est une façon plus propre d'écrire le lien il me semble qu'on retombe sur les mêmes problèmes :
    - si l'utilisateur est sur la home fr, va sur le blog fr, puis change la langue à l'aide des drapeaux => il tombe sur une erreur (aucun article n'existe). C'est logique dans la mesure où PluXml va automatiquement chercher à afficher le blog dans la langue sélectionnée et que le blog dans cette langue n'existe pas. J'avoue qu'il s'agit d'un cas spécifique - en théorie tu vas sélectionner la langue avant d'afficher le blog - mais ça me chiffonne de laisser un truc comme ça (je dois faire trop de recette !). Tu penses qu'il y a un moyen de contourner ce problème ? ;
    - plus embêtant : si l'utilisateur sélectionne une langue autre que le fr puis s'il va sur le blog => c'est le blog fr qui s'affiche (et c'est bien l'objectif) mais :
    . une partie du menu passe en français (ie les pages statiques qui ne sont ni page d'accueil ni générées à partir d'un plugin, comme la page Contact) mais le reste est dans la langue sélectionnée au départ ;
    . le drapeau sélectionné par défaut devient fr alors que l'utilisateur était dans une autre langue.

    Il y a aussi ce problème de page blog active qui n'est pas en surbrillance lorsque l'on est dessus mais bon, tant pis c'est pas primordial.

    Voilà, je ne sais pas s'il y a vraiment de pistes à explorer pour aboutir à ce que j'aimerais faire au final car je détourne un peu le plugin du fonctionnement pour lequel il a été prévu au départ et ça risque d'être compliqué de trouver une astuce :/ Enfin, si malgré tout tu as une idée, je suis preneuse... !
  • StéphaneStéphane Member, PluXml Former Project Manager
    @Zacharielle

    voilà ce que je te propose. J'ai testé et ça me semble ok, ça répond à ce que j'ai pu comprendre de ta demande
    je reprends tout en détail pour que ce soit clair

    1) Installer et activer le plugin MyMultilingue et vérifier comme expliqué dans la doc que:

    [list=*]
    [*]plxMyMultiLingue doit être le premier plugin dans la liste des plugins actifs pour assurer un bon fonctionnement (Notamment avec le plugin plxMyBetterUrl)[/*]
    [*]plxMyMultiLingue requiert l'activation de la réécriture d'url dans PluXml (Paramètres > Configuration avancée > Activer la réécriture d'urls : Oui)[/*]
    [/list]

    2) Dans l'administration, pour chaque langue, créer une page statique à mettre comme page d'accueil
    - colonne "Page d'accueil": à cocher
    - colonne "Active": sélectionner la valeur "Oui"
    - colonne "Menu" : sélectionner la valeur "Masquer"

    3) Créer tes articles pour la langue française (et uniquement pour le drapeau FR sélectionné)

    4) Édite le fichier header.php de ton thème

    en dessous de la ligne
    <?php if (!defined('PLX_ROOT')) exit; ?>
    

    ajoute le code suivant
    <?php 
    if(preg_match('/^fr\/blog\/?/', $_SERVER['QUERY_STRING']) AND isset($_SESSION['lang']) AND $_SESSION['lang']!='fr') {
    	$_SESSION['lang']='fr';
    	header('Location: '.$plxMotor->urlRewrite('?fr/blog'));
    	exit;
    }
    ?>
    

    et remplace la ligne
    <?php $plxShow->pageBlog('<li id="#page_id"><a class="#page_status" href="#page_url" title="#page_name">#page_name</a></li>'); ?>
    
    par
    <li><a href="<?php $plxShow->urlRewrite('?fr/blog') ?>" title="Blog">Blog</a></li>
    

    Pour la page de Contact
    =================
    Sur l'écran de configuration du plugin il y a des onglets qui permet de choisir le titre du menu visible coté visiteur
    Actuellement seules les langues FR, EN et ES sont gérées
    Les onglets FR, EN et ES ne sont visibles que si la langue correspondante à été sélectionnée dans le plugin MyMultilingue

    Pour rajouter d'autres langues
    1) édite le fichier plugins/plxMyContact/config.php

    modifie la ligne suivante
    	$aLangs = array_intersect($array, array('fr', 'en', 'es'));
    

    pour rajouter les langues que tu as besoins

    Exemple:
    	$aLangs = array_intersect($array, array('fr', 'en', 'es', 'it, 'de'));
    

    2) dans le dossier plugins/plxMyContact/lang il faut créer les fichiers de langues correspondant. Tu peux dupliquer le fichier fr.php en it.php par exemple et traduire ensuite son contenu dans un deuxième temps. Mais au moins avoir le fichier présent même si son contenu n'est pas traduit.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci beaucoup Stéphane, j'ai suivi scrupuleusement ces instructions ma foi très claires et ça a permis de résoudre le problème des menus qui changent de langue :D

    Il ne reste qu'un seul souci, qui est que si tu es sur le blog fr et si tu cliques sur un drapeau, tu vas vers /en/blog par exemple, ce qui est problématique car ledit blog est vide. Après je ne veux pas t'embêter plus longtemps, c'est un comportement utilisateur peu probable.

    En tout cas, merci également pour tes précisions sur la page Contact, pour l'instant je n'utilise que le FR, EN et ES mais ça pourra évoluer donc je garde ça en tête :)
  • StéphaneStéphane Member, PluXml Former Project Manager
    Je suis étonné qu'en cliquant sur un drapeau tu arrives par exemple sur /en/blog.
    En cliquant sur un drapeau on est censé arrivé sur la page d'accueil de la partie EN. S'il y aune page statique définie comme page d'accueil on ne doit pas arrivé sur la partie blog mais sur cette page statique.

    Apres il est toujours possible de mettre une regle dans le fichier .htaccess à la racine du site pour rediriger les urls du type /en/blog vers /fr/blog

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Je crois qu'on ne se comprend pas ^^"

    Tu arrives sur la page d'accueil de la langue sélectionnée si tu es sur la page d'accueil FR par exemple. Car le principe, si j'ai bien compris, c'est qu'au clic sur le drapeau on arrive sur la page active dans la langue sélectionnée, right?

    Par exemple, quand on est sur une page statique lambda, quand on clique sur un drapeau, on arrive sur cette même page mais dans la langue sélectionnée. Le problème étant que le même principe s'applique au blog : si tu es sur le blog FR et que tu cliques sur le drapeau, bim, le système va chercher à afficher le blog dans la langue sélectionnée. Or, il n'existe pas.

    Une démonstration valant mieux qu'un long discours, tu peux regarder sur mon site : http://editionsdusamedi.fr
    Clique sur blog
    Clique sur la mention "en"
    => Error found / No article has been found for this page!

    Ce serait quoi cette règle pour rediriger /en/blog (et /es/blog/ dans mon cas) vers /fr/blog dans le .htaccess ?
  • StéphaneStéphane Member, PluXml Former Project Manager
    @Zacharielle: Est-ce que tu as mis une page statique d'accueil pour la partie anglaise du site ?

    1) dans l'admin, clic sur le drapeau anglais
    2) va dans la gestion des pages statiques
    3) créer une page statique "Home" par exemple, active la, mais le menu sur "Masquer", coche pour cette page la case "Page d'accueil", sauvegarde.

    Normalement maintenant si:
    Clique sur blog
    Clique sur la mention "en"
    => on devrait arriver sur la page statique d'accueil de la partie anglaise et pas avoir le message d'erreur.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Oui, depuis le début pour chaque langue j'ai une page statique définie comme page d'accueil qui est active mais masquée.

    statiquefr.PNG

    statiqueen.PNG

    statiquees.PNG

    Le problème vient peut-être du fait que son ID n'est pas 001 ?
  • Bonjour,

    Je reviens sur la problématique de gestion des sous-domaine dans le plugin.

    J'utilise des sous-domaines mais, pour autre chose que pour les langues.

    Il serait bon de pouvoir gérer cela dans l'administration du plugin.
    Avec une fonction d'activation et éventuellement le paramétrage additionnel des url des sous domaines pour les langues.

    A noter que la redirection sur le sous-domaine dans la version actuelle fonctionne pas bien car elle génère :

    http://monsousdomaine.domaine.com/fr/index.php

    au lieu de :

    http://monsousdomaine.domaine.com/index.php.
  • Salut à tous,
    J'ai un petit soucis avec le sitemap ... :/
    Quand je vais sur mon sitemap, les URL sont bien de la forme :
    -http://monsite.com/sitemap.php?fr
    -http://monsite.com/sitemap.php?en
    Sauf qu'en allant sur ces deux URL, le "fr" et le "en" ne sont plus là, donc erreur 404 dans ma console Webmaster de Google ...
    C'est à dire :
    -http://monsite.com/static2/titre-anglais

    Je suis avec Pluxml 5.4, Multilingue 0.6, et j'ai le pluggin "contact" et TinyMCE - Version 1.3.
    Une idée d'où le problème pourrait venir ?
    Merci ! ;)

    Edit : Je donne l'URL de mon site ce sera plus simple, car je viens de remarquer que les URL du sitemap en "fr", renvoient sur la page en "en" mais sans le "en" dans l'url ... :| (http://bretagne-sud-marine.com/)
  • Up !

    Pas de solutions à mon problème ? :(
  • StéphaneStéphane Member, PluXml Former Project Manager
    version 0.7 (25/01/2016)
    [+] Affichage des langues sous forme de liste déroulante (paramétrage à partir de l'écran de configuration du plugin)
    BUG Non prise en compte de langue dans le sitemap

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.