Traduction en anglais

Bonjour,

Afin d'être plus visible sur l'Internet, j'ai modifié pluxml pour que le client voit un site en anglais. Est-il prévu de permettre la traduction de la partie client en n langues différentes (à charge de l'auteur de créer les n billets bien entendu ! ;) ) ?

Merci, c'est vraiment un soft génial et simple

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Mindiell

    Oui c'est prévu, mais ce ne sera pas dispo tout de suite

    Pour info, sur le wiki il y a ce script: http://wiki.pluxml.org/?page=traduire_la_partie_publique_de_pluxml

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Intéressant, merci !
  • Re-bonjour,

    Une idée de la date de dispo de ce genre de chose ?
    J'aimerai beaucoup que mon site soit accessible avec des billets en plusieurs langues ^^
  • thebear008thebear008 Member
    septembre 2010 modifié
    Bonjour j'avoue que ce sujet m'intéresse également.

    Natif de la langue de Molière, mon pluxml est en français.

    Mais certaines pages comme les astuces informatiques seraient je pense plus utilisées si je traduisais le texte en anglais.




    Bon courage et merci
  • Bonjour à tous

    A la recherche d'une plate-forme de blog légère mais complète, je découvre tout juste Pluxml :

    en un mot c'est génial :)

    Je trouve aussi qu'une traduction en anglais serait un gros plus (c'est facilement réalisable soi-même il est vrai!).

    Le plus simple serait de centraliser les chaines de caractères dans un fichier unique?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Fredo

    La traduction est en cours de realisation et sera dispo dans la prochaine version.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Salut,

    J'ai installé PluXml et j'en suis super content ! !
    En même pas une heure, c'était installé, ça fonctionne et j'ai pu modifier un thème comme je voulais.
    Je pense que je vais l'utiliser souvent, pour des petits projets ! !
    Le fait de pouvoir l'utiliser sans BdD est vraiment idéal pour des petits projets, ça m'évitera de sortir la grosse artillerie (Drupal).

    Bon maintenant, moi aussi je voudrai avoir une version en anglais. Je peux attendre (un peu) : c'est pour prévu pour quand la nouvelle version ?
    Sinon le script de conversion pour la 4.2 (cf. post #2) fonctionne-t'il en 5.0.1 ?


    Bonne journée et encore merci pour un logiciel fantastique !
    L@u
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour L@u

    Je n'ai pas testé le script de conversion de la 4.2 en 5.0.1. Je ne garantie pas que cela fonctionnera à 100%.

    Sinon aucune date de sortie annoncée pour le moment pour la 5.0.1. Nous travaillons encore sur le multi langue. C'est en cours, mais on avance ;)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Je viens de tester le script de traduction sur PluXml 5.0.1. Çà fonctionne à un détail près : un message d'erreur apparaît disant qu'il manque une ',' ou un ';' dans le fichier core/lib/class.plx.show.php ligne 624.
    Il faut remplacer les chaines de caractères accentués du mot 'catégorie' par un simple 'e'. Ensuite, le script se débloque.

    Cependant, il serait intéressant d'enrichir un peu le tuto de la page http://wiki.pluxml.org/?page=traduire_la_partie_publique_de_pluxml pour indiquer la phase de préparation (faut-il bien créer, comme je le pense, un 2ème répertoire dans lequel sera dupliqué tout ou partie du site, et appliquer à ce dernier la traduction automatique, puis concevoir en partie publique une direction vers le répertoire français ou anglais ?).

    J'attends avec impatience la nouvelle version qui gèrera le multilinguisme.
    Bon courage aux développeurs ! Moi, je retourne à ma découverte de PluXml...
  • septembre 2010 modifié
    Salut,

    Bon effectivement, il suffisait de corriger les chaines (de caractères) qui avait été modifiées et d'ajouter les nouvelles.
    Donc voici le nouveau fichier translate.php, ci joint.
    (je ne sais pas mettre le fichier en pièce jointe ... donc le voici)

    Bien entendu, il faut aussi traduire le template utilisé, c'est aussi de la traduction de chaine mais dans le texte du template.
    Je posterai un template en anglais dans les ressources.

    ---- le fichier translate.php ----
    <?php
    /**
    * Script de traduction en anglais de la partie publique de Pluxml 
    * @version 1.1
    * @date 22/11/2009
    * @author Stephane F
    **/
    $VERSION = '5.0.1'; // 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(
    		# 5.0.1
        'Le theme principal PluXml est introuvable (' => 'PluXml main them not found (',
    		'Le fichier cible PluXml est introuvable (' => 'Target Pluxml file not found ('
    	),
    	'plxCapcha' => array(
    		# 5.0.1
    		'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 =  5.0.1
    		'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(
    		# 5.0.1
    		'Le fichier "' => 'The file',
    		'version" est necessaire au fonctionnement de PluXml' => 'version" is required for PluXml to work correctly',
    		"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(
    		# 5.0.1
    		'Le fichier "' => 'The file',
    		'version" est necessaire au fonctionnement de PluXml' => 'version" is required for PluXml to work correctly',
        'Aucun article pour ce mot clé !' =>  'No article for this keyword',
    		'Cette catégorie est inexistante' => 'This category does not exist',
    		'Aucun article pour cette page' => 'No article 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 comment is being moderated by the web site administrator',
    		"Cette page n\'existe pas ou n\'existe plus" => 'This page does not exist or no longer exists',
    		'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é' => 'Anti-spam control failed'
    	),
    	'plxShow' => array(
    	# 5.0.1
    		'Compression ' => 'Compression ',
    		' activée' => ' enabled',
    		'#nb article(s)' => 'article(s)',
    		'#nb catégorie(s)' => '#categories',
    		'#nb commentaire(s)' => '#comment(s)',
    		'Accueil' => 'Home',
    		'Non classé' => 'Unclassified',
    		'Fil Rss des articles de cette catégorie' => 'This categor‘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 Atom des articles' => 'Articles Atom feeds',
    		'Fil des articles' => 'Articles feeds',
    		'Aucun' => 'None',
    		'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',
    		"' pour '" => "' for '",
    		'Lire la suite de : #art_title' => 'More for: #art_title',
    		'<p>Cette page est actuellement en cours de rédaction</p>' => '<p>This page is being written</p>',
    		'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 = 5.0.1
    		'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>
    
  • Bonjour à tous,

    je voudrai juste partager une solution que j'ai rajouté en m'inspirant de l'esprit pluxml...

    Comme c'est assez long, vous trouverez un zip(ci-dessous), avec les explications dans un fichier "pluxml-module-traduction.pdf", et le moteur complet et fonctionnel de pluxml 5.0.2.

    pluxml-traduction.rar - 0.28MB

    Pour tester... le login "admin" et mot de passe "admin". Dans le menu principal d'administration il y a "Traductions", il suffit de cliquer...

    Je n'ai mis que 2 langues dans cette version de démo.


    merci pour vos retours


    (remarque: il y a une autre discussion sur le sujet "Plateforme multilingue")
  • je voulais juste rajouter... ;-)

    dans la démo, seulement le fichier "parametres_langues.php" qui utilise les fonctions de traduction!

    Le reste est à faire... pour le(s) thème(s) ou la partie admin.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour nicodemus

    Merci pour cette initiative.
    Juste pour info, la prochaine version de PluXml sera traduite en plusieurs langues

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • hello stephane,
    j'attends avec impatience la nouvelle vesion ;-)
    ça va peut être te faire sourire, mais je dois faire un blog pour un copain en slovaque...
    c'est pour celaque j'ai essayé de m'aventurer à modifier le moteur!
    @ bientôt et bravo pour votre super travail
  • Je confirme, par chez moi, j'ai des candidats à la version anglaise... je n'attends que la sortie de la prochaine version pour leur installer Pluxml !
Connectez-vous ou Inscrivez-vous pour répondre.