pluxml translation

novembre 2008 modifié dans Discussions générales
Hi all

first sorry if I am here in the wrong place, I don't understand french.

This is why I am writeing.
I think pluxml is great, and I would like to use it... in for examle english.
I decided -- since no one did it -- to add the ability to get the language strings from locale files.

Is someone interested to help? I have already implented a i18n class, but I would need help to separate the language from the code.

This message goes to the developers, if ther are interested I am willing to help

thanks
zsolt

hope I was clear -- my english is not good

//
how:
i18n class is in the core/lib
language strings goes into core/lang/en_EN.lang
the .lang file is simply like << page_title = 'whatever the page title should be' >>

currently the language setup and defines are in the config.php and for the admin in prepend.php
maybe not the best places for them. What do you think where should it go?
«1

Réponses

  • Hi englishman_in_pluxml !

    The development crew is working about language support for Pluxml.
    We implemented too a i18n class and we are studying the integration with Pluxml.
    The best place to define the language setup is the file "config.php" and you need not to use the admin file "prepend.php" (config.php is included into prepend.php)
    I hope that is clear.
  • Hi marama

    yes you were clear
    however the paths for the frontend and backend are not identical since these are relative paths, so I needed a quick fix to try my class out.
    Pluxml paths are setup twice, once in index.html in the frontend and once in the backend. I think that is an illogical step. Maybe a function witch checks if the file was included from the back-or-frontend would be a good idea.

    What are the plans for pluxml? Approx. when can we have language support?

    Where are you developing pluxml?
    In the svn area there is no i18n class.

    thanks
    zsolt
  • Hi,

    Yes pluxml path are setup twice, we could improve that.
    Now, we don't know when langage support will be etablished into Pluxml code.
    The development crew uses a private svn system. Public svn give you only the tag versions
  • I hope that the pluxml development team integrates translations.

    J'espère que l'équipe de développement intègre pluxml traductions.
  • AndreaAndrea Member
    Oui moi aussi je prie pour ça ;-) une fois le code fait... il y aura toujours des gens dans le forum pour traduire mais il faudrait qu'il y ait juste un fichier indépendant à modifier
  • AndreaAndrea Member
    après être tombé sur la roadmap :-( ce n'est vraiment pas pour cet été ou... cette année ?
  • maramamarama Member
    On a remarqué effectivement que la gestion des langues entraîne une chute de performance conséquente...
    Donc pour le moment ce n'est pas encore envisagé....
  • AndreaAndrea Member
    C'est noté... même si c'est un peu dur ;-) à axcepter

    Et à la limite pour la partie publique du blog du moins, cela n'est pas long à traduire
    même directement dans des fichiers à droite ou à gauche
  • maramamarama Member
    Après on peut proposer des versions :
    - par défaut en français
    - en anglais (c'est surtout un travail de traduction)
  • Bonjour à tous,
    Je rebondis sur ce topic pour relancer ma demande.
    Je pense avoir bien compris qu'avoir un plateforme Multilingue était trop lourd/ trop compliqué" à gérer.
    Par contre, avoir une version "publique" en anglais me parait tout à fait acceptable (pour mon utilisation). Qu'importe si l'admin est en Fr, ce qui importe, c'est que l'on puisse naviguer dans le site sans problême en anglais.

    Je me doute que vous avez d'autres chats à fouetter que de faire une liste exhaustive mais serait-il possible d'avoir, au moins, la liste des fichiers à modifier/traduire pour faire apparaitre Pluxml en EN. J'aurais ainsi juste à ouvrir les dit-fichiers et traduire le contenu. Si c'est juste un soucis de traduction, je devrais y arriver sans trop de soucis.
    Par contre, j'imagine que tout ne doit pas être traduit bien évidement, seulement les chaines qui apparaissent concrétement, pas le code PHP. Ca au moins, je l'ai bien compris :P

    Merci pour votre lumière.

    PS:
    mode supporter ON:
    allez les gars, le version Pluxml 4.2 est presque prête! Go go go! Y'a tout une tribu d'affamés qui l'attend, on met les bouchées doubles!
    mode supporter OFF
  • StéphaneStéphane Member, PluXml Former Project Manager
    Salut FredFred

    Je crois que je vais pouvoir répondre à ta demande.

    Je me suis fait un script pour mes besoins persos, qui traduit en automatique dans les fichiers de pluxml tous les textes français en anglais. (il ne traduit pas l'administration, que la partie publique)
    Il faut que je le remette à jour car il fonctionne uniquement pour la 4.2 et comme la 4.2 n'est pas tout a fait finalisée il y a des textes qui ont changés entre temps.

    Donc juste pour te dire que la solution existe et que je la mettrai à disposition (surement dans le wiki) dans pas longtemps.

    Stephane

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Et bien, tu viens de faire un heureux. Merci!

    Je pose la question au cas où...
    Est-ce que la procédure se fait sur un site vierge? Ou même sur un site avec tout plein de catégories, posts, pages statiques etc?
    Parce que je suis en train de monter la nouvelle mouture d'un ancien site à moi et j'ai tout plein de truc à mettre en place avant de le mettre en ligne. En somme dois-je attendre ou pas? :P
  • StéphaneStéphane Member, PluXml Former Project Manager
    La procédure peut se faire sur un site vierge ou déjà existant dans la mesure où elle traduit les fichiers core de pluxml. Tu auras juste à faire manuellement la traduction de ton thème, des titres des catégories, des pages statiques et bien sur du contenu de ton site.

    Stéphane

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci, c'est tout ce dont j'avais besoin ;)
    C'est malin, je trépigne d'impatience maintenant :P

    Merci encore
  • StéphaneStéphane Member, PluXml Former Project Manager
    Bonsoir FredFred

    Le script de traduction en anglais de la partie publique de pluxml est disponible sur le wiki à cette adresse:

    http://wiki.pluxml.org/?page=Traduire%20la%20partie%20publique%20de%20Pluxml

    NB: Toute la partie administration n'est pas traduite et reste en français.

    Stéphane

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Super!
    Je peux désormais mettre tout ça en ligne ;)

    Merci encore. 1000 merci en fait et bien plus encore!
  • FredFredFredFred Member
    novembre 2009 modifié
    Hmm, étrange. Il me semble bien avoir suivi la bonne procédure mais ça ne marche pas. En fait, le script php apparait dans le navigateur (Chrome) sous forme de texte formaté en couleur, mais n'est pas executé.
    Quelqu'un l'a testé et chez tout fonctionne correctement?

    Je dispose de la dernière version de EasyPHP avec PHP 5.2.8
    J'ai bien renommé le fichier "translate_en.phps" en "translate_en.php" puis l'ai ouvert depuis le navigateur. J'ai le thème par défaut et un PluXml tout propre, même pas modifié :P


    Y'a-t-il un truc que j'aurais fait de pas bien? A noter que j'ai testé ça en local seulement.

    Merci pour toute lumière dans mon couloir des idées bien sombre ;)
  • StéphaneStéphane Member, PluXml Former Project Manager
    Bonjour FredFred

    As-tu copié le fichier translate_en.php à la racine de ton pluxml, là où il y a les fichiers index.php, config.php, etc... ?

    C'est normal que le fichier s'affiche en couleur si tu as fait un clic sur le lien. Il faut faire bouton droit, puis "Enregistrer la cible du lien sous..."

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • FredFredFredFred Member
    novembre 2009 modifié
    oui, absolument ... c'est énervant hein? Fichtre, pourquoi ça ne marche jamais du premier coup avec moi :(

    en fait, j'obtiens exactement le même résultat que lorsque l'on clique sur le fichier lui-même depuis ton lien source. D'après ce que je comprend, il ne semble pas trouver les fihciers index.php, config.php etc.
  • StéphaneStéphane Member, PluXml Former Project Manager
    Hum, je ne suis pas sur de comprendre ce qui se passe chez toi ^^. Si tu as un message d'erreur, peux-tu me faire une impression écran et me l'envoyer par mail stp. T'en fait pas on va trouver ;) Je suis sur que c'est pas grand chose...

    Merci

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • C'est envoyé
    Merci de ton aide ;)
  • Stéphane a écrit:
    Bonsoir FredFred

    Le script de traduction en anglais de la partie publique de pluxml est disponible sur le wiki à cette adresse:

    http://wiki.pluxml.org/?page=Traduire%20la%20partie%20publique%20de%20Pluxml

    NB: Toute la partie administration n'est pas traduite et reste en français.

    Stéphane
    J'ai utilisé le script sur la version 4.2 beta et je constate 2 choses:

    - Comments Offline devrait être 'Offline Comments'
    - la pagination n'est pas traduite, il manque ' sur ' => ' on '

    Donc voila ma version du script avec les changements:
    <?php
    /**
    * Script de traduction en anglais de la partie publique de Pluxml 
    * @version 1.0
    * @date 20/10/2009
    * @author Stephane F
    **/
    $VERSION = '4.2'; // n° de version de Pluxml
    define('PLX_ROOT', './');
    ?>
    
    <?php if (!isset($_POST['step1']) OR empty($_POST['step1'])) : ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<title>Script de traduction du core de Pluxml <?php echo $VERSION ?></title>
    </head>
    <body>
    	<h2>Script de traduction du core de Pluxml version <?php echo $VERSION ?></h2>
    	<form method="post" action="">
    		Démarrer la traduction ? <input type="submit" name="step1" value="Ok" />
    		<br />
    		<a href="<?php echo PLX_ROOT ?>">Retour au site</a>
    	</form>
    </html>
    <?php die(); endif; ?>
    
    <?php
    
    include_once(PLX_ROOT.'config.php');
    include_once(PLX_ROOT.'core/lib/class.plx.utils.php');
    
    # Tableau des fichiers à traduire
    $files = array(
    	#  'index du tableau $lang' => 'nom du fichier'
    	'index' => PLX_ROOT.'index.php',
    	'plxCapcha' => PLX_ROOT.'core/lib/class.plx.capcha.php',
    	'plxDate' => PLX_ROOT.'core/lib/class.plx.date.php',
    	'plxFeed' => PLX_ROOT.'core/lib/class.plx.feed.php',
    	'plxMotor' => PLX_ROOT.'core/lib/class.plx.motor.php',
    	'plxShow' => PLX_ROOT.'core/lib/class.plx.show.php',
    	'plxUtils' => PLX_ROOT.'core/lib/class.plx.utils.php',
    );
    
    # Tableau contenu les chaines à traduire par fichier
    $lang = array(
    	'index' => array(
    		# 4.2
    		'Le fichier cible Pluxml est introuvable' => 'Target Pluxml file not found'
    	),
    	'plxCapcha' => array(
    		# 4.2
    		'dernière' => 'last',
    		'première' => 'first',
    		'deuxième' => 'second',
    		'troisième' => 'third',
    		'quatrième' => 'fourth',
    		'cinquième' => 'fifth',
    		'sizième' => 'sixth',
    		'septième' => 'seventh',
    		'huitième' => 'eighth',
    		'neuvième' => 'ninth',
    		'dixième' => 'tenth',
    		'\'.ème\'' => '\'.th\'',
    		'Quelle est la' => 'What is the',
    		'lettre du mot' => 'letter of the word'
    	),
    	'plxDate' => array(
    		# 4.2
    		'janvier' => 'january',
    		'février' => 'february',
    		'mars' => 'march',
    		'avril' => 'april',
    		'mai' => 'may',
    		'juin' => 'june',
    		'juillet' => 'july',
    		'août' => 'august',
    		'septembre' => 'september',
    		'octobre' => 'october',
    		'novembre' => 'november',
    		'décembre' => 'december',
    		'lundi' => 'monday',
    		'mardi' => 'tuesday',
    		'mercredi' => 'wednesday',
    		'jeudi' => 'thursday',
    		'vendredi' => 'friday',
    		'samedi' => 'saturday',
    		'dimanche' => 'sunday',
    	),
    	'plxFeed' => array(
    		# 4.2
    		'Le fichier' => 'The file',
    		'est necessaire au fonctionnement de Pluxml' => 'is required',
    		"Les URLs privees n\'ont pas ete initialisees dans vos parametres d\'administration" => 'PRIVATE URLs have not been initialized in your administration settings',
    		'Non classé' => 'Not classified',
    		'Accueil' => 'Home',
    		' - Commentaires hors ligne' => ' - Offline comments',
    		' - Commentaires' => ' - Comments',
    		'\'par \'' => '\' by \'',
    		'\' le \'' => '\' - \'',
    	),
    	'plxMotor' => array(
    		# 4.2
    		'Le fichier' => 'The file',
    		'est necessaire au fonctionnement de Pluxml' => 'is required',
    		'Cette catégorie est inexistante' => 'This category does not exist',
    		'Aucun article pour cette page' => 'No articles for this page',
    		"Cet article n\'existe pas ou n\'existe plus" => 'This article does not exist or no longer exists',
    		"Le commentaire est en cours de modération par l\'administrateur de ce site" => 'The commentary is moderated by the administrator of this site',
    		"Cette page n\'existe pas ou n\'existe plus" => 'This page does not exist or no longer exists',
    		'Cette page est actuellement en cours de rédaction' => 'This page is currently being drafted',
    		'Le document spécifié est introuvable' => 'The document specified was not found',
    		"Une erreur s\'est produite lors de la publication de ce commentaire" => 'An error occurred while publishing this comment',
    		'Merci de remplir tous les champs obligatoires requis' => 'Thank you to fill all required field',
    		'La vérification anti-spam a échoué' => 'Wrong anti-spam verification'
    	),
    	'plxShow' => array(
    	# 4.2
    		'#nb article(s)' => '#nb article(s)',
    		'#nb catégorie(s)' => '#nb categories',
    		'#nb commentaire(s)' => '#nb comment(s)',
    		'Accueil' => 'Home',
    		'Non classé' => 'Not classified',
    		'Fil Rss des articles de cette catégorie' => 'RSS feed articles of this category',
    		'Fil des articles de cette catégorie' => 'Feed articles of this category',
    		'Fil Atom des articles de cette catégorie' => 'Atom feed articles of this category',
    		'Fil des articles de cette catégorie' => 'Feed articles of this category',
    		'Fil Atom des articles' => 'Atom feed articles',
    		'Fil des articles' => 'Feed articles',
    		'Aucun article' => 'No article',
    		'Fil Rss des commentaires de cet article' => 'RSS feed comments of this article',
    		'Fil des commentaires de cet article' => 'Feed comments of this article',
    		'Fil Rss global des commentaires' => 'Global Rss Feed of the comments',
    		'Fil des commentaires' => 'Feed comments',
    		'Fil Atom des commentaires de cet article' => 'Atom feed comments of this article',
    		'Fil des commentaires de cet article' => 'Feed comments of this article',
    		'Fil Atom global des commentaires' => 'Global Atom feed of the comments',
    		'Fil des commentaires' => 'Feed comments',
    		'Aucun commentaire' => 'No comment',
    		"' pour '" => "' for '",
    		'Lire :' => 'Read :',
    		'Aller à la première page' => 'Go to the first page',
    		'< précédente' => '< previous',
    		'Page précédente' => 'Previous page',
    		'suivante >' => 'next >',
    		'Page suivante' => 'Next page',
    		'Aller à la dernière page' => 'Goto the last page',
    		' sur ' => ' on '
    		),
    	'plxUtils' => array(
    		# 4.2
    		'est accessible en écriture' => 'is writable',
    		"n\'est pas accessible en écriture" => 'is not writable',
    	)
    );
    
    class plxTranslate {
    
    	var $files = null; # tableau contenant la liste des fichiers à traduire
    	var $lang = null; # tableau contenant les chaines à taduire
    
    	/**
    	* Constructeur qui initialise la variable de classe
    	*
    	* @param files tableau contenant la liste des fichiers à traduire
    	* @param lang tableau contenant les chaines à taduire
    	* @return null
    	* @author Stephane F
    	**/
    	function plxTranslate($files, $lang) {
    		$this->files = $files;
    		$this->lang = $lang;
    	}
    
    	#-------------------
    	# méthodes privées
    	#-------------------
    
    	/**
    	* Méthode qui traduit un fichier de Pluxml
    	*
    	* @param index index du tableau Lang à lire
    	* @param filename nom du fichier qui va etre traduit
    	* @param content contenu du fichier à traduire
    	* @return stdout
    	* @author Stephane F
    	**/
    	function _translate($index, $filename, $content) {
    		$err = false;
    	
    		echo '<strong>Traduction du fichier '.$filename.' en cours...</strong><br />';
    
    		foreach($this->lang[$index] as $k => $v) {
    
    			if (strpos($content, $k)) {
    				echo '     '.$k.' => '.$v.'<br />';
    				$content = str_replace($k, $v, $content);
    			}
    			else {
    				$err = true;
    				echo '     <span style="color:#ff0000">Erreur, chaine non trouvée : '.$k.'</span><br />';
    			}
    		}
    
    		if (plxUtils::write($content, $filename)) {
    			if ($err)
    				echo 'Traduction du fichier '.$filename.' terminée avec des <strong>erreurs</strong><br /><br />';
    			else
    				echo 'Traduction du fichier '.$filename.' terminée avec <strong>succès</strong><br /><br />';
    		}
    		else
    			echo '<strong>Impossible de traiter le fichier '.$filename.'</strong><br /><br />';
    
    	}
    
    	#----------------------
    	# méthodes publiques
    	#----------------------
    
    	/**
    	* Méthode qui traduit l'ensemble des fichiers de Pluxml
    	*
    	* @param null
    	* @return null
    	* @author Stephane F
    	**/
    	function Translate() {
    
    		foreach($this->files as $index => $filename) {
    			if (file_exists($filename)) {
    				$handle = fopen($filename, "r");
    				$content = @fread($handle, filesize($filename));
    				fclose($handle);
    				$this->_translate($index, $filename, $content);
    			}
    		}
    	
    	}
    }
    
    #----------------------
    # Programme princial
    #----------------------
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<title>Script de traduction du core de Pluxml <?php echo $VERSION ?></title>
    </head>
    <body>
    	<h2>Résultats de la traduction</h2>
    	<?php
    		$plxTranslate = new plxTranslate($files, $lang);
    		$plxTranslate->Translate()
    	?>
    	<p><a href="<?php echo PLX_ROOT ?>">Retour au site</a></p>
    </body>
    </html>
    
    En tout cas merci pour ce script, ça épargne pas mal de boulot. Je suis assez surpris des baisses de performance quand vous avez tenté l'internationalisation, gettext est pourtant pas très "lourd" !
  • StéphaneStéphane Member, PluXml Former Project Manager
    Bonjour KnuckOne

    C'est moi qui te remercie pour avoir signaler les 2 corrections dans la traduction.
    Je mettrai à jour le wiki

    Merci
    Stéphane.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • De rien, mais je viens de remarquer quelques jolis "frenchisms", ca m'apprendra a juste corriger ce que je vois sur mon theme :D

    Donc voila ce qui est modifié (c'est plus lourd que précédemment):
    'Fil Rss des articles de cette catégorie' => 'This category\\\'s RSS feed',
    'Fil des articles de cette catégorie' => 'This category\\\'s feed',
    'Fil Atom des articles de cette catégorie' => 'This category\\\'s Atom feed',
    'Fil des articles de cette catégorie' => 'This category\\\'s feed',
    'Fil Atom des articles' => 'Articles Atom feed',
    'Fil des articles' => 'Articles feed',
    etc. (la construction peut paraître bancale mais c'est vraiment ça)
    [...]

    'Le document spécifié est introuvable' => 'The specified document was not found',
    [...]
    'Merci de remplir tous les champs obligatoires requis' => 'Please fill up all mandatory fields',
    [...]
    'Non classé' => 'Unclassified',

    Voila, proofread 2 times et testé sur un core tout neuf:
    <?php
    /**
    * Script de traduction en anglais de la partie publique de Pluxml 
    * @version 1.0
    * @date 20/10/2009
    * @author Stephane F
    **/
    $VERSION = '4.2'; // n° de version de Pluxml
    define('PLX_ROOT', './');
    ?>
    
    <?php if (!isset($_POST['step1']) OR empty($_POST['step1'])) : ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<title>Script de traduction du core de Pluxml <?php echo $VERSION ?></title>
    </head>
    <body>
    	<h2>Script de traduction du core de Pluxml version <?php echo $VERSION ?></h2>
    	<form method="post" action="">
    		Démarrer la traduction ? <input type="submit" name="step1" value="Ok" />
    		<br />
    		<a href="<?php echo PLX_ROOT ?>">Retour au site</a>
    	</form>
    </html>
    <?php die(); endif; ?>
    
    <?php
    
    include_once(PLX_ROOT.'config.php');
    include_once(PLX_ROOT.'core/lib/class.plx.utils.php');
    
    # Tableau des fichiers à traduire
    $files = array(
    	#  'index du tableau $lang' => 'nom du fichier'
    	'index' => PLX_ROOT.'index.php',
    	'plxCapcha' => PLX_ROOT.'core/lib/class.plx.capcha.php',
    	'plxDate' => PLX_ROOT.'core/lib/class.plx.date.php',
    	'plxFeed' => PLX_ROOT.'core/lib/class.plx.feed.php',
    	'plxMotor' => PLX_ROOT.'core/lib/class.plx.motor.php',
    	'plxShow' => PLX_ROOT.'core/lib/class.plx.show.php',
    	'plxUtils' => PLX_ROOT.'core/lib/class.plx.utils.php',
    );
    
    # Tableau contenu les chaines à traduire par fichier
    $lang = array(
    	'index' => array(
    		# 4.2
    		'Le fichier cible Pluxml est introuvable' => 'Target Pluxml file not found'
    	),
    	'plxCapcha' => array(
    		# 4.2
    		'dernière' => 'last',
    		'première' => 'first',
    		'deuxième' => 'second',
    		'troisième' => 'third',
    		'quatrième' => 'fourth',
    		'cinquième' => 'fifth',
    		'sizième' => 'sixth',
    		'septième' => 'seventh',
    		'huitième' => 'eighth',
    		'neuvième' => 'ninth',
    		'dixième' => 'tenth',
    		'\'.ème\'' => '\'.th\'',
    		'Quelle est la' => 'What is the',
    		'lettre du mot' => 'letter of the word'
    	),
    	'plxDate' => array(
    		# 4.2
    		'janvier' => 'january',
    		'février' => 'february',
    		'mars' => 'march',
    		'avril' => 'april',
    		'mai' => 'may',
    		'juin' => 'june',
    		'juillet' => 'july',
    		'août' => 'august',
    		'septembre' => 'september',
    		'octobre' => 'october',
    		'novembre' => 'november',
    		'décembre' => 'december',
    		'lundi' => 'monday',
    		'mardi' => 'tuesday',
    		'mercredi' => 'wednesday',
    		'jeudi' => 'thursday',
    		'vendredi' => 'friday',
    		'samedi' => 'saturday',
    		'dimanche' => 'sunday',
    	),
    	'plxFeed' => array(
    		# 4.2
    		'Le fichier' => 'The file',
    		'est necessaire au fonctionnement de Pluxml' => 'is required',
    		"Les URLs privees n\'ont pas ete initialisees dans vos parametres d\'administration" => 'PRIVATE URLs have not been initialized in your administration settings',
    		'Non classé' => 'Unclassified',
    		'Accueil' => 'Home',
    		' - Commentaires hors ligne' => ' - Offline comments',
    		' - Commentaires' => ' - Comments',
    		'\'par \'' => '\' by \'',
    		'\' le \'' => '\' - \'',
    	),
    	'plxMotor' => array(
    		# 4.2
    		'Le fichier' => 'The file',
    		'est necessaire au fonctionnement de Pluxml' => 'is required',
    		'Cette catégorie est inexistante' => 'This category does not exist',
    		'Aucun article pour cette page' => 'No articles for this page',
    		"Cet article n\'existe pas ou n\'existe plus" => 'This article does not exist or no longer exists',
    		"Le commentaire est en cours de modération par l\'administrateur de ce site" => 'The commentary is moderated by the administrator of this site',
    		"Cette page n\'existe pas ou n\'existe plus" => 'This page does not exist or no longer exists',
    		'Cette page est actuellement en cours de rédaction' => 'This page is currently being drafted',
    		'Le document spécifié est introuvable' => 'The specified document was not found',
    		"Une erreur s\'est produite lors de la publication de ce commentaire" => 'An error occurred while publishing this comment',
    		'Merci de remplir tous les champs obligatoires requis' => 'Please fill up all mandatory fields',
    		'La vérification anti-spam a échoué' => 'Wrong anti-spam verification'
    	),
    	'plxShow' => array(
    	# 4.2
    		'#nb article(s)' => '#nb article(s)',
    		'#nb catégorie(s)' => '#nb categories',
    		'#nb commentaire(s)' => '#nb comment(s)',
    		'Accueil' => 'Home',
    		'Non classé' => 'Unclassified',
    		'Fil Rss des articles de cette catégorie' => 'This category\\\'s RSS feed',
    		'Fil des articles de cette catégorie' => 'This category\\\'s feed',
    		'Fil Atom des articles de cette catégorie' => 'This category\\\'s Atom feed',
    		'Fil des articles de cette catégorie' => 'This category\\\'s feed',
    		'Fil Atom des articles' => 'Articles Atom feed',
    		'Fil des articles' => 'Articles feed',
    		'Aucun article' => 'No article',
    		'Fil Rss des commentaires de cet article' => 'This article\\\'s comments RSS feed',
    		'Fil des commentaires de cet article' => 'This article\\\'s comments feed',
    		'Fil Rss global des commentaires' => 'Global comments RSS feed',
    		'Fil des commentaires' => 'Comments Feed',
    		'Fil Atom des commentaires de cet article' => 'This article\\\'s comments Atom feed',
    		'Fil des commentaires de cet article' => 'This article\\\'s comments feed',
    		'Fil Atom global des commentaires' => 'Global comments Atom feed',
    		'Fil des commentaires' => 'Comments feed',
    		'Aucun commentaire' => 'No comment',
    		"' pour '" => "' for '",
    		'Lire :' => 'Read :',
    		'Aller à la première page' => 'Go to the first page',
    		'< précédente' => '< previous',
    		'Page précédente' => 'Previous page',
    		'suivante >' => 'next >',
    		'Page suivante' => 'Next page',
    		'Aller à la dernière page' => 'Go to the last page',
    		' sur ' => ' on '
    		),
    	'plxUtils' => array(
    		# 4.2
    		'est accessible en écriture' => 'is writable',
    		"n\'est pas accessible en écriture" => 'is not writable',
    	)
    );
    
    class plxTranslate {
    
    	var $files = null; # tableau contenant la liste des fichiers à traduire
    	var $lang = null; # tableau contenant les chaines à taduire
    
    	/**
    	* Constructeur qui initialise la variable de classe
    	*
    	* @param files tableau contenant la liste des fichiers à traduire
    	* @param lang tableau contenant les chaines à taduire
    	* @return null
    	* @author Stephane F
    	**/
    	function plxTranslate($files, $lang) {
    		$this->files = $files;
    		$this->lang = $lang;
    	}
    
    	#-------------------
    	# méthodes privées
    	#-------------------
    
    	/**
    	* Méthode qui traduit un fichier de Pluxml
    	*
    	* @param index index du tableau Lang à lire
    	* @param filename nom du fichier qui va etre traduit
    	* @param content contenu du fichier à traduire
    	* @return stdout
    	* @author Stephane F
    	**/
    	function _translate($index, $filename, $content) {
    		$err = false;
    	
    		echo '<strong>Traduction du fichier '.$filename.' en cours...</strong><br />';
    
    		foreach($this->lang[$index] as $k => $v) {
    
    			if (strpos($content, $k)) {
    				echo '     '.$k.' => '.$v.'<br />';
    				$content = str_replace($k, $v, $content);
    			}
    			else {
    				$err = true;
    				echo '     <span style="color:#ff0000">Erreur, chaine non trouvée : '.$k.'</span><br />';
    			}
    		}
    
    		if (plxUtils::write($content, $filename)) {
    			if ($err)
    				echo 'Traduction du fichier '.$filename.' terminée avec des <strong>erreurs</strong><br /><br />';
    			else
    				echo 'Traduction du fichier '.$filename.' terminée avec <strong>succès</strong><br /><br />';
    		}
    		else
    			echo '<strong>Impossible de traiter le fichier '.$filename.'</strong><br /><br />';
    
    	}
    
    	#----------------------
    	# méthodes publiques
    	#----------------------
    
    	/**
    	* Méthode qui traduit l'ensemble des fichiers de Pluxml
    	*
    	* @param null
    	* @return null
    	* @author Stephane F
    	**/
    	function Translate() {
    
    		foreach($this->files as $index => $filename) {
    			if (file_exists($filename)) {
    				$handle = fopen($filename, "r");
    				$content = @fread($handle, filesize($filename));
    				fclose($handle);
    				$this->_translate($index, $filename, $content);
    			}
    		}
    	
    	}
    }
    
    #----------------------
    # Programme principal
    #----------------------
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<title>Script de traduction du core de Pluxml <?php echo $VERSION ?></title>
    </head>
    <body>
    	<h2>Résultats de la traduction</h2>
    	<?php
    		$plxTranslate = new plxTranslate($files, $lang);
    		$plxTranslate->Translate()
    	?>
    	<p><a href="<?php echo PLX_ROOT ?>">Retour au site</a></p>
    </body>
    </html>
    
  • StéphaneStéphane Member, PluXml Former Project Manager
    Impeccable. Je vais mettre tout ça à jour
    Encore merci

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, PluXml Former Project Manager
    Fichier de traduction anglaise mis à jour sur le wiki.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Hi, are there any updates on the translation code to make it work with the latest core release?
  • StéphaneStéphane Member, PluXml Former Project Manager
    Hi Mushu.
    There's no update available. Sorry.
    But english translation will be include in the next release of PluXml

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Hi Stéphane, that's okay for now. Is there anything I can do now to make the usage of PluXml more easy for me? How long would it take for the next release of PluXml to come out?
  • Si vous avez besoin de quelqu'un pour la traduction, faites-moi signe ;)

    --

    If you need somebody to translate, I can help ;)
Connectez-vous ou Inscrivez-vous pour répondre.