Plateforme multilingue

Bonjour,

Je n'ai découvert PluXml que très récemment mais je ne jure déjà que par lui.
Ainsi, je compte migrer les sites internet perso que j'ai déjà réalisé afin de bénéficier de plus de souplesse et de fonctionalité.

Toutefois, pour l'un d'entre eux, j'ai tâché d'écrire les articles en français et en anglais afin de toucher plus de monde. Je me demandais s'il était compliqué de concevoir quelque chose afin de permettre aux utilisateurs de passer d'un mode anglais au mode français. Les images seraient communes et lors de l'édition d'un article, on aurait 2 billets à remplir, par exemple.
Vous croyez que c'est envisageable?

Vous avez une idée du mode de fonctionnement de ce genre de chose, sinon?

Merci pour vos lumières ;)
Fred
«1

Réponses

  • IenisseiIenissei Member
    avril 2009 modifié
    Bonjour,

    Je ne sais pas si une telle fonctionnalité est prévue dans une MAJ future, mais si tu veux la bricoler ce n'est pas très compliqué, du moins au niveau du code pour enregistrer ça.

    Il suffit d'ouvrir admin/article.php et de copier les champs que tu as besoin de traduire (tous ou presque?) en les renommant. Il faut copier toutes les lignes traitant les variables (elles sont les unes à la suite des autres, c'est facile) et les champs de formulaire appropriés, avec la disposition que tu veux sur la page. Ensuite il faut faire pareil dans le fichier lib/class.plx.admin: dans la fonction editArticle(), il faut copier et renommer les champs que tu veux ajouter. Idem dans lib/class.plx.motor, sur la fonction parseArticle(). Ensuite, tu prends lib/class.plx.show, et tu copies artChapo() et artContent(), etc. (ex: artTitle() pour le titre, artDate() si tu veux une date à l'anglaise, auquel cas il faut aussi des changements ailleurs…) sous un autre nom, en renommant les variables changées.

    Pour la partie code ça devrait suffire, je pense; mais ensuite il faut que tu fasses un petit script dans le thème (ou pour faire propre: tu le mets dans un fichier du dossier lib/ et tu l'invoques dans le template) pour savoir quelle langue utiliser, et ensuite un opérateur conditionnel qui appelle soit la fonction qui récupère le texte français, soit l'autre.

    Voilà, j'espère que ça peut t'aider un peu…
  • bonsoir. En effet, c'est une des fonctions manquante mais que l'équipe s'arrache à concevoir pour la version suivante. Alors pas d'affollement et un petit tour sur la feuille de route pour voir les évolutions à venir : http://pluxml.org/roadmap

    bon soirée
  • Bonsoir,

    Oui cette fonctionnalité est dans la roadmap mais en cours d'abandon car pour l'instant PluXml n'est pas assez tourné vers l'international pour amener ce genre de fonctionnalité en natif.
    On se serait orienté vers une usine à gaz...
  • Merci pour vos réponses.
    Mes connaissances en programmation ne sont toutefois pas assez bonnes pour ne serait-ce qu'envisager émettre l'idée de peut-être se pencher sur un bricolage personnel.
    Tant pis. J'ai pu faire sans jusqu'à présent, ce n'est pas un très gros soucis ;)
  • h_jimh_jim Member
    Bonsoir à tous,

    En avance, excusez moi pour mon français qui n'est pas très bon. J'ai fait un traduction à l'espagnol pour mon site Web (pas fini encore) et je pense en faire mon site multilingue. S'il y a quelques idées je peux écrire un peu de
    code sous votre modele. J'avais pensé en quelque chose comme des HashArrays... C'est mon premier experience en PHP, par contre j'utilise C++, Perl, AWK et Bash.
  • Comme je l'ai dit plus haut, traduire les pages en anglais me semble relativement facile en ajoutant des champs dans le fichier article.php l'admin et en présentant ça de façon lisible; il suffit juste de copier avec un nom différent, ainsi que dans plx.motor, et d'ajouter quelques fonctions pour afficher les dates, etc. correctement dans l'autre langue.

    Par contre, traduire d'admin (ce qui permettrait à d'autres de l'utiliser) est une autre paire de manches, puisqu'il aurait fallu que ce soit prévu dans le code de départ… Il faudrait supprimer tous les éléments textuels dans les fichiers du dossier /lib et faire des feuilles spéciales pour chaque langage, avec par exemple des variables du genre $nom_de_la_fonction. Ca permettrait aussi de séparer code et contenu et ça éviterait d'aller trifouiller dans /lib dès qu'on veut changer une ligne générée automatiquement…
  • h_jimh_jim Member
    Ienissei a écrit:
    Il faudrait supprimer tous les éléments textuels dans les fichiers du dossier /lib et faire des feuilles spéciales pour chaque langage, avec par exemple des variables du genre $nom_de_la_fonction. Ca permettrait aussi de séparer code et contenu et ça éviterait d'aller trifouiller dans /lib dès qu'on veut changer une ligne générée automatiquement…
    C'est ça qui je vuex faire: une structure comme

    lib
    - lang
    -defaut
    -fichier_fr.po
    -en
    -fichier_en.po
    -es
    -fichier_es.po
    -ge
    -fichier_ge.po
    ...

    et sur index.php

    if ($LANG="en")
    include_once($PLX_LANG.'en/fichier_en.po');
    elseif ($LANG="de")
    include_once($PLX_LANG.'de/fichier_de.po');
    else
    include_once($PLX_LANG.'defaut/fichier_fr.po');

    et sur fichier_lang.po

    $nom_msg='traduction de msg';

    Est'ce qu'il y a des autres idées? ça marche bien?
  • Salut,
    effectivement au niveau de l'internationalisation de la plateforme ça pourrait être pas mal, mais ce que la personne demande au début du topic serais de pouvoir créer plusieurs versions d'un même article en différentes langues, et ça me parait vraiment difficile à réaliser avec cette plateforme :/
    Donc je conseillerais FredFred de ce tourner vers une plateforme plus apte à ces besoins (j'aurais bien donné des noms de CMS proposant cette fonctionnalité mais je n'en connais pas).
  • Pour avoir un même article en différentes langues, il suffit d'ajouter des champs au formulaire et ensuite, via le code et le thème, de faire permettre à l'utilisateur de sélectionner la langue, ce qui change les champs sélectionnés pour la lecture des données, etc. Ca peut se faire avec un truc du genre "&lang=fr" (ou autre) dans l'URL, et on dit au parseur d'articles (etc.) de regarder la langue et de sélectionner les bons champs dans le fichier quand il les met dans les variables. Ensuite on dit au thème ou au code d'ajouter la variable à l'URL pour tous les liens.

    Je ne dis pas que ce soit léger, mais ça ne me semble pas infaisable. C'est vrai qu'avec un tel système, les mises-à-jour seront très amusantes puisqu'il faudra probablement relire les 2/3 du code pour ne pas effacer les modifications... mais ça ne me semble pas complexe au niveau des modifs à faire (il y en a juste beaucoup).

    Je ne connais pas de CMS capables de faire ça, mais à mon avis s'il y en a ce sont des machines à gaz. Il me semble que SPIP ou autres ont probablement des possibilités du genre (c'est une supposition seulement) mais ce n'est pas tout léger.
  • Oui j'avais utilisé cette technique pour faire ce site : www.orme-tiseau.com
  • Mais mais mais ... c'est exactement ce dont j'ai besoin!
    Maintenant, j'ai une bonne raison de penser à te harceler ... Y aurait-il le soupçon d'un espoir que je puisse caresser l'idée d'obtenir la même chose?
    C'est du travail personnalisé ou y a-t-il un moyen de récupérer l'architecture du site?

    Merci pour la réponse, quelle qu'elle soit ;)
  • Bonjour je suis également très intéressé par la possibilité de créer un site bilingue avec Pluxml. Je trouve ce CMS formidable et je ne voudrai vraiment pas m'en séparer juste pour ce souci, surtout qu'il correspond exactement à mes besoins (à part cette gestion bilingue bien sur...). Si quelqu'un pouvait détailler la marche à suivre?
  • Bonjour,

    Mon site perso est en cours de développement mais il permet de voir ce que l'on peut déjà réaliser point de vu plateforme multilingue avec PluXml.
    lien vers mon site pluxml français/anglais

    J'ai utilisé deux pluxml pour avoir une version française et anglaise que j'ai mis dans un répertoire /fr et /en.
    A la racine de mon site j'ai mis un fichier index.php qui choisit la version en fonction de la langue du visiteur.
    Dans mon template header.php, j'ai ajouté deux petits drapeaux dans l'entête qui permettent de changer de version.

    L'administration marche avec le même mot de passe car j'ai fait une copie de mon pluxml français en anglais.
    Je peux ainsi administrer mon site à partir de deux onglets dans firefox, ce qui me permet de maintenir en cohérence les identifiants des articles et catégories. Ainsi je peux créer mes articles en français en anglais en même temps.

    Si vous avez des questions, vous pouvez les poster sur le forum.

    Ajout dans header.php :
    <body>
    <div id="top">
    ...
    	<div id="header">
    		<h1><?php $plxShow->mainTitle('link'); ?></h1>
    		<p><?php $plxShow->subTitle(); ?></p>
    	</div>
    	<?php
    	/*Fonction pour naviguer entre les langues*/
    	function getPageFolder($newLang) {
                    /*récupérer le nom de base de pluxml (avant le '?') */
    		$debURL = substr($_SERVER["REQUEST_URI"],0,strrpos($_SERVER["REQUEST_URI"],'?')-3);
    		/*récupérer la page appelée*/
                    $finURL = substr($_SERVER["REQUEST_URI"],strrpos($_SERVER["REQUEST_URI"],'?')-1);
                    /*Debug*/
    		//echo '<p>$debURL = ' . $debURL. "</p>\n" ;
    		//echo '<p>$finURL = ' . $finURL. "</p>\n" ;
    		//echo '<p>'.$debURL . $newLang . $finURL. "</p>\n" ;
    		return $debURL . $newLang . $finURL;
    	}
    	?>
    	<div id="language">
    		<ul>
    			<li><a href="<?php echo getPageFolder('en') ?>"><img src="<?php $plxShow->template(); ?>/img/en.gif" alt="English" title="English"></img></a></li>
    			<li><a href="<?php echo getPageFolder('fr') ?>"><img src="<?php $plxShow->template(); ?>/img/fr.gif" alt="Français" title="Français"></img></a></li>
    		</ul>
    	</div>
    	<div id="menu">
            ...
            </div>
    ...
    </div>
    
    A bientôt

    Nicolas
  • huggyjuggyhuggyjuggy Member
    février 2010 modifié
    Bonjour,

    Nicolas75, ce que tu as fait m'intéresse. Je vais essayer de le mettre en place moi aussi.
    Merci.
  • Bonjour,

    je vais devoir faire un site simple/vitrine, mais en 4 langues. J'étais parti sur un site bâti sur Pluxml, et avec cette modification, ça semble faisable. Mais il faut une install par langue, donc ? Est-il possible d'avoir une idée du code du fichier index.php à la racine du site ?
  • FrédéricFrédéric Member
    février 2010 modifié
    Juste un début de l'intégration multilingue ici: http://pluxml.hosthere.co.cc/multi/

    Pas grand chose de flagrant mise à part la modification du thème dans le footer.(lien du bas)

    Le reste est à venir.

    Juste un include dans index.php et tout le reste sous forme de plugins et bien sur les templates du thème pour la partie "publique".

    L'admin on verras sur le champ lol
  • FrédéricFrédéric Member
    février 2010 modifié
    Donc pour le moment toute la partie des templates (publique) sont faites, reste à voir si cela intéresse du monde et que les concepteurs prévois d'enlever l'affichage de phrases dans le corps:

    - x commentaires
    - Fil des commentaires de cet article
    - Fil des articles de cette catégorie
    - le "a dit:" dans les derniers commentaires de la sidebar
    - La question anti spam
    - et voir le système de date.

    soit pas grand chose.

    Je tente cette fois l'administration et vous tiens au courant.
  • FrédéricFrédéric Member
    février 2010 modifié
    Hum comment on fais pour ajouter des "echo" dans ce genre de situation:
    <?php plxUtils::printSelect('selection', array( '' => 'Pour la sélection...', 'delete' => 'Supprimer'), '') ?>
    
    Ici j'aimerais remplacer "Pour la sélection..." et "Supprimer" par leur variable de langue que j'utilise de cette manière:
    <?php echo LANG_INDEX_SELECT; ?>
    
    Ps: Tester l'admin avec les login : admin/admin
  • cool ! bien intéressé par ces modifs vers le multilingue. :-)
  • Merci, je la proposerais en téléchargement d'ici peu un fois terminé.

    A Savoir que je ne constate pas de hausse flagrante en ressource pour ce système.
  • super_g2super_g2 Member
    février 2010 modifié
    as-tu essayé de traduire les articles en live?
    je te propose d'essayer ce plugin jquery (utilisant google translate si mes souvenirs sont bons) : http://sundaymorning.jaysalvat.com/

    perso, je trouve le concept sympa d'avoir un blog multi langues, mais le mieux est de gérer une seule installation.
    mettre une "balise/marqueur" de la langue en php n'est pas insurmontable, mais faudra être très organisé, surtout pour la section administration ;)

    pourquoi ne pas gérer l'ajout d'articles/pages statiques en 2 langues via un fichier xml supplémentaire, traçant que telle id de page est fr ou pas ?
    exemple :
    * page static1 est fr quand un "sous-ID" == 01
    * page static1 est en quand un "sous-ID" == 02
    * page static2 est fr quand un "sous-ID" == 01
    * page static2 est en quand un "sous-ID" == 02
    * ...

    ensuite dans l'administration mettre un sélecteur à côté du bouton d'édition (ou page intermédiaire.. ou autre...) pour choisir la langue de la page à éditer avant de l'éditer de façon à charger seulement le texte d'intérêt...

    ce ne sont que des idées...
  • @Fred: cela m'interesse bien ta version multi-lingue. Comment as tu procédé ? 2 pluxml ou 1 seule installe avec des fichiers langues ?

    Peux tu la mettre en téléchargement ? Merci par avance.
  • Une seule installation de pluxml via fichier langue.

    Pour les articles oui j'imaginais plutôt une traduction en ligne de chaque article via id.

    Pour l'admin je viens de faire tout le menu et je posterais le tout une fois fini et vu certaine phrases en dur dans un echo existant.
  • Bon alors voici en partie le "plugin":

    A décompresser dans le dossier "plugins" langues.zip - 0.01MB

    Remplacer tout votre dossier admin par celui-ci admin.zip - 0.09MB.

    A savoir que pour l'admin seul les fichiers : top.php, index.php, foot.php et les fichiers dans le dossier "sous_navigation" la traduction à été faite.
    Donc si vous désirez m'aidez pour aller plus vite j'accepte volontiers .Et il fraudais que l'on me réponde sur ce fil http://forum.pluxml.org/viewtopic.php?pid=12170#p12170 sur la faisabilité.

    Remplacer le thème par défaut par celui-ci defaut.zip - 0.02MB

    Et pour finir ouvrez le fichier index.php de votre pluxml et ajouter au dessus de cette ligne:
    # On inclut les librairies nécessaires
    
    Ceci:
    # On inclut notre fichier langue
    include(PLX_ROOT.'plugins/langues/public.php');
    
  • février 2010 modifié
    parfait ce petit bout de code.

    Pour les articles, je ne pense pas qu'il faille faire une traduction automatique pour plusieurs raisons (mauvaise qualité de traduction mais surtout le manque de flexibilité dans l'adaptation du style). je pense qu'il faudrait opter soit: pour la duplication des champs avec '_langue', valeur récupérée par le cookie, ou avec un thème à part entière avec toujours la duplication des champs. De cette manière le style peut vraiment être intégré et personnalisé pour chaque langue.

    En attendant, merci pour cette base. il me reste du chemin à faire pour mon nouveau site FR / EN, mais on avance...


    @marama :

    Oui j'avais utilisé cette technique pour faire ce site : www.orme-tiseau.com
    je suis très très preneur de ta solution. Merci
  • FrédéricFrédéric Member
    février 2010 modifié
    Juste une question aux développeurs, penser vous inclure ce genre de système ou pas ?

    Car pour le moment je ne vois aucune perte de performance dans le chargement des pages alors que c'est un hébergeur gratuit ou je fais les tests.

    Car c'est sur que si Pluxml ce vois multilingue cela pourrais apporter un plus à la communauté.

    Pour revenir aux modifications je t'avoue que faire de la duplication d'article fr/en voir d'autres langues je ne serais faire.

    Après que la traduction soit de mauvaise qualité en passant par un site je te l'accorde, mais je pense que l'importance soit de comprendre les articles et il est vrai que babelfish de ce coté vaut pas grand chose, je pensé plus a un site comme Reverso.

    Bon je continue les fichiers admin en attendant.
  • @SapinTremblant : Le site de www.orme-tiseau.com est basé sur une version beta 3.
    Le site gère 2 langues uniquement (fr/en) mais c'est assez simple.
    Pour chaque article, le fichier XML possède 2 branches (une par langue), le fonctionnement reste identique pour les catégories, etc.
    La langue je la récupère via l'URL
  • Hum moyen de regrouper les idées Marama ?

    Car si tu as déjà fais ce genre de modification pourquoi ne pas le proposer ?
  • Je vais faire mon site en 2 langues avec un sélecteur de thème et le doublement des champs dans les fichiers XML, et le doublement des pages statiques. Le thème UK appellera les pages statique '_en' et les champs '_en' dans les articles. merci de vous êtes penché sur mon cas.

    @fred: je pense que cela peut vraiment être un + pour pluxml si l'admin intègre la gestion de plusieurs langues (pour les articles, le nom des catégories, les pages statiques).
  • Ok donc reste attendre le verdict.

    Bon ca fais une base mais je ne continuerais donc pas la traduction de l'admin, car on touche à gros et au pire vous avez un exemple.
Connectez-vous ou Inscrivez-vous pour répondre.