From f646a05ebb5452b326fc2c1e5fc4b2d752ff90a5 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Nov 03 2021 09:24:19 +0000 Subject: 🔀 Merge branch 'development' --- diff --git a/CHANGELOG b/CHANGELOG index 6b30d56..efa0d5b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,12 @@ Revision history for Lufi ?.??.? ????-??-?? + - 🐛 Fix mail signature separator + - 💄 Disable signature when using LDAP (#249) + - 🌐 Update translations + - 🔒 Fix XSS where using zip feature (#254) + - 🔒 Fix unauthorized manipulations of invitations (#254) + - 🔒 Detect schemeless URL in mail (#254) 0.05.14 2021-06-16 - 🔧 Set default morbo port to 3000 (as it should have stay) diff --git a/lib/Lufi/Controller/Invitation.pm b/lib/Lufi/Controller/Invitation.pm index 22ee695..887d16e 100644 --- a/lib/Lufi/Controller/Invitation.pm +++ b/lib/Lufi/Controller/Invitation.pm @@ -122,61 +122,79 @@ sub delete_invitations { my $c = shift; my @tokens = @{$c->every_param('tokens[]')}; - my @result = (); - for my $token (@tokens) { - my $i = Lufi::DB::Invitation->new(app => $c->app) - ->from_token($token) - ->deleted(1) - ->write; - push @result, { msg => $c->l('The invitation %1 has been deleted.', $i->token), token => $i->token, deleted => $i->deleted }; - } + if ($c->is_user_authenticated) { + my @result = (); + my @failures = (); + for my $token (@tokens) { + my $i = Lufi::DB::Invitation->new(app => $c->app) + ->from_token($token); + if ($i->ldap_user eq $c->current_user->{username}) { + $i->deleted(1) + ->write; + push @result, { msg => $c->l('The invitation %1 has been deleted.', $i->token), token => $i->token, deleted => $i->deleted }; + } else { + push @failures, $c->l('The invitation %1 can’t be deleted: it wasn’t created by you (%2).', $i->token, $c->current_user->{username}); + } + } - $c->render(json => { - success => true, - tokens => \@result - }); + $c->render(json => { + success => (scalar(@result) > 0) ? true : false, + tokens => \@result, + failures => \@failures + }); + } else { + $c->redirect_to($c->url_for('login')->query(redirect => 'my_invitations')); + } } sub resend_invitations { my $c = shift; my @tokens = @{$c->every_param('tokens[]')}; - my @success; - my @failures; - for my $token (@tokens) { - my $i = Lufi::DB::Invitation->new(app => $c->app) - ->from_token($token); + if ($c->is_user_authenticated) { + my @success = (); + my @failures = (); + for my $token (@tokens) { + my $i = Lufi::DB::Invitation->new(app => $c->app) + ->from_token($token); - if ($i->files_sent_at) { - push @failures, $c->l('The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation.', $i->token, $i->guest_mail); - } else { - if ($c->config('invitations')->{'extend_invitation_expiration_on_resend'}) { - $i->expire_at(time + $i->expire_at - $i->created_at) - ->write; - } + if ($i->ldap_user eq $c->current_user->{username}) { + if ($i->files_sent_at) { + push @failures, $c->l('The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation.', $i->token, $i->guest_mail); + } else { + if ($c->config('invitations')->{'extend_invitation_expiration_on_resend'}) { + $i->expire_at(time + $i->expire_at - $i->created_at) + ->write; + } - my $from = ($c->config('invitations')->{'send_invitation_with_ldap_user_mail'}) ? $i->ldap_user_mail : $c->config('mail_sender'); - my $url = $c->url_for('guest', token => $i->token)->to_abs; - my $expire = $c->get_date_lang()->time2str($c->l('%A %d %B %Y at %T'), $i->expire_at); - $c->mail( - from => $from, - to => $i->guest_mail, - template => 'invitations/invite', - format => 'mail', - ldap_user => ucfirst($i->ldap_user), - url => $url, - invitation => $i, - expires => $expire - ); + my $from = ($c->config('invitations')->{'send_invitation_with_ldap_user_mail'}) ? $i->ldap_user_mail : $c->config('mail_sender'); + my $url = $c->url_for('guest', token => $i->token)->to_abs; + my $expire = $c->get_date_lang()->time2str($c->l('%A %d %B %Y at %T'), $i->expire_at); + $c->mail( + from => $from, + to => $i->guest_mail, + template => 'invitations/invite', + format => 'mail', + ldap_user => ucfirst($i->ldap_user), + url => $url, + invitation => $i, + expires => $expire + ); - push @success, { msg => $c->l('Invitation resent to %1.
URL: %2', $i->guest_mail, $url), expires => $expire, token => $i->token }; + push @success, { msg => $c->l('Invitation resent to %1.
URL: %2', $i->guest_mail, $url), expires => $expire, token => $i->token }; + } + } else { + push @failures, $c->l('The invitation %1 can’t be resent: it wasn’t created by you (%2).', $i->token, $c->current_user->{username}); + } } - } - $c->render(json => { - success => \@success, - failures => \@failures - }); + $c->render(json => { + success => \@success, + failures => \@failures + }); + } else { + $c->redirect_to($c->url_for('login')->query(redirect => 'my_invitations')); + } } sub toggle_invitations_visibility { diff --git a/lib/Lufi/Controller/Mail.pm b/lib/Lufi/Controller/Mail.pm index c7a5508..595fdd8 100644 --- a/lib/Lufi/Controller/Mail.pm +++ b/lib/Lufi/Controller/Mail.pm @@ -5,6 +5,7 @@ use Mojo::JSON qw(decode_json); use Mojo::URL; use Email::Valid; use URI::Find; +use URI::Find::Schemeless; sub render_mail { my $c = shift; @@ -39,7 +40,7 @@ sub send_mail { my ($uri, $orig_uri) = @_; $uri = Mojo::URL->new($uri); if ($uri->host ne $base_url->to_abs->host && $uri->host ne $fixed_url->to_abs->host) { - $msg .= $c->l('You can\'t add URLs that are not related to this instance.').'
'; + $msg .= $c->l('You can\'t add URLs that are not related to this instance (%1).', $orig_uri).'
'; } elsif (index($orig_uri, $fixed_url->to_abs->to_string) > -1) { $at_least_one_instance_url = 1; } @@ -48,7 +49,20 @@ sub send_mail { $finder->find(\$body); $finder->find(\$subject); - $c->debug($at_least_one_instance_url); + # Schemeless URI beginning with www, which are interpreted by mailers 🤦 + $finder = URI::Find::Schemeless->new(sub { + my ($uri, $orig_uri) = @_; + return $orig_uri if ($uri !~ m/www/); + + $uri = Mojo::URL->new($uri); + if ($uri->host ne $base_url->to_abs->host && $uri->host ne $fixed_url->to_abs->host) { + $msg .= $c->l('You can\'t add URLs that are not related to this instance (%1).', $orig_uri).'
'; + } + return $orig_uri; + }); + $finder->find(\$body); + $finder->find(\$subject); + unless ($at_least_one_instance_url) { $msg .= $c->l('The body of the mail must contain at least one URL pointing to a file hosted on this instance.').'
'; } diff --git a/themes/default/lib/Lufi/I18N/ar.po b/themes/default/lib/Lufi/I18N/ar.po index 4bad752..f2e18ce 100644 --- a/themes/default/lib/Lufi/I18N/ar.po +++ b/themes/default/lib/Lufi/I18N/ar.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2021-03-02 18:14+0000\n" -"Last-Translator: zer0-x <1rn0kmrwo@relay.firefox.com>\n" +"PO-Revision-Date: 2021-10-08 03:05+0000\n" +"Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.4.2\n" +"X-Generator: Weblate 4.6.2\n" #. ($delay) #. (max_delay) @@ -608,7 +608,7 @@ msgid "" "Sorry, your invitation has expired or has been deleted. Please contact %1 to " "have another invitation." msgstr "" -"المعذرة ، لقد انتهت مدة صلاحية دعوتك أو تم قد حذفها. الرجاء الاتصال بـ %1 " +"المعذرة ، لقد انتهت مدة صلاحية دعوتك أو قد تم حذفها. الرجاء الاتصال بـ %1 " "للحصول على دعوة أخرى." #. ($invitation->ldap_user_mail) @@ -647,7 +647,7 @@ msgstr "لا يمكن أن يُترك موضوع الرسالة فارغًا." #. ($expire_at, $max_expire_at) #: lib/Lufi/Controller/Invitation.pm:51 msgid "The expiration delay (%1) is not between 1 and %2 days." -msgstr "مدة انتهاء الصلاحية (%1) ليس بين 1 و %2 أيام." +msgstr "مدة انتهاء الصلاحية (%1) ليس محصور بين 1 و %2 أيام." #: lib/Lufi/Controller/Files.pm:468 msgid "The file has already been deleted" @@ -971,3 +971,9 @@ msgstr "آخر علامة على مثيل الخادم هذا: %1" #: themes/default/templates/about.html.ep:22 msgid "Latest commit of this instance: %1" msgstr "آخر مراجعة على مثيل الخادم هذا: %1" + +#: themes/default/templates/partial/render.js.ep:13 +msgid "Unable to download the file: too much unsuccessful attempts to open a websocket. Please, contact the administrator." +msgstr "" +"استحالة تنزيل الملف: العديد من المحاولات غير الناجحة لفتح websocket. الرجاء " +"الاتصال بالمدير." diff --git a/themes/default/lib/Lufi/I18N/el.po b/themes/default/lib/Lufi/I18N/el.po index cc0e61f..2c06dc0 100644 --- a/themes/default/lib/Lufi/I18N/el.po +++ b/themes/default/lib/Lufi/I18N/el.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2021-05-26 15:15+0000\n" -"Last-Translator: Dimitris T. \n" +"PO-Revision-Date: 2021-10-08 03:05+0000\n" +"Last-Translator: Georgios Pitsiladis \n" "Language-Team: Greek \n" "Language: el\n" @@ -42,11 +42,11 @@ msgstr "%1 σας έστειλε αρχεία" #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:8 msgid "%1 used your invitation to send you files:" -msgstr "%1 χρησιμοποίησε τη πρόσκληση για να σας στείλει αρχεία:" +msgstr "%1 χρησιμοποίησε την πρόσκληση για να σας στείλει αρχεία:" #: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "%A %d %B %Y at %T" -msgstr "" +msgstr "%A %d %B %Y στις %T" #: themes/default/templates/partial/index.js.ep:28 msgid "(max size: XXX)" @@ -61,7 +61,6 @@ msgid "24 hours" msgstr "24 ώρες" #: themes/default/templates/partial/mail.js.ep:40 -#, fuzzy msgid ":" msgstr ":" @@ -80,6 +79,8 @@ msgstr "Προσθέστε κωδικό στο αρχείο/α" #: themes/default/templates/mail.html.ep:16 msgid "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited." msgstr "" +"Δεν επιτρέπεται η προσθήκη στο σώμα ή στο θέμα του μηνύματος συνδέσμων URL " +"που δεν σχετίζονται με αυτό το Lufi ." #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" @@ -88,10 +89,17 @@ msgstr "Θέλετε σίγουρα να διαγράψετε τις επιλε #: themes/default/templates/partial/invitations.js.ep:4 msgid "Are you sure you want to resend the invitation mail for the selected invitations?" msgstr "" +"Θέλετε σίγουρα να ξαναστείλετε το μήνυμα πρόσκλησης για τις επιλεγμένες " +"προσκλήσεις;" #: themes/default/templates/about.html.ep:17 msgid "As Lufi is a free software licensed under of the terms of the AGPLv3, you can install it on you own server. Have a look on the Wiki for the procedure." msgstr "" +"Δεδομένου πως το Lufi είναι ελεύθερο λογισμικό και διέπεται από τους όρους " +"της άδειας AGPLv3, μπορείτε να το εγκαταστήσετε στον δικό σας διακομιστή. Δείτε τη " +"διαδικασία στο Wiki." #. (stash('nbslices') #: themes/default/templates/partial/render.js.ep:10 @@ -104,16 +112,16 @@ msgstr "Πίσω στην αρχική σελίδα" #: lib/Lufi/Controller/Mail.pm:25 msgid "Bad CSRF token!" -msgstr "" +msgstr "Λάθος CSRF token!" #: lib/Lufi/Controller/Auth.pm:27 lib/Lufi/Controller/Auth.pm:49 msgid "Bad CSRF token." -msgstr "" +msgstr "Λάθος CSRF token." #: themes/default/templates/partial/render.js.ep:5 msgid "Click here to refresh the page and restart the download." msgstr "" -"Πατήστε εδώ για να ανανεώσετε τη σελίδα και να επανεκκινήσετε τη μεταφόρτωση." +"Πατήστε εδώ για να ανανεώσετε τη σελίδα και να επανεκκινήσετε το κατέβασμα." #: themes/default/templates/invitations/invite.mail.ep:8 msgid "Click on the following URL to upload files on Lufi:" @@ -121,7 +129,7 @@ msgstr "Πατήστε στον ακόλουθο σύνδεσμο URL για ν #: themes/default/templates/index.html.ep:126 msgid "Click to open the file browser" -msgstr "" +msgstr "Κάντε κλικ για να αναζητήσετε αρχεία" #: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 msgid "Close" @@ -129,7 +137,7 @@ msgstr "Κλείσιμο" #: themes/default/templates/mail.html.ep:23 msgid "Comma-separated email addresses" -msgstr "διευθύνσεις email, χωρισμένες με κόμμα" +msgstr "Διευθύνσεις email, χωρισμένες με κόμμα" #: themes/default/templates/index.html.ep:140 msgid "Compressing zip file…" @@ -137,11 +145,11 @@ msgstr "Συμπίεση αρχείου zip…" #: themes/default/templates/partial/index.js.ep:15 msgid "Copy all links to clipboard" -msgstr "" +msgstr "Αντιγραφή όλων των συνδέσμων στο πρόχειρο" #: themes/default/templates/partial/index.js.ep:18 msgid "Copy to clipboard" -msgstr "" +msgstr "Αντιγραφή στο πρόχειρο" #: lib/Lufi/Controller/Files.pm:501 msgid "Could not delete the file. You are not authenticated." @@ -149,11 +157,11 @@ msgstr "Δεν μπορεί να διαγραφεί το αρχείο. Δεν ε #: lib/Lufi/Controller/Files.pm:483 msgid "Could not find the file. Are you sure of the URL and the token?" -msgstr "" +msgstr "Το αρχείο δεν βρέθηκε. Είστε σίγουροι για το σύνδεσμο URL και το token;" #: lib/Lufi/Controller/Files.pm:394 msgid "Could not find the file. Are you sure of the URL?" -msgstr "" +msgstr "Το αρχείο δεν βρέθηκε. Είστε σίγουροι για τον σύνδεσμο URL;" #: themes/default/templates/files.html.ep:29 msgid "Counter" @@ -175,7 +183,7 @@ msgstr "Διαγραφή" #: themes/default/templates/files.html.ep:30 themes/default/templates/index.html.ep:90 msgid "Delete at first download?" -msgstr "Διαγραφή στη πρώτη μεταφόρτωση;" +msgstr "Διαγραφή στο πρώτο κατέβασμα;" #: themes/default/templates/files.html.ep:19 msgid "Delete selected files" @@ -188,30 +196,38 @@ msgstr "Σύνδεσμος διαγραφής" #: themes/default/templates/delays.html.ep:8 msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file." msgstr "" +"Μην ανησυχείτε: ένας χρήστης μπορεί να ολοκληρώσει το κατέβασμα του αρχείου " +"μετά τη λήξη, αρκεί να ξεκινήσει να το κατεβάζει πριν τη λήξη." #: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28 msgid "Download" -msgstr "Μεταφόρτωση" +msgstr "Κατέβασμα" #: themes/default/templates/partial/render.js.ep:4 msgid "Download aborted." -msgstr "Ακύρωση μεταφόρτωσης." +msgstr "Το κατέβασμα ακυρώθηκε." #: themes/default/templates/files.html.ep:28 themes/default/templates/partial/index.js.ep:20 msgid "Download link" -msgstr "Σύνδεσμος μεταφόρτωσης" +msgstr "Σύνδεσμος κατεβάσματος" #: themes/default/templates/about.html.ep:10 msgid "Drag and drop files in the appropriate area or use the traditional way to send files and the files will be chunked, encrypted and sent to the server. You will get two links per file: a download link, that you give to the people you want to share the file with and a deletion link, allowing you to delete the file whenever you want." msgstr "" +"Σύρετε τα αρχεία στη σχετική περιοχή ή χρησιμοποιήστε τον παραδοσιακό τρόπο " +"επιλογής αρχείων και τα αρχεία θα χωριστούν σε κομμάτια, θα κρυπτογραφηθούν " +"και θα σταλούν στον διακομιστή. Θα σας δοθούν δύο σύνδεσμοι για κάθε αρχείο: " +"ένας σύνδεσμος για κατέβασμα, που θα δώσετε σε εκείνους που θέλετε να " +"κατεβάσουν το αρχείο και ένας σύνδεσμος για διαγραφή, που σας επιτρέπει να " +"το διαγράψετε όποτε θελήσετε." #: themes/default/templates/index.html.ep:122 msgid "Drop files here" -msgstr "" +msgstr "Σύρετε αρχεία εδώ" #: themes/default/templates/invitations/invite.html.ep:40 msgid "Email address of your guest" -msgstr "" +msgstr "Διεύθυνση email του καλεσμένου σας" #: themes/default/templates/mail.html.ep:39 msgid "Email body" @@ -223,7 +239,7 @@ msgstr "Θέμα email" #: themes/default/templates/mail.html.ep:25 themes/default/templates/mail.html.ep:27 msgid "Emails" -msgstr "" +msgstr "Email" #: themes/default/templates/partial/index.js.ep:22 msgid "Encrypting part XX1 of XX2" @@ -231,15 +247,15 @@ msgstr "Κρυπτογράφηση μέρους XX1 από XX2" #: lib/Lufi/Controller/Files.pm:283 msgid "Error: the file existed but was deleted." -msgstr "Μήνυμα λάθους: το αρχείο υπήρχε αλλά διαγράφηκε" +msgstr "Σφάλμα: το αρχείο υπήρχε αλλά διαγράφηκε." #: lib/Lufi/Controller/Files.pm:363 msgid "Error: the file has not been sent entirely." -msgstr "" +msgstr "Σφάλμα: δεν στάλθηκε ολόκληρο το αρχείο." #: lib/Lufi/Controller/Files.pm:373 msgid "Error: unable to find the file. Are you sure of your URL?" -msgstr "" +msgstr "Σφάλμα: το αρχείο δεν βρέθηκε. Είστε σίγουροι για τον σύνδεσμο URL;" #: themes/default/templates/partial/index.js.ep:23 msgid "Expiration:" @@ -255,7 +271,7 @@ msgstr "Λήγει στις" #: themes/default/templates/files.html.ep:12 msgid "Export localStorage data" -msgstr "" +msgstr "Εξαγωγή δεδομένων localStorage" #: lib/Lufi/Controller/Files.pm:465 msgid "File deleted" @@ -263,7 +279,7 @@ msgstr "Το αρχείο διαγράφηκε" #: themes/default/templates/partial/render.js.ep:9 msgid "File downloaded" -msgstr "Το αρχείο μεταφορτώθηκε" +msgstr "Το αρχείο κατέβηκε" #: themes/default/templates/files.html.ep:27 msgid "File name" @@ -279,7 +295,7 @@ msgstr "Αρχεία" #: themes/default/templates/index.html.ep:80 msgid "Files deleted at first download" -msgstr "Τα αρχεία διαγράφηκαν στη πρώτη μεταφόρτωση" +msgstr "Τα αρχεία διαγράφηκαν στο πρώτο κατέβασμα" #: themes/default/templates/invitations/my_invitations.html.ep:28 msgid "Files sent at" @@ -287,7 +303,7 @@ msgstr "Τα αρχεία στάλθηκαν στις" #: themes/default/templates/partial/invitations.js.ep:8 msgid "Files sent in invitation XX1 by XX2" -msgstr "" +msgstr "Τα αρχεία στάλθηκαν στην πρόσκληση XX1 από XX2" #: themes/default/templates/partial/render.js.ep:8 msgid "Get the file" @@ -296,10 +312,14 @@ msgstr "Λάβε το αρχείο" #: themes/default/templates/about.html.ep:18 msgid "Get the source code on the official repository or on its Github mirror" msgstr "" +"Λάβετε τον πηγαίο κώδικα από το επίσημο αποθετήριο ή από τον καθρέπτη του στο " +"Github " #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" -msgstr "" +msgstr "Email καλεσμένου" #. (ucfirst(stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:6 @@ -328,68 +348,75 @@ msgstr "Απόκρυψη κρυφών προσκλήσεων" #: themes/default/templates/partial/index.js.ep:26 msgid "Hit Enter, then Ctrl+C to copy all the download links" msgstr "" +"Πατήστε Enter, μετά Ctrl+C για να αντιγράψετε όλους τους συνδέσμους " +"κατεβάσματος" #: themes/default/templates/partial/index.js.ep:25 msgid "Hit Enter, then Ctrl+C to copy the download link" -msgstr "" +msgstr "Πατήστε Enter, μετά Ctrl+C για να αντιγράψετε τον σύνδεσμο κατεβάσματος" #: themes/default/templates/about.html.ep:9 msgid "How does it work?" -msgstr "Πως δουλεύει;" +msgstr "Πώς δουλεύει;" #: themes/default/templates/invitations/invite.html.ep:46 msgid "How many days would you like the invitation to be valid?" -msgstr "" +msgstr "Για πόσες μέρες θα θέλατε να ισχύσει η πρόσκληση;" #: themes/default/templates/about.html.ep:16 msgid "How to install the software on my server?" -msgstr "Πως εγκαθιστώ το λογισμικό σε δικό μου διακομιστή;" +msgstr "Πώς εγκαθιστώ το λογισμικό σε δικό μου διακομιστή;" #: themes/default/templates/about.html.ep:12 msgid "How to report an illegal file?" -msgstr "Πως αναφέρω ένα παράνομο αρχείο;" +msgstr "Πώς αναφέρω ένα παράνομο αρχείο;" #: themes/default/templates/delays.html.ep:7 msgid "If you choose a delay, the file will be deleted after that delay." -msgstr "" +msgstr "Αν επιλέξετε μια διάρκεια, το αρχείο θα διαγραφεί μετά το πέρας της." #: themes/default/templates/mail.html.ep:15 msgid "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection." msgstr "" +"Αν στείλετε email από αυτόν τον διακομιστή, οι σύνδεσμοι θα σταλούν στον " +"διακομιστή, κάτι που μπορεί να περιορίσει την προστασία της ιδιωτικότητάς " +"σας." #: themes/default/templates/files.html.ep:14 msgid "Import localStorage data" -msgstr "" +msgstr "Εισαγωγή δεδομένων localStorage" #: themes/default/templates/index.html.ep:53 msgid "Important: more information on delays" -msgstr "Σημαντικό: περισσότερες πληροφορίες για καθυστερήσεις" +msgstr "Σημαντικό: περισσότερες πληροφορίες για τις διάρκειες ζωής" #: themes/default/templates/delays.html.ep:5 msgid "Information about delays" -msgstr "Πληροφορίες σχετικά με καθυστερήσεις" +msgstr "Πληροφορίες σχετικά με τις διάρκειες ζωής" #: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12 msgid "Invert selection" -msgstr "" +msgstr "Αντιστροφή επιλογής" #. ($i->guest_mail, $url) #: lib/Lufi/Controller/Invitation.pm:171 msgid "Invitation resent to %1.
URL: %2" -msgstr "" +msgstr "Η πρόσκληση προς %1 ξαναστάλθηκε .
Σύνδεσμος URL: %2" #. ($invitation->guest_mail, $url) #: lib/Lufi/Controller/Invitation.pm:87 msgid "Invitation sent to %1.
URL: %2" -msgstr "Η πρόσκληση στάλθηκε στο %1.
URL: %2" +msgstr "Η πρόσκληση στάλθηκε στο %1.
Σύνδεσμος URL: %2" #: themes/default/templates/invitations/invite.html.ep:27 themes/default/templates/layouts/default.html.ep:36 themes/default/templates/layouts/default.html.ep:69 msgid "Invite a guest" -msgstr "Προσκάλεσε ένα επισκέπτη" +msgstr "Προσκάλεσε έναν επισκέπτη" #: themes/default/templates/partial/render.js.ep:6 msgid "It seems that the key in your URL is incorrect. Please, verify your URL." msgstr "" +"Φαίνεται πως το κλειδί στον σύνδεσμο URL σας είναι λανθασμένο. Παρακαλούμε " +"ελέγξτε τον σύνδεσμο." #: themes/default/templates/index.html.ep:12 msgid "Javascript is disabled. You won't be able to use Lufi." @@ -404,12 +431,12 @@ msgstr "Γλώσσα" #. (sprintf('%s', stash('version') #: themes/default/templates/about.html.ep:22 msgid "Latest commit of this instance: %1" -msgstr "" +msgstr "Πιο πρόσφατο commit αυτής της εγκατάστασης: %1" #. (sprintf('%s', stash('version') #: themes/default/templates/about.html.ep:21 msgid "Latest tag of this instance: %1" -msgstr "" +msgstr "Πιο πρόσφατο tag αυτής της εγκατάστασης: %1" #: themes/default/templates/login.html.ep:15 msgid "Login" @@ -422,14 +449,24 @@ msgstr "Αποσύνδεση" #: themes/default/templates/about.html.ep:4 msgid "Lufi is a free (as in free speech) file hosting software." msgstr "" +"Το Lufi είναι ένα ελεύθερο (όπως ο ελεύθερος λόγος) λογισμικό για φιλοξενία " +"αρχείων." #: themes/default/templates/partial/files.js.ep:12 msgid "Lufi recently changed its way to store files information.\\n\\nNo files have been found in the new localStorage location but we found files in the old one.\\nDo you want to import those informations?\\n\\nPlease note that this is the only time that we will ask you this." msgstr "" +"Το Lufi άλλαξε πρόσφατα τον τρόπο που αποθηκεύει τις πληροφορίες των αρχείων." +"\\n" +"\\n" +"Δεν βρέθηκαν αρχεία στην καινούρια τοποθεσία του localStorage, αλλά βρέθηκαν " +"στην παλιά.\\n" +"Θέλετε να γίνει εισαγωγή των πληροφοριών;\\n" +"\\n" +"Έχετε υπόψιν ότι δεν θα σας ξαναρωτήσουμε." #: themes/default/templates/files.html.ep:34 msgid "Mail" -msgstr "" +msgstr "Mail" #: themes/default/templates/files.html.ep:3 themes/default/templates/layouts/default.html.ep:34 themes/default/templates/layouts/default.html.ep:67 msgid "My files" @@ -441,7 +478,7 @@ msgstr "Οι προσκλήσεις μου" #: themes/default/templates/invitations/notification_files_sent.mail.ep:17 msgid "NB: this list includes the list of files that have already been sent to you." -msgstr "" +msgstr "Σημείωση: αυτή η λίστα περιλαμβάνει τα αρχεία που σας έχουν ήδη σταλεί." #: themes/default/templates/index.html.ep:115 msgid "Name of the zip file" @@ -451,14 +488,18 @@ msgstr "Όνομα αρχείου zip" #: lib/Lufi/Controller/Files.pm:109 msgid "No enough space available on the server for this file (size: %1)." msgstr "" +"Δεν υπάρχει αρκετός χώρος στον διακομιστή για αυτό το αρχείο (μέγεθος %1)." #: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:29 msgid "No expiration delay" -msgstr "" +msgstr "Δεν έχει καθοριστεί διάρκεια ζωής" #: themes/default/templates/files.html.ep:8 msgid "Only the files sent with this browser will be listed here. This list is stored in localStorage: if you delete your localStorage data, you'll lose this list." msgstr "" +"Μόνο τα αρχεία που στάλθηκαν με αυτόν τον περιηγητή θα φαίνονται εδώ. Η " +"λίστα αποθηκεύεται στο localStorage: αν σβήσετε τα περιεχόμενα του " +"localStorage, θα χάσετε και τη λίστα." #: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 msgid "Password" @@ -472,10 +513,14 @@ msgstr "Παρακαλώ επικοινωνήστε με το διαχειρισ #: themes/default/templates/render.html.ep:33 msgid "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it." msgstr "" +"Περιμένετε όσο ετοιμάζουμε το αρχείο σας. Πρέπει πρώτα να κατέβουν και να " +"αποκρυπτογραφηθούν όλα του τα κομμάτια για να το χρησιμοποιήσετε." #: lib/Lufi/Controller/Auth.pm:38 msgid "Please, check your credentials or your right to access this service: unable to authenticate." msgstr "" +"Παρακαλούμε, ελέγξτε τα στοιχεία σας ή το δικαίωμα πρόσβασής σας στην " +"υπηρεσία: η πιστοποίηση απέτυχε." #: themes/default/templates/about.html.ep:5 msgid "Privacy" @@ -483,15 +528,15 @@ msgstr "Ιδιωτικότητα" #: themes/default/templates/files.html.ep:13 msgid "Purge expired files from localStorage" -msgstr "" +msgstr "Διαγραφή ληγμένων αρχείων από το localStorage" #: themes/default/templates/invitations/notification_files_sent.mail.ep:20 msgid "Regards," -msgstr "" +msgstr "Με εκτίμηση," #: themes/default/templates/invitations/invite.mail.ep:15 msgid "Regards." -msgstr "" +msgstr "Με εκτίμηση." #: themes/default/templates/layouts/default.html.ep:31 themes/default/templates/layouts/default.html.ep:64 msgid "Report file" @@ -503,11 +548,13 @@ msgstr "Επαναποστολή μηνύματος πρόσκλησης" #: themes/default/templates/invitations/my_invitations.html.ep:9 msgid "Rows in purple mean that the invitations have expired." -msgstr "" +msgstr "Οι σειρές με μοβ αντιστοιχούν σε ληγμένες προσκλήσεις." #: themes/default/templates/files.html.ep:9 msgid "Rows in red mean that the files have expired and are no longer available." msgstr "" +"Οι σειρές με κόκκινο αντιστοιχούν σε ληγμένα αρχεία που δεν είναι πια " +"διαθέσιμα." #: themes/default/templates/partial/index.js.ep:27 msgid "Send all links by email" @@ -523,16 +570,18 @@ msgstr "Αποστολή με αυτό το διακομιστή" #: themes/default/templates/mail.html.ep:47 msgid "Send with your own mail software" -msgstr "Αποστολή μεσω δικού σας λογισμικού για email" +msgstr "Αποστολή μέσω δικού σας λογισμικού για email" #: themes/default/templates/partial/index.js.ep:30 msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move." msgstr "" +"Αποστολή μέρους XX1 από XX2. Παρακαλούμε περιμένετε, η μπάρα μπορεί να " +"χρειαστεί λίγη ώρα να μετακινηθεί." #. (url_for('/') #: themes/default/templates/partial/mail.js.ep:48 msgid "Share your files in total privacy on %1" -msgstr "" +msgstr "Μοιραστείτε τα αρχεία σας με πλήρη ιδιωτικότητα στο %1" #: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9 msgid "Show hidden invitations" @@ -549,36 +598,45 @@ msgstr "Είσοδος" #: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16 msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" msgstr "" +"Μας συγχωρείτε, αυτή η πρόσκληση δεν υπάρχει. Είστε σίγουρα στη σωστή σελίδα;" #: themes/default/templates/index.html.ep:46 msgid "Sorry, the uploading is currently disabled. Please try again later." msgstr "" +"Μας συγχωρείτε, το ανέβασμα αρχείων είναι προσωρινά απενεργοποιημένο. " +"Παρακαλούμε προσπαθήστε αργότερα." #: lib/Lufi/Controller/Files.pm:82 msgid "Sorry, uploading is disabled." -msgstr "" +msgstr "Μας συγχωρείτε, το ανέβασμα αρχείων είναι απενεργοποιημένο." #: themes/default/templates/invitations/exception.html.ep:7 msgid "Sorry, your invitation has expired or has been deleted." -msgstr "" +msgstr "Μας συγχωρείτε, η πρόσκληση έχει λήξει ή έχει διαγραφεί." #. ($invit->ldap_user_mail) #: lib/Lufi/Controller/Files.pm:123 msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." msgstr "" +"Μας συγχωρείτε, η πρόσκληση έχει λήξει ή έχει διαγραφεί. Επικοινωνήστε με το " +"%1 για νέα πρόσκληση." #. ($invitation->ldap_user_mail) #: lib/Lufi/Controller/Invitation.pm:276 msgid "The URLs of your files have been sent by email to %1." -msgstr "" +msgstr "Οι σύνδεσμοι URL των αρχείων σας στάλθηκαν μέσω email στο %1." #: themes/default/templates/about.html.ep:7 msgid "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)." msgstr "" +"Ο διαχειριστής μπορεί μόνο να δει το όνομα, το μέγεθος, και τον τύπο αρχείου " +"(mimetype, τι είδος αρχείου είναι: βίντεο, κείμενο, κλπ)." #: lib/Lufi/Controller/Mail.pm:53 msgid "The body of the mail must contain at least one URL pointing to a file hosted on this instance." msgstr "" +"Το σώμα του email πρέπει να περιέχει τουλάχιστον ένα σύνδεσμο URL που να " +"οδηγεί σε αρχείο που φιλοξενείται εδώ." #: themes/default/templates/partial/files.js.ep:11 msgid "The data has been successfully imported." @@ -595,7 +653,7 @@ msgstr "Το θέμα του μηνύματος δεν μπορεί να είν #. ($expire_at, $max_expire_at) #: lib/Lufi/Controller/Invitation.pm:51 msgid "The expiration delay (%1) is not between 1 and %2 days." -msgstr "" +msgstr "Η διάρκεια ζωής του αρχείου (%1) δεν είναι από 1 μέχρι %2 ημέρες." #: lib/Lufi/Controller/Files.pm:462 msgid "The file has already been deleted" @@ -604,6 +662,8 @@ msgstr "Το αρχείο έχει ήδη διαγραφεί" #: themes/default/templates/about.html.ep:6 msgid "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content." msgstr "" +"Τα αρχεία που ανεβαίνουν σε ένα Lufi κρυπτογραφούνται πριν ανέβουν στον " +"διακομιστή: ο διαχειριστής του δεν μπορεί να δει τα περιεχόμενά τους." #. (join(', ', @bad) #: lib/Lufi/Controller/Mail.pm:68 @@ -613,111 +673,127 @@ msgstr "Οι ακόλουθες διευθύνσεις email δεν είναι #. ($guest_mail) #: lib/Lufi/Controller/Invitation.pm:48 msgid "The guest email address (%1) is unvalid." -msgstr "" +msgstr "Η διεύθυνση email (%1) δεν είναι έγκυρη." #. ($i->token, $i->guest_mail) #: lib/Lufi/Controller/Invitation.pm:150 msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." msgstr "" +"Η πρόσκληση %1 δεν μπορεί να ξανασταλεί: το %2 έχει ήδη στείλει " +"αρχεία.
Παρακαλούμε δημιουργήστε μια καινούρια πρόσκληση." #. ($i->token) #: lib/Lufi/Controller/Invitation.pm:130 msgid "The invitation %1 has been deleted." -msgstr "" +msgstr "Η πρόσκληση %1 έχει διαγραφεί." #. (stash('user_mail') #: themes/default/templates/invitations/invite.html.ep:34 msgid "The invitation mail will be send from your email address (%1)." -msgstr "" +msgstr "Το email της πρόσκλησης θα σταλεί από τη δική σας διεύθυνση (%1)." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" -msgstr "" +msgstr "Έγινε αντιγραφή του συνδέσμου / των συνδέσμων στο πρόχειρο" #. (stash('invitation') #: themes/default/templates/index.html.ep:30 msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)" msgstr "" +"Θα γίνει αυτόματη αποστολή του συνδέσμου / των συνδέσμων με email προς %1 " +"(%2)" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:11 msgid "The links of your file(s) will automatically be sent by mail to %1." msgstr "" +"Θα γίνει αυτόματη αποστολή του συνδέσμου / των συνδέσμων με email προς %1." #: lib/Lufi/Controller/Mail.pm:97 msgid "The mail has been sent." -msgstr "Το μήνυμα έχει σταλλεί." +msgstr "Το μήνυμα έχει σταλεί." #: themes/default/templates/about.html.ep:15 msgid "The original (and only for now) author is Luc Didry." msgstr "" +"Ο αρχικός (και μοναδικός προς το παρόν) δημιουργός είναι ο Luc Didry." #: lib/Lufi/Controller/Files.pm:230 msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator." msgstr "" +"Ο διακομιστής δεν κατάφερε να βρει το αρχείο όπου πρέπει να προστεθεί αυτό " +"το κομμάτι. Παρακαλούμε, επικοινωνήστε με τον διαχειριστή." #: lib/Lufi/Controller/Files.pm:289 msgid "This file has been deactivated by the admins. Contact them to know why." msgstr "" -"Αυτό το αρχείο έχει απανεργοποιηθεί από τους διαχειριστές. Επικοινωνήστε " +"Αυτό το αρχείο έχει απενεργοποιηθεί από τους διαχειριστές. Επικοινωνήστε " "μαζί τους για να μάθετε το λόγο." #: themes/default/templates/invitations/my_invitations.html.ep:46 themes/default/templates/partial/invitations.js.ep:6 msgid "This invitation is normally hidden" -msgstr "" +msgstr "Αυτή η πρόσκληση είναι κρυφή κανονικά" #. (stash('expires') #: themes/default/templates/invitations/invite.mail.ep:13 msgid "This invitation is valid until %1." -msgstr "" +msgstr "Αυτή η πρόσκληση είναι έγκυρη μέχρι %1." #: themes/default/templates/delays.html.ep:10 msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:" msgstr "" +"Ο διακομιστής θέτει περιορισμούς ανάλογα με το μέγεθος του αρχείου. Η " +"διάρκεια ζωής του αρχείου σας θα είναι το ελάχιστο μεταξύ αυτού που " +"επιλέγετε και των ακόλουθων περιορισμών:" #: themes/default/templates/invitations/my_invitations.html.ep:16 msgid "Toggle visibility" -msgstr "" +msgstr "Εμφάνιση/Απόκρυψη" #: themes/default/templates/invitations/my_invitations.html.ep:25 -#, fuzzy msgid "URL" -msgstr "URL" +msgstr "Σύνδεσμος URL" #: themes/default/templates/partial/index.js.ep:17 msgid "Unable to copy the link(s) to your clipboard" msgstr "" +"Δεν μπόρεσε να γίνει αντιγραφή του συνδέσμου / των συνδέσμων στο πρόχειρο" #. ($short) #: lib/Lufi/Controller/Files.pm:433 msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." msgstr "" +"Δεν ήταν δυνατόν να βρεθεί ο μετρητής για το %1. Το αρχείο δεν υπάρχει. Θα " +"αφαιρεθεί από το localStorage." #. ($short) #: lib/Lufi/Controller/Files.pm:423 msgid "Unable to get counter for %1. The token is invalid." msgstr "" +"Δεν ήταν δυνατόν να βρεθεί ο μετρητής για το %1. Το token δεν είναι έγκυρο." #. ($short) #: lib/Lufi/Controller/Files.pm:443 msgid "Unable to get counter for %1. You are not authenticated." msgstr "" +"Δεν ήταν δυνατόν να βρεθεί ο μετρητής για το %1. Δεν έχετε πιστοποιηθεί." #: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66 msgid "Upload files" -msgstr "Μεταφόρτωση αρχείων" +msgstr "Ανέβασμα αρχείων" #: themes/default/templates/index.html.ep:145 msgid "Upload generated zip file" -msgstr "" +msgstr "Ανέβασμα του αρχείου zip που δημιουργήθηκε" #: themes/default/templates/files.html.ep:31 msgid "Uploaded at" -msgstr "" +msgstr "Ανέβηκε στις" #: themes/default/templates/index.html.ep:153 msgid "Uploaded files" -msgstr "" +msgstr "Ανεβασμένα αρχεία" #: themes/default/templates/about.html.ep:20 msgid "Version" @@ -737,35 +813,51 @@ msgstr "Ποιος έγραψε αυτό το λογισμικό;" #: themes/default/templates/partial/index.js.ep:13 msgid "XXX file has been added to upload queue." -msgstr "" +msgstr "Το αρχείο XXX προστέθηκε στην ουρά για ανέβασμα." #: themes/default/templates/invitations/invite.html.ep:30 msgid "You can invite someone to send you files through this Lufi instance even if they don’t have an account on it." msgstr "" +"Μπορείτε να προσκαλέσετε κάποιον/-α να σας στείλει αρχεία μέσα από αυτό το " +"Lufi, ακόμη κι αν δεν έχει λογαριασμό εδώ." #: themes/default/templates/about.html.ep:11 msgid "You can see the list of your files by clicking on the \"My files\" link at the top right of this page." msgstr "" +"Μπορείτε να δείτε τη λίστα των αρχείων σας κάνοντας κλικ στο σύνδεσμο \"Τα " +"αρχεία μου\" στην κορυφή αυτής της σελίδας στα δεξιά." #: lib/Lufi/Controller/Mail.pm:42 msgid "You can't add URLs that are not related to this instance." msgstr "" +"Δεν μπορείτε να προσθέσετε συνδέσμους URL που δεν σχετίζονται με αυτό το " +"Lufi." #: themes/default/templates/about.html.ep:8 msgid "You don't need to register yourself to upload files but be aware that, for legal reasons, your IP address will be stored when you send a file. Don't panic, this is normally the case for all sites on which you send files." msgstr "" +"Δεν χρειάζεται να φτιάξετε λογαριασμό για να ανεβάσετε αρχεία, έχετε όμως " +"υπόψιν σας ότι, για νομικούς λόγους, η διεύθυνση IP σας θα αποθηκευτεί όταν " +"στείλετε ένα αρχείο. Μην πανικοβάλλεστε, αυτό συμβαίνει συνήθως σε όλες τις " +"ιστοσελίδες που σας επιτρέπουν να στέλνετε αρχεία." #: themes/default/templates/partial/render.js.ep:11 msgid "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled." msgstr "" +"Δεν φαίνεται να υπάρχει κλειδί σε αυτόν τον σύνδεσμο URL. Το αρχείο δεν θα " +"μπορέσει να αποκρυπτογραφηθεί. Η λήψη ακυρώθηκε." #: themes/default/templates/partial/render.js.ep:7 msgid "You have attempted to leave this page. The download will be canceled. Are you sure?" msgstr "" +"Επιχειρήσατε να φύγετε από τη σελίδα. Η λήψη θα ακυρωθεί. Θέλετε σίγουρα να " +"φύγετε;" #: themes/default/templates/partial/index.js.ep:14 msgid "You have attempted to leave this page. The upload will be canceled. Are you sure?" msgstr "" +"Επιχειρήσατε να φύγετε από τη σελίδα. Η αποστολή θα ακυρωθεί. Θέλετε σίγουρα " +"να φύγετε;" #: themes/default/templates/logout.html.ep:14 msgid "You have been successfully logged out." @@ -778,15 +870,20 @@ msgstr "Πρέπει να δώστε τις διευθύνσεις email." #: themes/default/templates/index.html.ep:38 msgid "Your browser does not have enough entropy to generate a strong encryption key. Please wait (it's better if you do things on your computer while waiting)." msgstr "" +"Ο περιηγητής σας δεν έχει αρκετή εντροπία για να δημιουργηθεί ένα δυνατό " +"κλειδί κρυπτογράφησης. Παρακαλούμε περιμένετε (είναι καλύτερα αν όσο " +"περιμένετε χρησιμοποιείτε τον υπολογιστή)." #. (format_bytes($json->{size}) #: lib/Lufi/Controller/Files.pm:95 msgid "Your file is too big: %1 (maximum size allowed: %2)" -msgstr "" +msgstr "Το αρχείο είναι πολύ μεγάλο: %1 (μέγιστο επιτρεπόμενο μέγεθος: %2)" #: lib/Lufi/Controller/Files.pm:345 msgid "Your password is not valid. Please refresh the page to retry." msgstr "" +"Ο κωδικός δεν είναι έγκυρος. Παρακαλούμε ανανεώστε τη σελίδα για να " +"ξαναδοκιμάσετε." #: themes/default/templates/partial/render.js.ep:13 msgid "Zip content:" @@ -795,12 +892,12 @@ msgstr "Περιεχόμενα zip:" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:20 msgid "between %1 and %2, the file will be kept %3 day(s)." -msgstr "" +msgstr "μεταξύ %1 και %2, το αρχείο θα διατηρηθεί για %3 ημέρα/-ες." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "" +msgstr "μεταξύ %1 και %2, το αρχείο θα διατηρηθεί για πάντα." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " @@ -813,12 +910,12 @@ msgstr "λήγει στις XXX" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:26 msgid "for %1 and more, the file will be kept %2 day(s)" -msgstr "" +msgstr "για %1 και πάνω, το αρχείο θα διατηρηθεί για %2 ημέρα/-ες" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 msgid "for %1 and more, the file will be kept forever." -msgstr "" +msgstr "για %1 και πάνω, το αρχείο θα διατηρηθεί για πάντα." #: themes/default/templates/index.html.ep:3 msgid "no time limit" @@ -831,4 +928,11 @@ msgstr "ή" #. ($e->{name}, format_bytes($e->{size}) #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" +msgstr "— %1 (%2), που θα λήξει στις %3" + +#: themes/default/templates/partial/render.js.ep:13 +msgid "Unable to download the file: too much unsuccessful attempts to open a websocket. Please, contact the administrator." msgstr "" +"Δεν ήταν δυνατόν να κατέβει το αρχείο: έγιναν υπερβολικά πολλές ανεπιτυχείς " +"προσπάθειες για άνοιγμα ενός websocket. Παρακαλούμε, επικοινωνήστε με τον " +"διαχειριστή." diff --git a/themes/default/lib/Lufi/I18N/en.po b/themes/default/lib/Lufi/I18N/en.po index 13b6725..3a9b7ba 100644 --- a/themes/default/lib/Lufi/I18N/en.po +++ b/themes/default/lib/Lufi/I18N/en.po @@ -41,7 +41,7 @@ msgstr "%1 sent you files" msgid "%1 used your invitation to send you files:" msgstr "%1 used your invitation to send you files:" -#: lib/Lufi/Controller/Invitation.pm:160 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 +#: lib/Lufi/Controller/Invitation.pm:172 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "%A %d %B %Y at %T" msgstr "%A %d %B %Y at %T" @@ -98,7 +98,7 @@ msgstr "Asking for file part XX1 of %1" msgid "Back to homepage" msgstr "Back to homepage" -#: lib/Lufi/Controller/Mail.pm:25 +#: lib/Lufi/Controller/Mail.pm:26 msgid "Bad CSRF token!" msgstr "Bad CSRF token!" @@ -364,7 +364,7 @@ msgid "Invert selection" msgstr "Invert selection" #. ($i->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:172 +#: lib/Lufi/Controller/Invitation.pm:184 msgid "Invitation resent to %1.
URL: %2" msgstr "Invitation resent to %1.
URL: %2" @@ -505,11 +505,11 @@ msgstr "Send all links by email" msgid "Send the invitation" msgstr "Send the invitation" -#: themes/default/templates/mail.html.ep:46 +#: themes/default/templates/mail.html.ep:47 msgid "Send with this server" msgstr "Send with this server" -#: themes/default/templates/mail.html.ep:47 +#: themes/default/templates/mail.html.ep:49 msgid "Send with your own mail software" msgstr "Send with your own mail software" @@ -518,7 +518,7 @@ msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a msgstr "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move." #. (url_for('/') -#: themes/default/templates/partial/mail.js.ep:48 +#: themes/default/templates/partial/mail.js.ep:49 msgid "Share your files in total privacy on %1" msgstr "Share your files in total privacy on %1" @@ -534,7 +534,7 @@ msgstr "Show zip content" msgid "Signin" msgstr "Signin" -#: lib/Lufi/Controller/Invitation.pm:284 themes/default/templates/invitations/exception.html.ep:16 +#: lib/Lufi/Controller/Invitation.pm:302 themes/default/templates/invitations/exception.html.ep:16 msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" msgstr "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" @@ -556,7 +556,7 @@ msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 msgstr "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." #. ($invitation->ldap_user_mail) -#: lib/Lufi/Controller/Invitation.pm:277 +#: lib/Lufi/Controller/Invitation.pm:295 msgid "The URLs of your files have been sent by email to %1." msgstr "The URLs of your files have been sent by email to %1." @@ -564,7 +564,7 @@ msgstr "The URLs of your files have been sent by email to %1." msgid "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)." msgstr "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)." -#: lib/Lufi/Controller/Mail.pm:53 +#: lib/Lufi/Controller/Mail.pm:67 msgid "The body of the mail must contain at least one URL pointing to a file hosted on this instance." msgstr "The body of the mail must contain at least one URL pointing to a file hosted on this instance." @@ -572,11 +572,11 @@ msgstr "The body of the mail must contain at least one URL pointing to a file ho msgid "The data has been successfully imported." msgstr "The data has been successfully imported." -#: lib/Lufi/Controller/Mail.pm:73 +#: lib/Lufi/Controller/Mail.pm:87 msgid "The email body can't be empty." msgstr "The email body can't be empty." -#: lib/Lufi/Controller/Mail.pm:72 +#: lib/Lufi/Controller/Mail.pm:86 msgid "The email subject can't be empty." msgstr "The email subject can't be empty." @@ -594,7 +594,7 @@ msgid "The files uploaded on a Lufi instance are encrypted before the upload to msgstr "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content." #. (join(', ', @bad) -#: lib/Lufi/Controller/Mail.pm:68 +#: lib/Lufi/Controller/Mail.pm:82 msgid "The following email addresses are not valid: %1" msgstr "The following email addresses are not valid: %1" @@ -603,13 +603,23 @@ msgstr "The following email addresses are not valid: %1" msgid "The guest email address (%1) is unvalid." msgstr "The guest email address (%1) is unvalid." +#. ($i->token, $c->current_user->{username}) +#: lib/Lufi/Controller/Invitation.pm:136 +msgid "The invitation %1 can’t be deleted: it wasn’t created by you (%2)." +msgstr "The invitation %1 can’t be deleted: it wasn’t created by you (%2)." + #. ($i->token, $i->guest_mail) -#: lib/Lufi/Controller/Invitation.pm:151 +#: lib/Lufi/Controller/Invitation.pm:163 msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." msgstr "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." +#. ($i->token, $c->current_user->{username}) +#: lib/Lufi/Controller/Invitation.pm:187 +msgid "The invitation %1 can’t be resent: it wasn’t created by you (%2)." +msgstr "The invitation %1 can’t be resent: it wasn’t created by you (%2)." + #. ($i->token) -#: lib/Lufi/Controller/Invitation.pm:131 +#: lib/Lufi/Controller/Invitation.pm:134 msgid "The invitation %1 has been deleted." msgstr "The invitation %1 has been deleted." @@ -632,7 +642,7 @@ msgstr "The link(s) of your file(s) will automatically be sent by mail to %1 (%2 msgid "The links of your file(s) will automatically be sent by mail to %1." msgstr "The link(s) of your file(s) will automatically be sent by mail to %1." -#: lib/Lufi/Controller/Mail.pm:97 +#: lib/Lufi/Controller/Mail.pm:111 msgid "The mail has been sent." msgstr "The mail has been sent." @@ -736,7 +746,12 @@ msgstr "You can invite someone to send you files through this Lufi instance even msgid "You can see the list of your files by clicking on the \"My files\" link at the top right of this page." msgstr "You can see the list of your files by clicking on the \"My files\" link at the top right of this page." -#: lib/Lufi/Controller/Mail.pm:42 +#. ($orig_uri) +#: lib/Lufi/Controller/Mail.pm:43 lib/Lufi/Controller/Mail.pm:59 +msgid "You can't add URLs that are not related to this instance (%1)." +msgstr "You can't add URLs that are not related to this instance (%1)." + +#: msgid "You can't add URLs that are not related to this instance." msgstr "You can't add URLs that are not related to this instance." @@ -760,7 +775,7 @@ msgstr "You have attempted to leave this page. The upload will be canceled. Are msgid "You have been successfully logged out." msgstr "You have been successfully logged out." -#: lib/Lufi/Controller/Mail.pm:71 +#: lib/Lufi/Controller/Mail.pm:85 msgid "You must give email addresses." msgstr "You must give email addresses." diff --git a/themes/default/lib/Lufi/I18N/fr.po b/themes/default/lib/Lufi/I18N/fr.po index 73aaf02..5591664 100644 --- a/themes/default/lib/Lufi/I18N/fr.po +++ b/themes/default/lib/Lufi/I18N/fr.po @@ -45,11 +45,11 @@ msgstr "%1 vous a envoyé des fichiers" msgid "%1 used your invitation to send you files:" msgstr "%1 a utilisé votre invitation pour vous envoyer des fichiers :" -#: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 +#: lib/Lufi/Controller/Invitation.pm:172 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "%A %d %B %Y at %T" msgstr "%A %d %B %Y à %T" -#: themes/default/templates/partial/index.js.ep:27 +#: themes/default/templates/partial/index.js.ep:28 msgid "(max size: XXX)" msgstr "(taille max : XXX)" @@ -78,48 +78,35 @@ msgid "Add a password to file(s)" msgstr "Ajouter un mot de passe au(x) fichier(s)" #: themes/default/templates/mail.html.ep:16 -msgid "" -"Adding URLs not related to this Lufi instance to the mail body or subject is " -"prohibited." -msgstr "" -"L’ajout d’URL non liées à cette instance Lufi au corps ou au sujet du mail " -"est interdit." +msgid "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited." +msgstr "L’ajout d’URL non liées à cette instance Lufi au corps ou au sujet du mail est interdit." #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" msgstr "Êtes-vous sûr·e de vouloir supprimer les invitations sélectionnées ?" #: themes/default/templates/partial/invitations.js.ep:4 -msgid "" -"Are you sure you want to resend the invitation mail for the selected " -"invitations?" -msgstr "" -"Êtes-vous sûr·e de vouloir renvoyer le courriel d’invitation pour les " -"invitations sélectionnées ?" +msgid "Are you sure you want to resend the invitation mail for the selected invitations?" +msgstr "Êtes-vous sûr·e de vouloir renvoyer le courriel d’invitation pour les invitations sélectionnées ?" #: themes/default/templates/about.html.ep:17 -msgid "" -"As Lufi is a free software licensed under of the terms of the AGPLv3, you can " -"install it on you own server. Have a look on the Wiki for the procedure." -msgstr "" -"Comme Lufi est un logiciel libre soumis aux termes de la license AGPLv3, vous " -"pouvez l’installer sur votre propre serveur. Veuillez consulter le Wiki pour " -"voir la procédure." +msgid "As Lufi is a free software licensed under of the terms of the AGPLv3, you can install it on you own server. Have a look on the Wiki for the procedure." +msgstr "Comme Lufi est un logiciel libre soumis aux termes de la license AGPLv3, vous pouvez l’installer sur votre propre serveur. Veuillez consulter le Wiki pour voir la procédure." + +#: +msgid "As Lufi is a free software licensed under of the terms of the AGPLv3, you can install it on you own server. Have a look on the Wiki for the procedure." +msgstr "Comme Lufi est un logiciel libre soumis aux termes de la license AGPLv3, vous pouvez l’installer sur votre propre serveur. Veuillez consulter le Wiki pour voir la procédure." #. (stash('nbslices') -#: themes/default/templates/partial/render.js.ep:9 +#: themes/default/templates/partial/render.js.ep:10 msgid "Asking for file part XX1 of %1" msgstr "Demande de récupération du fragment de fichier XX1 sur %1" -#: themes/default/templates/about.html.ep:20 +#: themes/default/templates/about.html.ep:23 msgid "Back to homepage" msgstr "Retour à la page d’accueil" -#: lib/Lufi/Controller/Mail.pm:25 +#: lib/Lufi/Controller/Mail.pm:26 msgid "Bad CSRF token!" msgstr "Mauvais jeton CSRF !" @@ -139,7 +126,7 @@ msgstr "Cliquez sur l’URL suivante pour envoyer des fichiers sur Lufi :" msgid "Click to open the file browser" msgstr "Cliquez pour ouvrir le navigateur de fichiers" -#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 +#: themes/default/templates/delays.html.ep:42 themes/default/templates/invitations/my_invitations.html.ep:80 msgid "Close" msgstr "Fermer" @@ -159,21 +146,17 @@ msgstr "Copier tous les liens dans le presse-papier" msgid "Copy to clipboard" msgstr "Copier dans le presse-papier" -#: lib/Lufi/Controller/Files.pm:507 +#: lib/Lufi/Controller/Files.pm:501 msgid "Could not delete the file. You are not authenticated." msgstr "Impossible de supprimer le fichier. Vous n’êtes pas connecté·e." -#: lib/Lufi/Controller/Files.pm:489 +#: lib/Lufi/Controller/Files.pm:483 msgid "Could not find the file. Are you sure of the URL and the token?" -msgstr "" -"Impossible de retrouver le fichier. Êtes-vous sûr(e) que l’URL et le jeton " -"sont les bons ?" +msgstr "Impossible de retrouver le fichier. Êtes-vous sûr(e) que l’URL et le jeton sont les bons ?" -#: lib/Lufi/Controller/Files.pm:400 +#: lib/Lufi/Controller/Files.pm:394 msgid "Could not find the file. Are you sure of the URL?" -msgstr "" -"Impossible de retrouver le fichier. Êtes-vous sûr(e) que l’URL est la " -"bonne ?" +msgstr "Impossible de retrouver le fichier. Êtes-vous sûr(e) que l’URL est la bonne ?" #: themes/default/templates/files.html.ep:29 msgid "Counter" @@ -203,14 +186,9 @@ msgstr "Supprimer les fichiers sélectionnés" msgid "Deletion link" msgstr "Lien de suppression" -#: themes/default/templates/delays.html.ep:8 -msgid "" -"Don't worry: if a user begins to download the file before the expiration and " -"the download ends after the expiration, he will be able to get the file." -msgstr "" -"Ne vous inquiétez pas : si un utilisateur commence à télécharger le fichier " -"avant son expiration et que le téléchargement se termine après l’expiration, " -"l’utilisateur pourra quand même récupérer le fichier." +#: themes/default/templates/delays.html.ep:9 +msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file." +msgstr "Ne vous inquiétez pas : si un utilisateur commence à télécharger le fichier avant son expiration et que le téléchargement se termine après l’expiration, l’utilisateur pourra quand même récupérer le fichier." #: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28 msgid "Download" @@ -225,18 +203,8 @@ msgid "Download link" msgstr "Lien de téléchargement" #: themes/default/templates/about.html.ep:10 -msgid "" -"Drag and drop files in the appropriate area or use the traditional way to " -"send files and the files will be chunked, encrypted and sent to the server. " -"You will get two links per file: a download link, that you give to the " -"people you want to share the file with and a deletion link, allowing you to " -"delete the file whenever you want." -msgstr "" -"Faites glisser des fichiers dans la zone prévue à cet effet ou sélectionnez " -"un fichier de façon classique et les fichiers seront découpés en morceaux, " -"chiffrés et envoyés au serveur. Vous récupérerez deux liens par fichier : un " -"lien de téléchargement et un lien pour supprimer le fichier quand vous le " -"souhaitez." +msgid "Drag and drop files in the appropriate area or use the traditional way to send files and the files will be chunked, encrypted and sent to the server. You will get two links per file: a download link, that you give to the people you want to share the file with and a deletion link, allowing you to delete the file whenever you want." +msgstr "Faites glisser des fichiers dans la zone prévue à cet effet ou sélectionnez un fichier de façon classique et les fichiers seront découpés en morceaux, chiffrés et envoyés au serveur. Vous récupérerez deux liens par fichier : un lien de téléchargement et un lien pour supprimer le fichier quand vous le souhaitez." #: themes/default/templates/index.html.ep:122 msgid "Drop files here" @@ -262,18 +230,17 @@ msgstr "Mails" msgid "Encrypting part XX1 of XX2" msgstr "Chiffrement du fragment XX1 sur XX2" -#: lib/Lufi/Controller/Files.pm:289 +#: lib/Lufi/Controller/Files.pm:283 msgid "Error: the file existed but was deleted." msgstr "Erreur : le fichier existait mais a été supprimé." -#: lib/Lufi/Controller/Files.pm:369 +#: lib/Lufi/Controller/Files.pm:363 msgid "Error: the file has not been sent entirely." msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité." -#: lib/Lufi/Controller/Files.pm:379 +#: lib/Lufi/Controller/Files.pm:373 msgid "Error: unable to find the file. Are you sure of your URL?" -msgstr "" -"Erreur : impossible de retrouver le fichier. Êtes-vous sûr(e) de l’URL ?" +msgstr "Erreur : impossible de retrouver le fichier. Êtes-vous sûr(e) de l’URL ?" #: themes/default/templates/partial/index.js.ep:23 msgid "Expiration:" @@ -291,14 +258,22 @@ msgstr "Expire le" msgid "Export localStorage data" msgstr "Exporter les données localStorage" -#: lib/Lufi/Controller/Files.pm:471 +#: lib/Lufi/Controller/Files.pm:465 msgid "File deleted" msgstr "Fichier supprimé" +#: themes/default/templates/partial/render.js.ep:9 +msgid "File downloaded" +msgstr "Fichier téléchargé" + #: themes/default/templates/files.html.ep:27 msgid "File name" msgstr "Nom du fichier" +#: themes/default/templates/partial/index.js.ep:24 +msgid "File uploaded" +msgstr "Fichier envoyé" + #: themes/default/templates/invitations/my_invitations.html.ep:61 msgid "Files" msgstr "Fichiers" @@ -320,14 +295,12 @@ msgid "Get the file" msgstr "Récupérer le fichier" #: themes/default/templates/about.html.ep:18 -msgid "" -"Get the source code on the official repository or on its Github mirror" -msgstr "" -"Récupérez le code source sur le dépôt officiel ou sur son miroir Github" +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "Récupérez le code source sur le dépôt officiel ou sur son miroir Github" + +#: +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "Récupérez le code source sur le dépôt officiel ou sur son miroir Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -344,8 +317,7 @@ msgstr "Bonjour," #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" -msgstr "" -"Bonjour,\\n\\nVoici quelques fichiers que je souhaite partager avec toi :\\n" +msgstr "Bonjour,\\n\\nVoici quelques fichiers que je souhaite partager avec vous :\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" @@ -355,17 +327,13 @@ msgstr "Voici quelques fichiers" msgid "Hide hidden invitations" msgstr "Ne pas afficher les invitations cachées" -#: themes/default/templates/partial/index.js.ep:25 +#: themes/default/templates/partial/index.js.ep:26 msgid "Hit Enter, then Ctrl+C to copy all the download links" -msgstr "" -"Appuyez sur la touche Entrée puis faites Ctrl+C pour copier tous les liens " -"de téléchargement" +msgstr "Appuyez sur la touche Entrée puis faites Ctrl+C pour copier tous les liens de téléchargement" -#: themes/default/templates/partial/index.js.ep:24 +#: themes/default/templates/partial/index.js.ep:25 msgid "Hit Enter, then Ctrl+C to copy the download link" -msgstr "" -"Appuyez sur la touche Entrée puis faites Ctrl+C pour copier le lien de " -"téléchargement" +msgstr "Appuyez sur la touche Entrée puis faites Ctrl+C pour copier le lien de téléchargement" #: themes/default/templates/about.html.ep:9 msgid "How does it work?" @@ -373,8 +341,7 @@ msgstr "Comment ça marche ?" #: themes/default/templates/invitations/invite.html.ep:46 msgid "How many days would you like the invitation to be valid?" -msgstr "" -"Pendant combien de jours souhaitez-vous que votre invitation soit valide ?" +msgstr "Pendant combien de jours souhaitez-vous que votre invitation soit valide ?" #: themes/default/templates/about.html.ep:16 msgid "How to install the software on my server?" @@ -384,17 +351,13 @@ msgstr "Comment installer le logiciel sur mon serveur ?" msgid "How to report an illegal file?" msgstr "Comment signaler un fichier illégal ?" -#: themes/default/templates/delays.html.ep:7 +#: themes/default/templates/delays.html.ep:8 msgid "If you choose a delay, the file will be deleted after that delay." msgstr "Si vous choisissez un délai, le fichier sera supprimé après ce délai." #: themes/default/templates/mail.html.ep:15 -msgid "" -"If you send the mail from this server, the links will be sent to the server, " -"which may lower your privacy protection." -msgstr "" -"Si vous envoyez le mail depuis ce serveur, les liens seront envoyés au " -"serveur, ce qui peut diminuer la protection de la confidentialité." +msgid "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection." +msgstr "Si vous envoyez le mail depuis ce serveur, les liens seront envoyés au serveur, ce qui peut diminuer la protection de la confidentialité." #: themes/default/templates/files.html.ep:14 msgid "Import localStorage data" @@ -413,12 +376,12 @@ msgid "Invert selection" msgstr "Inverser la sélection" #. ($i->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:171 +#: lib/Lufi/Controller/Invitation.pm:184 msgid "Invitation resent to %1.
URL: %2" msgstr "Invitation renvoyée à %1 :
URL : %2" #. ($invitation->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:87 +#: lib/Lufi/Controller/Invitation.pm:88 msgid "Invitation sent to %1.
URL: %2" msgstr "Invitation envoyée à %1 :
URL : %2" @@ -427,11 +390,8 @@ msgid "Invite a guest" msgstr "Inviter quelqu’un" #: themes/default/templates/partial/render.js.ep:6 -msgid "" -"It seems that the key in your URL is incorrect. Please, verify your URL." -msgstr "" -"Il semble que la clé dans votre URL soit incorrecte. Veuillez vérifier votre " -"URL." +msgid "It seems that the key in your URL is incorrect. Please, verify your URL." +msgstr "Il semble que la clé dans votre URL soit incorrecte. Veuillez vérifier votre URL." #: themes/default/templates/index.html.ep:12 msgid "Javascript is disabled. You won't be able to use Lufi." @@ -464,17 +424,8 @@ msgid "Lufi is a free (as in free speech) file hosting software." msgstr "Lufi est un logiciel libre d’hébergement de fichiers." #: themes/default/templates/partial/files.js.ep:12 -msgid "" -"Lufi recently changed its way to store files information.\\n\\nNo files have " -"been found in the new localStorage location but we found files in the old " -"one.\\nDo you want to import those informations?\\n\\nPlease note that this " -"is the only time that we will ask you this." -msgstr "" -"Lufi a récemment changé sa façon de stocker l’information des fichiers." -"\\n\\nAucun fichier n’a été trouvé dans le nouvel emplacement localStorage " -"mais nous avons trouvé des fichiers dans l’ancien.\\nVoulez-vous importer " -"ces informations ?\\n\\nVeuillez noter que c’est la seule fois que nous vous " -"poserons cette question." +msgid "Lufi recently changed its way to store files information.\\n\\nNo files have been found in the new localStorage location but we found files in the old one.\\nDo you want to import those informations?\\n\\nPlease note that this is the only time that we will ask you this." +msgstr "Lufi a récemment changé sa façon de stocker l’information des fichiers.\\n\\nAucun fichier n’a été trouvé dans le nouvel emplacement localStorage mais nous avons trouvé des fichiers dans l’ancien.\\nVoulez-vous importer ces informations ?\\n\\nVeuillez noter que c’est la seule fois que nous vous poserons cette question." #: themes/default/templates/files.html.ep:34 msgid "Mail" @@ -489,35 +440,25 @@ msgid "My invitations" msgstr "Mes invitations" #: themes/default/templates/invitations/notification_files_sent.mail.ep:17 -msgid "" -"NB: this list includes the list of files that have already been sent to you." -msgstr "" -"NB : cette liste inclue la liste des fichiers qui vous a déjà été envoyée." +msgid "NB: this list includes the list of files that have already been sent to you." +msgstr "NB : cette liste inclue la liste des fichiers qui vous a déjà été envoyée." #: themes/default/templates/index.html.ep:115 msgid "Name of the zip file" msgstr "Nom du fichier zip" #. (format_bytes($json->{size}) -#: lib/Lufi/Controller/Files.pm:108 +#: lib/Lufi/Controller/Files.pm:109 msgid "No enough space available on the server for this file (size: %1)." -msgstr "" -"Espace disque insuffisant sur le serveur pour ce fichier (taille du fichier :" -" %1)." +msgstr "Espace disque insuffisant sur le serveur pour ce fichier (taille du fichier : %1)." -#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28 +#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:29 msgid "No expiration delay" msgstr "Pas de délai d’expiration" #: themes/default/templates/files.html.ep:8 -msgid "" -"Only the files sent with this browser will be listed here. This list is " -"stored in localStorage: if you delete your localStorage data, you'll lose " -"this list." -msgstr "" -"Seuls les fichiers envoyés avec ce navigateur web sont listés ici. Les " -"informations sont stockées en localStorage : si vous supprimez vos données " -"localStorage, vous perdrez ces informations." +msgid "Only the files sent with this browser will be listed here. This list is stored in localStorage: if you delete your localStorage data, you'll lose this list." +msgstr "Seuls les fichiers envoyés avec ce navigateur web sont listés ici. Les informations sont stockées en localStorage : si vous supprimez vos données localStorage, vous perdrez ces informations." #: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 msgid "Password" @@ -529,21 +470,12 @@ msgid "Please contact the administrator: %1" msgstr "Veuillez contacter l’administrateur : %1" #: themes/default/templates/render.html.ep:33 -msgid "" -"Please wait while we are getting your file. We first need to download and " -"decrypt all parts before you can get it." -msgstr "" -"Veuillez patientez pendant la récupération de votre fichier. Nous devons " -"d’abord récupérer et déchiffrer tous les fragments avant que vous puissiez " -"le télécharger." +msgid "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it." +msgstr "Veuillez patientez pendant la récupération de votre fichier. Nous devons d’abord récupérer et déchiffrer tous les fragments avant que vous puissiez le télécharger." #: lib/Lufi/Controller/Auth.pm:38 -msgid "" -"Please, check your credentials or your right to access this service: unable " -"to authenticate." -msgstr "" -"Veuillez vérifier vos identifiants ou votre droit d’accès à ce service : " -"impossible de vous authentifier." +msgid "Please, check your credentials or your right to access this service: unable to authenticate." +msgstr "Veuillez vérifier vos identifiants ou votre droit d’accès à ce service : impossible de vous authentifier." #: themes/default/templates/about.html.ep:5 msgid "Privacy" @@ -574,13 +506,10 @@ msgid "Rows in purple mean that the invitations have expired." msgstr "Les lignes en violet indiquent que les invitations ont expiré." #: themes/default/templates/files.html.ep:9 -msgid "" -"Rows in red mean that the files have expired and are no longer available." -msgstr "" -"Les lignes en rouge indiquent que le fichier a expiré et n’est plus " -"disponible." +msgid "Rows in red mean that the files have expired and are no longer available." +msgstr "Les lignes en rouge indiquent que le fichier a expiré et n’est plus disponible." -#: themes/default/templates/partial/index.js.ep:26 +#: themes/default/templates/partial/index.js.ep:27 msgid "Send all links by email" msgstr "Envoyer tous les liens par mail" @@ -588,24 +517,20 @@ msgstr "Envoyer tous les liens par mail" msgid "Send the invitation" msgstr "Envoyer l’invitation" -#: themes/default/templates/mail.html.ep:46 +#: themes/default/templates/mail.html.ep:47 msgid "Send with this server" msgstr "Envoyer avec ce serveur" -#: themes/default/templates/mail.html.ep:47 +#: themes/default/templates/mail.html.ep:49 msgid "Send with your own mail software" msgstr "Envoyer avec votre propre logiciel de mail" -#: themes/default/templates/partial/index.js.ep:29 -msgid "" -"Sending part XX1 of XX2. Please, be patient, the progress bar can take a " -"while to move." -msgstr "" -"Envoi du fragment XX1 sur XX2. Veuillez patienter, la barre de progression " -"peut mettre du temps avant d’avancer." +#: themes/default/templates/partial/index.js.ep:30 +msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move." +msgstr "Envoi du fragment XX1 sur XX2. Veuillez patienter, la barre de progression peut mettre du temps avant d’avancer." #. (url_for('/') -#: themes/default/templates/partial/mail.js.ep:48 +#: themes/default/templates/partial/mail.js.ep:49 msgid "Share your files in total privacy on %1" msgstr "Partagez vos fichiers en toute confidentialité sur %1" @@ -613,7 +538,7 @@ msgstr "Partagez vos fichiers en toute confidentialité sur %1" msgid "Show hidden invitations" msgstr "Afficher les invitations cachées" -#: themes/default/templates/partial/render.js.ep:11 +#: themes/default/templates/partial/render.js.ep:12 msgid "Show zip content" msgstr "Afficher le contenu du fichier zip" @@ -621,17 +546,13 @@ msgstr "Afficher le contenu du fichier zip" msgid "Signin" msgstr "Connexion" -#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16 -msgid "" -"Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" -msgstr "" -"Désolé, l’invitation n’existe pas. Êtes-vous sûr·e d’être sur la bonne URL ?" +#: lib/Lufi/Controller/Invitation.pm:302 themes/default/templates/invitations/exception.html.ep:16 +msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" +msgstr "Désolé, l’invitation n’existe pas. Êtes-vous sûr·e d’être sur la bonne URL ?" #: themes/default/templates/index.html.ep:46 msgid "Sorry, the uploading is currently disabled. Please try again later." -msgstr "" -"Désolé, l’envoi de fichier est actuellement désactivé. Veuillez réessayer " -"plus tard." +msgstr "Désolé, l’envoi de fichier est actuellement désactivé. Veuillez réessayer plus tard." #: lib/Lufi/Controller/Files.pm:82 msgid "Sorry, uploading is disabled." @@ -642,94 +563,82 @@ msgid "Sorry, your invitation has expired or has been deleted." msgstr "Désolé, votre invitation a expiré ou a été supprimée." #. ($invit->ldap_user_mail) -#: lib/Lufi/Controller/Files.pm:122 -msgid "" -"Sorry, your invitation has expired or has been deleted. Please contact %1 to " -"have another invitation." -msgstr "" -"Désolé, votre invitation a expiré ou a été supprimée. Veuillez contacter %1 " -"pour obtenir une nouvelle invitation." +#: lib/Lufi/Controller/Files.pm:123 +msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." +msgstr "Désolé, votre invitation a expiré ou a été supprimée. Veuillez contacter %1 pour obtenir une nouvelle invitation." #. ($invitation->ldap_user_mail) -#: lib/Lufi/Controller/Invitation.pm:276 +#: lib/Lufi/Controller/Invitation.pm:295 msgid "The URLs of your files have been sent by email to %1." msgstr "Les URL de vos fichiers ont été envoyées par courriel à %1." #: themes/default/templates/about.html.ep:7 -msgid "" -"The administrator can only see the file's name, its size and its mimetype " -"(what kind of file it is: video, text, etc.)." -msgstr "" -"L’administrateur ne peut voir que le nom du fichier, sa taille et son type " -"mime (son type de fichier : vidéo, texte, etc.)." +msgid "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)." +msgstr "L’administrateur ne peut voir que le nom du fichier, sa taille et son type mime (son type de fichier : vidéo, texte, etc.)." -#: lib/Lufi/Controller/Mail.pm:53 -msgid "" -"The body of the mail must contain at least one URL pointing to a file hosted " -"on this instance." -msgstr "" -"Le corps du mail doit contenir au moins une URL pointant vers un fichier " -"hébergé sur cette instance." +#: lib/Lufi/Controller/Mail.pm:67 +msgid "The body of the mail must contain at least one URL pointing to a file hosted on this instance." +msgstr "Le corps du mail doit contenir au moins une URL pointant vers un fichier hébergé sur cette instance." #: themes/default/templates/partial/files.js.ep:11 msgid "The data has been successfully imported." msgstr "Les données ont été importées avec succès." -#: lib/Lufi/Controller/Mail.pm:73 +#: lib/Lufi/Controller/Mail.pm:87 msgid "The email body can't be empty." msgstr "Le corps du mail ne peut être vide." -#: lib/Lufi/Controller/Mail.pm:72 +#: lib/Lufi/Controller/Mail.pm:86 msgid "The email subject can't be empty." msgstr "Le sujet du mail ne peut être vide." #. ($expire_at, $max_expire_at) -#: lib/Lufi/Controller/Invitation.pm:51 +#: lib/Lufi/Controller/Invitation.pm:52 msgid "The expiration delay (%1) is not between 1 and %2 days." msgstr "Le délai d’expiration (%1) n’est pas compris entre 1 et %2 jours." -#: lib/Lufi/Controller/Files.pm:468 +#: lib/Lufi/Controller/Files.pm:462 msgid "The file has already been deleted" msgstr "Le fichier a déjà été supprimé" #: themes/default/templates/about.html.ep:6 -msgid "" -"The files uploaded on a Lufi instance are encrypted before the upload to the " -"server: the administrator of the server can not see the file's content." -msgstr "" -"Les fichiers envoyés sur une instance de Lufi sont chiffrés avant l’envoi au " -"serveur : l’administrateur du serveur ne peut pas voir le contenu de vos " -"fichiers." +msgid "The files uploaded on a Lufi instance are encrypted before the upload to the server: the administrator of the server can not see the file's content." +msgstr "Les fichiers envoyés sur une instance de Lufi sont chiffrés avant l’envoi au serveur : l’administrateur du serveur ne peut pas voir le contenu de vos fichiers." #. (join(', ', @bad) -#: lib/Lufi/Controller/Mail.pm:68 +#: lib/Lufi/Controller/Mail.pm:82 msgid "The following email addresses are not valid: %1" msgstr "Les adresses mail suivantes ne sont pas valides : %1" #. ($guest_mail) -#: lib/Lufi/Controller/Invitation.pm:48 +#: lib/Lufi/Controller/Invitation.pm:49 msgid "The guest email address (%1) is unvalid." msgstr "L’adresse courriel de l’invité·e (%1) est invalide." +#. ($i->token, $c->current_user->{username}) +#: lib/Lufi/Controller/Invitation.pm:136 +msgid "The invitation %1 can’t be deleted: it wasn’t created by you (%2)." +msgstr "L’invitation %1 ne peut être supprimée : vous ne l’avez pas créée (%2)." + #. ($i->token, $i->guest_mail) -#: lib/Lufi/Controller/Invitation.pm:150 -msgid "" -"The invitation %1 can’t be resent: %2 has already sent files.
Please " -"create a new invitation." -msgstr "" -"L’invitation %1 ne peut pas être renvoyée : %2 a déjà envoyé des fichiers." -"
Veuillez créer une nouvelle invitation." +#: lib/Lufi/Controller/Invitation.pm:163 +msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." +msgstr "L’invitation %1 ne peut pas être renvoyée : %2 a déjà envoyé des fichiers.
Veuillez créer une nouvelle invitation." + +#. ($i->token, $c->current_user->{username}) +#: lib/Lufi/Controller/Invitation.pm:187 +msgid "The invitation %1 can’t be resent: it wasn’t created by you (%2)." +msgstr "L’invitation %1 ne peut être renvoyée : vous ne l’avez pas créée (%2)." #. ($i->token) -#: lib/Lufi/Controller/Invitation.pm:130 +#: lib/Lufi/Controller/Invitation.pm:134 msgid "The invitation %1 has been deleted." msgstr "L’invitation %1 a été supprimée." #. (stash('user_mail') #: themes/default/templates/invitations/invite.html.ep:34 msgid "The invitation mail will be send from your email address (%1)." -msgstr "" -"Le courriel d’invitation sera envoyé de votre adresse de courriel (%1)." +msgstr "Le courriel d’invitation sera envoyé de votre adresse de courriel (%1)." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" @@ -737,44 +646,29 @@ msgstr "Le(s) lien(s) a/ont été copié dans votre presse-papier" #. (stash('invitation') #: themes/default/templates/index.html.ep:30 -msgid "" -"The link(s) of your file(s) will automatically be sent by mail to %1 (%2)" -msgstr "" -"Les liens de vos fichiers seront automatiquement envoyés par courriel à %1 " -"(%2)" +msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)" +msgstr "Les liens de vos fichiers seront automatiquement envoyés par courriel à %1 (%2)" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:11 msgid "The links of your file(s) will automatically be sent by mail to %1." -msgstr "" -"Les liens de vos fichiers seront automatiquement envoyés par courriel à %1." +msgstr "Les liens de vos fichiers seront automatiquement envoyés par courriel à %1." -#: lib/Lufi/Controller/Mail.pm:97 +#: lib/Lufi/Controller/Mail.pm:111 msgid "The mail has been sent." msgstr "Le mail a été envoyé." #: themes/default/templates/about.html.ep:15 -msgid "" -"The original (and only for now) author is Luc Didry." -msgstr "" -"L’auteur originel (et pour l’instant, le seul) est Luc Didry." +msgid "The original (and only for now) author is Luc Didry." +msgstr "L’auteur originel (et pour l’instant, le seul) est Luc Didry." -#: lib/Lufi/Controller/Files.pm:236 -msgid "" -"The server was unable to find the file record to add your file part to. " -"Please, contact the administrator." -msgstr "" -"Le serveur a été incapable de retrouver l’enregistrement du fichier auquel " -"ajouter votre fragment de fichier. Veuillez contacter l’administrateur." +#: lib/Lufi/Controller/Files.pm:230 +msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator." +msgstr "Le serveur a été incapable de retrouver l’enregistrement du fichier auquel ajouter votre fragment de fichier. Veuillez contacter l’administrateur." -#: lib/Lufi/Controller/Files.pm:295 -msgid "" -"This file has been deactivated by the admins. Contact them to know why." -msgstr "" -"The fichier a été désactivé par les administrateurs ou administratrices. " -"Veuillez les contacter pour savoir pourquoi." +#: lib/Lufi/Controller/Files.pm:289 +msgid "This file has been deactivated by the admins. Contact them to know why." +msgstr "The fichier a été désactivé par les administrateurs ou administratrices. Veuillez les contacter pour savoir pourquoi." #: themes/default/templates/invitations/my_invitations.html.ep:46 themes/default/templates/partial/invitations.js.ep:6 msgid "This invitation is normally hidden" @@ -785,15 +679,9 @@ msgstr "Cette invitation est normalement cachée" msgid "This invitation is valid until %1." msgstr "Cette invitation est valide jusqu’au %1." -#: themes/default/templates/delays.html.ep:10 -msgid "" -"This server sets limitations according to the file size. The expiration " -"delay of your file will be the minimum between what you choose and the " -"following limitations:" -msgstr "" -"Ce serveur impose des limitations selon la taille des fichiers. Le délai " -"d’expiration de votre fichier sera le minimum entre ce que vous avez choisi " -"et les limites suivantes :" +#: themes/default/templates/delays.html.ep:13 +msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:" +msgstr "Ce serveur impose des limitations selon la taille des fichiers. Le délai d’expiration de votre fichier sera le minimum entre ce que vous avez choisi et les limites suivantes :" #: themes/default/templates/invitations/my_invitations.html.ep:16 msgid "Toggle visibility" @@ -807,25 +695,24 @@ msgstr "URL" msgid "Unable to copy the link(s) to your clipboard" msgstr "Impossible de copier le(s) lien(s) dans votre presse-papier" +#: themes/default/templates/partial/render.js.ep:13 +msgid "Unable to download the file: too much unsuccessful attempts to open a websocket. Please, contact the administrator." +msgstr "Impossible de télécharger le fichier : trop de tentatives infructueuses d’ouverture d’une websocket. Veuillez contacter l’administrateur." + #. ($short) -#: lib/Lufi/Controller/Files.pm:439 -msgid "" -"Unable to get counter for %1. The file does not exists. It will be removed " -"from your localStorage." -msgstr "" -"Impossible de récupérer le compteur pour %1. Le fichier n’existe pas. Il va " -"être supprimé de votre localStorage." +#: lib/Lufi/Controller/Files.pm:433 +msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." +msgstr "Impossible de récupérer le compteur pour %1. Le fichier n’existe pas. Il va être supprimé de votre localStorage." #. ($short) -#: lib/Lufi/Controller/Files.pm:429 +#: lib/Lufi/Controller/Files.pm:423 msgid "Unable to get counter for %1. The token is invalid." msgstr "Impossible de récupérer le compteur pour %1. Le jeton est invalide." #. ($short) -#: lib/Lufi/Controller/Files.pm:449 +#: lib/Lufi/Controller/Files.pm:443 msgid "Unable to get counter for %1. You are not authenticated." -msgstr "" -"Impossible de récupérer le compteur pour %1. Vous n’êtes pas connecté·e." +msgstr "Impossible de récupérer le compteur pour %1. Vous n’êtes pas connecté·e." #: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66 msgid "Upload files" @@ -847,7 +734,7 @@ msgstr "Fichiers envoyés" msgid "Version" msgstr "Version" -#: themes/default/templates/partial/index.js.ep:30 +#: themes/default/templates/partial/index.js.ep:31 msgid "Websocket communication error" msgstr "Erreur de communication WebSocket" @@ -864,99 +751,66 @@ msgid "XXX file has been added to upload queue." msgstr "Le fichier XXX a été ajouté à la file d’envoi." #: themes/default/templates/invitations/invite.html.ep:30 -msgid "" -"You can invite someone to send you files through this Lufi instance even if " -"they don’t have an account on it." -msgstr "" -"Vous pouvez inviter une personne à vous envoyer des fichiers via cette " -"instance Lufi même si cette personne n’y a pas de compte." +msgid "You can invite someone to send you files through this Lufi instance even if they don’t have an account on it." +msgstr "Vous pouvez inviter une personne à vous envoyer des fichiers via cette instance Lufi même si cette personne n’y a pas de compte." #: themes/default/templates/about.html.ep:11 -msgid "" -"You can see the list of your files by clicking on the \"My files\" link at " -"the top right of this page." -msgstr "" -"Vous pouvez voir la liste de vos fichiers en cliquant sur le lien « Mes " -"fichiers » en haut à droite de cette page." +msgid "You can see the list of your files by clicking on the \"My files\" link at the top right of this page." +msgstr "Vous pouvez voir la liste de vos fichiers en cliquant sur le lien « Mes fichiers » en haut à droite de cette page." -#: lib/Lufi/Controller/Mail.pm:42 -msgid "You can't add URLs that are not related to this instance." -msgstr "Vous ne pouvez pas ajouter d’URL non relatives à cette instance." +#. ($orig_uri) +#: lib/Lufi/Controller/Mail.pm:43 lib/Lufi/Controller/Mail.pm:59 +msgid "You can't add URLs that are not related to this instance (%1)." +msgstr "Vous ne pouvez pas ajouter d’URL non relatives à cette instance (%1)." #: themes/default/templates/about.html.ep:8 -msgid "" -"You don't need to register yourself to upload files but be aware that, for " -"legal reasons, your IP address will be stored when you send a file. Don't " -"panic, this is normally the case for all sites on which you send files." -msgstr "" -"Vous n’avez pas besoin de vous enregistrer pour envoyer des fichiers mais " -"notez que, pour des raisons légales, votre adresse IP sera enregistrée quand " -"vous envoyez un fichier. Ne paniquez pas, c’est normalement le cas pour tous " -"les sites où vous envoyez des fichiers." +msgid "You don't need to register yourself to upload files but be aware that, for legal reasons, your IP address will be stored when you send a file. Don't panic, this is normally the case for all sites on which you send files." +msgstr "Vous n’avez pas besoin de vous enregistrer pour envoyer des fichiers mais notez que, pour des raisons légales, votre adresse IP sera enregistrée quand vous envoyez un fichier. Ne paniquez pas, c’est normalement le cas pour tous les sites où vous envoyez des fichiers." -#: themes/default/templates/partial/render.js.ep:10 -msgid "" -"You don't seem to have a key in your URL. You won't be able to decrypt the " -"file. Download canceled." -msgstr "" -"Il semble que vous n’ayez pas de clé dans votre URL. Vous ne serez pas " -"capable de déchiffrer le fichier. Téléchargement annulé." +#: themes/default/templates/partial/render.js.ep:11 +msgid "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled." +msgstr "Il semble que vous n’ayez pas de clé dans votre URL. Vous ne serez pas capable de déchiffrer le fichier. Téléchargement annulé." #: themes/default/templates/partial/render.js.ep:7 -msgid "" -"You have attempted to leave this page. The download will be canceled. Are " -"you sure?" -msgstr "" -"Vous essayez de quitter la page. Le téléchargement sera annulé. Êtes-vous " -"sûr(e) ?" +msgid "You have attempted to leave this page. The download will be canceled. Are you sure?" +msgstr "Vous essayez de quitter la page. Le téléchargement sera annulé. Êtes-vous sûr(e) ?" #: themes/default/templates/partial/index.js.ep:14 -msgid "" -"You have attempted to leave this page. The upload will be canceled. Are you " -"sure?" -msgstr "" -"Vous essayez de quitter la page. L’envoi sera annulé. Êtes-vous sûr(e) ?" +msgid "You have attempted to leave this page. The upload will be canceled. Are you sure?" +msgstr "Vous essayez de quitter la page. L’envoi sera annulé. Êtes-vous sûr(e) ?" #: themes/default/templates/logout.html.ep:14 msgid "You have been successfully logged out." msgstr "Vous avez été déconnecté·e avec succès." -#: lib/Lufi/Controller/Mail.pm:71 +#: lib/Lufi/Controller/Mail.pm:85 msgid "You must give email addresses." msgstr "Vous devez envoyer des adresses mail." #: themes/default/templates/index.html.ep:38 -msgid "" -"Your browser does not have enough entropy to generate a strong encryption " -"key. Please wait (it's better if you do things on your computer while " -"waiting)." -msgstr "" -"Votre navigateur n’a pas assez d’entropie pour générer une clé de " -"chiffrement forte. Veuillez attendre (il est préférable que vous fassiez " -"quelque chose sur votre ordinateur en attendant)." +msgid "Your browser does not have enough entropy to generate a strong encryption key. Please wait (it's better if you do things on your computer while waiting)." +msgstr "Votre navigateur n’a pas assez d’entropie pour générer une clé de chiffrement forte. Veuillez attendre (il est préférable que vous fassiez quelque chose sur votre ordinateur en attendant)." #. (format_bytes($json->{size}) #: lib/Lufi/Controller/Files.pm:95 msgid "Your file is too big: %1 (maximum size allowed: %2)" -msgstr "" -"Votre fichier est trop volumineux : %1 (la taille maximum autorisée est %2)" +msgstr "Votre fichier est trop volumineux : %1 (la taille maximum autorisée est %2)" -#: lib/Lufi/Controller/Files.pm:351 +#: lib/Lufi/Controller/Files.pm:345 msgid "Your password is not valid. Please refresh the page to retry." -msgstr "" -"Votre mot de passe est invalide. Veuillez rafraîchir la page pour réessayer." +msgstr "Votre mot de passe est invalide. Veuillez rafraîchir la page pour réessayer." -#: themes/default/templates/partial/render.js.ep:12 +#: themes/default/templates/partial/render.js.ep:14 msgid "Zip content:" msgstr "Contenu de l’archive zip :" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:20 +#: themes/default/templates/delays.html.ep:24 msgid "between %1 and %2, the file will be kept %3 day(s)." msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s)." #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:22 +#: themes/default/templates/delays.html.ep:26 msgid "between %1 and %2, the file will be kept forever." msgstr "entre %1 et %2, le fichier sera conservé indéfiniment." @@ -969,12 +823,12 @@ msgid "expires on XXX" msgstr "expire le XXX" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:26 +#: themes/default/templates/delays.html.ep:30 msgid "for %1 and more, the file will be kept %2 day(s)" msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)" #. (format_bytes($keys[$i]) -#: themes/default/templates/delays.html.ep:28 +#: themes/default/templates/delays.html.ep:32 msgid "for %1 and more, the file will be kept forever." msgstr "pour %1 et plus, le fichier sera conservé indéfiniment." @@ -990,33 +844,3 @@ msgstr "ou" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "— %1 (%2), qui expirera le %3" - -#: themes/default/templates/about.html.ep:18 -msgid "Get the source code on the official repository or on its Github mirror" -msgstr "" -"Récupérez le code source sur le dépôt officiel ou sur son miroir Github" - -#: themes/default/templates/partial/index.js.ep:24 -msgid "File uploaded" -msgstr "Fichier envoyé" - -#: themes/default/templates/partial/render.js.ep:9 -msgid "File downloaded" -msgstr "Fichier téléchargé" - -#: themes/default/templates/about.html.ep:17 -msgid "As Lufi is a free software licensed under of the terms of the AGPLv3, you can install it on you own server. Have a look on the Wiki for the procedure." -msgstr "" -"Comme Lufi est un logiciel libre soumis aux termes de la license AGPLv3, vous " -"pouvez l’installer sur votre propre serveur. Veuillez consulter le Wiki pour voir la procédure." - -#: themes/default/templates/partial/render.js.ep:13 -msgid "Unable to download the file: too much unsuccessful attempts to open a websocket. Please, contact the administrator." -msgstr "" -"Impossible de télécharger le fichier : trop de tentatives infructueuses d’" -"ouverture d’une websocket. Veuillez contacter l’administrateur." diff --git a/themes/default/lib/Lufi/I18N/fr_FR.po b/themes/default/lib/Lufi/I18N/fr_FR.po index 2f6ef90..9d41b72 100644 --- a/themes/default/lib/Lufi/I18N/fr_FR.po +++ b/themes/default/lib/Lufi/I18N/fr_FR.po @@ -345,7 +345,7 @@ msgstr "Bonjour," #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" msgstr "" -"Bonjour,\\n\\nVoici quelques fichiers que je souhaite partager avec toi :\\n" +"Bonjour,\\n\\nVoici quelques fichiers que je souhaite partager avec vous :\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" diff --git a/themes/default/lib/Lufi/I18N/lufi.pot b/themes/default/lib/Lufi/I18N/lufi.pot index 13f4672..04229a3 100644 --- a/themes/default/lib/Lufi/I18N/lufi.pot +++ b/themes/default/lib/Lufi/I18N/lufi.pot @@ -41,7 +41,7 @@ msgstr "" msgid "%1 used your invitation to send you files:" msgstr "" -#: lib/Lufi/Controller/Invitation.pm:160 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 +#: lib/Lufi/Controller/Invitation.pm:172 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "%A %d %B %Y at %T" msgstr "" @@ -98,7 +98,7 @@ msgstr "" msgid "Back to homepage" msgstr "" -#: lib/Lufi/Controller/Mail.pm:25 +#: lib/Lufi/Controller/Mail.pm:26 msgid "Bad CSRF token!" msgstr "" @@ -364,7 +364,7 @@ msgid "Invert selection" msgstr "" #. ($i->guest_mail, $url) -#: lib/Lufi/Controller/Invitation.pm:172 +#: lib/Lufi/Controller/Invitation.pm:184 msgid "Invitation resent to %1.
URL: %2" msgstr "" @@ -505,11 +505,11 @@ msgstr "" msgid "Send the invitation" msgstr "" -#: themes/default/templates/mail.html.ep:46 +#: themes/default/templates/mail.html.ep:47 msgid "Send with this server" msgstr "" -#: themes/default/templates/mail.html.ep:47 +#: themes/default/templates/mail.html.ep:49 msgid "Send with your own mail software" msgstr "" @@ -518,7 +518,7 @@ msgid "Sending part XX1 of XX2. Please, be patient, the progress bar can take a msgstr "" #. (url_for('/') -#: themes/default/templates/partial/mail.js.ep:48 +#: themes/default/templates/partial/mail.js.ep:49 msgid "Share your files in total privacy on %1" msgstr "" @@ -534,7 +534,7 @@ msgstr "" msgid "Signin" msgstr "" -#: lib/Lufi/Controller/Invitation.pm:284 themes/default/templates/invitations/exception.html.ep:16 +#: lib/Lufi/Controller/Invitation.pm:302 themes/default/templates/invitations/exception.html.ep:16 msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" msgstr "" @@ -556,7 +556,7 @@ msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 msgstr "" #. ($invitation->ldap_user_mail) -#: lib/Lufi/Controller/Invitation.pm:277 +#: lib/Lufi/Controller/Invitation.pm:295 msgid "The URLs of your files have been sent by email to %1." msgstr "" @@ -564,7 +564,7 @@ msgstr "" msgid "The administrator can only see the file's name, its size and its mimetype (what kind of file it is: video, text, etc.)." msgstr "" -#: lib/Lufi/Controller/Mail.pm:53 +#: lib/Lufi/Controller/Mail.pm:67 msgid "The body of the mail must contain at least one URL pointing to a file hosted on this instance." msgstr "" @@ -572,11 +572,11 @@ msgstr "" msgid "The data has been successfully imported." msgstr "" -#: lib/Lufi/Controller/Mail.pm:73 +#: lib/Lufi/Controller/Mail.pm:87 msgid "The email body can't be empty." msgstr "" -#: lib/Lufi/Controller/Mail.pm:72 +#: lib/Lufi/Controller/Mail.pm:86 msgid "The email subject can't be empty." msgstr "" @@ -594,7 +594,7 @@ msgid "The files uploaded on a Lufi instance are encrypted before the upload to msgstr "" #. (join(', ', @bad) -#: lib/Lufi/Controller/Mail.pm:68 +#: lib/Lufi/Controller/Mail.pm:82 msgid "The following email addresses are not valid: %1" msgstr "" @@ -603,13 +603,23 @@ msgstr "" msgid "The guest email address (%1) is unvalid." msgstr "" +#. ($i->token, $c->current_user->{username}) +#: lib/Lufi/Controller/Invitation.pm:136 +msgid "The invitation %1 can’t be deleted: it wasn’t created by you (%2)." +msgstr "" + #. ($i->token, $i->guest_mail) -#: lib/Lufi/Controller/Invitation.pm:151 +#: lib/Lufi/Controller/Invitation.pm:163 msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation." msgstr "" +#. ($i->token, $c->current_user->{username}) +#: lib/Lufi/Controller/Invitation.pm:187 +msgid "The invitation %1 can’t be resent: it wasn’t created by you (%2)." +msgstr "" + #. ($i->token) -#: lib/Lufi/Controller/Invitation.pm:131 +#: lib/Lufi/Controller/Invitation.pm:134 msgid "The invitation %1 has been deleted." msgstr "" @@ -632,7 +642,7 @@ msgstr "" msgid "The links of your file(s) will automatically be sent by mail to %1." msgstr "" -#: lib/Lufi/Controller/Mail.pm:97 +#: lib/Lufi/Controller/Mail.pm:111 msgid "The mail has been sent." msgstr "" @@ -736,8 +746,9 @@ msgstr "" msgid "You can see the list of your files by clicking on the \"My files\" link at the top right of this page." msgstr "" -#: lib/Lufi/Controller/Mail.pm:42 -msgid "You can't add URLs that are not related to this instance." +#. ($orig_uri) +#: lib/Lufi/Controller/Mail.pm:43 lib/Lufi/Controller/Mail.pm:59 +msgid "You can't add URLs that are not related to this instance (%1)." msgstr "" #: themes/default/templates/about.html.ep:8 @@ -760,7 +771,7 @@ msgstr "" msgid "You have been successfully logged out." msgstr "" -#: lib/Lufi/Controller/Mail.pm:71 +#: lib/Lufi/Controller/Mail.pm:85 msgid "You must give email addresses." msgstr "" diff --git a/themes/default/public/js/lufi-down.js b/themes/default/public/js/lufi-down.js index b117adf..ee1f666 100644 --- a/themes/default/public/js/lufi-down.js +++ b/themes/default/public/js/lufi-down.js @@ -145,9 +145,9 @@ function spawnWebsocket(pa) { zip.forEach(function (relativePath, zipEntry) { innerHTML.push( '
  • ', - zipEntry.name, + escapeHtml(zipEntry.name), ' (', filesize(zipEntry._data.uncompressedSize, {base: 10}), ') ', - '', + '', '', '', '
  • ' diff --git a/themes/default/public/js/lufi-list-invitations.js b/themes/default/public/js/lufi-list-invitations.js index 5f9f75d..8aab3d8 100644 --- a/themes/default/public/js/lufi-list-invitations.js +++ b/themes/default/public/js/lufi-list-invitations.js @@ -44,9 +44,17 @@ function deleteInvit(e) { Materialize.toast(t.msg, 6000, 'teal accent-3'); $('#row-' + t.token).remove(); }); + data.failures.forEach(function(msg) { + Materialize.toast(msg, 10000, 'red accent-2'); + }); disableButtons(); } else { - Materialize.toast(data.msg, 10000, 'red accent-2'); + data.failures.forEach(function(msg) { + Materialize.toast(msg, 10000, 'red accent-2'); + }); + if (data.msg) { + Materialize.toast(data.msg, 10000, 'red accent-2'); + } } } }); diff --git a/themes/default/public/js/lufi-up.js b/themes/default/public/js/lufi-up.js index 8776fde..2b7ef68 100644 --- a/themes/default/public/js/lufi-up.js +++ b/themes/default/public/js/lufi-up.js @@ -102,7 +102,7 @@ function firstViewClicking() { } // When clicking on zip checkbox -function zipClicking () { +function zipClicking() { if ($('#zip-files').attr('data-checked') && $('#zip-files').attr('data-checked') === 'data-checked') { window.zipSize = 0; window.zip = null; @@ -249,7 +249,7 @@ function handleFiles(f) { $('#zip-size').text(filesize(window.zipSize)); $('#zip-parts').append([ '
  • ', - '— ', filename, ' (', filesize(element.size), ')', + '— ', escapeHtml(filename), ' (', filesize(element.size), ')', '
  • ' ].join('')); } diff --git a/themes/default/templates/partial/mail.js.ep b/themes/default/templates/partial/mail.js.ep index 92e5c94..15e7332 100644 --- a/themes/default/templates/partial/mail.js.ep +++ b/themes/default/templates/partial/mail.js.ep @@ -45,7 +45,9 @@ function populateBody() { } }); - text = text+"\n--\n<%= l('Share your files in total privacy on %1', url_for('/')->to_abs) %>"; +% if (!defined(config('ldap')) && !defined(config('htpasswd'))) { + text = text+"\n-- \n<%= l('Share your files in total privacy on %1', url_for('/')->to_abs) %>"; +% } tArea = document.getElementById('body').value = text; updateMailtoLink(); }