From 71d270199a54f25a72ec52fd2f2dbda068712677 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:34:20 +0000 Subject: [PATCH 01/66] Translated using Weblate (Arabic) Currently translated at 84.5% (158 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/ar/ --- themes/default/lib/Lufi/I18N/ar.po | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ar.po b/themes/default/lib/Lufi/I18N/ar.po index da590fc..a49e52b 100644 --- a/themes/default/lib/Lufi/I18N/ar.po +++ b/themes/default/lib/Lufi/I18N/ar.po @@ -5,16 +5,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Arabic \n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-08-09 08:47+0000\n" -"Last-Translator: ButterflyOfFire \n" -"Language: ar\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: Zanata 4.6.2\n" -"Language-Team: Arabic\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -101,7 +102,7 @@ msgstr "" #. (stash('nbslices') #: themes/default/templates/partial/render.js.ep:9 msgid "Asking for file part XX1 of %1" -msgstr "طلب الجزء XX1 مِن %1 " +msgstr "طلب الجزء XX1 مِن %1" #: themes/default/templates/about.html.ep:20 msgid "Back to homepage" @@ -137,7 +138,7 @@ msgstr "عناوين البريد الإلكترونية مُقسّمة بفاص #: themes/default/templates/index.html.ep:140 msgid "Compressing zip file…" -msgstr "جارٍ ضغط ملف zip..." +msgstr "جارٍ ضغط ملف zip…" #: themes/default/templates/partial/index.js.ep:15 msgid "Copy all links to clipboard" @@ -213,6 +214,9 @@ msgid "" "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" @@ -264,7 +268,7 @@ msgstr "تنتهي صلاحيته في" #: themes/default/templates/files.html.ep:12 msgid "Export localStorage data" -msgstr "" +msgstr "تصدير بيانات localStorage" #: lib/Lufi/Controller/Files.pm:471 msgid "File deleted" @@ -364,7 +368,7 @@ msgstr "" #: 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" @@ -851,7 +855,7 @@ msgstr "الكلمة السرية غير صالحة. يرجى تحديث الص #: themes/default/templates/partial/render.js.ep:12 msgid "Zip content:" -msgstr "" +msgstr "محتوى ملف Zip المضغوط:" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:20 From 92ed3315c3ee7556d5f87288fcfc963d4df821ce Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:45:32 +0000 Subject: [PATCH 02/66] Translated using Weblate (Catalan) Currently translated at 67.4% (126 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/ca/ --- themes/default/lib/Lufi/I18N/ca.po | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ca.po b/themes/default/lib/Lufi/I18N/ca.po index 2e2406a..95f3347 100644 --- a/themes/default/lib/Lufi/I18N/ca.po +++ b/themes/default/lib/Lufi/I18N/ca.po @@ -10,15 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Catalan \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:55+0000\n" -"Last-Translator: Luc Didry \n" -"Language-Team: català; valencià <>\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Zanata 4.6.2\n" -"Language: ca\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -230,7 +231,7 @@ msgstr "" "servidor. Obtindreu dos enllaços per a cada fitxer: un enllaç per a la " "descàrrega, que doneu a la gent amb qui voleu compartir el fitxer, i un " "enllaç per a l'eliminació, que us permet eliminar el fitxer del servidor " -"quan vulgueu. " +"quan vulgueu." #: themes/default/templates/index.html.ep:122 msgid "Drop files here" @@ -337,7 +338,10 @@ msgstr "" #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" -msgstr "Hola,\\n\\nVe't aquí uns fitxers que vull compartir amb tu:" +msgstr "" +"Hola,\\n" +"\\n" +"Ve't aquí uns fitxers que vull compartir amb tu:\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" @@ -569,7 +573,7 @@ msgid "" "while to move." msgstr "" "S'està enviant el tros XX1 de XX2. Si us plau, paciència; la barra de " -"progrés pot trigar una mica a bellugar-se. " +"progrés pot trigar una mica a bellugar-se." #. (url_for('/') #: themes/default/templates/partial/mail.js.ep:48 @@ -910,7 +914,7 @@ msgstr "entre %1 i %2, el fitxer es mantindrà per sempre al servidor." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " -msgstr "termini:" +msgstr "termini: " #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" @@ -919,7 +923,7 @@ msgstr "" #. (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 "a partir de %1, el fitxer es mantindrà %2 dia/es al servidor " +msgstr "a partir de %1, el fitxer es mantindrà %2 dia/es al servidor" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From 022599fc7e621b2b65b991993587970d09917059 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:46:48 +0000 Subject: [PATCH 03/66] Translated using Weblate (German) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/de/ --- themes/default/lib/Lufi/I18N/de.po | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/de.po b/themes/default/lib/Lufi/I18N/de.po index 7b3d6a1..db372f4 100644 --- a/themes/default/lib/Lufi/I18N/de.po +++ b/themes/default/lib/Lufi/I18N/de.po @@ -5,15 +5,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-08-14 04:09+0000\n" -"Last-Translator: Copied by Zanata \n" -"Language-Team: German\n" -"Language: de\n" -"X-Generator: Zanata 4.6.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -149,7 +150,7 @@ msgstr "Kommagetrennte E-Mail-Adressen" #: themes/default/templates/index.html.ep:140 msgid "Compressing zip file…" -msgstr "Komprimierung der Zip-Datei..." +msgstr "Komprimierung der Zip-Datei…" #: themes/default/templates/partial/index.js.ep:15 msgid "Copy all links to clipboard" @@ -457,10 +458,13 @@ msgid "" "is the only time that we will ask you this." msgstr "" "Die Art und Weise wie Lufi Datei-Informationen speichert, wurde kürzlich " -"geändert.\\n\\n Am neuen localStorage-Speicherort konnten keine Dateien " -"gefunden werden, allerdings wurden Dateien am alten Speicherort gefunden." -"\\nWollen Sie diese Informationen importieren?\\nBitte beachten Sie, dass " -"diese Meldung nur ein einziges Mal angezeigt wird." +"geändert.\\n" +"\\n" +"Am neuen localStorage-Speicherort konnten keine Dateien gefunden werden, " +"allerdings wurden Dateien am alten Speicherort gefunden.\\n" +"Wollen Sie diese Informationen importieren?\\n" +"\\n" +"Bitte beachten Sie, dass diese Meldung nur ein einziges Mal angezeigt wird." #: themes/default/templates/files.html.ep:34 msgid "Mail" @@ -947,7 +951,7 @@ msgstr "zwischen %1 und %2, wird die Datei für immer aufbewahrt." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " -msgstr "Frist:" +msgstr "Frist: " #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" From 4dd3f819b2d1b96204d23b6c0df6d99efc17ded9 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:48:11 +0000 Subject: [PATCH 04/66] Translated using Weblate (French) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr/ --- themes/default/lib/Lufi/I18N/fr.po | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr.po b/themes/default/lib/Lufi/I18N/fr.po index 32f2d43..2f7fb81 100644 --- a/themes/default/lib/Lufi/I18N/fr.po +++ b/themes/default/lib/Lufi/I18N/fr.po @@ -8,15 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-10-10 08:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: fr\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -50,7 +51,7 @@ msgstr "%A %d %B %Y à %T" #: themes/default/templates/partial/index.js.ep:27 msgid "(max size: XXX)" -msgstr "(taille max: XXX)" +msgstr "(taille max : XXX)" #: themes/default/templates/index.html.ep:5 msgid "1 year" @@ -184,7 +185,7 @@ msgstr "Créer une archive zip avec les fichiers avant l’envoi ?" #: themes/default/templates/invitations/my_invitations.html.ep:26 msgid "Created at" -msgstr "Créée le " +msgstr "Créée le" #: themes/default/templates/invitations/my_invitations.html.ep:14 msgid "Delete" @@ -938,12 +939,12 @@ msgstr "Contenu de l’archive 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 "entre %1 et %2, le fichier sera conservé %3 jour(s) ;" +msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "entre %1 et %2, le fichier sera conservé indéfiniment ;" +msgstr "entre %1 et %2, le fichier sera conservé indéfiniment." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " From 5df7e882c2e2dcd7125f1c95ab0c939c40dabcff Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:47:51 +0000 Subject: [PATCH 05/66] Translated using Weblate (French (France)) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr_FR/ --- themes/default/lib/Lufi/I18N/fr_FR.po | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr_FR.po b/themes/default/lib/Lufi/I18N/fr_FR.po index f12cdef..bac9476 100644 --- a/themes/default/lib/Lufi/I18N/fr_FR.po +++ b/themes/default/lib/Lufi/I18N/fr_FR.po @@ -8,15 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: French (France) \n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-10-10 08:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: fr_FR\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -50,7 +51,7 @@ msgstr "%A %d %B %Y à %T" #: themes/default/templates/partial/index.js.ep:27 msgid "(max size: XXX)" -msgstr "(taille max: XXX)" +msgstr "(taille max : XXX)" #: themes/default/templates/index.html.ep:5 msgid "1 year" @@ -184,7 +185,7 @@ msgstr "Créer une archive zip avec les fichiers avant l’envoi ?" #: themes/default/templates/invitations/my_invitations.html.ep:26 msgid "Created at" -msgstr "Créée le " +msgstr "Créée le" #: themes/default/templates/invitations/my_invitations.html.ep:14 msgid "Delete" @@ -938,12 +939,12 @@ msgstr "Contenu de l’archive 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 "entre %1 et %2, le fichier sera conservé %3 jour(s) ;" +msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "entre %1 et %2, le fichier sera conservé indéfiniment ;" +msgstr "entre %1 et %2, le fichier sera conservé indéfiniment." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " From e64301e4b546872bc522de8953bd5a7613df6aa7 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:44:08 +0000 Subject: [PATCH 06/66] Translated using Weblate (Italian) Currently translated at 59.4% (111 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/it/ --- themes/default/lib/Lufi/I18N/it.po | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/it.po b/themes/default/lib/Lufi/I18N/it.po index fe694fd..cf2e34a 100644 --- a/themes/default/lib/Lufi/I18N/it.po +++ b/themes/default/lib/Lufi/I18N/it.po @@ -8,15 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Italian \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: it\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -428,6 +429,7 @@ msgid "Login" msgstr "Login" #: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91 +#, fuzzy msgid "Logout" msgstr "Logout" @@ -883,12 +885,12 @@ msgstr "" #. (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 "tra %1 e %2, il file sarà conservato %3 giorno(i);" +msgstr "tra %1 e %2, il file sarà conservato %3 giorno(i)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "tra %1 e %2, il file sarà conservato per sempre;" +msgstr "tra %1 e %2, il file sarà conservato per sempre." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " From 880414560b26caa4fb8eb0bcde53d3e66be02e7f Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:48:29 +0000 Subject: [PATCH 07/66] Translated using Weblate (Dutch) Currently translated at 61.0% (114 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/nl/ --- themes/default/lib/Lufi/I18N/nl.po | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/nl.po b/themes/default/lib/Lufi/I18N/nl.po index b52bbc2..9eb527d 100644 --- a/themes/default/lib/Lufi/I18N/nl.po +++ b/themes/default/lib/Lufi/I18N/nl.po @@ -4,15 +4,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Dutch \n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:57+0000\n" -"Last-Translator: Luc Didry \n" -"Language-Team: Dutch\n" -"Language: nl\n" -"X-Generator: Zanata 4.6.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -246,7 +247,7 @@ msgstr "Emails" #: themes/default/templates/partial/index.js.ep:22 msgid "Encrypting part XX1 of XX2" -msgstr "Encrypten deel XX1 van XX2 " +msgstr "Encrypten deel XX1 van XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." @@ -329,7 +330,10 @@ msgstr "" #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" -msgstr "Hallo,\\n\\nHier zijn enkele bestanden die ik met je wil delen:\\n\\n" +msgstr "" +"Hallo,\\n" +"\\n" +"Hier zijn enkele bestanden die ik met je wil delen:\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" @@ -847,7 +851,7 @@ msgid "" "You have attempted to leave this page. The upload will be canceled. Are you " "sure?" msgstr "" -"Je verlaat deze pagina. Upload zal geannuleerd worden. Weet je het zeker? " +"Je verlaat deze pagina. Upload zal geannuleerd worden. Weet je het zeker?" #: themes/default/templates/logout.html.ep:14 msgid "You have been successfully logged out." From 23ddbbf10b7edeb97688efa539a1290e8dfe2561 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:48:57 +0000 Subject: [PATCH 08/66] Translated using Weblate (Occitan) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/oc/ --- themes/default/lib/Lufi/I18N/oc.po | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/oc.po b/themes/default/lib/Lufi/I18N/oc.po index c0904c7..0fbe55c 100644 --- a/themes/default/lib/Lufi/I18N/oc.po +++ b/themes/default/lib/Lufi/I18N/oc.po @@ -11,15 +11,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Occitan \n" +"Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-10-11 05:26+0000\n" -"Last-Translator: Quentí\n" -"Language-Team: Tot en òc (totenoc.eu)\n" -"Language: oc\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Zanata 4.6.2\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -935,16 +936,16 @@ msgstr "Contengut 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 "entre %1 e %2, lo fichièr serà gardat %3 jorn(s) ;" +msgstr "entre %1 e %2, lo fichièr serà gardat %3 jorn(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "entre %1 e %2, lo fichièr serà gardat per totjorn. ;" +msgstr "entre %1 e %2, lo fichièr serà gardat per totjorn." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " -msgstr "darrièr relambi per telecargar :" +msgstr "darrièr relambi per telecargar : " #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" From 6a92e04c20fafc41d79ccb87fc798962f53afe75 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:56:09 +0000 Subject: [PATCH 09/66] Translated using Weblate (Portuguese) Currently translated at 59.4% (111 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/pt/ --- themes/default/lib/Lufi/I18N/pt.po | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/pt.po b/themes/default/lib/Lufi/I18N/pt.po index 63bf1dd..2dcd505 100644 --- a/themes/default/lib/Lufi/I18N/pt.po +++ b/themes/default/lib/Lufi/I18N/pt.po @@ -9,15 +9,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Portuguese \n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -894,7 +895,7 @@ msgstr "" #. (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 "entre %1 e %2, o ficheiro será conservado %3 dia(s) ;" +msgstr "entre %1 e %2, o ficheiro será conservado %3 dia(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 From 17c90188eeb44aa398c526ab2177cf40fcca3b70 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:19:56 +0000 Subject: [PATCH 10/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(French)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr/ --- themes/default/lib/Lufi/I18N/fr.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr.po b/themes/default/lib/Lufi/I18N/fr.po index 2f7fb81..66b5c96 100644 --- a/themes/default/lib/Lufi/I18N/fr.po +++ b/themes/default/lib/Lufi/I18N/fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: French \n" "Language: fr\n" @@ -264,11 +264,11 @@ msgstr "Chiffrement du fragment XX1 sur XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "Erreur : le fichier existait mais a été supprimé" +msgstr "Erreur : le fichier existait mais a été supprimé." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité" +msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" @@ -327,7 +327,7 @@ msgid "" msgstr "" "Récupérez le code source sur le dépôt officiel ou sur son miroir Github." +"ldidry/lufi\" class=\"classic\">miroir Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -957,7 +957,7 @@ msgstr "expire le 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 "pour %1 et plus, le fichier sera conservé %2 jour(s)." +msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From b5edfaf89266464a0586faef154fb54530065d85 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:20:23 +0000 Subject: [PATCH 11/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(French=20(France))?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr_FR/ --- themes/default/lib/Lufi/I18N/fr_FR.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr_FR.po b/themes/default/lib/Lufi/I18N/fr_FR.po index bac9476..8e2cf0b 100644 --- a/themes/default/lib/Lufi/I18N/fr_FR.po +++ b/themes/default/lib/Lufi/I18N/fr_FR.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: French (France) \n" "Language: fr_FR\n" @@ -264,11 +264,11 @@ msgstr "Chiffrement du fragment XX1 sur XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "Erreur : le fichier existait mais a été supprimé" +msgstr "Erreur : le fichier existait mais a été supprimé." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité" +msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" @@ -327,7 +327,7 @@ msgid "" msgstr "" "Récupérez le code source sur le dépôt officiel ou sur son miroir Github." +"ldidry/lufi\" class=\"classic\">miroir Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -957,7 +957,7 @@ msgstr "expire le 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 "pour %1 et plus, le fichier sera conservé %2 jour(s)." +msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From e2590e87ded3ce6b6be09d1c443e27c63a82ff87 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:20:49 +0000 Subject: [PATCH 12/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Occitan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/oc/ --- themes/default/lib/Lufi/I18N/oc.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/oc.po b/themes/default/lib/Lufi/I18N/oc.po index 0fbe55c..b29b278 100644 --- a/themes/default/lib/Lufi/I18N/oc.po +++ b/themes/default/lib/Lufi/I18N/oc.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Occitan \n" "Language: oc\n" @@ -36,7 +36,7 @@ msgstr "%1 vos convida a li mandar de fichièrs" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:6 msgid "%1 invites you to send him/her files through Lufi." -msgstr "%1 vos convida a li mandar de fichièrs per Lufi" +msgstr "%1 vos convida a li mandar de fichièrs per Lufi." #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:4 @@ -265,11 +265,11 @@ msgstr "Chiframent del tròç XX1 sus XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "Error : lo fichièr existissiá mas es estat suprimit" +msgstr "Error : lo fichièr existissiá mas es estat suprimit." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "Error : lo fichièr es pas estat mandat completament" +msgstr "Error : lo fichièr es pas estat mandat completament." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" @@ -327,7 +327,7 @@ msgid "" msgstr "" "Recuperatz lo còdi font sul depaus oficial o sus son miralh Github." +"lufi\" class=\"classic\">miralh Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -715,7 +715,7 @@ msgstr "L’invitacion %1 es estada suprimida." #. (stash('user_mail') #: themes/default/templates/invitations/invite.html.ep:34 msgid "The invitation mail will be send from your email address (%1)." -msgstr "Lo messatge d’invitacion serà mandat a vòstra adreça electronica (%1)" +msgstr "Lo messatge d’invitacion serà mandat a vòstra adreça electronica (%1)." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" @@ -844,7 +844,7 @@ msgstr "Qual escriguèt aqueste logicial ?" #: themes/default/templates/partial/index.js.ep:13 msgid "XXX file has been added to upload queue." -msgstr "XXX fichièrs son estats ajustats a la fila de mandadís" +msgstr "XXX fichièrs son estats ajustats a la fila de mandadís." #: themes/default/templates/invitations/invite.html.ep:30 msgid "" @@ -954,7 +954,7 @@ msgstr "expira lo 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 "per %1 e mai, lo fichièr serà gardat %2 jorn(s)." +msgstr "per %1 e mai, lo fichièr serà gardat %2 jorn(s)" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From 136ed14ab87159b944e5ade2dad8f462967bcdc5 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:30:54 +0000 Subject: [PATCH 13/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(German)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/de/ --- themes/default/lib/Lufi/I18N/de.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/de.po b/themes/default/lib/Lufi/I18N/de.po index db372f4..0fbfc04 100644 --- a/themes/default/lib/Lufi/I18N/de.po +++ b/themes/default/lib/Lufi/I18N/de.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: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:31+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: German \n" "Language: de\n" @@ -313,7 +313,7 @@ msgstr "Dateien gesendet am" #: themes/default/templates/partial/invitations.js.ep:8 msgid "Files sent in invitation XX1 by XX2" -msgstr "Dateien, die in der Einladung XX1 von XX2 gesendet wurden." +msgstr "Dateien, die in der Einladung XX1 von XX2 gesendet wurden" #: themes/default/templates/partial/render.js.ep:8 msgid "Get the file" @@ -326,8 +326,8 @@ msgid "" "com/ldidry/lufi\" class=\"classic\">Github mirror" msgstr "" "Holen Sie sich den Quellcode vom offiziellen Repository oder von dessen Github mirror." +"class=\"classic\">offiziellen Repository oder von dessen Github mirror" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -724,14 +724,14 @@ msgstr "Die Einladungsmail wird von Ihrer E-Mail-Adresse (%1) gesendet." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" -msgstr "Die Links wurden in die Zwischenablage kopiert." +msgstr "Die Links wurden in die Zwischenablage kopiert" #. (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 "" -"Die Links Ihrer Dateien werden automatisch per E-Mail an %1 (%2) gesendet." +"Die Links Ihrer Dateien werden automatisch per E-Mail an %1 (%2) gesendet" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:11 @@ -960,7 +960,7 @@ msgstr "Läuft ab am 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 "für %1 und mehr, wird die Datei %2 Tag(e) aufbewahrt." +msgstr "für %1 und mehr, wird die Datei %2 Tag(e) aufbewahrt" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From 0ab2bcc5a891e295bbbcc4516d6e19a7b63258e6 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:34:20 +0000 Subject: [PATCH 14/66] Translated using Weblate (Arabic) Currently translated at 84.5% (158 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/ar/ --- themes/default/lib/Lufi/I18N/ar.po | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ar.po b/themes/default/lib/Lufi/I18N/ar.po index da590fc..a49e52b 100644 --- a/themes/default/lib/Lufi/I18N/ar.po +++ b/themes/default/lib/Lufi/I18N/ar.po @@ -5,16 +5,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Arabic \n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-08-09 08:47+0000\n" -"Last-Translator: ButterflyOfFire \n" -"Language: ar\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: Zanata 4.6.2\n" -"Language-Team: Arabic\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -101,7 +102,7 @@ msgstr "" #. (stash('nbslices') #: themes/default/templates/partial/render.js.ep:9 msgid "Asking for file part XX1 of %1" -msgstr "طلب الجزء XX1 مِن %1 " +msgstr "طلب الجزء XX1 مِن %1" #: themes/default/templates/about.html.ep:20 msgid "Back to homepage" @@ -137,7 +138,7 @@ msgstr "عناوين البريد الإلكترونية مُقسّمة بفاص #: themes/default/templates/index.html.ep:140 msgid "Compressing zip file…" -msgstr "جارٍ ضغط ملف zip..." +msgstr "جارٍ ضغط ملف zip…" #: themes/default/templates/partial/index.js.ep:15 msgid "Copy all links to clipboard" @@ -213,6 +214,9 @@ msgid "" "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" @@ -264,7 +268,7 @@ msgstr "تنتهي صلاحيته في" #: themes/default/templates/files.html.ep:12 msgid "Export localStorage data" -msgstr "" +msgstr "تصدير بيانات localStorage" #: lib/Lufi/Controller/Files.pm:471 msgid "File deleted" @@ -364,7 +368,7 @@ msgstr "" #: 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" @@ -851,7 +855,7 @@ msgstr "الكلمة السرية غير صالحة. يرجى تحديث الص #: themes/default/templates/partial/render.js.ep:12 msgid "Zip content:" -msgstr "" +msgstr "محتوى ملف Zip المضغوط:" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:20 From 14bf51e910d989b3925f9de50aed08fd0745c40a Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:45:32 +0000 Subject: [PATCH 15/66] Translated using Weblate (Catalan) Currently translated at 67.4% (126 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/ca/ --- themes/default/lib/Lufi/I18N/ca.po | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ca.po b/themes/default/lib/Lufi/I18N/ca.po index 2e2406a..95f3347 100644 --- a/themes/default/lib/Lufi/I18N/ca.po +++ b/themes/default/lib/Lufi/I18N/ca.po @@ -10,15 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Catalan \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:55+0000\n" -"Last-Translator: Luc Didry \n" -"Language-Team: català; valencià <>\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Zanata 4.6.2\n" -"Language: ca\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -230,7 +231,7 @@ msgstr "" "servidor. Obtindreu dos enllaços per a cada fitxer: un enllaç per a la " "descàrrega, que doneu a la gent amb qui voleu compartir el fitxer, i un " "enllaç per a l'eliminació, que us permet eliminar el fitxer del servidor " -"quan vulgueu. " +"quan vulgueu." #: themes/default/templates/index.html.ep:122 msgid "Drop files here" @@ -337,7 +338,10 @@ msgstr "" #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" -msgstr "Hola,\\n\\nVe't aquí uns fitxers que vull compartir amb tu:" +msgstr "" +"Hola,\\n" +"\\n" +"Ve't aquí uns fitxers que vull compartir amb tu:\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" @@ -569,7 +573,7 @@ msgid "" "while to move." msgstr "" "S'està enviant el tros XX1 de XX2. Si us plau, paciència; la barra de " -"progrés pot trigar una mica a bellugar-se. " +"progrés pot trigar una mica a bellugar-se." #. (url_for('/') #: themes/default/templates/partial/mail.js.ep:48 @@ -910,7 +914,7 @@ msgstr "entre %1 i %2, el fitxer es mantindrà per sempre al servidor." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " -msgstr "termini:" +msgstr "termini: " #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" @@ -919,7 +923,7 @@ msgstr "" #. (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 "a partir de %1, el fitxer es mantindrà %2 dia/es al servidor " +msgstr "a partir de %1, el fitxer es mantindrà %2 dia/es al servidor" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From 575456215641a4ba9fe7d5f28ef56bf7d6646d4a Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:46:48 +0000 Subject: [PATCH 16/66] Translated using Weblate (German) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/de/ --- themes/default/lib/Lufi/I18N/de.po | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/de.po b/themes/default/lib/Lufi/I18N/de.po index 7b3d6a1..db372f4 100644 --- a/themes/default/lib/Lufi/I18N/de.po +++ b/themes/default/lib/Lufi/I18N/de.po @@ -5,15 +5,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-08-14 04:09+0000\n" -"Last-Translator: Copied by Zanata \n" -"Language-Team: German\n" -"Language: de\n" -"X-Generator: Zanata 4.6.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -149,7 +150,7 @@ msgstr "Kommagetrennte E-Mail-Adressen" #: themes/default/templates/index.html.ep:140 msgid "Compressing zip file…" -msgstr "Komprimierung der Zip-Datei..." +msgstr "Komprimierung der Zip-Datei…" #: themes/default/templates/partial/index.js.ep:15 msgid "Copy all links to clipboard" @@ -457,10 +458,13 @@ msgid "" "is the only time that we will ask you this." msgstr "" "Die Art und Weise wie Lufi Datei-Informationen speichert, wurde kürzlich " -"geändert.\\n\\n Am neuen localStorage-Speicherort konnten keine Dateien " -"gefunden werden, allerdings wurden Dateien am alten Speicherort gefunden." -"\\nWollen Sie diese Informationen importieren?\\nBitte beachten Sie, dass " -"diese Meldung nur ein einziges Mal angezeigt wird." +"geändert.\\n" +"\\n" +"Am neuen localStorage-Speicherort konnten keine Dateien gefunden werden, " +"allerdings wurden Dateien am alten Speicherort gefunden.\\n" +"Wollen Sie diese Informationen importieren?\\n" +"\\n" +"Bitte beachten Sie, dass diese Meldung nur ein einziges Mal angezeigt wird." #: themes/default/templates/files.html.ep:34 msgid "Mail" @@ -947,7 +951,7 @@ msgstr "zwischen %1 und %2, wird die Datei für immer aufbewahrt." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " -msgstr "Frist:" +msgstr "Frist: " #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" From e4ab0ec30653861fe9dff73cba31bb7e626ca76e Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:48:11 +0000 Subject: [PATCH 17/66] Translated using Weblate (French) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr/ --- themes/default/lib/Lufi/I18N/fr.po | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr.po b/themes/default/lib/Lufi/I18N/fr.po index 32f2d43..2f7fb81 100644 --- a/themes/default/lib/Lufi/I18N/fr.po +++ b/themes/default/lib/Lufi/I18N/fr.po @@ -8,15 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-10-10 08:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: fr\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -50,7 +51,7 @@ msgstr "%A %d %B %Y à %T" #: themes/default/templates/partial/index.js.ep:27 msgid "(max size: XXX)" -msgstr "(taille max: XXX)" +msgstr "(taille max : XXX)" #: themes/default/templates/index.html.ep:5 msgid "1 year" @@ -184,7 +185,7 @@ msgstr "Créer une archive zip avec les fichiers avant l’envoi ?" #: themes/default/templates/invitations/my_invitations.html.ep:26 msgid "Created at" -msgstr "Créée le " +msgstr "Créée le" #: themes/default/templates/invitations/my_invitations.html.ep:14 msgid "Delete" @@ -938,12 +939,12 @@ msgstr "Contenu de l’archive 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 "entre %1 et %2, le fichier sera conservé %3 jour(s) ;" +msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "entre %1 et %2, le fichier sera conservé indéfiniment ;" +msgstr "entre %1 et %2, le fichier sera conservé indéfiniment." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " From 42458468a690376cffab0523eea3afea3ddb07d8 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:47:51 +0000 Subject: [PATCH 18/66] Translated using Weblate (French (France)) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr_FR/ --- themes/default/lib/Lufi/I18N/fr_FR.po | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr_FR.po b/themes/default/lib/Lufi/I18N/fr_FR.po index f12cdef..bac9476 100644 --- a/themes/default/lib/Lufi/I18N/fr_FR.po +++ b/themes/default/lib/Lufi/I18N/fr_FR.po @@ -8,15 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: French (France) \n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-10-10 08:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: fr_FR\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -50,7 +51,7 @@ msgstr "%A %d %B %Y à %T" #: themes/default/templates/partial/index.js.ep:27 msgid "(max size: XXX)" -msgstr "(taille max: XXX)" +msgstr "(taille max : XXX)" #: themes/default/templates/index.html.ep:5 msgid "1 year" @@ -184,7 +185,7 @@ msgstr "Créer une archive zip avec les fichiers avant l’envoi ?" #: themes/default/templates/invitations/my_invitations.html.ep:26 msgid "Created at" -msgstr "Créée le " +msgstr "Créée le" #: themes/default/templates/invitations/my_invitations.html.ep:14 msgid "Delete" @@ -938,12 +939,12 @@ msgstr "Contenu de l’archive 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 "entre %1 et %2, le fichier sera conservé %3 jour(s) ;" +msgstr "entre %1 et %2, le fichier sera conservé %3 jour(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "entre %1 et %2, le fichier sera conservé indéfiniment ;" +msgstr "entre %1 et %2, le fichier sera conservé indéfiniment." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " From 291019d5e9e3a6b4b4c3c2620faf6a99792c8e22 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:44:08 +0000 Subject: [PATCH 19/66] Translated using Weblate (Italian) Currently translated at 59.4% (111 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/it/ --- themes/default/lib/Lufi/I18N/it.po | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/it.po b/themes/default/lib/Lufi/I18N/it.po index fe694fd..cf2e34a 100644 --- a/themes/default/lib/Lufi/I18N/it.po +++ b/themes/default/lib/Lufi/I18N/it.po @@ -8,15 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Italian \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: it\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -428,6 +429,7 @@ msgid "Login" msgstr "Login" #: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91 +#, fuzzy msgid "Logout" msgstr "Logout" @@ -883,12 +885,12 @@ msgstr "" #. (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 "tra %1 e %2, il file sarà conservato %3 giorno(i);" +msgstr "tra %1 e %2, il file sarà conservato %3 giorno(i)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "tra %1 e %2, il file sarà conservato per sempre;" +msgstr "tra %1 e %2, il file sarà conservato per sempre." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " From 083c1f259c00bb7a82fe156c1605e733b0ac65a3 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:48:29 +0000 Subject: [PATCH 20/66] Translated using Weblate (Dutch) Currently translated at 61.0% (114 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/nl/ --- themes/default/lib/Lufi/I18N/nl.po | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/nl.po b/themes/default/lib/Lufi/I18N/nl.po index b52bbc2..9eb527d 100644 --- a/themes/default/lib/Lufi/I18N/nl.po +++ b/themes/default/lib/Lufi/I18N/nl.po @@ -4,15 +4,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Dutch \n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:57+0000\n" -"Last-Translator: Luc Didry \n" -"Language-Team: Dutch\n" -"Language: nl\n" -"X-Generator: Zanata 4.6.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -246,7 +247,7 @@ msgstr "Emails" #: themes/default/templates/partial/index.js.ep:22 msgid "Encrypting part XX1 of XX2" -msgstr "Encrypten deel XX1 van XX2 " +msgstr "Encrypten deel XX1 van XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." @@ -329,7 +330,10 @@ msgstr "" #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" -msgstr "Hallo,\\n\\nHier zijn enkele bestanden die ik met je wil delen:\\n\\n" +msgstr "" +"Hallo,\\n" +"\\n" +"Hier zijn enkele bestanden die ik met je wil delen:\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" @@ -847,7 +851,7 @@ msgid "" "You have attempted to leave this page. The upload will be canceled. Are you " "sure?" msgstr "" -"Je verlaat deze pagina. Upload zal geannuleerd worden. Weet je het zeker? " +"Je verlaat deze pagina. Upload zal geannuleerd worden. Weet je het zeker?" #: themes/default/templates/logout.html.ep:14 msgid "You have been successfully logged out." From b48483f31e3026537e1f66b6f98a8639d166b15c Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:48:57 +0000 Subject: [PATCH 21/66] Translated using Weblate (Occitan) Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/oc/ --- themes/default/lib/Lufi/I18N/oc.po | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/oc.po b/themes/default/lib/Lufi/I18N/oc.po index c0904c7..0fbe55c 100644 --- a/themes/default/lib/Lufi/I18N/oc.po +++ b/themes/default/lib/Lufi/I18N/oc.po @@ -11,15 +11,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Occitan \n" +"Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-10-11 05:26+0000\n" -"Last-Translator: Quentí\n" -"Language-Team: Tot en òc (totenoc.eu)\n" -"Language: oc\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Zanata 4.6.2\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -935,16 +936,16 @@ msgstr "Contengut 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 "entre %1 e %2, lo fichièr serà gardat %3 jorn(s) ;" +msgstr "entre %1 e %2, lo fichièr serà gardat %3 jorn(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "entre %1 e %2, lo fichièr serà gardat per totjorn. ;" +msgstr "entre %1 e %2, lo fichièr serà gardat per totjorn." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " -msgstr "darrièr relambi per telecargar :" +msgstr "darrièr relambi per telecargar : " #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" From db1f1a44cc9787404de03fe1e38ef5a970e04b2a Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Mon, 18 Nov 2019 09:56:09 +0000 Subject: [PATCH 22/66] Translated using Weblate (Portuguese) Currently translated at 59.4% (111 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/pt/ --- themes/default/lib/Lufi/I18N/pt.po | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/pt.po b/themes/default/lib/Lufi/I18N/pt.po index 63bf1dd..2dcd505 100644 --- a/themes/default/lib/Lufi/I18N/pt.po +++ b/themes/default/lib/Lufi/I18N/pt.po @@ -9,15 +9,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: Portuguese \n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2019-04-19 04:58+0000\n" -"Language-Team: \n" -"X-Generator: Zanata 4.6.2\n" -"Last-Translator: Luc Didry \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) @@ -894,7 +895,7 @@ msgstr "" #. (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 "entre %1 e %2, o ficheiro será conservado %3 dia(s) ;" +msgstr "entre %1 e %2, o ficheiro será conservado %3 dia(s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 From 8e8fb28be69d0465c61d6a27b8cc355adc345b06 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:19:56 +0000 Subject: [PATCH 23/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(French)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr/ --- themes/default/lib/Lufi/I18N/fr.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr.po b/themes/default/lib/Lufi/I18N/fr.po index 2f7fb81..66b5c96 100644 --- a/themes/default/lib/Lufi/I18N/fr.po +++ b/themes/default/lib/Lufi/I18N/fr.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: French \n" "Language: fr\n" @@ -264,11 +264,11 @@ msgstr "Chiffrement du fragment XX1 sur XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "Erreur : le fichier existait mais a été supprimé" +msgstr "Erreur : le fichier existait mais a été supprimé." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité" +msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" @@ -327,7 +327,7 @@ msgid "" msgstr "" "Récupérez le code source sur le dépôt officiel ou sur son miroir Github." +"ldidry/lufi\" class=\"classic\">miroir Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -957,7 +957,7 @@ msgstr "expire le 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 "pour %1 et plus, le fichier sera conservé %2 jour(s)." +msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From f40f921a1a31d516dc091329516c8a032e7fe12e Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:20:23 +0000 Subject: [PATCH 24/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(French=20(France))?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/fr_FR/ --- themes/default/lib/Lufi/I18N/fr_FR.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr_FR.po b/themes/default/lib/Lufi/I18N/fr_FR.po index bac9476..8e2cf0b 100644 --- a/themes/default/lib/Lufi/I18N/fr_FR.po +++ b/themes/default/lib/Lufi/I18N/fr_FR.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: French (France) \n" "Language: fr_FR\n" @@ -264,11 +264,11 @@ msgstr "Chiffrement du fragment XX1 sur XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "Erreur : le fichier existait mais a été supprimé" +msgstr "Erreur : le fichier existait mais a été supprimé." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité" +msgstr "Erreur : le fichier n’a pas été envoyé dans son intégralité." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" @@ -327,7 +327,7 @@ msgid "" msgstr "" "Récupérez le code source sur le dépôt officiel ou sur son miroir Github." +"ldidry/lufi\" class=\"classic\">miroir Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -957,7 +957,7 @@ msgstr "expire le 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 "pour %1 et plus, le fichier sera conservé %2 jour(s)." +msgstr "pour %1 et plus, le fichier sera conservé %2 jour(s)" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From 58a69b499114f901ab76a9625747089866b63ac5 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:20:49 +0000 Subject: [PATCH 25/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Occitan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/oc/ --- themes/default/lib/Lufi/I18N/oc.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/oc.po b/themes/default/lib/Lufi/I18N/oc.po index 0fbe55c..b29b278 100644 --- a/themes/default/lib/Lufi/I18N/oc.po +++ b/themes/default/lib/Lufi/I18N/oc.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Occitan \n" "Language: oc\n" @@ -36,7 +36,7 @@ msgstr "%1 vos convida a li mandar de fichièrs" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:6 msgid "%1 invites you to send him/her files through Lufi." -msgstr "%1 vos convida a li mandar de fichièrs per Lufi" +msgstr "%1 vos convida a li mandar de fichièrs per Lufi." #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:4 @@ -265,11 +265,11 @@ msgstr "Chiframent del tròç XX1 sus XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "Error : lo fichièr existissiá mas es estat suprimit" +msgstr "Error : lo fichièr existissiá mas es estat suprimit." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "Error : lo fichièr es pas estat mandat completament" +msgstr "Error : lo fichièr es pas estat mandat completament." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" @@ -327,7 +327,7 @@ msgid "" msgstr "" "Recuperatz lo còdi font sul depaus oficial o sus son miralh Github." +"lufi\" class=\"classic\">miralh Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -715,7 +715,7 @@ msgstr "L’invitacion %1 es estada suprimida." #. (stash('user_mail') #: themes/default/templates/invitations/invite.html.ep:34 msgid "The invitation mail will be send from your email address (%1)." -msgstr "Lo messatge d’invitacion serà mandat a vòstra adreça electronica (%1)" +msgstr "Lo messatge d’invitacion serà mandat a vòstra adreça electronica (%1)." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" @@ -844,7 +844,7 @@ msgstr "Qual escriguèt aqueste logicial ?" #: themes/default/templates/partial/index.js.ep:13 msgid "XXX file has been added to upload queue." -msgstr "XXX fichièrs son estats ajustats a la fila de mandadís" +msgstr "XXX fichièrs son estats ajustats a la fila de mandadís." #: themes/default/templates/invitations/invite.html.ep:30 msgid "" @@ -954,7 +954,7 @@ msgstr "expira lo 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 "per %1 e mai, lo fichièr serà gardat %2 jorn(s)." +msgstr "per %1 e mai, lo fichièr serà gardat %2 jorn(s)" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From 524b288b9093abcccf4195f53e15787cb2b1ba19 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 18 Nov 2019 10:30:54 +0000 Subject: [PATCH 26/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(German)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/de/ --- themes/default/lib/Lufi/I18N/de.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/de.po b/themes/default/lib/Lufi/I18N/de.po index db372f4..0fbfc04 100644 --- a/themes/default/lib/Lufi/I18N/de.po +++ b/themes/default/lib/Lufi/I18N/de.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: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2019-11-18 10:31+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: German \n" "Language: de\n" @@ -313,7 +313,7 @@ msgstr "Dateien gesendet am" #: themes/default/templates/partial/invitations.js.ep:8 msgid "Files sent in invitation XX1 by XX2" -msgstr "Dateien, die in der Einladung XX1 von XX2 gesendet wurden." +msgstr "Dateien, die in der Einladung XX1 von XX2 gesendet wurden" #: themes/default/templates/partial/render.js.ep:8 msgid "Get the file" @@ -326,8 +326,8 @@ msgid "" "com/ldidry/lufi\" class=\"classic\">Github mirror" msgstr "" "Holen Sie sich den Quellcode vom offiziellen Repository oder von dessen Github mirror." +"class=\"classic\">offiziellen Repository oder von dessen Github mirror" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -724,14 +724,14 @@ msgstr "Die Einladungsmail wird von Ihrer E-Mail-Adresse (%1) gesendet." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" -msgstr "Die Links wurden in die Zwischenablage kopiert." +msgstr "Die Links wurden in die Zwischenablage kopiert" #. (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 "" -"Die Links Ihrer Dateien werden automatisch per E-Mail an %1 (%2) gesendet." +"Die Links Ihrer Dateien werden automatisch per E-Mail an %1 (%2) gesendet" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:11 @@ -960,7 +960,7 @@ msgstr "Läuft ab am 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 "für %1 und mehr, wird die Datei %2 Tag(e) aufbewahrt." +msgstr "für %1 und mehr, wird die Datei %2 Tag(e) aufbewahrt" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 From 538bf77cbecb96d6f3771ec99ccb6f34ec5ef005 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Sat, 21 Mar 2020 15:23:57 -0400 Subject: [PATCH 27/66] added browser notifications --- themes/default/public/js/lufi-down.js | 1 + .../default/public/js/lufi-notifications.js | 24 +++++++++++++++++++ themes/default/public/js/lufi-up.js | 2 ++ themes/default/templates/index.html.ep | 1 + themes/default/templates/render.html.ep | 1 + 5 files changed, 29 insertions(+) create mode 100644 themes/default/public/js/lufi-notifications.js diff --git a/themes/default/public/js/lufi-down.js b/themes/default/public/js/lufi-down.js index 4108df9..1560d3e 100644 --- a/themes/default/public/js/lufi-down.js +++ b/themes/default/public/js/lufi-down.js @@ -95,6 +95,7 @@ function spawnWebsocket(pa) { if (data.part + 1 === data.total) { var blob = new Blob(a, {type: data.type}); + notify('File downloaded', data.name); $('#please-wait').remove(); $('#loading').remove(); diff --git a/themes/default/public/js/lufi-notifications.js b/themes/default/public/js/lufi-notifications.js new file mode 100644 index 0000000..7a8d221 --- /dev/null +++ b/themes/default/public/js/lufi-notifications.js @@ -0,0 +1,24 @@ +function notify(title, body) { + if (!Notification) { + return; + } + + if (Notification.permission !== "granted") { + Notification.requestPermission(); + } else { + let options = { + body: body, + icon: '/img/lufi196.png' + }; + let n = new Notification(title, options); + } +} + +document.addEventListener('DOMContentLoaded', function () { + if (!Notification) { + return; + } + + if (Notification.permission !== "granted") + Notification.requestPermission(); +}); \ No newline at end of file diff --git a/themes/default/public/js/lufi-up.js b/themes/default/public/js/lufi-up.js index e7ae260..2cb1050 100644 --- a/themes/default/public/js/lufi-up.js +++ b/themes/default/public/js/lufi-up.js @@ -477,6 +477,8 @@ function updateProgressBar(data) { console.log('Error on WebSocket connection but file has been fully send, so we don\'t care.'); } + notify('File uploaded', data.name); + $('#parts-'+window.fc).remove(); var n = $('#name-'+window.fc); var s = $('#size-'+window.fc); diff --git a/themes/default/templates/index.html.ep b/themes/default/templates/index.html.ep index 9f498c2..6409f78 100644 --- a/themes/default/templates/index.html.ep +++ b/themes/default/templates/index.html.ep @@ -165,5 +165,6 @@ %= javascript '/js/moment-with-locales.min.js' %= javascript '/js/filesize.min.js' %= javascript '/js/jszip.min.js' +%= javascript '/js/lufi-notifications.js' %= javascript '/js/lufi-up.js' % } diff --git a/themes/default/templates/render.html.ep b/themes/default/templates/render.html.ep index 4c06596..9deb809 100644 --- a/themes/default/templates/render.html.ep +++ b/themes/default/templates/render.html.ep @@ -45,6 +45,7 @@ %= javascript '/js/filesize.min.js' %= javascript '/js/sjcl.js' %= javascript '/js/jszip.min.js' +%= javascript '/js/lufi-notifications.js' %= javascript '/js/lufi-down.js' % } % } From b2c4a7f0e0e8edd4d491fa0dd9e6c1206a1065aa Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Sat, 21 Mar 2020 19:15:08 -0400 Subject: [PATCH 28/66] added internationalization --- themes/default/public/js/lufi-down.js | 2 +- themes/default/public/js/lufi-up.js | 2 +- themes/default/templates/partial/index.js.ep | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/themes/default/public/js/lufi-down.js b/themes/default/public/js/lufi-down.js index 1560d3e..54d0c87 100644 --- a/themes/default/public/js/lufi-down.js +++ b/themes/default/public/js/lufi-down.js @@ -95,7 +95,7 @@ function spawnWebsocket(pa) { if (data.part + 1 === data.total) { var blob = new Blob(a, {type: data.type}); - notify('File downloaded', data.name); + notify(i18n.fileDownloaded, data.name); $('#please-wait').remove(); $('#loading').remove(); diff --git a/themes/default/public/js/lufi-up.js b/themes/default/public/js/lufi-up.js index 2cb1050..8776fde 100644 --- a/themes/default/public/js/lufi-up.js +++ b/themes/default/public/js/lufi-up.js @@ -477,7 +477,7 @@ function updateProgressBar(data) { console.log('Error on WebSocket connection but file has been fully send, so we don\'t care.'); } - notify('File uploaded', data.name); + notify(i18n.fileUploaded, data.name); $('#parts-'+window.fc).remove(); var n = $('#name-'+window.fc); diff --git a/themes/default/templates/partial/index.js.ep b/themes/default/templates/partial/index.js.ep index 6fc6d76..525eecd 100644 --- a/themes/default/templates/partial/index.js.ep +++ b/themes/default/templates/partial/index.js.ep @@ -28,6 +28,8 @@ var i18n = { noLimit: '<%= l('No expiration delay') %>', sending: '<%= l('Sending part XX1 of XX2. Please, be patient, the progress bar can take a while to move.') %>', wsProblem: '<%= l('Websocket communication error') %>', + fileDownloaded: '<%= l('File downloaded') %>', + fileUploaded: '<%= l('File uploaded') %>', }; var maxSize = <%= config('max_file_size') || 0 %>; From 25cba3a8c8cea2bd75bef152ab09d467448a66b9 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 11:19:39 +0100 Subject: [PATCH 29/66] Small improvements to !47 (Fix #181) --- CHANGELOG | 1 + themes/default/lib/Lufi/I18N/lufi.pot | 30 +++++++++------ .../default/public/js/lufi-notifications.js | 6 ++- themes/default/templates/partial/index.js.ep | 37 +++++++++---------- themes/default/templates/partial/render.js.ep | 1 + 5 files changed, 43 insertions(+), 32 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 72ef946..2014614 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Revision history for Lufi ?.??.? ????-??-?? + - Notifications when uploading and downloading files (#181) 0.04.6 2019-11-07 - Now can send large files (>2Gio) while using a DB other than SQLite (#165) diff --git a/themes/default/lib/Lufi/I18N/lufi.pot b/themes/default/lib/Lufi/I18N/lufi.pot index 0a3ec3b..47a989c 100644 --- a/themes/default/lib/Lufi/I18N/lufi.pot +++ b/themes/default/lib/Lufi/I18N/lufi.pot @@ -45,7 +45,7 @@ msgstr "" msgid "%A %d %B %Y at %T" msgstr "" -#: themes/default/templates/partial/index.js.ep:27 +#: themes/default/templates/partial/index.js.ep:28 msgid "(max size: XXX)" msgstr "" @@ -90,7 +90,7 @@ 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." +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 "" #. (stash('nbslices') @@ -287,7 +287,7 @@ msgid "Get the file" msgstr "" #: themes/default/templates/about.html.ep:18 -msgid "Get the source code on the official repository or on its Github mirror" +msgid "Get the source code on the official repository or on its Github mirror" msgstr "" #: themes/default/templates/invitations/my_invitations.html.ep:24 diff --git a/themes/default/templates/about.html.ep b/themes/default/templates/about.html.ep index 7d172d0..27c4854 100644 --- a/themes/default/templates/about.html.ep +++ b/themes/default/templates/about.html.ep @@ -14,8 +14,8 @@

<%= l('Who wrote this software?') %>

<%== l('The original (and only for now) author is Luc Didry.') %>

<%= l('How to install the software on my server?') %>

-

<%== l('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.') %>
- <%== l('Get the source code on the official repository or on its Github mirror') %> +

<%== l('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.') %>
+ <%== l('Get the source code on the official repository or on its Github mirror') %>

<%= link_to url_for('/') => ( class => "btn waves-effect waves-light cyan" ) => begin %><%= l('Back to homepage') %><% end%>

From 84f7cae2cebd2b0fcac67c86dc9f2e93f6d26258 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 11:34:15 +0100 Subject: [PATCH 32/66] Add Nicolas Constant in authors --- AUTHORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.md b/AUTHORS.md index 09a575e..79011b5 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -30,6 +30,7 @@ - TECH'advantage, https://www.tech-advantage.com/ (paid for LDAP invitations feature) - pi2 (typo) - Rain (bugfix) +- Nicolas Constant (notifications) ## Vulnerabilities / bug hunters 🐛 From a6965da4d0d0e9b3fd51d7630fe75b555f121c7d Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Thu, 19 Dec 2019 18:24:01 +0000 Subject: [PATCH 33/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Arabic)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 85.0% (159 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/ar/ --- themes/default/lib/Lufi/I18N/ar.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ar.po b/themes/default/lib/Lufi/I18N/ar.po index a49e52b..2a97dd7 100644 --- a/themes/default/lib/Lufi/I18N/ar.po +++ b/themes/default/lib/Lufi/I18N/ar.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" +"PO-Revision-Date: 2019-12-20 19:13+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -709,7 +709,7 @@ 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 "" From d93ffa358273844d55d6649d6d3a0a39b2c1fac9 Mon Sep 17 00:00:00 2001 From: Filip Bengtsson Date: Tue, 31 Dec 2019 16:04:42 +0000 Subject: [PATCH 34/66] =?UTF-8?q?=F0=9F=8C=90=20Added=20translation=20usin?= =?UTF-8?q?g=20Weblate=20(Swedish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/default/lib/Lufi/I18N/sv.po | 797 +++++++++++++++++++++++++++++ 1 file changed, 797 insertions(+) create mode 100644 themes/default/lib/Lufi/I18N/sv.po diff --git a/themes/default/lib/Lufi/I18N/sv.po b/themes/default/lib/Lufi/I18N/sv.po new file mode 100644 index 0000000..3f8501e --- /dev/null +++ b/themes/default/lib/Lufi/I18N/sv.po @@ -0,0 +1,797 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. ($delay) +#. (max_delay) +#: themes/default/templates/index.html.ep:56 themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:66 +msgid "%1 days" +msgstr "" + +#. (stash('ldap_user') +#: themes/default/templates/invitations/invite.mail.ep:2 +msgid "%1 invites you to send him/her files" +msgstr "" + +#. (stash('ldap_user') +#: themes/default/templates/invitations/invite.mail.ep:6 +msgid "%1 invites you to send him/her files through Lufi." +msgstr "" + +#. (stash('invitation') +#: themes/default/templates/invitations/notification_files_sent.mail.ep:4 +msgid "%1 sent you files" +msgstr "" + +#. (stash('invitation') +#: themes/default/templates/invitations/notification_files_sent.mail.ep:8 +msgid "%1 used your invitation to send you files:" +msgstr "" + +#: 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 "" + +#: themes/default/templates/partial/index.js.ep:27 +msgid "(max size: XXX)" +msgstr "" + +#: themes/default/templates/index.html.ep:5 +msgid "1 year" +msgstr "" + +#: themes/default/templates/index.html.ep:4 themes/default/templates/index.html.ep:65 +msgid "24 hours" +msgstr "" + +#: themes/default/templates/partial/mail.js.ep:40 +msgid ":" +msgstr "" + +#: themes/default/templates/render.html.ep:42 +msgid "Abort" +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:53 themes/default/templates/layouts/default.html.ep:86 +msgid "About" +msgstr "" + +#: themes/default/templates/index.html.ep:107 +msgid "Add a password to file(s)" +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 "" + +#: themes/default/templates/partial/invitations.js.ep:3 +msgid "Are you sure you want to delete the selected invitations?" +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 "" + +#. (stash('nbslices') +#: themes/default/templates/partial/render.js.ep:9 +msgid "Asking for file part XX1 of %1" +msgstr "" + +#: themes/default/templates/about.html.ep:20 +msgid "Back to homepage" +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:25 +msgid "Bad CSRF token!" +msgstr "" + +#: lib/Lufi/Controller/Auth.pm:27 lib/Lufi/Controller/Auth.pm:49 +msgid "Bad CSRF token." +msgstr "" + +#: 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:" +msgstr "" + +#: themes/default/templates/index.html.ep:126 +msgid "Click to open the file browser" +msgstr "" + +#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 +msgid "Close" +msgstr "" + +#: themes/default/templates/mail.html.ep:23 +msgid "Comma-separated email addresses" +msgstr "" + +#: themes/default/templates/index.html.ep:140 +msgid "Compressing zip file…" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:15 +msgid "Copy all links to clipboard" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:18 +msgid "Copy to clipboard" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:507 +msgid "Could not delete the file. You are not authenticated." +msgstr "" + +#: lib/Lufi/Controller/Files.pm:489 +msgid "Could not find the file. Are you sure of the URL and the token?" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:400 +msgid "Could not find the file. Are you sure of the URL?" +msgstr "" + +#: themes/default/templates/files.html.ep:29 +msgid "Counter" +msgstr "" + +#: themes/default/templates/index.html.ep:100 +msgid "Create a zip archive with the files before uploading?" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:26 +msgid "Created at" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:14 +msgid "Delete" +msgstr "" + +#: themes/default/templates/files.html.ep:30 themes/default/templates/index.html.ep:90 +msgid "Delete at first download?" +msgstr "" + +#: themes/default/templates/files.html.ep:19 +msgid "Delete selected files" +msgstr "" + +#: themes/default/templates/files.html.ep:33 themes/default/templates/partial/index.js.ep:19 +msgid "Deletion link" +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 "" + +#: themes/default/templates/partial/render.js.ep:4 +msgid "Download aborted." +msgstr "" + +#: themes/default/templates/files.html.ep:28 themes/default/templates/partial/index.js.ep:20 +msgid "Download link" +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 "" + +#: themes/default/templates/invitations/invite.html.ep:40 +msgid "Email address of your guest" +msgstr "" + +#: themes/default/templates/mail.html.ep:39 +msgid "Email body" +msgstr "" + +#: themes/default/templates/mail.html.ep:31 +msgid "Email subject" +msgstr "" + +#: themes/default/templates/mail.html.ep:25 themes/default/templates/mail.html.ep:27 +msgid "Emails" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:22 +msgid "Encrypting part XX1 of XX2" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:289 +msgid "Error: the file existed but was deleted." +msgstr "" + +#: lib/Lufi/Controller/Files.pm:369 +msgid "Error: the file has not been sent entirely." +msgstr "" + +#: lib/Lufi/Controller/Files.pm:379 +msgid "Error: unable to find the file. Are you sure of your URL?" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:23 +msgid "Expiration:" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:27 +msgid "Expire at" +msgstr "" + +#: themes/default/templates/files.html.ep:32 +msgid "Expires at" +msgstr "" + +#: themes/default/templates/files.html.ep:12 +msgid "Export localStorage data" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:471 +msgid "File deleted" +msgstr "" + +#: themes/default/templates/files.html.ep:27 +msgid "File name" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:61 +msgid "Files" +msgstr "" + +#: themes/default/templates/index.html.ep:80 +msgid "Files deleted at first download" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:28 +msgid "Files sent at" +msgstr "" + +#: themes/default/templates/partial/invitations.js.ep:8 +msgid "Files sent in invitation XX1 by XX2" +msgstr "" + +#: themes/default/templates/partial/render.js.ep:8 +msgid "Get the file" +msgstr "" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:24 +msgid "Guest mail" +msgstr "" + +#. (ucfirst(stash('invitation') +#: themes/default/templates/invitations/notification_files_sent.mail.ep:6 +msgid "Hello %1," +msgstr "" + +#: themes/default/templates/invitations/invite.mail.ep:4 +msgid "Hello," +msgstr "" + +#: themes/default/templates/partial/mail.js.ep:35 +msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" +msgstr "" + +#: themes/default/templates/mail.html.ep:35 +msgid "Here's some files" +msgstr "" + +#: themes/default/templates/partial/invitations.js.ep:7 +msgid "Hide hidden invitations" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:25 +msgid "Hit Enter, then Ctrl+C to copy all the download links" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:24 +msgid "Hit Enter, then Ctrl+C to copy the download link" +msgstr "" + +#: themes/default/templates/about.html.ep:9 +msgid "How does it work?" +msgstr "" + +#: themes/default/templates/invitations/invite.html.ep:46 +msgid "How many days would you like the invitation to be valid?" +msgstr "" + +#: themes/default/templates/about.html.ep:16 +msgid "How to install the software on my server?" +msgstr "" + +#: themes/default/templates/about.html.ep:12 +msgid "How to report an illegal file?" +msgstr "" + +#: themes/default/templates/delays.html.ep:7 +msgid "If you choose a delay, the file will be deleted after that delay." +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 "" + +#: themes/default/templates/files.html.ep:14 +msgid "Import localStorage data" +msgstr "" + +#: themes/default/templates/index.html.ep:53 +msgid "Important: more information on delays" +msgstr "" + +#: themes/default/templates/delays.html.ep:5 +msgid "Information about delays" +msgstr "" + +#: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12 +msgid "Invert selection" +msgstr "" + +#. ($i->guest_mail, $url) +#: lib/Lufi/Controller/Invitation.pm:171 +msgid "Invitation resent to %1.
URL: %2" +msgstr "" + +#. ($invitation->guest_mail, $url) +#: lib/Lufi/Controller/Invitation.pm:87 +msgid "Invitation sent to %1.
URL: %2" +msgstr "" + +#: 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 "" + +#: themes/default/templates/partial/render.js.ep:6 +msgid "It seems that the key in your URL is incorrect. Please, verify your URL." +msgstr "" + +#: themes/default/templates/index.html.ep:12 +msgid "Javascript is disabled. You won't be able to use Lufi." +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:44 themes/default/templates/layouts/default.html.ep:46 themes/default/templates/layouts/default.html.ep:77 themes/default/templates/layouts/default.html.ep:79 +msgid "Language" +msgstr "" + +#: themes/default/templates/login.html.ep:15 +msgid "Login" +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91 +msgid "Logout" +msgstr "" + +#: themes/default/templates/about.html.ep:4 +msgid "Lufi is a free (as in free speech) file hosting software." +msgstr "" + +#: 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 "" + +#: themes/default/templates/files.html.ep:34 +msgid "Mail" +msgstr "" + +#: 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" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:5 themes/default/templates/layouts/default.html.ep:37 themes/default/templates/layouts/default.html.ep:70 +msgid "My invitations" +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 "" + +#: themes/default/templates/index.html.ep:115 +msgid "Name of the zip file" +msgstr "" + +#. (format_bytes($json->{size}) +#: lib/Lufi/Controller/Files.pm:108 +msgid "No enough space available on the server for this file (size: %1)." +msgstr "" + +#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28 +msgid "No expiration delay" +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 "" + +#: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 +msgid "Password" +msgstr "" + +#. (config('contact') +#: themes/default/templates/about.html.ep:13 +msgid "Please contact the administrator: %1" +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" +msgstr "" + +#: themes/default/templates/files.html.ep:13 +msgid "Purge expired files from localStorage" +msgstr "" + +#: themes/default/templates/invitations/notification_files_sent.mail.ep:20 +msgid "Regards," +msgstr "" + +#: themes/default/templates/invitations/invite.mail.ep:15 +msgid "Regards." +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:31 themes/default/templates/layouts/default.html.ep:64 +msgid "Report file" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:15 +msgid "Resend invitation mail" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:9 +msgid "Rows in purple mean that the invitations have expired." +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:26 +msgid "Send all links by email" +msgstr "" + +#: themes/default/templates/invitations/invite.html.ep:50 +msgid "Send the invitation" +msgstr "" + +#: themes/default/templates/mail.html.ep:46 +msgid "Send with this server" +msgstr "" + +#: themes/default/templates/mail.html.ep:47 +msgid "Send with your own mail software" +msgstr "" + +#: 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 "" + +#. (url_for('/') +#: themes/default/templates/partial/mail.js.ep:48 +msgid "Share your files in total privacy on %1" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9 +msgid "Show hidden invitations" +msgstr "" + +#: themes/default/templates/partial/render.js.ep:11 +msgid "Show zip content" +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17 +msgid "Signin" +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 "" + +#: themes/default/templates/invitations/exception.html.ep:7 +msgid "Sorry, your invitation has expired or has been deleted." +msgstr "" + +#. ($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 "" + +#. ($invitation->ldap_user_mail) +#: lib/Lufi/Controller/Invitation.pm:276 +msgid "The URLs of your files have been sent by email to %1." +msgstr "" + +#: 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 "" + +#: 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 "" + +#: themes/default/templates/partial/files.js.ep:11 +msgid "The data has been successfully imported." +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:73 +msgid "The email body can't be empty." +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:72 +msgid "The email subject can't be empty." +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 "" + +#: lib/Lufi/Controller/Files.pm:468 +msgid "The file has already been deleted" +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 "" + +#. (join(', ', @bad) +#: lib/Lufi/Controller/Mail.pm:68 +msgid "The following email addresses are not valid: %1" +msgstr "" + +#. ($guest_mail) +#: lib/Lufi/Controller/Invitation.pm:48 +msgid "The guest email address (%1) is unvalid." +msgstr "" + +#. ($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 "" + +#. ($i->token) +#: lib/Lufi/Controller/Invitation.pm:130 +msgid "The invitation %1 has been deleted." +msgstr "" + +#. (stash('user_mail') +#: themes/default/templates/invitations/invite.html.ep:34 +msgid "The invitation mail will be send from your email address (%1)." +msgstr "" + +#: themes/default/templates/partial/index.js.ep:16 +msgid "The link(s) has been copied to your clipboard" +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 "" + +#. (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 "" + +#: lib/Lufi/Controller/Mail.pm:97 +msgid "The mail has been sent." +msgstr "" + +#: themes/default/templates/about.html.ep:15 +msgid "The original (and only for now) author is Luc Didry." +msgstr "" + +#: 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 "" + +#: lib/Lufi/Controller/Files.pm:295 +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 "" + +#. (stash('expires') +#: themes/default/templates/invitations/invite.mail.ep:13 +msgid "This invitation is valid until %1." +msgstr "" + +#: 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 "" + +#: themes/default/templates/invitations/my_invitations.html.ep:25 +msgid "URL" +msgstr "" + +#: 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:439 +msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." +msgstr "" + +#. ($short) +#: lib/Lufi/Controller/Files.pm:429 +msgid "Unable to get counter for %1. The token is invalid." +msgstr "" + +#. ($short) +#: lib/Lufi/Controller/Files.pm:449 +msgid "Unable to get counter for %1. You are not authenticated." +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66 +msgid "Upload files" +msgstr "" + +#: themes/default/templates/index.html.ep:145 +msgid "Upload generated zip file" +msgstr "" + +#: themes/default/templates/files.html.ep:31 +msgid "Uploaded at" +msgstr "" + +#: themes/default/templates/index.html.ep:153 +msgid "Uploaded files" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:30 +msgid "Websocket communication error" +msgstr "" + +#: themes/default/templates/about.html.ep:3 +msgid "What is Lufi?" +msgstr "" + +#: themes/default/templates/about.html.ep:14 +msgid "Who wrote this software?" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:13 +msgid "XXX file has been added to upload queue." +msgstr "" + +#: 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 "" + +#: 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 "" + +#: 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 "" + +#: 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 "" + +#: 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." +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:71 +msgid "You must give email addresses." +msgstr "" + +#: 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 "" + +#: lib/Lufi/Controller/Files.pm:351 +msgid "Your password is not valid. Please refresh the page to retry." +msgstr "" + +#: themes/default/templates/partial/render.js.ep:12 +msgid "Zip content:" +msgstr "" + +#. (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 "" + +#. (format_bytes($keys[$i]) +#: themes/default/templates/delays.html.ep:22 +msgid "between %1 and %2, the file will be kept forever." +msgstr "" + +#: themes/default/templates/partial/mail.js.ep:42 +msgid "deadline: " +msgstr "" + +#: themes/default/templates/partial/invitations.js.ep:5 +msgid "expires on XXX" +msgstr "" + +#. (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 "" + +#. (format_bytes($keys[$i]) +#: themes/default/templates/delays.html.ep:28 +msgid "for %1 and more, the file will be kept forever." +msgstr "" + +#: themes/default/templates/index.html.ep:3 +msgid "no time limit" +msgstr "" + +#: themes/default/templates/index.html.ep:124 +msgid "or" +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 "" From d7a0b5d33735d884a74320eb5cc7c44c28f98569 Mon Sep 17 00:00:00 2001 From: Francesc Date: Tue, 31 Dec 2019 06:44:51 +0000 Subject: [PATCH 35/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Catalan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 67.4% (126 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/ca/ --- themes/default/lib/Lufi/I18N/ca.po | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ca.po b/themes/default/lib/Lufi/I18N/ca.po index 95f3347..d22c899 100644 --- a/themes/default/lib/Lufi/I18N/ca.po +++ b/themes/default/lib/Lufi/I18N/ca.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2020-01-01 17:14+0000\n" +"Last-Translator: Francesc \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -127,7 +127,7 @@ msgstr "Token CSRF incorrect." #: themes/default/templates/partial/render.js.ep:5 msgid "Click here to refresh the page and restart the download." -msgstr "Premeu aquí per tal de refrescar la pàgina i reiniciar la descàrrega" +msgstr "Premeu aquí per tal de refrescar la pàgina i reiniciar la descàrrega." #: themes/default/templates/invitations/invite.mail.ep:8 msgid "Click on the following URL to upload files on Lufi:" @@ -135,7 +135,7 @@ msgstr "" #: themes/default/templates/index.html.ep:126 msgid "Click to open the file browser" -msgstr "Premeu per obrir la selecció de fitxer." +msgstr "Premeu per obrir el navegador de fitxers" #: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 msgid "Close" @@ -235,7 +235,7 @@ msgstr "" #: themes/default/templates/index.html.ep:122 msgid "Drop files here" -msgstr "Deixeu anar aquí fitxers." +msgstr "Deixeu anar aquí fitxers" #: themes/default/templates/invitations/invite.html.ep:40 msgid "Email address of your guest" @@ -477,7 +477,7 @@ msgstr "" #. (format_bytes($json->{size}) #: lib/Lufi/Controller/Files.pm:108 msgid "No enough space available on the server for this file (size: %1)." -msgstr "No hi ha prou espai al servidor per a aquest fitxer (mida: %1)" +msgstr "No hi ha prou espai al servidor per a aquest fitxer (mida: %1)." #: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28 msgid "No expiration delay" @@ -522,7 +522,7 @@ msgstr "Privacitat" #: themes/default/templates/files.html.ep:13 msgid "Purge expired files from localStorage" -msgstr "Netegeu els fitxers expirats de l'emmagatzematge local." +msgstr "Netegeu els fitxers expirats de l'emmagatzematge local" #: themes/default/templates/invitations/notification_files_sent.mail.ep:20 msgid "Regards," @@ -605,7 +605,7 @@ msgstr "" #: lib/Lufi/Controller/Files.pm:82 msgid "Sorry, uploading is disabled." -msgstr "Disculpeu, les pujades estan deshabilitades" +msgstr "Disculpeu, les pujades estan deshabilitades." #: themes/default/templates/invitations/exception.html.ep:7 msgid "Sorry, your invitation has expired or has been deleted." @@ -629,7 +629,7 @@ msgid "" "(what kind of file it is: video, text, etc.)." msgstr "" "L'administrador només pot veure el nom del fitxer, la seva mida i el seu\n" -"mimetype (quina mena de fitxer és: vídeo, text, etc.)" +"mimetype (quina mena de fitxer és: vídeo, text, etc.)." #: lib/Lufi/Controller/Mail.pm:53 msgid "" @@ -767,7 +767,7 @@ msgstr "" #: themes/default/templates/partial/index.js.ep:17 msgid "Unable to copy the link(s) to your clipboard" -msgstr "No s'han pogut copiar l'enllaç o els enllaços al porta-retalls." +msgstr "No s'han pogut copiar l'enllaç o els enllaços al porta-retalls" #. ($short) #: lib/Lufi/Controller/Files.pm:439 From 5c974d47a8b156edc472da53e3b0d014fa258f17 Mon Sep 17 00:00:00 2001 From: Filip Bengtsson Date: Tue, 31 Dec 2019 16:06:51 +0000 Subject: [PATCH 36/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Swedish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 58.3% (109 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/sv/ --- themes/default/lib/Lufi/I18N/sv.po | 227 ++++++++++++++++------------- 1 file changed, 123 insertions(+), 104 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/sv.po b/themes/default/lib/Lufi/I18N/sv.po index 3f8501e..4fab59f 100644 --- a/themes/default/lib/Lufi/I18N/sv.po +++ b/themes/default/lib/Lufi/I18N/sv.po @@ -7,19 +7,22 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-01-01 17:14+0000\n" +"Last-Translator: Filip Bengtsson \n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" #. ($delay) #. (max_delay) #: themes/default/templates/index.html.ep:56 themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:66 msgid "%1 days" -msgstr "" +msgstr "%1 dagar" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:2 @@ -34,44 +37,44 @@ msgstr "" #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:4 msgid "%1 sent you files" -msgstr "" +msgstr "% har skickat filer till dig" #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:8 msgid "%1 used your invitation to send you files:" -msgstr "" +msgstr "%1 utnyttjade din inbjudan för att skicka filer till dig:" #: 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 klockan %T" #: themes/default/templates/partial/index.js.ep:27 msgid "(max size: XXX)" -msgstr "" +msgstr "(största tillåtna storlek: XXX)" #: themes/default/templates/index.html.ep:5 msgid "1 year" -msgstr "" +msgstr "1 år" #: themes/default/templates/index.html.ep:4 themes/default/templates/index.html.ep:65 msgid "24 hours" -msgstr "" +msgstr "24 timmar" #: themes/default/templates/partial/mail.js.ep:40 msgid ":" -msgstr "" +msgstr ":" #: themes/default/templates/render.html.ep:42 msgid "Abort" -msgstr "" +msgstr "Avbryt" #: themes/default/templates/layouts/default.html.ep:53 themes/default/templates/layouts/default.html.ep:86 msgid "About" -msgstr "" +msgstr "Om" #: themes/default/templates/index.html.ep:107 msgid "Add a password to file(s)" -msgstr "" +msgstr "Lösenordsskydda filerna" #: themes/default/templates/mail.html.ep:16 msgid "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited." @@ -79,11 +82,11 @@ msgstr "" #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" -msgstr "" +msgstr "Är du säker på att du vill radera de markerade inbjudningarna?" #: themes/default/templates/partial/invitations.js.ep:4 msgid "Are you sure you want to resend the invitation mail for the selected invitations?" -msgstr "" +msgstr "Är du säker på att du vill skicka ut de markerade inbjudningarna igen?" #: 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." @@ -96,19 +99,19 @@ msgstr "" #: themes/default/templates/about.html.ep:20 msgid "Back to homepage" -msgstr "" +msgstr "Tillbaka till hemsidan" #: lib/Lufi/Controller/Mail.pm:25 msgid "Bad CSRF token!" -msgstr "" +msgstr "Ogiltig CSRF-token!" #: lib/Lufi/Controller/Auth.pm:27 lib/Lufi/Controller/Auth.pm:49 msgid "Bad CSRF token." -msgstr "" +msgstr "Ogiltig CSRF-token." #: themes/default/templates/partial/render.js.ep:5 msgid "Click here to refresh the page and restart the download." -msgstr "" +msgstr "Klicka här för att uppdatera sidan och starta om nerladdningen." #: themes/default/templates/invitations/invite.mail.ep:8 msgid "Click on the following URL to upload files on Lufi:" @@ -116,67 +119,67 @@ msgstr "" #: themes/default/templates/index.html.ep:126 msgid "Click to open the file browser" -msgstr "" +msgstr "Klicka för att öppna filhanteraren" #: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 msgid "Close" -msgstr "" +msgstr "Stäng" #: themes/default/templates/mail.html.ep:23 msgid "Comma-separated email addresses" -msgstr "" +msgstr "E-postadresser åtskilda av kommatecken" #: themes/default/templates/index.html.ep:140 msgid "Compressing zip file…" -msgstr "" +msgstr "Komprimerar ZIP-arkiv …" #: themes/default/templates/partial/index.js.ep:15 msgid "Copy all links to clipboard" -msgstr "" +msgstr "Kopiera alla länkar till urklipp" #: themes/default/templates/partial/index.js.ep:18 msgid "Copy to clipboard" -msgstr "" +msgstr "Kopiera till urklipp" #: lib/Lufi/Controller/Files.pm:507 msgid "Could not delete the file. You are not authenticated." -msgstr "" +msgstr "Kunde inte radera filen. Du är inte behörig." #: lib/Lufi/Controller/Files.pm:489 msgid "Could not find the file. Are you sure of the URL and the token?" -msgstr "" +msgstr "Kunde inte hitta filen. Är du säker på att det är rätt länk och token?" #: lib/Lufi/Controller/Files.pm:400 msgid "Could not find the file. Are you sure of the URL?" -msgstr "" +msgstr "Kunde inte hitta filen. Är du säker på att det är rätt länk?" #: themes/default/templates/files.html.ep:29 msgid "Counter" -msgstr "" +msgstr "Räknare" #: themes/default/templates/index.html.ep:100 msgid "Create a zip archive with the files before uploading?" -msgstr "" +msgstr "Vill du skapa göra filerna till ett ZIP-arkiv innan de laddas upp?" #: themes/default/templates/invitations/my_invitations.html.ep:26 msgid "Created at" -msgstr "" +msgstr "Skapad" #: themes/default/templates/invitations/my_invitations.html.ep:14 msgid "Delete" -msgstr "" +msgstr "Radera" #: themes/default/templates/files.html.ep:30 themes/default/templates/index.html.ep:90 msgid "Delete at first download?" -msgstr "" +msgstr "Radera efter första nerladdningen" #: themes/default/templates/files.html.ep:19 msgid "Delete selected files" -msgstr "" +msgstr "Radera markerade filer" #: themes/default/templates/files.html.ep:33 themes/default/templates/partial/index.js.ep:19 msgid "Deletion link" -msgstr "" +msgstr "Länk för radering" #: 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." @@ -184,15 +187,15 @@ msgstr "" #: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28 msgid "Download" -msgstr "" +msgstr "Ladda ner" #: themes/default/templates/partial/render.js.ep:4 msgid "Download aborted." -msgstr "" +msgstr "Nerladdning avbruten." #: themes/default/templates/files.html.ep:28 themes/default/templates/partial/index.js.ep:20 msgid "Download link" -msgstr "" +msgstr "Nerladdningslänk" #: 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." @@ -200,27 +203,27 @@ msgstr "" #: themes/default/templates/index.html.ep:122 msgid "Drop files here" -msgstr "" +msgstr "Släpp filer här" #: themes/default/templates/invitations/invite.html.ep:40 msgid "Email address of your guest" -msgstr "" +msgstr "E-postadress till din gäst" #: themes/default/templates/mail.html.ep:39 msgid "Email body" -msgstr "" +msgstr "E-postmeddelande" #: themes/default/templates/mail.html.ep:31 msgid "Email subject" -msgstr "" +msgstr "Ämnesrad för e-post" #: themes/default/templates/mail.html.ep:25 themes/default/templates/mail.html.ep:27 msgid "Emails" -msgstr "" +msgstr "E-postmeddelanden" #: themes/default/templates/partial/index.js.ep:22 msgid "Encrypting part XX1 of XX2" -msgstr "" +msgstr "Krypterar del XX1 av XX1" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." @@ -248,23 +251,23 @@ msgstr "" #: themes/default/templates/files.html.ep:12 msgid "Export localStorage data" -msgstr "" +msgstr "Exportera localStorage-data" #: lib/Lufi/Controller/Files.pm:471 msgid "File deleted" -msgstr "" +msgstr "Fil raderad" #: themes/default/templates/files.html.ep:27 msgid "File name" -msgstr "" +msgstr "Filnamn" #: themes/default/templates/invitations/my_invitations.html.ep:61 msgid "Files" -msgstr "" +msgstr "Filer" #: themes/default/templates/index.html.ep:80 msgid "Files deleted at first download" -msgstr "" +msgstr "Filer raderade efter första nerladdning" #: themes/default/templates/invitations/my_invitations.html.ep:28 msgid "Files sent at" @@ -281,6 +284,9 @@ msgstr "" #: themes/default/templates/about.html.ep:18 msgid "Get the source code on the official repository or on its Github mirror" msgstr "" +"Hämta källkoden från det officiella arkivet eller från spegelsidan på Github" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -289,47 +295,51 @@ msgstr "" #. (ucfirst(stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:6 msgid "Hello %1," -msgstr "" +msgstr "Hej %1," #: themes/default/templates/invitations/invite.mail.ep:4 msgid "Hello," -msgstr "" +msgstr "Hej," #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" msgstr "" +"Hej,\\n" +"\\n" +"Här är några filer jag vill dela med dig:\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" -msgstr "" +msgstr "Här är några filer" #: themes/default/templates/partial/invitations.js.ep:7 msgid "Hide hidden invitations" -msgstr "" +msgstr "Visa inte dolda inbjudningar" #: themes/default/templates/partial/index.js.ep:25 msgid "Hit Enter, then Ctrl+C to copy all the download links" msgstr "" +"Tryck Enter och sedan Crtl+C för att kopiera samtliga nerladdningslänkar" #: themes/default/templates/partial/index.js.ep:24 msgid "Hit Enter, then Ctrl+C to copy the download link" -msgstr "" +msgstr "Tryck Enter och sedan Crtl+C för att kopiera nerladdningslänken" #: themes/default/templates/about.html.ep:9 msgid "How does it work?" -msgstr "" +msgstr "Hur fungerar det?" #: themes/default/templates/invitations/invite.html.ep:46 msgid "How many days would you like the invitation to be valid?" -msgstr "" +msgstr "Hur många dagar vill du att inbjudningen ska gälla?" #: themes/default/templates/about.html.ep:16 msgid "How to install the software on my server?" -msgstr "" +msgstr "Hur kan jag installera den här mjukvaran på min server?" #: themes/default/templates/about.html.ep:12 msgid "How to report an illegal file?" -msgstr "" +msgstr "Kan jag anmäla en olaglig fil?" #: themes/default/templates/delays.html.ep:7 msgid "If you choose a delay, the file will be deleted after that delay." @@ -341,15 +351,15 @@ msgstr "" #: themes/default/templates/files.html.ep:14 msgid "Import localStorage data" -msgstr "" +msgstr "Importera localStorage-data" #: themes/default/templates/index.html.ep:53 msgid "Important: more information on delays" -msgstr "" +msgstr "Viktigt: mer information om fördröjningar" #: themes/default/templates/delays.html.ep:5 msgid "Information about delays" -msgstr "" +msgstr "Information om fördröjningar" #: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12 msgid "Invert selection" @@ -367,7 +377,7 @@ msgstr "" #: 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 "Bjud in en gäst" #: themes/default/templates/partial/render.js.ep:6 msgid "It seems that the key in your URL is incorrect. Please, verify your URL." @@ -375,19 +385,19 @@ msgstr "" #: themes/default/templates/index.html.ep:12 msgid "Javascript is disabled. You won't be able to use Lufi." -msgstr "" +msgstr "Javascript är inte påslaget, så du kommer inte kunna använda Lufi." #: themes/default/templates/layouts/default.html.ep:44 themes/default/templates/layouts/default.html.ep:46 themes/default/templates/layouts/default.html.ep:77 themes/default/templates/layouts/default.html.ep:79 msgid "Language" -msgstr "" +msgstr "Språk" #: themes/default/templates/login.html.ep:15 msgid "Login" -msgstr "" +msgstr "Logga in" #: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91 msgid "Logout" -msgstr "" +msgstr "Logga ut" #: themes/default/templates/about.html.ep:4 msgid "Lufi is a free (as in free speech) file hosting software." @@ -399,15 +409,15 @@ msgstr "" #: themes/default/templates/files.html.ep:34 msgid "Mail" -msgstr "" +msgstr "E-post" #: 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" -msgstr "" +msgstr "Mina filer" #: themes/default/templates/invitations/my_invitations.html.ep:5 themes/default/templates/layouts/default.html.ep:37 themes/default/templates/layouts/default.html.ep:70 msgid "My invitations" -msgstr "" +msgstr "Mina inbjudningar" #: 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." @@ -432,12 +442,12 @@ msgstr "" #: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 msgid "Password" -msgstr "" +msgstr "Lösenord" #. (config('contact') #: themes/default/templates/about.html.ep:13 msgid "Please contact the administrator: %1" -msgstr "" +msgstr "Kontakta gärna administratören: %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." @@ -453,47 +463,48 @@ msgstr "" #: themes/default/templates/files.html.ep:13 msgid "Purge expired files from localStorage" -msgstr "" +msgstr "Ta bort gamla filer från localStorage" #: themes/default/templates/invitations/notification_files_sent.mail.ep:20 msgid "Regards," -msgstr "" +msgstr "Med vänliga hälsningar," #: themes/default/templates/invitations/invite.mail.ep:15 msgid "Regards." -msgstr "" +msgstr "Med vänliga hälsningar." #: themes/default/templates/layouts/default.html.ep:31 themes/default/templates/layouts/default.html.ep:64 msgid "Report file" -msgstr "" +msgstr "Anmäl fil" #: themes/default/templates/invitations/my_invitations.html.ep:15 msgid "Resend invitation mail" -msgstr "" +msgstr "Skicka inbjudning igen" #: themes/default/templates/invitations/my_invitations.html.ep:9 msgid "Rows in purple mean that the invitations have expired." -msgstr "" +msgstr "Lila rad betyder att inbjudningen har gått ut." #: themes/default/templates/files.html.ep:9 msgid "Rows in red mean that the files have expired and are no longer available." msgstr "" +"Röd rad betyder att filen har gått ut och inte finns tillgänglig längre." #: themes/default/templates/partial/index.js.ep:26 msgid "Send all links by email" -msgstr "" +msgstr "Skicka alla länkar via e-post" #: themes/default/templates/invitations/invite.html.ep:50 msgid "Send the invitation" -msgstr "" +msgstr "Skicka inbjudningen" #: themes/default/templates/mail.html.ep:46 msgid "Send with this server" -msgstr "" +msgstr "Skicka från den här servern" #: themes/default/templates/mail.html.ep:47 msgid "Send with your own mail software" -msgstr "" +msgstr "Skicka från din egen e-posttjänst" #: 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." @@ -506,7 +517,7 @@ msgstr "" #: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9 msgid "Show hidden invitations" -msgstr "" +msgstr "Visa dolda inbjudningar" #: themes/default/templates/partial/render.js.ep:11 msgid "Show zip content" @@ -514,11 +525,13 @@ msgstr "" #: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17 msgid "Signin" -msgstr "" +msgstr "Logga in" #: 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 "" +"Den här inbjudan existerar tyvärr inte. Är du säker på att du har kommit " +"till rätt adress?" #: themes/default/templates/index.html.ep:46 msgid "Sorry, the uploading is currently disabled. Please try again later." @@ -545,22 +558,26 @@ msgstr "" #: 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 "" +"Administratören kan endast se filens namn, storlek och mime-typ (om det är " +"en video, textfil eller något annat)." #: 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 "" +"E-postmeddelandet måste innehålla minst en länk till en fil som lagras på " +"den här instansen." #: themes/default/templates/partial/files.js.ep:11 msgid "The data has been successfully imported." -msgstr "" +msgstr "All data har importerats." #: lib/Lufi/Controller/Mail.pm:73 msgid "The email body can't be empty." -msgstr "" +msgstr "E-postmeddelandet får inte lämnas tomt." #: lib/Lufi/Controller/Mail.pm:72 msgid "The email subject can't be empty." -msgstr "" +msgstr "Ämnesraden får inte lämnas tom." #. ($expire_at, $max_expire_at) #: lib/Lufi/Controller/Invitation.pm:51 @@ -578,7 +595,7 @@ msgstr "" #. (join(', ', @bad) #: lib/Lufi/Controller/Mail.pm:68 msgid "The following email addresses are not valid: %1" -msgstr "" +msgstr "Följande e-postadresser är inte giltiga: %1" #. ($guest_mail) #: lib/Lufi/Controller/Invitation.pm:48 @@ -629,6 +646,8 @@ msgstr "" #: lib/Lufi/Controller/Files.pm:295 msgid "This file has been deactivated by the admins. Contact them to know why." msgstr "" +"Den här filen har avaktiverats av administratörerna. Kontakta dem för att få " +"veta anledningen." #: themes/default/templates/invitations/my_invitations.html.ep:46 themes/default/templates/partial/invitations.js.ep:6 msgid "This invitation is normally hidden" @@ -649,11 +668,11 @@ msgstr "" #: themes/default/templates/invitations/my_invitations.html.ep:25 msgid "URL" -msgstr "" +msgstr "Länk" #: themes/default/templates/partial/index.js.ep:17 msgid "Unable to copy the link(s) to your clipboard" -msgstr "" +msgstr "Kunde inte kopiera länkarna till urklipp" #. ($short) #: lib/Lufi/Controller/Files.pm:439 @@ -663,16 +682,16 @@ msgstr "" #. ($short) #: lib/Lufi/Controller/Files.pm:429 msgid "Unable to get counter for %1. The token is invalid." -msgstr "" +msgstr "Kunde inte ladda in räknaren för %1. Ogiltig token." #. ($short) #: lib/Lufi/Controller/Files.pm:449 msgid "Unable to get counter for %1. You are not authenticated." -msgstr "" +msgstr "Kunde inte ladda in räknaren för %1. Du är inte behörig." #: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66 msgid "Upload files" -msgstr "" +msgstr "Ladda upp filer" #: themes/default/templates/index.html.ep:145 msgid "Upload generated zip file" @@ -680,11 +699,11 @@ msgstr "" #: themes/default/templates/files.html.ep:31 msgid "Uploaded at" -msgstr "" +msgstr "Uppladdad" #: themes/default/templates/index.html.ep:153 msgid "Uploaded files" -msgstr "" +msgstr "Uppladdade filer" #: themes/default/templates/partial/index.js.ep:30 msgid "Websocket communication error" @@ -692,15 +711,15 @@ msgstr "" #: themes/default/templates/about.html.ep:3 msgid "What is Lufi?" -msgstr "" +msgstr "Vad är Lufi?" #: themes/default/templates/about.html.ep:14 msgid "Who wrote this software?" -msgstr "" +msgstr "Vem skrev den här mjukvaran?" #: themes/default/templates/partial/index.js.ep:13 msgid "XXX file has been added to upload queue." -msgstr "" +msgstr "Filen XXX har lagts till i uppladdningskön." #: 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." @@ -732,11 +751,11 @@ msgstr "" #: themes/default/templates/logout.html.ep:14 msgid "You have been successfully logged out." -msgstr "" +msgstr "Du har loggats ut." #: lib/Lufi/Controller/Mail.pm:71 msgid "You must give email addresses." -msgstr "" +msgstr "Du måste uppge en e-postadress." #: 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)." @@ -771,7 +790,7 @@ msgstr "" #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" -msgstr "" +msgstr "Går ut den XXX" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:26 @@ -785,13 +804,13 @@ msgstr "" #: themes/default/templates/index.html.ep:3 msgid "no time limit" -msgstr "" +msgstr "ingen tidsbegränsning" #: themes/default/templates/index.html.ep:124 msgid "or" -msgstr "" +msgstr "eller" #. ($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 "" +msgstr "— %1 (%2), som går ut den %3" From c7ef2fa5b3a1061cbcf117408d91147722c70b34 Mon Sep 17 00:00:00 2001 From: Filip Bengtsson Date: Thu, 2 Jan 2020 14:16:47 +0000 Subject: [PATCH 37/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Swedish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 70.1% (131 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/sv/ --- themes/default/lib/Lufi/I18N/sv.po | 48 ++++++++++++++++++------------ 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/sv.po b/themes/default/lib/Lufi/I18N/sv.po index 4fab59f..86fd43b 100644 --- a/themes/default/lib/Lufi/I18N/sv.po +++ b/themes/default/lib/Lufi/I18N/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-01-01 17:14+0000\n" +"PO-Revision-Date: 2020-01-03 22:14+0000\n" "Last-Translator: Filip Bengtsson \n" "Language-Team: Swedish \n" @@ -27,12 +27,12 @@ msgstr "%1 dagar" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:2 msgid "%1 invites you to send him/her files" -msgstr "" +msgstr "%1 bjuder in dig att skicka filer till honom eller henne" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:6 msgid "%1 invites you to send him/her files through Lufi." -msgstr "" +msgstr "%1 bjuder in dig att skicka filer till honom eller henne via Lufi." #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:4 @@ -79,6 +79,8 @@ msgstr "Lösenordsskydda filerna" #: 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 "" +"Det är inte tillåtet att infoga länkar i ämnesraden eller meddelandet som " +"inte går till den här Lufi-instansen." #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" @@ -91,11 +93,15 @@ msgstr "Är du säker på att du vill skicka ut de markerade inbjudningarna igen #: 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 "" +"Du kan installera Lufi på din egen server eftersom det är en fri mjukvara " +"publicerad under licensen AGPLv3. Ta en titt på wikin för att se hur." #. (stash('nbslices') #: themes/default/templates/partial/render.js.ep:9 msgid "Asking for file part XX1 of %1" -msgstr "" +msgstr "Frågar efter del XX1 av filen %1" #: themes/default/templates/about.html.ep:20 msgid "Back to homepage" @@ -115,7 +121,7 @@ msgstr "Klicka här för att uppdatera sidan och starta om nerladdningen." #: themes/default/templates/invitations/invite.mail.ep:8 msgid "Click on the following URL to upload files on Lufi:" -msgstr "" +msgstr "Klicka på följande länk för att ladda upp filer till Lufi:" #: themes/default/templates/index.html.ep:126 msgid "Click to open the file browser" @@ -184,6 +190,9 @@ msgstr "Länk för radering" #: 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 "" +"Oroa dig inte! Om en användare börjar ladda ner en fil innan dess " +"utgångsdatum kommer hela filen kunna laddas ner, även om den skulle gå ut " +"under tiden." #: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28 msgid "Download" @@ -227,27 +236,27 @@ msgstr "Krypterar del XX1 av XX1" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "" +msgstr "Fel: filen fanns men har raderats nu." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "" +msgstr "Fel: hela filen har inte överförts." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" -msgstr "" +msgstr "Fel: kunde inte hitta filen. Är du säker på att du har rätt länk?" #: themes/default/templates/partial/index.js.ep:23 msgid "Expiration:" -msgstr "" +msgstr "Går ut:" #: themes/default/templates/invitations/my_invitations.html.ep:27 msgid "Expire at" -msgstr "" +msgstr "Förfaller" #: themes/default/templates/files.html.ep:32 msgid "Expires at" -msgstr "" +msgstr "Förfaller" #: themes/default/templates/files.html.ep:12 msgid "Export localStorage data" @@ -271,15 +280,15 @@ msgstr "Filer raderade efter första nerladdning" #: themes/default/templates/invitations/my_invitations.html.ep:28 msgid "Files sent at" -msgstr "" +msgstr "Filer skickade" #: themes/default/templates/partial/invitations.js.ep:8 msgid "Files sent in invitation XX1 by XX2" -msgstr "" +msgstr "Filer skickade i inbjudan XX1 av XX2" #: themes/default/templates/partial/render.js.ep:8 msgid "Get the file" -msgstr "" +msgstr "Hämta filen" #: themes/default/templates/about.html.ep:18 msgid "Get the source code on the official repository or on its Github mirror" @@ -290,7 +299,7 @@ msgstr "" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" -msgstr "" +msgstr "E-postadress till gäst" #. (ucfirst(stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:6 @@ -343,7 +352,7 @@ msgstr "Kan jag anmäla en olaglig fil?" #: themes/default/templates/delays.html.ep:7 msgid "If you choose a delay, the file will be deleted after that delay." -msgstr "" +msgstr "Om du anger en fördröjning kommer filen raderas när den tiden gått ut." #: 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." @@ -363,17 +372,17 @@ msgstr "Information om fördröjningar" #: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12 msgid "Invert selection" -msgstr "" +msgstr "Omvänt val" #. ($i->guest_mail, $url) #: lib/Lufi/Controller/Invitation.pm:171 msgid "Invitation resent to %1.
URL: %2" -msgstr "" +msgstr "Inbjudan har skickats till %1 igen.
Länk: %2" #. ($invitation->guest_mail, $url) #: lib/Lufi/Controller/Invitation.pm:87 msgid "Invitation sent to %1.
URL: %2" -msgstr "" +msgstr "Inbjudan har skickats till %1.
Länk: %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" @@ -382,6 +391,7 @@ msgstr "Bjud in en gäst" #: themes/default/templates/partial/render.js.ep:6 msgid "It seems that the key in your URL is incorrect. Please, verify your URL." msgstr "" +"Det verkar som att nyckeln i adressen är ogiltig. Kontrollera gärna din länk." #: themes/default/templates/index.html.ep:12 msgid "Javascript is disabled. You won't be able to use Lufi." From 10810effd7bcaa9121264997994a93b203488577 Mon Sep 17 00:00:00 2001 From: Filip Bengtsson Date: Sat, 4 Jan 2020 16:37:20 +0000 Subject: [PATCH 38/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Swedish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 84.0% (157 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/sv/ --- themes/default/lib/Lufi/I18N/sv.po | 53 +++++++++++++++++++----------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/sv.po b/themes/default/lib/Lufi/I18N/sv.po index 86fd43b..56f3132 100644 --- a/themes/default/lib/Lufi/I18N/sv.po +++ b/themes/default/lib/Lufi/I18N/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-01-03 22:14+0000\n" +"PO-Revision-Date: 2020-01-05 17:14+0000\n" "Last-Translator: Filip Bengtsson \n" "Language-Team: Swedish \n" @@ -435,16 +435,18 @@ msgstr "" #: themes/default/templates/index.html.ep:115 msgid "Name of the zip file" -msgstr "" +msgstr "ZIP-arkivets namn" #. (format_bytes($json->{size}) #: lib/Lufi/Controller/Files.pm:108 msgid "No enough space available on the server for this file (size: %1)." msgstr "" +"Servern har inte tillräckligt med ledigt utrymme för den här filen (storlek: " +"%1)." #: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28 msgid "No expiration delay" -msgstr "" +msgstr "Ingen utgångsfördröjning" #: 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." @@ -469,7 +471,7 @@ msgstr "" #: themes/default/templates/about.html.ep:5 msgid "Privacy" -msgstr "" +msgstr "Personuppgiftsskydd" #: themes/default/templates/files.html.ep:13 msgid "Purge expired files from localStorage" @@ -519,11 +521,13 @@ msgstr "Skicka från din egen e-posttjänst" #: 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 "" +"Överför del XX1 av XX2. Det kan ta en stund innan statsindikatorn börjar " +"röra sig." #. (url_for('/') #: themes/default/templates/partial/mail.js.ep:48 msgid "Share your files in total privacy on %1" -msgstr "" +msgstr "Dela dina filer helt skyddat med %1" #: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9 msgid "Show hidden invitations" @@ -531,7 +535,7 @@ msgstr "Visa dolda inbjudningar" #: themes/default/templates/partial/render.js.ep:11 msgid "Show zip content" -msgstr "" +msgstr "Visa ZIP-arkivets innehåll" #: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17 msgid "Signin" @@ -545,25 +549,27 @@ msgstr "" #: themes/default/templates/index.html.ep:46 msgid "Sorry, the uploading is currently disabled. Please try again later." -msgstr "" +msgstr "Uppladdning är inte tillåtet för tillfället. Försök gärna igen senare." #: lib/Lufi/Controller/Files.pm:82 msgid "Sorry, uploading is disabled." -msgstr "" +msgstr "Det går tyvärr inte att ladda upp för tillfället." #: themes/default/templates/invitations/exception.html.ep:7 msgid "Sorry, your invitation has expired or has been deleted." -msgstr "" +msgstr "Din inbjudan har antingen gått ut eller raderats." #. ($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 "" +"Din inbjudan har dessvärre gått ut eller raderats. Du kan kontakta %1 för " +"att få en ny inbjudan." #. ($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 "Länken till dina filer har skickats med e-post till %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.)." @@ -596,11 +602,13 @@ msgstr "" #: lib/Lufi/Controller/Files.pm:468 msgid "The file has already been deleted" -msgstr "" +msgstr "Filen har redan raderats" #: 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 "" +"Filerna krypteras innan de laddas upp till Lufi-serveren. Därför kan inte " +"ens serverns administratör se filens innehåll." #. (join(', ', @bad) #: lib/Lufi/Controller/Mail.pm:68 @@ -620,30 +628,31 @@ msgstr "" #. ($i->token) #: lib/Lufi/Controller/Invitation.pm:130 msgid "The invitation %1 has been deleted." -msgstr "" +msgstr "Inbjudan %1 har raderats." #. (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 "Inbjudan kommer skickas från din e-postadress (%1)." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" -msgstr "" +msgstr "Länkarna har kopierats till urklipp" #. (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 "" +"Länkarna till dina filer kommer skickas per e-post till %1 (%2) automatiskt" #. (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 "" +msgstr "Länkarna till dina filer kommer skickas till %1 automatiskt." #: lib/Lufi/Controller/Mail.pm:97 msgid "The mail has been sent." -msgstr "" +msgstr "E-postmeddelandet har skickats." #: themes/default/templates/about.html.ep:15 msgid "The original (and only for now) author is Luc Didry." @@ -666,7 +675,7 @@ msgstr "" #. (stash('expires') #: themes/default/templates/invitations/invite.mail.ep:13 msgid "This invitation is valid until %1." -msgstr "" +msgstr "Den här inbjudan är giltig tills %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:" @@ -688,6 +697,8 @@ msgstr "Kunde inte kopiera länkarna till urklipp" #: 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 "" +"Kunde inte hämta räknaren för %1 eftersom filen inte existerar. Den kommer " +"tas bort från ditt localStorage." #. ($short) #: lib/Lufi/Controller/Files.pm:429 @@ -705,7 +716,7 @@ msgstr "Ladda upp filer" #: themes/default/templates/index.html.ep:145 msgid "Upload generated zip file" -msgstr "" +msgstr "Ladda upp det genererade ZIP-arkivet" #: themes/default/templates/files.html.ep:31 msgid "Uploaded at" @@ -717,7 +728,7 @@ msgstr "Uppladdade filer" #: themes/default/templates/partial/index.js.ep:30 msgid "Websocket communication error" -msgstr "" +msgstr "Kommunikationsfel (websocket)" #: themes/default/templates/about.html.ep:3 msgid "What is Lufi?" @@ -738,10 +749,12 @@ msgstr "" #: 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 "" +"Du kan se en lista över dina filer genom att klicka på länken ”Mina filer” " +"längst upp till höger på den här sidan." #: lib/Lufi/Controller/Mail.pm:42 msgid "You can't add URLs that are not related to this instance." -msgstr "" +msgstr "Du kan inte lägga in länkar som inte går till den här instansen." #: 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." From 43e2883805afeecdbdcf318af16bb7741b9a0b57 Mon Sep 17 00:00:00 2001 From: Filip Bengtsson Date: Sat, 22 Feb 2020 20:28:08 +0000 Subject: [PATCH 39/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Swedish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 85.5% (160 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/sv/ --- themes/default/lib/Lufi/I18N/sv.po | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/sv.po b/themes/default/lib/Lufi/I18N/sv.po index 56f3132..605d91c 100644 --- a/themes/default/lib/Lufi/I18N/sv.po +++ b/themes/default/lib/Lufi/I18N/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-01-05 17:14+0000\n" +"PO-Revision-Date: 2020-02-23 21:08+0000\n" "Last-Translator: Filip Bengtsson \n" "Language-Team: Swedish \n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11\n" #. ($delay) #. (max_delay) @@ -209,6 +209,10 @@ msgstr "Nerladdningslänk" #: 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 "" +"Drag och släpp filerna på ytan eller skicka dem på det traditionella viset, " +"så kommer de buntas ihop, krypteras och skickas till servern. Du kommer få " +"två länkar per fil: en nerladdningslänk att ge till dem du vill dela filen " +"med och en länk för att radera filen, så att du kan ta bort den när du vill." #: themes/default/templates/index.html.ep:122 msgid "Drop files here" @@ -357,6 +361,8 @@ msgstr "Om du anger en fördröjning kommer filen raderas när den tiden gått u #: 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 "" +"Om du skickar meddelandet från den här servern måste länkarna skickas till " +"servern, vilket kan försämra skyddet av din identitet." #: themes/default/templates/files.html.ep:14 msgid "Import localStorage data" @@ -411,7 +417,7 @@ msgstr "Logga ut" #: themes/default/templates/about.html.ep:4 msgid "Lufi is a free (as in free speech) file hosting software." -msgstr "" +msgstr "Lufi är en fri (som i frihet) mjukvara för att dela filer." #: 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." From b04e06d488be193697b8eda28db3018ac0fdfb5c Mon Sep 17 00:00:00 2001 From: Alberto Teira Date: Thu, 5 Mar 2020 21:39:23 +0000 Subject: [PATCH 40/66] =?UTF-8?q?=F0=9F=8C=90=20Added=20translation=20usin?= =?UTF-8?q?g=20Weblate=20(Spanish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/default/lib/Lufi/I18N/es.po | 797 +++++++++++++++++++++++++++++ 1 file changed, 797 insertions(+) create mode 100644 themes/default/lib/Lufi/I18N/es.po diff --git a/themes/default/lib/Lufi/I18N/es.po b/themes/default/lib/Lufi/I18N/es.po new file mode 100644 index 0000000..8348fe6 --- /dev/null +++ b/themes/default/lib/Lufi/I18N/es.po @@ -0,0 +1,797 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. ($delay) +#. (max_delay) +#: themes/default/templates/index.html.ep:56 themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:66 +msgid "%1 days" +msgstr "" + +#. (stash('ldap_user') +#: themes/default/templates/invitations/invite.mail.ep:2 +msgid "%1 invites you to send him/her files" +msgstr "" + +#. (stash('ldap_user') +#: themes/default/templates/invitations/invite.mail.ep:6 +msgid "%1 invites you to send him/her files through Lufi." +msgstr "" + +#. (stash('invitation') +#: themes/default/templates/invitations/notification_files_sent.mail.ep:4 +msgid "%1 sent you files" +msgstr "" + +#. (stash('invitation') +#: themes/default/templates/invitations/notification_files_sent.mail.ep:8 +msgid "%1 used your invitation to send you files:" +msgstr "" + +#: 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 "" + +#: themes/default/templates/partial/index.js.ep:27 +msgid "(max size: XXX)" +msgstr "" + +#: themes/default/templates/index.html.ep:5 +msgid "1 year" +msgstr "" + +#: themes/default/templates/index.html.ep:4 themes/default/templates/index.html.ep:65 +msgid "24 hours" +msgstr "" + +#: themes/default/templates/partial/mail.js.ep:40 +msgid ":" +msgstr "" + +#: themes/default/templates/render.html.ep:42 +msgid "Abort" +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:53 themes/default/templates/layouts/default.html.ep:86 +msgid "About" +msgstr "" + +#: themes/default/templates/index.html.ep:107 +msgid "Add a password to file(s)" +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 "" + +#: themes/default/templates/partial/invitations.js.ep:3 +msgid "Are you sure you want to delete the selected invitations?" +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 "" + +#. (stash('nbslices') +#: themes/default/templates/partial/render.js.ep:9 +msgid "Asking for file part XX1 of %1" +msgstr "" + +#: themes/default/templates/about.html.ep:20 +msgid "Back to homepage" +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:25 +msgid "Bad CSRF token!" +msgstr "" + +#: lib/Lufi/Controller/Auth.pm:27 lib/Lufi/Controller/Auth.pm:49 +msgid "Bad CSRF token." +msgstr "" + +#: 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:" +msgstr "" + +#: themes/default/templates/index.html.ep:126 +msgid "Click to open the file browser" +msgstr "" + +#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 +msgid "Close" +msgstr "" + +#: themes/default/templates/mail.html.ep:23 +msgid "Comma-separated email addresses" +msgstr "" + +#: themes/default/templates/index.html.ep:140 +msgid "Compressing zip file…" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:15 +msgid "Copy all links to clipboard" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:18 +msgid "Copy to clipboard" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:507 +msgid "Could not delete the file. You are not authenticated." +msgstr "" + +#: lib/Lufi/Controller/Files.pm:489 +msgid "Could not find the file. Are you sure of the URL and the token?" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:400 +msgid "Could not find the file. Are you sure of the URL?" +msgstr "" + +#: themes/default/templates/files.html.ep:29 +msgid "Counter" +msgstr "" + +#: themes/default/templates/index.html.ep:100 +msgid "Create a zip archive with the files before uploading?" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:26 +msgid "Created at" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:14 +msgid "Delete" +msgstr "" + +#: themes/default/templates/files.html.ep:30 themes/default/templates/index.html.ep:90 +msgid "Delete at first download?" +msgstr "" + +#: themes/default/templates/files.html.ep:19 +msgid "Delete selected files" +msgstr "" + +#: themes/default/templates/files.html.ep:33 themes/default/templates/partial/index.js.ep:19 +msgid "Deletion link" +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 "" + +#: themes/default/templates/partial/render.js.ep:4 +msgid "Download aborted." +msgstr "" + +#: themes/default/templates/files.html.ep:28 themes/default/templates/partial/index.js.ep:20 +msgid "Download link" +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 "" + +#: themes/default/templates/invitations/invite.html.ep:40 +msgid "Email address of your guest" +msgstr "" + +#: themes/default/templates/mail.html.ep:39 +msgid "Email body" +msgstr "" + +#: themes/default/templates/mail.html.ep:31 +msgid "Email subject" +msgstr "" + +#: themes/default/templates/mail.html.ep:25 themes/default/templates/mail.html.ep:27 +msgid "Emails" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:22 +msgid "Encrypting part XX1 of XX2" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:289 +msgid "Error: the file existed but was deleted." +msgstr "" + +#: lib/Lufi/Controller/Files.pm:369 +msgid "Error: the file has not been sent entirely." +msgstr "" + +#: lib/Lufi/Controller/Files.pm:379 +msgid "Error: unable to find the file. Are you sure of your URL?" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:23 +msgid "Expiration:" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:27 +msgid "Expire at" +msgstr "" + +#: themes/default/templates/files.html.ep:32 +msgid "Expires at" +msgstr "" + +#: themes/default/templates/files.html.ep:12 +msgid "Export localStorage data" +msgstr "" + +#: lib/Lufi/Controller/Files.pm:471 +msgid "File deleted" +msgstr "" + +#: themes/default/templates/files.html.ep:27 +msgid "File name" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:61 +msgid "Files" +msgstr "" + +#: themes/default/templates/index.html.ep:80 +msgid "Files deleted at first download" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:28 +msgid "Files sent at" +msgstr "" + +#: themes/default/templates/partial/invitations.js.ep:8 +msgid "Files sent in invitation XX1 by XX2" +msgstr "" + +#: themes/default/templates/partial/render.js.ep:8 +msgid "Get the file" +msgstr "" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:24 +msgid "Guest mail" +msgstr "" + +#. (ucfirst(stash('invitation') +#: themes/default/templates/invitations/notification_files_sent.mail.ep:6 +msgid "Hello %1," +msgstr "" + +#: themes/default/templates/invitations/invite.mail.ep:4 +msgid "Hello," +msgstr "" + +#: themes/default/templates/partial/mail.js.ep:35 +msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" +msgstr "" + +#: themes/default/templates/mail.html.ep:35 +msgid "Here's some files" +msgstr "" + +#: themes/default/templates/partial/invitations.js.ep:7 +msgid "Hide hidden invitations" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:25 +msgid "Hit Enter, then Ctrl+C to copy all the download links" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:24 +msgid "Hit Enter, then Ctrl+C to copy the download link" +msgstr "" + +#: themes/default/templates/about.html.ep:9 +msgid "How does it work?" +msgstr "" + +#: themes/default/templates/invitations/invite.html.ep:46 +msgid "How many days would you like the invitation to be valid?" +msgstr "" + +#: themes/default/templates/about.html.ep:16 +msgid "How to install the software on my server?" +msgstr "" + +#: themes/default/templates/about.html.ep:12 +msgid "How to report an illegal file?" +msgstr "" + +#: themes/default/templates/delays.html.ep:7 +msgid "If you choose a delay, the file will be deleted after that delay." +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 "" + +#: themes/default/templates/files.html.ep:14 +msgid "Import localStorage data" +msgstr "" + +#: themes/default/templates/index.html.ep:53 +msgid "Important: more information on delays" +msgstr "" + +#: themes/default/templates/delays.html.ep:5 +msgid "Information about delays" +msgstr "" + +#: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12 +msgid "Invert selection" +msgstr "" + +#. ($i->guest_mail, $url) +#: lib/Lufi/Controller/Invitation.pm:171 +msgid "Invitation resent to %1.
URL: %2" +msgstr "" + +#. ($invitation->guest_mail, $url) +#: lib/Lufi/Controller/Invitation.pm:87 +msgid "Invitation sent to %1.
URL: %2" +msgstr "" + +#: 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 "" + +#: themes/default/templates/partial/render.js.ep:6 +msgid "It seems that the key in your URL is incorrect. Please, verify your URL." +msgstr "" + +#: themes/default/templates/index.html.ep:12 +msgid "Javascript is disabled. You won't be able to use Lufi." +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:44 themes/default/templates/layouts/default.html.ep:46 themes/default/templates/layouts/default.html.ep:77 themes/default/templates/layouts/default.html.ep:79 +msgid "Language" +msgstr "" + +#: themes/default/templates/login.html.ep:15 +msgid "Login" +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91 +msgid "Logout" +msgstr "" + +#: themes/default/templates/about.html.ep:4 +msgid "Lufi is a free (as in free speech) file hosting software." +msgstr "" + +#: 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 "" + +#: themes/default/templates/files.html.ep:34 +msgid "Mail" +msgstr "" + +#: 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" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:5 themes/default/templates/layouts/default.html.ep:37 themes/default/templates/layouts/default.html.ep:70 +msgid "My invitations" +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 "" + +#: themes/default/templates/index.html.ep:115 +msgid "Name of the zip file" +msgstr "" + +#. (format_bytes($json->{size}) +#: lib/Lufi/Controller/Files.pm:108 +msgid "No enough space available on the server for this file (size: %1)." +msgstr "" + +#: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28 +msgid "No expiration delay" +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 "" + +#: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 +msgid "Password" +msgstr "" + +#. (config('contact') +#: themes/default/templates/about.html.ep:13 +msgid "Please contact the administrator: %1" +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" +msgstr "" + +#: themes/default/templates/files.html.ep:13 +msgid "Purge expired files from localStorage" +msgstr "" + +#: themes/default/templates/invitations/notification_files_sent.mail.ep:20 +msgid "Regards," +msgstr "" + +#: themes/default/templates/invitations/invite.mail.ep:15 +msgid "Regards." +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:31 themes/default/templates/layouts/default.html.ep:64 +msgid "Report file" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:15 +msgid "Resend invitation mail" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:9 +msgid "Rows in purple mean that the invitations have expired." +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:26 +msgid "Send all links by email" +msgstr "" + +#: themes/default/templates/invitations/invite.html.ep:50 +msgid "Send the invitation" +msgstr "" + +#: themes/default/templates/mail.html.ep:46 +msgid "Send with this server" +msgstr "" + +#: themes/default/templates/mail.html.ep:47 +msgid "Send with your own mail software" +msgstr "" + +#: 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 "" + +#. (url_for('/') +#: themes/default/templates/partial/mail.js.ep:48 +msgid "Share your files in total privacy on %1" +msgstr "" + +#: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9 +msgid "Show hidden invitations" +msgstr "" + +#: themes/default/templates/partial/render.js.ep:11 +msgid "Show zip content" +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17 +msgid "Signin" +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 "" + +#: themes/default/templates/invitations/exception.html.ep:7 +msgid "Sorry, your invitation has expired or has been deleted." +msgstr "" + +#. ($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 "" + +#. ($invitation->ldap_user_mail) +#: lib/Lufi/Controller/Invitation.pm:276 +msgid "The URLs of your files have been sent by email to %1." +msgstr "" + +#: 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 "" + +#: 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 "" + +#: themes/default/templates/partial/files.js.ep:11 +msgid "The data has been successfully imported." +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:73 +msgid "The email body can't be empty." +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:72 +msgid "The email subject can't be empty." +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 "" + +#: lib/Lufi/Controller/Files.pm:468 +msgid "The file has already been deleted" +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 "" + +#. (join(', ', @bad) +#: lib/Lufi/Controller/Mail.pm:68 +msgid "The following email addresses are not valid: %1" +msgstr "" + +#. ($guest_mail) +#: lib/Lufi/Controller/Invitation.pm:48 +msgid "The guest email address (%1) is unvalid." +msgstr "" + +#. ($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 "" + +#. ($i->token) +#: lib/Lufi/Controller/Invitation.pm:130 +msgid "The invitation %1 has been deleted." +msgstr "" + +#. (stash('user_mail') +#: themes/default/templates/invitations/invite.html.ep:34 +msgid "The invitation mail will be send from your email address (%1)." +msgstr "" + +#: themes/default/templates/partial/index.js.ep:16 +msgid "The link(s) has been copied to your clipboard" +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 "" + +#. (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 "" + +#: lib/Lufi/Controller/Mail.pm:97 +msgid "The mail has been sent." +msgstr "" + +#: themes/default/templates/about.html.ep:15 +msgid "The original (and only for now) author is Luc Didry." +msgstr "" + +#: 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 "" + +#: lib/Lufi/Controller/Files.pm:295 +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 "" + +#. (stash('expires') +#: themes/default/templates/invitations/invite.mail.ep:13 +msgid "This invitation is valid until %1." +msgstr "" + +#: 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 "" + +#: themes/default/templates/invitations/my_invitations.html.ep:25 +msgid "URL" +msgstr "" + +#: 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:439 +msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." +msgstr "" + +#. ($short) +#: lib/Lufi/Controller/Files.pm:429 +msgid "Unable to get counter for %1. The token is invalid." +msgstr "" + +#. ($short) +#: lib/Lufi/Controller/Files.pm:449 +msgid "Unable to get counter for %1. You are not authenticated." +msgstr "" + +#: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66 +msgid "Upload files" +msgstr "" + +#: themes/default/templates/index.html.ep:145 +msgid "Upload generated zip file" +msgstr "" + +#: themes/default/templates/files.html.ep:31 +msgid "Uploaded at" +msgstr "" + +#: themes/default/templates/index.html.ep:153 +msgid "Uploaded files" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:30 +msgid "Websocket communication error" +msgstr "" + +#: themes/default/templates/about.html.ep:3 +msgid "What is Lufi?" +msgstr "" + +#: themes/default/templates/about.html.ep:14 +msgid "Who wrote this software?" +msgstr "" + +#: themes/default/templates/partial/index.js.ep:13 +msgid "XXX file has been added to upload queue." +msgstr "" + +#: 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 "" + +#: 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 "" + +#: 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 "" + +#: 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 "" + +#: 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." +msgstr "" + +#: lib/Lufi/Controller/Mail.pm:71 +msgid "You must give email addresses." +msgstr "" + +#: 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 "" + +#: lib/Lufi/Controller/Files.pm:351 +msgid "Your password is not valid. Please refresh the page to retry." +msgstr "" + +#: themes/default/templates/partial/render.js.ep:12 +msgid "Zip content:" +msgstr "" + +#. (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 "" + +#. (format_bytes($keys[$i]) +#: themes/default/templates/delays.html.ep:22 +msgid "between %1 and %2, the file will be kept forever." +msgstr "" + +#: themes/default/templates/partial/mail.js.ep:42 +msgid "deadline: " +msgstr "" + +#: themes/default/templates/partial/invitations.js.ep:5 +msgid "expires on XXX" +msgstr "" + +#. (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 "" + +#. (format_bytes($keys[$i]) +#: themes/default/templates/delays.html.ep:28 +msgid "for %1 and more, the file will be kept forever." +msgstr "" + +#: themes/default/templates/index.html.ep:3 +msgid "no time limit" +msgstr "" + +#: themes/default/templates/index.html.ep:124 +msgid "or" +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 "" From 403c15596f191fdcbc1fb6adccf49c8d2336f75f Mon Sep 17 00:00:00 2001 From: Berto Te Date: Thu, 5 Mar 2020 21:40:18 +0000 Subject: [PATCH 41/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Spanish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (187 of 187 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/development/es/ --- themes/default/lib/Lufi/I18N/es.po | 396 ++++++++++++++++++----------- 1 file changed, 247 insertions(+), 149 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/es.po b/themes/default/lib/Lufi/I18N/es.po index 8348fe6..f19a15d 100644 --- a/themes/default/lib/Lufi/I18N/es.po +++ b/themes/default/lib/Lufi/I18N/es.po @@ -7,791 +7,889 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-03-07 04:08+0000\n" +"Last-Translator: Berto Te \n" +"Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) #: themes/default/templates/index.html.ep:56 themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:66 msgid "%1 days" -msgstr "" +msgstr "%1 día" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:2 msgid "%1 invites you to send him/her files" -msgstr "" +msgstr "%1 te invita a enviarle sus archivos" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:6 msgid "%1 invites you to send him/her files through Lufi." -msgstr "" +msgstr "%1 te invita a enviarle sus archivos a través de Lufi." #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:4 msgid "%1 sent you files" -msgstr "" +msgstr "%1 te envió archivos" #. (stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:8 msgid "%1 used your invitation to send you files:" -msgstr "" +msgstr "%1 usó tu invitación para enviarte archivos:" #: 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 en %T" #: themes/default/templates/partial/index.js.ep:27 msgid "(max size: XXX)" -msgstr "" +msgstr "(tamaño máximo: XXX)" #: themes/default/templates/index.html.ep:5 msgid "1 year" -msgstr "" +msgstr "1 año" #: themes/default/templates/index.html.ep:4 themes/default/templates/index.html.ep:65 msgid "24 hours" -msgstr "" +msgstr "24 horas" #: themes/default/templates/partial/mail.js.ep:40 msgid ":" -msgstr "" +msgstr ":" #: themes/default/templates/render.html.ep:42 msgid "Abort" -msgstr "" +msgstr "aborto" #: themes/default/templates/layouts/default.html.ep:53 themes/default/templates/layouts/default.html.ep:86 msgid "About" -msgstr "" +msgstr "Acerca de" #: themes/default/templates/index.html.ep:107 msgid "Add a password to file(s)" -msgstr "" +msgstr "Agregue una contraseña a los archivos" #: 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 "" +"Está prohibido agregar URLs no relacionadas con esta instancia de Lufi al " +"cuerpo o asunto del correo." #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" -msgstr "" +msgstr "¿Estás seguro de que deseas eliminar las invitaciones seleccionadas?" #: themes/default/templates/partial/invitations.js.ep:4 msgid "Are you sure you want to resend the invitation mail for the selected invitations?" msgstr "" +"¿Está seguro de que desea reenviar el correo de invitación para las " +"invitaciones seleccionadas?" #: 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 "" +"Como Lufi es un software gratuito con licencia bajo los términos de laAGPLv3, " +"puedes instalarlo en tu propio servidor. Echa un vistazo a la Wiki para " +"el procedimiento." #. (stash('nbslices') #: themes/default/templates/partial/render.js.ep:9 msgid "Asking for file part XX1 of %1" -msgstr "" +msgstr "Pidiendo archivo parte XX1 de %1" #: themes/default/templates/about.html.ep:20 msgid "Back to homepage" -msgstr "" +msgstr "Volver a la página de inicio" #: lib/Lufi/Controller/Mail.pm:25 msgid "Bad CSRF token!" -msgstr "" +msgstr "¡Token CSRF incorrecto!" #: lib/Lufi/Controller/Auth.pm:27 lib/Lufi/Controller/Auth.pm:49 msgid "Bad CSRF token." -msgstr "" +msgstr "Token CSRF incorrecto." #: themes/default/templates/partial/render.js.ep:5 msgid "Click here to refresh the page and restart the download." -msgstr "" +msgstr "Haga clic aquí para actualizar la página y reiniciar la descarga." #: themes/default/templates/invitations/invite.mail.ep:8 msgid "Click on the following URL to upload files on Lufi:" -msgstr "" +msgstr "Haga clic en la siguiente URL para cargar archivos en Lufi:" #: themes/default/templates/index.html.ep:126 msgid "Click to open the file browser" -msgstr "" +msgstr "Haga clic para abrir el navegador de archivos" #: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80 msgid "Close" -msgstr "" +msgstr "Cerrar" #: themes/default/templates/mail.html.ep:23 msgid "Comma-separated email addresses" -msgstr "" +msgstr "Direcciones de correo electrónico separadas por comas" #: themes/default/templates/index.html.ep:140 msgid "Compressing zip file…" -msgstr "" +msgstr "Comprimiendo el archivo zip …" #: themes/default/templates/partial/index.js.ep:15 msgid "Copy all links to clipboard" -msgstr "" +msgstr "Copie todos los enlaces al portapapeles" #: themes/default/templates/partial/index.js.ep:18 msgid "Copy to clipboard" -msgstr "" +msgstr "Copiar al portapapeles" #: lib/Lufi/Controller/Files.pm:507 msgid "Could not delete the file. You are not authenticated." -msgstr "" +msgstr "No se pudo eliminar el archivo. No estás autenticado." #: lib/Lufi/Controller/Files.pm:489 msgid "Could not find the file. Are you sure of the URL and the token?" -msgstr "" +msgstr "No se pudo encontrar el archivo. ¿Estás seguro de la URL y el token?" #: lib/Lufi/Controller/Files.pm:400 msgid "Could not find the file. Are you sure of the URL?" -msgstr "" +msgstr "No se pudo encontrar el archivo. ¿Estás seguro de la URL?" #: themes/default/templates/files.html.ep:29 msgid "Counter" -msgstr "" +msgstr "contador" #: themes/default/templates/index.html.ep:100 msgid "Create a zip archive with the files before uploading?" -msgstr "" +msgstr "¿Crear un archivo zip con los archivos antes de subir?" #: themes/default/templates/invitations/my_invitations.html.ep:26 msgid "Created at" -msgstr "" +msgstr "Creado en" #: themes/default/templates/invitations/my_invitations.html.ep:14 msgid "Delete" -msgstr "" +msgstr "Eliminar" #: themes/default/templates/files.html.ep:30 themes/default/templates/index.html.ep:90 msgid "Delete at first download?" -msgstr "" +msgstr "¿Eliminar en la primera descarga?" #: themes/default/templates/files.html.ep:19 msgid "Delete selected files" -msgstr "" +msgstr "Eliminar archivos seleccionados" #: themes/default/templates/files.html.ep:33 themes/default/templates/partial/index.js.ep:19 msgid "Deletion link" -msgstr "" +msgstr "Enlace de borrado" #: 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 "" +"No se preocupe: si un usuario comienza a descargar el archivo antes del " +"vencimiento y la descarga finaliza después del vencimiento, podrá obtener el " +"archivo." #: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28 msgid "Download" -msgstr "" +msgstr "Descargar" #: themes/default/templates/partial/render.js.ep:4 msgid "Download aborted." -msgstr "" +msgstr "Descarga abortada." #: themes/default/templates/files.html.ep:28 themes/default/templates/partial/index.js.ep:20 msgid "Download link" -msgstr "" +msgstr "Enlace de descarga" #: 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 "" +"Arrastre y suelte archivos en el área apropiada o use la forma tradicional " +"de enviar archivos y los archivos se fragmentarán, cifrarán y enviarán al " +"servidor. Obtendrá dos enlaces por archivo: un enlace de descarga, que le da " +"a las personas con las que desea compartir el archivo y un enlace de " +"eliminación, que le permite eliminar el archivo cuando lo desee." #: themes/default/templates/index.html.ep:122 msgid "Drop files here" -msgstr "" +msgstr "Suelta archivos aquí" #: themes/default/templates/invitations/invite.html.ep:40 msgid "Email address of your guest" -msgstr "" +msgstr "Dirección de correo electrónico de su invitado" #: themes/default/templates/mail.html.ep:39 msgid "Email body" -msgstr "" +msgstr "Cuerpo del correo electronico" #: themes/default/templates/mail.html.ep:31 msgid "Email subject" -msgstr "" +msgstr "Asunto del email" #: themes/default/templates/mail.html.ep:25 themes/default/templates/mail.html.ep:27 msgid "Emails" -msgstr "" +msgstr "Correos electrónicos" #: themes/default/templates/partial/index.js.ep:22 msgid "Encrypting part XX1 of XX2" -msgstr "" +msgstr "Cifrando parte XX1 de XX2" #: lib/Lufi/Controller/Files.pm:289 msgid "Error: the file existed but was deleted." -msgstr "" +msgstr "Error: el archivo existía pero fue eliminado." #: lib/Lufi/Controller/Files.pm:369 msgid "Error: the file has not been sent entirely." -msgstr "" +msgstr "Error: el archivo no se ha enviado por completo." #: lib/Lufi/Controller/Files.pm:379 msgid "Error: unable to find the file. Are you sure of your URL?" -msgstr "" +msgstr "Error: no se puede encontrar el archivo. ¿Estás seguro de tu URL?" #: themes/default/templates/partial/index.js.ep:23 msgid "Expiration:" -msgstr "" +msgstr "Vencimiento:" #: themes/default/templates/invitations/my_invitations.html.ep:27 msgid "Expire at" -msgstr "" +msgstr "Caduca a las" #: themes/default/templates/files.html.ep:32 msgid "Expires at" -msgstr "" +msgstr "Caduca a las" #: themes/default/templates/files.html.ep:12 msgid "Export localStorage data" -msgstr "" +msgstr "Exportar datos de almacenamiento local" #: lib/Lufi/Controller/Files.pm:471 msgid "File deleted" -msgstr "" +msgstr "Archivo eliminado" #: themes/default/templates/files.html.ep:27 msgid "File name" -msgstr "" +msgstr "Nombre del archivo" #: themes/default/templates/invitations/my_invitations.html.ep:61 msgid "Files" -msgstr "" +msgstr "Archivos" #: themes/default/templates/index.html.ep:80 msgid "Files deleted at first download" -msgstr "" +msgstr "Archivos eliminados en la primera descarga" #: themes/default/templates/invitations/my_invitations.html.ep:28 msgid "Files sent at" -msgstr "" +msgstr "Archivos enviados a" #: themes/default/templates/partial/invitations.js.ep:8 msgid "Files sent in invitation XX1 by XX2" -msgstr "" +msgstr "Archivos enviados en la invitación XX1 por XX2" #: themes/default/templates/partial/render.js.ep:8 msgid "Get the file" -msgstr "" +msgstr "Obtén el archivo" #: themes/default/templates/about.html.ep:18 msgid "Get the source code on the official repository or on its Github mirror" msgstr "" +"Obtenga el código fuente en el repositorio oficialo en suGithub mirror" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" -msgstr "" +msgstr "Correo de invitado" #. (ucfirst(stash('invitation') #: themes/default/templates/invitations/notification_files_sent.mail.ep:6 msgid "Hello %1," -msgstr "" +msgstr "Hola %1" #: themes/default/templates/invitations/invite.mail.ep:4 msgid "Hello," -msgstr "" +msgstr "Hola," #: themes/default/templates/partial/mail.js.ep:35 msgid "Hello,\\n\\nHere's some files I want to share with you:\\n" msgstr "" +"Hola,\\n" +"\\n" +" Aquí hay algunos archivos que quiero compartir contigo:\\n" #: themes/default/templates/mail.html.ep:35 msgid "Here's some files" -msgstr "" +msgstr "Aquí hay algunos archivos" #: themes/default/templates/partial/invitations.js.ep:7 msgid "Hide hidden invitations" -msgstr "" +msgstr "Ocultar invitaciones ocultas" #: themes/default/templates/partial/index.js.ep:25 msgid "Hit Enter, then Ctrl+C to copy all the download links" msgstr "" +"Presiona Enter, luego Ctrl + C para copiar todos los enlaces de descarga" #: themes/default/templates/partial/index.js.ep:24 msgid "Hit Enter, then Ctrl+C to copy the download link" -msgstr "" +msgstr "Presiona Enter, luego Ctrl+C para copiar el enlace de descarga" #: themes/default/templates/about.html.ep:9 msgid "How does it work?" -msgstr "" +msgstr "¿Como funciona?" #: themes/default/templates/invitations/invite.html.ep:46 msgid "How many days would you like the invitation to be valid?" -msgstr "" +msgstr "¿Cuántos días desea que la invitación sea válida?" #: themes/default/templates/about.html.ep:16 msgid "How to install the software on my server?" -msgstr "" +msgstr "¿Cómo instalar el software en mi servidor?" #: themes/default/templates/about.html.ep:12 msgid "How to report an illegal file?" -msgstr "" +msgstr "¿Cómo denunciar un archivo ilegal?" #: themes/default/templates/delays.html.ep:7 msgid "If you choose a delay, the file will be deleted after that delay." -msgstr "" +msgstr "Si elige un retraso, el archivo se eliminará después de ese retraso." #: 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 envía el correo desde este servidor, los enlaces se enviarán al servidor, " +"lo que puede reducir su protección de privacidad." #: themes/default/templates/files.html.ep:14 msgid "Import localStorage data" -msgstr "" +msgstr "Importar datos de almacenamiento local" #: themes/default/templates/index.html.ep:53 msgid "Important: more information on delays" -msgstr "" +msgstr "Importante: más información sobre retrasos" #: themes/default/templates/delays.html.ep:5 msgid "Information about delays" -msgstr "" +msgstr "Información sobre retrasos" #: themes/default/templates/files.html.ep:18 themes/default/templates/invitations/my_invitations.html.ep:12 msgid "Invert selection" -msgstr "" +msgstr "Invertir selección" #. ($i->guest_mail, $url) #: lib/Lufi/Controller/Invitation.pm:171 msgid "Invitation resent to %1.
URL: %2" -msgstr "" +msgstr "Invitación reenviada a %1.
URL: %2" #. ($invitation->guest_mail, $url) #: lib/Lufi/Controller/Invitation.pm:87 msgid "Invitation sent to %1.
URL: %2" -msgstr "" +msgstr "Invitación enviada a%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 "Invitar a alguien" #: themes/default/templates/partial/render.js.ep:6 msgid "It seems that the key in your URL is incorrect. Please, verify your URL." msgstr "" +"Parece que la clave en su URL es incorrecta. Por favor, verifique su URL." #: themes/default/templates/index.html.ep:12 msgid "Javascript is disabled. You won't be able to use Lufi." -msgstr "" +msgstr "Javascript está deshabilitado. No podrás usar Lufi." #: themes/default/templates/layouts/default.html.ep:44 themes/default/templates/layouts/default.html.ep:46 themes/default/templates/layouts/default.html.ep:77 themes/default/templates/layouts/default.html.ep:79 msgid "Language" -msgstr "" +msgstr "Idioma" #: themes/default/templates/login.html.ep:15 msgid "Login" -msgstr "" +msgstr "Iniciar sesión" #: themes/default/templates/layouts/default.html.ep:58 themes/default/templates/layouts/default.html.ep:91 msgid "Logout" -msgstr "" +msgstr "Cerrar sesión" #: themes/default/templates/about.html.ep:4 msgid "Lufi is a free (as in free speech) file hosting software." msgstr "" +"Lufi es un software de alojamiento de archivos libre (como en la libertad de " +"expresión)." #: 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 cambió recientemente su forma de almacenar información de archivos. \\n" +" \\n" +"No se han encontrado archivos en la nueva ubicación de almacenamiento local, " +"pero encontramos archivos en la anterior. \\n" +" ¿Desea importar esas informaciones? \\n" +"\\n" +" Tenga en cuenta que esta es la solo tiempo que te preguntaremos esto." #: themes/default/templates/files.html.ep:34 msgid "Mail" -msgstr "" +msgstr "Correo" #: 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" -msgstr "" +msgstr "Mis archivos" #: themes/default/templates/invitations/my_invitations.html.ep:5 themes/default/templates/layouts/default.html.ep:37 themes/default/templates/layouts/default.html.ep:70 msgid "My invitations" -msgstr "" +msgstr "Mis invitaciones" #: 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 "NB: esta lista incluye la lista de archivos que ya le han enviado." #: themes/default/templates/index.html.ep:115 msgid "Name of the zip file" -msgstr "" +msgstr "Nombre del archivo zip" #. (format_bytes($json->{size}) #: lib/Lufi/Controller/Files.pm:108 msgid "No enough space available on the server for this file (size: %1)." msgstr "" +"No hay suficiente espacio disponible en el servidor para este archivo (size: " +"%1)." #: themes/default/templates/partial/files.js.ep:10 themes/default/templates/partial/index.js.ep:28 msgid "No expiration delay" -msgstr "" +msgstr "Sin retraso de vencimiento" #: 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 "" +"Aquí solo se enumerarán los archivos enviados con este navegador. Esta lista " +"se almacena en localStorage: si elimina sus datos de localStorage, perderá " +"esta lista." #: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 msgid "Password" -msgstr "" +msgstr "Contraseña" #. (config('contact') #: themes/default/templates/about.html.ep:13 msgid "Please contact the administrator: %1" -msgstr "" +msgstr "Por favor, póngase en contacto con el administrador: %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 "" +"Espere mientras recibimos su archivo. Primero necesitamos descargar y " +"descifrar todas las partes antes de que pueda obtenerlo." #: lib/Lufi/Controller/Auth.pm:38 msgid "Please, check your credentials or your right to access this service: unable to authenticate." msgstr "" +"Por favor, verifique sus credenciales o su derecho a acceder a este servicio:" +" no se puede autenticar." #: themes/default/templates/about.html.ep:5 msgid "Privacy" -msgstr "" +msgstr "Confidencialidad" #: themes/default/templates/files.html.ep:13 msgid "Purge expired files from localStorage" -msgstr "" +msgstr "urgar archivos caducados de localStorage" #: themes/default/templates/invitations/notification_files_sent.mail.ep:20 msgid "Regards," -msgstr "" +msgstr "Saludos," #: themes/default/templates/invitations/invite.mail.ep:15 msgid "Regards." -msgstr "" +msgstr "Saludos." #: themes/default/templates/layouts/default.html.ep:31 themes/default/templates/layouts/default.html.ep:64 msgid "Report file" -msgstr "" +msgstr "Archivo de informe" #: themes/default/templates/invitations/my_invitations.html.ep:15 msgid "Resend invitation mail" -msgstr "" +msgstr "Reenviar correo de invitación" #: themes/default/templates/invitations/my_invitations.html.ep:9 msgid "Rows in purple mean that the invitations have expired." -msgstr "" +msgstr "Las filas en púrpura significan que las invitaciones han expirado." #: themes/default/templates/files.html.ep:9 msgid "Rows in red mean that the files have expired and are no longer available." msgstr "" +"Las filas en rojo significan que los archivos han caducado y ya no están " +"disponibles." #: themes/default/templates/partial/index.js.ep:26 msgid "Send all links by email" -msgstr "" +msgstr "Enviar todos los enlaces por correo electrónico" #: themes/default/templates/invitations/invite.html.ep:50 msgid "Send the invitation" -msgstr "" +msgstr "Enviar la invitación" #: themes/default/templates/mail.html.ep:46 msgid "Send with this server" -msgstr "" +msgstr "Enviar con este servidor" #: themes/default/templates/mail.html.ep:47 msgid "Send with your own mail software" -msgstr "" +msgstr "Envíe con su propio software de correo" #: 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 "" +"Enviando la parte XX1 de XX2. Por favor, sea paciente, la barra de progreso " +"puede tardar un poco en moverse." #. (url_for('/') #: themes/default/templates/partial/mail.js.ep:48 msgid "Share your files in total privacy on %1" -msgstr "" +msgstr "Comparte tus archivos con total privacidad en %1" #: themes/default/templates/invitations/my_invitations.html.ep:13 themes/default/templates/partial/invitations.js.ep:9 msgid "Show hidden invitations" -msgstr "" +msgstr "Mostrar invitaciones ocultas" #: themes/default/templates/partial/render.js.ep:11 msgid "Show zip content" -msgstr "" +msgstr "Mostrar contenido zip" #: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17 msgid "Signin" -msgstr "" +msgstr "Registrarse" #: 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 "" +"Lo sentimos, la invitación no existe. ¿Estás seguro de que estás en la URL " +"correcta?" #: themes/default/templates/index.html.ep:46 msgid "Sorry, the uploading is currently disabled. Please try again later." msgstr "" +"Lo sentimos, la carga está actualmente deshabilitada. Por favor, inténtelo " +"de nuevo más tarde." #: lib/Lufi/Controller/Files.pm:82 msgid "Sorry, uploading is disabled." -msgstr "" +msgstr "Lo sentimos, la carga está deshabilitada." #: themes/default/templates/invitations/exception.html.ep:7 msgid "Sorry, your invitation has expired or has been deleted." -msgstr "" +msgstr "Lo sentimos, tu invitación ha caducado o ha sido eliminada." #. ($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 "" +"Lo sentimos, tu invitación ha caducado o ha sido eliminada. Póngase en " +"contacto con% 1 para recibir otra invitación." #. ($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 "Las URL de sus archivos se han enviado por correo electrónico a% 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 "" +"El administrador solo puede ver el nombre del archivo, su tamaño y su tipo " +"MIME (qué tipo de archivo es: video, texto, 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 "" +"El cuerpo del correo debe contener al menos una URL que apunte a un archivo " +"alojado en esta instancia." #: themes/default/templates/partial/files.js.ep:11 msgid "The data has been successfully imported." -msgstr "" +msgstr "Los datos se han importado correctamente." #: lib/Lufi/Controller/Mail.pm:73 msgid "The email body can't be empty." -msgstr "" +msgstr "El cuerpo del correo electrónico no puede estar vacío." #: lib/Lufi/Controller/Mail.pm:72 msgid "The email subject can't be empty." -msgstr "" +msgstr "El asunto del correo electrónico no puede estar vacío." #. ($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 "El retraso de vencimiento (% 1) no está entre 1 y% 2 días." #: lib/Lufi/Controller/Files.pm:468 msgid "The file has already been deleted" -msgstr "" +msgstr "El archivo ya ha sido eliminado" #: 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 "" +"Los archivos cargados en una instancia de Lufi se cifran antes de cargarlos " +"en el servidor: el administrador del servidor no puede ver el contenido del " +"archivo." #. (join(', ', @bad) #: lib/Lufi/Controller/Mail.pm:68 msgid "The following email addresses are not valid: %1" -msgstr "" +msgstr "Las siguientes direcciones de correo electrónico no son válidas: %1" #. ($guest_mail) #: lib/Lufi/Controller/Invitation.pm:48 msgid "The guest email address (%1) is unvalid." -msgstr "" +msgstr "La dirección de correo electrónico del invitado (%1) no es válida." #. ($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 "" +"La invitación %1 no se puede reenviar: %2 ya ha enviado archivos.
Cree " +"una nueva invitación." #. ($i->token) #: lib/Lufi/Controller/Invitation.pm:130 msgid "The invitation %1 has been deleted." -msgstr "" +msgstr "La invitación %1 ha sido eliminada." #. (stash('user_mail') #: themes/default/templates/invitations/invite.html.ep:34 msgid "The invitation mail will be send from your email address (%1)." msgstr "" +"El correo de invitación se enviará desde su dirección de correo electrónico " +"(%1)." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" -msgstr "" +msgstr "Los enlaces han sido copiados a su portapapeles" #. (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 "" +"Los enlaces de sus archivos se enviarán automáticamente por correo a %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 "" +"Los enlaces de sus archivos se enviarán automáticamente por correo a %1." #: lib/Lufi/Controller/Mail.pm:97 msgid "The mail has been sent." -msgstr "" +msgstr "El correo ha sido enviado." #: themes/default/templates/about.html.ep:15 msgid "The original (and only for now) author is Luc Didry." msgstr "" +"El autor original (y solo por ahora) es 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 "" +"El servidor no pudo encontrar el registro de archivo para agregar su parte " +"de archivo. Por favor, contacte al administrador." #: lib/Lufi/Controller/Files.pm:295 msgid "This file has been deactivated by the admins. Contact them to know why." msgstr "" +"Este archivo ha sido desactivado por los administradores. Contáctalos para " +"saber por qué." #: 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 "Esta invitación normalmente está oculta" #. (stash('expires') #: themes/default/templates/invitations/invite.mail.ep:13 msgid "This invitation is valid until %1." -msgstr "" +msgstr "Esta invitación es válida hasta %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 "" +"Este servidor establece limitaciones de acuerdo con el tamaño del archivo. " +"El retraso de vencimiento de su archivo será el mínimo entre lo que elija y " +"las siguientes limitaciones:" #: themes/default/templates/invitations/my_invitations.html.ep:16 msgid "Toggle visibility" -msgstr "" +msgstr "Alternar visibilidad" #: themes/default/templates/invitations/my_invitations.html.ep:25 msgid "URL" -msgstr "" +msgstr "URL" #: themes/default/templates/partial/index.js.ep:17 msgid "Unable to copy the link(s) to your clipboard" -msgstr "" +msgstr "No se pueden copiar los enlaces a su portapapeles" #. ($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 "" +"No se puede obtener el contador de %1. El archivo no existe. Se eliminará de " +"su almacenamiento local." #. ($short) #: lib/Lufi/Controller/Files.pm:429 msgid "Unable to get counter for %1. The token is invalid." -msgstr "" +msgstr "No se puede obtener el contador de% 1. El token no es válido." #. ($short) #: lib/Lufi/Controller/Files.pm:449 msgid "Unable to get counter for %1. You are not authenticated." -msgstr "" +msgstr "No se puede obtener el contador de% 1. No estás autenticado." #: themes/default/templates/layouts/default.html.ep:33 themes/default/templates/layouts/default.html.ep:66 msgid "Upload files" -msgstr "" +msgstr "Subir archivos" #: themes/default/templates/index.html.ep:145 msgid "Upload generated zip file" -msgstr "" +msgstr "Subir archivo zip generado" #: themes/default/templates/files.html.ep:31 msgid "Uploaded at" -msgstr "" +msgstr "Subido a" #: themes/default/templates/index.html.ep:153 msgid "Uploaded files" -msgstr "" +msgstr "Archivos subidos" #: themes/default/templates/partial/index.js.ep:30 msgid "Websocket communication error" -msgstr "" +msgstr "Error de comunicación de Websocket" #: themes/default/templates/about.html.ep:3 msgid "What is Lufi?" -msgstr "" +msgstr "¿Qué es lufi?" #: themes/default/templates/about.html.ep:14 msgid "Who wrote this software?" -msgstr "" +msgstr "¿Quién escribió este software?" #: themes/default/templates/partial/index.js.ep:13 msgid "XXX file has been added to upload queue." -msgstr "" +msgstr "Se ha agregado el archivo XXX para cargar la cola." #: 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 "" +"Puede invitar a alguien a enviarle archivos a través de esta instancia de " +"Lufi incluso si no tienen una cuenta en él." #: 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 "" +"Puede ver la lista de sus archivos haciendo clic en el enlace \"Mis " +"archivos\" en la parte superior derecha de esta página." #: lib/Lufi/Controller/Mail.pm:42 msgid "You can't add URLs that are not related to this instance." -msgstr "" +msgstr "No puede agregar URL que no estén relacionadas con esta instancia." #: 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 "" +"No necesita registrarse para cargar archivos, pero tenga en cuenta que, por " +"razones legales, su dirección IP se almacenará cuando envíe un archivo. No " +"entre en pánico, este suele ser el caso para todos los sitios en los que " +"envía archivos." #: 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 "" +"Parece que no tienes una clave en tu URL. No podrás descifrar el archivo. " +"Descarga cancelada." #: 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 "" +"Has intentado salir de esta página. La descarga será cancelada. ¿Estás " +"seguro?" #: 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 "" +"Has intentado salir de esta página. La carga será cancelada. ¿Estás seguro?" #: themes/default/templates/logout.html.ep:14 msgid "You have been successfully logged out." -msgstr "" +msgstr "Ha sido desconectado exitosamente." #: lib/Lufi/Controller/Mail.pm:71 msgid "You must give email addresses." -msgstr "" +msgstr "Debes dar direcciones de correo electrónico." #: 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 "" +"Su navegador no tiene suficiente entropía para generar una clave de cifrado " +"segura. Espere (es mejor si hace cosas en su computadora mientras espera)." #. (format_bytes($json->{size}) #: lib/Lufi/Controller/Files.pm:95 msgid "Your file is too big: %1 (maximum size allowed: %2)" -msgstr "" +msgstr "Su archivo es demasiado grande: %1 (tamaño máximo permitido :%2)" #: lib/Lufi/Controller/Files.pm:351 msgid "Your password is not valid. Please refresh the page to retry." msgstr "" +"Su contraseña no es valida Actualice la página para volver a intentarlo." #: themes/default/templates/partial/render.js.ep:12 msgid "Zip content:" -msgstr "" +msgstr "Contenido 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 "entre %1 y %2, el archivo se mantendrá% 3 día (s)." #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:22 msgid "between %1 and %2, the file will be kept forever." -msgstr "" +msgstr "entre %1 y %2, el archivo se mantendrá para siempre." #: themes/default/templates/partial/mail.js.ep:42 msgid "deadline: " -msgstr "" +msgstr "Último plazo para descargar: " #: themes/default/templates/partial/invitations.js.ep:5 msgid "expires on XXX" -msgstr "" +msgstr "caduca el 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 "para %1 y más, el archivo se mantendrá %2 día(s)" #. (format_bytes($keys[$i]) #: themes/default/templates/delays.html.ep:28 msgid "for %1 and more, the file will be kept forever." -msgstr "" +msgstr "para %1 y más, el archivo se mantendrá para siempre." #: themes/default/templates/index.html.ep:3 msgid "no time limit" -msgstr "" +msgstr "Sin límite de tiempo" #: themes/default/templates/index.html.ep:124 msgid "or" -msgstr "" +msgstr "o" #. ($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 "" +msgstr "— %1 (%2), que caducará en %3" From 393fb4c4da6c5a889c647bba121a4f1e36cd929e Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 12:22:21 +0100 Subject: [PATCH 42/66] =?UTF-8?q?=F0=9F=8C=90=20=E2=80=94=20Update=20en.po?= =?UTF-8?q?=20from=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 + themes/default/lib/Lufi/I18N/en.po | 314 ++++++++--------------------- 2 files changed, 89 insertions(+), 227 deletions(-) diff --git a/Makefile b/Makefile index e8f1aeb..cdc7258 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ EXTRACTDIR=-D lib -D themes/default/templates POT=themes/default/lib/Lufi/I18N/lufi.pot +ENPO=themes/default/lib/Lufi/I18N/en.po XGETTEXT=carton exec local/bin/xgettext.pl -u CARTON=carton exec REAL_LUFI=script/application @@ -7,6 +8,7 @@ LUFI=script/lufi locales: $(XGETTEXT) $(EXTRACTDIR) -o $(POT) 2>/dev/null + $(XGETTEXT) $(EXTRACTDIR) -o $(ENPO) 2>/dev/null podcheck: podchecker lib/Lufi/DB/File.pm lib/Lufi/DB/Slice.pm diff --git a/themes/default/lib/Lufi/I18N/en.po b/themes/default/lib/Lufi/I18N/en.po index 7a144ef..51b3c8d 100644 --- a/themes/default/lib/Lufi/I18N/en.po +++ b/themes/default/lib/Lufi/I18N/en.po @@ -45,7 +45,7 @@ msgstr "%1 used your invitation to send you files:" msgid "%A %d %B %Y at %T" msgstr "%A %d %B %Y at %T" -#: themes/default/templates/partial/index.js.ep:27 +#: themes/default/templates/partial/index.js.ep:28 msgid "(max size: XXX)" msgstr "(max size: XXX)" @@ -74,39 +74,23 @@ msgid "Add a password to file(s)" msgstr "Add a password to file(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 "" -"Adding URLs not related to this Lufi instance to the mail body or subject is " -"prohibited." +msgid "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited." +msgstr "Adding URLs not related to this Lufi instance to the mail body or subject is prohibited." #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" msgstr "Are you sure you want to delete the selected invitations?" #: themes/default/templates/partial/invitations.js.ep:4 -msgid "" -"Are you sure you want to resend the invitation mail for the selected " -"invitations?" -msgstr "" -"Are you sure you want to resend the invitation mail for the selected " -"invitations?" +msgid "Are you sure you want to resend the invitation mail for the selected invitations?" +msgstr "Are you sure you want to resend the invitation mail for the selected invitations?" #: 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 "" -"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." +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 "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." #. (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 "Asking for file part XX1 of %1" @@ -195,12 +179,8 @@ msgid "Deletion link" msgstr "Deletion link" #: 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 "" -"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." +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 "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." #: themes/default/templates/partial/index.js.ep:21 themes/default/templates/render.html.ep:28 msgid "Download" @@ -215,18 +195,8 @@ msgid "Download link" msgstr "Download link" #: 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 "" -"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." +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 "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." #: themes/default/templates/index.html.ep:122 msgid "Drop files here" @@ -284,10 +254,18 @@ msgstr "Export localStorage data" msgid "File deleted" msgstr "File deleted" +#: themes/default/templates/partial/render.js.ep:9 +msgid "File downloaded" +msgstr "File downloaded" + #: themes/default/templates/files.html.ep:27 msgid "File name" msgstr "File name" +#: themes/default/templates/partial/index.js.ep:24 +msgid "File uploaded" +msgstr "File uploaded" + #: themes/default/templates/invitations/my_invitations.html.ep:61 msgid "Files" msgstr "Files" @@ -309,14 +287,8 @@ msgid "Get the file" msgstr "Get the file" #: themes/default/templates/about.html.ep:18 -msgid "" -"Get the source code on the official repository or on its Github mirror" -msgstr "" -"Get the source code on the official repository or on its Github mirror" +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "Get the source code on the official repository or on its Github mirror" #: themes/default/templates/invitations/my_invitations.html.ep:24 msgid "Guest mail" @@ -343,11 +315,11 @@ msgstr "Here's some files" msgid "Hide hidden invitations" msgstr "Hide hidden invitations" -#: 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 "Hit Enter, then Ctrl+C to copy all the download links" -#: 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 "Hit Enter, then Ctrl+C to copy the download link" @@ -372,12 +344,8 @@ msgid "If you choose a delay, the file will be deleted after that delay." msgstr "If you choose a delay, the file will be deleted after that delay." #: 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 "" -"If you send the mail from this server, the links will be sent to the server, " -"which may lower your privacy protection." +msgid "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection." +msgstr "If you send the mail from this server, the links will be sent to the server, which may lower your privacy protection." #: themes/default/templates/files.html.ep:14 msgid "Import localStorage data" @@ -410,10 +378,8 @@ msgid "Invite a guest" msgstr "Invite a guest" #: themes/default/templates/partial/render.js.ep:6 -msgid "" -"It seems that the key in your URL is incorrect. Please, verify your URL." -msgstr "" -"It seems that the key in your URL is incorrect. Please, verify your URL." +msgid "It seems that the key in your URL is incorrect. Please, verify your URL." +msgstr "It seems that the key in your URL is incorrect. Please, verify your URL." #: themes/default/templates/index.html.ep:12 msgid "Javascript is disabled. You won't be able to use Lufi." @@ -436,16 +402,8 @@ msgid "Lufi is a free (as in free speech) file hosting software." msgstr "Lufi is a free (as in free speech) file hosting software." #: 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 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." +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 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." #: themes/default/templates/files.html.ep:34 msgid "Mail" @@ -460,10 +418,8 @@ msgid "My invitations" msgstr "My 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: this list includes the list of files that have already been sent to you." +msgid "NB: this list includes the list of files that have already been sent to you." +msgstr "NB: this list includes the list of files that have already been sent to you." #: themes/default/templates/index.html.ep:115 msgid "Name of the zip file" @@ -474,19 +430,13 @@ msgstr "Name of the zip file" msgid "No enough space available on the server for this file (size: %1)." msgstr "No enough space available on the server for this file (size: %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 "No expiration delay" #: 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 "" -"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." +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 "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." #: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 msgid "Password" @@ -498,20 +448,12 @@ msgid "Please contact the administrator: %1" msgstr "Please contact the administrator: %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 "" -"Please wait while we are getting your file. We first need to download and " -"decrypt all parts before you can get it." +msgid "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it." +msgstr "Please wait while we are getting your file. We first need to download and decrypt all parts before you can get it." #: lib/Lufi/Controller/Auth.pm:38 -msgid "" -"Please, check your credentials or your right to access this service: unable " -"to authenticate." -msgstr "" -"Please, check your credentials or your right to access this service: unable " -"to authenticate." +msgid "Please, check your credentials or your right to access this service: unable to authenticate." +msgstr "Please, check your credentials or your right to access this service: unable to authenticate." #: themes/default/templates/about.html.ep:5 msgid "Privacy" @@ -542,12 +484,10 @@ msgid "Rows in purple mean that the invitations have expired." msgstr "Rows in purple mean that the invitations have expired." #: themes/default/templates/files.html.ep:9 -msgid "" -"Rows in red mean that the files have expired and are no longer available." -msgstr "" -"Rows in red mean that the files have expired and are no longer available." +msgid "Rows in red mean that the files have expired and are no longer available." +msgstr "Rows in red mean that the files have expired and are no longer available." -#: themes/default/templates/partial/index.js.ep:26 +#: themes/default/templates/partial/index.js.ep:27 msgid "Send all links by email" msgstr "Send all links by email" @@ -563,13 +503,9 @@ msgstr "Send with this server" msgid "Send with your own mail software" msgstr "Send with your own mail software" -#: 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 "" -"Sending part XX1 of XX2. Please, be patient, the progress bar can take a " -"while to move." +#: 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 "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 @@ -580,7 +516,7 @@ msgstr "Share your files in total privacy on %1" msgid "Show hidden invitations" msgstr "Show hidden invitations" -#: themes/default/templates/partial/render.js.ep:11 +#: themes/default/templates/partial/render.js.ep:12 msgid "Show zip content" msgstr "Show zip content" @@ -589,10 +525,8 @@ msgid "Signin" msgstr "Signin" #: 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 "" -"Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?" +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?" #: themes/default/templates/index.html.ep:46 msgid "Sorry, the uploading is currently disabled. Please try again later." @@ -608,12 +542,8 @@ msgstr "Sorry, your invitation has expired or has been deleted." #. ($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 "" -"Sorry, your invitation has expired or has been deleted. Please contact %1 to " -"have another invitation." +msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." +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:276 @@ -621,20 +551,12 @@ 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." #: 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 "" -"The administrator can only see the file's name, its size and its mimetype " -"(what kind of file it is: video, text, 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 "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 -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." +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." #: themes/default/templates/partial/files.js.ep:11 msgid "The data has been successfully imported." @@ -658,12 +580,8 @@ msgid "The file has already been deleted" msgstr "The file has already been deleted" #: 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 "" -"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." +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 "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 @@ -677,12 +595,8 @@ msgstr "The guest email address (%1) is unvalid." #. ($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 "" -"The invitation %1 can’t be resent: %2 has already sent files.
Please " -"create a new invitation." +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) #: lib/Lufi/Controller/Invitation.pm:130 @@ -700,10 +614,8 @@ msgstr "The link(s) has been copied to your clipboard" #. (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 "" -"The link(s) of your file(s) will automatically be sent by mail to %1 (%2)" +msgid "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)" +msgstr "The link(s) of your file(s) will automatically be sent by mail to %1 (%2)" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:11 @@ -715,26 +627,16 @@ msgid "The mail has been sent." msgstr "The mail has been sent." #: themes/default/templates/about.html.ep:15 -msgid "" -"The original (and only for now) author is Luc Didry." -msgstr "" -"The original (and only for now) author is Luc Didry." +msgid "The original (and only for now) author is Luc Didry." +msgstr "The original (and only for now) author is 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 "" -"The server was unable to find the file record to add your file part to. " -"Please, contact the administrator." +msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator." +msgstr "The server was unable to find the file record to add your file part to. Please, contact the administrator." #: lib/Lufi/Controller/Files.pm:295 -msgid "" -"This file has been deactivated by the admins. Contact them to know why." -msgstr "" -"This file has been deactivated by the admins. Contact them to know why." +msgid "This file has been deactivated by the admins. Contact them to know why." +msgstr "This file has been deactivated by the admins. Contact them to know why." #: themes/default/templates/invitations/my_invitations.html.ep:46 themes/default/templates/partial/invitations.js.ep:6 msgid "This invitation is normally hidden" @@ -746,14 +648,8 @@ msgid "This invitation is valid until %1." msgstr "This invitation is valid until %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 "" -"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:" +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 "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:" #: themes/default/templates/invitations/my_invitations.html.ep:16 msgid "Toggle visibility" @@ -769,12 +665,8 @@ msgstr "Unable to copy the link(s) to your clipboard" #. ($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 "" -"Unable to get counter for %1. The file does not exists. It will be removed " -"from your localStorage." +msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." +msgstr "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." #. ($short) #: lib/Lufi/Controller/Files.pm:429 @@ -802,7 +694,7 @@ msgstr "Uploaded at" msgid "Uploaded files" msgstr "Uploaded files" -#: themes/default/templates/partial/index.js.ep:30 +#: themes/default/templates/partial/index.js.ep:31 msgid "Websocket communication error" msgstr "Websocket communication error" @@ -819,58 +711,32 @@ msgid "XXX file has been added to upload queue." msgstr "XXX file has been added to upload queue." #: 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 "" -"You can invite someone to send you files through this Lufi instance even if " -"they don’t have an account on it." +msgid "You can invite someone to send you files through this Lufi instance even if they don’t have an account on it." +msgstr "You can invite someone to send you files through this Lufi instance even if they don’t have an account on it." #: 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 "" -"You can see the list of your files by clicking on the \"My files\" link at " -"the top right of this 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 "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 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." #: 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 "" -"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." +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 "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." -#: 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 "" -"You don't seem to have a key in your URL. You won't be able to decrypt the " -"file. Download canceled." +#: 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 "You don't seem to have a key in your URL. You won't be able to decrypt the file. Download canceled." #: 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 "" -"You have attempted to leave this page. The download will be canceled. Are " -"you sure?" +msgid "You have attempted to leave this page. The download will be canceled. Are you sure?" +msgstr "You have attempted to leave this page. The download will be canceled. Are you sure?" #: 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 "" -"You have attempted to leave this page. The upload will be canceled. Are you " -"sure?" +msgid "You have attempted to leave this page. The upload will be canceled. Are you sure?" +msgstr "You have attempted to leave this page. The upload will be canceled. Are you sure?" #: themes/default/templates/logout.html.ep:14 msgid "You have been successfully logged out." @@ -881,14 +747,8 @@ msgid "You must give email addresses." msgstr "You must give email addresses." #: 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 "" -"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)." +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 "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)." #. (format_bytes($json->{size}) #: lib/Lufi/Controller/Files.pm:95 @@ -899,7 +759,7 @@ msgstr "Your file is too big: %1 (maximum size allowed: %2)" msgid "Your password is not valid. Please refresh the page to retry." msgstr "Your password is not valid. Please refresh the page to retry." -#: themes/default/templates/partial/render.js.ep:12 +#: themes/default/templates/partial/render.js.ep:13 msgid "Zip content:" msgstr "Zip content:" From e5bed31f8b05445df4fd248e36ef8804e8d69bb9 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 11:46:53 +0000 Subject: [PATCH 43/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Spanish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 98.9% (187 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/es/ --- themes/default/lib/Lufi/I18N/es.po | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/es.po b/themes/default/lib/Lufi/I18N/es.po index f19a15d..f1cecdf 100644 --- a/themes/default/lib/Lufi/I18N/es.po +++ b/themes/default/lib/Lufi/I18N/es.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-03-07 04:08+0000\n" -"Last-Translator: Berto Te \n" +"PO-Revision-Date: 2020-03-22 11:51+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Spanish \n" +"default-theme/es/>\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -893,3 +893,19 @@ msgstr "o" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "— %1 (%2), que caducará en %3" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Obtenga el código fuente en el repositorio oficial o en su Github mirror" + +#: 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 "" +"Como Lufi es un software gratuito con licencia bajo los términos de la AGPLv3, " +"puedes instalarlo en tu propio servidor. Echa un vistazo a la Wiki para el procedimiento." From 3c0ecd8b04ef8e9da2b298b521443136f0759cd3 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 11:43:11 +0000 Subject: [PATCH 44/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(French)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (189 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/fr/ --- themes/default/lib/Lufi/I18N/fr.po | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr.po b/themes/default/lib/Lufi/I18N/fr.po index 66b5c96..d9a11b7 100644 --- a/themes/default/lib/Lufi/I18N/fr.po +++ b/themes/default/lib/Lufi/I18N/fr.po @@ -8,16 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"PO-Revision-Date: 2020-03-22 11:51+0000\n" "Last-Translator: Luc Didry \n" "Language-Team: French \n" +"default-theme/fr/>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -976,3 +976,27 @@ 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." From bcd5ae4a9a828d8c5947c7fdf6b5ec2937b034cb Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 11:41:57 +0000 Subject: [PATCH 45/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(French=20(France))?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (189 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/fr_FR/ --- themes/default/lib/Lufi/I18N/fr_FR.po | 30 ++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/fr_FR.po b/themes/default/lib/Lufi/I18N/fr_FR.po index 8e2cf0b..abe1be8 100644 --- a/themes/default/lib/Lufi/I18N/fr_FR.po +++ b/themes/default/lib/Lufi/I18N/fr_FR.po @@ -8,16 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"PO-Revision-Date: 2020-03-22 11:51+0000\n" "Last-Translator: Luc Didry \n" "Language-Team: French (France) \n" +"default-theme/fr_FR/>\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -976,3 +976,27 @@ 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." From 6f39b43e7a84cd7244203013cb1b915f3aa30652 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 11:44:50 +0000 Subject: [PATCH 46/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Occitan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (189 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/oc/ --- themes/default/lib/Lufi/I18N/oc.po | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/oc.po b/themes/default/lib/Lufi/I18N/oc.po index b29b278..a36c955 100644 --- a/themes/default/lib/Lufi/I18N/oc.po +++ b/themes/default/lib/Lufi/I18N/oc.po @@ -11,16 +11,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:21+0000\n" +"PO-Revision-Date: 2020-03-22 11:51+0000\n" "Last-Translator: Luc Didry \n" "Language-Team: Occitan \n" +"default-theme/oc/>\n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -973,3 +973,19 @@ msgstr "o" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "— %1 (%2), qu’expirarà lo %3" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Recuperatz lo còdi font sul depaus oficial o sus son miralh Github" + +#: 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 "" +"Ja que Lufi es un logicial liure somés als tèrmes de la licéncia AGPLv3, podètz l’" +"installar sus vòstre pròpri servidor. Mercés de consultar lo Wiki per veire la procedura." From 5087d8fe72e0a3ae8fc9c901bb8b5392534dccef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20PAG=C3=88S?= Date: Sun, 22 Mar 2020 11:45:57 +0000 Subject: [PATCH 47/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Occitan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (189 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/oc/ --- themes/default/lib/Lufi/I18N/oc.po | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/themes/default/lib/Lufi/I18N/oc.po b/themes/default/lib/Lufi/I18N/oc.po index a36c955..d5cc48c 100644 --- a/themes/default/lib/Lufi/I18N/oc.po +++ b/themes/default/lib/Lufi/I18N/oc.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2020-03-22 11:51+0000\n" -"Last-Translator: Luc Didry \n" +"Last-Translator: Quentin PAGÈS \n" "Language-Team: Occitan \n" "Language: oc\n" @@ -989,3 +989,11 @@ msgstr "" "installar sus vòstre pròpri servidor. Mercés de consultar lo Wiki per veire la procedura." + +#: themes/default/templates/partial/index.js.ep:24 +msgid "File uploaded" +msgstr "Fichièr mandat" + +#: themes/default/templates/partial/render.js.ep:9 +msgid "File downloaded" +msgstr "Fichièr telecargat" From 74d1af01239ef4c85090613a3c44cce1ef8b445f Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 18:27:37 +0000 Subject: [PATCH 48/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Swedish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 84.6% (160 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/sv/ --- themes/default/lib/Lufi/I18N/sv.po | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/sv.po b/themes/default/lib/Lufi/I18N/sv.po index 605d91c..7990fe2 100644 --- a/themes/default/lib/Lufi/I18N/sv.po +++ b/themes/default/lib/Lufi/I18N/sv.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-02-23 21:08+0000\n" -"Last-Translator: Filip Bengtsson \n" +"PO-Revision-Date: 2020-03-22 18:28+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Swedish \n" +"default-theme/sv/>\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -843,3 +843,19 @@ msgstr "eller" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "— %1 (%2), som går ut den %3" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Hämta källkoden från det officiella arkivet eller från spegelsidan på Github" + +#: 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 "" +"Du kan installera Lufi på din egen server eftersom det är en fri mjukvara " +"publicerad under licensen AGPLv3. Ta en titt på wikin för att " +"se hur." From f91326fe9c810b5055cdc9681a8ae851b006d9bb Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 18:20:27 +0000 Subject: [PATCH 49/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Catalan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 66.6% (126 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/ca/ --- themes/default/lib/Lufi/I18N/ca.po | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ca.po b/themes/default/lib/Lufi/I18N/ca.po index d22c899..4b3c6b8 100644 --- a/themes/default/lib/Lufi/I18N/ca.po +++ b/themes/default/lib/Lufi/I18N/ca.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-01-01 17:14+0000\n" -"Last-Translator: Francesc \n" +"PO-Revision-Date: 2020-03-22 18:29+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Catalan \n" +"default-theme/ca/>\n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -628,7 +628,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'administrador només pot veure el nom del fitxer, la seva mida i el seu\n" +"L'administrador només pot veure el nom del fitxer, la seva mida i el seu " "mimetype (quina mena de fitxer és: vídeo, text, etc.)." #: lib/Lufi/Controller/Mail.pm:53 @@ -942,3 +942,20 @@ msgstr "o" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Obteniu el codi font al repositori oficial o a la seva rèplica a " +"Github" + +#: 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 "" +"Com que Lufi és programari lliure, autoritzat sota els termes de l’AGPLv3, el podeu " +"instal·lar al vostre propi servidor. Pel que fa a com fer-ho, feu un cop " +"d'ull al Wiki." From fdbb832f701a87bd1f7cf0f45e270b17f4b48fab Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 18:18:30 +0000 Subject: [PATCH 50/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(German)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 98.9% (187 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/de/ --- themes/default/lib/Lufi/I18N/de.po | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/de.po b/themes/default/lib/Lufi/I18N/de.po index 0fbfc04..a6a7fb3 100644 --- a/themes/default/lib/Lufi/I18N/de.po +++ b/themes/default/lib/Lufi/I18N/de.po @@ -5,16 +5,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:31+0000\n" +"PO-Revision-Date: 2020-03-22 18:29+0000\n" "Last-Translator: Luc Didry \n" "Language-Team: German \n" +"default-theme/de/>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -979,3 +979,21 @@ msgstr "oder" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "— %1 (%2), läuft ab am %3" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Holen Sie sich den Quellcode vom offiziellen Repository oder von " +"dessen Github " +"mirror" + +#: 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 "" +"Da es sich bei Lufi um eine freie Software handelt, die unter den edingungen " +"der AGPLv3 lizenziert ist, können Sie sie auf Ihrem eigenen Server " +"installieren. Werfen Sie einen Blick auf die Wiki für das " +"Verfahren." From 97203c85f200357c3e7516f43c9292c06881a373 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 18:23:29 +0000 Subject: [PATCH 51/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Italian)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 58.7% (111 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/it/ --- themes/default/lib/Lufi/I18N/it.po | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/it.po b/themes/default/lib/Lufi/I18N/it.po index cf2e34a..c8e6206 100644 --- a/themes/default/lib/Lufi/I18N/it.po +++ b/themes/default/lib/Lufi/I18N/it.po @@ -8,16 +8,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2020-03-22 18:29+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Italian \n" +"default-theme/it/>\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -922,3 +922,19 @@ msgstr "o" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" 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 "" +"Poiché Lufi è un software libero soggetto ai termini della licenza AGPLv3, potete " +"installarlo sul vostro server. Si consulti Wiki per " +"vedere la procedura." + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Ottenere il codice sorgente sul repository ufficiale o sul suo mirror Github" From a8a298929634c1797c73c808b2208dbf2e7a71b6 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 18:25:05 +0000 Subject: [PATCH 52/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Dutch)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 60.3% (114 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/nl/ --- themes/default/lib/Lufi/I18N/nl.po | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/nl.po b/themes/default/lib/Lufi/I18N/nl.po index 9eb527d..89b03fd 100644 --- a/themes/default/lib/Lufi/I18N/nl.po +++ b/themes/default/lib/Lufi/I18N/nl.po @@ -4,16 +4,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2020-03-22 18:29+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Dutch \n" +"default-theme/nl/>\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -921,3 +921,19 @@ msgstr "of" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Krijg de broncode op de officiële repository of op Github mirror" + +#: 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 "" +"Aangezien Lufi een gratis software id die gelicentieerd staat onder de " +"voorwaarden van AGPLv3, kan je het installeren op je eigen server. Bekijk Wiki voor de procedure." From 030384a27ae5f42c06b35cc3462c5326989330f6 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Sun, 22 Mar 2020 18:26:19 +0000 Subject: [PATCH 53/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Portuguese)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 58.7% (111 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/pt/ --- themes/default/lib/Lufi/I18N/pt.po | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/pt.po b/themes/default/lib/Lufi/I18N/pt.po index 2dcd505..702a654 100644 --- a/themes/default/lib/Lufi/I18N/pt.po +++ b/themes/default/lib/Lufi/I18N/pt.po @@ -9,16 +9,16 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-11-18 10:05+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2020-03-22 18:29+0000\n" +"Last-Translator: Luc Didry \n" "Language-Team: Portuguese \n" +"default-theme/pt/>\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -933,3 +933,19 @@ msgstr "ou" #: themes/default/templates/invitations/notification_files_sent.mail.ep:12 msgid "— %1 (%2), that will expire on %3" msgstr "" + +#: themes/default/templates/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" +msgstr "" +"Recupere o código-fonte no o depósito oficial ou então réplicas Github" + +#: 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 "" +"Como Lufi é um programa livre sob os termos da licença AGPLv3, pode instalar-lo no " +"seu prórpio servidor. Para saber mais clique aqui Wiki para " +"ver o procedimento." From 4f4663cc69626fa32a0d0b03637d5824f12baec2 Mon Sep 17 00:00:00 2001 From: Berto Te Date: Mon, 23 Mar 2020 02:51:30 +0000 Subject: [PATCH 54/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Spanish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (189 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/es/ --- themes/default/lib/Lufi/I18N/es.po | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/es.po b/themes/default/lib/Lufi/I18N/es.po index f1cecdf..b0fe1c3 100644 --- a/themes/default/lib/Lufi/I18N/es.po +++ b/themes/default/lib/Lufi/I18N/es.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: 2020-03-22 11:51+0000\n" -"Last-Translator: Luc Didry \n" +"PO-Revision-Date: 2020-03-24 03:08+0000\n" +"Last-Translator: Berto Te \n" "Language-Team: Spanish \n" "Language: es\n" @@ -22,7 +22,7 @@ msgstr "" #. (max_delay) #: themes/default/templates/index.html.ep:56 themes/default/templates/index.html.ep:65 themes/default/templates/index.html.ep:66 msgid "%1 days" -msgstr "%1 día" +msgstr "%1 días" #. (stash('ldap_user') #: themes/default/templates/invitations/invite.mail.ep:2 @@ -909,3 +909,11 @@ msgstr "" "puedes instalarlo en tu propio servidor. Echa un vistazo a la Wiki para el procedimiento." + +#: themes/default/templates/partial/index.js.ep:24 +msgid "File uploaded" +msgstr "Archivo enviado" + +#: themes/default/templates/partial/render.js.ep:9 +msgid "File downloaded" +msgstr "Archivo descargado" From 50563222bf29a577b02b5343e10862e2ef335175 Mon Sep 17 00:00:00 2001 From: Al-Hassan Abdel-Raouf Date: Fri, 10 Apr 2020 09:17:00 +0000 Subject: [PATCH 55/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Arabic)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 99.4% (188 of 189 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/ar/ --- themes/default/lib/Lufi/I18N/ar.po | 83 ++++++++++++++++++++++++------ 1 file changed, 68 insertions(+), 15 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ar.po b/themes/default/lib/Lufi/I18N/ar.po index 2a97dd7..7ee5e1e 100644 --- a/themes/default/lib/Lufi/I18N/ar.po +++ b/themes/default/lib/Lufi/I18N/ar.po @@ -5,17 +5,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2019-12-20 19:13+0000\n" -"Last-Translator: ButterflyOfFire \n" +"PO-Revision-Date: 2020-04-11 10:08+0000\n" +"Last-Translator: Al-Hassan Abdel-Raouf \n" "Language-Team: Arabic \n" +"default-theme/ar/>\n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "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 3.9.1\n" +"X-Generator: Weblate 3.11.2\n" #. ($delay) #. (max_delay) @@ -79,7 +79,7 @@ msgstr "إضافة كلمة سرية إلى الملف" msgid "" "Adding URLs not related to this Lufi instance to the mail body or subject is " "prohibited." -msgstr "" +msgstr "يُحظر اضافه رابط غير مرتبط بسيرفر Lufi هذا في نص البريد او الموضوع." #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" @@ -193,6 +193,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" @@ -292,7 +294,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" @@ -380,7 +382,7 @@ 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 @@ -430,6 +432,13 @@ msgid "" "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" +"لم يتم العثور على ملفات في موقع التخزين المحلي الجديد ولكننا وجدنا ملفات في " +"الموقع القديم.\\n" +"هل تريد استيراد تلك المعلومات؟\\n" +"\\n" +"يرجى ملاحظة أن هذه هي المرة الوحيدة التي سنطلب فيها منك ذلك." #: themes/default/templates/files.html.ep:34 msgid "Mail" @@ -467,6 +476,8 @@ msgid "" "stored in localStorage: if you delete your localStorage data, you'll lose " "this list." msgstr "" +"سيتم سرد الملفات المرسلة باستخدام هذا المتصفح فقط هنا. يتم تخزين هذه القائمة " +"في التخزين المحلي: إذا قمت بحذف بيانات التخزين المحلية ، فستفقد هذه القائمة." #: themes/default/templates/index.html.ep:106 themes/default/templates/login.html.ep:21 themes/default/templates/render.html.ep:26 msgid "Password" @@ -490,6 +501,8 @@ 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" @@ -545,6 +558,8 @@ 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 @@ -607,6 +622,8 @@ msgid "" "The body of the mail must contain at least one URL pointing to a file hosted " "on this instance." msgstr "" +"يجب أن يحتوي نص البريد على رابط واحد على الأقل يشير إلى ملف مستضاف على هذا " +"السيرفر." #: themes/default/templates/partial/files.js.ep:11 msgid "The data has been successfully imported." @@ -653,6 +670,8 @@ 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 @@ -662,7 +681,7 @@ 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 "سيتم إرسال بريد الدعوة من عنوان بريدك الإلكتروني (%1)." #: themes/default/templates/partial/index.js.ep:16 msgid "The link(s) has been copied to your clipboard" @@ -672,12 +691,13 @@ msgstr "لقد تم نسخ الرابط أو الروابط إلى الحافظ #: 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 "" +msgstr "سيتم إرسال الرابط (الروابط) لملفاتك تلقائيًا عن طريق البريد إلى %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 "" +"سيتم إرسال الارتباط (الارتباطات) لملفاتك تلقائيًا عن طريق البريد إلى %1." #: lib/Lufi/Controller/Mail.pm:97 msgid "The mail has been sent." @@ -696,6 +716,8 @@ 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:295 msgid "" @@ -717,10 +739,12 @@ msgid "" "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 msgid "URL" @@ -736,6 +760,8 @@ msgid "" "Unable to get counter for %1. The file does not exists. It will be removed " "from your localStorage." msgstr "" +"غير قادر على الحصول على عداد ل%1. الملف غير موجود. ستتم إزالته من التخزين " +"المحلي." #. ($short) #: lib/Lufi/Controller/Files.pm:429 @@ -784,6 +810,8 @@ 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 "" @@ -795,7 +823,7 @@ msgstr "" #: lib/Lufi/Controller/Mail.pm:42 msgid "You can't add URLs that are not related to this instance." -msgstr "" +msgstr "لا يمكنك إضافة روابط غير مرتبطة بهذا السيرفر." #: themes/default/templates/about.html.ep:8 msgid "" @@ -812,6 +840,8 @@ msgid "" "You don't seem to have a key in your URL. You won't be able to decrypt the " "file. Download canceled." msgstr "" +"يبدو أنك لا تملك مفتاحًا في الرابط الخاص بك. لن تتمكن من فك تشفير الملف. تم " +"إلغاء التنزيل." #: themes/default/templates/partial/render.js.ep:7 msgid "" @@ -860,12 +890,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، سيتم الاحتفاظ بالملف %1 يوم (أيام)." #. (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: " @@ -878,12 +908,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" @@ -896,4 +926,27 @@ 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/about.html.ep:18 +msgid "Get the source code on the official repository or on its Github mirror" msgstr "" +"احصل علي الكود من المستودع الرسمي او من Github " + +#: themes/default/templates/partial/index.js.ep:24 +msgid "File uploaded" +msgstr "تم رفع الملف" + +#: themes/default/templates/partial/render.js.ep:9 +msgid "File downloaded" +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 يمكنك تثبيته على الخادم الخاص بك. إلقي " +"نظره علي الويكي لتتعرف علي الخطوات" From 53342a31ba44a179a848edb725153f252aaeaaff Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Fri, 24 Apr 2020 18:39:00 +0200 Subject: [PATCH 56/66] =?UTF-8?q?=E2=9C=A8=20=E2=80=94=20Fix=20#183=20?= =?UTF-8?q?=E2=80=94=20Add=20config=20API=20endpoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG | 1 + Makefile | 2 +- lib/Lufi.pm | 5 +++++ lib/Lufi/Controller/Misc.pm | 22 ++++++++++++++++++++++ t/test.t | 32 +++++++++++++++++++++++++++++++- 5 files changed, 60 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 58e4007..320c077 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ Revision history for Lufi ?.??.? ????-??-?? - Notifications when uploading and downloading files (#181) - Use Weblate instead of Zanata for translations (https://weblate.framasoft.org/projects/lufi/development/) + - Add config API endpoint (#183) 0.04.6 2019-11-07 - Now can send large files (>2Gio) while using a DB other than SQLite (#165) diff --git a/Makefile b/Makefile index cdc7258..58cfe91 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ locales: $(XGETTEXT) $(EXTRACTDIR) -o $(ENPO) 2>/dev/null podcheck: - podchecker lib/Lufi/DB/File.pm lib/Lufi/DB/Slice.pm + podchecker lib/Lufi/DB/File.pm lib/Lufi/DB/Slice.pm lib/Lufi/DB/Invitation.pm cover: PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='-MDevel::Cover' $(CARTON) cover --ignore_re '^local' diff --git a/lib/Lufi.pm b/lib/Lufi.pm index ffadf77..b97fba5 100644 --- a/lib/Lufi.pm +++ b/lib/Lufi.pm @@ -159,6 +159,11 @@ sub startup { ->to('Misc#about') ->name('about'); + # About config API endpoint + $r->get('/about/config') + ->to('Misc#config_infos') + ->name('config'); + # Generated js files $r->get('/partial/:file') ->to('Misc#js_files') diff --git a/lib/Lufi/Controller/Misc.pm b/lib/Lufi/Controller/Misc.pm index d28791b..fef0ea7 100644 --- a/lib/Lufi/Controller/Misc.pm +++ b/lib/Lufi/Controller/Misc.pm @@ -2,6 +2,7 @@ package Lufi::Controller::Misc; use Mojo::Base 'Mojolicious::Controller'; use Mojo::File; +use Mojo::JSON qw(true false); use Mojo::URL; use Lufi::DB::File; @@ -34,6 +35,27 @@ sub about { shift->render(template => 'about'); } +sub config_infos { + my $c = shift; + + $c->render( + json => { + report => $c->config('report'), + instance_name => $c->config('instance_name'), + max_file_size => $c->config('max_file_size'), + broadcast_message => $c->config('broadcast_message'), + default_delay => $c->config('default_delay'), + max_delay => $c->config('max_delay'), + delay_for_size => $c->config('delay_for_size'), + allow_pwd_on_files => $c->config('allow_pwd_on_files'), + force_burn_after_reading => $c->config('force_burn_after_reading'), + keep_ip_during => $c->config('keep_ip_during'), + stop_upload => (-f 'stop-upload' || -f 'stop-upload.manual') ? true : false, + need_authentication => (defined($c->config('ldap')) || defined($c->config('htpasswd'))) ? true : false, + } + ); +} + sub js_files { my $c = shift; diff --git a/t/test.t b/t/test.t index 4b4dedb..78fa19b 100644 --- a/t/test.t +++ b/t/test.t @@ -1,7 +1,7 @@ # vim:set sw=4 ts=4 sts=4 ft=perl expandtab: use Mojo::Base -strict; use Mojo::File; -use Mojo::JSON qw(to_json from_json true); +use Mojo::JSON qw(to_json from_json true false); use Mojolicious; use Test::More; @@ -87,16 +87,19 @@ $t->get_ok('/') ->status_is(200) ->content_like(qr@Lufi@i); +test_infos_api(false); test_upload_file(); test_download_file(); ## Test htpasswd switch_to_htpasswd(); +test_infos_api(true); auth_test_suite('luc', 'toto'); restore_config(); ## Test LDAP switch_to_ldap(); +test_infos_api(true); auth_test_suite('zoidberg', 'zoidberg'); restore_config(); @@ -105,6 +108,33 @@ done_testing(); ###### ### Functions ## +sub test_infos_api { + my $auth = shift; + + $t->get_ok('/about/config') + ->status_is(200) + ->json_has( + '/allow_pwd_on_files', '/need_authentication', '/max_delay', + '/instance_name', '/broadcast_message', '/max_file_size', + '/keep_ip_during', '/report', '/stop_upload', + '/delay_for_size', '/default_delay', '/force_burn_after_reading' + ) + ->json_is( + '/allow_pwd_on_files' => 1, + '/need_authentication' => $auth, + '/max_delay' => 0, + '/instance_name' => 'Lufi', + '/broadcast_message' => undef, + '/max_file_size' => undef, + '/keep_ip_during' => 365, + '/report' => 'mailto:report@example.com', + '/stop_upload' => false, + '/delay_for_size' => undef, + '/default_delay' => 0, + '/force_burn_after_reading' => 0 + ); +} + sub test_upload_file { $t->websocket_ok('/upload/') ->send_ok($msg.'XXMOJOXX'.$encrypted) From c0a12abdb6600a03bc241003a5f114c0e8362af1 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Thu, 7 May 2020 16:44:08 +0200 Subject: [PATCH 57/66] =?UTF-8?q?=F0=9F=90=9B=20=E2=80=94=20Fix=20#188=20?= =?UTF-8?q?=E2=80=94=20Add=20background=20color=20to=20body?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/default/public/css/lufi.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/themes/default/public/css/lufi.css b/themes/default/public/css/lufi.css index 2a6e250..477ffd9 100644 --- a/themes/default/public/css/lufi.css +++ b/themes/default/public/css/lufi.css @@ -1,3 +1,6 @@ +body { + background-color: #ffffff; +} #files { border: 2px dashed #BBB; border-radius: 5px; From 17600fd6794c7763ae14537a8b7a345b1120b378 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Wed, 20 May 2020 08:54:26 +0200 Subject: [PATCH 58/66] =?UTF-8?q?=E2=9C=A8=20=E2=80=94=20Fix=20#174=20?= =?UTF-8?q?=E2=80=94=20Show=20latest=20tag=20and=20commit=20of=20the=20ins?= =?UTF-8?q?tance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s showed in about page and config API endpoint --- CHANGELOG | 1 + lib/Lufi/Controller/Misc.pm | 8 ++++++- lib/Lufi/Plugin/Helpers.pm | 33 +++++++++++++++++++------- themes/default/lib/Lufi/I18N/en.po | 16 ++++++++++++- themes/default/lib/Lufi/I18N/fr.po | 14 +++++++++++ themes/default/lib/Lufi/I18N/lufi.pot | 16 ++++++++++++- themes/default/templates/about.html.ep | 3 +++ 7 files changed, 79 insertions(+), 12 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 320c077..d046cfa 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ Revision history for Lufi - Notifications when uploading and downloading files (#181) - Use Weblate instead of Zanata for translations (https://weblate.framasoft.org/projects/lufi/development/) - Add config API endpoint (#183) + - Show latest tag and commit of the instance in about page and config API endpoint (#174) 0.04.6 2019-11-07 - Now can send large files (>2Gio) while using a DB other than SQLite (#165) diff --git a/lib/Lufi/Controller/Misc.pm b/lib/Lufi/Controller/Misc.pm index fef0ea7..be2b9a1 100644 --- a/lib/Lufi/Controller/Misc.pm +++ b/lib/Lufi/Controller/Misc.pm @@ -32,7 +32,12 @@ sub change_lang { } sub about { - shift->render(template => 'about'); + my $c = shift; + + $c->render( + template => 'about', + version => $c->git_version + ); } sub config_infos { @@ -52,6 +57,7 @@ sub config_infos { keep_ip_during => $c->config('keep_ip_during'), stop_upload => (-f 'stop-upload' || -f 'stop-upload.manual') ? true : false, need_authentication => (defined($c->config('ldap')) || defined($c->config('htpasswd'))) ? true : false, + version => $c->git_version } ); } diff --git a/lib/Lufi/Plugin/Helpers.pm b/lib/Lufi/Plugin/Helpers.pm index b06fda0..293fb05 100644 --- a/lib/Lufi/Plugin/Helpers.pm +++ b/lib/Lufi/Plugin/Helpers.pm @@ -69,14 +69,15 @@ sub register { $app->helper(create_invitation_token => \&_create_invitation_token); $app->helper(is_guest => \&_is_guest); $app->helper(get_date_lang => \&_get_date_lang); + $app->helper(git_version => \&_git_version); } sub _pg { my $c = shift; - my $pgdb = $c->config('pgdb'); - my $port = (defined $pgdb->{port}) ? $pgdb->{port}: 5432; - my $addr = $c->pg_url({ + my $pgdb = $c->config('pgdb'); + my $port = (defined $pgdb->{port}) ? $pgdb->{port}: 5432; + my $addr = $c->pg_url({ host => $pgdb->{host}, port => $port, database => $pgdb->{database}, user => $pgdb->{user}, pwd => $pgdb->{pwd} }); state $pg = Mojo::Pg->new($addr); @@ -85,11 +86,11 @@ sub _pg { } sub _mysql { - my $c = shift; + my $c = shift; - my $mysqldb = $c->config('mysqldb'); - my $port = (defined $mysqldb->{port}) ? $mysqldb->{port}: 3306; - my $addr = $c->pg_url({ + my $mysqldb = $c->config('mysqldb'); + my $port = (defined $mysqldb->{port}) ? $mysqldb->{port}: 3306; + my $addr = $c->pg_url({ host => $mysqldb->{host}, port => $port, database => $mysqldb->{database}, user => $mysqldb->{user}, pwd => $mysqldb->{pwd} }); $addr =~ s/postgresql/mysql/; @@ -123,7 +124,7 @@ sub _provisioning { } sub _get_empty { - my $c = shift; + my $c = shift; my $ldfile = Lufi::DB::File->new(app => $c->app)->get_empty; @@ -219,7 +220,7 @@ my %date_langs = ( ); sub _get_date_lang { - my $c = shift; + my $c = shift; my $l = $c->languages(); @@ -231,4 +232,18 @@ sub _get_date_lang { return Date::Language->new('English'); } +sub _git_version { + my $c = shift; + + my $last_tag = `git describe --abbrev=0`; + my $last_commit = `git rev-parse HEAD`; + chomp $last_tag; + chomp $last_commit; + + return { + tag => $last_tag, + commit => $last_commit + } +} + 1; diff --git a/themes/default/lib/Lufi/I18N/en.po b/themes/default/lib/Lufi/I18N/en.po index 51b3c8d..cf37d06 100644 --- a/themes/default/lib/Lufi/I18N/en.po +++ b/themes/default/lib/Lufi/I18N/en.po @@ -94,7 +94,7 @@ msgstr "As Lufi is a free software licensed under of the terms of the %s', stash('version') +#: themes/default/templates/about.html.ep:22 +msgid "Latest commit of this instance: %1" +msgstr "Latest commit of this instance: %1" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:21 +msgid "Latest tag of this instance: %1" +msgstr "Latest tag of this instance: %1" + #: themes/default/templates/login.html.ep:15 msgid "Login" msgstr "Login" @@ -694,6 +704,10 @@ msgstr "Uploaded at" msgid "Uploaded files" msgstr "Uploaded files" +#: themes/default/templates/about.html.ep:20 +msgid "Version" +msgstr "Version" + #: themes/default/templates/partial/index.js.ep:31 msgid "Websocket communication error" msgstr "Websocket communication error" diff --git a/themes/default/lib/Lufi/I18N/fr.po b/themes/default/lib/Lufi/I18N/fr.po index d9a11b7..f8b3ed3 100644 --- a/themes/default/lib/Lufi/I18N/fr.po +++ b/themes/default/lib/Lufi/I18N/fr.po @@ -441,6 +441,16 @@ msgstr "Javascript est désactivé. Lufi ne fonctionnera pas." msgid "Language" msgstr "Langue" +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:22 +msgid "Latest commit of this instance: %1" +msgstr "Dernier commit de cette instance : %1" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:21 +msgid "Latest tag of this instance: %1" +msgstr "Dernière étiquette de cette instance : %1" + #: themes/default/templates/login.html.ep:15 msgid "Login" msgstr "Identifiant" @@ -833,6 +843,10 @@ msgstr "Envoyé le" msgid "Uploaded files" msgstr "Fichiers envoyés" +#: themes/default/templates/about.html.ep:20 +msgid "Version" +msgstr "Version" + #: themes/default/templates/partial/index.js.ep:30 msgid "Websocket communication error" msgstr "Erreur de communication WebSocket" diff --git a/themes/default/lib/Lufi/I18N/lufi.pot b/themes/default/lib/Lufi/I18N/lufi.pot index fa78471..c55bda4 100644 --- a/themes/default/lib/Lufi/I18N/lufi.pot +++ b/themes/default/lib/Lufi/I18N/lufi.pot @@ -94,7 +94,7 @@ msgstr "" msgid "Asking for file part XX1 of %1" msgstr "" -#: themes/default/templates/about.html.ep:20 +#: themes/default/templates/about.html.ep:23 msgid "Back to homepage" msgstr "" @@ -389,6 +389,16 @@ msgstr "" msgid "Language" msgstr "" +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:22 +msgid "Latest commit of this instance: %1" +msgstr "" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:21 +msgid "Latest tag of this instance: %1" +msgstr "" + #: themes/default/templates/login.html.ep:15 msgid "Login" msgstr "" @@ -694,6 +704,10 @@ msgstr "" msgid "Uploaded files" msgstr "" +#: themes/default/templates/about.html.ep:20 +msgid "Version" +msgstr "" + #: themes/default/templates/partial/index.js.ep:31 msgid "Websocket communication error" msgstr "" diff --git a/themes/default/templates/about.html.ep b/themes/default/templates/about.html.ep index 27c4854..bf491d5 100644 --- a/themes/default/templates/about.html.ep +++ b/themes/default/templates/about.html.ep @@ -17,5 +17,8 @@

<%== l('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.') %>
<%== l('Get the source code on the official repository or on its Github mirror') %>

+

<%= l('Version') %>

+

<%== l('Latest tag of this instance: %1', sprintf('%s', stash('version')->{tag}, stash('version')->{tag})) %>

+

<%== l('Latest commit of this instance: %1', sprintf('%s', stash('version')->{commit}, stash('version')->{commit})) %>

<%= link_to url_for('/') => ( class => "btn waves-effect waves-light cyan" ) => begin %><%= l('Back to homepage') %><% end%>

From 38319d2e14e3e8fc17bc36970557b789e638205a Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Wed, 20 May 2020 22:24:31 +0000 Subject: [PATCH 59/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Arabic)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 99.4% (191 of 192 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/ar/ --- themes/default/lib/Lufi/I18N/ar.po | 31 +++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ar.po b/themes/default/lib/Lufi/I18N/ar.po index 7ee5e1e..aeccf68 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: 2020-04-11 10:08+0000\n" -"Last-Translator: Al-Hassan Abdel-Raouf \n" +"PO-Revision-Date: 2020-05-22 08:24+0000\n" +"Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -572,7 +572,7 @@ msgstr "أظهر الدعوات المخفية" #: themes/default/templates/partial/render.js.ep:11 msgid "Show zip content" -msgstr "أظهر محتوى الملف المضغوط zip" +msgstr "أظهر محتوى الملف المضغوط zip" #: themes/default/templates/layouts/default.html.ep:40 themes/default/templates/layouts/default.html.ep:73 themes/default/templates/login.html.ep:28 themes/default/templates/logout.html.ep:17 msgid "Signin" @@ -760,8 +760,7 @@ msgid "" "Unable to get counter for %1. The file does not exists. It will be removed " "from your localStorage." msgstr "" -"غير قادر على الحصول على عداد ل%1. الملف غير موجود. ستتم إزالته من التخزين " -"المحلي." +"تعذّر الحصول على عداد لـ %1. الملف غير موجود. ستتم إزالته من localStorage." #. ($short) #: lib/Lufi/Controller/Files.pm:429 @@ -946,7 +945,21 @@ 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 يمكنك تثبيته على الخادم الخاص بك. إلقي " -"نظره علي الويكي لتتعرف علي الخطوات" +"Lufi هو برنامج حر مرخص بموجب شروط AGPLv3 يمكنك تثبيته على خادمك الخاص. إلقي نظرة " +"على الويكي للتعرّف على كيفية القيام بذلك." + +#: themes/default/templates/about.html.ep:20 +msgid "Version" +msgstr "الإصدار" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:21 +msgid "Latest tag of this instance: %1" +msgstr "آخر علامة على مثيل الخادم هذا: %1" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:22 +msgid "Latest commit of this instance: %1" +msgstr "آخر مراجعة على مثيل الخادم هذا: %1" From d09134b157c155cc7fb53c22ee58c2f453a7576c Mon Sep 17 00:00:00 2001 From: Berto Te Date: Thu, 21 May 2020 08:08:05 +0000 Subject: [PATCH 60/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Spanish)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (192 of 192 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/es/ --- themes/default/lib/Lufi/I18N/es.po | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/themes/default/lib/Lufi/I18N/es.po b/themes/default/lib/Lufi/I18N/es.po index b0fe1c3..35d53c1 100644 --- a/themes/default/lib/Lufi/I18N/es.po +++ b/themes/default/lib/Lufi/I18N/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-03-24 03:08+0000\n" +"PO-Revision-Date: 2020-05-22 08:24+0000\n" "Last-Translator: Berto Te \n" "Language-Team: Spanish \n" @@ -917,3 +917,17 @@ msgstr "Archivo enviado" #: themes/default/templates/partial/render.js.ep:9 msgid "File downloaded" msgstr "Archivo descargado" + +#: themes/default/templates/about.html.ep:20 +msgid "Version" +msgstr "Versión" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:21 +msgid "Latest tag of this instance: %1" +msgstr "Última etiqueta de esta instancia: %1" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:22 +msgid "Latest commit of this instance: %1" +msgstr "Última confirmación de esta instancia: %1" From 8ee2e6f4c7e863f53234a94a60e7c44a71bc0248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Quentin=20PAG=C3=88S?= Date: Wed, 20 May 2020 19:35:53 +0000 Subject: [PATCH 61/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Occitan)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (192 of 192 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/oc/ --- themes/default/lib/Lufi/I18N/oc.po | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/themes/default/lib/Lufi/I18N/oc.po b/themes/default/lib/Lufi/I18N/oc.po index d5cc48c..8055a01 100644 --- a/themes/default/lib/Lufi/I18N/oc.po +++ b/themes/default/lib/Lufi/I18N/oc.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-03-22 11:51+0000\n" +"PO-Revision-Date: 2020-05-22 08:24+0000\n" "Last-Translator: Quentin PAGÈS \n" "Language-Team: Occitan \n" @@ -997,3 +997,17 @@ msgstr "Fichièr mandat" #: themes/default/templates/partial/render.js.ep:9 msgid "File downloaded" msgstr "Fichièr telecargat" + +#: themes/default/templates/about.html.ep:20 +msgid "Version" +msgstr "Version" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:21 +msgid "Latest tag of this instance: %1" +msgstr "Darrièra etiqueta d’aquesta instància : %1" + +#. (sprintf('%s', stash('version') +#: themes/default/templates/about.html.ep:22 +msgid "Latest commit of this instance: %1" +msgstr "Darrièr commit d’aquesta instància : %1" From 6163ff0ed409147db77fa3937207d5a305cd0338 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Fri, 29 May 2020 12:03:29 +0000 Subject: [PATCH 62/66] =?UTF-8?q?=F0=9F=8C=90=20Translated=20using=20Webla?= =?UTF-8?q?te=20(Arabic)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (192 of 192 strings) Translation: Lufi/Default theme Translate-URL: https://weblate.framasoft.org/projects/lufi/default-theme/ar/ --- themes/default/lib/Lufi/I18N/ar.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/themes/default/lib/Lufi/I18N/ar.po b/themes/default/lib/Lufi/I18N/ar.po index aeccf68..e418b1c 100644 --- a/themes/default/lib/Lufi/I18N/ar.po +++ b/themes/default/lib/Lufi/I18N/ar.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2020-05-22 08:24+0000\n" +"PO-Revision-Date: 2020-05-30 12:24+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -79,7 +79,7 @@ msgstr "إضافة كلمة سرية إلى الملف" msgid "" "Adding URLs not related to this Lufi instance to the mail body or subject is " "prohibited." -msgstr "يُحظر اضافه رابط غير مرتبط بسيرفر Lufi هذا في نص البريد او الموضوع." +msgstr "يُحظر إضافة رابط غير مرتبط بسيرفر Lufi هذا في نص البريد أو في الموضوع." #: themes/default/templates/partial/invitations.js.ep:3 msgid "Are you sure you want to delete the selected invitations?" @@ -640,7 +640,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:468 msgid "The file has already been deleted" From 8d6f1032f0dc30138c8bf1f02b021954333c90ef Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Wed, 20 May 2020 08:56:56 +0200 Subject: [PATCH 63/66] =?UTF-8?q?=E2=9C=A8=20=E2=80=94=20Add=20support=20f?= =?UTF-8?q?or=20Swift=20object=20storage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Swift support - script to upload the existing files to Swift --- .gitlab-ci.yml | 6 + CHANGELOG | 1 + Makefile | 8 + cpanfile | 12 +- cpanfile.snapshot | 805 +++++++++++++++++++------- lib/Lufi.pm | 11 +- lib/Lufi/Command/copyFilesToSwift.pm | 68 +++ lib/Lufi/Command/sqliteToOtherDB.pm | 18 +- lib/Lufi/Command/theme.pm | 2 +- lib/Lufi/Controller/Files.pm | 16 +- lib/Lufi/DB/File.pm | 32 +- lib/Lufi/DB/Slice.pm | 164 +++++- lib/Lufi/DB/Slice/Mysql.pm | 2 + lib/Lufi/DB/Slice/Pg.pm | 2 + lib/Mounter.pm | 3 + lufi.conf.template | 17 +- t/mysql.conf | 50 +- t/postgresql.conf | 51 +- t/sqlite.conf | 50 +- t/test.t | 27 +- themes/default/lib/Lufi/I18N/en.po | 32 +- themes/default/lib/Lufi/I18N/lufi.pot | 32 +- utilities/migrations/mysql.sql | 4 + utilities/migrations/pg.sql | 6 + 24 files changed, 1123 insertions(+), 296 deletions(-) create mode 100644 lib/Lufi/Command/copyFilesToSwift.pm diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d68ee6a..e7fb929 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -58,6 +58,8 @@ variables: services: - name: rroemhild/test-openldap alias: rroemhild-test-openldap + - name: swiftstack/picoswiftstack + alias: swiftstack-picoswiftstack .pg_template: &pg_definition <<: *tests_template needs: @@ -67,6 +69,8 @@ variables: alias: postgres - name: rroemhild/test-openldap alias: rroemhild-test-openldap + - name: swiftstack/picoswiftstack + alias: swiftstack-picoswiftstack .mysql_template: &mysql_definition <<: *tests_template needs: @@ -76,6 +80,8 @@ variables: alias: mariadb - name: rroemhild/test-openldap alias: rroemhild-test-openldap + - name: swiftstack/picoswiftstack + alias: swiftstack-picoswiftstack ### Publish tag changelog and create a toot ## diff --git a/CHANGELOG b/CHANGELOG index d046cfa..7cc6399 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ Revision history for Lufi - Use Weblate instead of Zanata for translations (https://weblate.framasoft.org/projects/lufi/development/) - Add config API endpoint (#183) - Show latest tag and commit of the instance in about page and config API endpoint (#174) + - Add support for Swift object storage 0.04.6 2019-11-07 - Now can send large files (>2Gio) while using a DB other than SQLite (#165) diff --git a/Makefile b/Makefile index 58cfe91..5071551 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,14 @@ ldap: ldapdev: ldap dev +swift: + sudo docker run -d --rm -p 8080:8080 --hostname="picoswiftstack" --name="picoswiftstack" swiftstack/picoswiftstack; exit 0 + @echo "Sleeping 20 seconds to let picoswiftstack start" + @sleep 20 + sudo docker exec picoswiftstack get_auth + +swiftdev: swift dev + devlog: multitail log/development.log diff --git a/cpanfile b/cpanfile index b6909da..7a8dd61 100644 --- a/cpanfile +++ b/cpanfile @@ -6,9 +6,9 @@ requires 'Mojolicious::Plugin::Mail'; requires 'Mojolicious::Plugin::GzipStatic'; requires 'Mojolicious::Plugin::StaticCache'; requires 'Mojolicious::Plugin::CSPHeader', '>= 0.06'; -requires 'Mojolicious::Plugin::FiatTux::Helpers', '== 0.10', url => 'https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-fiattux-helpers/-/archive/0.10/mojolicious-plugin-fiattux-helpers-0.10.tar.gz'; -requires 'Mojolicious::Plugin::FiatTux::GrantAccess', '== 0.06', url => 'https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-fiattux-grantaccess/-/archive/0.06/mojolicious-plugin-fiattux-grantaccess-0.06.tar.gz'; -requires 'Mojolicious::Plugin::FiatTux::Themes', '== 0.02', url => 'https://framagit.org/fiat-tux/mojolicious/mojolicious-plugin-fiattux-themes/-/archive/0.02/mojolicious-plugin-fiattux-themes-0.02.tar.gz'; +requires 'Mojolicious::Plugin::FiatTux::Helpers', '== 0.12', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-helpers/-/archive/0.12/mojolicious-plugin-fiattux-helpers-0.12.tar.gz'; +requires 'Mojolicious::Plugin::FiatTux::GrantAccess', '== 0.07', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-grantaccess/-/archive/0.07/mojolicious-plugin-fiattux-grantaccess-0.07.tar.gz'; +requires 'Mojolicious::Plugin::FiatTux::Themes', '== 0.02', url => 'https://framagit.org/fiat-tux/mojolicious/fiat-tux/mojolicious-plugin-fiattux-themes/-/archive/0.02/mojolicious-plugin-fiattux-themes-0.02.tar.gz'; requires 'Filesys::DiskUsage'; requires 'Switch'; requires 'Locale::Maketext'; @@ -55,3 +55,9 @@ feature 'mysql', 'MySQL support' => sub { requires 'Mojo::mysql'; requires 'Mojolicious::Plugin::PgURLHelper'; }; +feature 'swift-storage', 'Openstack Swift object storage support' => sub { + requires 'Net::OpenStack::Swift'; +}; +feature 'test' => sub { + requires 'Devel::Cover'; +}; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index bfe4c0a..2a082c5 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -9,6 +9,23 @@ DISTRIBUTIONS Digest::SHA 2 ExtUtils::MakeMaker 0 MIME::Base64 0 + App-Rad-1.05 + pathname: G/GA/GARU/App-Rad-1.05.tar.gz + provides: + App::Rad 1.05 + App::Rad::Config undef + App::Rad::Exclude 0.01 + App::Rad::Help 0.03 + App::Rad::Include 0.01 + requirements: + Attribute::Handlers 0 + B::Deparse 0 + Carp 0 + ExtUtils::MakeMaker 0 + File::Temp 0 + FindBin 0 + Getopt::Long 2.36 + Test::More 0 Authen-SASL-2.16 pathname: G/GB/GBARR/Authen-SASL-2.16.tar.gz provides: @@ -39,6 +56,24 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0 deprecate 0.03 + B-Hooks-EndOfScope-0.24 + pathname: E/ET/ETHER/B-Hooks-EndOfScope-0.24.tar.gz + provides: + B::Hooks::EndOfScope 0.24 + B::Hooks::EndOfScope::PP 0.24 + B::Hooks::EndOfScope::XS 0.24 + requirements: + ExtUtils::MakeMaker 0 + Hash::Util::FieldHash 0 + Module::Implementation 0.05 + Scalar::Util 0 + Sub::Exporter::Progressive 0.001006 + Text::ParseWords 0 + Tie::Hash 0 + Variable::Magic 0.48 + perl 5.006001 + strict 0 + warnings 0 Canary-Stability-2013 pathname: M/ML/MLEHMANN/Canary-Stability-2013.tar.gz provides: @@ -60,10 +95,16 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Class-Method-Modifiers-2.12 - pathname: E/ET/ETHER/Class-Method-Modifiers-2.12.tar.gz + Class-Accessor-Lite-0.08 + pathname: K/KA/KAZUHO/Class-Accessor-Lite-0.08.tar.gz provides: - Class::Method::Modifiers 2.12 + Class::Accessor::Lite 0.08 + requirements: + ExtUtils::MakeMaker 6.36 + Class-Method-Modifiers-2.13 + pathname: E/ET/ETHER/Class-Method-Modifiers-2.13.tar.gz + provides: + Class::Method::Modifiers 2.13 requirements: B 0 Carp 0 @@ -101,14 +142,22 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.30 Math::BigInt 1.997 Test::More 0.90 - Cpanel-JSON-XS-4.12 - pathname: R/RU/RURBAN/Cpanel-JSON-XS-4.12.tar.gz + Cpanel-JSON-XS-4.19 + pathname: R/RU/RURBAN/Cpanel-JSON-XS-4.19.tar.gz provides: - Cpanel::JSON::XS 4.12 + Cpanel::JSON::XS 4.19 Cpanel::JSON::XS::Type undef requirements: + Carp 0 + Config 0 + Encode 1.9801 + Exporter 0 ExtUtils::MakeMaker 0 Pod::Text 2.08 + XSLoader 0 + overload 0 + strict 0 + warnings 0 Crypt-PasswdMD5-1.40 pathname: R/RS/RSAVAGE/Crypt-PasswdMD5-1.40.tgz provides: @@ -135,25 +184,25 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.30 Test::Fatal 0 Test::More 0 - DBD-Pg-3.8.1 - pathname: T/TU/TURNSTEP/DBD-Pg-3.8.1.tar.gz + DBD-Pg-3.10.5 + pathname: T/TU/TURNSTEP/DBD-Pg-3.10.5.tar.gz provides: - Bundle::DBD::Pg v3.8.1 - DBD::Pg v3.8.1 + Bundle::DBD::Pg v3.10.5 + DBD::Pg v3.10.5 requirements: DBI 1.614 ExtUtils::MakeMaker 6.11 Test::More 0.88 Time::HiRes 0 version 0 - DBD-SQLite-1.62 - pathname: I/IS/ISHIGAKI/DBD-SQLite-1.62.tar.gz + DBD-SQLite-1.64 + pathname: I/IS/ISHIGAKI/DBD-SQLite-1.64.tar.gz provides: - DBD::SQLite 1.62 + DBD::SQLite 1.64 DBD::SQLite::Constants undef DBD::SQLite::GetInfo undef - DBD::SQLite::VirtualTable 1.62 - DBD::SQLite::VirtualTable::Cursor 1.62 + DBD::SQLite::VirtualTable 1.64 + DBD::SQLite::VirtualTable::Cursor 1.64 DBD::SQLite::VirtualTable::FileContent undef DBD::SQLite::VirtualTable::FileContent::Cursor undef DBD::SQLite::VirtualTable::PerlData undef @@ -162,8 +211,7 @@ DISTRIBUTIONS DBI 1.57 ExtUtils::MakeMaker 0 File::Spec 0.82 - Test::Builder 0.86 - Test::More 0.47 + Test::More 0.88 Tie::Hash 0 perl 5.006 DBD-mysql-4.050 @@ -181,8 +229,8 @@ DISTRIBUTIONS Devel::CheckLib 1.09 ExtUtils::MakeMaker 0 perl 5.008001 - DBI-1.642 - pathname: T/TI/TIMB/DBI-1.642.tar.gz + DBI-1.643 + pathname: T/TI/TIMB/DBI-1.643.tar.gz provides: Bundle::DBI 12.008696 DBD::DBM 0.08 @@ -238,7 +286,7 @@ DISTRIBUTIONS DBD::Sponge::dr 12.010003 DBD::Sponge::st 12.010003 DBDI 12.015129 - DBI 1.642 + DBI 1.643 DBI::Const::GetInfo::ANSI 2.008697 DBI::Const::GetInfo::ODBC 2.011374 DBI::Const::GetInfoReturn 2.008697 @@ -278,11 +326,11 @@ DISTRIBUTIONS DBI::SQL::Nano::Table_ 1.015544 DBI::Util::CacheMemory 0.010315 DBI::Util::_accessor 0.009479 - DBI::common 1.642 + DBI::common 1.643 requirements: ExtUtils::MakeMaker 6.48 Test::Simple 0.90 - perl 5.008 + perl 5.008001 Data-Entropy-0.007 pathname: Z/ZE/ZEFRAM/Data-Entropy-0.007.tar.gz provides: @@ -356,10 +404,40 @@ DISTRIBUTIONS Data::Validate::Domain 0 Data::Validate::IP 0 ExtUtils::MakeMaker 0 - Devel-CheckLib-1.13 - pathname: M/MA/MATTN/Devel-CheckLib-1.13.tar.gz + Data-Validator-1.07 + pathname: G/GF/GFUJI/Data-Validator-1.07.tar.gz provides: - Devel::CheckLib 1.13 + Data::Validator 1.07 + Data::Validator::Role::AllowExtra undef + Data::Validator::Role::Croak undef + Data::Validator::Role::Method undef + Data::Validator::Role::NoRestricted undef + Data::Validator::Role::NoThrow undef + Data::Validator::Role::Sequenced undef + Data::Validator::Role::SmartSequenced undef + Data::Validator::Role::StrictSequenced undef + requirements: + ExtUtils::MakeMaker 6.59 + Module::Build 0.38 + Mouse 0.93 + perl 5.008001 + Devel-CheckCompiler-0.07 + pathname: S/SY/SYOHEX/Devel-CheckCompiler-0.07.tar.gz + provides: + Devel::AssertC99 undef + Devel::CheckCompiler 0.07 + requirements: + Exporter 0 + ExtUtils::CBuilder 0 + File::Temp 0 + Module::Build::Tiny 0.035 + Test::More 0.98 + parent 0 + perl 5.008001 + Devel-CheckLib-1.14 + pathname: M/MA/MATTN/Devel-CheckLib-1.14.tar.gz + provides: + Devel::CheckLib 1.14 requirements: Exporter 0 ExtUtils::MakeMaker 0 @@ -425,14 +503,13 @@ DISTRIBUTIONS HTML::Entities 3.69 Storable 0 Test::More 0 - Devel-GlobalDestruction-0.14 - pathname: H/HA/HAARG/Devel-GlobalDestruction-0.14.tar.gz + Devel-PPPort-3.58 + pathname: A/AT/ATOOMIC/Devel-PPPort-3.58.tar.gz provides: - Devel::GlobalDestruction 0.14 + Devel::PPPort 3.58 requirements: ExtUtils::MakeMaker 0 - Sub::Exporter::Progressive 0.001011 - perl 5.006 + FindBin 0 Digest-HMAC-1.03 pathname: G/GA/GAAS/Digest-HMAC-1.03.tar.gz provides: @@ -444,10 +521,22 @@ DISTRIBUTIONS Digest::SHA 1 ExtUtils::MakeMaker 0 perl 5.004 - EV-4.27 - pathname: M/ML/MLEHMANN/EV-4.27.tar.gz + Dist-CheckConflicts-0.11 + pathname: D/DO/DOY/Dist-CheckConflicts-0.11.tar.gz provides: - EV 4.27 + Dist::CheckConflicts 0.11 + requirements: + Carp 0 + Exporter 0 + ExtUtils::MakeMaker 6.30 + Module::Runtime 0.009 + base 0 + strict 0 + warnings 0 + EV-4.33 + pathname: M/ML/MLEHMANN/EV-4.33.tar.gz + provides: + EV 4.33 EV::MakeMaker undef requirements: Canary::Stability 0 @@ -474,6 +563,43 @@ DISTRIBUTIONS Scalar::Util 0 Test::More 0 perl 5.006 + Encode-3.05 + pathname: D/DA/DANKOGAI/Encode-3.05.tar.gz + provides: + Encode 3.05 + Encode::Alias 2.24 + Encode::Byte 2.04 + Encode::CJKConstants 2.02 + Encode::CN 2.03 + Encode::CN::HZ 2.10 + Encode::Config 2.05 + Encode::EBCDIC 2.02 + Encode::Encoder 2.03 + Encode::Encoding 2.08 + Encode::GSM0338 2.07 + Encode::Guess 2.08 + Encode::Internal 3.05 + Encode::JP 2.04 + Encode::JP::H2Z 2.02 + Encode::JP::JIS7 2.08 + Encode::KR 2.03 + Encode::KR::2022_KR 2.04 + Encode::MIME::Header 2.28 + Encode::MIME::Header::ISO_2022_JP 1.09 + Encode::MIME::Name 1.03 + Encode::Symbol 2.02 + Encode::TW 2.03 + Encode::UTF_EBCDIC 3.05 + Encode::Unicode 2.18 + Encode::Unicode::UTF7 2.10 + Encode::XS 3.05 + Encode::utf8 3.05 + encoding 2.22 + requirements: + Exporter 5.57 + ExtUtils::MakeMaker 0 + Storable 0 + parent 0.221 Encode-Locale-1.05 pathname: G/GA/GAAS/Encode-Locale-1.05.tar.gz provides: @@ -569,6 +695,27 @@ DISTRIBUTIONS Test::More 0 Test::Warn 0 perl 5.006 + Furl-3.13 + pathname: T/TO/TOKUHIROM/Furl-3.13.tar.gz + provides: + Furl 3.13 + Furl::ConnectionCache undef + Furl::HTTP 3.13 + Furl::Headers undef + Furl::Request undef + Furl::Response undef + Furl::ZlibStream undef + requirements: + Class::Accessor::Lite 0 + Encode 0 + HTTP::Parser::XS 0.11 + MIME::Base64 0 + Module::Build::Tiny 0.035 + Mozilla::CA 0 + Scalar::Util 0 + Socket 0 + Time::HiRes 0 + perl 5.008001 HTML-Parser-3.72 pathname: G/GA/GAAS/HTML-Parser-3.72.tar.gz provides: @@ -590,27 +737,25 @@ DISTRIBUTIONS HTML::Tagset 3.20 requirements: ExtUtils::MakeMaker 0 - HTTP-Cookies-6.04 - pathname: O/OA/OALDERS/HTTP-Cookies-6.04.tar.gz + HTTP-Cookies-6.08 + pathname: O/OA/OALDERS/HTTP-Cookies-6.08.tar.gz provides: - HTTP::Cookies 6.04 - HTTP::Cookies::Microsoft 6.04 - HTTP::Cookies::Netscape 6.04 + HTTP::Cookies 6.08 + HTTP::Cookies::Microsoft 6.08 + HTTP::Cookies::Netscape 6.08 requirements: Carp 0 ExtUtils::MakeMaker 0 HTTP::Date 6 HTTP::Headers::Util 6 HTTP::Request 0 - Time::Local 0 locale 0 perl 5.008001 strict 0 - vars 0 - HTTP-Daemon-6.05 - pathname: E/ET/ETHER/HTTP-Daemon-6.05.tar.gz + HTTP-Daemon-6.06 + pathname: O/OA/OALDERS/HTTP-Daemon-6.06.tar.gz provides: - HTTP::Daemon 6.05 + HTTP::Daemon 6.06 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -626,14 +771,17 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - HTTP-Date-6.02 - pathname: G/GA/GAAS/HTTP-Date-6.02.tar.gz + HTTP-Date-6.05 + pathname: O/OA/OALDERS/HTTP-Date-6.05.tar.gz provides: - HTTP::Date 6.02 + HTTP::Date 6.05 requirements: + Exporter 0 ExtUtils::MakeMaker 0 - Time::Local 0 + Time::Local 1.28 + Time::Zone 0 perl 5.006002 + strict 0 HTTP-Lite-2.44 pathname: N/NE/NEILB/HTTP-Lite-2.44.tar.gz provides: @@ -645,23 +793,23 @@ DISTRIBUTIONS perl 5.005 strict 0 warnings 0 - HTTP-Message-6.18 - pathname: O/OA/OALDERS/HTTP-Message-6.18.tar.gz + HTTP-Message-6.22 + pathname: O/OA/OALDERS/HTTP-Message-6.22.tar.gz provides: - HTTP::Config 6.18 - HTTP::Headers 6.18 - HTTP::Headers::Auth 6.18 - HTTP::Headers::ETag 6.18 - HTTP::Headers::Util 6.18 - HTTP::Message 6.18 - HTTP::Request 6.18 - HTTP::Request::Common 6.18 - HTTP::Response 6.18 - HTTP::Status 6.18 + HTTP::Config 6.22 + HTTP::Headers 6.22 + HTTP::Headers::Auth 6.22 + HTTP::Headers::ETag 6.22 + HTTP::Headers::Util 6.22 + HTTP::Message 6.22 + HTTP::Request 6.22 + HTTP::Request::Common 6.22 + HTTP::Response 6.22 + HTTP::Status 6.22 requirements: Carp 0 Compress::Raw::Zlib 0 - Encode 2.21 + Encode 3.01 Encode::Locale 1 Exporter 5.57 ExtUtils::MakeMaker 0 @@ -691,6 +839,14 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 HTTP::Headers 6 perl 5.008001 + HTTP-Parser-XS-0.17 + pathname: K/KA/KAZUHO/HTTP-Parser-XS-0.17.tar.gz + provides: + HTTP::Parser::XS 0.17 + HTTP::Parser::XS::PP undef + requirements: + ExtUtils::MakeMaker 6.36 + Test::More 0.96 Hash-Merge-0.300 pathname: R/RE/REHSACK/Hash-Merge-0.300.tar.gz provides: @@ -709,17 +865,17 @@ DISTRIBUTIONS Encode 2.10 Exporter 5.57 ExtUtils::MakeMaker 6.30 - IO-Socket-SSL-2.066 - pathname: S/SU/SULLR/IO-Socket-SSL-2.066.tar.gz + IO-Socket-SSL-2.068 + pathname: S/SU/SULLR/IO-Socket-SSL-2.068.tar.gz provides: - IO::Socket::SSL 2.066 + IO::Socket::SSL 2.068 IO::Socket::SSL::Intercept 2.056 - IO::Socket::SSL::OCSP_Cache 2.066 - IO::Socket::SSL::OCSP_Resolver 2.066 + IO::Socket::SSL::OCSP_Cache 2.068 + IO::Socket::SSL::OCSP_Resolver 2.068 IO::Socket::SSL::PublicSuffix undef - IO::Socket::SSL::SSL_Context 2.066 - IO::Socket::SSL::SSL_HANDLE 2.066 - IO::Socket::SSL::Session_Cache 2.066 + IO::Socket::SSL::SSL_Context 2.068 + IO::Socket::SSL::SSL_HANDLE 2.068 + IO::Socket::SSL::Session_Cache 2.068 IO::Socket::SSL::Utils 2.014 requirements: ExtUtils::MakeMaker 0 @@ -740,10 +896,10 @@ DISTRIBUTIONS Socket 1.94 Test::More 0.88 constant 1.03 - ISO-639_1-0.03 - pathname: L/LD/LDIDRY/ISO-639_1-0.03.tar.gz + ISO-639_1-0.04 + pathname: L/LD/LDIDRY/ISO-639_1-0.04.tar.gz provides: - ISO::639_1 0.03 + ISO::639_1 0.04 requirements: Module::Build::Tiny 0.035 perl 5.008001 @@ -795,6 +951,18 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.30 Locale::Maketext 1.17 + Log-Minimal-0.19 + pathname: K/KA/KAZEBURO/Log-Minimal-0.19.tar.gz + provides: + Log::Minimal 0.19 + requirements: + CPAN::Meta 0 + CPAN::Meta::Prereqs 0 + Data::Dumper 0 + ExtUtils::CBuilder 0 + Module::Build 0.38 + Scalar::Util 0 + Term::ANSIColor 0 MIME-Charset-1.012.2 pathname: N/NE/NEZUMI/MIME-Charset-1.012.2.tar.gz provides: @@ -816,14 +984,14 @@ DISTRIBUTIONS MIME::Base64 2.13 MIME::Charset v1.10.1 Test::More 0 - MIME-Lite-3.030 - pathname: R/RJ/RJBS/MIME-Lite-3.030.tar.gz + MIME-Lite-3.031 + pathname: R/RJ/RJBS/MIME-Lite-3.031.tar.gz provides: - MIME::Lite 3.030 - MIME::Lite::IO_Handle 3.030 - MIME::Lite::IO_Scalar 3.030 - MIME::Lite::IO_ScalarArray 3.030 - MIME::Lite::SMTP 3.030 + MIME::Lite 3.031 + MIME::Lite::IO_Handle 3.031 + MIME::Lite::IO_Scalar 3.031 + MIME::Lite::IO_ScalarArray 3.031 + MIME::Lite::SMTP 3.031 MailTool undef requirements: Email::Date::Format 1.000 @@ -883,28 +1051,28 @@ DISTRIBUTIONS Net::Domain 1.05 Net::SMTP 1.03 Test::More 0 - Module-Build-0.4229 - pathname: L/LE/LEONT/Module-Build-0.4229.tar.gz + Module-Build-0.4231 + pathname: L/LE/LEONT/Module-Build-0.4231.tar.gz provides: - Module::Build 0.4229 - Module::Build::Base 0.4229 - Module::Build::Compat 0.4229 - Module::Build::Config 0.4229 - Module::Build::Cookbook 0.4229 - Module::Build::Dumper 0.4229 - Module::Build::Notes 0.4229 - Module::Build::PPMMaker 0.4229 - Module::Build::Platform::Default 0.4229 - Module::Build::Platform::MacOS 0.4229 - Module::Build::Platform::Unix 0.4229 - Module::Build::Platform::VMS 0.4229 - Module::Build::Platform::VOS 0.4229 - Module::Build::Platform::Windows 0.4229 - Module::Build::Platform::aix 0.4229 - Module::Build::Platform::cygwin 0.4229 - Module::Build::Platform::darwin 0.4229 - Module::Build::Platform::os2 0.4229 - Module::Build::PodParser 0.4229 + Module::Build 0.4231 + Module::Build::Base 0.4231 + Module::Build::Compat 0.4231 + Module::Build::Config 0.4231 + Module::Build::Cookbook 0.4231 + Module::Build::Dumper 0.4231 + Module::Build::Notes 0.4231 + Module::Build::PPMMaker 0.4231 + Module::Build::Platform::Default 0.4231 + Module::Build::Platform::MacOS 0.4231 + Module::Build::Platform::Unix 0.4231 + Module::Build::Platform::VMS 0.4231 + Module::Build::Platform::VOS 0.4231 + Module::Build::Platform::Windows 0.4231 + Module::Build::Platform::aix 0.4231 + Module::Build::Platform::cygwin 0.4231 + Module::Build::Platform::darwin 0.4231 + Module::Build::Platform::os2 0.4231 + Module::Build::PodParser 0.4231 requirements: CPAN::Meta 2.142060 Cwd 0 @@ -954,6 +1122,32 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + Module-Build-XSUtil-0.19 + pathname: H/HI/HIDEAKIO/Module-Build-XSUtil-0.19.tar.gz + provides: + Module::Build::XSUtil 0.19 + requirements: + Devel::CheckCompiler 0 + Devel::PPPort 0 + Exporter 0 + ExtUtils::CBuilder 0 + File::Basename 0 + File::Path 0 + Module::Build 0.4005 + XSLoader 0 + parent 0 + perl 5.008001 + Module-Implementation-0.09 + pathname: D/DR/DROLSKY/Module-Implementation-0.09.tar.gz + provides: + Module::Implementation 0.09 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + Module::Runtime 0.012 + Try::Tiny 0 + strict 0 + warnings 0 Module-Install-1.19 pathname: E/ET/ETHER/Module-Install-1.19.tar.gz provides: @@ -1033,10 +1227,10 @@ DISTRIBUTIONS Text::ParseWords 0 perl 5.008001 version 0 - Mojo-Pg-4.15 - pathname: S/SR/SRI/Mojo-Pg-4.15.tar.gz + Mojo-Pg-4.18 + pathname: S/SR/SRI/Mojo-Pg-4.18.tar.gz provides: - Mojo::Pg 4.15 + Mojo::Pg 4.18 Mojo::Pg::Database undef Mojo::Pg::Migrations undef Mojo::Pg::PubSub undef @@ -1044,23 +1238,23 @@ DISTRIBUTIONS Mojo::Pg::Transaction undef SQL::Abstract::Pg undef requirements: - DBD::Pg 3.005001 + DBD::Pg 3.007004 ExtUtils::MakeMaker 0 Mojolicious 8.03 SQL::Abstract 1.86 perl 5.010001 - Mojo-SQLite-3.002 - pathname: D/DB/DBOOK/Mojo-SQLite-3.002.tar.gz + Mojo-SQLite-3.003 + pathname: D/DB/DBOOK/Mojo-SQLite-3.003.tar.gz provides: - Mojo::SQLite 3.002 - Mojo::SQLite::Database 3.002 - Mojo::SQLite::Migrations 3.002 - Mojo::SQLite::PubSub 3.002 - Mojo::SQLite::Results 3.002 - Mojo::SQLite::Transaction 3.002 + Mojo::SQLite 3.003 + Mojo::SQLite::Database 3.003 + Mojo::SQLite::Migrations 3.003 + Mojo::SQLite::PubSub 3.003 + Mojo::SQLite::Results 3.003 + Mojo::SQLite::Transaction 3.003 requirements: Carp 0 - DBD::SQLite 1.54 + DBD::SQLite 1.64 DBI 1.627 File::Spec::Functions 0 File::Temp 0 @@ -1072,13 +1266,13 @@ DISTRIBUTIONS URI::db 0.15 URI::file 4.21 perl 5.010001 - Mojo-mysql-1.16 - pathname: T/TE/TEKKI/Mojo-mysql-1.16.tar.gz + Mojo-mysql-1.18 + pathname: T/TE/TEKKI/Mojo-mysql-1.18.tar.gz provides: Blog undef Blog::Controller::Posts undef Blog::Model::Posts undef - Mojo::mysql 1.16 + Mojo::mysql 1.18 Mojo::mysql::Database undef Mojo::mysql::Migrations undef Mojo::mysql::PubSub undef @@ -1091,8 +1285,8 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Mojolicious 8.03 SQL::Abstract 1.86 - Mojolicious-8.22 - pathname: S/SR/SRI/Mojolicious-8.22.tar.gz + Mojolicious-8.40 + pathname: S/SR/SRI/Mojolicious-8.40.tar.gz provides: Mojo undef Mojo::Asset undef @@ -1161,7 +1355,7 @@ DISTRIBUTIONS Mojo::UserAgent::Transactor undef Mojo::Util undef Mojo::WebSocket undef - Mojolicious 8.22 + Mojolicious 8.40 Mojolicious::Command undef Mojolicious::Command::Author::cpanify undef Mojolicious::Command::Author::generate undef @@ -1277,36 +1471,73 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Mojolicious 7.33 - Moo-2.003004 - pathname: H/HA/HAARG/Moo-2.003004.tar.gz + Moo-2.004000 + pathname: H/HA/HAARG/Moo-2.004000.tar.gz provides: Method::Generate::Accessor undef Method::Generate::BuildAll undef Method::Generate::Constructor undef Method::Generate::DemolishAll undef - Moo 2.003004 + Moo 2.004000 Moo::HandleMoose undef Moo::HandleMoose::FakeConstructor undef Moo::HandleMoose::FakeMetaClass undef Moo::HandleMoose::_TypeMap undef Moo::Object undef - Moo::Role 2.003004 + Moo::Role 2.004000 Moo::_Utils undef Moo::_mro undef Moo::_strictures undef Moo::sification undef oo undef requirements: - Class::Method::Modifiers 1.1 - Devel::GlobalDestruction 0.11 + Class::Method::Modifiers 1.10 Exporter 5.57 ExtUtils::MakeMaker 0 Module::Runtime 0.014 - Role::Tiny 2.000004 - Scalar::Util 0 - Sub::Defer 2.003001 - Sub::Quote 2.003001 + Role::Tiny 2.001004 + Scalar::Util 1.00 + Sub::Defer 2.006006 + Sub::Quote 2.006006 perl 5.006 + Mouse-v2.5.10 + pathname: S/SK/SKAJI/Mouse-v2.5.10.tar.gz + provides: + Mouse v2.5.10 + Mouse::Exporter undef + Mouse::Meta::Attribute undef + Mouse::Meta::Class undef + Mouse::Meta::Method undef + Mouse::Meta::Method::Accessor undef + Mouse::Meta::Method::Constructor undef + Mouse::Meta::Method::Delegation undef + Mouse::Meta::Method::Destructor undef + Mouse::Meta::Module undef + Mouse::Meta::Role undef + Mouse::Meta::Role::Application undef + Mouse::Meta::Role::Application::RoleSummation undef + Mouse::Meta::Role::Composite undef + Mouse::Meta::Role::Method undef + Mouse::Meta::TypeConstraint undef + Mouse::Object undef + Mouse::PurePerl undef + Mouse::Role v2.5.10 + Mouse::Spec v2.5.10 + Mouse::TypeRegistry undef + Mouse::Util v2.5.10 + Mouse::Util::MetaRole undef + Mouse::Util::TypeConstraints undef + Squirrel undef + Squirrel::Role undef + Test::Mouse undef + ouse undef + requirements: + ExtUtils::CBuilder 0 + Module::Build 0.4005 + Module::Build::XSUtil 0.19 + Scalar::Util 1.14 + XSLoader 0.02 + perl 5.008005 Mozilla-CA-20180117 pathname: A/AB/ABH/Mozilla-CA-20180117.tar.gz provides: @@ -1315,10 +1546,10 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test 0 perl 5.006 - Net-DNS-1.20 - pathname: N/NL/NLNETLABS/Net-DNS-1.20.tar.gz + Net-DNS-1.23 + pathname: N/NL/NLNETLABS/Net-DNS-1.23.tar.gz provides: - Net::DNS 1.20 + Net::DNS 1.23 Net::DNS::Domain 1726 Net::DNS::DomainName 1605 Net::DNS::DomainName1035 1605 @@ -1327,32 +1558,31 @@ DISTRIBUTIONS Net::DNS::Mailbox 1605 Net::DNS::Mailbox1035 1605 Net::DNS::Mailbox2535 1605 - Net::DNS::Nameserver 1692 - Net::DNS::Packet 1714 - Net::DNS::Parameters 1729 + Net::DNS::Nameserver 1761 + Net::DNS::Packet 1761 + Net::DNS::Parameters 1761 Net::DNS::Question 1726 - Net::DNS::RR 1726 + Net::DNS::RR 1762 Net::DNS::RR::A 1597 Net::DNS::RR::AAAA 1597 Net::DNS::RR::AFSDB 1597 - Net::DNS::RR::APL 1597 - Net::DNS::RR::APL::Item 1597 - Net::DNS::RR::CAA 1597 + Net::DNS::RR::APL 1741 + Net::DNS::RR::APL::Item 1741 + Net::DNS::RR::CAA 1771 Net::DNS::RR::CDNSKEY 1586 Net::DNS::RR::CDS 1586 - Net::DNS::RR::CERT 1729 + Net::DNS::RR::CERT 1773 Net::DNS::RR::CNAME 1597 - Net::DNS::RR::CSYNC 1597 + Net::DNS::RR::CSYNC 1741 Net::DNS::RR::DHCID 1597 - Net::DNS::RR::DLV 1528 Net::DNS::RR::DNAME 1597 - Net::DNS::RR::DNSKEY 1729 - Net::DNS::RR::DS 1729 + Net::DNS::RR::DNSKEY 1773 + Net::DNS::RR::DS 1774 Net::DNS::RR::EUI48 1597 Net::DNS::RR::EUI64 1597 Net::DNS::RR::GPOS 1528 Net::DNS::RR::HINFO 1597 - Net::DNS::RR::HIP 1597 + Net::DNS::RR::HIP 1749 Net::DNS::RR::IPSECKEY 1718 Net::DNS::RR::ISDN 1597 Net::DNS::RR::KEY 1528 @@ -1369,53 +1599,54 @@ DISTRIBUTIONS Net::DNS::RR::NAPTR 1597 Net::DNS::RR::NID 1597 Net::DNS::RR::NS 1597 - Net::DNS::RR::NSEC 1696 - Net::DNS::RR::NSEC3 1726 - Net::DNS::RR::NSEC3PARAM 1597 + Net::DNS::RR::NSEC 1749 + Net::DNS::RR::NSEC3 1749 + Net::DNS::RR::NSEC3PARAM 1741 Net::DNS::RR::NULL 1528 Net::DNS::RR::OPENPGPKEY 1597 - Net::DNS::RR::OPT 1717 - Net::DNS::RR::OPT::CHAIN 1717 - Net::DNS::RR::OPT::CLIENT_SUBNET 1717 - Net::DNS::RR::OPT::COOKIE 1717 - Net::DNS::RR::OPT::DAU 1717 - Net::DNS::RR::OPT::DHU 1717 - Net::DNS::RR::OPT::EXPIRE 1717 - Net::DNS::RR::OPT::KEY_TAG 1717 - Net::DNS::RR::OPT::N3U 1717 - Net::DNS::RR::OPT::PADDING 1717 - Net::DNS::RR::OPT::TCP_KEEPALIVE 1717 + Net::DNS::RR::OPT 1773 + Net::DNS::RR::OPT::CHAIN 1773 + Net::DNS::RR::OPT::CLIENT_SUBNET 1773 + Net::DNS::RR::OPT::COOKIE 1773 + Net::DNS::RR::OPT::DAU 1773 + Net::DNS::RR::OPT::DHU 1773 + Net::DNS::RR::OPT::EXPIRE 1773 + Net::DNS::RR::OPT::KEY_TAG 1773 + Net::DNS::RR::OPT::N3U 1773 + Net::DNS::RR::OPT::PADDING 1773 + Net::DNS::RR::OPT::TCP_KEEPALIVE 1773 Net::DNS::RR::PTR 1597 Net::DNS::RR::PX 1597 Net::DNS::RR::RP 1597 - Net::DNS::RR::RRSIG 1729 + Net::DNS::RR::RRSIG 1754 Net::DNS::RR::RT 1597 - Net::DNS::RR::SIG 1729 - Net::DNS::RR::SMIMEA 1597 + Net::DNS::RR::SIG 1754 + Net::DNS::RR::SMIMEA 1741 Net::DNS::RR::SOA 1597 Net::DNS::RR::SPF 1593 Net::DNS::RR::SRV 1597 - Net::DNS::RR::SSHFP 1597 + Net::DNS::RR::SSHFP 1741 Net::DNS::RR::TKEY 1528 - Net::DNS::RR::TLSA 1597 - Net::DNS::RR::TSIG 1726 + Net::DNS::RR::TLSA 1741 + Net::DNS::RR::TSIG 1774 Net::DNS::RR::TXT 1597 Net::DNS::RR::URI 1597 Net::DNS::RR::X25 1597 - Net::DNS::Resolver 1726 - Net::DNS::Resolver::Base 1727 + Net::DNS::RR::ZONEMD 1771 + Net::DNS::Resolver 1740 + Net::DNS::Resolver::Base 1771 Net::DNS::Resolver::MSWin32 1568 - Net::DNS::Resolver::Recurse 1737 + Net::DNS::Resolver::Recurse 1748 Net::DNS::Resolver::UNIX 1573 Net::DNS::Resolver::android 1568 Net::DNS::Resolver::cygwin 1719 Net::DNS::Resolver::os2 1568 Net::DNS::Resolver::os390 1719 - Net::DNS::Text 1726 - Net::DNS::Update 1726 - Net::DNS::ZoneFile 1709 - Net::DNS::ZoneFile::Generator 1709 - Net::DNS::ZoneFile::Text 1709 + Net::DNS::Text 1762 + Net::DNS::Update 1774 + Net::DNS::ZoneFile 1769 + Net::DNS::ZoneFile::Generator 1769 + Net::DNS::ZoneFile::Text 1769 requirements: Digest::HMAC 1.03 Digest::MD5 2.13 @@ -1458,6 +1689,31 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 + Net-OpenStack-Swift-0.15 + pathname: M/MA/MASAKYST/Net-OpenStack-Swift-0.15.tar.gz + provides: + Net::OpenStack::Swift 0.15 + Net::OpenStack::Swift::InnerKeystone::Base undef + Net::OpenStack::Swift::InnerKeystone::V1_0 undef + Net::OpenStack::Swift::InnerKeystone::V2_0 undef + Net::OpenStack::Swift::InnerKeystone::V3_0 undef + Net::OpenStack::Swift::Util undef + requirements: + App::Rad 0 + Data::Validator 0 + Furl 0 + IO::Socket::SSL 0 + JSON 0 + Log::Minimal 0 + Module::Build::Tiny 0.035 + Mouse 0 + Parallel::Fork::BossWorkerAsync 0 + Path::Tiny 0 + Sys::CPU 0 + Text::ASCIITable 0 + URI::Escape 0 + namespace::clean 0 + perl 5.010_001 Net-SSLeay-1.88 pathname: C/CH/CHRISN/Net-SSLeay-1.88.tar.gz provides: @@ -1489,6 +1745,44 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 POSIX 0 Test::More 0 + Package-Stash-0.38 + pathname: E/ET/ETHER/Package-Stash-0.38.tar.gz + provides: + Package::Stash 0.38 + Package::Stash::PP 0.38 + requirements: + B 0 + Carp 0 + Config 0 + Dist::CheckConflicts 0.02 + ExtUtils::MakeMaker 0 + File::Spec 0 + Getopt::Long 0 + Module::Implementation 0.06 + Package::Stash::XS 0.26 + Scalar::Util 0 + Symbol 0 + Text::ParseWords 0 + constant 0 + perl 5.008001 + strict 0 + warnings 0 + Package-Stash-XS-0.29 + pathname: E/ET/ETHER/Package-Stash-XS-0.29.tar.gz + provides: + Package::Stash::XS 0.29 + requirements: + ExtUtils::MakeMaker 0 + XSLoader 0 + perl 5.008001 + strict 0 + warnings 0 + Parallel-Fork-BossWorkerAsync-0.09 + pathname: J/JV/JVANNUCCI/Parallel-Fork-BossWorkerAsync-0.09.tar.gz + provides: + Parallel::Fork::BossWorkerAsync 0.09 + requirements: + ExtUtils::MakeMaker 0 Params-Classify-0.015 pathname: Z/ZE/ZEFRAM/Params-Classify-0.015.tar.gz provides: @@ -1502,11 +1796,37 @@ DISTRIBUTIONS perl 5.006001 strict 0 warnings 0 - Role-Tiny-2.000006 - pathname: H/HA/HAARG/Role-Tiny-2.000006.tar.gz + Path-Tiny-0.112 + pathname: D/DA/DAGOLDEN/Path-Tiny-0.112.tar.gz provides: - Role::Tiny 2.000006 - Role::Tiny::With 2.000006 + Path::Tiny 0.112 + Path::Tiny::Error 0.112 + requirements: + Carp 0 + Cwd 0 + Digest 1.03 + Digest::SHA 5.45 + Encode 0 + Exporter 5.57 + ExtUtils::MakeMaker 6.17 + Fcntl 0 + File::Copy 0 + File::Glob 0 + File::Path 2.07 + File::Spec 0.86 + File::Temp 0.19 + File::stat 0 + constant 0 + overload 0 + perl 5.008001 + strict 0 + warnings 0 + warnings::register 0 + Role-Tiny-2.001004 + pathname: H/HA/HAARG/Role-Tiny-2.001004.tar.gz + provides: + Role::Tiny 2.001004 + Role::Tiny::With 2.001004 requirements: Exporter 5.57 perl 5.006 @@ -1533,11 +1853,11 @@ DISTRIBUTIONS Sub::Exporter::Progressive 0.001013 requirements: ExtUtils::MakeMaker 0 - Sub-Quote-2.006003 - pathname: H/HA/HAARG/Sub-Quote-2.006003.tar.gz + Sub-Quote-2.006006 + pathname: H/HA/HAARG/Sub-Quote-2.006006.tar.gz provides: - Sub::Defer 2.006003 - Sub::Quote 2.006003 + Sub::Defer 2.006006 + Sub::Quote 2.006006 requirements: ExtUtils::MakeMaker 0 Scalar::Util 0 @@ -1563,6 +1883,12 @@ DISTRIBUTIONS Text::Balanced 2 if 0 perl 5.005 + Sys-CPU-0.52 + pathname: M/MK/MKODERER/Sys-CPU-0.52.tar.gz + provides: + Sys::CPU 0.52 + requirements: + ExtUtils::MakeMaker 0 Term-ProgressBar-2.22 pathname: M/MA/MANWAR/Term-ProgressBar-2.22.tar.gz provides: @@ -1626,10 +1952,10 @@ DISTRIBUTIONS Test::Builder 0.13 Test::Builder::Tester 1.02 perl 5.006 - Test-Warnings-0.026 - pathname: E/ET/ETHER/Test-Warnings-0.026.tar.gz + Test-Warnings-0.030 + pathname: E/ET/ETHER/Test-Warnings-0.030.tar.gz provides: - Test::Warnings 0.026 + Test::Warnings 0.030 requirements: Carp 0 Exporter 0 @@ -1639,6 +1965,16 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + Text-ASCIITable-0.22 + pathname: L/LU/LUNATIC/Text-ASCIITable-0.22.tar.gz + provides: + Text::ASCIITable 0.22 + Text::ASCIITable::Wrap 0.2 + requirements: + Carp 0 + Encode 0 + List::Util 0 + perl v5.6.0 Text-Soundex-3.05 pathname: R/RJ/RJBS/Text-Soundex-3.05.tar.gz provides: @@ -1646,8 +1982,19 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 if 0 - TimeDate-2.30 - pathname: G/GB/GBARR/TimeDate-2.30.tar.gz + Time-Local-1.30 + pathname: D/DR/DROLSKY/Time-Local-1.30.tar.gz + provides: + Time::Local 1.30 + requirements: + Carp 0 + Exporter 0 + ExtUtils::MakeMaker 0 + constant 0 + parent 0 + strict 0 + TimeDate-2.32 + pathname: A/AT/ATOOMIC/TimeDate-2.32.tar.gz provides: Date::Format 2.24 Date::Format::Generic 2.24 @@ -1672,6 +2019,7 @@ DISTRIBUTIONS Date::Language::Icelandic 1.01 Date::Language::Italian 1.01 Date::Language::Norwegian 1.01 + Date::Language::Occitan 1.04 Date::Language::Oromo 0.99 Date::Language::Romanian 1.01 Date::Language::Russian 1.01 @@ -1685,8 +2033,9 @@ DISTRIBUTIONS Date::Language::TigrinyaEritrean 1.00 Date::Language::TigrinyaEthiopian 1.00 Date::Language::Turkish 1.0 - Date::Parse 2.30 + Date::Parse 2.32 Time::Zone 2.24 + TimeDate 1.21 requirements: ExtUtils::MakeMaker 0 Try-Tiny-0.30 @@ -1834,6 +2183,25 @@ DISTRIBUTIONS URI 1.40 URI::Nested 0.10 perl 5.008001 + Variable-Magic-0.62 + pathname: V/VP/VPIT/Variable-Magic-0.62.tar.gz + provides: + Variable::Magic 0.62 + requirements: + Carp 0 + Config 0 + Exporter 0 + ExtUtils::MakeMaker 0 + IO::Handle 0 + IO::Select 0 + IPC::Open3 0 + POSIX 0 + Socket 0 + Test::More 0 + XSLoader 0 + base 0 + lib 0 + perl 5.008 WWW-RobotRules-6.02 pathname: G/GA/GAAS/WWW-RobotRules-6.02.tar.gz provides: @@ -1860,38 +2228,38 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 - common-sense-3.74 - pathname: M/ML/MLEHMANN/common-sense-3.74.tar.gz + common-sense-3.75 + pathname: M/ML/MLEHMANN/common-sense-3.75.tar.gz provides: - common::sense 3.74 + common::sense 3.75 requirements: ExtUtils::MakeMaker 0 - libwww-perl-6.39 - pathname: O/OA/OALDERS/libwww-perl-6.39.tar.gz + libwww-perl-6.44 + pathname: O/OA/OALDERS/libwww-perl-6.44.tar.gz provides: - LWP 6.39 - LWP::Authen::Basic 6.39 - LWP::Authen::Digest 6.39 - LWP::Authen::Ntlm 6.39 - LWP::ConnCache 6.39 - LWP::Debug 6.39 - LWP::Debug::TraceHTTP 6.39 - LWP::DebugFile 6.39 - LWP::MemberMixin 6.39 - LWP::Protocol 6.39 - LWP::Protocol::cpan 6.39 - LWP::Protocol::data 6.39 - LWP::Protocol::file 6.39 - LWP::Protocol::ftp 6.39 - LWP::Protocol::gopher 6.39 - LWP::Protocol::http 6.39 - LWP::Protocol::loopback 6.39 - LWP::Protocol::mailto 6.39 - LWP::Protocol::nntp 6.39 - LWP::Protocol::nogo 6.39 - LWP::RobotUA 6.39 - LWP::Simple 6.39 - LWP::UserAgent 6.39 + LWP 6.44 + LWP::Authen::Basic 6.44 + LWP::Authen::Digest 6.44 + LWP::Authen::Ntlm 6.44 + LWP::ConnCache 6.44 + LWP::Debug 6.44 + LWP::Debug::TraceHTTP 6.44 + LWP::DebugFile 6.44 + LWP::MemberMixin 6.44 + LWP::Protocol 6.44 + LWP::Protocol::cpan 6.44 + LWP::Protocol::data 6.44 + LWP::Protocol::file 6.44 + LWP::Protocol::ftp 6.44 + LWP::Protocol::gopher 6.44 + LWP::Protocol::http 6.44 + LWP::Protocol::loopback 6.44 + LWP::Protocol::mailto 6.44 + LWP::Protocol::nntp 6.44 + LWP::Protocol::nogo 6.44 + LWP::RobotUA 6.44 + LWP::Simple 6.44 + LWP::UserAgent 6.44 libwww::perl undef requirements: CPAN::Meta::Requirements 2.120620 @@ -1928,6 +2296,15 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 + namespace-clean-0.27 + pathname: R/RI/RIBASUSHI/namespace-clean-0.27.tar.gz + provides: + namespace::clean 0.27 + requirements: + B::Hooks::EndOfScope 0.12 + ExtUtils::MakeMaker 0 + Package::Stash 0.23 + perl 5.008001 perl-ldap-0.66 pathname: M/MA/MARSCHAP/perl-ldap-0.66.tar.gz provides: diff --git a/lib/Lufi.pm b/lib/Lufi.pm index b97fba5..832cf31 100644 --- a/lib/Lufi.pm +++ b/lib/Lufi.pm @@ -66,6 +66,11 @@ sub startup { # Helpers $self->plugin('Lufi::Plugin::Helpers'); + # Now helpers has been loaded, time to check Swift container + if ($config->{swift}) { + $self->check_swift_container(); + } + # Recurrent task Mojo::IOLoop->recurring(2 => sub { my $loop = shift; @@ -74,8 +79,10 @@ sub startup { }); # Create directory if needed - mkdir($self->config('upload_dir'), 0700) unless (-d $self->config('upload_dir')); - die ('The upload directory ('.$self->config('upload_dir').') is not writable') unless (-w $self->config('upload_dir')); + if (!defined($config->{swift})) { + mkdir($self->config('upload_dir'), 0700) unless (-d $self->config('upload_dir')); + die ('The upload directory ('.$self->config('upload_dir').') is not writable') unless (-w $self->config('upload_dir')); + } # Configure sessions my $sessions = Mojolicious::Sessions->new; diff --git a/lib/Lufi/Command/copyFilesToSwift.pm b/lib/Lufi/Command/copyFilesToSwift.pm new file mode 100644 index 0000000..91b7564 --- /dev/null +++ b/lib/Lufi/Command/copyFilesToSwift.pm @@ -0,0 +1,68 @@ +package Lufi::Command::copyFilesToSwift; +use Mojo::Base 'Mojolicious::Command'; +use File::Spec; +use Term::ProgressBar; + +has description => 'Copy files from filesystem to Swift object storage'; +has usage => sub { shift->extract_usage }; + +sub run { + my $c = shift; + + if ($c->app->config('swift')) { + $c->app->check_swift_container(); + my @dirs = glob(File::Spec->catdir($c->app->config('upload_dir'), '*')); + + say sprintf('%d folders to upload to Swift (can\'t say how many files, or the total size, sorry). This can take some time.', scalar(@dirs)); + print 'Do you want to continue? [Y/n] '; + my $confirm = ; + + if ($confirm =~ m/yes|y/i) { + my $progress = Term::ProgressBar->new({ count => scalar(@dirs), ETA => 'linear', name => 'Copying to Swift'}); + for my $dir (@dirs) { + my @files = glob(File::Spec->catfile($dir, '*')); + for my $file (@files) { + my ($volume, $directories, $filename) = File::Spec->splitpath($file); + my @file_dirs = File::Spec->splitdir($directories); + my $short = ($file_dirs[-1] ne '') ? $file_dirs[-1] : $file_dirs[-2]; + my $path = File::Spec->catfile($short, $filename); + + open my $fh, '<', $file or die sprintf('Unable to open file %s: %s', $file, $!); + + $c->app->swift->put_object( + container_name => $c->app->config('swift')->{container}, + object_name => $path, + content_length => -s $file, + content => $fh + ); + close $fh; + } + $progress->update(); + } + say sprintf('The copy to Swift object storage has ended. You can test Lufi, then delete `%s` directory', $c->app->config('upload_dir')); + } else { + say 'You want to stop. No problem.'; + } + } else { + say 'You didn\'t configure `swift` in your config file. Exiting.'; + exit 1; + } +} + +=encoding utf8 + +=head1 NAME + +Lufi::Command::copyFilesToSwift Copy files from filesystem to Swift object storage + +=head1 SYNOPSIS + + Usage: script/lufi copyFilesToSwift + + This command needs you to: + - set `upload_dir` in your config file (otherwise, it will use the default path, `files` to copy files from) + - configure `swift` with correct informations in your config file + +=cut + +1; diff --git a/lib/Lufi/Command/sqliteToOtherDB.pm b/lib/Lufi/Command/sqliteToOtherDB.pm index 4c39ff3..0811357 100644 --- a/lib/Lufi/Command/sqliteToOtherDB.pm +++ b/lib/Lufi/Command/sqliteToOtherDB.pm @@ -1,5 +1,6 @@ package Lufi::Command::sqliteToOtherDB; use Mojo::Base 'Mojolicious::Command'; +use Lufi::DB::BreakingChange; use Lufi::DB::File; use Lufi::DB::Slice; use Lufi::DB::Invitation; @@ -9,7 +10,7 @@ use Term::ProgressBar; use Lufi::DefaultConfig qw($default_config); has description => 'Migrate the records from a SQLite db to the currently configured database'; -has usage => sub { shift->extract_usage }; +has usage => sub { shift->extract_usage }; sub run { my $c = shift; @@ -36,8 +37,9 @@ sub run { my $files = $sqlite->db->select('files', undef)->hashes; my $slices = $sqlite->db->select('slices', undef)->hashes; my $invitations = $sqlite->db->select('invitations', undef)->hashes; + my $changes = $sqlite->db->select('breakingchanges', undef)->hashes; - my $progress = Term::ProgressBar->new({count => $files->size + $slices->size + $invitations->size}); + my $progress = Term::ProgressBar->new({count => $files->size + $slices->size + $invitations->size + $changes->size}); $files->each(sub { my ($file, $num) = @_; @@ -69,7 +71,6 @@ sub run { Lufi::DB::Slice->new(app => $c->app) ->short($slice->{short}) ->j($slice->{j}) - ->path($slice->{path}) ->write(); $progress->update(); @@ -92,13 +93,22 @@ sub run { ->write(); $progress->update(); }); + $changes->each(sub { + my ($change, $num) = @_; + + Lufi::DB::BreakingChange->new(app => $c->app) + ->change($change->{change}) + ->ack($change->{ack}) + ->write(); + $progress->update(); + }); } =encoding utf8 =head1 NAME -Lufi::Command::cron::sqliteToOtherDB Migrate the records from a SQLite db to the currently configured database +Lufi::Command::sqliteToOtherDB Migrate the records from a SQLite db to the currently configured database =head1 SYNOPSIS diff --git a/lib/Lufi/Command/theme.pm b/lib/Lufi/Command/theme.pm index 185e5d5..5d7ad57 100644 --- a/lib/Lufi/Command/theme.pm +++ b/lib/Lufi/Command/theme.pm @@ -2,7 +2,7 @@ package Lufi::Command::theme; use Mojo::Base 'Mojolicious::Commands'; use FindBin qw($Bin); -use File::Spec qw(catfile cat dir); +use File::Spec qw(catfile catdir); use File::Path qw(make_path); has description => 'Create new theme skeleton.'; diff --git a/lib/Lufi/Controller/Files.pm b/lib/Lufi/Controller/Files.pm index 71b8c34..af31c6b 100644 --- a/lib/Lufi/Controller/Files.pm +++ b/lib/Lufi/Controller/Files.pm @@ -100,7 +100,8 @@ sub upload { } } # Check that we have enough space (multiplying by 2 since it's encrypted, it takes more place that the original file) - if ($json->{part} == 0 && ($json->{size} * 2) >= dfportable($c->config('upload_dir'))->{bavail}) { + # Only check if using filesystem, not Swift storage + if (!defined($c->config('swift')) && $json->{part} == 0 && ($json->{size} * 2) >= dfportable($c->config('upload_dir'))->{bavail}) { $stop = 1; return $ws->send(decode('UTF-8', encode_json( { @@ -190,19 +191,12 @@ sub upload { # If we already have a part, it's a resend because the websocket has been broken # In this case, we don't need to rewrite the file unless ($f->slices->grep(sub { $_->j == $json->{part} })->size) { - # Create directory - my $dir = catdir($c->config('upload_dir'), $f->short); - mkdir($dir, 0700) unless (-d $dir); - # Create slice file - my $file = catfile($dir, $json->{part}.'.part'); my $s = Lufi::DB::Slice->new( app => $c->app, short => $f->short, - j => $json->{part}, - path => $file - ); - Mojo::File->new($file)->spurt($text); + j => $json->{part} + )->store($text); push @{$f->slices}, $s; $s->write; @@ -327,7 +321,7 @@ sub download { # Get the slice my $e = $f->slices->[$num]; - my $text = Mojo::File->new($e->path)->slurp; + my $text = $e->retrieve(); my ($json2) = split('XXMOJOXX', $text, 2); $json2 = decode 'UTF-8', $json2; diff --git a/lib/Lufi/DB/File.pm b/lib/Lufi/DB/File.pm index e0c562c..0635bd0 100644 --- a/lib/Lufi/DB/File.pm +++ b/lib/Lufi/DB/File.pm @@ -148,13 +148,37 @@ sub delete { $c->slices->each(sub { my ($e, $num) = @_; - unlink $e->path; + $e->delete_file(); }); - rmdir Mojo::File->new($c->app->config('upload_dir'), $c->short); - $c->deleted(1); + $c->delete_path + ->deleted(1) + ->write; - $c->write; + return $c; +} +=head2 delete_path + +=over 1 + +=item B : C<$c-Edelete_path()> + +=item B : none + +=item B : delete the directory of the slices on filesystem or Swift object storage + +=item B : the db accessor object + +=back + +=cut + +sub delete_path { + my $c = shift; + + if (!defined($c->app->config('swift'))) { + rmdir Mojo::File->new($c->app->config('upload_dir'), $c->short); + } return $c; } diff --git a/lib/Lufi/DB/Slice.pm b/lib/Lufi/DB/Slice.pm index 932ac5e..a3703ae 100644 --- a/lib/Lufi/DB/Slice.pm +++ b/lib/Lufi/DB/Slice.pm @@ -1,14 +1,17 @@ # vim:set sw=4 ts=4 sts=4 ft=perl expandtab: package Lufi::DB::Slice; use Mojo::Base -base; +use Encode 'encode'; +use File::Spec::Functions; use Mojo::Collection 'c'; has 'short'; has 'j'; -has 'path'; has 'record' => 0; has 'app'; +=encoding utf8 + =head1 NAME Lufi::DB::Slice - DB abstraction layer for Lufi file @@ -28,8 +31,6 @@ Have a look at Lufi::DB::Slice::SQLite's code: it's simple and may be more under =item B : integer -=item B : string - =item B : A mojolicious object =back @@ -96,15 +97,121 @@ sub write { my $c = shift; if ($c->record) { - $c->app->dbi->db->query('UPDATE slices SET short = ?, j = ?, path = ? WHERE short = ? AND j = ?', $c->short, $c->j, $c->path, $c->short, $c->j); + $c->app->dbi->db->query('UPDATE slices SET short = ?, j = ? WHERE short = ? AND j = ?', $c->short, $c->j, $c->short, $c->j); } else { - $c->app->dbi->db->query('INSERT INTO slices (short, j, path) VALUES (?, ?, ?)', $c->short, $c->j, $c->path); + $c->app->dbi->db->query('INSERT INTO slices (short, j) VALUES (?, ?)', $c->short, $c->j); $c->record(1); } return $c; } +=head2 store + +=over 1 + +=item B : C<$c-Estore($text)> + +=item B : a scalar value + +=item B : will store the content to the object's path, either on filesystem or on Swift object storage + +=item B : the db accessor object + +=back + +=cut + +sub store { + my $c = shift; + my $text = shift; + + if ($c->app->config('swift')) { + $c->app->swift->put_object( + container_name => $c->app->config('swift')->{container}, + object_name => $c->get_path(), + content_length => length(Encode::encode_utf8($text)), + content => $text + ); + } else { + # Create directory + my $dir = catfile($c->app->config('upload_dir'), $c->short); + mkdir($dir, 0700) unless (-d $dir); + + # Write file + my $file = catfile($c->app->config('upload_dir'), $c->get_path()); + Mojo::File->new($file)->spurt($text); + } + + return $c; +} + +=head2 retrieve + +=over 1 + +=item B : C<$c-Eretrieve> + +=item B : none + +=item B : get file from storage, either filesystem or Swift object storage + +=item B : the data from the file + +=back + +=cut + +sub retrieve { + my $c = shift; + my $upload = shift; + + if ($c->app->config('swift')) { + my $file; + $c->app->swift->get_object( + container_name => $c->app->config('swift')->{container}, + object_name => $c->get_path(), + write_code => sub { + my ($status, $message, $headers, $chunk) = @_; + $file .= $chunk; + } + ); + return $file; + } else { + my $file = catfile($c->app->config('upload_dir'), $c->get_path()); + return Mojo::File->new($file)->slurp; + } +} +=head2 delete_file + +=over 1 + +=item B : C<$c-Edelete_file()> + +=item B : none + +=item B : delete the file on filesystem or Swift object storage + +=item B : the db accessor object + +=back + +=cut + +sub delete_file { + my $c = shift; + + if ($c->app->config('swift')) { + $c->app->swift->delete_object({ + container_name => $c->app->config('swift')->{container}, + object_name => $c->get_path() + }); + } else { + my $file = catfile($c->app->config('upload_dir'), $c->get_path()); + unlink $file or warn sprintf('Could not unlink %s: %s', $file, $!); + } + return $c; +} =head2 get_slices_of_file =over 1 @@ -147,7 +254,7 @@ sub get_slices_of_file { =item B : none -=item B : delete all file records from database unconditionnally +=item B : delete all slices records from database unconditionnally =item B : nothing @@ -161,6 +268,50 @@ sub delete_all { $c->app->dbi->db->delete('slices'); } +=head2 path + +=over 1 + +=item B : C<$c-Epath()> + +=item B : non + +=item B : format the path of the file, relative to the directory of the Swift object storage + +=item B : the path of the file + +=back + +=cut + +sub get_path { + my $c = shift; + + return catfile($c->short, sprintf('%d.part', $c->j)); +} + +=head2 count + +=over 1 + +=item B : C<$c-Ecount()> + +=item B : none + +=item B : get count of slices records from database + +=item B : integer + +=back + +=cut + +sub count { + my $c = shift; + + return $c->app->dbi->db->query('SELECT count(*) AS count FROM slices')->hashes->first->{count}; +} + =head2 _slurp =over 1 @@ -195,7 +346,6 @@ sub _slurp { if ($slice) { $c->short($slice->{short}); $c->j($slice->{j}); - $c->path($slice->{path}); $c->record(1); } diff --git a/lib/Lufi/DB/Slice/Mysql.pm b/lib/Lufi/DB/Slice/Mysql.pm index cb55ed0..390a53a 100644 --- a/lib/Lufi/DB/Slice/Mysql.pm +++ b/lib/Lufi/DB/Slice/Mysql.pm @@ -7,6 +7,8 @@ sub new { $c = $c->SUPER::new(@_); + $c = $c->_slurp if defined $c->record; + return $c; } diff --git a/lib/Lufi/DB/Slice/Pg.pm b/lib/Lufi/DB/Slice/Pg.pm index defdf27..9b03ca7 100644 --- a/lib/Lufi/DB/Slice/Pg.pm +++ b/lib/Lufi/DB/Slice/Pg.pm @@ -7,6 +7,8 @@ sub new { $c = $c->SUPER::new(@_); + $c = $c->_slurp if defined $c->record; + return $c; } diff --git a/lib/Mounter.pm b/lib/Mounter.pm index 5408e0b..19b6dd4 100644 --- a/lib/Mounter.pm +++ b/lib/Mounter.pm @@ -27,6 +27,9 @@ sub startup { # Compress static assets $self->plugin('GzipStatic'); + # Fiat Tux helpers + $self->plugin('FiatTux::Helpers'); + # Headers $self->plugin('Lufi::Plugin::Headers'); diff --git a/lufi.conf.template b/lufi.conf.template index c60cdf9..e72c890 100644 --- a/lufi.conf.template +++ b/lufi.conf.template @@ -99,14 +99,25 @@ # Array of authorized domains for API calls. # If you want to authorize everyone to use the API: ['*'] # optional, no domains allowed by default - #allowed_domains => ['http://1.example.com', 'http://2.example.com'], + #allowed_domains => ['http://1.example.com', 'http://2.example.com'], # Define a path to the upload directory, where the uploaded files will be stored # You can define it relative to lufi directory or set an absolute path # Remember that it has to be in a directory writable by Lufi user - # DO NOT CHANGE THIS IF FILES HAVE BEEN ALREADY UPLOADED: THEY WILL NOT BE DOWNLOADABLE ANYMORE # optional, default is 'files' - #upload_dir => 'files', + #upload_dir => 'files', + + # You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem + # Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting + # IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it. + # optional, no default + #swift => { + # auth_url => 'https://auth-endpoint-url/v2.0', + # user => 'userid', + # password => 'password', + # tenant_name => 'project_id', + # container => 'lufi' + #}, # Allow to add a password on files, asked before allowing to download files # optional, default is 0 diff --git a/t/mysql.conf b/t/mysql.conf index 68f9bdb..51a2d80 100644 --- a/t/mysql.conf +++ b/t/mysql.conf @@ -32,6 +32,10 @@ # optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT #secrets => ['fdjsofjoihrei'], + # Name of the instance, displayed next to the logo + # optional, default is Lufi + #instance_name => 'Lufi', + # Choose a theme. See the available themes in `themes` directory # Optional, default is 'default' #theme => 'default', @@ -97,10 +101,6 @@ # optional, no domains allowed by default #allowed_domains => ['http://1.example.com', 'http://2.example.com'], - # If set, the shortened URLs will use this domain - # optional - #fixed_domain => 'example.org', - # Define a path to the upload directory, where the uploaded files will be stored # You can define it relative to lufi directory or set an absolute path # Remember that it has to be in a directory writable by Lufi user @@ -108,6 +108,12 @@ # optional, default is 'files' #upload_dir => 'files', + # You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem + # Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting + # IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it. + # optional, no default + #swift => { auth_url => 'http://swiftstack-picoswiftstack:8080/auth/v1.0', user => 'test', password => 'test', container => 'lufi', auth_version => '1.0' }, + # Allow to add a password on files, asked before allowing to download files # optional, default is 0 allow_pwd_on_files => 1, @@ -228,11 +234,47 @@ # # Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'` # Note that you can’t use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user + # optional, no default #ldap_map_attr => { # displayname => 'cn', # mail => 'mail' #}, + # When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without + # being authenticated. + # This is where you configure the behavior of the invitations. + # You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above. + # optional, no default + #invitations => { + # # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user + # # optional, default is `mail` + # mail_attr => 'mail', + # # The `From` header of invitation mail can be the mail of the LDAP user + # # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…) + # # To enable this feature, set it to 1 + # # optional, disabled by default + # send_invitation_with_ldap_user_mail => 1, + # # The user is able to set an expiration delay for the invitation. + # # This expiration delay can’t be more than this setting (in days). + # # optional, default is 30 days + # max_invitation_expiration_delay => 30, + # # Once the guest has submitted his files, he has an additional period of time to submit forgotten files. + # # You can set that additional period of time in minutes here. + # # To disable that feature, set it to 0 or less + # # optional, default is 10 minutes + # max_additional_period => 10, + # # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database. + # # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests’ sent files + # # from their `invitations` page. + # # Set to 1 to store guests’ files URLs in database + # # optional, default is 0 (disabled) + # save_files_url_in_db => 0, + # # Users can resend the invitation to their guest. This does not extend the invitation’s expiration delay unless you + # # set this option to 1. + # # optional, default is 0 (disabled) + # extend_invitation_expiration_on_resend => 0, + #}, + ######################### # Htpasswd authentication ######################### diff --git a/t/postgresql.conf b/t/postgresql.conf index 702da4a..0ac7cfe 100644 --- a/t/postgresql.conf +++ b/t/postgresql.conf @@ -32,6 +32,10 @@ # optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT #secrets => ['fdjsofjoihrei'], + # Name of the instance, displayed next to the logo + # optional, default is Lufi + #instance_name => 'Lufi', + # Choose a theme. See the available themes in `themes` directory # Optional, default is 'default' #theme => 'default', @@ -97,10 +101,6 @@ # optional, no domains allowed by default #allowed_domains => ['http://1.example.com', 'http://2.example.com'], - # If set, the shortened URLs will use this domain - # optional - #fixed_domain => 'example.org', - # Define a path to the upload directory, where the uploaded files will be stored # You can define it relative to lufi directory or set an absolute path # Remember that it has to be in a directory writable by Lufi user @@ -108,6 +108,12 @@ # optional, default is 'files' #upload_dir => 'files', + # You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem + # Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting + # IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it. + # optional, no default + #swift => { auth_url => 'http://swiftstack-picoswiftstack:8080/auth/v1.0', user => 'test', password => 'test', container => 'lufi', auth_version => '1.0' }, + # Allow to add a password on files, asked before allowing to download files # optional, default is 0 allow_pwd_on_files => 1, @@ -172,6 +178,7 @@ #port => 5432, user => 'lufi', pwd => 'lufi_pwd' + # # https://mojolicious.org/perldoc/Mojo/Pg#max_connections # # optional, default is 1 # #max_connections => 1, }, @@ -212,11 +219,47 @@ # # Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'` # Note that you can’t use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user + # optional, no default #ldap_map_attr => { # displayname => 'cn', # mail => 'mail' #}, + # When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without + # being authenticated. + # This is where you configure the behavior of the invitations. + # You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above. + # optional, no default + #invitations => { + # # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user + # # optional, default is `mail` + # mail_attr => 'mail', + # # The `From` header of invitation mail can be the mail of the LDAP user + # # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…) + # # To enable this feature, set it to 1 + # # optional, disabled by default + # send_invitation_with_ldap_user_mail => 1, + # # The user is able to set an expiration delay for the invitation. + # # This expiration delay can’t be more than this setting (in days). + # # optional, default is 30 days + # max_invitation_expiration_delay => 30, + # # Once the guest has submitted his files, he has an additional period of time to submit forgotten files. + # # You can set that additional period of time in minutes here. + # # To disable that feature, set it to 0 or less + # # optional, default is 10 minutes + # max_additional_period => 10, + # # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database. + # # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests’ sent files + # # from their `invitations` page. + # # Set to 1 to store guests’ files URLs in database + # # optional, default is 0 (disabled) + # save_files_url_in_db => 0, + # # Users can resend the invitation to their guest. This does not extend the invitation’s expiration delay unless you + # # set this option to 1. + # # optional, default is 0 (disabled) + # extend_invitation_expiration_on_resend => 0, + #}, + ######################### # Htpasswd authentication ######################### diff --git a/t/sqlite.conf b/t/sqlite.conf index fb1b55e..bebca16 100644 --- a/t/sqlite.conf +++ b/t/sqlite.conf @@ -32,6 +32,10 @@ # optional, default is ['fdjsofjoihrei'], PLEASE, CHANGE IT #secrets => ['fdjsofjoihrei'], + # Name of the instance, displayed next to the logo + # optional, default is Lufi + #instance_name => 'Lufi', + # Choose a theme. See the available themes in `themes` directory # Optional, default is 'default' #theme => 'default', @@ -97,10 +101,6 @@ # optional, no domains allowed by default #allowed_domains => ['http://1.example.com', 'http://2.example.com'], - # If set, the shortened URLs will use this domain - # optional - #fixed_domain => 'example.org', - # Define a path to the upload directory, where the uploaded files will be stored # You can define it relative to lufi directory or set an absolute path # Remember that it has to be in a directory writable by Lufi user @@ -108,6 +108,12 @@ # optional, default is 'files' #upload_dir => 'files', + # You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem + # Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting + # IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it. + # optional, no default + #swift => { auth_url => 'http://swiftstack-picoswiftstack:8080/auth/v1.0', user => 'test', password => 'test', container => 'lufi', auth_version => '1.0' }, + # Allow to add a password on files, asked before allowing to download files # optional, default is 0 allow_pwd_on_files => 1, @@ -217,11 +223,47 @@ # # Define the attributes like this: `lufi_attribute_name => 'LDAP_attribute_name'` # Note that you can’t use `username` as a Lufi attribute name: this name is reserved and will contain the login of the user + # optional, no default #ldap_map_attr => { # displayname => 'cn', # mail => 'mail' #}, + # When using LDAP authentication, LDAP users can invite people (by mail) to use Lufi to send them files without + # being authenticated. + # This is where you configure the behavior of the invitations. + # You may need to fetch some attributes from LDAP to use some invitations settings. See `ldap_map_attr` above. + # optional, no default + #invitations => { + # # The name of the key set in `ldap_map_attr` (above) that corresponds to the mail of the LDAP user + # # optional, default is `mail` + # mail_attr => 'mail', + # # The `From` header of invitation mail can be the mail of the LDAP user + # # Be sure to have a mail system that will correctly send the mail from your users! (DKIM, SPF…) + # # To enable this feature, set it to 1 + # # optional, disabled by default + # send_invitation_with_ldap_user_mail => 1, + # # The user is able to set an expiration delay for the invitation. + # # This expiration delay can’t be more than this setting (in days). + # # optional, default is 30 days + # max_invitation_expiration_delay => 30, + # # Once the guest has submitted his files, he has an additional period of time to submit forgotten files. + # # You can set that additional period of time in minutes here. + # # To disable that feature, set it to 0 or less + # # optional, default is 10 minutes + # max_additional_period => 10, + # # Lufi follows privacy-by-design, so, by default, no files URLs (with the decode secret) are stored in database. + # # However, the concern is different for this case. Storing files URLs makes users able to retrieve the guests’ sent files + # # from their `invitations` page. + # # Set to 1 to store guests’ files URLs in database + # # optional, default is 0 (disabled) + # save_files_url_in_db => 0, + # # Users can resend the invitation to their guest. This does not extend the invitation’s expiration delay unless you + # # set this option to 1. + # # optional, default is 0 (disabled) + # extend_invitation_expiration_on_resend => 0, + #}, + ######################### # Htpasswd authentication ######################### diff --git a/t/test.t b/t/test.t index 78fa19b..d062eba 100644 --- a/t/test.t +++ b/t/test.t @@ -77,6 +77,9 @@ BEGIN { Lufi::DB::Slice->new(app => $m)->delete_all; Lufi::DB::File->new(app => $m)->delete_all; +$config_file = Mojo::File->new($cfile->to_abs->to_string); +$config_orig = $config_file->slurp; + my $t = Test::Mojo->new('Lufi'); ## Wait for short generation @@ -103,6 +106,12 @@ test_infos_api(true); auth_test_suite('zoidberg', 'zoidberg'); restore_config(); +## Test Swift object storage +switch_to_swift(); +test_upload_file(); +test_download_file(); +restore_config(); + done_testing(); ###### @@ -263,9 +272,7 @@ sub restore_config { } sub switch_to_htpasswd { - $config_file = Mojo::File->new($cfile->to_abs->to_string); - $config_content = $config_file->slurp; - $config_orig = $config_content; + $config_content = $config_orig; $config_content =~ s/#?htpasswd.*/htpasswd => 't\/lufi.passwd',/gm; $config_file->spurt($config_content); @@ -291,3 +298,17 @@ sub switch_to_ldap { ## Wait for short generation sleep 5; } + +sub switch_to_swift { + $config_content = $config_orig; + $config_content =~ s/^( +)#?swift => \{ auth_url/$1swift => { auth_url/gm; + $config_file->spurt($config_content); + + Lufi::DB::Slice->new(app => $m)->delete_all; + Lufi::DB::File->new(app => $m)->delete_all; + + $t = Test::Mojo->new('Lufi'); + + ## Wait for short generation + sleep 5; +} diff --git a/themes/default/lib/Lufi/I18N/en.po b/themes/default/lib/Lufi/I18N/en.po index cf37d06..384ee9e 100644 --- a/themes/default/lib/Lufi/I18N/en.po +++ b/themes/default/lib/Lufi/I18N/en.po @@ -138,15 +138,15 @@ msgstr "Copy all links to clipboard" msgid "Copy to clipboard" msgstr "Copy to clipboard" -#: lib/Lufi/Controller/Files.pm:507 +#: lib/Lufi/Controller/Files.pm:502 msgid "Could not delete the file. You are not authenticated." msgstr "Could not delete the file. You are not authenticated." -#: lib/Lufi/Controller/Files.pm:489 +#: lib/Lufi/Controller/Files.pm:484 msgid "Could not find the file. Are you sure of the URL and the token?" msgstr "Could not find the file. Are you sure of the URL and the token?" -#: lib/Lufi/Controller/Files.pm:400 +#: lib/Lufi/Controller/Files.pm:395 msgid "Could not find the file. Are you sure of the URL?" msgstr "Could not find the file. Are you sure of the URL?" @@ -222,15 +222,15 @@ msgstr "Emails" msgid "Encrypting part XX1 of XX2" msgstr "Encrypting part XX1 of XX2" -#: lib/Lufi/Controller/Files.pm:289 +#: lib/Lufi/Controller/Files.pm:284 msgid "Error: the file existed but was deleted." msgstr "Error: the file existed but was deleted." -#: lib/Lufi/Controller/Files.pm:369 +#: lib/Lufi/Controller/Files.pm:364 msgid "Error: the file has not been sent entirely." msgstr "Error: the file has not been sent entirely." -#: lib/Lufi/Controller/Files.pm:379 +#: lib/Lufi/Controller/Files.pm:374 msgid "Error: unable to find the file. Are you sure of your URL?" msgstr "Error: unable to find the file. Are you sure of your URL?" @@ -250,7 +250,7 @@ msgstr "Expires at" msgid "Export localStorage data" msgstr "Export localStorage data" -#: lib/Lufi/Controller/Files.pm:471 +#: lib/Lufi/Controller/Files.pm:466 msgid "File deleted" msgstr "File deleted" @@ -436,7 +436,7 @@ msgid "Name of the zip file" msgstr "Name of the zip file" #. (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 "No enough space available on the server for this file (size: %1)." @@ -551,7 +551,7 @@ msgid "Sorry, your invitation has expired or has been deleted." msgstr "Sorry, your invitation has expired or has been deleted." #. ($invit->ldap_user_mail) -#: lib/Lufi/Controller/Files.pm:122 +#: lib/Lufi/Controller/Files.pm:123 msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." msgstr "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." @@ -585,7 +585,7 @@ msgstr "The email subject can't be empty." msgid "The expiration delay (%1) is not between 1 and %2 days." msgstr "The expiration delay (%1) is not between 1 and %2 days." -#: lib/Lufi/Controller/Files.pm:468 +#: lib/Lufi/Controller/Files.pm:463 msgid "The file has already been deleted" msgstr "The file has already been deleted" @@ -640,11 +640,11 @@ msgstr "The mail has been sent." msgid "The original (and only for now) author is Luc Didry." msgstr "The original (and only for now) author is Luc Didry." -#: lib/Lufi/Controller/Files.pm:236 +#: lib/Lufi/Controller/Files.pm:231 msgid "The server was unable to find the file record to add your file part to. Please, contact the administrator." msgstr "The server was unable to find the file record to add your file part to. Please, contact the administrator." -#: lib/Lufi/Controller/Files.pm:295 +#: lib/Lufi/Controller/Files.pm:290 msgid "This file has been deactivated by the admins. Contact them to know why." msgstr "This file has been deactivated by the admins. Contact them to know why." @@ -674,17 +674,17 @@ msgid "Unable to copy the link(s) to your clipboard" msgstr "Unable to copy the link(s) to your clipboard" #. ($short) -#: lib/Lufi/Controller/Files.pm:439 +#: lib/Lufi/Controller/Files.pm:434 msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." msgstr "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." #. ($short) -#: lib/Lufi/Controller/Files.pm:429 +#: lib/Lufi/Controller/Files.pm:424 msgid "Unable to get counter for %1. The token is invalid." msgstr "Unable to get counter for %1. The token is invalid." #. ($short) -#: lib/Lufi/Controller/Files.pm:449 +#: lib/Lufi/Controller/Files.pm:444 msgid "Unable to get counter for %1. You are not authenticated." msgstr "Unable to get counter for %1. You are not authenticated." @@ -769,7 +769,7 @@ msgstr "Your browser does not have enough entropy to generate a strong encryptio msgid "Your file is too big: %1 (maximum size allowed: %2)" msgstr "Your file is too big: %1 (maximum size allowed: %2)" -#: lib/Lufi/Controller/Files.pm:351 +#: lib/Lufi/Controller/Files.pm:346 msgid "Your password is not valid. Please refresh the page to retry." msgstr "Your password is not valid. Please refresh the page to retry." diff --git a/themes/default/lib/Lufi/I18N/lufi.pot b/themes/default/lib/Lufi/I18N/lufi.pot index c55bda4..2d76014 100644 --- a/themes/default/lib/Lufi/I18N/lufi.pot +++ b/themes/default/lib/Lufi/I18N/lufi.pot @@ -138,15 +138,15 @@ msgstr "" msgid "Copy to clipboard" msgstr "" -#: lib/Lufi/Controller/Files.pm:507 +#: lib/Lufi/Controller/Files.pm:502 msgid "Could not delete the file. You are not authenticated." msgstr "" -#: lib/Lufi/Controller/Files.pm:489 +#: lib/Lufi/Controller/Files.pm:484 msgid "Could not find the file. Are you sure of the URL and the token?" msgstr "" -#: lib/Lufi/Controller/Files.pm:400 +#: lib/Lufi/Controller/Files.pm:395 msgid "Could not find the file. Are you sure of the URL?" msgstr "" @@ -222,15 +222,15 @@ msgstr "" msgid "Encrypting part XX1 of XX2" msgstr "" -#: lib/Lufi/Controller/Files.pm:289 +#: lib/Lufi/Controller/Files.pm:284 msgid "Error: the file existed but was deleted." msgstr "" -#: lib/Lufi/Controller/Files.pm:369 +#: lib/Lufi/Controller/Files.pm:364 msgid "Error: the file has not been sent entirely." msgstr "" -#: lib/Lufi/Controller/Files.pm:379 +#: lib/Lufi/Controller/Files.pm:374 msgid "Error: unable to find the file. Are you sure of your URL?" msgstr "" @@ -250,7 +250,7 @@ msgstr "" msgid "Export localStorage data" msgstr "" -#: lib/Lufi/Controller/Files.pm:471 +#: lib/Lufi/Controller/Files.pm:466 msgid "File deleted" msgstr "" @@ -436,7 +436,7 @@ msgid "Name of the zip file" msgstr "" #. (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 "" @@ -551,7 +551,7 @@ msgid "Sorry, your invitation has expired or has been deleted." msgstr "" #. ($invit->ldap_user_mail) -#: lib/Lufi/Controller/Files.pm:122 +#: lib/Lufi/Controller/Files.pm:123 msgid "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation." msgstr "" @@ -585,7 +585,7 @@ msgstr "" msgid "The expiration delay (%1) is not between 1 and %2 days." msgstr "" -#: lib/Lufi/Controller/Files.pm:468 +#: lib/Lufi/Controller/Files.pm:463 msgid "The file has already been deleted" msgstr "" @@ -640,11 +640,11 @@ msgstr "" msgid "The original (and only for now) author is Luc Didry." msgstr "" -#: lib/Lufi/Controller/Files.pm:236 +#: lib/Lufi/Controller/Files.pm:231 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:295 +#: lib/Lufi/Controller/Files.pm:290 msgid "This file has been deactivated by the admins. Contact them to know why." msgstr "" @@ -674,17 +674,17 @@ msgid "Unable to copy the link(s) to your clipboard" msgstr "" #. ($short) -#: lib/Lufi/Controller/Files.pm:439 +#: lib/Lufi/Controller/Files.pm:434 msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage." msgstr "" #. ($short) -#: lib/Lufi/Controller/Files.pm:429 +#: lib/Lufi/Controller/Files.pm:424 msgid "Unable to get counter for %1. The token is invalid." msgstr "" #. ($short) -#: lib/Lufi/Controller/Files.pm:449 +#: lib/Lufi/Controller/Files.pm:444 msgid "Unable to get counter for %1. You are not authenticated." msgstr "" @@ -769,7 +769,7 @@ msgstr "" msgid "Your file is too big: %1 (maximum size allowed: %2)" msgstr "" -#: lib/Lufi/Controller/Files.pm:351 +#: lib/Lufi/Controller/Files.pm:346 msgid "Your password is not valid. Please refresh the page to retry." msgstr "" diff --git a/utilities/migrations/mysql.sql b/utilities/migrations/mysql.sql index e9a8ebb..31a3237 100644 --- a/utilities/migrations/mysql.sql +++ b/utilities/migrations/mysql.sql @@ -51,3 +51,7 @@ DROP TABLE invitations; ALTER TABLE files MODIFY filesize bigint; -- 4 down ALTER TABLE files MODIFY filesize integer; +-- 5 up +ALTER TABLE slices MODIFY path varchar(255); +-- 5 down +ALTER TABLE slices MODIFY path varchar(255) unique NOT NULL; diff --git a/utilities/migrations/pg.sql b/utilities/migrations/pg.sql index 28c8c03..8083c23 100644 --- a/utilities/migrations/pg.sql +++ b/utilities/migrations/pg.sql @@ -54,3 +54,9 @@ DROP TABLE invitations; ALTER TABLE files ALTER COLUMN filesize TYPE bigint; -- 5 down ALTER TABLE files ALTER COLUMN filesize TYPE integer; +-- 6 up +ALTER TABLE slices ALTER COLUMN path DROP NOT NULL; +ALTER TABLE slices DROP CONSTRAINT slices_path_key; +-- 6 down +ALTER TABLE slices ADD CONSTRAINT slices_path_key UNIQUE (path) ; +ALTER TABLE slices ALTER COLUMN path SET NOT NULL; From c7b3509bcf17ccea83643498933c243b71dabaa7 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Thu, 7 May 2020 14:45:09 +0200 Subject: [PATCH 64/66] =?UTF-8?q?=F0=9F=94=A5=20=E2=80=94=20Remove=20dupli?= =?UTF-8?q?cate=20feature=20in=20cpanfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cpanfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/cpanfile b/cpanfile index 7a8dd61..ca248b3 100644 --- a/cpanfile +++ b/cpanfile @@ -58,6 +58,3 @@ feature 'mysql', 'MySQL support' => sub { feature 'swift-storage', 'Openstack Swift object storage support' => sub { requires 'Net::OpenStack::Swift'; }; -feature 'test' => sub { - requires 'Devel::Cover'; -}; From ed302d5a4b236c1878ca2c5e8d339c0043c50478 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Wed, 20 May 2020 07:58:12 +0200 Subject: [PATCH 65/66] =?UTF-8?q?=F0=9F=90=9B=20=E2=80=94=20Fix=20bug=20wi?= =?UTF-8?q?th=20accents=20in=20file=20name=20with=20Swift?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/Lufi/DB/Slice.pm | 4 ++-- t/test.t | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/Lufi/DB/Slice.pm b/lib/Lufi/DB/Slice.pm index a3703ae..e877953 100644 --- a/lib/Lufi/DB/Slice.pm +++ b/lib/Lufi/DB/Slice.pm @@ -131,7 +131,7 @@ sub store { container_name => $c->app->config('swift')->{container}, object_name => $c->get_path(), content_length => length(Encode::encode_utf8($text)), - content => $text + content => Encode::encode_utf8($text) ); } else { # Create directory @@ -176,7 +176,7 @@ sub retrieve { $file .= $chunk; } ); - return $file; + return Encode::decode_utf8($file); } else { my $file = catfile($c->app->config('upload_dir'), $c->get_path()); return Mojo::File->new($file)->slurp; diff --git a/t/test.t b/t/test.t index d062eba..5d0da45 100644 --- a/t/test.t +++ b/t/test.t @@ -13,18 +13,19 @@ use FindBin qw($Bin); my ($m, $cfile, $config_orig, $config_file, $config_content); -my $msg = to_json { +my $msg = Encode::encode_utf8(to_json { "total" => 1, "part" => 0, "size" => 7, - "name" => "foobar.txt", + "name" => "foobaré.txt", "type" => "text/plain", "delay" => "0", "del_at_first_view" => 1, "id" => undef, "zipped" => 0, "i" => 0 -}; +}); +my $filename_test = Encode::encode_utf8('foobaré'); my $encrypted = '"{\\"iv\\":\\"2RGAviAeYybBqcLCmnqlgA==\\",\\"v\\":1,\\"iter\\":10000,\\"ks\\":128,\\"ts\\":64,\\"mode\\":\\"ccm\\",\\"adata\\":\\"\\",\\"cipher\\":\\"aes\\",\\"salt\\":\\"1dvKtbZ8hxA=\\",\\"ct\\":\\"w9wDZCwNSyH/yL7q1GW5fPSdi+w=\\"}"'; my $encrypted_rgx = $encrypted; $encrypted_rgx =~ s@\\@\\\\@g; @@ -154,7 +155,7 @@ sub test_upload_file { ->message_like(qr@"duration":\d+@) ->message_like(qr@"i":0@) ->message_like(qr@"j":0@) - ->message_like(qr@"name":"foobar\.txt"@) + ->message_like(qr@"name":"$filename_test\.txt"@) ->message_like(qr@"parts":1@) ->message_like(qr@"sent_delay":0@) ->message_like(qr@"short":"[^"]+"@) @@ -192,7 +193,7 @@ sub test_download_file { ->message_like(qr@"id":null@) ->message_like(qr@"del_at_first_view":1@) ->message_like(qr@"delay":"0"@) - ->message_like(qr@"name":"foobar\.txt"@) + ->message_like(qr@"name":"$filename_test\.txt"@) ->message_like(qr@"size":7@) ->message_like(qr@"type":"text\\/plain"@) ->message_like(qr@XXMOJOXX@) From 0b2ad4a66e0ffde323491206052c6fdedc821e77 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Tue, 2 Jun 2020 21:17:11 +0200 Subject: [PATCH 66/66] =?UTF-8?q?=F0=9F=94=A7=20=E2=80=94=20Mark=20Swift?= =?UTF-8?q?=20as=20experimental=20+=20improve=20copyFilesToSwift=20command?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG | 2 +- lib/Lufi.pm | 1 + lib/Lufi/Command/copyFilesToSwift.pm | 4 ++++ lufi.conf.template | 5 +++++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 7cc6399..da507bb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,7 +5,7 @@ Revision history for Lufi - Use Weblate instead of Zanata for translations (https://weblate.framasoft.org/projects/lufi/development/) - Add config API endpoint (#183) - Show latest tag and commit of the instance in about page and config API endpoint (#174) - - Add support for Swift object storage + - Add support for Swift object storage (EXPERIMENTAL) 0.04.6 2019-11-07 - Now can send large files (>2Gio) while using a DB other than SQLite (#165) diff --git a/lib/Lufi.pm b/lib/Lufi.pm index 832cf31..4f961f3 100644 --- a/lib/Lufi.pm +++ b/lib/Lufi.pm @@ -69,6 +69,7 @@ sub startup { # Now helpers has been loaded, time to check Swift container if ($config->{swift}) { $self->check_swift_container(); + $self->log->info('EXPERIMENTAL Using Swift object storage'); } # Recurrent task diff --git a/lib/Lufi/Command/copyFilesToSwift.pm b/lib/Lufi/Command/copyFilesToSwift.pm index 91b7564..860538e 100644 --- a/lib/Lufi/Command/copyFilesToSwift.pm +++ b/lib/Lufi/Command/copyFilesToSwift.pm @@ -13,6 +13,10 @@ sub run { $c->app->check_swift_container(); my @dirs = glob(File::Spec->catdir($c->app->config('upload_dir'), '*')); + unless (scalar(@dirs)) { + say sprintf('The configured upload_dir (%s) seems to be empty. Is `upload_dir` configured in lufi.conf?', $c->app->config('upload_dir')); + exit 1; + } say sprintf('%d folders to upload to Swift (can\'t say how many files, or the total size, sorry). This can take some time.', scalar(@dirs)); print 'Do you want to continue? [Y/n] '; my $confirm = ; diff --git a/lufi.conf.template b/lufi.conf.template index e72c890..b7fd9fe 100644 --- a/lufi.conf.template +++ b/lufi.conf.template @@ -107,9 +107,14 @@ # optional, default is 'files' #upload_dir => 'files', + #!!!!!!!!!!!!!!! + # EXPERIMENTAL ! + #!!!!!!!!!!!!!!! # You can store files on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem # Please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting # IMPORTANT: add a `container` key in it, to let Lufi know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lufi need it. + # EXPERIMENTAL: if the upload or download of files are stucked, reload Lufi and create a cron task to reload Lufi once a day + # You can copy Lufi files to Swift object storage by launching the command `carton exec script/lufi copyFilesToSwift` (can take a long time) # optional, no default #swift => { # auth_url => 'https://auth-endpoint-url/v2.0',