Index: /extensions/PHP_Optimisateur/files/display_config.php
===================================================================
--- /extensions/PHP_Optimisateur/files/display_config.php	(revision 7992)
+++ /extensions/PHP_Optimisateur/files/display_config.php	(revision 7993)
@@ -6,93 +6,165 @@
 
 echo '<div class="config">
-	<h2>Configuration</h2>
-	<ul>
-		<li>
-			<span class="title">Répertoires</span>
-			<ul>
-				<li><b>Répertoire source :</b> '.$DIRsource.'</li>
-				<li><b>Répertoire de sortie :</b> '.$DIRsortie.'</li>
-			</ul>
-		</li>
-		<li>
-			<span class="title">Options</span>
-			<ul>
-				<li><b>Créer le dossier haute définition :</b> '.bool_to_string($DIRhighORNOT).'</li>
-				<li><b>Redimensionner les images HD :</b> '.bool_to_string($DIMhdORNOT).'</li>
-				<li><b>Renommer les fichiers :</b> '.bool_to_string($renameORNOT).'</li>
-				<li><b>Ajouter les fichiers index.php :</b> '.bool_to_string($indexORNOT).'</li>
-				<li><b>Préfixe des miniatures :</b> '.$prefixe_mini.'</li>
-			</ul>
-		</li>
-		<li>
-			<span class="title">Tailles et qualité</span>
-			<ul>
-				<li><b>Taille maximale des images HD :</b> '.$DIMhd.'</li>
-				<li><b>Taille des images normales :</b> '.$DIMnormal.'</li>
-				<li><b>Taille des miniatures :</b> '.$DIMthumbnail.'</li>
-				<li><b>Qualité des images HD :</b> '.$Qhd.'</li>
-				<li><b>Qualité des images normales :</b> '.$Qnormal.'</li>
-				<li><b>Qualité des miniatures :</b> '.$Qthumbnail.'</li>
-				<li><b>Résolution des images HD :</b> '.$DPI.'</li>
-			</ul>
-		</li>
-		<li>
-			<span class="title">Copyright</span>
-			<ul>
-				<li><b>Texte :</b> '.$copyright.'</li>
-				<li><b>Sur les images HD :</b> '.bool_to_string($copyONhd).'</li>
-				<li><b>Sur les images normales :</b> '.bool_to_string($copyONnormal).'</li>
-				<li><b>Position :</b> '.$copyPOS.'</li>
-				<li><b>Taille (ratio image/texte) :</b> '.$copySIZE.'</li>
-				<li><b>Couleur :</b> rgb('.$copyCOLOR.') <span style="vertical-align:middle;border:1px solid #7f7f7f;width:1.5em;height:0.8em;display:inline-block;background:rgb('.str_replace(' ',',',$copyCOLOR).');">&nbsp;</span></li>
-				<li><b>Police :</b> '.$copyFONT.'</li>
-			</ul>
-		</li>
-		<li>
-			<span class="title">Plugins pré-processing</span>
-			<ul>';
-				foreach ($PluginsBefore as $name => $config) {
-					echo '<li>
-						<b>'.$name.' :</b>
-						<ul>';
-							foreach ($config as $key => $value) {
-								echo '<li>'.$key.' &raquo; '.bool_to_string($value).'</li>';
-							}
-						echo '</ul>
-					</li>';
-				}
-			echo '</ul>
-		</li>
-		<li>
-			<span class="title">Plugins processing</span>
-			<ul>';
-				foreach ($PluginsProcess as $name => $config) {
-					echo '<li>
-						<b>'.$name.' :</b>
-						<ul>';
-							foreach ($config as $key => $value) {
-								echo '<li>'.$key.' &raquo; '.bool_to_string($value).'</li>';
-							}
-						echo '</ul>
-					</li>';
-				}
-			echo '</ul>
-		</li>
-		<li>
-			<span class="title">Plugins post-processing</span>
-			<ul>';
-				foreach ($PluginsAfter as $name => $config) {
-					echo '<li>
-						<b>'.$name.' :</b>
-						<ul>';
-							foreach ($config as $key => $value) {
-								echo '<li>'.$key.' &raquo; '.bool_to_string($value).'</li>';
-							}
-						echo '</ul>
-					</li>';
-				}
-			echo '</ul>
-		</li>
-	</ul>
-</div>';
+		<h2>'.l10n('Configuration').'</h2>
+		<ul>
+			<li>
+				<span class="title">'.l10n('Folders').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('FolderIn').' :</b></td>
+						<td>'.$DIRsource.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('FolderOut').' :</b></td>
+						<td>'.$DIRsortie.'</td>
+					</tr>
+				</table>
+			</li>
+			<li>
+				<span class="title">'.l10n('Options').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('DIRhighORNOT').' :</b></td>
+						<td>'.bool_to_string($DIRhighORNOT).'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DIMhdORNOT').' :</b></td>
+						<td>'.bool_to_string($DIMhdORNOT).'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('renameORNOT').' :</b></td>
+						<td>'.bool_to_string($renameORNOT).'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('indexORNOT').' :</b></td>
+						<td>'.bool_to_string($indexORNOT).'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('prefixe_mini').' :</b></td>
+						<td>'.$prefixe_mini.'</td>
+					</tr>
+				</table>
+			</li>
+			<li>
+				<span class="title">'.l10n('Sizes and quality').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('DIMhd').' :</b></td>
+						<td>'.$DIMhd.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DIMnormal').' :</b></td>
+						<td>'.$DIMnormal.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DIMthumbnail').' :</b></td>
+						<td>'.$DIMthumbnail.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('Qhd').' :</b></td>
+						<td>'.$Qhd.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('Qnormal').' :</b></td>
+						<td>'.$Qnormal.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('Qthumbnail').' :</b></td>
+						<td>'.$Qthumbnail.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DPI').' :</b></td>
+						<td>'.$DPI.'</td>
+					</tr>
+				</table>
+			</li>
+			<li>
+				<span class="title">'.l10n('Copyright').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('Content').' :</b></td>
+						<td>'.$copyright.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyONhd').' :</b></td>
+						<td>'.bool_to_string($copyONhd).'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyONnormal').' :</b></td>
+						<td>'.bool_to_string($copyONnormal).'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyPOS%s', '').' :</b></td>
+						<td>'.$copyPOS.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copySIZE').' :</b></td>
+						<td>'.$copySIZE.'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyCOLOR').' :</b></td>
+						<td>rgb('.$copyCOLOR.') <span style="vertical-align:middle;border:1px solid #7f7f7f;width:1.5em;height:0.8em;display:inline-block;background:rgb('.str_replace(' ',',',$copyCOLOR).');">&nbsp;</span></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyFONT').' :</b></td>
+						<td>'.$copyFONT.'</td>
+					</tr>
+				</table>
+			</li>
+			<li>
+				<span class="title">'.l10n('PluginsBefore').'</span>
+				<ul>';
+					foreach ($PluginsBefore as $name => $config) {
+						echo '<li>
+							<b>'.$name.' :</b>
+							<table>';
+								foreach ($config as $key => $value) {
+									echo '<tr>
+										<td>'.$key.' :</td>
+										<td>'.bool_to_string($value).'</td>
+									</tr>';
+								}
+							echo '</table>
+						</li>';
+					}
+				echo '</ul>
+			</li>
+			<li>
+				<span class="title">'.l10n('PluginsProcess').'</span>
+				<ul>';
+					foreach ($PluginsProcess as $name => $config) {
+						echo '<li>
+							<b>'.$name.' :</b>
+							<table>';
+								foreach ($config as $key => $value) {
+									echo '<tr>
+										<td>'.$key.' :</td>
+										<td>'.bool_to_string($value).'</td>
+									</tr>';
+								}
+							echo '</table>
+						</li>';
+					}
+				echo '</ul>
+			</li>
+			<li>
+				<span class="title">'.l10n('PluginsAfter').'</span>
+				<ul>';
+					foreach ($PluginsAfter as $name => $config) {
+						echo '<li>
+							<b>'.$name.' :</b>
+							<table>';
+								foreach ($config as $key => $value) {
+									echo '<tr>
+										<td>'.$key.' :</td>
+										<td>'.bool_to_string($value).'</td>
+									</tr>';
+								}
+							echo '</table>
+						</li>';
+					}
+				echo '</ul>
+			</li>
+		</ul>
+	</div>';
 ?>
