[plugin] MyMultiLingue

123457

Réponses

  • SudwebdesignSudwebdesign Member
    avril 2017 modifié
    Yep Stéphane,

    Suivant l'erreur que j'ai eu avec plxMyContact,
    j'ai voulu tester si cela fonctionnait avec multilingue et un warning apparaît au menu plugin :
    [em]Warning: Constants may only evaluate to scalar values in plxMyMultiLingue/plxMyMultiLingue.php on line 90[/em]

    il s'agit de cette ligne :
    [== PHP ==]
    		define('PLX_MYMULTILINGUE', array('langs' => $this->getParam('flags'), 'lang' => $this->lang));
    

    Cela concerne seulement les serveurs en dessous de php 5.6

    Quelle solution puis-je employer pour résoudre le problème sans bousculer les autres plugins?

    une piste, en sérialisant Is it possible to declare an array as constant : réponse sur stackoverflow
    [== PHP ==]
    		define('PLX_MYMULTILINGUE', serialize(array('langs' => $this->getParam('flags'), 'lang' => $this->lang)));
    
    ou
    de multiple constantes
    ou
    ...

    Edit:
    Après son activation, un
    [em]Warning: unlink(../../plugins/plxMyMultiLingue/update): Permission denied in core/lib/class.plx.plugins.php on line 82[/em]

    Edit2: Soluce : supprimer ou renommer le fichier "update" du plugin ;)

    Edit3:
    Ça a l'air de rouler avec serialize, par contre, lors de la rédaction dans une autre langue la phrase change en fonction du drapeau :
    Dependencias de este artículo: lista de identificadores por idioma (opcional), Dependencies on this article: list of identifiers by language (optional),...

    Ne devrait elle pas être en français? de même que la config du plugin, elles évoluent en fonction du drapeau choisi.

    @ par ça, Tout roule pour l'instant.

    superbe boulot ;)

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • StéphaneStéphane Member, Former PluXml Project Manager
    version 0.8.1 (10/04/2017)
    BUG tableau PLX_MYMULTILINGUE non géré avec php 5.x+
    BUG Suppression fichier plugin update impossible (droit fichier)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjoir a tous,

    pour éviter de toujours revenir a l'accueil (coté admin & public), j'ai commencé a chercher comment faire, et je vous donne l'idée,
    c'est bien sur basé sur la Dernière Sortie de MyMultiLingue ;)

    version 0.8.1# (##/04/2017)
    [+] Permet de changer de langue tout en restant sur la même page (admin & public)

    Pour le tester, il est à télécharger ici.
    voir l'historique de l'idée

    Dans l'administration (testé avec plxMyShop entres autres) ::: défaut a Solutionner : si dans core/admin/parametres_plugins.php et que l'on clique sur le drapeau il reste le '?' a la fin: core/admin/parametres_plugins.php?

    Pour le coté public c'est en test, il manque peut-être des truc auxquels j'ai pas pensé :)

    @PluX

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • Bonjour,

    Je viens de tester ce plugin, les possibilités ouvertes sont très intéressantes. Mais il y a quelque chose de troublant dans son fonctionnement... ou alors un truc qui n'est pas au point.

    Lorsque que je l'active, toutes les pages existantes disparaissent de mon site, tout devient vierge. Aussi bien du coté admin que du côté public (où s'affiche le message "Aucun article pour cette page"), comme si je devais tout recréer. Si je désactive le plugin, tout réappparait.

    Est-ce un comportement normal ? Ne doit-on réellement activer ce plugin que sur un site vierge ? Si je sohaite utiliser ce plugin, dois-je réellement recréer toute les pages, les articles, les catégories, etc... ?

    Merci d'avance pour vos réponses.

    (j'utilise pluxml 5.6, php 5.6.30, plugins activés : plxMybetterurl, plxMycontact, plxEditor)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Oui il faut activer le plugin sur un site vierge et créer le contenu apres pour qu'il soit associé à une langue.
    A partir d'un site existant, le contenu n'est associé à aucune langue, donc on ne voit plus rien

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    ça devrait etre possible de recuperer un contenu et de la basculer dans une langue en déplaçant les fichiers dans les bons dossiers. j'ai jamais fait ni testé. à voir cette piste peut etre

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • @archi02:
    Yep,
    comme le dit Stéphane, dans chaque sous-dossier où PluXml enregistre tes données, en général le dossier "data",

    copie (tous) les fichiers xml des dossiers pages|statiques|commentaires ainsi que config (tags.xml et statiques.xml) dans leurs sous-dossiers "fr" respectifs (ou celui de la première langue configuré) qui ont été créé(s) lorsque Multilingue a été configuré.

    ET si le paramètre du plugin "Utiliser un dossier médias différent pour chaque langue des image" est sur Non,
    tout devrais bien apparaître coté client et admin.

    C'est à tester avec un grand risque que cela tourne bien ;-)

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • Merci Stéphane, Merci Sudwebdesign. Ça fonctionne bien en procédant ainsi.

    Une question : pourquoi les pages [en] sont accessibles à l'adresse domaine/en/page.html et les pages [fr] pour leur part à l'adresse domaine/page ? Autrement dit, pourquoi le sous-dossier [fr] dans l'adresse web n'apparaît-il pas (alors que les pages [fr] sont bien rangées dans leurs dossiers [fr] ?

    Une autre question : je ne parviens pas à faire fonctionner ce plugin avec plxContactForm, alors que celui semble fait pour. Pour tout dire, je ne parviens à afficher le formulaire en anglais (alors que je peux le configurer). L'adresse site/en/contact ne fonctionne pas.
  • SudwebdesignSudwebdesign Member
    juillet 2017 modifié
    archi02 a écrit:
    Merci Stéphane, Merci Sudwebdesign. Ça fonctionne bien en procédant ainsi.

    Une question : pourquoi les pages [en] sont accessibles à l'adresse domaine/en/page.html et les pages [fr] pour leur part à l'adresse domaine/page ? Autrement dit, pourquoi le sous-dossier [fr] dans l'adresse web n'apparaît-il pas (alors que les pages [fr] sont bien rangées dans leurs dossiers [fr] ?

    Une autre question : je ne parviens pas à faire fonctionner ce plugin avec plxContactForm, alors que celui semble fait pour. Pour tout dire, je ne parviens à afficher le formulaire en anglais (alors que je peux le configurer). L'adresse site/en/contact ne fonctionne pas.

    S@lut,

    Utilise le plugin PlxMyContact de Stéphane qui doit mieux tourné et qui est déjà traduit ;)

    Pour le changement d'url, la langue par défaut (dans paramètres) est la langue racine du site, les autres ont toutes leurs "sous-dossiers" respecifs.
    teste le et tu vas voir le phénomène (qui est normal et peut-être meilleur pour le SEO).

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • Alors oui, pardon. Je me suis emmêlé les pinceaux. C'est le plugin plxMyContact (v. 1.8.1) que j'utilise, et qui ne fonctionne pas très bien avec ce plugin multilingue. C'est justement ce qui m'étonnait. Mais le mieux est peut-être de poser ma quesiton sur le thread du plugin en question.

    OK, pour la langue par défaut à la racine du site. Pigé.

    Merci encore !
  • SudwebdesignSudwebdesign Member
    novembre 2017 modifié
    S@luX,
    Lors des essais, il arrive souvent :
    Notice: Constant PLX_MYMULTILINGUE already defined in plugins/plxMyMultiLingue/plxMyMultiLingue.php on line 90
    
    Une idée est venus, comme c'est une partie du constructeur qui pose problème et qu'il est appelé lorsque l'on a besoin d'une instance du moteur de pluXml...

    L'idée est de définir cette constante au tout début du programme, dans un hook du 1er fichier appelé par le serveur, index.php ;-)
    Comme le hook IndexBegin est déjà présent il suffit d'y coller cette ligne (juste en dessous de echo "<?php )
    		define("PLX_MYMULTILINGUE", serialize(array("langs" => "'.$this->getParam('flags').'", "lang" => "'.$this->lang.'")));
    
    et de commenté (ou effacer) la ligne 90
    		#define('PLX_MYMULTILINGUE', serialize(array('langs' => $this->getParam('flags'), 'lang' => $this->lang)));
    

    @Stephane :
    j'ai souvenir d'un bavardage (plugin plxMyShop) sur les hooks Index et IndexBegin et comme il est préconisé qu'il soit le premier a être chargé "Index" est sûr d’être appelé dans tous les cas , il est peut-être judicieux de l'utiliser?


    Comment & pourquoi :
    Cela arrive lors de certains appels a getInstance de plxMotor d'autres plugins qui rappelle le constructeur de MyMultilingue et donc, [re]définit cette constante et pif la notice.
    [== retour admin plxHrefDownload ==]
    ( ! ) Notice: Constant PLX_MYMULTILINGUE already defined in plugins/plxMyMultiLingue/plxMyMultiLingue.php on line 90
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0001	231728	{main}( )	../plugin.php:0
    2	0.0355	717880	include( 'plugins/plxHrefDownload/admin.php' )	../plugin.php:27
    3	0.0438	719920	hrefdownload->getHrefArt( )	../admin.php:60
    4	0.0438	720016	plxMotor::getInstance( )	../class.plx.hrefdownload.php:46
    5	0.0438	720344	plxMotor->__construct( )	../class.plx.motor.php:53
    6	0.0446	730888	plxPlugins->loadPlugins( )	../class.plx.motor.php:94
    7	0.0447	744872	plxPlugins->getInstance( )	../class.plx.plugins.php:74
    8	0.0448	745256	plxMyMultiLingue->__construct( )	../class.plx.plugins.php:42
    9	0.0455	772360	define ( )	../plxMyMultiLingue.php:90
    

    La 1ere solution était de placer un bon vieux if defined, mais c'est moche a mon goût ;)
    Le fameux global(alala) a la place des getInstance passe aussi (ça c'est pour les autres plugins)
    Ou
    Récupérer plxMotor|admin avec plxShow :
    [em]$plxShow = plxShow::getInstance();
    $plxMotor = $plxShow->plxMotor;[/em]
    semble le faire, mais pourquoi???

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • Salut,

    Suite à une réinstallation du plugin, quand je change pour la langue Anglaise (dans la partie visiteur) : j'obtiens une erreur 403 : [em]L'accès au fichier requiert une autorisation.[/em]

    Je ne comprends pas d'où ça peut venir : si quelqu'un a une idée ?

    Merci d'avance.
  • Ok, j'ai trouvé d'où ça venait : des dossiers (vides) [em]fr[/em] et [em]en[/em] avaient été créés à la racine du site. Je les ai supprimé et tout roule !

    Par contre, quand on positionné sur un article et qu'on change de langue : on est re-dirigé sur la page d'accueil (dans la nouvelle langue) au lieu d'être re-dirigé vers le même article dans la page sélectionnée ... comme cela était fait précédemment.

    Dommage.
  • YannicYannic Member
    mai 2018 modifié
    ComputingFroggy a écrit:
    Ok, j'ai trouvé d'où ça venait : des dossiers (vides) [em]fr[/em] et [em]en[/em] avaient été créés à la racine du site. Je les ai supprimé et tout roule !

    Par contre, quand on positionné sur un article et qu'on change de langue : on est re-dirigé sur la page d'accueil (dans la nouvelle langue) au lieu d'être re-dirigé vers le même article dans la page sélectionnée ... comme cela était fait précédemment.

    Dommage.

    Salut pour cela tu peux utiliser differents hooks dans ton theme

    Soit dans le fichier sidebar en testant avant le mode, soit dans les fichiers article et static

    Voir l'aide direcement dans le plugin ou sur github :
    https://github.com/Pluxopolis/plxMyMultiLingue/blob/master/lang/fr-help.php

    Buster/NGINX/PHP7/PluXml5.8

  • Ah, oui, effectivement, en lisant l'aide ... c'est mieux ! ;)

    Du coup, je comprends à quoi servent les champs avec les drapeaux en dessous des articles et des pages statiques : c'est pour lier l'élément à un autre dans une autre langue (pas super "user friendly" de taper un id) ! Ce qui était fait automatiquement précédemment, il faut maintenant le définir à chaque fois. Je comprends la souplesse d'utilisation ... mais du coup, en migrant mon blog à la dernière version de PluXml et de MultiLingue, je perds tous les liens avec les articles existants !

    J'ai 341 articles : je ne vais pas m'amuser à passer sur chaque article dans chaque langue pour affecter l'article associé !
    Est-ce qu'une fonction d'automatisation d'affectation à été prévu ?

    De plus, sur la plupart des blogs/sites quand on change de langue on reste sur l'article. Cette solution fait que on a une zone pour changer de langue et une autre zone pour changer la langue de l'article/page ! :(

    A le savoir, je serais resté sur l'ancienne version : c'est ma faute, j'aurais du tester avant de migrer ! :(

    Dernier point annexe : c'est dommage, cette généralisation des drapeaux ... pour un néo-zélandais ou un australien devoir cliquer sur l'Union Jack pour obtenir la version en Anglais, ça ne le fait pas : c'est un exemple, il y en a plein d'autres (e.g. les canadiens et les drapeaux français et britanniques/US).
    Au moins, dans la version visiteur, on peut afficher une liste déroulante sans drapeaux.
  • YannicYannic Member
    Oui effectivement cela aurais ete une bonne option davoir en option un automatisme id to id notement pour garder la compatibilité avec les anciens blogs

    Buster/NGINX/PHP7/PluXml5.8

  • J'ai modifié le plugin pour qu'il puisse changer de pages si une page lui est associée ... malheureusement, cela ne fonctionne pas sur les listes de catégories, mots clefs etc.
    Le code est dans sur un framabin.
    (Stéphane, si tu veux que je fasse une Pull Request, dis le moi)

    Il me reste à faire une moulinette pour initialiser tous les id.
  • J'ai modifié les pages statiques manuellement dans les fichiers data/configuration/en/statiques.xml et data/configuration/fr/statiques.xml

    Il me reste à écrire un petit script qui met à jour tous les fichiers dans data/articles/ !

    Ca sera pour demain ! ;)
  • Finalement, j'ai modifié le plugin en ajoutant un choix supplémentaire dans la config pour revenir à l'ancienne formule (si pas de page associée) : changer l'URL.
    Dans ce que j'ai testé ça fonctionne bien.

    Voici le nouveau fichier dans Framabin.
    (Stéphane, si tu veux que je fasse une Pull Request avec les autres fichiers -config.php et les langues-, dis le moi)
  • StéphaneStéphane Member, Former PluXml Project Manager
    ComputingFroggy a écrit:
    (Stéphane, si tu veux que je fasse une Pull Request avec les autres fichiers -config.php et les langues-, dis le moi)

    N'hésite pas. Merci

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Fait ... mais bon, il y a pull request qui date de plus d'un an par sudwebdesign ... qui apparemment fait (plus ou moins) la même chose !

  • Bonjour Stéphane et bonne année !

    Cela fait très longtemps que je n'étais pas venu par ici...

    Je n'ai pas compris comment gérer les dépendances entres les pages. Que faut-il mettre dans cette case ?

    Merci !

  • Bonjour @AirW ,

    Admettons que tu soies sur l'article xx en français (tu le vois dans l'URL "lien de l'article" placé juste sous le corps de l'article), et que cet article xx corresponde à l'article yy en anglais. C'est yy qu'il faut donc écrire dans cette case :)

    BD humoristiques, illustrations choupi et réflexions libristes-friendly sur PetitLutinArtiste.fr

  • Super ! Merci !

    La réactivité est toujours de mise ici et c'est vraiment agréable !

  • Bonjour !

    Je voudrais signaler un dysfonctionnement probablement dû à mon incompétence et imprudence mais qui mérite un avertissement pour les utilisateurs.

    J'ai travaillé avec 2 onglets ouverts : l'un sur l'administration en anglais et l'autre en français. Au moment où je pensais en avoir fini, je me suis retrouvé avec des pages en anglais dans la partie française et inversement, avec des titres et url qui correspondaient ou pas... (certaines url avaient "changé de langue").

    Bref, on se limitera à un onglet à la fois... et on pense bien sûr aux sauvegardes !

  • TomekTomek Member

    Y aurait-il quelqu'un pour reprendre ce plugin ?

    Avec des pull request utiles qui trainent depuis 3 ans… et une compatibilité PHP 7.X incertaine, pas certain qu'il puisse être encore utilisé longtemps…

  • SudwebdesignSudwebdesign Member
    août 2020 modifié

    Slt a tou(te)s, voici une reprise et une M.A.J. du seul plugin qui permet aux PluXml d'être multilingue ;)

    Il est en v 0.9.0, en utf-8 et avec quelques agréments en sus...

    Télécharger le de mon dépôt

    et est visible chez github

    A +

    version 0.9.0 (05/08/2020)
    ready for next gen (autoload) : si les params ne sont pas chargés ds le constructeur, on les charge ;)
    Fix __CLASS__ adminPrepend le plugins ne sont pas a la bonne langue a leur 1er accès (du au fait de la session admin_lang est différente de data_lang. scope : si la langue de l'utilisateur est non respecté)
    Fix __CLASS__ __construct pour trouver la langue
    ··· # traitement coté visiteur simplifié et expreg supprimées + trouve un site qui n'est pas a la racine du serveur
    Fix default_lang is duplicated : PreChauffageBegin : redirect without if have it
    Fix admin get lang : CLASS constructor add if PLX_ADMIN & no respect user admin lang : ADD $_SESSION['admin_lang'] = $this->lang; #TO CHANGE ON NEXT REDIRECT LOCATION
    Fix lors de "save config" (global (in other default lang) change default site language !!!
    [+] Nombreuses fonctions réécrites et 4 nouveau Hooks pour les Plugins disponibles
        plxMyMultiLingueThemeEndHeadBegin
        plxMyMultiLingueThemeEndHead
        plxMyMultiLingueMyMultiLingue
        plxMyMultiLingueMyMultiLingueFlag
    
    

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • Pas sûr que tout le monde ait le même probleme que moi mais je le mets:
    Quand je clique sur l'onglet plugins:
    Parse error: syntax error, unexpected 'version' (T_STRING) in ........../plugins/plxMyMultiLingue/plxMyMultiLingue.php on line 1083
    Sur un plux 5.7
    :-)

  • SudwebdesignSudwebdesign Member
    août 2020 modifié

    @garys02 Je viens de le corrigé, il est probable que cela vienne des "short open tag" qui doivent être activés sur ta config de PHP. La v0.9.1 doit rouler maintenant :)

    Télécharger le de mon dépôt
    et est toujours visible chez github

    A +

    version 0.9.1 (06/08/2020)
    Fix sitemap si les short open tag de PHP activés (merci garys02) https://forum.pluxml.org/discussion/comment/60915/#Comment_60915
    

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • skensken Member
    août 2020 modifié

    bonjour, je viens tester sur pluxml 5.8.4, quand j'active le multilingue
    tout les articles existant dans articles disparait, tout se remet à zéro plus de titre ect... et quand je le désactive les articles reviennent.
    bug ou non?

    modification du commentaire: seul possibilité c'est que sur mon ftp ovh je dois copier tout les fichiers xml dans le dossier "fr" et "en" pour l'anglais

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