Added {Select_a_host} to the lang files.
[BackupPC.git] / lib / BackupPC / Lang / fr.pm
index e0afdda..8d32c24 100644 (file)
@@ -1,30 +1,75 @@
-#!/usr/bin/perl -w
+#!/bin/perl
 
-#my %lang;
+#my %Lang;
 #use strict;
 
 # --------------------------------
 
-$Lang{Start_Full_Backup} = "Démarrer sauvegarde complète";
-$Lang{Start_Incr_Backup} = "Départ de la sauvegarde incrémentale";
-$Lang{Stop_Dequeue_Backup} = "Arrêter/annuler sauvegarde";
-$Lang{Restore} = "Restore";
+$Lang{Start_Archive} = "Démarrer l'archivage";
+$Lang{Stop_Dequeue_Archive} = "Arrêt/Mise en attente de l'archivage";
+$Lang{Start_Full_Backup} = "Démarrer la sauvegarde complète";
+$Lang{Start_Incr_Backup} = "Démarrer la sauvegarde incrémentielle";
+$Lang{Stop_Dequeue_Backup} = "Arrêter/annuler la sauvegarde";
+$Lang{Restore} = "Restaurer";
+
+$Lang{Type_full} = "complète";
+$Lang{Type_incr} = "incrémentielle";
 
 # -----
 
-$Lang{H_BackupPC_Server_Status} = "Status du serveur BackupPC";
-$Lang{BackupPC_Server_Status}= <<EOF;
+$Lang{Only_privileged_users_can_view_admin_options} = "Seulement les usagers ayant les privilèges appropriés peuvent voir les options d'administration.";
+$Lang{H_Admin_Options} = "BackupPC: Options d'administration";
+$Lang{Admin_Options} = "Options d'administration";
+$Lang{Admin_Options_Page} = <<EOF;
+\${h1(qq{$Lang{Admin_Options}})}
+<br>
+\${h1("Server Control")}
+<form action="\$MyURL" method="get">
+<table>
+  <tr><td>Arrêter le serveur:<td><input type="submit" name="action" value="Arrêter">
+  <tr><td>Recharger la configuration:<td><input type="submit" name="action" value="Recharger">
+</table>
+</form>
+\${h1("Server Configuration")}
+<ul>
+  <li><i>Other options can go here... e.g.,</i>
+  <li>Edit server configuration
+</ul>
+EOF
+$Lang{Unable_to_connect_to_BackupPC_server} = "Impossible de se connecter au serveur BackupPC",
+            "Ce script CGI (\$MyURL) est incapable de se connecter au serverur BackupPC"
+          . " sur \$Conf{ServerHost} au port \$Conf{ServerPort}.  L'erreur"
+          . " est: \$err."
+          . " Il est possible que le serveur BackupPC ne roule pas ou qu'il y a une erreur "
+          . " de configuration. Veuillez contacter votre administrateur système.";
+$Lang{Admin_Start_Server} = <<EOF;
+\${h1(qq{$Lang{Unable_to_connect_to_BackupPC_server}})}
+<form action="\$MyURL" method="get">
+Le serveur BackupPC sur <tt>\$Conf{ServerHost}</tt> aur port <tt>\$Conf{ServerPort}</tt>
+n'est pas en fonction (vous l'avez peut-être arrêté, ou vous ne l'avez pas encore démarré).<br>
+Voulez-vous le démarrer
+<input type="hidden" name="action" value="startServer">
+<input type="submit" value="Démarrer le serveur" name="ignore">
+</form>
+EOF
+
+# -----
 
+$Lang{H_BackupPC_Server_Status} = "État du serveur BackupPC";
+
+$Lang{BackupPC_Server_Status}= <<EOF;
 \${h1(qq{$Lang{H_BackupPC_Server_Status}})}
+
 <p>