Index: /extensions/PHP_Optimisateur/files/functions.php
===================================================================
--- /extensions/PHP_Optimisateur/files/functions.php	(revision 7992)
+++ /extensions/PHP_Optimisateur/files/functions.php	(revision 7993)
@@ -5,12 +5,54 @@
 \***************************************/
 
+// Affiche les textes
+function l10n($code){
+	global $Lang;
+	if (isset($Lang[$code])) {
+		$args = func_get_args();
+		if (count($args) > 1) {
+			array_shift($args);
+			return vsprintf($Lang[$code], $args);
+		} else {
+			return $Lang[$code];
+		}
+	} else {
+		return $code;
+	}
+}
+
+// Trouve la langue
+function GetLanguage(){
+	// tableau avec les langues installées
+	$dh = opendir('language');
+	while ($file = readdir($dh)) {
+		if ($file !== '.' && $file !== '..' && is_dir('language/'.$file))
+			$languages[] = $file;
+	}
+	closedir($dh);
+	
+	// recherche du paramètre get ou session, ou langue du navigateur
+	if(isset($_GET['Lang']))
+		$_SESSION['Lang'] = $_GET['Lang'];
+	else if(!isset($_SESSION['Lang']) OR $_SESSION['Lang'] == NULL)
+		$_SESSION['Lang'] = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
+	if(!in_array($_SESSION['Lang'], $languages))
+		$_SESSION['Lang'] = 'en';
+
+	return array('Lang' => $_SESSION['Lang'], 'languages' => $languages);
+}
+
 // Supprime les accents et tous caractères non conforme
 function delete_special_car($string) {
 	global $renameORNOT;
-	$search = array ('#[éèêë]#','#[ÊËÈÉ]#','#[àâäã]#','#[ÂÄÁÀ]#','#[îïíì]#','#[ÎÏÍÌ]#','#[ûùüú]#','#[ÛÙÚÜ]#','#[ôóòõö]#','#[ÓÒÖÔÕ]#',
-		'#[ç]#','#[Ç]#','#[ñ]#','#[Ñ]#','#[ýÿ]#','#[Ý]#','#[ \&\!\#\"\(\)\{\}\'\=\+\~]#','#[^a-zA-Z0-9_\.\-]#');
+	
+	$search = array ('#[éèêë]#','#[ÊËÈÉ]#','#[àâäã]#','#[ÂÄÁÀ]#','#[îïíì]#','#[ÎÏÍÌ]#','#[ûùüúµ]#','#[ÛÙÚÜ]#','#[ôóòõö]#','#[ÓÒÖÔÕ]#',
+		'#[ç]#','#[Ç]#','#[ñ]#','#[Ñ]#','#[ýÿ]#','#[Ý]#','#[ \&\!\?\#\"\(\)\{\}\[\]\=\+\~\%]#','#[^a-zA-Z0-9_\.\-]#');
 	$replace = array ('e','E','a','A','i','I','u','U','o','O','c','C',',n','N','y','Y','_','');
 	
-	return preg_replace($search, $replace, $string);
+	if ($renameORNOT) {
+		return preg_replace($search, $replace, $string);
+	} else {
+		return str_replace(array('%','$'), '_', $string);
+	}
 }
 
@@ -50,5 +92,5 @@
 		$dh = opendir($dir);
 	} else {
-		exit;
+		exit('Dossier inexistant');
 	}
 	while (($file = readdir($dh)) !== false ) {
@@ -97,4 +139,12 @@
 }
 
+// Charge la configuration
+function load_config() {
+	$config = simplexml_load_file('config.xml');
+	$config = XMLParse($config);
+	$config = array_settype($config);
+	return $config;
+}
+
 // Convertit les booléens, entiers et flotants d'un tableau de 'string'
 function array_settype($array) {
@@ -120,12 +170,13 @@
 // Booléen vers français ou texte
 function bool_to_string($bool, $just_echo=0) {
+	global $Lang;
 	# $just_echo pour pouvoir afficher un booléen tel quel
 	if (is_bool($bool)) {
 		if ($bool) {
 			if ($just_echo) return 'true';
-			else return 'oui';
+			else return l10n('yes');
 		} else {
 			if ($just_echo) return 'false';
-			else return 'non';
+			else return l10n('no');
 		}
 	} else {
Index: /extensions/PHP_Optimisateur/files/header.php
===================================================================
--- /extensions/PHP_Optimisateur/files/header.php	(revision 7992)
+++ /extensions/PHP_Optimisateur/files/header.php	(revision 7993)
@@ -5,9 +5,13 @@
 \***************************************/
 
+session_start();
 $APPversion = '1.1';
+$user_lang = GetLanguage();
+include('language/'.$user_lang['Lang'].'/'.$user_lang['Lang'].'.php');
+
 echo '<?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
@@ -16,4 +20,11 @@
 </head>
 <body>
-<div class="title">PHP Optimisateur '.$APPversion.'</div>';
+<div class="title">
+	PHP Optimisateur '.$APPversion;
+	
+	foreach ($user_lang['languages'] as $key) {
+		echo '<a class="lang" href="index.php?Lang='.$key.'"><img src="language/'.$key.'/'.$key.'.png"/></a>';
+	}
+	
+echo '</div>';
 ?>
Index: /extensions/PHP_Optimisateur/files/style.css
===================================================================
--- /extensions/PHP_Optimisateur/files/style.css	(revision 7992)
+++ /extensions/PHP_Optimisateur/files/style.css	(revision 7993)
@@ -21,4 +21,29 @@
 	float:left;
 }
+	div.title {
+		float:none;
+		width:942px;
+		font-weight:bold;
+		text-align:center;
+		font-size:1.5em;
+		background:#333;
+		color:#eee;
+		border-color:#eee;
+	}
+	div.files li {
+		margin-top:0;
+	}
+
+	div.finish  {
+		background:#DAFFBF;
+		font-weight:bold;
+		font-size:1.2em;
+	}
+
+	div.error {
+		background:#FFD0BF;
+		font-weight:bold;
+		font-size:1.2em;
+	}
 
 a {
@@ -29,9 +54,9 @@
 	margin-bottom:1px;
 }
-a:hover {
-	color:#555;
-	border-bottom:1px dotted #555;
-	margin-bottom:0;
-}
+	a:hover {
+		color:#555;
+		border-bottom:1px dotted #555;
+		margin-bottom:0;
+	}
 
 h2 {
@@ -42,37 +67,12 @@
 	margin:0 0 0 20px;
 }
-li {
-	margin-top:5px;
-}
-li ul li {
-	margin-top:0;
-}
+	li {
+		margin-top:5px;
+	}
+		li ul li {
+			margin-top:0;
+		}
 
-div.title {
-	float:none;
-	width:902px;
-	padding:10px 30px;
-	font-weight:bold;
-	text-align:center;
-	font-size:1.5em;
-	background:#333;
-	color:#eee;
-	border-color:#eee;
-}
-.files li {
-	margin-top:0;
-}
 
-.finish  {
-	background:#DAFFBF;
-	font-weight:bold;
-	font-size:1.2em;
-}
-
-.error {
-	background:#FFD0BF;
-	font-weight:bold;
-	font-size:1.2em;
-}
 
 input {
@@ -96,6 +96,6 @@
 	width:50%;
 }
-tr td:first-child {
-	text-align:right;
-	padding-right:5px;
-}
+	tr td:first-child {
+		text-align:right;
+		padding-right:5px;
+	}
Index: /extensions/PHP_Optimisateur/index.php
===================================================================
--- /extensions/PHP_Optimisateur/index.php	(revision 7992)
+++ /extensions/PHP_Optimisateur/index.php	(revision 7993)
@@ -8,6 +8,6 @@
 $TIME_START = microtime(true);
 
+include('files/functions.php');
 include('files/header.php');
-include('files/functions.php');
 
 
@@ -16,62 +16,70 @@
 // Fichier de configuration
 if (!file_exists('config.xml')) {
-	die('<div class="error">Erreur fatale : Fichier de configuration introuvable. <a href="index.php">Retour</a></div>');
+	$Errors['ErrorFile'] = true;
+	
+} else {
+	// Configuration
+	extract(load_config());
+
+	// Afficher la configuration
+	if (!$silentORNOT) {
+		include('files/display_config.php');
+	}
+
+	// Dossiers
+	if (!file_exists($DIRsource)) {
+		mkdir($DIRsource);
+	}
+	if (!file_exists($DIRsortie)) {
+		mkdir($DIRsortie);
+	}
+	if (is_dir_empty($DIRsource)) {
+		$Errors['ErrorFolderIn'] = true;
+	}
+	if ($silentORNOT) {
+		rrmdir($DIRsortie); // Si mode silencieux
+		mkdir($DIRsortie); // vidage automatique du dossier de sortie
+	} else if (!is_dir_empty($DIRsortie)) {
+		$Errors['ErrorFolderOut'] = true;
+	}
 }
 
-// Configuration
-$config = simplexml_load_file('config.xml');
-$config = XMLParse($config);
-$config = array_settype($config);
-extract($config);
-
-// Afficher la configuration
-if (!$silentORNOT) {
-	include('files/display_config.php');
+
+### ERREURS ###
+if (isset($Errors)) {
+	$i=0;
+	foreach ($Errors as $key => $null) {
+		// Dégueulasse les ternaires à la suite ! mais j'aime ça
+		echo '<div class="error">'.l10n($key).' '.(($i==0)?'<a href="index.php">'.l10n('Back').'</a> '.(($key!='ErrorFile')?'<a href="setup.php">'.l10n('Config').'</a></div>':'</div>'):'</div>');
+		$i++;
+	}
 }
 
-// Dossiers
-if (!file_exists($DIRsource)) {
-	mkdir($DIRsource);
-}
-if (!file_exists($DIRsortie)) {
-	mkdir($DIRsortie);
-}
-if (is_dir_empty($DIRsource)) {
-	die('<div class="error">Erreur fatale : Dossier source vide. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>');
-}
-if ($silentORNOT) {
-	rrmdir($DIRsortie); // Si mode silencieux
-	mkdir($DIRsortie); // vidage automatique du dossier de sortie
-} else if (!is_dir_empty($DIRsortie)) {
-	die('<div class="error">Erreur fatale : Dossier de sortie non vide. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>');
-}
-
 
 
 ### EXECUTION ###
-if (isset($_GET['Process'])) {
+if (isset($_GET['Process']) AND !isset($Errors)) {
 
 	### Supprimer les caractères spéciaux - dossiers & fichiers ###
-	if ($renameORNOT) {
-		function recursive_delete_special_car($dir) {
-			$dir = rtrim($dir, '/');
-			$dh = opendir($dir);
-			
-			while (($file = readdir($dh)) !== false ) {
-				if ($file !== '.' && $file !== '..') {
-					$path = $dir.'/'.$file;
-					$new_path = $dir.'/'.delete_special_car($file);
-					rename($path, $new_path);
-					
-					if (is_dir($new_path)) {
-						recursive_delete_special_car($new_path);
-					}
+	// Les caractères '%' et '$' sont systématiquement échappés, ca génère des bugs dans les noms de fichiers
+	function recursive_delete_special_car($dir) {
+		$dir = rtrim($dir, '/');
+		$dh = opendir($dir);
+		
+		while (($file = readdir($dh)) !== false ) {
+			if ($file !== '.' && $file !== '..') {
+				$path = $dir.'/'.$file;
+				$new_path = $dir.'/'.delete_special_car($file);
+				rename($path, $new_path);
+				
+				if (is_dir($new_path)) {
+					recursive_delete_special_car($new_path);
 				}
 			}
-			closedir($dh);
-		}
-
-		recursive_delete_special_car($DIRsource);
-	}
+		}
+		closedir($dh);
+	}
+
+	recursive_delete_special_car($DIRsource);
 
 
@@ -150,5 +158,5 @@
 	if (!$silentORNOT) {
 		echo '<div class="files">
-			<h2>Fichiers source</h2>
+			<h2>'.l10n('Source files').'</h2>
 			<ul>';
 				foreach ($FilesSource as $value) {
@@ -156,5 +164,5 @@
 				}
 			echo '</ul>
-			<i>'.count($FilesSource).' fichiers</i>
+			<i>'.l10n('%d files', count($FilesSource)).'</i>
 		</div>';
 	}
@@ -188,10 +196,10 @@
 
 
-	echo '<div class="finish">Opération terminée : '.intval((microtime(true)-$TIME_START)) .' secondes. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>';
+	echo '<div class="finish">'.l10n('Finish %d seconds', intval((microtime(true)-$TIME_START))).' <a href="index.php">'.l10n('Back').'</a> <a href="setup.php">'.l10n('Config').'</a></div>';
 
 	
 	
-} else {
-	echo '<div class="finish">Prêt à commencer. <a href="index.php?Process=true">Exécuter</a> <a href="setup.php">Configurer</a></div>';
+} else if (!isset($Errors)) {
+	echo '<div class="finish">'.l10n('Ready').' <a href="index.php?Process=true">'.l10n('Launch').'</a> <a href="setup.php">'.l10n('Config').'</a></div>';
 }
 
Index: /extensions/PHP_Optimisateur/language/en/en.php
===================================================================
--- /extensions/PHP_Optimisateur/language/en/en.php	(revision 7993)
+++ /extensions/PHP_Optimisateur/language/en/en.php	(revision 7993)
@@ -0,0 +1,58 @@
+<?php
+/***************************************\
+|			PHP OPTIMISATEUR			|
+|			   Version 1.1				|
+\***************************************/
+
+$Lang['ErrorFile'] = "Fatal error : Configuration file missing.";
+$Lang['ErrorFolderIn'] = "Fatal error : Source folder empty.";
+$Lang['ErrorFolderOut'] = "Fatal error : Exite folder not empty.";
+$Lang['Source files'] = "Files";
+$Lang['%d files'] = "%d files";
+$Lang['Finish %d seconds'] = "Process done : %d seconds.";
+$Lang['Ready'] = "Ready to launch.";
+$Lang['Launch'] = "Launch";
+$Lang['Config'] = "Configure";
+$Lang['Back'] = "Back";
+$Lang['Configuration'] = "Configuration";
+$Lang['Folders'] = "Folders";
+$Lang['FolderIn'] = "Source folder";
+$Lang['FolderOut'] = "Exit folder";
+$Lang['Options'] = "Options";
+$Lang['silentORNOT'] = "Silent mode";
+$Lang['DIRhighORNOT'] = "Create high-definition folders";
+$Lang['DIMhdORNOT'] = "Resize HD pictures";
+$Lang['renameORNOT'] = "Rename files and folders";
+$Lang['indexORNOT'] = "Add index.php files";
+$Lang['prefixe_mini'] = "Thumbnail prefix";
+$Lang['Sizes and quality'] = "Sizes and quality";
+$Lang['DIMhd'] = "HD pictures max size";
+$Lang['DIMnormal'] = "Normal pictures size";
+$Lang['DIMthumbnail'] = "Thumbnails size";
+$Lang['Qhd'] = "HD pistcures quality";
+$Lang['Qnormal'] = "Normal pictures quality";
+$Lang['Qthumbnail'] = "Thumbails quality";
+$Lang['DPI'] = "HD pictures resolution";
+$Lang['Copyright'] = "Copyright";
+$Lang['Content'] = "Content";
+$Lang['copyONhd'] = "On high-definition";
+$Lang['copyONnormal'] = "On normal";
+$Lang['copyPOS%s'] = "%sPosition";
+$Lang['copyPOSh'] = "Horizontal ";
+$Lang['copyPOSv'] = "Vertical ";
+$Lang['copySIZE'] = "Size (ratio image/text)";
+$Lang['copyCOLOR'] = "Color";
+$Lang['copyFONT'] = "Font";
+$Lang['Plugins'] = "Plugins";
+$Lang['PluginsBefore'] = "Plugins pre-processing";
+$Lang['PluginsProcess'] = "Plugins processing";
+$Lang['PluginsAfter'] = "Plugins post-processing";
+$Lang['yes'] = "yes";
+$Lang['no'] = "no";
+$Lang['top'] = "top";
+$Lang['center'] = "center";
+$Lang['bottom'] = "bottom";
+$Lang['left'] = "left";
+$Lang['right'] = "right";
+$Lang[''] = "";
+?>
Index: /extensions/PHP_Optimisateur/language/fr/fr.php
===================================================================
--- /extensions/PHP_Optimisateur/language/fr/fr.php	(revision 7993)
+++ /extensions/PHP_Optimisateur/language/fr/fr.php	(revision 7993)
@@ -0,0 +1,58 @@
+<?php
+/***************************************\
+|			PHP OPTIMISATEUR			|
+|			   Version 1.1				|
+\***************************************/
+
+$Lang['ErrorFile'] = "Erreur fatale : Fichier de configuration introuvable.";
+$Lang['ErrorFolderIn'] = "Erreur fatale : Dossier source vide.";
+$Lang['ErrorFolderOut'] = "Erreur fatale : Dossier de sortie non vide.";
+$Lang['Source files'] = "Fichiers";
+$Lang['%d files'] = "%d fichiers";
+$Lang['Finish %d seconds'] = "Opération terminée : %d secondes.";
+$Lang['Ready'] = "Prêt à commencer.";
+$Lang['Launch'] = "Exécuter";
+$Lang['Config'] = "Configurer";
+$Lang['Back'] = "Retour";
+$Lang['Configuration'] = "Configuration";
+$Lang['Folders'] = "Répertoires";
+$Lang['FolderIn'] = "Répertoire source";
+$Lang['FolderOut'] = "Répertoire de sortie";
+$Lang['Options'] = "Options";
+$Lang['silentORNOT'] = "Mode silencieux";
+$Lang['DIRhighORNOT'] = "Créer le dossier haute définition";
+$Lang['DIMhdORNOT'] = "Redimensionner les images HD";
+$Lang['renameORNOT'] = "Renommer les fichiers";
+$Lang['indexORNOT'] = "Ajouter les fichiers index.php";
+$Lang['prefixe_mini'] = "Préfixe des miniatures";
+$Lang['Sizes and quality'] = "Tailles et qualité";
+$Lang['DIMhd'] = "Taille maximale des images HD";
+$Lang['DIMnormal'] = "Taille des images normales";
+$Lang['DIMthumbnail'] = "Taille des miniatures";
+$Lang['Qhd'] = "Qualité des images HD";
+$Lang['Qnormal'] = "Qualité des images normales";
+$Lang['Qthumbnail'] = "Qualité des miniatures";
+$Lang['DPI'] = "Résolution des images HD";
+$Lang['Copyright'] = "Copyright";
+$Lang['Content'] = "Texte";
+$Lang['copyONhd'] = "Sur les images HD";
+$Lang['copyONnormal'] = "Sur les images normales";
+$Lang['copyPOS%s'] = "Position%s";
+$Lang['copyPOSh'] = " horizontale";
+$Lang['copyPOSv'] = " verticale";
+$Lang['copySIZE'] = "Taille (ratio image/texte)";
+$Lang['copyCOLOR'] = "Couleur";
+$Lang['copyFONT'] = "Police";
+$Lang['Plugins'] = "Plugins";
+$Lang['PluginsBefore'] = "Plugins pré-processing";
+$Lang['PluginsProcess'] = "Plugins processing";
+$Lang['PluginsAfter'] = "Plugins post-processing";
+$Lang['yes'] = "oui";
+$Lang['no'] = "non";
+$Lang['top'] = "haut";
+$Lang['center'] = "milieu";
+$Lang['bottom'] = "bas";
+$Lang['left'] = "gauche";
+$Lang['right'] = "droite";
+$Lang[''] = "";
+?>
Index: /extensions/PHP_Optimisateur/setup.php
===================================================================
--- /extensions/PHP_Optimisateur/setup.php	(revision 7992)
+++ /extensions/PHP_Optimisateur/setup.php	(revision 7993)
@@ -15,4 +15,6 @@
 	if(!isset($_POST['PluginsProcess'])) $_POST['PluginsProcess'] = null;
 	if(!isset($_POST['PluginsAfter'])) $_POST['PluginsAfter'] = null;
+	if (!preg_match('#(.*)/$#', $_POST['DIRsource'])) $_POST['DIRsource'] .= '/';
+	if (!preg_match('#(.*)/$#', $_POST['DIRsortie'])) $_POST['DIRsortie'] .= '/';
 	
 	// Contenu du fichier
@@ -28,238 +30,254 @@
 include('files/header.php');
 
-
 // Fichier de configuration
 if (!file_exists('config.xml')) {
-	die('<div class="error">Erreur fatale : Fichier de configuration introuvable. <a href="index.php">Retour</a></div>');
-}
-
-// Configuration
-$config = simplexml_load_file('config.xml');
-$config = XMLParse($config);
-$config = array_settype($config);
-extract($config);
-
-$copyCOLOR = explode(' ', $copyCOLOR);
-$copyPOS = explode('-', $copyPOS);
-
-
-### Gestion des nouveaux plugins ###
-// Ajoute la configuration des plugins non-installés aux tableaux, il faut valider le formulaire pour les installer
-$Plugins = glob('plugins/*.xml');
-$NewPlugins = array();
-
-foreach ($Plugins as $plugin) {
-	// nom du plugin
-	preg_match('#plugins/(.*).xml#', $plugin, $matches);
-	$plugin_name = $matches[1];
-	// configuration du plugin
-	$plugin = XMLparse(simplexml_load_file($plugin));
-	// mode du plugin (effacage pour pas l'inscrire dans la config)
-	$plugin_mode = $plugin['mode'];
-	unset($plugin['mode']);
-	
-	if (!array_key_exists($plugin_name, ${$plugin_mode})) {
-		${$plugin_mode}[$plugin_name] = $plugin;
-		$NewPlugins[$plugin_name] = true;
+	$Errors['ErrorFile'] = true;
+}
+
+
+
+### ERREURS ###
+if (isset($Errors)) {
+	$i=0;
+	foreach ($Errors as $key => $null) {
+		// Dégueulasse les ternaires à la suite ! mais j'aime ça
+		echo '<div class="error">'.l10n($key).' '.(($i==0)?'<a href="setup.php">'.l10n('Back').'</a></div>':'</div>');
+		$i++;
 	}
 }
 
 
-### Formulaire ###
-echo '
-<script type="text/javascript">
-	function suivant(enCours, suivant, limite) {
-		if (enCours.value.length == limite) {
-			enCours.form.elements[suivant].select();
+
+### EXECUTION ###
+if (!isset($Errors)) {
+	// Configuration
+	extract(load_config());
+
+	$copyCOLOR = explode(' ', $copyCOLOR);
+	$copyPOS = explode('-', $copyPOS);
+
+
+	### Gestion des nouveaux plugins ###
+	// Ajoute la configuration des plugins non-installés aux tableaux, il faut valider le formulaire pour les installer
+	$Plugins = glob('plugins/*.xml');
+	$NewPlugins = array();
+
+	foreach ($Plugins as $plugin) {
+		// nom du plugin
+		preg_match('#plugins/(.*).xml#', $plugin, $matches);
+		$plugin_name = $matches[1];
+		// configuration du plugin
+		$plugin = XMLparse(simplexml_load_file($plugin));
+		// mode du plugin (effacage pour pas l'inscrire dans la config)
+		$plugin_mode = $plugin['mode'];
+		unset($plugin['mode']);
+		
+		if (!array_key_exists($plugin_name, ${$plugin_mode})) {
+			${$plugin_mode}[$plugin_name] = $plugin;
+			$NewPlugins[$plugin_name] = true;
 		}
 	}
-</script>
-	
-<form action="setup.php" method="post">
-<div class="config">
-	<h2>Configuration</h2>
-	<ul>
-		<li>
-			<span class="title">Répertoires</span>
-			<table>
-				<tr>
-					<td><b>Répertoire source :</b></td>
-					<td><input type="text" name="DIRsource" value="'.$DIRsource.'"/></td>
-				</tr>
-				<tr>
-					<td><b>Répertoire de sortie :</b></td>
-					<td><input type="text" name="DIRsortie" value="'.$DIRsortie.'"/></td>
-				</tr>
-			</table>
-		</li>
-		<li>
-			<span class="title">Options</span>
-			<table>
-				<tr>
-					<td><b>Mode silencieux :</b></td>
-					<td><input type="radio" name="silentORNOT" value="true" '.(($silentORNOT)?'checked':'').'/> oui <input type="radio" name="silentORNOT" value="false" '.((!$silentORNOT)?'checked':'').'/> non</td>
-				</tr>
-				<tr>
-					<td><b>Créer le dossier haute définition :</b></td>
-					<td><input type="radio" name="DIRhighORNOT" value="true" '.(($DIRhighORNOT)?'checked':'').'/> oui <input type="radio" name="DIRhighORNOT" value="false" '.((!$DIRhighORNOT)?'checked':'').'/> non</td>
-				</tr>
-				<tr>
-					<td><b>Redimensionner les images HD :</b></td>
-					<td><input type="radio" name="DIMhdORNOT" value="true" '.(($DIMhdORNOT)?'checked':'').'/> oui <input type="radio" name="DIMhdORNOT" value="false" '.((!$DIMhdORNOT)?'checked':'').'/> non</td>
-				</tr>
-				<tr>
-					<td><b>Renommer les fichiers :</b></td>
-					<td><input type="radio" name="renameORNOT" value="true" '.(($renameORNOT)?'checked':'').'/> oui <input type="radio" name="renameORNOT" value="false" '.((!$renameORNOT)?'checked':'').'/> non</td>
-				</tr>
-				<tr>
-					<td><b>Ajouter les fichiers index.php :</b></td>
-					<td><input type="radio" name="indexORNOT" value="true" '.(($indexORNOT)?'checked':'').'/> oui <input type="radio" name="indexORNOT" value="false" '.((!$indexORNOT)?'checked':'').'/> non</td>
-				</tr>
-				<tr>
-					<td><b>Préfixe des miniatures :</b></td>
-					<td><input type="text" name="prefixe_mini" value="'.$prefixe_mini.'" size="8"/></td>
-				</tr>
-			</table>
-		</li>
-		<li>
-			<span class="title">Tailles et qualité</span>
-			<table>
-				<tr>
-					<td><b>Taille maximale des images HD :</b></td>
-					<td><input type="text" name="DIMhd" value="'.$DIMhd.'" size="4"/></td>
-				</tr>
-				<tr>
-					<td><b>Taille des images normales :</b></td>
-					<td><input type="text" name="DIMnormal" value="'.$DIMnormal.'" size="3"/></td>
-				</tr>
-				<tr>
-					<td><b>Taille des miniatures :</b></td>
-					<td><input type="text" name="DIMthumbnail" value="'.$DIMthumbnail.'" size="3"/></td>
-				</tr>
-				<tr>
-					<td><b>Qualité des images HD :</b></td>
-					<td><input type="text" name="Qhd" value="'.$Qhd.'" size="3"/></td>
-				</tr>
-				<tr>
-					<td><b>Qualité des images normales :</b></td>
-					<td><input type="text" name="Qnormal" value="'.$Qnormal.'" size="3"/></td>
-				</tr>
-				<tr>
-					<td><b>Qualité des miniatures :</b></td>
-					<td><input type="text" name="Qthumbnail" value="'.$Qthumbnail.'" size="3"/></td>
-				</tr>
-				<tr>
-					<td><b>Résolution des images HD :</b></td>
-					<td><input type="text" name="DPI" value="'.$DPI.'" size="3"/></td>
-				</tr>
-			</table>
-		</li>
-		<li>
-			<span class="title">Copyright</span>
-			<table>
-				<tr>
-					<td><b>Texte :</b></td>
-					<td><input type="text" name="copyright" value="'.$copyright.'"/></td>
-				</tr>
-				<tr>
-					<td><b>Sur les images HD :</b></td>
-					<td><input type="radio" name="copyONhd" value="true" '.(($copyONhd)?'checked':'').'/> oui <input type="radio" name="copyONhd" value="false" '.((!$copyONhd)?'checked':'').'/> non</td>
-				</tr>
-				<tr>
-					<td><b>Sur les images normales :</b></td>
-					<td><input type="radio" name="copyONnormal" value="true" '.(($copyONnormal)?'checked':'').'/> oui <input type="radio" name="copyONnormal" value="false" '.((!$copyONnormal)?'checked':'').'/> non</td>
-				</tr>
-				<tr>
-					<td><b>Position verticale :</b></td>
-					<td><input type="radio" name="copyPOS[0]" value="top" '.(($copyPOS[0]=='top')?'checked':'').'/> haut <input type="radio" name="copyPOS[0]" value="center" '.(($copyPOS[0]=='center')?'checked':'').'/> milieu <input type="radio" name="copyPOS[0]" value="bottom" '.(($copyPOS[0]=='bottom')?'checked':'').'/> bas</td>
-				</tr>
-				<tr>
-					<td><b>Position horizontale :</b></td>
-					<td><input type="radio" name="copyPOS[1]" value="left" '.(($copyPOS[1]=='left')?'checked':'').'/> gauche <input type="radio" name="copyPOS[1]" value="center" '.(($copyPOS[1]=='center')?'checked':'').'/> milieu <input type="radio" name="copyPOS[1]" value="right" '.(($copyPOS[1]=='right')?'checked':'').'/> droite</td>
-				</tr>
-				<tr>
-					<td><b>Taille (ratio image/texte) :</b></td>
-					<td><input type="text" name="copySIZE" value="'.$copySIZE.'" size="5"/></td>
-				</tr>
-				<tr>
-					<td><b>Couleur :</b></td>
-					<td>
-						<input type="text" name="copyCOLOR[0]" value="'.$copyCOLOR[0].'" size="3" onFocus="this.select();" onKeyUp="suivant(this,\'copyCOLOR[1]\', 3)"/>
-						<input type="text" name="copyCOLOR[1]" value="'.$copyCOLOR[1].'" size="3" onFocus="this.select();" onKeyUp="suivant(this,\'copyCOLOR[2]\', 3)"/>
-						<input type="text" name="copyCOLOR[2]" value="'.$copyCOLOR[2].'" size="3" onFocus="this.select();" />
-					</td>
-				</tr>
-				<tr>
-					<td><b>Police :</b></td>
-					<td><input type="text" name="copyFONT" value="'.$copyFONT.'"/></td>
-				</tr>
-			</table>
-		</li>
+
+
+	### Formulaire ###
+	echo '
+	<script type="text/javascript">
+		function suivant(enCours, suivant, limite) {
+			if (enCours.value.length == limite) {
+				enCours.form.elements[suivant].select();
+			}
+		}
+	</script>
+		
+	<form action="setup.php" method="post">
+	<div class="config">
+		<h2>'.l10n('Configuration').'</h2>
+		<ul>
+			<li>
+				<span class="title">'.l10n('Folders').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('FolderIn').' :</b></td>
+						<td><input type="text" name="DIRsource" value="'.$DIRsource.'"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('FolderOut').' :</b></td>
+						<td><input type="text" name="DIRsortie" value="'.$DIRsortie.'"/></td>
+					</tr>
+				</table>
+			</li>
+			<li>
+				<span class="title">'.l10n('Options').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('silentORNOT').' :</b></td>
+						<td><input type="radio" name="silentORNOT" value="true" '.(($silentORNOT)?'checked':'').'/> '.l10n('yes').' <input type="radio" name="silentORNOT" value="false" '.((!$silentORNOT)?'checked':'').'/> '.l10n('no').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DIRhighORNOT').' :</b></td>
+						<td><input type="radio" name="DIRhighORNOT" value="true" '.(($DIRhighORNOT)?'checked':'').'/> '.l10n('yes').' <input type="radio" name="DIRhighORNOT" value="false" '.((!$DIRhighORNOT)?'checked':'').'/> '.l10n('no').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DIMhdORNOT').' :</b></td>
+						<td><input type="radio" name="DIMhdORNOT" value="true" '.(($DIMhdORNOT)?'checked':'').'/> '.l10n('yes').' <input type="radio" name="DIMhdORNOT" value="false" '.((!$DIMhdORNOT)?'checked':'').'/> '.l10n('no').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('renameORNOT').' :</b></td>
+						<td><input type="radio" name="renameORNOT" value="true" '.(($renameORNOT)?'checked':'').'/> '.l10n('yes').' <input type="radio" name="renameORNOT" value="false" '.((!$renameORNOT)?'checked':'').'/> '.l10n('no').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('indexORNOT').' :</b></td>
+						<td><input type="radio" name="indexORNOT" value="true" '.(($indexORNOT)?'checked':'').'/> '.l10n('yes').' <input type="radio" name="indexORNOT" value="false" '.((!$indexORNOT)?'checked':'').'/> '.l10n('no').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('prefixe_mini').' :</b></td>
+						<td><input type="text" name="prefixe_mini" value="'.$prefixe_mini.'" size="8"/></td>
+					</tr>
+				</table>
+			</li>
+			<li>
+				<span class="title">'.l10n('Sizes and quality').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('DIMhd').' :</b></td>
+						<td><input type="text" name="DIMhd" value="'.$DIMhd.'" size="4"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DIMnormal').' :</b></td>
+						<td><input type="text" name="DIMnormal" value="'.$DIMnormal.'" size="3"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DIMthumbnail').' :</b></td>
+						<td><input type="text" name="DIMthumbnail" value="'.$DIMthumbnail.'" size="3"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('Qhd').' :</b></td>
+						<td><input type="text" name="Qhd" value="'.$Qhd.'" size="3"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('Qnormal').' :</b></td>
+						<td><input type="text" name="Qnormal" value="'.$Qnormal.'" size="3"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('Qthumbnail').' :</b></td>
+						<td><input type="text" name="Qthumbnail" value="'.$Qthumbnail.'" size="3"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('DPI').' :</b></td>
+						<td><input type="text" name="DPI" value="'.$DPI.'" size="3"/></td>
+					</tr>
+				</table>
+			</li>
+			<li>
+				<span class="title">'.l10n('Copyright').'</span>
+				<table>
+					<tr>
+						<td><b>'.l10n('Content').' :</b></td>
+						<td><input type="text" name="copyright" value="'.$copyright.'"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyONhd').' :</b></td>
+						<td><input type="radio" name="copyONhd" value="true" '.(($copyONhd)?'checked':'').'/> '.l10n('yes').' <input type="radio" name="copyONhd" value="false" '.((!$copyONhd)?'checked':'').'/> '.l10n('no').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyONnormal').' :</b></td>
+						<td><input type="radio" name="copyONnormal" value="true" '.(($copyONnormal)?'checked':'').'/> '.l10n('yes').' <input type="radio" name="copyONnormal" value="false" '.((!$copyONnormal)?'checked':'').'/> '.l10n('no').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyPOS%s', l10n('copyPOSv')).' :</b></td>
+						<td><input type="radio" name="copyPOS[0]" value="top" '.(($copyPOS[0]=='top')?'checked':'').'/> '.l10n('top').' <input type="radio" name="copyPOS[0]" value="center" '.(($copyPOS[0]=='center')?'checked':'').'/> '.l10n('center').' <input type="radio" name="copyPOS[0]" value="bottom" '.(($copyPOS[0]=='bottom')?'checked':'').'/> '.l10n('bottom').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyPOS%s', l10n('copyPOSh')).' :</b></td>
+						<td><input type="radio" name="copyPOS[1]" value="left" '.(($copyPOS[1]=='left')?'checked':'').'/> '.l10n('left').' <input type="radio" name="copyPOS[1]" value="center" '.(($copyPOS[1]=='center')?'checked':'').'/> '.l10n('center').' <input type="radio" name="copyPOS[1]" value="right" '.(($copyPOS[1]=='right')?'checked':'').'/> '.l10n('right').'</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copySIZE').' :</b></td>
+						<td><input type="text" name="copySIZE" value="'.$copySIZE.'" size="5"/></td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyCOLOR').' :</b></td>
+						<td>
+							<input type="text" name="copyCOLOR[0]" value="'.$copyCOLOR[0].'" size="3" onFocus="this.select();" onKeyUp="suivant(this,\'copyCOLOR[1]\', 3)"/>
+							<input type="text" name="copyCOLOR[1]" value="'.$copyCOLOR[1].'" size="3" onFocus="this.select();" onKeyUp="suivant(this,\'copyCOLOR[2]\', 3)"/>
+							<input type="text" name="copyCOLOR[2]" value="'.$copyCOLOR[2].'" size="3" onFocus="this.select();" />
+						</td>
+					</tr>
+					<tr>
+						<td><b>'.l10n('copyFONT').' :</b></td>
+						<td><input type="text" name="copyFONT" value="'.$copyFONT.'"/></td>
+					</tr>
+				</table>
+			</li>
 		</ul>
-</div>
-
-<div class="config">
-	<h2>Plugins</h2>
-	<ul>
-		<li>
-			<span class="title">Plugins pré-processing</span>
-			<ul>';
-				foreach ($PluginsBefore as $name => $config) {
-					echo '<li>
-						<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
-						<table>';
-							foreach ($config as $key => $value) {
-								echo '<tr>
-									<td>'.$key.' :</td>
-									<td><input type="text" name="PluginsBefore['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
-								</tr>';
-							}
-						echo '</table>
-					</li>';
-				}
-			echo '</ul>
-		</li>
-		<li>
-			<span class="title">Plugins processing</span>
-			<ul>';
-				foreach ($PluginsProcess as $name => $config) {
-					echo '<li>
-						<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
-						<table>';
-							foreach ($config as $key => $value) {
-								echo '<tr>
-									<td>'.$key.' :</td>
-									<td><input type="text" name="PluginsProcess['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
-								</tr>';
-							}
-						echo '</table>
-					</li>';
-				}
-			echo '</ul>
-		</li>
-		<li>
-			<span class="title">Plugins post-processing</span>
-			<ul>';
-				foreach ($PluginsAfter as $name => $config) {
-					echo '<li>
-						<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
-						<table>';
-							foreach ($config as $key => $value) {
-								echo '<tr>
-									<td>'.$key.' :</td>
-									<td><input type="text" name="PluginsAfter['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
-								</tr>';
-							}
-						echo '</table>
-					</li>';
-				}
-			echo '</ul>
-		</li>
-	</ul>
-</div>
-
-<div class="finish">	
-	<input type="submit"/> <input type="reset"/> <a href="index.php">Retour</a>
-</div>
-</form>';
+	</div>
+
+	<div class="config">
+		<h2>'.l10n('Plugins').'</h2>
+		<ul>
+			<li>
+				<span class="title">'.l10n('PluginsBefore').'</span>
+				<ul>';
+					foreach ($PluginsBefore as $name => $config) {
+						echo '<li>
+							<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
+							<table>';
+								foreach ($config as $key => $value) {
+									echo '<tr>
+										<td>'.$key.' :</td>
+										<td><input type="text" name="PluginsBefore['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
+									</tr>';
+								}
+							echo '</table>
+						</li>';
+					}
+				echo '</ul>
+			</li>
+			<li>
+				<span class="title">'.l10n('PluginsProcess').'</span>
+				<ul>';
+					foreach ($PluginsProcess as $name => $config) {
+						echo '<li>
+							<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
+							<table>';
+								foreach ($config as $key => $value) {
+									echo '<tr>
+										<td>'.$key.' :</td>
+										<td><input type="text" name="PluginsProcess['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
+									</tr>';
+								}
+							echo '</table>
+						</li>';
+					}
+				echo '</ul>
+			</li>
+			<li>
+				<span class="title">'.l10n('PluginsAfter').'</span>
+				<ul>';
+					foreach ($PluginsAfter as $name => $config) {
+						echo '<li>
+							<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
+							<table>';
+								foreach ($config as $key => $value) {
+									echo '<tr>
+										<td>'.$key.' :</td>
+										<td><input type="text" name="PluginsAfter['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
+									</tr>';
+								}
+							echo '</table>
+						</li>';
+					}
+				echo '</ul>
+			</li>
+		</ul>
+	</div>
+
+	<div class="finish">	
+		<input type="submit"/> <input type="reset"/> <a href="index.php">'.l10n('Back').'</a>
+	</div>
+	</form>';
+}
+
+echo '</body>
+</html>';
 ?>