-\${h2(\"Informations Générales du serveur\")}
+\${h2(\"Informations générales du serveur\")}
 
 <ul>
 <li> Le PID du serveur est \$Info{pid}, sur l\'hôte \$Conf{ServerHost},
      version \$Info{Version}, démarré le \$serverStartTime.
 <li> Ce rapport à été généré le \$now.
-<li> La prochaine file d\'attente sera remplie le \$nextWakeupTime.
-<li> Autres info:
+<li> La configuration a été chargée pour la dernière fois à \$configLoadTime.
+<li> La prochaine file d\'attente sera remplie à \$nextWakeupTime.
+<li> Autres infos:
     <ul>
         <li>\$numBgQueue demandes de sauvegardes en attente depuis le dernier réveil automatique,
         <li>\$numUserQueue requêtes de sauvegardes utilisateur en attente,
@@ -38,23 +83,23 @@ $Lang{BackupPC_Server_Status}= <<EOF;
 
 \${h2("Travaux en cours d'exécution")}
 <p>
-<table border>
-<tr><td> Hôte </td>
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
+<tr class="tableheader"><td> Hôte </td>
     <td> Type </td>
     <td> Utilisateur </td>
     <td> Date de départ </td>
     <td> Commande </td>
     <td align="center"> PID </td>
-    <td> Xfer PID </td>
-    \$tarPidHdr</tr>
+    <td align="center"> PID du transfert </td>
+    </tr>
 \$jobStr
 </table>
 <p>
 
 \${h2("Échecs qui demandent de l'attention")}
 <p>
-<table border>
-<tr><td align="center"> Hôte </td>
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
+<tr class="tableheader"><td align="center"> Hôte </td>
     <td align="center"> Type </td>
     <td align="center"> Utilisateur </td>
     <td align="center"> Dernier essai </td>
@@ -67,61 +112,163 @@ EOF
 
 # --------------------------------
 $Lang{BackupPC__Server_Summary} = "BackupPC: Résumé du serveur";
+$Lang{BackupPC__Archive} = "BackupPC: Archivage";
 $Lang{BackupPC_Summary}=<<EOF;
 
 \${h1(qq{$Lang{BackupPC__Server_Summary}})}
 <p>
 Ce statut a été généré le \$now.
-<p>
+</p>
 
 \${h2("Hôtes avec de bonnes sauvegardes")}
 <p>
-Il y a \$hostCntGood hôtes ayant été sauvegardés, avec un total de :
+Il y a \$hostCntGood hôtes ayant été sauvegardés, pour un total de :
 <ul>
-<li> \$fullTot sauvegardes complètes de tailles cumulées \${fullSizeTot} Go
-     (précédant le hachage et la compression),
-<li> \$incrTot sauvegardes incrémentales de tailles cumulées \${incrSizeTot} Go
-     (précédant le hachage et la compression).
+<li> \$fullTot sauvegardes complètes de tailles cumulées de \${fullSizeTot} Go
+     (précédant la mise en commun et la compression),
+<li> \$incrTot sauvegardes incrémentielles de tailles cumulées de \${incrSizeTot} Go
+     (précédant la mise en commun et la compression).
 </ul>
-<table border>
-<tr><td> Hôte </td>
+</p>
+<table class="tableStnd" border cellpadding="3" cellspacing="1">
+<tr class="tableheader"><td> Hôte </td>
     <td align="center"> Utilisateur </td>
-    <td align="center"> nb complètes </td>
-    <td align="center"> complètes Âge/Jours </td>
-    <td align="center"> complètes Taille/Go </td>
+    <td align="center"> Nb complètes </td>
+    <td align="center"> Complètes Âge/Jours </td>
+    <td align="center"> Complètes Taille/Go </td>
     <td align="center"> Vitesse Mo/sec </td>
-    <td align="center"> nb incrémentales </td>
-    <td align="center"> Incr Age/Jours </td>
-    <td align="center"> État actuel</td>
+    <td align="center"> Nb incrémentielles </td>
+    <td align="center"> Incrémentales Âge/Jours </td>
+    <td align="center"> État actuel </td>
     <td align="center"> Dernière tentative </td></tr>
 \$strGood
 </table>
-<p>
-
+<br><br>
 \${h2("Hôtes sans sauvegardes")}
 <p>
 Il y a \$hostCntNone hôtes sans sauvegardes.
 <p>
-<table border>
-<tr><td> Hôte </td>
+<table class="tableStnd" border cellpadding="3" cellspacing="1">
+<tr class="tableheader"><td> Hôte </td>
     <td align="center"> Utilisateur </td>
     <td align="center"> Nb complètes </td>
-    <td align="center"> Complètes Age/jour </td>
+    <td align="center"> Complètes Âge/jour </td>
     <td align="center"> Complètes Taille/Go </td>
     <td align="center"> Vitesse Mo/sec </td>
-    <td align="center"> Nb incrémentales </td>
-    <td align="center"> Incrémentales Age/jours </td>
+    <td align="center"> Nb incrémentielles </td>
+    <td align="center"> Incrémentielles Âge/jours </td>
     <td align="center"> État actuel </td>
     <td align="center"> Dernière tentative </td></tr>
 \$strNone
 </table>
 EOF
 
+$Lang{BackupPC_Archive}=<<EOF;
+\${h1(qq{$Lang{BackupPC__Archive}})}
+<script language="javascript" type="text/javascript">
+<!--
+
+    function checkAll(location)
+    {
+      for (var i=0;i<document.form1.elements.length;i++)
+      {
+        var e = document.form1.elements[i];
+        if ((e.checked || !e.checked) && e.name != \'all\') {
+            if (eval("document.form1."+location+".checked")) {
+                e.checked = true;
+            } else {
+                e.checked = false;
+            }
+        }
+      }
+    }
+
+    function toggleThis(checkbox)
+    {
+       var cb = eval("document.form1."+checkbox);
+       cb.checked = !cb.checked;
+    }
+
+//-->
+</script>
+
+Il y a \$hostCntGood hôtes qui ont étés sauvegardés représentant \${fullSizeTot} Go
+<p>
+<form name="form1" method="post" action="\$MyURL">
+<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
+<input type="hidden" name="type" value="1">
+<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
+<input type="hidden" name="action" value="Archive">
+<table class="tableStnd" border cellpadding="3" cellspacing="1">
+<tr class="tableheader"><td align=center> Host</td>
+    <td align="center"> Usager </td>
+    <td align="center"> Taille </td>
+\$strGood
+\$checkAllHosts
+</table>
+</form>
+<p>
+
+EOF
+
+$Lang{BackupPC_Archive2}=<<EOF;
+\${h1(qq{$Lang{BackupPC__Archive}})}
+Prêt à démarrer l'archivage des hôtes suivants
+<ul>
+\$HostListStr
+</ul>
+<form action="\$MyURL" method="post">
+\$hiddenStr
+<input type="hidden" name="action" value="Archive">
+<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
+<input type="hidden" name="type" value="2">
+<input type="hidden" value="0" name="archive_type">
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
+\$paramStr
+<tr>
+    <td colspan=2><input type="submit" value="Démarrer l'archivage" name=""></td>
+</tr>
+</form>
+</table>
+EOF
+
+$Lang{BackupPC_Archive2_location} = <<EOF;
+<tr>
+    <td>Dispositif/Localisation de l'archive</td>
+    <td><input type="text" value="\$ArchiveDest" name="archive_device"></td>
+</tr>
+EOF
+
+$Lang{BackupPC_Archive2_compression} = <<EOF;
+<tr>
+    <td>Compression</td>
+    <td>
+    <input type="radio" value="0" name="compression" \$ArchiveCompNone>Aucune<br>
+    <input type="radio" value="1" name="compression" \$ArchiveCompGzip>gzip<br>
+    <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2
+    </td>
+</tr>
+EOF
+
+$Lang{BackupPC_Archive2_parity} = <<EOF;
+<tr>
+    <td>Nombre de fichiers de parité</td>
+    <td><input type="numeric" value="\$ArchivePar" name="par"></td>
+</tr>
+EOF
+
+$Lang{BackupPC_Archive2_split} = <<EOF;
+<tr>
+    <td>Scinder le fichier en fichiers de</td>
+    <td><input type="numeric" value="\$ArchiveSplit" name="splitsize">Mega octets</td>
+</tr>
+EOF
+
 # -----------------------------------
 $Lang{Pool_Stat} = <<EOF;
-        <li>Le disque dispose de \${poolSize} Go avec \$info->{"\${name}FileCnt"} fichiers
-            et \$info->{"\${name}DirCnt"} repertoires (depuis le \$poolTime),
-        <li>Le hachage des fichiers donne \$info->{"\${name}FileCntRep"} fichiers répétés
+        <li>La mise en commun est constituée de \$info->{"\${name}FileCnt"} fichiers
+            et \$info->{"\${name}DirCnt"} repertoires représentant \${poolSize} Go (depuis le \$poolTime),
+        <li>Le hachage de mise en commun des fichiers donne \$info->{"\${name}FileCntRep"} fichiers répétés
             avec comme plus longue chaîne \$info->{"\${name}FileRepMax"},
         <li>Le nettoyage nocturne a effacé \$info->{"\${name}FileCntRm"} fichiers, soit
             \${poolRmSize} Go (vers \$poolTime),
@@ -141,9 +288,9 @@ EOF
 $Lang{BackupPC__Start_Backup_Confirm_on__host} = "BackupPC: Confirmation du départ de la sauvegarde de \$host";
 # --------------------------------
 $Lang{Are_you_sure_start} = <<EOF;
-\${h1("Êtes vous sur")}
+\${h1("Êtes vous certain ?")}
 <p>
-Vous allez bientôt démarrer une sauvegarde <i>\$type</i> depuis \$host.
+Vous allez bientôt démarrer une sauvegarde \$type depuis \$host.
 
 <form action="\$MyURL" method="get">
 <input type="hidden" name="host" value="\$host">
@@ -159,7 +306,7 @@ $Lang{BackupPC__Stop_Backup_Confirm_on__host} = "BackupPC: Confirmer l\'arr
 # --------------------------------
 $Lang{Are_you_sure_stop} = <<EOF;
 
-\${h1("Êtes vous sur ?")}
+\${h1("Êtes vous certain ?")}
 
 <p>
 Vous êtes sur le point d\'arrêter/supprimer de la file les sauvegardes de \$host;
@@ -167,7 +314,7 @@ Vous 
 <form action="\$MyURL" method="get">
 <input type="hidden" name="host" value="\$host">
 <input type="hidden" name="doit" value="1">
-En outre, prière de ne pas démarrer d\'autres sauvegarde avant
+En outre, prière de ne pas démarrer d\'autres sauvegarde pour
 <input type="text" name="backoff" size="10" value="\$backoff"> heures.
 <p>
 Voulez vous vraiment le faire ?
@@ -179,67 +326,72 @@ EOF
 # --------------------------------
 $Lang{Only_privileged_users_can_view_queues_} = "Seuls les utilisateurs privilégiés peuvent voir les files.";
 # --------------------------------
+$Lang{Only_privileged_users_can_archive} = "(ENSLIGH) Only privileged users can Archive.";
+# --------------------------------
 $Lang{BackupPC__Queue_Summary} = "BackupPC: Résumé de la file";
 # --------------------------------
 $Lang{Backup_Queue_Summary} = <<EOF;
 \${h1("Résumé de la file")}
-<p>
+<br><br>
 \${h2("Résumé des files des utilisateurs")}
 <p>
 Les demandes utilisateurs suivantes sont actuellement en attente :
-<table border>
-<tr><td> Hôte </td>
+</p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td> Hôte </td>
     <td> Temps Requis </td>
     <td> Utilisateur </td></tr>
 \$strUser
 </table>
-<p>
+<br><br>
 
 \${h2("Résumé de la file en arrière plan")}
 <p>
 Les demandes en arrière plan suivantes sont actuellement en attente :
-<table border>
-<tr><td> Hôte </td>
+</p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td> Hôte </td>
     <td> Temps requis </td>
     <td> Utilisateur </td></tr>
 \$strBg
 </table>
-<p>
-
+<br><br>
 \${h2("Résumé de la file d\'attente des commandes")}
 <p>
 Les demandes de commande suivantes sont actuellement en attente :
-<table border>
-<tr><td> Hôtes </td>
+</p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td> Hôtes </td>
     <td> Temps Requis </td>
     <td> Utilisateur </td>
     <td> Commande </td></tr>
 \$strCmd
 </table>
 EOF
+
 # --------------------------------
-$Lang{Backup_PC__Log_File__file} = "BackupPC: Fichier de log \$file";
+$Lang{Backup_PC__Log_File__file} = "BackupPC: Fichier journal \$file";
 $Lang{Log_File__file__comment} = <<EOF;
-"Fichier de log \$file \$comment";
+\${h1("Fichier journal \$file \$comment")}
 <p>
 EOF
 # --------------------------------
 $Lang{Contents_of_log_file} = <<EOF;
-Contenu du fichier de log <tt>\$file</tt>, modifié le \$mtimeStr \$comment
+Contenu du fichier journal <tt>\$file</tt>, modifié le \$mtimeStr \$comment
 EOF
 
 # --------------------------------
 $Lang{skipped__skipped_lines} = "[ \$skipped lignes sautées ]\n";
 # --------------------------------
-$Lang{_pre___Can_t_open_log_file__file} = "<pre>\nNe peut pas ouvrir le fichier de log \$file\n";
+$Lang{_pre___Can_t_open_log_file__file} = "<pre>\nNe peut pas ouvrir le fichier journal \$file\n";
 
 # --------------------------------
-$Lang{BackupPC__Log_File_History} = "BackupPC: Historique du fichier de log";
+$Lang{BackupPC__Log_File_History} = "BackupPC: Historique du fichier journal";
 $Lang{Log_File_History__hdr} = <<EOF;
-\${h1("Historique du fichier de log \$hdr")}
+\${h1("Historique du fichier journal \$hdr")}
 <p>
-<table border>
-<tr><td align="center"> Fichier </td>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td align="center"> Fichier </td>
     <td align="center"> Taille </td>
     <td align="center"> Date de modification </td></tr>
 \$str
@@ -248,10 +400,10 @@ EOF
 
 # -------------------------------
 $Lang{Recent_Email_Summary} = <<EOF;
-\${h1("Résumé des emails récents (Du plus récent au plus vieux)")}
+\${h1("Résumé des courriels récents (Du plus récent au plus vieux)")}
 <p>
-<table border>
-<tr><td align="center"> Recipient </td> <!-- FIXME -->
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td align="center"> Destinataire </td>
     <td align="center"> Hôte </td>
     <td align="center"> Date </td>
     <td align="center"> Sujet </td></tr>
@@ -266,77 +418,93 @@ $Lang{Browse_backup__num_for__host} = "BackupPC: Navigation dans la sauvegarde \
 # ------------------------------
 $Lang{Restore_Options_for__host} = "BackupPC: Options de restauration sur \$host";
 $Lang{Restore_Options_for__host2} = <<EOF;
+\${h1("Options de restauration sur \$host")}
 <p>
-Vous avez sélectionné les fichiers/repertoires suivants depuis le partage 
-\$share, sauvegarde numéro \$num:
+Vous avez sélectionné les fichiers/repertoires suivants depuis
+le partage \$share, sauvegarde numéro \$num:
 <ul>
 \$fileListStr
 </ul>
-<p>
+</p><p>
 Vous avez trois choix pour restaurer ces fichiers/repertoires.
 Veuillez sélectionner une des options suivantes.
-<p>
+</p>
 \${h2("Option 1: Restauration directe")}
 <p>
-Vous pouvez démarrer une restauration qui va restaurer ces fichiers 
+EOF
+
+$Lang{Restore_Options_for__host_Option1} = <<EOF;
+Vous pouvez démarrer une restauration de ces fichiers 
 directement sur \$host.
-<p>
+</p><p>
 <b>Attention:</b>
-tout les fichiers correspondant à ceux que vous avez sélectionnés vont être effacés !
-
-<form action="\$MyURL" method="post">
-<input type="hidden" name="host" value="\${EscapeHTML(\$host)}">
+tous les fichiers correspondant à ceux que vous avez sélectionnés vont être effacés !
+</p>
+<form action="\$MyURL" method="post" name="direct">
+<input type="hidden" name="host" value="\${EscHTML(\$host)}">
 <input type="hidden" name="num" value="\$num">
 <input type="hidden" name="type" value="3">
 \$hiddenStr
 <input type="hidden" value="\$In{action}" name="action">
 <table border="0">
 <tr>
-    <td>Restaurer les fichiers vers l\'hôte</td>
-    <td><input type="text" size="40" value="\${EscapeHTML(\$host)}"
-        name="hostDest"></td>
+    <td>Restaure les fichiers vers l'hôte</td>
+    <td><!--<input type="text" size="40" value="\${EscHTML(\$host)}"
+        name="hostDest">-->
+        <select name="hostDest" onChange="document.direct.shareDest.value=''">
+        \$hostDestSel
+        </select>
+        <script language="Javascript">
+        function myOpen(URL) {
+               window.open(URL,'','width=500,height=400');
+       }
+        </script>
+        <a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Chercher les partitions disponibles (NON IMPLANTE)</a></td>
 </tr><tr>
     <td>Restaurer les fichiers vers le partage</td>
-    <td><input type="text" size="40" value="\${EscapeHTML(\$share)}"
+    <td><input type="text" size="40" value="\${EscHTML(\$share)}"
         name="shareDest"></td>
 </tr><tr>
     <td>Restaurer les fichiers du répertoire<br>(relatif au partage)</td>
     <td valign="top"><input type="text" size="40" maxlength="256"
-       value="\${EscapeHTML(\$pathHdr)}" name="pathHdr"></td>
+       value="\${EscHTML(\$pathHdr)}" name="pathHdr"></td>
 </tr><tr>
     <td><input type="submit" value="Démarrer la restauration" name=""></td>
 </table>
 </form>
 EOF
 
+$Lang{Restore_Options_for__host_Option1_disabled} = <<EOF;
+La restauration directe a été désactivée pour l'hôte \${EscHTML(\$hostDest)}.
+Veuillez choisir une autre option.
+EOF
 
 # ------------------------------
 $Lang{Option_2__Download_Zip_archive} = <<EOF;
-
-\${h2("Option 2: Télécharger l\'archive compressée")}
 <p>
-Vous pouvez télécharger une archive zippée contenant tous les fichiers/répertoires que vous 
-avez sélectionnés. Vous pouvez utiliser une application locale, comme <i>Winzip</i>, pour 
-voir ou extraire n\'importe quel fichier.
+\${h2("Option 2: Télécharger une archive Zip")}
 <p>
+Vous pouvez télécharger une archive compressée (.zip) contenant tous les fichiers/répertoires que vous 
+avez sélectionnés. Vous pouvez utiliser une application locale, comme Winzip, pour voir ou extraire n\'importe quel fichier.
+</p><p>
 <b>Attention:</b> en fonction de quels fichiers/répertoires vous avez sélectionné,
 cette archive peut devenir très très large.  Cela peut prendre plusieurs minutes pour créer
 et transférer cette archive, et vous aurez besoin d\'assez d\'espace disque pour le stocker.
-<p>
+</p>
 <form action="\$MyURL" method="post">
-<input type="hidden" name="host" value="\${EscapeHTML(\$host)}">
+<input type="hidden" name="host" value="\${EscHTML(\$host)}">
 <input type="hidden" name="num" value="\$num">
 <input type="hidden" name="type" value="2">
 \$hiddenStr
 <input type="hidden" value="\$In{action}" name="action">
 <input type="checkbox" value="1" name="relative" checked> Faire l\'archive relative à
-\${EscapeHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
+\${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
 (Autrement l\'archive contiendra les chemins complets).
 <br>
 Compression (0=désactivée, 1=rapide,...,9=meilleure)
 <input type="text" size="6" value="5" name="compressLevel">
 <br>
-<input type="submit" value="Télécharger le fichier zippé" name="">
+<input type="submit" value="Télécharger le fichier Zip" name="">
 </form>
 EOF
 
@@ -344,12 +512,14 @@ EOF
 # ------------------------------
 
 $Lang{Option_2__Download_Zip_archive2} = <<EOF;
-\${h2("Option 2: Télécharger une archive zippée")}
 <p>
-Vous pouvez télécharger une archive zippée, mais Archive::Zip n\'est pas
-installé. Vous pouvez demander à votre administrateur système d\'installer 
-Archive::Zip depuis <a href="http://www.cpan.org">www.cpan.org</a>.
+\${h2("Option 2: Télécharger une archive Zip")}
 <p>
+Vous ne pouvez pas télécharger d'archive zip, car Archive::Zip n\'est pas
+installé. 
+Veuillez demander à votre administrateur système d\'installer 
+Archive::Zip depuis <a href="http://www.cpan.org">www.cpan.org</a>.
+</p>
 EOF
 
 
@@ -357,24 +527,23 @@ EOF
 $Lang{Option_3__Download_Zip_archive} = <<EOF;
 \${h2("Option 3: Télécharger une archive tar")}
 <p>
-
 Vous pouvez télécharger une archive Tar contenant tous les fichiers/répertoires 
-que vous avez sélectionnés. Vous pouvez alors utiliser une application locale, 
-comme <i>tar</i> ou <i>winzip</i> pour voir ou extraire n\'importe quel fichier.
-<p>
+que vous avez sélectionnés. Vous pourrez alors utiliser une application locale, 
+comme tar ou winzip pour voir ou extraire n\'importe quel fichier.
+</p><p>
 <b>Attention:</b> en fonction des fichiers/répertoires que vous avez sélectionnés,
-cette archive peut devenir très très large.  Cela peut prendre beaucoup de temps 
-(plusieurs minutes) pour créer et transfèrer l\'archive, et vous aurez besoin de beaucoup
-d\'espace disque local pour le stocker.
-<p>
+cette archive peut devenir très très large.  Cela peut prendre plusieurs minutes
+pour créer et transférer l\'archive, et vous aurez besoin d'assez
+d\'espace disque local pour la stocker.
+</p>
 <form action="\$MyURL" method="post">
-<input type="hidden" name="host" value="\${EscapeHTML(\$host)}">
+<input type="hidden" name="host" value="\${EscHTML(\$host)}">
 <input type="hidden" name="num" value="\$num">
 <input type="hidden" name="type" value="1">
 \$hiddenStr
 <input type="hidden" value="\$In{action}" name="action">
 <input type="checkbox" value="1" name="relative" checked> Faire l\'archive relative à
-\${EscapeHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
+\${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
 (Autrement l\'archive contiendra des chemins absolus).
 <br>
 <input type="submit" value="Télécharger le fichier Tar" name="">
@@ -382,17 +551,15 @@ d\'espace disque local pour le stocker.
 EOF
 
 
-
 # ------------------------------
 $Lang{Restore_Confirm_on__host} = "BackupPC: Confirmation de restauration sur \$host";
 
 $Lang{Are_you_sure} = <<EOF;
 \${h1("Êtes-vous sur ?")}
 <p>
-Vous êtes sur le point de démarrer une restauration directement sur la machine 
-\$In{hostDest}.
-Les fichiers suivants vont être restaurés dans le partage \$In{shareDest}, depuis
-la sauvegarde numéro \$num:
+Vous êtes sur le point de démarrer une restauration directement sur 
+la machine \$In{hostDest}. Les fichiers suivants vont être restaurés 
+dans le partage \$In{shareDest}, depuis la sauvegarde numéro \$num:
 <p>
 <table border>
 <tr><td>Fichier/Répertoire original</td><td>Va être restauré à</td></tr>
@@ -400,10 +567,10 @@ la sauvegarde num
 </table>
 
 <form action="\$MyURL" method="post">
-<input type="hidden" name="host" value="\${EscapeHTML(\$host)}">
-<input type="hidden" name="hostDest" value="\${EscapeHTML(\$In{hostDest})}">
-<input type="hidden" name="shareDest" value="\${EscapeHTML(\$In{shareDest})}">
-<input type="hidden" name="pathHdr" value="\${EscapeHTML(\$In{pathHdr})}">
+<input type="hidden" name="host" value="\${EscHTML(\$host)}">
+<input type="hidden" name="hostDest" value="\${EscHTML(\$In{hostDest})}">
+<input type="hidden" name="shareDest" value="\${EscHTML(\$In{shareDest})}">
+<input type="hidden" name="pathHdr" value="\${EscHTML(\$In{pathHdr})}">
 <input type="hidden" name="num" value="\$num">
 <input type="hidden" name="type" value="4">
 \$hiddenStr
@@ -420,7 +587,13 @@ $Lang{Reply_from_server_was___reply} = <<EOF;
 <p>
 La réponse du serveur est: \$reply
 <p>
-Retourner à la page d\'acceuil de <a href="\$MyURL?host=\$hostDest">\$hostDest </a>.
+Retourner à la page d\'accueil de <a href="\$MyURL?host=\$hostDest">\$hostDest </a>.
+EOF
+
+$Lang{BackupPC_Archive_Reply_from_server} = <<EOF;
+\${h1(\$str)}
+<p>
+La réponse du serveur est: \$reply
 EOF
 
 
@@ -434,7 +607,7 @@ $Lang{Host__host_Backup_Summary2} = <<EOF;
 <ul>
 \$statusStr
 </ul>
-
+</p>
 \${h2("Actions de l\'utilisateur")}
 <p>
 <form action="\$MyURL" method="get">
@@ -443,31 +616,33 @@ $Lang{Host__host_Backup_Summary2} = <<EOF;
 <input type="submit" value="$Lang{Start_Full_Backup}" name="action">
 <input type="submit" value="$Lang{Stop_Dequeue_Backup}" name="action">
 </form>
-
+</p>
 \${h2("Résumé de la sauvegarde")}
 <p>
 Cliquer sur le numéro de l\'archive pour naviguer et restaurer les fichiers de sauvegarde.
-<table border>
-<tr><td align="center"> Sauvegarde n° </td>
+</p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
+<tr class="tableheader"><td align="center"> Sauvegarde n° </td>
     <td align="center"> Type </td>
-    <td align="center"> terminée </td> 
+    <td align="center"> Fusionnée </td> 
     <td align="center"> Date de démarrage </td>
     <td align="center"> Durée/mins </td>
-    <td align="center"> Age/jours </td>
-    <td align="center"> Chemin d\'accès sauvegarde sur serveur </td>
+    <td align="center"> Âge/jours </td>
+    <td align="center"> Chemin d\'accès de la sauvegarde sur le serveur </td>
 </tr>
 \$str
 </table>
 <p>
 
 \$restoreStr
-
+</p>
+<br><br>
 \${h2("Résumé des erreurs de transfert")}
-<p>
-<table border>
-<tr><td align="center"> Nb sauvegarde </td>
+<br><br>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td align="center"> Nb sauvegarde </td>
     <td align="center"> Type </td>
-    <td align="center"> View </td> <!-- FIXME -->
+    <td align="center"> Voir </td>
     <td align="center"> Nb erreurs transfert </td>
     <td align="center"> Nb mauvais fichiers </td>
     <td align="center"> Nb mauvais partages </td>
@@ -475,60 +650,81 @@ Cliquer sur le num
 </tr>
 \$errStr
 </table>
-<p>
+<br><br>
 
-\${h2("Résumé de Taille fichier/Nombre de réutilisations")}
+\${h2("Récapitulatif de la taille des fichier et du nombre de réutilisations")}
 <p>
-    Les fichiers existants sont ceux qui sont déjà sur le serveur; 
+Les fichiers existants sont ceux qui sont déjà sur le serveur; 
 Les nouveaux fichiers sont ceux qui ont été ajoutés au serveur.
-Les fichiers vides et les erreurs de SMB ne sont pas comptabilisés parmis
-les nouveaux et les réutilisés.
-
-<table border>
-<tr><td colspan="2"></td>
+Les fichiers vides et les erreurs de SMB ne sont pas comptabilisés parmis les nouveaux et les réutilisés.
+</p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td>
     <td align="center" colspan="3"> Totaux </td>
     <td align="center" colspan="2"> Fichiers existants </td>
     <td align="center" colspan="2"> Nouveaux fichiers </td>
 </tr>
-<tr>
+<tr class="tableheader">
     <td align="center"> Nb de sauvegarde  </td>
     <td align="center"> Type </td>
     <td align="center"> Nb de Fichiers </td>
     <td align="center"> Taille/Mo </td>
     <td align="center"> Mo/sec </td>
     <td align="center"> Nb de Fichiers </td>
-    <td align="center"> Taille/MB </td>
+    <td align="center"> Taille/Mo </td>
     <td align="center"> Nb de Fichiers </td>
     <td align="center"> Taille/Mo </td>
 </tr>
 \$sizeStr
 </table>
-<p>
+<br><br>
 
 \${h2("Résumé de la compression")}
 <p>
-
-Performance de compression pour les fichiers déjà sur le serveur et
+Performance de la compression pour les fichiers déjà sur le serveur et
 récemment compressés.
-
-<table border>
-<tr><td colspan="3"></td>
+</p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td colspan="3" bgcolor="#ffffff"></td>
     <td align="center" colspan="3"> Fichiers existants </td>
     <td align="center" colspan="3"> Nouveaux fichiers </td>
 </tr>
-<tr><td align="center"> Nb de sauvegardes </td>
+<tr class="tableheader"><td align="center"> Nb de sauvegardes </td>
     <td align="center"> Type </td>
     <td align="center"> Niveau de Compression </td>
     <td align="center"> Taille/Mo </td>
     <td align="center"> Comp/Mo </td>
-    <td align="center"> Comp </td>
+    <td align="center"> Compression </td>
     <td align="center"> Taille/Mo </td>
     <td align="center"> Comp/Mo </td>
     <td align="center"> Compression </td>
 </tr>
 \$compStr
 </table>
+<br><br>
+EOF
+
+$Lang{Host__host_Archive_Summary} = "BackupPC: Résumé de l'archivage pour l'hôte \$host";
+$Lang{Host__host_Archive_Summary2} = <<EOF;
+\${h1("Host \$host Archive Summary")}
+<p>
+\$warnStr
+<ul>
+\$statusStr
+</ul>
+
+\${h2("User Actions")}
 <p>
+<form action="\$MyURL" method="get">
+<input type="hidden" name="archivehost" value="\$host">
+<input type="hidden" name="host" value="\$host">
+<input type="submit" value="$Lang{Start_Archive}" name="action">
+<input type="submit" value="$Lang{Stop_Dequeue_Archive}" name="action">
+</form>
+
+
+\$ArchiveStr
+
 EOF
 
 # -------------------------
@@ -541,7 +737,6 @@ EOF
 # -------------------------
 $Lang{NavSectionTitle_} = "Serveur";
 
-
 # -------------------------
 $Lang{Backup_browse_for__host} = <<EOF;
 \${h1("Navigation dans la sauvegarde pour \$host")}
@@ -573,33 +768,39 @@ $Lang{Backup_browse_for__host} = <<EOF;
 //-->
 </script>
 
+<form name="form0" method="post" action="\$MyURL">
+<input type="hidden" name="num" value="\$num">
+<input type="hidden" name="host" value="\$host">
+<input type="hidden" name="share" value="\${EscHTML(\$share)}">
+<input type="hidden" name="action" value="browse">
 <ul>
 <li> Vous naviguez dans la sauvegarde n°\$num, qui a commencé vers \$backupTime
         (il y a \$backupAge jours),
 \$filledBackup
-<li> Cliquer dans un répertoire ci-dessous pour naviguer dedans,
-<li> Cliquer dans un fichier ci-dessous pour le restaurer..
+<li> Entrez le répertoire: <input type="text" name="dir" size="50" maxlength="4096" value="\${EscHTML(\$dir)}"> <input type="submit" value="\$Lang->{Go}" name="Submit">
+<li> Cliquer dans un répertoire ci-dessous pour y naviguer,
+<li> Cliquer dans un fichier ci-dessous pour le restaurer,
+<li> Vous pouvez l'<a href="\$MyURL?action=dirHistory&host=\${EscURI(\$host)}&share=\$shareURI&dir=\$pathURI">historique</a> de sauvegarde du répertoire courant.
 </ul>
+</form>
 
-\${h2("Contenu de \${EscapeHTML(\$dirDisplay)}")}
+\${h2("Contenu de \${EscHTML(\$dirDisplay)}")}
 <form name="form1" method="post" action="\$MyURL">
 <input type="hidden" name="num" value="\$num">
 <input type="hidden" name="host" value="\$host">
+<input type="hidden" name="share" value="\${EscHTML(\$share)}">
 <input type="hidden" name="fcbMax" value="\$checkBoxCnt">
 <input type="hidden" name="action" value="$Lang{Restore}">
 <br>
-<table>
+<table width="100%">
 <tr><td valign="top">
-    <!--Navigate here:-->
     <br><table align="center" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
     \$dirStr
     </table>
 </td><td width="3%">
 </td><td valign="top">
-    <!--Restore files here:-->
     <br>
-    <table cellpadding="0" cellspacing="0" bgcolor="#333333"><tr><td>
-        <table border="0" width="100%" align="left" cellpadding="2" cellspacing="1">
+        <table border="0" width="100%" align="left" cellpadding="3" cellspacing="1">
         \$fileHeader
         \$topCheckAll
         \$fileStr
@@ -611,126 +812,165 @@ $Lang{Backup_browse_for__host} = <<EOF;
 This is now in the checkAll row
 <input type="submit" name="Submit" value="Restore selected files">
 -->
-</td></tr></table>
 </form>
 EOF
 
-
 # ------------------------------
+$Lang{DirHistory_backup_for__host} = "BackupPC: Historique des sauvegardes de répertoires pour \$host";
 
-# FIXME
-$Lang{Restore___num_details_for__host} = "BackupPC: Restore #\$num details for \$host"; 
+#
+# These two strings are used to build the links for directories and
+# file versions.  Files are appended with a version number.
+#
+$Lang{DirHistory_dirLink}  = "rep";
+$Lang{DirHistory_fileLink} = "v";
 
-$Lang{Restore___num_details_for__host2 } = <<EOF;
+$Lang{DirHistory_for__host} = <<EOF;
+\${h1("Historique des sauvegardes de répertoires pour \$host")}
+<p>
+Cette page montre chaque version des fichiers parmis toutes sauvegardes:
+<ul>
+<li> Cliquez sur un numéro de sauvegarde pour revenir à la navigation de sauvegarde,
+<li> Cliquez sur un répertoire (\$Lang->{DirHistory_dirLink}) pour naviguer
+     dans celui-ci.
+<li> Cliquez sur une version d'un fichier (\$Lang->{DirHistory_fileLink}0,
+     \$Lang->{DirHistory_fileLink}1, ...) pour la télécharger.
+<li> Les fichiers avec des contenus identiques pour plusieurs sauvegardes ont 
+     le même numéro de version.
+<li> Les fichiers qui ne sont pas présents sur une sauvegarde en particulier 
+     sont représentés par une boite vide.
+<li> Les fichiers montrés avec la même version peuvent avoir des attributs différents. 
+     Choissisez le numéro de sauvegarde pour voir les attributs de fichiers.
+</ul>
+
+\${h2("Historique de \${EscHTML(\$dirDisplay)}")}
 
-# FIXME
-\${h1("Restore #\$num Details for \$host")} 
+<br>
+<table cellspacing="2" cellpadding="3">
+<tr class="fviewheader"><td>Numéro de sauvegarde</td>\$backupNumStr</tr>
+<tr class="fviewheader"><td>Date</td>\$backupTimeStr</tr>
+\$fileStr
+</table>
+EOF
+
+# ------------------------------
+$Lang{Restore___num_details_for__host} = "BackupPC: Détails de la restauration n° \$num pour \$host"; 
+
+$Lang{Restore___num_details_for__host2 } = <<EOF;
+\${h1("Détails de la restauration n° \$num pour \$host")} 
 <p>
-<table border>
-<tr><td> Number </td><td> \$Restores[\$i]{num} </td></tr>
-<tr><td> Requested by </td><td> \$RestoreReq{user} </td></tr>
-<tr><td> Request time </td><td> \$reqTime </td></tr>
-<tr><td> Result </td><td> \$Restores[\$i]{result} </td></tr>
-<tr><td> Error Message </td><td> \$Restores[\$i]{errorMsg} </td></tr>
-<tr><td> Source host </td><td> \$RestoreReq{hostSrc} </td></tr>
-<tr><td> Source backup num </td><td> \$RestoreReq{num} </td></tr>
-<tr><td> Source share </td><td> \$RestoreReq{shareSrc} </td></tr>
-<tr><td> Destination host </td><td> \$RestoreReq{hostDest} </td></tr>
-<tr><td> Destination share </td><td> \$RestoreReq{shareDest} </td></tr>
-<tr><td> Start time </td><td> \$startTime </td></tr>
-<tr><td> Duration </td><td> \$duration min </td></tr>
-<tr><td> Number of files </td><td> \$Restores[\$i]{nFiles} </td></tr>
-<tr><td> Total size </td><td> \${MB} Mo </td></tr>
-<tr><td> Transfer rate </td><td> \$MBperSec Mo/sec </td></tr>
-<tr><td> TarCreate errors </td><td> \$Restores[\$i]{tarCreateErrs} </td></tr>
-<tr><td> Xfer errors </td><td> \$Restores[\$i]{xferErrs} </td></tr>
-<tr><td> Xfer log file </td><td>
-<a href="\$MyURL?action=view&type=RestoreLOG&num=\$Restores[\$i]{num}&host=\$host">View</a>, <!-- FIXME -->
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="50%">
+<tr><td class="tableheader"> Numéro </td><td class="border"> \$Restores[\$i]{num} </td></tr>
+<tr><td class="tableheader"> Demandée par </td><td class="border"> \$RestoreReq{user} </td></tr>
+<tr><td class="tableheader"> Demandée à </td><td class="border"> \$reqTime </td></tr>
+<tr><td class="tableheader"> Résultat </td><td class="border"> \$Restores[\$i]{result} </td></tr>
+<tr><td class="tableheader"> Message d'erreur </td><td class="border"> \$Restores[\$i]{errorMsg} </td></tr>
+<tr><td class="tableheader"> Hôte source </td><td class="border"> \$RestoreReq{hostSrc} </td></tr>
+<tr><td class="tableheader"> N° de sauvegarde </td><td class="border"> \$RestoreReq{num} </td></tr>
+<tr><td class="tableheader"> Partition source </td><td class="border"> \$RestoreReq{shareSrc} </td></tr>
+<tr><td class="tableheader"> Hôte de destination </td><td class="border"> \$RestoreReq{hostDest} </td></tr>
+<tr><td class="tableheader"> Partition de destination </td><td class="border"> \$RestoreReq{shareDest} </td></tr>
+<tr><td class="tableheader"> Début </td><td class="border"> \$startTime </td></tr>
+<tr><td class="tableheader"> Durée </td><td class="border"> \$duration min </td></tr>
+<tr><td class="tableheader"> Nombre de fichier </td><td class="border"> \$Restores[\$i]{nFiles} </td></tr>
+<tr><td class="tableheader"> Grosseur totale </td><td class="border"> \${MB} Mo </td></tr>
+<tr><td class="tableheader"> Taux de transfert </td><td class="border"> \$MBperSec Mo/sec </td></tr>
+<tr><td class="tableheader"> Erreurs de TarCreate </td><td class="border"> \$Restores[\$i]{tarCreateErrs} </td></tr>
+<tr><td class="tableheader"> Erreurs de transfert </td><td class="border"> \$Restores[\$i]{xferErrs} </td></tr>
+<tr><td class="tableheader"> Journal de transfert </td><td class="border">
+<a href="\$MyURL?action=view&type=RestoreLOG&num=\$Restores[\$i]{num}&host=\$host">Visionner</a>,
 <a href="\$MyURL?action=view&type=RestoreErr&num=\$Restores[\$i]{num}&host=\$host">Erreurs</a>
 </tr></tr>
 </table>
+</p>
+\${h1("Liste des Fichiers/Répertoires")}
 <p>
-\${h1("Liste Fichiers/Répertoires")}
-<p>
-<table border>
-<tr><td>Fichier/répertoire original</td><td>Restauré vers</td></tr>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="100%">
+<tr class="tableheader"><td>Fichier/répertoire original</td><td>Restauré vers</td></tr>
 \$fileListStr
 </table>
 EOF
 
+# ------------------------------
+$Lang{Archive___num_details_for__host} = "BackupPC: Détails de l'archivage no. \$num pour \$host";
+
+$Lang{Archive___num_details_for__host2 } = <<EOF;
+\${h1("Archive #\$num Details for \$host")}
+<p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="50%">
+<tr><td class="tableheader"> Numéro </td><td class="border"> \$Archives[\$i]{num} </td></tr>
+<tr><td class="tableheader"> Demandé par </td><td class="border"> \$ArchiveReq{user} </td></tr>
+<tr><td class="tableheader"> Heure de demande </td><td class="border"> \$reqTime </td></tr>
+<tr><td class="tableheader"> Résultat </td><td class="border"> \$Archives[\$i]{result} </td></tr>
+<tr><td class="tableheader"> Message d'erreur </td><td class="border"> \$Archives[\$i]{errorMsg} </td></tr>
+<tr><td class="tableheader"> Heure de début </td><td class="border"> \$startTime </td></tr>
+<tr><td class="tableheader"> Durée </td><td class="border"> \$duration min </td></tr>
+<tr><td class="tableheader"> Journal de transfert </td><td class="border">
+<a href="\$MyURL?action=view&type=ArchiveLOG&num=\$Archives[\$i]{num}&host=\$host">Voir</a>,
+<a href="\$MyURL?action=view&type=ArchiveErr&num=\$Archives[\$i]{num}&host=\$host">Erreurs</a>
+</tr></tr>
+</table>
+<p>
+\${h1("Liste de hôtes")}
+<p>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td>Host</td><td>Numéro de sauvegarde</td></tr>
+\$HostListStr
+</table>
+EOF
 
 # -----------------------------------
-$Lang{Email_Summary} = "BackupPC: Résumé du courrier électronique";
+$Lang{Email_Summary} = "BackupPC: Résumé du courriel";
 
 # -----------------------------------
 #  !! ERROR messages !!
 # -----------------------------------
-
-$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new a échoué: regardez le "
-    ."fichier error_log d\'apache\n";
+$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new a échoué: regardez le fichier error_log d\'apache\n";
 $Lang{Wrong_user__my_userid_is___} =  
-              "Mauvais utilisateur: mon userid est \$>, à la place de \$uid"
-            . "(\$Conf{BackupPCUser})\n";
-$Lang{Only_privileged_users_can_view_PC_summaries} = "Seuls les utilisateurs privilégiés peuvent "
-    . "voir les résumés des PC.";
+              "Mauvais utilisateur: mon userid est \$>, à la place de \$uid "
+              . "(\$Conf{BackupPCUser})\n";
+#$Lang{Only_privileged_users_can_view_PC_summaries} = "Seuls les utilisateurs privilégiés peuvent voir les résumés des PC.";
 $Lang{Only_privileged_users_can_stop_or_start_backups} = 
-                  "Seuls les utilisateurs privilégiés peuvent arrêter ou démarrer des sauvegardes sur"
-               . " \${EscapeHTML(\$host)}.";
+                  "Seuls les utilisateurs privilégiés peuvent arrêter ou démarrer des sauvegardes sur "
+                  . " \${EscHTML(\$host)}.";
 $Lang{Invalid_number__num} = "Numéro invalide \$num";
-$Lang{Unable_to_open__file__configuration_problem} = "Impossible d\'ouvrir \$file: un problème de configuration ?";
-$Lang{Only_privileged_users_can_view_log_or_config_files} = "Seuls les utilisateurs privilégiés peuvent voir "
-    ."les log ou les fichiers de configuration.";
-$Lang{Only_privileged_users_can_view_log_files} = "Seuls les utilisateurs privilégiés peuvent voir les fichiers de log.";
-$Lang{Only_privileged_users_can_view_email_summaries} = "Seuls les utilisateurs privilégiés peuvent "
-    ."voir les compte-rendu des courriers électroniques.";
-$Lang{Only_privileged_users_can_browse_backup_files} = "Seuls les utilisateurs privilégiés peuvent parcourir "
-                . "les fichiers de sauvegarde pour l'hôte \${EscapeHTML(\$In{host})}.";
+$Lang{Unable_to_open__file__configuration_problem} = "Impossible d\'ouvrir \$file: problème de configuration ?";
+$Lang{Only_privileged_users_can_view_log_or_config_files} = "Seuls les utilisateurs privilégiés peuvent voir les fichier de jounal ou les fichiers de configuration.";
+$Lang{Only_privileged_users_can_view_log_files} = "Seuls les utilisateurs privilégiés peuvent voir les fichiers de journal.";
+$Lang{Only_privileged_users_can_view_email_summaries} = "Seuls les utilisateurs privilégiés peuvent voir les compte-rendu des courriels.";
+$Lang{Only_privileged_users_can_browse_backup_files} = "Seuls les utilisateurs privilégiés peuvent parcourir les fichiers de sauvegarde"
+                 . " pour l'hôte \${EscHTML(\$In{host})}.";
 $Lang{Empty_host_name} = "Nom d\'hôte vide.";
-$Lang{Can_t_browse_bad_directory_name} = "Ne peut pas parcourir " 
-                   . " \${EscapeHTML(\"\$TopDir/pc/\$host/\$num\")}:"
-                    . " mauvais nom de répertoire";
-$Lang{Directory___EscapeHTML} = "Le répertoire \${EscapeHTML(\"\$TopDir/pc/\$host/\$num\")}"
+$Lang{Directory___EscHTML} = "Le répertoire \${EscHTML(\"\$TopDir/pc/\$host/\$num\")}"
                    . " est vide";
 $Lang{Can_t_browse_bad_directory_name2} = "Ne peut pas parcourir "
-                   . " \${EscapeHTML(\$fullDir)}:"
-                    . " mauvais nom de répertoire";
+                   . " \${EscHTML(\$relDir)}: mauvais nom de répertoire";
 $Lang{Only_privileged_users_can_restore_backup_files} = "Seuls les utilisateurs privilégiés peuvent restaurer "
-                . " des fichiers de sauvegarde"
-                . " pour l\'hôte \${EscapeHTML(\$In{host})}.";
-$Lang{Bad_host_name} = "Mauvais nom d\'hôte \${EscapeHTML(\$host)}";
+                . " des fichiers de sauvegarde pour l\'hôte \${EscHTML(\$In{host})}.";
+$Lang{Bad_host_name} = "Mauvais nom d\'hôte \${EscHTML(\$host)}";
 $Lang{You_haven_t_selected_any_files__please_go_Back_to} = "Vous n'avez sélectionné aucun fichier; "
     . "vous pouvez revenir en arrière pour sélectionner des fichiers.";
-$Lang{Nice_try__but_you_can_t_put} = "Bien tenté, mais vous ne pouvez pas mettre \'..\' dans"
-                                   . " n\'importe quel nom de fichier.";
-$Lang{Can_t_fork_for_tar_restore} = "Ne peut pas se dupliquer (fork) pour la restauration par tar";
-$Lang{Can_t_fork_for_zip_restore} = "Ne peut pas se dupliquer (fork) pour la restauration par zip";
-$Lang{Host__doesn_t_exist} = "L'hôte \${EscapeHTML(\$In{hostDest})} n\'existe pas.";
+$Lang{You_haven_t_selected_any_hosts} = "Vous avez sélectionné aucun hôte; veuillez retourné à la page précédente pour"
+                . " faire la sélection d'un hôte.";
+$Lang{Nice_try__but_you_can_t_put} = "Bien tenté, mais vous ne pouvez pas mettre \'..\' dans n\'importe quel nom de fichier.";
+$Lang{Host__doesn_t_exist} = "L'hôte \${EscHTML(\$In{hostDest})} n\'existe pas.";
 $Lang{You_don_t_have_permission_to_restore_onto_host} = "Vous n\'avez pas la permission de restaurer sur l\'hôte"
-                   . " \${EscapeHTML(\$In{hostDest})}";
+                   . " \${EscHTML(\$In{hostDest})}";
 $Lang{Can_t_open_create} = "Ne peut pas ouvrir/créer "
-                    . "\${EscapeHTML(\"\$TopDir/pc/\$hostDest/\$reqFileName\")}";
+            . "\${EscHTML(\"\$TopDir/pc/\$hostDest/\$reqFileName\")}";
 $Lang{Only_privileged_users_can_restore_backup_files2} = "Seuls les utilisateurs privilégiés peuvent restaurer"
-                . " des fichiers de sauvegarde"
-                . " pour l\'hôte \${EscapeHTML(\$host)}.";
+                . " des fichiers de sauvegarde pour l\'hôte \${EscHTML(\$host)}.";
 $Lang{Empty_host_name} = "Nom d\'hôte vide";
-$Lang{Can_t_restore_bad_file} = "Ne peut pas restaurer le fichier corrompu \${EscapeHTML(\$fullPath)}";
-$Lang{Unknown_host_or_user} = "\${EscapeHTML(\$host)}, hôte ou utilisateur inconnu.";
+$Lang{Unknown_host_or_user} = "\${EscHTML(\$host)}, hôte ou utilisateur inconnu.";
 $Lang{Only_privileged_users_can_view_information_about} = "Seuls les utilisateurs privilégiés peuvent accéder aux "
-                . " informations sur l\'hôte \${EscapeHTML(\$host)}." ;
-$Lang{Only_privileged_users_can_view_restore_information} = "Seuls les utilisateurs privilégiés peuvent restaurer "
-    ."des informations.";
-$Lang{Restore_number__num_for_host__does_not_exist} = "Restauration numéro \$num de l\'hôte \${EscapeHTML(\$host)} n\'"
-    . "existe pas";
-
-$Lang{Unable_to_connect_to_BackupPC_server} = "Impossible de se connecter au server BackupPC."
-          . "Ce script CGI (\$MyURL) ne peut pas se connecter au serveur  BackupPC"
-          . " sur \$Conf{ServerHost} via le port \$Conf{ServerPort}.  L\'erreur est la"
-          . " suivante: \$err.",
-            "Peut être BackupPC n\'a pas été lancé ou il y a une erreur "
-          . " de configuration. Vous pouvez faire suivre ce message à votre administrateur système.";
+                . " informations sur l\'hôte \${EscHTML(\$host)}." ;
+$Lang{Only_privileged_users_can_view_archive_information} = "Seuls les usagers ayant les privilèges nécessaires peuvent voir les informations d'archivage.";
+$Lang{Only_privileged_users_can_view_restore_information} = "Seuls les utilisateurs privilégiés peuvent restaurer des informations.";
+$Lang{Restore_number__num_for_host__does_not_exist} = "Restauration numéro \$num de l\'hôte \${EscHTML(\$host)} n\'existe pas";
 
-$Lang{Can_t_find_IP_address_for} = "Ne peut pas trouver d\'adresse IP pour \${EscapeHTML(\$host)}";
+$Lang{Archive_number__num_for_host__does_not_exist} = "L'archive no \$num pour l'hôte \${EscHTML(\$host)} n'existe pas.";
 
+$Lang{Can_t_find_IP_address_for} = "Ne peut pas trouver d\'adresse IP pour \${EscHTML(\$host)}";
 $Lang{host_is_a_DHCP_host} = <<EOF;
 L\'hôte est un serveur DHCP, et je ne connais pas son adresse IP. J\'ai 
 vérifié le nom netbios de \$ENV{REMOTE_ADDR}\$tryIP, et j\'ai trouvé que 
@@ -740,67 +980,46 @@ Tant que je ne verrai pas \$host 
 ne pourrez démarrer cette requête que depuis la machine elle même.
 EOF
 
-
 # ------------------------------------
 # !! Server Mesg !!
 # ------------------------------------
 
-# Ne pas mélanger $reply et $str cf vers ligne: 248
-
 $Lang{Backup_requested_on_DHCP__host} = "Demande de sauvegarde sur l\'hôte \$host (\$In{hostIP}) par"
                                      . " \$User depuis \$ENV{REMOTE_ADDR}";
 $Lang{Backup_requested_on__host_by__User} = "Sauvegarde demandée sur \$host par \$User";
 $Lang{Backup_stopped_dequeued_on__host_by__User} = "Sauvegarde Arrêtée/déprogrammée pour \$host par \$User";
-
-$Lang{log_Can_t_fork_for_tar_restore_request_by__User} = "log Ne peut pas se dupliquer (fork)"
-    . " pour la restauration tar demandée par \$User";
-$Lang{log_User__User_downloaded_tar_archive_for__host} = "log L\'utilisateur \$User a téléchargé "
-                           . "l\'archive tar pour \$host,"
-                           . " sauvegarde \$num; Les fichiers étaient: "
-                          . " \${join(\", \", \@fileListTrim)}";
-$Lang{log_Can_t_fork_for_zip_restore_request_by__User} = "log Ne peut pas se dupliquer (fork)"
-    . "pour la restauration zip demandée par \$User";
-$Lang{log_User__User_downloaded_zip_archive_for__host}= "log L\'utilisateur \$User a téléchargé "
-                           . "l\'archive zip pour \$host,"
-                           . " Sauvegarde \$num; Les fichiers étaient: "
-                           . "\${join(\", \", \@fileListTrim)}";
 $Lang{Restore_requested_to_host__hostDest__backup___num} = "Restauration demandée pour l\'hôte \$hostDest, "
-             . "sauvegarde n° \$num,"
-            . " par \$User depuis \$ENV{REMOTE_ADDR}";
-
-##########################
-##########################
-
-#$Lang{backup__In_hostIP___host} = "Sauvegarde \$In{hostIP} \$host"
-#                                . " \$User \$doFull";
-#
-#$Lang{backup__host__host__User__doFull} = "backup \$host \$host \$User \$doFull";
-#$Lang{restore__ipAddr} = "Restauration \$ipAddr"
-#                       . " \$hostDest \$User \$reqFileName";
-#$Lang{stop__host__User__In_backoff} = "Arrêt \$host \$User \$In{backoff}";
-
+             . "sauvegarde n° \$num, par \$User depuis \$ENV{REMOTE_ADDR}";
+$Lang{Archive_requested} = "Archivage demandé par \$User de \$ENV{REMOTE_ADDR}";
 
 # -------------------------------------------------
 # ------- Stuff that was forgotten ----------------
 # -------------------------------------------------
 
-$Lang{Status} = "Status";
-$Lang{PC_Summary} = "Bilan du PC";
-$Lang{LOG_file} = "Fichier de LOG";
-$Lang{Old_LOGs} = "Vieux LOGs";
-$Lang{Email_summary} = "Résumé des emails";
+$Lang{Status} = "État";
+$Lang{PC_Summary} = "Bilan des PC";
+$Lang{LOG_file} = "Fichier journal";
+$Lang{LOG_files} = "Fichiers journaux";
+$Lang{Old_LOGs} = "Vieux journaux";
+$Lang{Email_summary} = "Résumé des courriels";
 $Lang{Config_file} = "Fichier de configuration";
 $Lang{Hosts_file} = "Fichiers des hôtes";
 $Lang{Current_queues} = "Files actuelles";
 $Lang{Documentation} = "Documentation";
 
-$Lang{Host_or_User_name} = "<small>Hôte ou Nom d\'utilisateur:</small>";
+#$Lang{Host_or_User_name} = "<small>Hôte ou Nom d\'utilisateur:</small>";
 $Lang{Go} = "Chercher";
 $Lang{Hosts} = "Hôtes";
+$Lang{Select_a_host} = "Choisissez un hôte...";
 
+$Lang{There_have_been_no_archives} = "<h2> Il n'y a pas d'archives </h2>\n";
 $Lang{This_PC_has_never_been_backed_up} = "<h2> Ce PC n'a jamais été sauvegardé !! </h2>\n";
 $Lang{This_PC_is_used_by} = "<li>Ce PC est utilisé par \${UserLink(\$user)}";
 
+$Lang{Extracting_only_Errors} = "(Extraction des erreurs seulement)";
+$Lang{XferLOG} = "JournalXfer";
+$Lang{Errors}  = "Erreurs";
+
 # ------------
 $Lang{Last_email_sent_to__was_at___subject} = <<EOF;
 <li>Dernier email envoyé à \${UserLink(\$user)} le \$mailTime, avait comme sujet "\$subj".
@@ -827,13 +1046,12 @@ EOF
 
 # --------
 $Lang{Last_status_is_state_StatusHost_state_reason_as_of_startTime} = <<EOF;
-<li>L\'état courant est \"\$StatusHost{state}\"\$reason <!-- FIXME -->
-    à compter du \$startTime.
+<li>L\'état courant est \"\$Lang->{\$StatusHost{state}}\"\$reason depuis \$startTime.
 EOF
 
 # --------
-$Lang{Last_error_is____EscapeHTML_StatusHost_error} = <<EOF;
-<li>La dernière erreur est \"\${EscapeHTML(\$StatusHost{error})}\"
+$Lang{Last_error_is____EscHTML_StatusHost_error} = <<EOF;
+<li>La dernière erreur est \"\${EscHTML(\$StatusHost{error})}\".
 EOF
 
 # ------
@@ -846,7 +1064,8 @@ $Lang{Prior_to_that__pings} = "Avant cela, pings";
 
 # -----
 $Lang{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times} = <<EOF;
-<li>Les \$priorStr vers \$host ont réussi \$StatusHost{aliveCnt} fois consécutives.
+<li>Les \$priorStr vers \$host ont réussi \$StatusHost{aliveCnt} 
+            fois consécutives.
 EOF
 
 $Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <<EOF;
@@ -856,46 +1075,58 @@ EOF
 
 $Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <<EOF;
 <li>Les sauvegardes sont reportées pour \$hours heures
-(<a href=\"\$MyURL?action=Stop/Dequeue%20Backup&host=\$host\">changer ce nombre</a>).
+(<a href=\"\$MyURL?action=\${EscURI(\$Lang->{Stop_Dequeue_Archive})}&host=\$host\">changer ce nombre</a>).
 EOF
 
-$Lang{info_jobs_hosts_queueLen} = "info tâches hôtes queueLen";  # FIXME
-
 $Lang{tryIP} = " et \$StatusHost{dhcpHostIP}";
 
-$Lang{Host_Inhost} = "Hôte \$In{host}";
+$Lang{Host_Inhost} = "Hôte \$In{host}";
 
 $Lang{checkAll} = <<EOF;
-<tr bgcolor="#ffffcc"><td>
+<tr><td class="fviewborder">
 <input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Tout sélectionner
-</td><td colspan="4" align="center">
-<input type="submit" name="Submit" value="Restaure les fichiers sélectionnés">
+</td><td colspan="5" align="center" class="fviewborder">
+<input type="submit" name="Submit" value="Restaurer les fichiers sélectionnés">
+</td></tr>
+EOF
+
+$Lang{checkAllHosts} = <<EOF;
+<tr><td class="fviewborder">
+<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Select all
+</td><td colspan="2" align="center" class="fviewborder">
+<input type="submit" name="Submit" value="Archive selected hosts">
 </td></tr>
 EOF
 
 $Lang{fileHeader} = <<EOF;
-    <tr bgcolor="\$Conf{CgiHeaderBgColor}"><td align=center> Nom</td>
+    <tr class="fviewheader"><td align=center> Nom</td>
        <td align="center"> Type</td>
        <td align="center"> Mode</td>
+       <td align="center"> n°</td>
        <td align="center"> Taille</td>
-       <td align="center"> Date modification</td>
+       <td align="center"> Date de modification</td>
     </tr>
 EOF
 
 $Lang{Home} = "Accueil";
-$Lang{Last_bad_XferLOG} = "Dernier bilan transmissions échouées";
-$Lang{Last_bad_XferLOG_errors_only} = "Dernier bilan transmissions échouées (erreurs&nbsp;seulement)";
+$Lang{Browse} = "Explorer les sauvegardes";
+$Lang{Last_bad_XferLOG} = "Dernier bilan des transferts échouées";
+$Lang{Last_bad_XferLOG_errors_only} = "Dernier bilan des transferts échouées (erreurs&nbsp;seulement)";
 
 $Lang{This_display_is_merged_with_backup} = <<EOF;
-<li> Cet affichage est regroupé avec la sauvegarde n°\$numF, la plus récente copie intégrale.
+<li> Cet affichage est fusionné avec la sauvegarde n°\$numF, la plus récente copie intégrale.
+EOF
+
+$Lang{Visit_this_directory_in_backup} = <<EOF;
+<li> Choisissez la sauvegarde que vous désirez voir: <select onChange="window.location=this.value">\$otherDirs </select>
 EOF
 
 $Lang{Restore_Summary} = <<EOF;
 \${h2("Résumé de la restauration")}
 <p>
 Cliquer sur le numéro de restauration pour plus de détails.
-<table border>
-<tr><td align="center"> Sauvegarde n° </td>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td align="center"> Sauvegarde n° </td>
     <td align="center"> Résultat </td>
     <td align="right"> Date de départ</td>
     <td align="right"> Durée/mins</td>
@@ -909,24 +1140,160 @@ Cliquer sur le num
 <p>
 EOF
 
+$Lang{Archive_Summary} = <<EOF;
+\${h2("Résumé de l'archive")}
+<p>
+Cliquez sur le numéro de l'archive pour plus de détails.
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td align="center"> No. Archive </td>
+    <td align="center">Résultat</td>
+    <td align="right">Date début</td>
+    <td align="right">Durée (min)</td>
+</tr>
+\$ArchiveStr
+</table>
+<p>
+EOF
+
 $Lang{BackupPC__Documentation} = "BackupPC: Documentation";
 
 $Lang{No} = "non";
 $Lang{Yes} = "oui";
 
 $Lang{The_directory_is_empty} = <<EOF;
-<tr><td bgcolor="#ffffff">Le repertoire \${EscapeHTML(\$dirDisplay)} est vide
+<tr><td bgcolor="#ffffff">Le repertoire \${EscHTML(\$dirDisplay)} est vide
 </td></tr>
 EOF
 
-$Lang{on} = "actif";
+#$Lang{on} = "actif";
 $Lang{off} = "inactif";
 
-$Lang{full} = "complet";
-$Lang{incremental} = "incrémental";
+$Lang{backupType_full}    = "complète";
+$Lang{backupType_incr}    = "incrémentielle";
+$Lang{backupType_partial} = "partielle";
 
 $Lang{failed} = "échec";
 $Lang{success} = "succès";
 $Lang{and} = "et";
 
+# ------
+# Hosts states and reasons
+$Lang{Status_idle} = "inactif";
+$Lang{Status_backup_starting} = "début de la sauvegarde";
+$Lang{Status_backup_in_progress} = "sauvegarde en cours";
+$Lang{Status_restore_starting} = "début de la restoration";
+$Lang{Status_restore_in_progress} = "restoration en cours";
+$Lang{Status_link_pending} = "en attente de l'édition de liens";
+$Lang{Status_link_running} = "édition de liens en cours";
+
+$Lang{Reason_backup_done}    = "sauvegarde terminée";
+$Lang{Reason_restore_done}   = "restauration terminée";
+$Lang{Reason_archive_done}   = "archivage terminé";
+$Lang{Reason_nothing_to_do}  = "rien à faire";
+$Lang{Reason_backup_failed}  = "la sauvegarde a échouée";
+$Lang{Reason_restore_failed} = "la restauration a échouée";
+$Lang{Reason_archive_failed} = "l'archivage a échoué";
+$Lang{Reason_no_ping}        = "pas de ping";
+$Lang{Reason_backup_canceled_by_user}  = "sauvegarde annulée par l'utilisateur";
+$Lang{Reason_restore_canceled_by_user} = "restauration annulée par l'utilisateur";
+$Lang{Reason_archive_canceled_by_user} = "archivage annulé par l'utilisateur";
+
+# ---------
+# Email messages
+
+# No backup ever
+$Lang{EMailNoBackupEverSubj} = "BackupPC: aucune sauvegarde de \$host n'a réussi";
+$Lang{EMailNoBackupEverMesg} = <<'EOF';
+To: $user$domain
+cc:
+Subject: $subj
+
+$userName,
+
+Notre logiciel de copies de sécurité n'a jamais réussi à
+prendre de sauvegarde de votre ordinateur ($host). Les sauvegardes
+devraient normallement survenir lorsque votre ordinateur est connecté
+au réseau. Vous devriez contacter le support informatique si:
+
+  - Votre ordinateur est régulièrement connecté au réseau, ce qui
+    signifie qu'il y aurait un problème de configuration
+    empêchant les sauvegardes de s'effectuer.
+
+  - Vous ne voulez pas qu'il y ait de copies de sécurité de
+    votre ordinateur ni ne voulez recevoir d'autres messages
+    comme celui-ci.
+
+Autrement, veuillez vous assurer que votre ordinateur est connecté
+au réseau lorsque ce sera possible.
+
+Merci de votre attention,
+BackupPC Genie
+http://backuppc.sourceforge.net
+EOF
+
+# No recent backup
+$Lang{EMailNoBackupRecentSubj} = "BackupPC: auncune sauvegarde récente de \$host";
+$Lang{EMailNoBackupRecentMesg} = <<'EOF';
+To: $user$domain
+cc:
+Subject: $subj
+
+$userName,
+
+Aucune sauvegarde de votre ordinateur n'a été effectuée depuis $days
+jours. $numBackups sauvegardes ont étés effectuées du $firstTime
+jusqu'il y à $days jours. Les sauvegardes devraient normallement
+survenir lorsque votre ordinateur est connecté au réseau.
+
+Si votre ordinateur a été connecté au réseau plus de quelques heures
+durant les derniers $days jours, vous devriez contacter votre support
+informatique pour savoir pourquoi les sauvegardes ne s'effectuent pas.
+
+Autrement, si vous êtes en dehors du bureau, il n'y a pas d'autres
+choses que vous pouvez faire, à part faire des copies de vos fichiers
+importants sur d'autres media. Vous devez réaliser que tout fichier crée
+ou modifié durant les $days derniers jours (incluant les courriels et
+les fichiers attachés) ne pourra être restauré si une problème survient
+avec votre ordinateur.
+
+Merci de votre attention,
+BackupPC Genie
+http://backuppc.sourceforge.net
+EOF
+
+# Old Outlook files
+$Lang{EMailOutlookBackupSubj} = "BackupPC: Les fichiers de Outlook sur \$host doivent êtes sauvegardés";
+$Lang{EMailOutlookBackupMesg} = <<'EOF';
+To: $user$domain
+cc:
+Subject: $subj
+
+$userName,
+
+Les fichiers Outlook sur votre ordinateur n'ont $howLong. Ces fichiers
+contiennent tous vos courriels, fichiers attachés, carnets d'adresses et
+calendriers. $numBackups sauvegardes ont étés effectuées du $firstTime
+au $lastTime.  Par contre, Outlook bloque ses fichiers lorsqu'il est
+ouvert, ce qui empêche de les sauvegarder.
+
+Il est recommendé d'effectuer une sauvegarde de vos fichiers Outlook
+quand vous serez connecté au réseau en quittant Outlook et tout autre
+application, et en visitant ce lien avec votre fureteur web:
+
+    $CgiURL?host=$host               
+
+Choisissez "Démarrer la sauvegarde incrémentielle" deux fois afin
+d'effectuer une nouvelle sauvegarde. Vous pouvez ensuite choisir
+"Retourner à la page de $host" et appuyer sur "Recharger" dans votre
+fureteur avec de vérifier le bon fonctionnement de la sauvegarde. La
+sauvegarde devrait prendre quelques minutes à s'effectuer.
+
+Merci de votre attention,
+BackupPC Genie
+http://backuppc.sourceforge.net
+EOF
+
+$Lang{howLong_not_been_backed_up} = "jamais étés sauvegardés";
+$Lang{howLong_not_been_backed_up_for_days_days} = "pas été sauvegardés depuis \$days jours";
+
 #end of lang_fr.pm