diff options
391 files changed, 2053 insertions, 899 deletions
diff --git a/3rdparty b/3rdparty -Subproject d0794726e2c370c80fbcd29d29b2291fdf9e15f +Subproject 4c5c5f198fd46c7743cd2f655584ec8db8824ca diff --git a/apps/comments/l10n/cs.js b/apps/comments/l10n/cs.js index 3677d0bbff7..f3c60dad915 100644 --- a/apps/comments/l10n/cs.js +++ b/apps/comments/l10n/cs.js @@ -15,7 +15,7 @@ OC.L10N.register( "Error occurred while retrieving comment with ID {id}" : "Došlo k chybě při načítání komentáře s ID {id}", "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}", "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"], + "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtených komentářů"], "Comment" : "Komentář", "You commented" : "Okomentoval(a) jsi", "%1$s commented" : "%1$s okomentován", @@ -33,4 +33,4 @@ OC.L10N.register( "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/comments/l10n/cs.json b/apps/comments/l10n/cs.json index 7f9bb2f636c..aad76589cef 100644 --- a/apps/comments/l10n/cs.json +++ b/apps/comments/l10n/cs.json @@ -13,7 +13,7 @@ "Error occurred while retrieving comment with ID {id}" : "Došlo k chybě při načítání komentáře s ID {id}", "Error occurred while updating comment with id {id}" : "Došlo k chybě při aktualizování komentáře s id {id}", "Error occurred while posting comment" : "Došlo k chybě při zveřejňování komentáře", - "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů"], + "_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtených komentářů"], "Comment" : "Komentář", "You commented" : "Okomentoval(a) jsi", "%1$s commented" : "%1$s okomentován", @@ -30,5 +30,5 @@ "Unknown user" : "Neznámý uživatel", "A (now) deleted user mentioned you in a comment on “%s”" : "A (now) deleted user mentioned you in a comment on “%s”", "A (now) deleted user mentioned you in a comment on “{file}”" : "Nyní již smazaný uživatel vás zmínil v komentáři u \"{file}\"" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/comments/l10n/he.js b/apps/comments/l10n/he.js index ce851ed9fb2..6d8da9bbb6e 100644 --- a/apps/comments/l10n/he.js +++ b/apps/comments/l10n/he.js @@ -15,7 +15,7 @@ OC.L10N.register( "Error occurred while retrieving comment with ID {id}" : "אירעה שגיאה בעת קבלת התגובה עם המזהה {id}", "Error occurred while updating comment with id {id}" : "שגיאה אירעה כאשר עודכנה תגובה עם מספר זיהוי {id}", "Error occurred while posting comment" : "אירעה שגיאה בזמן פרסום תגובה", - "_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו"], + "_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו","%n תגובות שלא נקראו","%n תגובות שלא נקראו"], "Comment" : "תגובה", "You commented" : "הערות שלך", "%1$s commented" : "התקבלו תגובות %1$s", @@ -33,4 +33,4 @@ OC.L10N.register( "A (now) deleted user mentioned you in a comment on “%s”" : "אוזכרת על ידי משתמש שנמחק (נכון לעכשיו) בתגובה על „%s”", "A (now) deleted user mentioned you in a comment on “{file}”" : "אוזכרת על ידי משתמש שנמחק (נכון לעכשיו) בתגובה על „{file}”" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/comments/l10n/he.json b/apps/comments/l10n/he.json index 8ab976952a1..806897486e0 100644 --- a/apps/comments/l10n/he.json +++ b/apps/comments/l10n/he.json @@ -13,7 +13,7 @@ "Error occurred while retrieving comment with ID {id}" : "אירעה שגיאה בעת קבלת התגובה עם המזהה {id}", "Error occurred while updating comment with id {id}" : "שגיאה אירעה כאשר עודכנה תגובה עם מספר זיהוי {id}", "Error occurred while posting comment" : "אירעה שגיאה בזמן פרסום תגובה", - "_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו"], + "_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו","%n תגובות שלא נקראו","%n תגובות שלא נקראו"], "Comment" : "תגובה", "You commented" : "הערות שלך", "%1$s commented" : "התקבלו תגובות %1$s", @@ -30,5 +30,5 @@ "Unknown user" : "משתמש לא ידוע", "A (now) deleted user mentioned you in a comment on “%s”" : "אוזכרת על ידי משתמש שנמחק (נכון לעכשיו) בתגובה על „%s”", "A (now) deleted user mentioned you in a comment on “{file}”" : "אוזכרת על ידי משתמש שנמחק (נכון לעכשיו) בתגובה על „{file}”" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/comments/l10n/ka_GE.js b/apps/comments/l10n/ka_GE.js index 295d6ce41ec..8210f618893 100644 --- a/apps/comments/l10n/ka_GE.js +++ b/apps/comments/l10n/ka_GE.js @@ -14,7 +14,7 @@ OC.L10N.register( "Allowed characters {count} of {max}" : "დაშვებული სიმბოლოები {count} {max}-იდან", "Error occurred while updating comment with id {id}" : "კომენტარის id-იდ {id}-ის ცვლილებისას წარმოიშვა შეცდომა", "Error occurred while posting comment" : "კომენტარის გამოქვეყნებისას წარმოიშვა შეცდომა", - "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი"], + "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი","%n წაუკუთხავი კომენტარი"], "Comment" : "კომენტარის დამატება", "You commented" : "თქვენ გააკეთეთ კომენტარი", "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი", @@ -32,4 +32,4 @@ OC.L10N.register( "A (now) deleted user mentioned you in a comment on “%s”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში “%s”-ზე", "A (now) deleted user mentioned you in a comment on “{file}”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში ფაილზე \"{file}\"" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/comments/l10n/ka_GE.json b/apps/comments/l10n/ka_GE.json index d10f8aafa0e..37d01a9f000 100644 --- a/apps/comments/l10n/ka_GE.json +++ b/apps/comments/l10n/ka_GE.json @@ -12,7 +12,7 @@ "Allowed characters {count} of {max}" : "დაშვებული სიმბოლოები {count} {max}-იდან", "Error occurred while updating comment with id {id}" : "კომენტარის id-იდ {id}-ის ცვლილებისას წარმოიშვა შეცდომა", "Error occurred while posting comment" : "კომენტარის გამოქვეყნებისას წარმოიშვა შეცდომა", - "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი"], + "_%n unread comment_::_%n unread comments_" : ["%n წაუკუთხავი კომენტარი","%n წაუკუთხავი კომენტარი"], "Comment" : "კომენტარის დამატება", "You commented" : "თქვენ გააკეთეთ კომენტარი", "%1$s commented" : "%1$s მოხმარებელმა გააკეთა კომენტარი", @@ -29,5 +29,5 @@ "Unknown user" : "უცნობი მომხმარებელი", "A (now) deleted user mentioned you in a comment on “%s”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში “%s”-ზე", "A (now) deleted user mentioned you in a comment on “{file}”" : "(ახლა) წაშლილმა მოხმარებელმა მოგიხსენიათ კომენტარში ფაილზე \"{file}\"" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/lt_LT.js b/apps/comments/l10n/lt_LT.js index 8608dc01f9d..86ed07f90cf 100644 --- a/apps/comments/l10n/lt_LT.js +++ b/apps/comments/l10n/lt_LT.js @@ -14,7 +14,7 @@ OC.L10N.register( "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}", "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}", "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida", - "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"], + "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų","%n neskaitytų komentarų"], "Comment" : "Komentaras", "You commented" : "Jūs pakomentavote", "%1$s commented" : "%1$s pakomentavo", @@ -30,4 +30,4 @@ OC.L10N.register( "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"", "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/comments/l10n/lt_LT.json b/apps/comments/l10n/lt_LT.json index 165f33b6de1..28298b3f044 100644 --- a/apps/comments/l10n/lt_LT.json +++ b/apps/comments/l10n/lt_LT.json @@ -12,7 +12,7 @@ "Allowed characters {count} of {max}" : "Leidžiama simbolių {count} iš {max}", "Error occurred while updating comment with id {id}" : "Klaida bandant pataisyti komentarą pagal identifikavimo numerį {id}", "Error occurred while posting comment" : "Skelbiant komentarą, įvyko klaida", - "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų"], + "_%n unread comment_::_%n unread comments_" : ["%n neskaitytas komentaras","%n neskaityti komentarai","%n neskaitytų komentarų","%n neskaitytų komentarų"], "Comment" : "Komentaras", "You commented" : "Jūs pakomentavote", "%1$s commented" : "%1$s pakomentavo", @@ -27,5 +27,5 @@ "Unknown user" : "Nežinomas naudotojas", "A (now) deleted user mentioned you in a comment on “%s”" : "Ištrintas vartotojas paminėjo jus komentare \"%s\"", "A (now) deleted user mentioned you in a comment on “{file}”" : "Ištrintas vartotojas paminėjo jus komentare \"{file}\"" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/comments/l10n/sk.js b/apps/comments/l10n/sk.js index a797eb61619..6e589e95979 100644 --- a/apps/comments/l10n/sk.js +++ b/apps/comments/l10n/sk.js @@ -15,7 +15,7 @@ OC.L10N.register( "Error occurred while retrieving comment with ID {id}" : "Pri načítavaní komentára s id {id} nastala chyba", "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba", "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"], + "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov","%n neprečítaných komentárov"], "Comment" : "Komentár", "You commented" : "Komentovali ste", "%1$s commented" : "%1$s komentoval", @@ -32,4 +32,4 @@ OC.L10N.register( "A (now) deleted user mentioned you in a comment on “%s”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"%s\"", "A (now) deleted user mentioned you in a comment on “{file}”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"{file}\"" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/comments/l10n/sk.json b/apps/comments/l10n/sk.json index 1a9c6d58e05..7381284d36b 100644 --- a/apps/comments/l10n/sk.json +++ b/apps/comments/l10n/sk.json @@ -13,7 +13,7 @@ "Error occurred while retrieving comment with ID {id}" : "Pri načítavaní komentára s id {id} nastala chyba", "Error occurred while updating comment with id {id}" : "Pri aktualizovaní komentára s id {id} nastala chyba", "Error occurred while posting comment" : "Pri odosielaní komentára nastala chyba", - "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov"], + "_%n unread comment_::_%n unread comments_" : ["%n neprečítaný komentár","%n neprečítaných komentárov","%n neprečítaných komentárov","%n neprečítaných komentárov"], "Comment" : "Komentár", "You commented" : "Komentovali ste", "%1$s commented" : "%1$s komentoval", @@ -29,5 +29,5 @@ "Unknown user" : "Neznámy používateľ", "A (now) deleted user mentioned you in a comment on “%s”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"%s\"", "A (now) deleted user mentioned you in a comment on “{file}”" : "Teraz už odstránený používateľ vás spomenul v komentári k \"{file}\"" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/comments/l10n/uk.js b/apps/comments/l10n/uk.js index fdd6cf84163..84a3f7f4388 100644 --- a/apps/comments/l10n/uk.js +++ b/apps/comments/l10n/uk.js @@ -26,4 +26,4 @@ OC.L10N.register( "<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів", "Unknown user" : "Невідомий користувач" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/comments/l10n/uk.json b/apps/comments/l10n/uk.json index a33108bae71..0476d4a369d 100644 --- a/apps/comments/l10n/uk.json +++ b/apps/comments/l10n/uk.json @@ -23,5 +23,5 @@ "{author} commented on {file}" : "{author} прокоментував {file}", "<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів", "Unknown user" : "Невідомий користувач" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js index 012a3c09b88..6171105a7b1 100644 --- a/apps/dav/l10n/cs.js +++ b/apps/dav/l10n/cs.js @@ -64,4 +64,4 @@ OC.L10N.register( "Please make sure to properly set up the email settings above." : "Ujistěte se, že jste správně nastavili výše uvedená nastavení e-mailu.", "Automatically generate a birthday calendar" : "Automaticky vytvořit kalendář s narozeninami" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json index 09b60937f3a..ce0bc06e43e 100644 --- a/apps/dav/l10n/cs.json +++ b/apps/dav/l10n/cs.json @@ -61,5 +61,5 @@ "Send invitations to attendees" : "Poslat pozvánky na adresy účastníků", "Please make sure to properly set up the email settings above." : "Ujistěte se, že jste správně nastavili výše uvedená nastavení e-mailu.", "Automatically generate a birthday calendar" : "Automaticky vytvořit kalendář s narozeninami" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/dav/l10n/he.js b/apps/dav/l10n/he.js index 04523cb0c1e..137476ddc05 100644 --- a/apps/dav/l10n/he.js +++ b/apps/dav/l10n/he.js @@ -36,4 +36,4 @@ OC.L10N.register( "Birthday calendars will be generated by a background job." : "יומני ימי הולדת ייווצרו על ידי משימה ברקע.", "Hence they will not be available immediately after enabling but will show up after some time." : "לכן הם לא יהיה זמינים מיד לאחר ההפעלה אלא הם יופיעו לאחר זמן מה." }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/dav/l10n/he.json b/apps/dav/l10n/he.json index 11c7ca6b6bf..b0d2b58a58d 100644 --- a/apps/dav/l10n/he.json +++ b/apps/dav/l10n/he.json @@ -33,5 +33,5 @@ "Automatically generate a birthday calendar" : "יצירת יומן ימי הולדת אוטומטית", "Birthday calendars will be generated by a background job." : "יומני ימי הולדת ייווצרו על ידי משימה ברקע.", "Hence they will not be available immediately after enabling but will show up after some time." : "לכן הם לא יהיה זמינים מיד לאחר ההפעלה אלא הם יופיעו לאחר זמן מה." -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/dav/l10n/ka_GE.js b/apps/dav/l10n/ka_GE.js index 5c3d70b2c64..ab3ee8c8cb3 100644 --- a/apps/dav/l10n/ka_GE.js +++ b/apps/dav/l10n/ka_GE.js @@ -66,4 +66,4 @@ OC.L10N.register( "Birthday calendars will be generated by a background job." : "ბადადების დღეების კალენდრები გენერირებულ იქნება ფონურ რეჟიმში.", "Hence they will not be available immediately after enabling but will show up after some time." : "ისინი არ იქნებიან ხელმიწავდომნი უცბად, მაგრამ გამოჩნდებიან გარკვეული პერიოდის შემდეგ." }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/dav/l10n/ka_GE.json b/apps/dav/l10n/ka_GE.json index c9318e2c9f5..d441827bdc5 100644 --- a/apps/dav/l10n/ka_GE.json +++ b/apps/dav/l10n/ka_GE.json @@ -63,5 +63,5 @@ "Automatically generate a birthday calendar" : "დაბადების დღეების კალენდრების ავტომატური გენერირება", "Birthday calendars will be generated by a background job." : "ბადადების დღეების კალენდრები გენერირებულ იქნება ფონურ რეჟიმში.", "Hence they will not be available immediately after enabling but will show up after some time." : "ისინი არ იქნებიან ხელმიწავდომნი უცბად, მაგრამ გამოჩნდებიან გარკვეული პერიოდის შემდეგ." -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/dav/l10n/lt_LT.js b/apps/dav/l10n/lt_LT.js index ec20bcf7bc8..de2bb8271f1 100644 --- a/apps/dav/l10n/lt_LT.js +++ b/apps/dav/l10n/lt_LT.js @@ -41,9 +41,13 @@ OC.L10N.register( "A calendar <strong>event</strong> was modified" : "Kalendoriaus <strong>įvykis</strong> buvo pakeistas", "A calendar <strong>todo</strong> was modified" : "Kalendoriaus <strong>užduotis</strong> buvo pakeista", "Contact birthdays" : "Kontaktų gimtadieniai", + "Invitation updated" : "Pakvietimas atnaujintas", + "Description:" : "Aprašas:", "Contacts" : "Kontaktai", + "WebDAV" : "WebDAV", "Technical details" : "Techninė informacija", "Remote Address: %s" : "Nuotolinis adresas: %s", - "Request ID: %s" : "Užklausos ID: %s" + "Request ID: %s" : "Užklausos ID: %s", + "CalDAV server" : "CalDAV serveris" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/dav/l10n/lt_LT.json b/apps/dav/l10n/lt_LT.json index c0a8e43c7b8..aaef0cceafa 100644 --- a/apps/dav/l10n/lt_LT.json +++ b/apps/dav/l10n/lt_LT.json @@ -39,9 +39,13 @@ "A calendar <strong>event</strong> was modified" : "Kalendoriaus <strong>įvykis</strong> buvo pakeistas", "A calendar <strong>todo</strong> was modified" : "Kalendoriaus <strong>užduotis</strong> buvo pakeista", "Contact birthdays" : "Kontaktų gimtadieniai", + "Invitation updated" : "Pakvietimas atnaujintas", + "Description:" : "Aprašas:", "Contacts" : "Kontaktai", + "WebDAV" : "WebDAV", "Technical details" : "Techninė informacija", "Remote Address: %s" : "Nuotolinis adresas: %s", - "Request ID: %s" : "Užklausos ID: %s" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" + "Request ID: %s" : "Užklausos ID: %s", + "CalDAV server" : "CalDAV serveris" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/dav/l10n/sk.js b/apps/dav/l10n/sk.js index 8122af1dcf0..04e6b4f06ea 100644 --- a/apps/dav/l10n/sk.js +++ b/apps/dav/l10n/sk.js @@ -65,4 +65,4 @@ OC.L10N.register( "Birthday calendars will be generated by a background job." : "Narodeninové kalendáre budú generované úlohou na pozadí.", "Hence they will not be available immediately after enabling but will show up after some time." : "Preto nebudú dostupné hneď po povolení, ale zobrazia sa po určitom čase" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/dav/l10n/sk.json b/apps/dav/l10n/sk.json index a30b68b0416..2c979c9d3f2 100644 --- a/apps/dav/l10n/sk.json +++ b/apps/dav/l10n/sk.json @@ -62,5 +62,5 @@ "Automatically generate a birthday calendar" : "Automaticky generovať narodeninový kalendár", "Birthday calendars will be generated by a background job." : "Narodeninové kalendáre budú generované úlohou na pozadí.", "Hence they will not be available immediately after enabling but will show up after some time." : "Preto nebudú dostupné hneď po povolení, ale zobrazia sa po určitom čase" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/cs.js b/apps/encryption/l10n/cs.js index 71076d204c3..b0071362407 100644 --- a/apps/encryption/l10n/cs.js +++ b/apps/encryption/l10n/cs.js @@ -61,4 +61,4 @@ OC.L10N.register( "Disabled" : "Zakázáno", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou. Spusťte příkaz 'occ encryption:migrate' nebo kontaktujte svého administrátora." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/encryption/l10n/cs.json b/apps/encryption/l10n/cs.json index 69aaf8ebadc..1c42615c30b 100644 --- a/apps/encryption/l10n/cs.json +++ b/apps/encryption/l10n/cs.json @@ -58,5 +58,5 @@ "Enabled" : "Povoleno", "Disabled" : "Zakázáno", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte přenést své šifrovací klíče ze staré verze šifrování (ownCloud <= 8.0) na novou. Spusťte příkaz 'occ encryption:migrate' nebo kontaktujte svého administrátora." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/encryption/l10n/fa.js b/apps/encryption/l10n/fa.js index c4759a799e8..d7638cc179b 100644 --- a/apps/encryption/l10n/fa.js +++ b/apps/encryption/l10n/fa.js @@ -39,4 +39,4 @@ OC.L10N.register( "Enabled" : "فعال شده", "Disabled" : "غیرفعال شده" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/apps/encryption/l10n/fa.json b/apps/encryption/l10n/fa.json index a9adbebb31b..653d1bc2f8c 100644 --- a/apps/encryption/l10n/fa.json +++ b/apps/encryption/l10n/fa.json @@ -36,5 +36,5 @@ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "فعال کردن این گزینه به شما اجازه خواهد داد در صورت از دست دادن رمزعبور به فایل های رمزگذاری شده خود دسترسی داشته باشید.", "Enabled" : "فعال شده", "Disabled" : "غیرفعال شده" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/he.js b/apps/encryption/l10n/he.js index 5ed57596d5f..b9390bc11c5 100644 --- a/apps/encryption/l10n/he.js +++ b/apps/encryption/l10n/he.js @@ -61,4 +61,4 @@ OC.L10N.register( "Disabled" : "מנוטרל", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "יש צורך להמיר את מפתחות ההצפנה מהצופן הישן (ownCloud <= 8.0) לצופן החדש. יש להריץ 'occ encryption:migrate' או לפנות למנהל שלך" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/encryption/l10n/he.json b/apps/encryption/l10n/he.json index 645302d577d..93133287a5c 100644 --- a/apps/encryption/l10n/he.json +++ b/apps/encryption/l10n/he.json @@ -58,5 +58,5 @@ "Enabled" : "מופעל", "Disabled" : "מנוטרל", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "יש צורך להמיר את מפתחות ההצפנה מהצופן הישן (ownCloud <= 8.0) לצופן החדש. יש להריץ 'occ encryption:migrate' או לפנות למנהל שלך" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/encryption/l10n/ka_GE.js b/apps/encryption/l10n/ka_GE.js index 535c4ad1ed6..ec335e8601e 100644 --- a/apps/encryption/l10n/ka_GE.js +++ b/apps/encryption/l10n/ka_GE.js @@ -61,4 +61,4 @@ OC.L10N.register( "Disabled" : "არაა მოქმედი", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "საჭიროა შიფრაციის ძველი გასაღებების მიგრაცია (ownCloud <= 8.0) ახალებზე. გთხოვთ გაუშვათ 'occ encryption:migrate' ან დაუკავშირდეთ ადმინისტრატორს" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/encryption/l10n/ka_GE.json b/apps/encryption/l10n/ka_GE.json index f3a2550f115..8d4e7cc9942 100644 --- a/apps/encryption/l10n/ka_GE.json +++ b/apps/encryption/l10n/ka_GE.json @@ -58,5 +58,5 @@ "Enabled" : "მოქმედია", "Disabled" : "არაა მოქმედი", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "საჭიროა შიფრაციის ძველი გასაღებების მიგრაცია (ownCloud <= 8.0) ახალებზე. გთხოვთ გაუშვათ 'occ encryption:migrate' ან დაუკავშირდეთ ადმინისტრატორს" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js index 7ac21150f47..8f66189e06b 100644 --- a/apps/encryption/l10n/lt_LT.js +++ b/apps/encryption/l10n/lt_LT.js @@ -61,4 +61,4 @@ OC.L10N.register( "Disabled" : "Išjungta", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti savo šifravimo raktų perkėlimą iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json index 3a148b6d8ca..152d8c3f49b 100644 --- a/apps/encryption/l10n/lt_LT.json +++ b/apps/encryption/l10n/lt_LT.json @@ -58,5 +58,5 @@ "Enabled" : "Įjungta", "Disabled" : "Išjungta", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite atlikti savo šifravimo raktų perkėlimą iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome terminale įvykdyti \"occ encryption:migrate\" arba susisiekti su sistemos administratoriumi" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/sk.js b/apps/encryption/l10n/sk.js index dc8840f495d..0bbfc46300f 100644 --- a/apps/encryption/l10n/sk.js +++ b/apps/encryption/l10n/sk.js @@ -61,4 +61,4 @@ OC.L10N.register( "Disabled" : "Zakázané", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Spustite „occ encryption:migrate“ alebo sa obráťte na správcu" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/encryption/l10n/sk.json b/apps/encryption/l10n/sk.json index 6bd2cab2cc2..070e9f57121 100644 --- a/apps/encryption/l10n/sk.json +++ b/apps/encryption/l10n/sk.json @@ -58,5 +58,5 @@ "Enabled" : "Povolené", "Disabled" : "Zakázané", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Musíte migrovať vaše šifrovacie kľúče zo starého šifrovania (ownCloud <= 8,0) na nové. Spustite „occ encryption:migrate“ alebo sa obráťte na správcu" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/uk.js b/apps/encryption/l10n/uk.js index 3c256d336dc..3ec3af0f913 100644 --- a/apps/encryption/l10n/uk.js +++ b/apps/encryption/l10n/uk.js @@ -45,4 +45,4 @@ OC.L10N.register( "Enabled" : "Увімкнено", "Disabled" : "Вимкнено" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/encryption/l10n/uk.json b/apps/encryption/l10n/uk.json index 05b5108588e..547a4240580 100644 --- a/apps/encryption/l10n/uk.json +++ b/apps/encryption/l10n/uk.json @@ -42,5 +42,5 @@ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включення цієї опції дозволить вам отримати доступ до своїх зашифрованих файлів у випадку втрати паролю", "Enabled" : "Увімкнено", "Disabled" : "Вимкнено" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/cs.js b/apps/federatedfilesharing/l10n/cs.js index 51e53113f0c..10446f87185 100644 --- a/apps/federatedfilesharing/l10n/cs.js +++ b/apps/federatedfilesharing/l10n/cs.js @@ -55,4 +55,4 @@ OC.L10N.register( "Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení", "Search global and public address book for users and let local users publish their data" : "Hledat uživatele v globálním a veřejném adresáři a dovolit místním uživatelům publikovat jejich údaje" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/federatedfilesharing/l10n/cs.json b/apps/federatedfilesharing/l10n/cs.json index f17d7bb2371..3594919cf5f 100644 --- a/apps/federatedfilesharing/l10n/cs.json +++ b/apps/federatedfilesharing/l10n/cs.json @@ -52,5 +52,5 @@ "Federated share added" : "Propojené sdílení bylo přidáno", "Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení", "Search global and public address book for users and let local users publish their data" : "Hledat uživatele v globálním a veřejném adresáři a dovolit místním uživatelům publikovat jejich údaje" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/ka_GE.js b/apps/federatedfilesharing/l10n/ka_GE.js index 383ae2fc3c9..05e0fce2e10 100644 --- a/apps/federatedfilesharing/l10n/ka_GE.js +++ b/apps/federatedfilesharing/l10n/ka_GE.js @@ -55,4 +55,4 @@ OC.L10N.register( "Couldn't add remote share" : "ფედერალური გაზიარება ვერ დაემატა", "Search global and public address book for users and let local users publish their data" : "მოიძიეთ გლობალური და ღია მისამართების წიგნები მომხმარებლებისთვის და მიეცით უფლება ლოკალურ მომხმარებლებს გააზიარონ საკუთარი მონაცემები" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/federatedfilesharing/l10n/ka_GE.json b/apps/federatedfilesharing/l10n/ka_GE.json index 19165fd3155..edfa1cabef2 100644 --- a/apps/federatedfilesharing/l10n/ka_GE.json +++ b/apps/federatedfilesharing/l10n/ka_GE.json @@ -52,5 +52,5 @@ "Federated share added" : "ფედერალური გაზიარება დაემატა", "Couldn't add remote share" : "ფედერალური გაზიარება ვერ დაემატა", "Search global and public address book for users and let local users publish their data" : "მოიძიეთ გლობალური და ღია მისამართების წიგნები მომხმარებლებისთვის და მიეცით უფლება ლოკალურ მომხმარებლებს გააზიარონ საკუთარი მონაცემები" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/lt_LT.js b/apps/federatedfilesharing/l10n/lt_LT.js index 47479c9e791..d9e7f1e8ecf 100644 --- a/apps/federatedfilesharing/l10n/lt_LT.js +++ b/apps/federatedfilesharing/l10n/lt_LT.js @@ -53,4 +53,4 @@ OC.L10N.register( "Couldn't add remote share" : "Nepavyko peržiūrėti kitame serveryje pasidalintų duomenų", "Search global and public address book for users and let local users publish their data" : "Rasti globalias ar viešas adresų knygas ir leisti naudotojams viešinti savo duomenis" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/federatedfilesharing/l10n/lt_LT.json b/apps/federatedfilesharing/l10n/lt_LT.json index 278d4381ae0..846b8dc3a40 100644 --- a/apps/federatedfilesharing/l10n/lt_LT.json +++ b/apps/federatedfilesharing/l10n/lt_LT.json @@ -50,5 +50,5 @@ "Federated share added" : "Pasidalinta per kitą serverį", "Couldn't add remote share" : "Nepavyko peržiūrėti kitame serveryje pasidalintų duomenų", "Search global and public address book for users and let local users publish their data" : "Rasti globalias ar viešas adresų knygas ir leisti naudotojams viešinti savo duomenis" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/sk.js b/apps/federatedfilesharing/l10n/sk.js index b1a1f748ac1..e0dbb98635b 100644 --- a/apps/federatedfilesharing/l10n/sk.js +++ b/apps/federatedfilesharing/l10n/sk.js @@ -55,4 +55,4 @@ OC.L10N.register( "Couldn't add remote share" : "Nedá sa pridať vzdialené sprístupnenie", "Search global and public address book for users and let local users publish their data" : "Vyhľadávať používateľog v globálnom a verejnom adresári a umožniť miestnym používateľom publikovať ich dáta" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/federatedfilesharing/l10n/sk.json b/apps/federatedfilesharing/l10n/sk.json index c1ddd980e6a..ae73f333623 100644 --- a/apps/federatedfilesharing/l10n/sk.json +++ b/apps/federatedfilesharing/l10n/sk.json @@ -52,5 +52,5 @@ "Federated share added" : "Združené sprístupnenie pridané", "Couldn't add remote share" : "Nedá sa pridať vzdialené sprístupnenie", "Search global and public address book for users and let local users publish their data" : "Vyhľadávať používateľog v globálnom a verejnom adresári a umožniť miestnym používateľom publikovať ich dáta" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/federation/l10n/cs.js b/apps/federation/l10n/cs.js index ab76961f5b8..95a00cd053a 100644 --- a/apps/federation/l10n/cs.js +++ b/apps/federation/l10n/cs.js @@ -12,4 +12,4 @@ OC.L10N.register( "Trusted server" : "Důvěryhodný server", "Add" : "Přidat" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/federation/l10n/cs.json b/apps/federation/l10n/cs.json index 8c7e4f40b61..0900e90d614 100644 --- a/apps/federation/l10n/cs.json +++ b/apps/federation/l10n/cs.json @@ -9,5 +9,5 @@ "+ Add trusted server" : "+ Přidat důvěryhodný server", "Trusted server" : "Důvěryhodný server", "Add" : "Přidat" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/federation/l10n/fa.js b/apps/federation/l10n/fa.js index 62279af2361..fdccfdbfb04 100644 --- a/apps/federation/l10n/fa.js +++ b/apps/federation/l10n/fa.js @@ -8,4 +8,4 @@ OC.L10N.register( "Trusted server" : "سرور قابل اعتماد", "Add" : "افزودن" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/apps/federation/l10n/fa.json b/apps/federation/l10n/fa.json index 0d79140137e..ce9363d6a18 100644 --- a/apps/federation/l10n/fa.json +++ b/apps/federation/l10n/fa.json @@ -5,5 +5,5 @@ "Trusted servers" : "سرورهای قابل اعتماد", "Trusted server" : "سرور قابل اعتماد", "Add" : "افزودن" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/ka_GE.js b/apps/federation/l10n/ka_GE.js index 5d8c926e293..551a65b0ff0 100644 --- a/apps/federation/l10n/ka_GE.js +++ b/apps/federation/l10n/ka_GE.js @@ -13,4 +13,4 @@ OC.L10N.register( "Trusted server" : "სანდო სერვერი", "Add" : "დამატება" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/federation/l10n/ka_GE.json b/apps/federation/l10n/ka_GE.json index edf97f30f62..85b29fba6ce 100644 --- a/apps/federation/l10n/ka_GE.json +++ b/apps/federation/l10n/ka_GE.json @@ -10,5 +10,5 @@ "+ Add trusted server" : "+ სანდო სერვერის დამატება", "Trusted server" : "სანდო სერვერი", "Add" : "დამატება" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/lt_LT.js b/apps/federation/l10n/lt_LT.js index 24087403daf..6c712aad0f4 100644 --- a/apps/federation/l10n/lt_LT.js +++ b/apps/federation/l10n/lt_LT.js @@ -12,4 +12,4 @@ OC.L10N.register( "Trusted server" : "Patikimas serveris", "Add" : "Pridėti" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/federation/l10n/lt_LT.json b/apps/federation/l10n/lt_LT.json index d83d14060a6..4af1e9c6154 100644 --- a/apps/federation/l10n/lt_LT.json +++ b/apps/federation/l10n/lt_LT.json @@ -9,5 +9,5 @@ "+ Add trusted server" : "+ Pridėti patikimą serverį", "Trusted server" : "Patikimas serveris", "Add" : "Pridėti" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/federation/l10n/sk.js b/apps/federation/l10n/sk.js index 7a842a3961a..02091eabae0 100644 --- a/apps/federation/l10n/sk.js +++ b/apps/federation/l10n/sk.js @@ -13,4 +13,4 @@ OC.L10N.register( "Trusted server" : "Dôveryhodný server", "Add" : "Pridať" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/federation/l10n/sk.json b/apps/federation/l10n/sk.json index 16da9ab4022..48e2686bb8f 100644 --- a/apps/federation/l10n/sk.json +++ b/apps/federation/l10n/sk.json @@ -10,5 +10,5 @@ "+ Add trusted server" : "Pridať dôveryhodný server", "Trusted server" : "Dôveryhodný server", "Add" : "Pridať" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index ef9b5799a2e..1af09e6e0a1 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -56,12 +56,12 @@ OC.L10N.register( "Name" : "Název", "Size" : "Velikost", "Modified" : "Upraveno", - "_%n folder_::_%n folders_" : ["%n adresář","%n adresáře","%n adresářů"], - "_%n file_::_%n files_" : ["%n soubor","%n soubory","%n souborů"], + "_%n folder_::_%n folders_" : ["%n adresář","%n adresáře","%n adresářů","%n adresářů"], + "_%n file_::_%n files_" : ["%n soubor","%n soubory","%n souborů","%n souborů"], "{dirs} and {files}" : "{dirs} a {files}", - "_including %n hidden_::_including %n hidden_" : ["přidán %n skrytý","přidány %n skryté","přidáno %n skrytých"], + "_including %n hidden_::_including %n hidden_" : ["přidán %n skrytý","přidány %n skryté","přidáno %n skrytých","přidáno %n skrytých"], "You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo vytvářet soubory", - "_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů"], + "_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů","Nahrávám %n souborů"], "New" : "Nový", "{used} of {quota} used" : "Využito {used} z {quota} ", "{used} used" : "{used} Využito", @@ -73,12 +73,12 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Vaše úložiště je plné, nelze aktualizovat ani synchronizovat soubory.", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úložiště uživatele {owner} je téměř plné ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložiště je téměř plné ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'"], "View in folder" : "Zobrazit v adresáři", "Copied!" : "Zkopírováno!", "Copy direct link (only works for users who have access to this file/folder)" : "Zkopírovat přímý odkaz (funguje pouze pro uživatele, kteří mají přistup k tomuto souboru/adresáři)", "Path" : "Cesta", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajtů"], "Favorited" : "Přidáno k oblíbeným", "Favorite" : "Oblíbené", "New folder" : "Nový adresář", @@ -159,4 +159,4 @@ OC.L10N.register( "A new file or folder has been <strong>restored</strong>" : "Nový soubor nebo adresář byl <strong>obnoven</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použít tuto adresu <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> pro přístup k souborům přes WebDAV</a>" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index 5e5719bc6f7..60b4a4eaf3e 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -54,12 +54,12 @@ "Name" : "Název", "Size" : "Velikost", "Modified" : "Upraveno", - "_%n folder_::_%n folders_" : ["%n adresář","%n adresáře","%n adresářů"], - "_%n file_::_%n files_" : ["%n soubor","%n soubory","%n souborů"], + "_%n folder_::_%n folders_" : ["%n adresář","%n adresáře","%n adresářů","%n adresářů"], + "_%n file_::_%n files_" : ["%n soubor","%n soubory","%n souborů","%n souborů"], "{dirs} and {files}" : "{dirs} a {files}", - "_including %n hidden_::_including %n hidden_" : ["přidán %n skrytý","přidány %n skryté","přidáno %n skrytých"], + "_including %n hidden_::_including %n hidden_" : ["přidán %n skrytý","přidány %n skryté","přidáno %n skrytých","přidáno %n skrytých"], "You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo vytvářet soubory", - "_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů"], + "_Uploading %n file_::_Uploading %n files_" : ["Nahrávám %n soubor","Nahrávám %n soubory","Nahrávám %n souborů","Nahrávám %n souborů"], "New" : "Nový", "{used} of {quota} used" : "Využito {used} z {quota} ", "{used} used" : "{used} Využito", @@ -71,12 +71,12 @@ "Your storage is full, files can not be updated or synced anymore!" : "Vaše úložiště je plné, nelze aktualizovat ani synchronizovat soubory.", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úložiště uživatele {owner} je téměř plné ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložiště je téměř plné ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'","odpovídá '{filter}'"], "View in folder" : "Zobrazit v adresáři", "Copied!" : "Zkopírováno!", "Copy direct link (only works for users who have access to this file/folder)" : "Zkopírovat přímý odkaz (funguje pouze pro uživatele, kteří mají přistup k tomuto souboru/adresáři)", "Path" : "Cesta", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajtů"], "Favorited" : "Přidáno k oblíbeným", "Favorite" : "Oblíbené", "New folder" : "Nový adresář", @@ -156,5 +156,5 @@ "A new file or folder has been <strong>deleted</strong>" : "Nový soubor nebo adresář byl <strong>smazán</strong>", "A new file or folder has been <strong>restored</strong>" : "Nový soubor nebo adresář byl <strong>obnoven</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použít tuto adresu <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\"> pro přístup k souborům přes WebDAV</a>" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js index 8c7f34c1c08..5c4a5083be7 100644 --- a/apps/files/l10n/he.js +++ b/apps/files/l10n/he.js @@ -56,12 +56,12 @@ OC.L10N.register( "Name" : "שם", "Size" : "גודל", "Modified" : "זמן שינוי", - "_%n folder_::_%n folders_" : ["%n תיקייה","%n תיקיות"], - "_%n file_::_%n files_" : ["%n קובץ","%n קבצים"], + "_%n folder_::_%n folders_" : ["%n תיקייה","%n תיקיות","%n תיקיות","%n תיקיות"], + "_%n file_::_%n files_" : ["%n קובץ","%n קבצים","%n קבצים","%n קבצים"], "{dirs} and {files}" : "{dirs} וכן {files}", - "_including %n hidden_::_including %n hidden_" : ["לרבות %n מוסתר","לרבות %n מוסתרים"], + "_including %n hidden_::_including %n hidden_" : ["לרבות %n מוסתר","לרבות %n מוסתרים","לרבות %n מוסתרים","לרבות %n מוסתרים"], "You don’t have permission to upload or create files here" : "אין לך הרשאות להעלות או ליצור קבצים כאן", - "_Uploading %n file_::_Uploading %n files_" : ["מעלה %n קובץ","מעלה %n קבצים"], + "_Uploading %n file_::_Uploading %n files_" : ["מעלה %n קובץ","מעלה %n קבצים","מעלה %n קבצים","מעלה %n קבצים"], "New" : "חדש", "{used} of {quota} used" : "{used} מתוך {quota} בשימוש", "{used} used" : "{used} בשימוש", @@ -73,12 +73,12 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "האחסון שלך מלא, כבר לא ניתן לעדכן ולסנכרן קבצים!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "האחסון של {owner} כמעט מלא ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["מתאים ל- '{filter}'","מתאים ל- '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["מתאים ל- '{filter}'","מתאים ל- '{filter}'","מתאים ל- '{filter}'","מתאים ל- '{filter}'"], "View in folder" : "הצג בתיקייה", "Copied!" : "ההעתקה הושלמה!", "Copy direct link (only works for users who have access to this file/folder)" : "העתקת קישור ישיר (עובד רק עבור משתמשים שיש להם גישה לקובץ/תיקייה זו)", "Path" : "נתיב", - "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים"], + "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"], "Favorited" : "מועדף", "Favorite" : "מועדף", "New folder" : "תיקייה חדשה", @@ -159,4 +159,4 @@ OC.L10N.register( "A new file or folder has been <strong>restored</strong>" : "קובץ או תיקייה חדשים <strong>שוחזרו</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "יש להשתמש בכתובת זו כדי <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">לגשת לקבצים שלך דרך WebDAV</a>" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json index 4f15c4c7818..2c1bde72930 100644 --- a/apps/files/l10n/he.json +++ b/apps/files/l10n/he.json @@ -54,12 +54,12 @@ "Name" : "שם", "Size" : "גודל", "Modified" : "זמן שינוי", - "_%n folder_::_%n folders_" : ["%n תיקייה","%n תיקיות"], - "_%n file_::_%n files_" : ["%n קובץ","%n קבצים"], + "_%n folder_::_%n folders_" : ["%n תיקייה","%n תיקיות","%n תיקיות","%n תיקיות"], + "_%n file_::_%n files_" : ["%n קובץ","%n קבצים","%n קבצים","%n קבצים"], "{dirs} and {files}" : "{dirs} וכן {files}", - "_including %n hidden_::_including %n hidden_" : ["לרבות %n מוסתר","לרבות %n מוסתרים"], + "_including %n hidden_::_including %n hidden_" : ["לרבות %n מוסתר","לרבות %n מוסתרים","לרבות %n מוסתרים","לרבות %n מוסתרים"], "You don’t have permission to upload or create files here" : "אין לך הרשאות להעלות או ליצור קבצים כאן", - "_Uploading %n file_::_Uploading %n files_" : ["מעלה %n קובץ","מעלה %n קבצים"], + "_Uploading %n file_::_Uploading %n files_" : ["מעלה %n קובץ","מעלה %n קבצים","מעלה %n קבצים","מעלה %n קבצים"], "New" : "חדש", "{used} of {quota} used" : "{used} מתוך {quota} בשימוש", "{used} used" : "{used} בשימוש", @@ -71,12 +71,12 @@ "Your storage is full, files can not be updated or synced anymore!" : "האחסון שלך מלא, כבר לא ניתן לעדכן ולסנכרן קבצים!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "האחסון של {owner} כמעט מלא ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["מתאים ל- '{filter}'","מתאים ל- '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["מתאים ל- '{filter}'","מתאים ל- '{filter}'","מתאים ל- '{filter}'","מתאים ל- '{filter}'"], "View in folder" : "הצג בתיקייה", "Copied!" : "ההעתקה הושלמה!", "Copy direct link (only works for users who have access to this file/folder)" : "העתקת קישור ישיר (עובד רק עבור משתמשים שיש להם גישה לקובץ/תיקייה זו)", "Path" : "נתיב", - "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים"], + "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"], "Favorited" : "מועדף", "Favorite" : "מועדף", "New folder" : "תיקייה חדשה", @@ -156,5 +156,5 @@ "A new file or folder has been <strong>deleted</strong>" : "קובץ או תיקייה חדשים <strong>נמחקו</strong>", "A new file or folder has been <strong>restored</strong>" : "קובץ או תיקייה חדשים <strong>שוחזרו</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "יש להשתמש בכתובת זו כדי <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">לגשת לקבצים שלך דרך WebDAV</a>" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files/l10n/ka_GE.js b/apps/files/l10n/ka_GE.js index 428f2a6eedc..62e873caecf 100644 --- a/apps/files/l10n/ka_GE.js +++ b/apps/files/l10n/ka_GE.js @@ -56,12 +56,12 @@ OC.L10N.register( "Name" : "სახელი", "Size" : "ზომა", "Modified" : "შეცვლილია", - "_%n folder_::_%n folders_" : ["%n დირექტორია"], - "_%n file_::_%n files_" : ["%n ფაილი"], + "_%n folder_::_%n folders_" : ["%n დირექტორია","%n დირექტორია"], + "_%n file_::_%n files_" : ["%n ფაილი","%n ფაილი"], "{dirs} and {files}" : "{dirs} და {files}", - "_including %n hidden_::_including %n hidden_" : ["%n დამალულის ჩათვლით"], + "_including %n hidden_::_including %n hidden_" : ["%n დამალულის ჩათვლით","%n დამალულის ჩათვლით"], "You don’t have permission to upload or create files here" : "აქ ფაილების შექმნის ან ატვირთვის უფლება არ გაქვთ", - "_Uploading %n file_::_Uploading %n files_" : ["ვტვირთავთ %n ფაილს"], + "_Uploading %n file_::_Uploading %n files_" : ["ვტვირთავთ %n ფაილს","ვტვირთავთ %n ფაილს"], "New" : "ახალი", "{used} of {quota} used" : "გამოყენებულია {used} სულ {quota}-დან", "{used} used" : "გამოყენებულია {used}", @@ -73,12 +73,12 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "თქვენი საცავი გადაივსო. ფაილების განახლება და სინქრონიზირება ვერ მოხერხდება!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner}-ის საცავი თითქმის სავსეა ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "თქვენი საცავი თითქმის გადაივსო ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["ემთხვევა '{filter}'-ს"], + "_matches '{filter}'_::_match '{filter}'_" : ["ემთხვევა '{filter}'-ს","ემთხვევა '{filter}'-ს"], "View in folder" : "ჩვენება დირექტორიაში", "Copied!" : "დაკოპირდა!", "Copy direct link (only works for users who have access to this file/folder)" : "დააკოპირეთ პირდაპირი ბმული (მუშაობს მომხმარებლებისთვის, რომელთაც გააჩნიათ წვდომა ამ ფაილის/დირექტორიის მიმართ)", "Path" : "მისამართი", - "_%n byte_::_%n bytes_" : ["%n ბაიტი"], + "_%n byte_::_%n bytes_" : ["%n ბაიტი","%n ბაიტი"], "Favorited" : "დამატებულია რჩეულებში", "Favorite" : "რჩეული", "New folder" : "ახალი დირექტორია", @@ -159,4 +159,4 @@ OC.L10N.register( "A new file or folder has been <strong>restored</strong>" : "ახალი ფაილი ან დირექტორია <strong>აღდგენილ იქნა</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "გამოიყენეთ ეს მისამართი რომ <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">წვდომა იქოინოთ თქვენს ფაილებთან WebDAV-ით</a>" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/files/l10n/ka_GE.json b/apps/files/l10n/ka_GE.json index 57e4d987f8f..687d0df6ff0 100644 --- a/apps/files/l10n/ka_GE.json +++ b/apps/files/l10n/ka_GE.json @@ -54,12 +54,12 @@ "Name" : "სახელი", "Size" : "ზომა", "Modified" : "შეცვლილია", - "_%n folder_::_%n folders_" : ["%n დირექტორია"], - "_%n file_::_%n files_" : ["%n ფაილი"], + "_%n folder_::_%n folders_" : ["%n დირექტორია","%n დირექტორია"], + "_%n file_::_%n files_" : ["%n ფაილი","%n ფაილი"], "{dirs} and {files}" : "{dirs} და {files}", - "_including %n hidden_::_including %n hidden_" : ["%n დამალულის ჩათვლით"], + "_including %n hidden_::_including %n hidden_" : ["%n დამალულის ჩათვლით","%n დამალულის ჩათვლით"], "You don’t have permission to upload or create files here" : "აქ ფაილების შექმნის ან ატვირთვის უფლება არ გაქვთ", - "_Uploading %n file_::_Uploading %n files_" : ["ვტვირთავთ %n ფაილს"], + "_Uploading %n file_::_Uploading %n files_" : ["ვტვირთავთ %n ფაილს","ვტვირთავთ %n ფაილს"], "New" : "ახალი", "{used} of {quota} used" : "გამოყენებულია {used} სულ {quota}-დან", "{used} used" : "გამოყენებულია {used}", @@ -71,12 +71,12 @@ "Your storage is full, files can not be updated or synced anymore!" : "თქვენი საცავი გადაივსო. ფაილების განახლება და სინქრონიზირება ვერ მოხერხდება!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner}-ის საცავი თითქმის სავსეა ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "თქვენი საცავი თითქმის გადაივსო ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["ემთხვევა '{filter}'-ს"], + "_matches '{filter}'_::_match '{filter}'_" : ["ემთხვევა '{filter}'-ს","ემთხვევა '{filter}'-ს"], "View in folder" : "ჩვენება დირექტორიაში", "Copied!" : "დაკოპირდა!", "Copy direct link (only works for users who have access to this file/folder)" : "დააკოპირეთ პირდაპირი ბმული (მუშაობს მომხმარებლებისთვის, რომელთაც გააჩნიათ წვდომა ამ ფაილის/დირექტორიის მიმართ)", "Path" : "მისამართი", - "_%n byte_::_%n bytes_" : ["%n ბაიტი"], + "_%n byte_::_%n bytes_" : ["%n ბაიტი","%n ბაიტი"], "Favorited" : "დამატებულია რჩეულებში", "Favorite" : "რჩეული", "New folder" : "ახალი დირექტორია", @@ -156,5 +156,5 @@ "A new file or folder has been <strong>deleted</strong>" : "ახალი ფაილი ან დირექტორია <strong>გაუქმდა</strong>", "A new file or folder has been <strong>restored</strong>" : "ახალი ფაილი ან დირექტორია <strong>აღდგენილ იქნა</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "გამოიყენეთ ეს მისამართი რომ <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">წვდომა იქოინოთ თქვენს ფაილებთან WebDAV-ით</a>" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index a30e7272c5d..eb3fb593334 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -18,6 +18,7 @@ OC.L10N.register( "Not enough free space" : "Trūksta laisvos vietos", "…" : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} iš {totalSize} ({bitrate})", + "Target folder does not exist any more" : "Paskirties aplanko daugiau nebėra", "Actions" : "Veiksmai", "Download" : "Atsisiųsti", "Rename" : "Pervadinti", @@ -35,6 +36,7 @@ OC.L10N.register( "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas neprieinamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", "Could not move \"{file}\", target exists" : "Nepavyko perkelti \"{file}\", toks jau egzistuoja", "Could not move \"{file}\"" : "Nepavyko perkelti \"{file}\"", + "Could not copy \"{file}\"" : "Nepavyko nukopijuoti \"{file}\"", "{newName} already exists" : "{newName} jau yra", "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti bylos \"{fileName}\", nes tokia byla neegzistuoja", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas \"{targetName}\" jau naudojamas aplanke \"{dir}\". Prašome pasirinkti kitokį pavadinimą.", @@ -47,12 +49,12 @@ OC.L10N.register( "Name" : "Pavadinimas", "Size" : "Dydis", "Modified" : "Pakeista", - "_%n folder_::_%n folders_" : ["%n aplankas","%n aplankai","%n aplankų"], - "_%n file_::_%n files_" : ["%n failas","%n failai","%n failų"], + "_%n folder_::_%n folders_" : ["%n aplankas","%n aplankai","%n aplankų","%n aplankų"], + "_%n file_::_%n files_" : ["%n failas","%n failai","%n failų","%n failų"], "{dirs} and {files}" : "{dirs} ir {files}", - "_including %n hidden_::_including %n hidden_" : ["įskaitant %n paslėptą","įskaitant %n paslėptus","įskaitant %n paslėptų"], + "_including %n hidden_::_including %n hidden_" : ["įskaitant %n paslėptą","įskaitant %n paslėptus","įskaitant %n paslėptų","įskaitant %n paslėptų"], "You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus", - "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"], + "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų","Įkeliama %n failų"], "New" : "Naujas", "{used} of {quota} used" : "panaudota {used} iš {quota}", "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.", @@ -62,12 +64,12 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Jūsų saugykla yra beveik pilna ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], "View in folder" : "Peržiūrėti aplanką", "Copied!" : "Nukopijuota!", "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą (veikia tik tiems naudotojams, kurie turi prieigą prie šios rinkmenos)", "Path" : "Kelias", - "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], + "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"], "Favorited" : "Pažymėta mėgstamu", "Favorite" : "Mėgiamas", "New folder" : "Naujas aplankas", @@ -133,4 +135,4 @@ OC.L10N.register( "Text file" : "Tekstinis failas", "New text file.txt" : "Naujas tekstinis failas.txt" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json index 78aec5fd463..6da3263eb73 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -16,6 +16,7 @@ "Not enough free space" : "Trūksta laisvos vietos", "…" : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} iš {totalSize} ({bitrate})", + "Target folder does not exist any more" : "Paskirties aplanko daugiau nebėra", "Actions" : "Veiksmai", "Download" : "Atsisiųsti", "Rename" : "Pervadinti", @@ -33,6 +34,7 @@ "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas neprieinamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", "Could not move \"{file}\", target exists" : "Nepavyko perkelti \"{file}\", toks jau egzistuoja", "Could not move \"{file}\"" : "Nepavyko perkelti \"{file}\"", + "Could not copy \"{file}\"" : "Nepavyko nukopijuoti \"{file}\"", "{newName} already exists" : "{newName} jau yra", "Could not rename \"{fileName}\", it does not exist any more" : "Nepavyko pervadinti bylos \"{fileName}\", nes tokia byla neegzistuoja", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Pavadinimas \"{targetName}\" jau naudojamas aplanke \"{dir}\". Prašome pasirinkti kitokį pavadinimą.", @@ -45,12 +47,12 @@ "Name" : "Pavadinimas", "Size" : "Dydis", "Modified" : "Pakeista", - "_%n folder_::_%n folders_" : ["%n aplankas","%n aplankai","%n aplankų"], - "_%n file_::_%n files_" : ["%n failas","%n failai","%n failų"], + "_%n folder_::_%n folders_" : ["%n aplankas","%n aplankai","%n aplankų","%n aplankų"], + "_%n file_::_%n files_" : ["%n failas","%n failai","%n failų","%n failų"], "{dirs} and {files}" : "{dirs} ir {files}", - "_including %n hidden_::_including %n hidden_" : ["įskaitant %n paslėptą","įskaitant %n paslėptus","įskaitant %n paslėptų"], + "_including %n hidden_::_including %n hidden_" : ["įskaitant %n paslėptą","įskaitant %n paslėptus","įskaitant %n paslėptų","įskaitant %n paslėptų"], "You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus", - "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"], + "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų","Įkeliama %n failų"], "New" : "Naujas", "{used} of {quota} used" : "panaudota {used} iš {quota}", "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.", @@ -60,12 +62,12 @@ "Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Jūsų saugykla yra beveik pilna ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], "View in folder" : "Peržiūrėti aplanką", "Copied!" : "Nukopijuota!", "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą (veikia tik tiems naudotojams, kurie turi prieigą prie šios rinkmenos)", "Path" : "Kelias", - "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], + "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"], "Favorited" : "Pažymėta mėgstamu", "Favorite" : "Mėgiamas", "New folder" : "Naujas aplankas", @@ -130,5 +132,5 @@ "Deleted files" : "Ištrinti failai", "Text file" : "Tekstinis failas", "New text file.txt" : "Naujas tekstinis failas.txt" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js index 4d74625a007..a13c6583deb 100644 --- a/apps/files/l10n/sk.js +++ b/apps/files/l10n/sk.js @@ -56,12 +56,12 @@ OC.L10N.register( "Name" : "Názov", "Size" : "Veľkosť", "Modified" : "Upravené", - "_%n folder_::_%n folders_" : ["%n priečinok","%n priečinky","%n priečinkov"], - "_%n file_::_%n files_" : ["%n súbor","%n súbory","%n súborov"], + "_%n folder_::_%n folders_" : ["%n priečinok","%n priečinky","%n priečinkov","%n priečinkov"], + "_%n file_::_%n files_" : ["%n súbor","%n súbory","%n súborov","%n súborov"], "{dirs} and {files}" : "{dirs} a {files}", - "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých"], + "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých","vrátane %n skrytých"], "You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory", - "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov"], + "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov","Nahrávam %n súborov"], "New" : "Nový", "{used} of {quota} used" : "použitých {used} z {quota}", "{used} used" : "{used} použitých", @@ -73,12 +73,12 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Vaše úložisko je plné. Súbory nemožno aktualizovať ani synchronizovať!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úloisko používateľa {owner} je takmer plné ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložisko je takmer plné ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"], "View in folder" : "Zobraziť v priečinku", "Copied!" : "Skopírované!", "Copy direct link (only works for users who have access to this file/folder)" : "Kopírovať priamy odkaz (funguje iba pre používateľov, ktorí majú prístup k tomuto súboru/priečinku)", "Path" : "Cesta", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov","%n bajtov"], "Favorited" : "Pridané k obľúbeným", "Favorite" : "Obľúbené", "New folder" : "Nový priečinok", @@ -153,4 +153,4 @@ OC.L10N.register( "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použi túto adresu pre <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">prístup ku svojím súborom cez WebDAV</a>" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json index 304a9e8dd79..5ad8f62d6a5 100644 --- a/apps/files/l10n/sk.json +++ b/apps/files/l10n/sk.json @@ -54,12 +54,12 @@ "Name" : "Názov", "Size" : "Veľkosť", "Modified" : "Upravené", - "_%n folder_::_%n folders_" : ["%n priečinok","%n priečinky","%n priečinkov"], - "_%n file_::_%n files_" : ["%n súbor","%n súbory","%n súborov"], + "_%n folder_::_%n folders_" : ["%n priečinok","%n priečinky","%n priečinkov","%n priečinkov"], + "_%n file_::_%n files_" : ["%n súbor","%n súbory","%n súborov","%n súborov"], "{dirs} and {files}" : "{dirs} a {files}", - "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých"], + "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých","vrátane %n skrytých"], "You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory", - "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov"], + "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov","Nahrávam %n súborov"], "New" : "Nový", "{used} of {quota} used" : "použitých {used} z {quota}", "{used} used" : "{used} použitých", @@ -71,12 +71,12 @@ "Your storage is full, files can not be updated or synced anymore!" : "Vaše úložisko je plné. Súbory nemožno aktualizovať ani synchronizovať!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Úloisko používateľa {owner} je takmer plné ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Vaše úložisko je takmer plné ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'","zodpovedá '{filter}'"], "View in folder" : "Zobraziť v priečinku", "Copied!" : "Skopírované!", "Copy direct link (only works for users who have access to this file/folder)" : "Kopírovať priamy odkaz (funguje iba pre používateľov, ktorí majú prístup k tomuto súboru/priečinku)", "Path" : "Cesta", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtov","%n bajtov"], "Favorited" : "Pridané k obľúbeným", "Favorite" : "Obľúbené", "New folder" : "Nový priečinok", @@ -150,5 +150,5 @@ "A new file or folder has been <strong>deleted</strong>" : "Nový súbor alebo priečinok bol <strong>zmazaný</strong>", "A new file or folder has been <strong>restored</strong>" : "Nový súbor alebo priečinok bol<strong>obnovený</strong>", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Použi túto adresu pre <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">prístup ku svojím súborom cez WebDAV</a>" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index c5b9b7938c3..78fdac2551e 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -50,11 +50,11 @@ OC.L10N.register( "Name" : "Ім'я", "Size" : "Розмір", "Modified" : "Змінено", - "_%n folder_::_%n folders_" : ["%n тека ","теки : %n ","теки : %n "], - "_%n file_::_%n files_" : ["%n файл ","файли : %n ","файли : %n "], + "_%n folder_::_%n folders_" : ["%n тека ","теки : %n ","теки : %n ","теки : %n "], + "_%n file_::_%n files_" : ["%n файл ","файли : %n ","файли : %n ","файли : %n "], "{dirs} and {files}" : "{dirs} і {files}", "You don’t have permission to upload or create files here" : "У вас недостатньо прав для вивантаження або створення тут файлів", - "_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів"], + "_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів","Вивантаження %n файлів"], "New" : "Створити", "\"{name}\" is an invalid file name." : "\"{name}\" - некоректне ім'я файлу.", "File name cannot be empty." : " Ім'я файлу не може бути порожнім.", @@ -63,7 +63,7 @@ OC.L10N.register( "Your storage is full, files can not be updated or synced anymore!" : "Ваше сховище переповнене, файли більше не можуть бути оновлені або синхронізовані !", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Сховище користувача {owner} майже заповнене ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Ваше сховище майже повне ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"], "View in folder" : "Переглянути в каталозі", "Copied!" : "Скопійовано!", "Copy direct link (only works for users who have access to this file/folder)" : "Скопіювати пряме посилання (працює лише для користувачів, що мають доступ до файлу/теки)", @@ -135,4 +135,4 @@ OC.L10N.register( "Text file" : "Текстовий файл", "New text file.txt" : "Новий текстовий файл file.txt" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index 01f37c48ffa..5dd3fcf16cb 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -48,11 +48,11 @@ "Name" : "Ім'я", "Size" : "Розмір", "Modified" : "Змінено", - "_%n folder_::_%n folders_" : ["%n тека ","теки : %n ","теки : %n "], - "_%n file_::_%n files_" : ["%n файл ","файли : %n ","файли : %n "], + "_%n folder_::_%n folders_" : ["%n тека ","теки : %n ","теки : %n ","теки : %n "], + "_%n file_::_%n files_" : ["%n файл ","файли : %n ","файли : %n ","файли : %n "], "{dirs} and {files}" : "{dirs} і {files}", "You don’t have permission to upload or create files here" : "У вас недостатньо прав для вивантаження або створення тут файлів", - "_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів"], + "_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів","Вивантаження %n файлів"], "New" : "Створити", "\"{name}\" is an invalid file name." : "\"{name}\" - некоректне ім'я файлу.", "File name cannot be empty." : " Ім'я файлу не може бути порожнім.", @@ -61,7 +61,7 @@ "Your storage is full, files can not be updated or synced anymore!" : "Ваше сховище переповнене, файли більше не можуть бути оновлені або синхронізовані !", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Сховище користувача {owner} майже заповнене ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Ваше сховище майже повне ({usedSpacePercent}%)", - "_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"], + "_matches '{filter}'_::_match '{filter}'_" : ["знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'","знайдено '{filter}'"], "View in folder" : "Переглянути в каталозі", "Copied!" : "Скопійовано!", "Copy direct link (only works for users who have access to this file/folder)" : "Скопіювати пряме посилання (працює лише для користувачів, що мають доступ до файлу/теки)", @@ -132,5 +132,5 @@ "Deleted files" : "Видалені файли", "Text file" : "Текстовий файл", "New text file.txt" : "Новий текстовий файл file.txt" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ca.js b/apps/files_external/l10n/ca.js index 55d787dcf4b..c3ad944ec81 100644 --- a/apps/files_external/l10n/ca.js +++ b/apps/files_external/l10n/ca.js @@ -10,6 +10,7 @@ OC.L10N.register( "All users. Type to select user or group." : "Tots els usuaris. Escriu per seleccionar un usuari o grup.", "(group)" : "(grup)", "Admin defined" : "Administrador definit", + "Delete storage?" : "Esborro l'emmagatzematge?", "Saved" : "Desat", "Saving..." : "Desant...", "Save" : "Desa", diff --git a/apps/files_external/l10n/ca.json b/apps/files_external/l10n/ca.json index 42b028670a3..ab8dbc54133 100644 --- a/apps/files_external/l10n/ca.json +++ b/apps/files_external/l10n/ca.json @@ -8,6 +8,7 @@ "All users. Type to select user or group." : "Tots els usuaris. Escriu per seleccionar un usuari o grup.", "(group)" : "(grup)", "Admin defined" : "Administrador definit", + "Delete storage?" : "Esborro l'emmagatzematge?", "Saved" : "Desat", "Saving..." : "Desant...", "Save" : "Desa", diff --git a/apps/files_external/l10n/cs.js b/apps/files_external/l10n/cs.js index af9a0666f5f..b497ea57f97 100644 --- a/apps/files_external/l10n/cs.js +++ b/apps/files_external/l10n/cs.js @@ -130,4 +130,4 @@ OC.L10N.register( "You can add external storages in the personal settings" : "Externí úložiště můžete přidat v osobních nastaveních", "Are you sure you want to delete this external storage" : "Opravdu chcete odstranit toto externí úložiště" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files_external/l10n/cs.json b/apps/files_external/l10n/cs.json index 57f2782b1d1..84992f7c6b5 100644 --- a/apps/files_external/l10n/cs.json +++ b/apps/files_external/l10n/cs.json @@ -127,5 +127,5 @@ "No external storage configured" : "Není nakonfigurováno žádné externí úložiště", "You can add external storages in the personal settings" : "Externí úložiště můžete přidat v osobních nastaveních", "Are you sure you want to delete this external storage" : "Opravdu chcete odstranit toto externí úložiště" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js index fc4227e8142..ecfd22ab35c 100644 --- a/apps/files_external/l10n/he.js +++ b/apps/files_external/l10n/he.js @@ -105,4 +105,4 @@ OC.L10N.register( "No external storage configured" : "לא מוגדר אחסון חיצוני", "You can add external storages in the personal settings" : "ניתן להוסיף אחסונים חיצוניים בהגדרות האישיות" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json index fd14572f449..edb9758ed3a 100644 --- a/apps/files_external/l10n/he.json +++ b/apps/files_external/l10n/he.json @@ -102,5 +102,5 @@ "OpenStack" : "OpenStack", "No external storage configured" : "לא מוגדר אחסון חיצוני", "You can add external storages in the personal settings" : "ניתן להוסיף אחסונים חיצוניים בהגדרות האישיות" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/ka_GE.js b/apps/files_external/l10n/ka_GE.js index 228e131004a..449f970e0a8 100644 --- a/apps/files_external/l10n/ka_GE.js +++ b/apps/files_external/l10n/ka_GE.js @@ -135,4 +135,4 @@ OC.L10N.register( "You can add external storages in the personal settings" : "გარე საცავები შეგიძლიათ დაამატოთ პირად პარამეტრებში", "Are you sure you want to delete this external storage" : "დარწმუნებული ხართ, რომ გსურთ ამ გარე საცავის გაუქმება?" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/files_external/l10n/ka_GE.json b/apps/files_external/l10n/ka_GE.json index e8a3e4162ec..2743f5bee61 100644 --- a/apps/files_external/l10n/ka_GE.json +++ b/apps/files_external/l10n/ka_GE.json @@ -132,5 +132,5 @@ "No external storage configured" : "გარე საცავი არაა კონფიგურირებული", "You can add external storages in the personal settings" : "გარე საცავები შეგიძლიათ დაამატოთ პირად პარამეტრებში", "Are you sure you want to delete this external storage" : "დარწმუნებული ხართ, რომ გსურთ ამ გარე საცავის გაუქმება?" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js index 4ca8e6cf6d6..f4432d2eeb4 100644 --- a/apps/files_external/l10n/lt_LT.js +++ b/apps/files_external/l10n/lt_LT.js @@ -119,4 +119,4 @@ OC.L10N.register( "No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla", "You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json index ff69617c68b..ec347270871 100644 --- a/apps/files_external/l10n/lt_LT.json +++ b/apps/files_external/l10n/lt_LT.json @@ -116,5 +116,5 @@ "OpenStack" : "OpenStack", "No external storage configured" : "Nėra sukonfigūruota jokia išorinė saugykla", "You can add external storages in the personal settings" : "Galite pridėti papildomą išorinę saugyklą nustatymų skiltyje" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sk.js b/apps/files_external/l10n/sk.js index 83eeded4bde..a298fd8a3f2 100644 --- a/apps/files_external/l10n/sk.js +++ b/apps/files_external/l10n/sk.js @@ -128,4 +128,4 @@ OC.L10N.register( "You can add external storages in the personal settings" : "Externé úložisko je možné pridať v osobných nastaveniach", "Are you sure you want to delete this external storage" : "Naozaj chcete zmazať toto externé úložisko?" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_external/l10n/sk.json b/apps/files_external/l10n/sk.json index 0a84c569dfb..ab6e941ea12 100644 --- a/apps/files_external/l10n/sk.json +++ b/apps/files_external/l10n/sk.json @@ -125,5 +125,5 @@ "No external storage configured" : "Žiadne externé úložisko nie je nakonfigurované", "You can add external storages in the personal settings" : "Externé úložisko je možné pridať v osobných nastaveniach", "Are you sure you want to delete this external storage" : "Naozaj chcete zmazať toto externé úložisko?" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index 33d8da09166..1de7c6b4fcd 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -132,6 +132,10 @@ OCA.Sharing.PublicApp = { img.attr('src', $('#downloadURL').val()); imgcontainer.appendTo('#imgframe'); } else if (mimetype.substr(0, mimetype.indexOf('/')) === 'text' && window.btoa) { + if (oc_appswebroots['files_texteditor'] !== undefined) { + // the text editor handles the previewing + return; + } // Undocumented Url to public WebDAV endpoint var url = parent.location.protocol + '//' + location.host + OC.linkTo('', 'public.php/webdav'); $.ajax({ diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index 2446e958b74..72098ee53da 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -112,4 +112,4 @@ OC.L10N.register( "Uploading files…" : "Probíhá nahrávání souborů...", "Uploaded files:" : "Nahrané soubory:" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index ad9f5b77ad7..f1cbfcc7f13 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -109,5 +109,5 @@ "Select or drop files" : "Vyberte nebo přetáhněte soubory", "Uploading files…" : "Probíhá nahrávání souborů...", "Uploaded files:" : "Nahrané soubory:" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ka_GE.js b/apps/files_sharing/l10n/ka_GE.js index 9216347a764..dab73662aec 100644 --- a/apps/files_sharing/l10n/ka_GE.js +++ b/apps/files_sharing/l10n/ka_GE.js @@ -113,4 +113,4 @@ OC.L10N.register( "Uploaded files:" : "ფაილების ატვირთვა:", "%s is publicly shared" : "%s საზოგადოდ გაზიარებულია" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/files_sharing/l10n/ka_GE.json b/apps/files_sharing/l10n/ka_GE.json index a8ba3ee1996..3ff1bbadc77 100644 --- a/apps/files_sharing/l10n/ka_GE.json +++ b/apps/files_sharing/l10n/ka_GE.json @@ -110,5 +110,5 @@ "Uploading files…" : "ფაილების ატვირთვა...", "Uploaded files:" : "ფაილების ატვირთვა:", "%s is publicly shared" : "%s საზოგადოდ გაზიარებულია" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index 5fa75c10417..452a36bea79 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -111,4 +111,4 @@ OC.L10N.register( "Uploading files…" : "Įkeliami failai…", "Uploaded files:" : "Įkelti failai:" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index 5764613a2ff..ef2df4deed9 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -108,5 +108,5 @@ "Select or drop files" : "Pasirinkite arba vilkite failus", "Uploading files…" : "Įkeliami failai…", "Uploaded files:" : "Įkelti failai:" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index 1b12fe41b43..b3d1d14cfd6 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -112,4 +112,4 @@ OC.L10N.register( "Uploaded files:" : "Nahrané súbory...", "%s is publicly shared" : "%s je verejne zdieľaný" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index dd44d86330e..8c007c2534f 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -109,5 +109,5 @@ "Uploading files…" : "Nahrávanie súborov...", "Uploaded files:" : "Nahrané súbory...", "%s is publicly shared" : "%s je verejne zdieľaný" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php index a196f552f6e..da0da6c27a8 100644 --- a/apps/files_sharing/lib/Controller/ShareController.php +++ b/apps/files_sharing/lib/Controller/ShareController.php @@ -217,6 +217,7 @@ class ShareController extends Controller { private function linkShareAuth(\OCP\Share\IShare $share, $password = null) { if ($password !== null) { if ($this->shareManager->checkPassword($share, $password)) { + $this->session->regenerateId(); $this->session->set('public_link_authenticated', (string)$share->getId()); } else { $this->emitAccessShareHook($share, 403, 'Wrong password'); diff --git a/apps/files_trashbin/l10n/cs.js b/apps/files_trashbin/l10n/cs.js index 712076402f4..95025dce53c 100644 --- a/apps/files_trashbin/l10n/cs.js +++ b/apps/files_trashbin/l10n/cs.js @@ -18,4 +18,4 @@ OC.L10N.register( "Name" : "Název", "Deleted" : "Smazáno" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files_trashbin/l10n/cs.json b/apps/files_trashbin/l10n/cs.json index 06c3b2ce096..0caf0326778 100644 --- a/apps/files_trashbin/l10n/cs.json +++ b/apps/files_trashbin/l10n/cs.json @@ -15,5 +15,5 @@ "Select all" : "Vybrat vše", "Name" : "Název", "Deleted" : "Smazáno" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/fa.js b/apps/files_trashbin/l10n/fa.js index b3c63104b04..a487bf95afa 100644 --- a/apps/files_trashbin/l10n/fa.js +++ b/apps/files_trashbin/l10n/fa.js @@ -18,4 +18,4 @@ OC.L10N.register( "Name" : "نام", "Deleted" : "حذف شده" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/apps/files_trashbin/l10n/fa.json b/apps/files_trashbin/l10n/fa.json index 09ff91cc2e0..5e83ae5ac01 100644 --- a/apps/files_trashbin/l10n/fa.json +++ b/apps/files_trashbin/l10n/fa.json @@ -15,5 +15,5 @@ "Select all" : "انتخاب همه", "Name" : "نام", "Deleted" : "حذف شده" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/he.js b/apps/files_trashbin/l10n/he.js index e2104b9b570..2e36f759caf 100644 --- a/apps/files_trashbin/l10n/he.js +++ b/apps/files_trashbin/l10n/he.js @@ -18,4 +18,4 @@ OC.L10N.register( "Name" : "שם", "Deleted" : "נמחק" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/files_trashbin/l10n/he.json b/apps/files_trashbin/l10n/he.json index c76079b0d34..1ca9a0df06c 100644 --- a/apps/files_trashbin/l10n/he.json +++ b/apps/files_trashbin/l10n/he.json @@ -15,5 +15,5 @@ "Select all" : "לבחור הכול", "Name" : "שם", "Deleted" : "נמחק" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/ka_GE.js b/apps/files_trashbin/l10n/ka_GE.js index 8a90a571c9c..8da039bce41 100644 --- a/apps/files_trashbin/l10n/ka_GE.js +++ b/apps/files_trashbin/l10n/ka_GE.js @@ -18,4 +18,4 @@ OC.L10N.register( "Name" : "სახელი", "Deleted" : "წაშლილი" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/files_trashbin/l10n/ka_GE.json b/apps/files_trashbin/l10n/ka_GE.json index 9ccca984eab..0985d1b9dc8 100644 --- a/apps/files_trashbin/l10n/ka_GE.json +++ b/apps/files_trashbin/l10n/ka_GE.json @@ -15,5 +15,5 @@ "Select all" : "ყველას მონიშვნა", "Name" : "სახელი", "Deleted" : "წაშლილი" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/lt_LT.js b/apps/files_trashbin/l10n/lt_LT.js index 40785b474db..8e923683fcc 100644 --- a/apps/files_trashbin/l10n/lt_LT.js +++ b/apps/files_trashbin/l10n/lt_LT.js @@ -18,4 +18,4 @@ OC.L10N.register( "Name" : "Pavadinimas", "Deleted" : "Ištrinta" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_trashbin/l10n/lt_LT.json b/apps/files_trashbin/l10n/lt_LT.json index b871d16d31e..d7196899830 100644 --- a/apps/files_trashbin/l10n/lt_LT.json +++ b/apps/files_trashbin/l10n/lt_LT.json @@ -15,5 +15,5 @@ "Select all" : "Pažymėti viską", "Name" : "Pavadinimas", "Deleted" : "Ištrinta" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sk.js b/apps/files_trashbin/l10n/sk.js index b4168ec5440..da7ae118561 100644 --- a/apps/files_trashbin/l10n/sk.js +++ b/apps/files_trashbin/l10n/sk.js @@ -18,4 +18,4 @@ OC.L10N.register( "Name" : "Názov", "Deleted" : "Zmazané" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_trashbin/l10n/sk.json b/apps/files_trashbin/l10n/sk.json index b02227c7064..e98b9eba2ed 100644 --- a/apps/files_trashbin/l10n/sk.json +++ b/apps/files_trashbin/l10n/sk.json @@ -15,5 +15,5 @@ "Select all" : "Vybrať všetko", "Name" : "Názov", "Deleted" : "Zmazané" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/uk.js b/apps/files_trashbin/l10n/uk.js index 10747cda3f6..80b7ea1eee0 100644 --- a/apps/files_trashbin/l10n/uk.js +++ b/apps/files_trashbin/l10n/uk.js @@ -18,4 +18,4 @@ OC.L10N.register( "Name" : "Ім'я", "Deleted" : "Видалено" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/files_trashbin/l10n/uk.json b/apps/files_trashbin/l10n/uk.json index d02ee89faf6..ac3db16b481 100644 --- a/apps/files_trashbin/l10n/uk.json +++ b/apps/files_trashbin/l10n/uk.json @@ -15,5 +15,5 @@ "Select all" : "Вибрати всі", "Name" : "Ім'я", "Deleted" : "Видалено" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/cs.js b/apps/files_versions/l10n/cs.js index deb7e3e33b9..46f75ae3e74 100644 --- a/apps/files_versions/l10n/cs.js +++ b/apps/files_versions/l10n/cs.js @@ -4,9 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "Nelze vrátit: %s", "Versions" : "Verze", "Failed to revert {file} to revision {timestamp}." : "Selhalo vrácení souboru {file} na verzi {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajtů"], "Restore" : "Obnovit", "No earlier versions available" : "Nejsou dostupné dřívější verze", "More versions …" : "Víc verzí …" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files_versions/l10n/cs.json b/apps/files_versions/l10n/cs.json index 6b727747998..61c74461f13 100644 --- a/apps/files_versions/l10n/cs.json +++ b/apps/files_versions/l10n/cs.json @@ -2,9 +2,9 @@ "Could not revert: %s" : "Nelze vrátit: %s", "Versions" : "Verze", "Failed to revert {file} to revision {timestamp}." : "Selhalo vrácení souboru {file} na verzi {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajtů"], "Restore" : "Obnovit", "No earlier versions available" : "Nejsou dostupné dřívější verze", "More versions …" : "Víc verzí …" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/fa.js b/apps/files_versions/l10n/fa.js index 35332939df1..9d9ac3087f1 100644 --- a/apps/files_versions/l10n/fa.js +++ b/apps/files_versions/l10n/fa.js @@ -4,9 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "بازگردانی امکان ناپذیر است: %s", "Versions" : "نسخه ها", "Failed to revert {file} to revision {timestamp}." : "برگرداندن {file} به نسخه {timestamp} با شکست روبرو شد", - "_%n byte_::_%n bytes_" : ["%n بایت"], + "_%n byte_::_%n bytes_" : ["%n بایت","%n بایت"], "Restore" : "بازیابی", "No earlier versions available" : "هیچ نسخه قدیمی تری در دسترس نیست", "More versions …" : "نسخه های بیشتر ..." }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/apps/files_versions/l10n/fa.json b/apps/files_versions/l10n/fa.json index 2618427c674..5d8b6baab00 100644 --- a/apps/files_versions/l10n/fa.json +++ b/apps/files_versions/l10n/fa.json @@ -2,9 +2,9 @@ "Could not revert: %s" : "بازگردانی امکان ناپذیر است: %s", "Versions" : "نسخه ها", "Failed to revert {file} to revision {timestamp}." : "برگرداندن {file} به نسخه {timestamp} با شکست روبرو شد", - "_%n byte_::_%n bytes_" : ["%n بایت"], + "_%n byte_::_%n bytes_" : ["%n بایت","%n بایت"], "Restore" : "بازیابی", "No earlier versions available" : "هیچ نسخه قدیمی تری در دسترس نیست", "More versions …" : "نسخه های بیشتر ..." -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/he.js b/apps/files_versions/l10n/he.js index 09e655c422f..e733b773329 100644 --- a/apps/files_versions/l10n/he.js +++ b/apps/files_versions/l10n/he.js @@ -4,9 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "לא ניתן להחזיר: %s", "Versions" : "גרסאות", "Failed to revert {file} to revision {timestamp}." : "נכשל אחזור {file} לגרסה {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים"], + "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"], "Restore" : "שחזור", "No earlier versions available" : "אין גרסאות קודמות זמינות", "More versions …" : "גרסאות נוספות…" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/files_versions/l10n/he.json b/apps/files_versions/l10n/he.json index 380df68f971..0d26f145c72 100644 --- a/apps/files_versions/l10n/he.json +++ b/apps/files_versions/l10n/he.json @@ -2,9 +2,9 @@ "Could not revert: %s" : "לא ניתן להחזיר: %s", "Versions" : "גרסאות", "Failed to revert {file} to revision {timestamp}." : "נכשל אחזור {file} לגרסה {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים"], + "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"], "Restore" : "שחזור", "No earlier versions available" : "אין גרסאות קודמות זמינות", "More versions …" : "גרסאות נוספות…" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/ka_GE.js b/apps/files_versions/l10n/ka_GE.js index 464d43af1c9..225103af3d0 100644 --- a/apps/files_versions/l10n/ka_GE.js +++ b/apps/files_versions/l10n/ka_GE.js @@ -4,9 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "ვერ მოხერხდა უკან დაბრუნება: %s", "Versions" : "ვერსიები", "Failed to revert {file} to revision {timestamp}." : "ფაილის {file} დაბრუნება რევიზიაზე {timestamp} ვერ ხერხდება.", - "_%n byte_::_%n bytes_" : ["%n ბაიტი"], + "_%n byte_::_%n bytes_" : ["%n ბაიტი","%n ბაიტი"], "Restore" : "აღდგენა", "No earlier versions available" : "წინა ვერსიები ხელმისაწვდომი არაა", "More versions …" : "მეტი ვერსია …" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/files_versions/l10n/ka_GE.json b/apps/files_versions/l10n/ka_GE.json index 89e9436c5d8..c7171d1f9dc 100644 --- a/apps/files_versions/l10n/ka_GE.json +++ b/apps/files_versions/l10n/ka_GE.json @@ -2,9 +2,9 @@ "Could not revert: %s" : "ვერ მოხერხდა უკან დაბრუნება: %s", "Versions" : "ვერსიები", "Failed to revert {file} to revision {timestamp}." : "ფაილის {file} დაბრუნება რევიზიაზე {timestamp} ვერ ხერხდება.", - "_%n byte_::_%n bytes_" : ["%n ბაიტი"], + "_%n byte_::_%n bytes_" : ["%n ბაიტი","%n ბაიტი"], "Restore" : "აღდგენა", "No earlier versions available" : "წინა ვერსიები ხელმისაწვდომი არაა", "More versions …" : "მეტი ვერსია …" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/kn.js b/apps/files_versions/l10n/kn.js index 181fe6322e2..6cba46c3ad1 100644 --- a/apps/files_versions/l10n/kn.js +++ b/apps/files_versions/l10n/kn.js @@ -6,4 +6,4 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "{timestamp} ದ ಪರಿಷ್ಕರಣೆ ಇಂದ {file} ಕಡತವನ್ನು ಹಿಂದಿರುಗಿಸಲು ವಿಫಲವಾಗಿದೆ.", "Restore" : "ಮರುಸ್ಥಾಪಿಸು" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/apps/files_versions/l10n/kn.json b/apps/files_versions/l10n/kn.json index 56d909779e4..6afcc26b691 100644 --- a/apps/files_versions/l10n/kn.json +++ b/apps/files_versions/l10n/kn.json @@ -3,5 +3,5 @@ "Versions" : "ಆವೃತ್ತಿಗಳು", "Failed to revert {file} to revision {timestamp}." : "{timestamp} ದ ಪರಿಷ್ಕರಣೆ ಇಂದ {file} ಕಡತವನ್ನು ಹಿಂದಿರುಗಿಸಲು ವಿಫಲವಾಗಿದೆ.", "Restore" : "ಮರುಸ್ಥಾಪಿಸು" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/lt_LT.js b/apps/files_versions/l10n/lt_LT.js index a38a9657503..addd0909b16 100644 --- a/apps/files_versions/l10n/lt_LT.js +++ b/apps/files_versions/l10n/lt_LT.js @@ -4,9 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "Nepavyko sugrąžinti: %s", "Versions" : "Versijos", "Failed to revert {file} to revision {timestamp}." : "Nepavyko sugrąžinti {file} į {timestamp} būseną.", - "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], + "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"], "Restore" : "Atkurti", "No earlier versions available" : "Nėra ankstesnių versijų", "More versions …" : "Daugiau versijų …" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_versions/l10n/lt_LT.json b/apps/files_versions/l10n/lt_LT.json index a8842fc1613..8f89deffeda 100644 --- a/apps/files_versions/l10n/lt_LT.json +++ b/apps/files_versions/l10n/lt_LT.json @@ -2,9 +2,9 @@ "Could not revert: %s" : "Nepavyko sugrąžinti: %s", "Versions" : "Versijos", "Failed to revert {file} to revision {timestamp}." : "Nepavyko sugrąžinti {file} į {timestamp} būseną.", - "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų"], + "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"], "Restore" : "Atkurti", "No earlier versions available" : "Nėra ankstesnių versijų", "More versions …" : "Daugiau versijų …" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/sk.js b/apps/files_versions/l10n/sk.js index 0c06a7bf239..d845085045d 100644 --- a/apps/files_versions/l10n/sk.js +++ b/apps/files_versions/l10n/sk.js @@ -4,9 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "Nemožno obnoviť: %s", "Versions" : "Verzie", "Failed to revert {file} to revision {timestamp}." : "Zlyhalo obnovenie súboru {file} na verziu {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtov","%n bajtov"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtov","%n bajtov","%n bajtov"], "Restore" : "Obnoviť", "No earlier versions available" : "Nie sú dostupné predchádzajúce verzie", "More versions …" : "Viac verzií ..." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files_versions/l10n/sk.json b/apps/files_versions/l10n/sk.json index 76a4d6f8261..eeecbdfe95c 100644 --- a/apps/files_versions/l10n/sk.json +++ b/apps/files_versions/l10n/sk.json @@ -2,9 +2,9 @@ "Could not revert: %s" : "Nemožno obnoviť: %s", "Versions" : "Verzie", "Failed to revert {file} to revision {timestamp}." : "Zlyhalo obnovenie súboru {file} na verziu {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtov","%n bajtov"], + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtov","%n bajtov","%n bajtov"], "Restore" : "Obnoviť", "No earlier versions available" : "Nie sú dostupné predchádzajúce verzie", "More versions …" : "Viac verzií ..." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/uk.js b/apps/files_versions/l10n/uk.js index 34a9faedbd5..8563f94693c 100644 --- a/apps/files_versions/l10n/uk.js +++ b/apps/files_versions/l10n/uk.js @@ -4,9 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "Не вдалося відновити: %s", "Versions" : "Версії", "Failed to revert {file} to revision {timestamp}." : "Не вдалося повернути {file} до ревізії {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байта"], + "_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байта","%n байта"], "Restore" : "Відновити", "No earlier versions available" : "Попередні версії недоступні", "More versions …" : "Більше версій …" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/files_versions/l10n/uk.json b/apps/files_versions/l10n/uk.json index 8bd76ae3526..6d7aab4e8a8 100644 --- a/apps/files_versions/l10n/uk.json +++ b/apps/files_versions/l10n/uk.json @@ -2,9 +2,9 @@ "Could not revert: %s" : "Не вдалося відновити: %s", "Versions" : "Версії", "Failed to revert {file} to revision {timestamp}." : "Не вдалося повернути {file} до ревізії {timestamp}.", - "_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байта"], + "_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байта","%n байта"], "Restore" : "Відновити", "No earlier versions available" : "Попередні версії недоступні", "More versions …" : "Більше версій …" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php index 217bf02fd39..401544cc5d7 100644 --- a/apps/files_versions/lib/Storage.php +++ b/apps/files_versions/lib/Storage.php @@ -337,6 +337,9 @@ class Storage { return false; } + // Fetch the userfolder to trigger view hooks + $userFolder = \OC::$server->getUserFolder($uid); + $users_view = new View('/'.$uid); $files_view = new View('/'. User::getUser().'/files'); @@ -375,9 +378,14 @@ class Storage { if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) { $files_view->touch($file, $revision); Storage::scheduleExpire($uid, $file); + + $node = $userFolder->get($file); + + // TODO: move away from those legacy hooks! \OC_Hook::emit('\OCP\Versions', 'rollback', array( 'path' => $filename, 'revision' => $revision, + 'node' => $node, )); return true; } else if ($versionCreated) { diff --git a/apps/oauth2/appinfo/info.xml b/apps/oauth2/appinfo/info.xml index ac18b5cdb94..43d0cf72372 100644 --- a/apps/oauth2/appinfo/info.xml +++ b/apps/oauth2/appinfo/info.xml @@ -5,7 +5,7 @@ <name>OAuth 2.0</name> <summary>Allows OAuth2 compatible authentication from other web applications.</summary> <description>The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications.</description> - <version>1.2.0</version> + <version>1.2.1</version> <licence>agpl</licence> <author>Lukas Reschke</author> <namespace>OAuth2</namespace> @@ -20,6 +20,12 @@ <nextcloud min-version="14" max-version="14" /> </dependencies> + <repair-steps> + <post-migration> + <step>OCA\OAuth2\Migration\SetTokenExpiration</step> + </post-migration> + </repair-steps> + <settings> <admin>OCA\OAuth2\Settings\Admin</admin> </settings> diff --git a/apps/oauth2/composer/composer/autoload_classmap.php b/apps/oauth2/composer/composer/autoload_classmap.php index 97c8098caa3..c933a1bf21e 100644 --- a/apps/oauth2/composer/composer/autoload_classmap.php +++ b/apps/oauth2/composer/composer/autoload_classmap.php @@ -15,5 +15,6 @@ return array( 'OCA\\OAuth2\\Db\\ClientMapper' => $baseDir . '/../lib/Db/ClientMapper.php', 'OCA\\OAuth2\\Exceptions\\AccessTokenNotFoundException' => $baseDir . '/../lib/Exceptions/AccessTokenNotFoundException.php', 'OCA\\OAuth2\\Exceptions\\ClientNotFoundException' => $baseDir . '/../lib/Exceptions/ClientNotFoundException.php', + 'OCA\\OAuth2\\Migration\\SetTokenExpiration' => $baseDir . '/../lib/Migration/SetTokenExpiration.php', 'OCA\\OAuth2\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php', ); diff --git a/apps/oauth2/composer/composer/autoload_static.php b/apps/oauth2/composer/composer/autoload_static.php index ec48d6d0ce0..aaac9e4f6d8 100644 --- a/apps/oauth2/composer/composer/autoload_static.php +++ b/apps/oauth2/composer/composer/autoload_static.php @@ -30,6 +30,7 @@ class ComposerStaticInitOAuth2 'OCA\\OAuth2\\Db\\ClientMapper' => __DIR__ . '/..' . '/../lib/Db/ClientMapper.php', 'OCA\\OAuth2\\Exceptions\\AccessTokenNotFoundException' => __DIR__ . '/..' . '/../lib/Exceptions/AccessTokenNotFoundException.php', 'OCA\\OAuth2\\Exceptions\\ClientNotFoundException' => __DIR__ . '/..' . '/../lib/Exceptions/ClientNotFoundException.php', + 'OCA\\OAuth2\\Migration\\SetTokenExpiration' => __DIR__ . '/..' . '/../lib/Migration/SetTokenExpiration.php', 'OCA\\OAuth2\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php', ); diff --git a/apps/oauth2/l10n/cs.js b/apps/oauth2/l10n/cs.js index 7bdce516054..214cb823c52 100644 --- a/apps/oauth2/l10n/cs.js +++ b/apps/oauth2/l10n/cs.js @@ -10,4 +10,4 @@ OC.L10N.register( "Add client" : "Přidat klienta", "Add" : "Přidat" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/oauth2/l10n/cs.json b/apps/oauth2/l10n/cs.json index 7a76470dbe2..f4ef480cddd 100644 --- a/apps/oauth2/l10n/cs.json +++ b/apps/oauth2/l10n/cs.json @@ -7,5 +7,5 @@ "Secret" : "Tajemství", "Add client" : "Přidat klienta", "Add" : "Přidat" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/oauth2/l10n/he.js b/apps/oauth2/l10n/he.js index 250205239a8..070565b3408 100644 --- a/apps/oauth2/l10n/he.js +++ b/apps/oauth2/l10n/he.js @@ -11,4 +11,4 @@ OC.L10N.register( "Add client" : "הוספת לקוחי", "Add" : "הוספה" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/oauth2/l10n/he.json b/apps/oauth2/l10n/he.json index 09505d77302..c407183c25d 100644 --- a/apps/oauth2/l10n/he.json +++ b/apps/oauth2/l10n/he.json @@ -8,5 +8,5 @@ "Secret" : "סוד", "Add client" : "הוספת לקוחי", "Add" : "הוספה" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/oauth2/l10n/ka_GE.js b/apps/oauth2/l10n/ka_GE.js index bc15a0bb375..d488884bd2e 100644 --- a/apps/oauth2/l10n/ka_GE.js +++ b/apps/oauth2/l10n/ka_GE.js @@ -11,4 +11,4 @@ OC.L10N.register( "Add client" : "კლიენტის დამატება", "Add" : "დამატება" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/oauth2/l10n/ka_GE.json b/apps/oauth2/l10n/ka_GE.json index 234349103b1..e5c8fbadf1b 100644 --- a/apps/oauth2/l10n/ka_GE.json +++ b/apps/oauth2/l10n/ka_GE.json @@ -8,5 +8,5 @@ "Secret" : "საიდუმლო", "Add client" : "კლიენტის დამატება", "Add" : "დამატება" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/oauth2/l10n/lt_LT.js b/apps/oauth2/l10n/lt_LT.js index b93d9063ae2..2ae37aadf86 100644 --- a/apps/oauth2/l10n/lt_LT.js +++ b/apps/oauth2/l10n/lt_LT.js @@ -1,6 +1,7 @@ OC.L10N.register( "oauth2", { + "OAuth 2.0" : "OAuth 2.0", "OAuth 2.0 clients" : "OAuth 2.0 klientai", "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 protokolas leidžia trečiųjų šalių programinei įrangai pasiekti šiuos jūsų duomenis: %s.", "Name" : "Pavadinimas", @@ -10,4 +11,4 @@ OC.L10N.register( "Add client" : "Pridėti klientą", "Add" : "Pridėti" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/oauth2/l10n/lt_LT.json b/apps/oauth2/l10n/lt_LT.json index 6b311c7b5cd..b75c38f66d6 100644 --- a/apps/oauth2/l10n/lt_LT.json +++ b/apps/oauth2/l10n/lt_LT.json @@ -1,4 +1,5 @@ { "translations": { + "OAuth 2.0" : "OAuth 2.0", "OAuth 2.0 clients" : "OAuth 2.0 klientai", "OAuth 2.0 allows external services to request access to %s." : "OAuth 2.0 protokolas leidžia trečiųjų šalių programinei įrangai pasiekti šiuos jūsų duomenis: %s.", "Name" : "Pavadinimas", @@ -7,5 +8,5 @@ "Secret" : "Paslaptis", "Add client" : "Pridėti klientą", "Add" : "Pridėti" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/oauth2/l10n/sk.js b/apps/oauth2/l10n/sk.js index 977ffe779a0..ee9188b97c9 100644 --- a/apps/oauth2/l10n/sk.js +++ b/apps/oauth2/l10n/sk.js @@ -11,4 +11,4 @@ OC.L10N.register( "Add client" : "Pridať klienta", "Add" : "Pridať" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/oauth2/l10n/sk.json b/apps/oauth2/l10n/sk.json index bc0e014f859..64684aeb2f2 100644 --- a/apps/oauth2/l10n/sk.json +++ b/apps/oauth2/l10n/sk.json @@ -8,5 +8,5 @@ "Secret" : "Tajný kľúč", "Add client" : "Pridať klienta", "Add" : "Pridať" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/oauth2/lib/Controller/LoginRedirectorController.php b/apps/oauth2/lib/Controller/LoginRedirectorController.php index 9237b4b1b3c..8e6d6d55e2d 100644 --- a/apps/oauth2/lib/Controller/LoginRedirectorController.php +++ b/apps/oauth2/lib/Controller/LoginRedirectorController.php @@ -61,11 +61,20 @@ class LoginRedirectorController extends Controller { * * @param string $client_id * @param string $state + * @param string $response_type * @return RedirectResponse */ public function authorize($client_id, - $state) { + $state, + $response_type) { $client = $this->clientMapper->getByIdentifier($client_id); + + if ($response_type !== 'code') { + //Fail + $url = $client->getRedirectUri() . '?error=unsupported_response_type&state=' . $state; + return new RedirectResponse($url); + } + $this->session->set('oauth.state', $state); $targetUrl = $this->urlGenerator->linkToRouteAbsolute( diff --git a/apps/oauth2/lib/Controller/OauthApiController.php b/apps/oauth2/lib/Controller/OauthApiController.php index b97d85ae3e6..8c96a3feee1 100644 --- a/apps/oauth2/lib/Controller/OauthApiController.php +++ b/apps/oauth2/lib/Controller/OauthApiController.php @@ -21,10 +21,17 @@ namespace OCA\OAuth2\Controller; -use OC\Authentication\Token\DefaultTokenMapper; +use OC\Authentication\Exceptions\InvalidTokenException; +use OC\Authentication\Token\ExpiredTokenException; +use OC\Authentication\Token\IProvider as TokenProvider; use OCA\OAuth2\Db\AccessTokenMapper; +use OCA\OAuth2\Db\ClientMapper; +use OCA\OAuth2\Exceptions\AccessTokenNotFoundException; +use OCA\OAuth2\Exceptions\ClientNotFoundException; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\IRequest; use OCP\Security\ICrypto; use OCP\Security\ISecureRandom; @@ -32,56 +39,133 @@ use OCP\Security\ISecureRandom; class OauthApiController extends Controller { /** @var AccessTokenMapper */ private $accessTokenMapper; + /** @var ClientMapper */ + private $clientMapper; /** @var ICrypto */ private $crypto; - /** @var DefaultTokenMapper */ - private $defaultTokenMapper; + /** @var TokenProvider */ + private $tokenProvider; /** @var ISecureRandom */ private $secureRandom; + /** @var ITimeFactory */ + private $time; /** * @param string $appName * @param IRequest $request * @param ICrypto $crypto * @param AccessTokenMapper $accessTokenMapper - * @param DefaultTokenMapper $defaultTokenMapper + * @param ClientMapper $clientMapper + * @param TokenProvider $tokenProvider * @param ISecureRandom $secureRandom + * @param ITimeFactory $time */ public function __construct($appName, IRequest $request, ICrypto $crypto, AccessTokenMapper $accessTokenMapper, - DefaultTokenMapper $defaultTokenMapper, - ISecureRandom $secureRandom) { + ClientMapper $clientMapper, + TokenProvider $tokenProvider, + ISecureRandom $secureRandom, + ITimeFactory $time) { parent::__construct($appName, $request); $this->crypto = $crypto; $this->accessTokenMapper = $accessTokenMapper; - $this->defaultTokenMapper = $defaultTokenMapper; + $this->clientMapper = $clientMapper; + $this->tokenProvider = $tokenProvider; $this->secureRandom = $secureRandom; + $this->time = $time; } /** * @PublicPage * @NoCSRFRequired * + * @param string $grant_type * @param string $code + * @param string $refresh_token + * @param string $client_id + * @param string $client_secret * @return JSONResponse */ - public function getToken($code) { - $accessToken = $this->accessTokenMapper->getByCode($code); + public function getToken($grant_type, $code, $refresh_token, $client_id, $client_secret) { + + // We only handle two types + if ($grant_type !== 'authorization_code' && $grant_type !== 'refresh_token') { + return new JSONResponse([ + 'error' => 'invalid_grant', + ], Http::STATUS_BAD_REQUEST); + } + + // We handle the initial and refresh tokens the same way + if ($grant_type === 'refresh_token' ) { + $code = $refresh_token; + } + + try { + $accessToken = $this->accessTokenMapper->getByCode($code); + } catch (AccessTokenNotFoundException $e) { + return new JSONResponse([ + 'error' => 'invalid_request', + ], Http::STATUS_BAD_REQUEST); + } + + try { + $client = $this->clientMapper->getByUid($accessToken->getClientId()); + } catch (ClientNotFoundException $e) { + return new JSONResponse([ + 'error' => 'invalid_request', + ], Http::STATUS_BAD_REQUEST); + } + + // The client id and secret must match. Else we don't provide an access token! + if ($client->getClientIdentifier() !== $client_id || $client->getSecret() !== $client_secret) { + return new JSONResponse([ + 'error' => 'invalid_client', + ], Http::STATUS_BAD_REQUEST); + } + $decryptedToken = $this->crypto->decrypt($accessToken->getEncryptedToken(), $code); - $newCode = $this->secureRandom->generate(128); + + // Obtain the appToken assoicated + try { + $appToken = $this->tokenProvider->getTokenById($accessToken->getTokenId()); + } catch (ExpiredTokenException $e) { + $appToken = $e->getToken(); + } catch (InvalidTokenException $e) { + //We can't do anything... + $this->accessTokenMapper->delete($accessToken); + return new JSONResponse([ + 'error' => 'invalid_request', + ], Http::STATUS_BAD_REQUEST); + } + + // Rotate the apptoken (so the old one becomes invalid basically) + $newToken = $this->secureRandom->generate(72, ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_LOWER.ISecureRandom::CHAR_DIGITS); + + $appToken = $this->tokenProvider->rotate( + $appToken, + $decryptedToken, + $newToken + ); + + // Expiration is in 1 hour again + $appToken->setExpires($this->time->getTime() + 3600); + $this->tokenProvider->updateToken($appToken); + + // Generate a new refresh token and encrypt the new apptoken in the DB + $newCode = $this->secureRandom->generate(128, ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_LOWER.ISecureRandom::CHAR_DIGITS); $accessToken->setHashedCode(hash('sha512', $newCode)); - $accessToken->setEncryptedToken($this->crypto->encrypt($decryptedToken, $newCode)); + $accessToken->setEncryptedToken($this->crypto->encrypt($newToken, $newCode)); $this->accessTokenMapper->update($accessToken); return new JSONResponse( [ - 'access_token' => $decryptedToken, + 'access_token' => $newToken, 'token_type' => 'Bearer', 'expires_in' => 3600, 'refresh_token' => $newCode, - 'user_id' => $this->defaultTokenMapper->getTokenById($accessToken->getTokenId())->getUID(), + 'user_id' => $appToken->getUID(), ] ); } diff --git a/apps/oauth2/lib/Migration/SetTokenExpiration.php b/apps/oauth2/lib/Migration/SetTokenExpiration.php new file mode 100644 index 00000000000..54add100fa7 --- /dev/null +++ b/apps/oauth2/lib/Migration/SetTokenExpiration.php @@ -0,0 +1,77 @@ +<?php +/** + * @copyright Copyright 2018, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\OAuth2\Migration; + +use OC\Authentication\Exceptions\InvalidTokenException; +use OC\Authentication\Token\IProvider as TokenProvider; +use OCA\OAuth2\Db\AccessToken; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\IDBConnection; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; + +class SetTokenExpiration implements IRepairStep { + + /** @var IDBConnection */ + private $connection; + + /** @var ITimeFactory */ + private $time; + + /** @var TokenProvider */ + private $tokenProvider; + + public function __construct(IDBConnection $connection, + ITimeFactory $timeFactory, + TokenProvider $tokenProvider) { + $this->connection = $connection; + $this->time = $timeFactory; + $this->tokenProvider = $tokenProvider; + } + + public function getName() { + return 'Update OAuth token expiration times'; + } + + public function run(IOutput $output) { + $qb = $this->connection->getQueryBuilder(); + $qb->select('*') + ->from('oauth2_access_tokens'); + + $cursor = $qb->execute(); + + while($row = $cursor->fetch()) { + $token = AccessToken::fromRow($row); + try { + $appToken = $this->tokenProvider->getTokenById($token->getTokenId()); + $appToken->setExpires($this->time->getTime() + 3600); + $this->tokenProvider->updateToken($appToken); + } catch (InvalidTokenException $e) { + //Skip this token + } + } + $cursor->closeCursor(); + } + +} diff --git a/apps/oauth2/tests/Controller/LoginRedirectorControllerTest.php b/apps/oauth2/tests/Controller/LoginRedirectorControllerTest.php index b33d3379be4..584e3ebed54 100644 --- a/apps/oauth2/tests/Controller/LoginRedirectorControllerTest.php +++ b/apps/oauth2/tests/Controller/LoginRedirectorControllerTest.php @@ -86,6 +86,24 @@ class LoginRedirectorControllerTest extends TestCase { ->willReturn('https://example.com/?clientIdentifier=foo'); $expected = new RedirectResponse('https://example.com/?clientIdentifier=foo'); - $this->assertEquals($expected, $this->loginRedirectorController->authorize('MyClientId', 'MyState')); + $this->assertEquals($expected, $this->loginRedirectorController->authorize('MyClientId', 'MyState', 'code')); + } + + public function testAuthorizeWrongResponseType() { + $client = new Client(); + $client->setClientIdentifier('MyClientIdentifier'); + $client->setRedirectUri('http://foo.bar'); + $this->clientMapper + ->expects($this->once()) + ->method('getByIdentifier') + ->with('MyClientId') + ->willReturn($client); + $this->session + ->expects($this->never()) + ->method('set'); + + + $expected = new RedirectResponse('http://foo.bar?error=unsupported_response_type&state=MyState'); + $this->assertEquals($expected, $this->loginRedirectorController->authorize('MyClientId', 'MyState', 'wrongcode')); } } diff --git a/apps/oauth2/tests/Controller/OauthApiControllerTest.php b/apps/oauth2/tests/Controller/OauthApiControllerTest.php index c90e2bf711f..790dba0a598 100644 --- a/apps/oauth2/tests/Controller/OauthApiControllerTest.php +++ b/apps/oauth2/tests/Controller/OauthApiControllerTest.php @@ -21,12 +21,22 @@ namespace OCA\OAuth2\Tests\Controller; +use OC\Authentication\Exceptions\InvalidTokenException; use OC\Authentication\Token\DefaultToken; use OC\Authentication\Token\DefaultTokenMapper; +use OC\Authentication\Token\ExpiredTokenException; +use OC\Authentication\Token\IProvider as TokenProvider; +use OC\Authentication\Token\IToken; use OCA\OAuth2\Controller\OauthApiController; use OCA\OAuth2\Db\AccessToken; use OCA\OAuth2\Db\AccessTokenMapper; +use OCA\OAuth2\Db\Client; +use OCA\OAuth2\Db\ClientMapper; +use OCA\OAuth2\Exceptions\AccessTokenNotFoundException; +use OCA\OAuth2\Exceptions\ClientNotFoundException; +use OCP\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\IRequest; use OCP\Security\ICrypto; use OCP\Security\ISecureRandom; @@ -39,10 +49,14 @@ class OauthApiControllerTest extends TestCase { private $crypto; /** @var AccessTokenMapper|\PHPUnit_Framework_MockObject_MockObject */ private $accessTokenMapper; - /** @var DefaultTokenMapper|\PHPUnit_Framework_MockObject_MockObject */ - private $defaultTokenMapper; + /** @var ClientMapper|\PHPUnit_Framework_MockObject_MockObject */ + private $clientMapper; + /** @var TokenProvider|\PHPUnit_Framework_MockObject_MockObject */ + private $tokenProvider; /** @var ISecureRandom|\PHPUnit_Framework_MockObject_MockObject */ private $secureRandom; + /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */ + private $time; /** @var OauthApiController */ private $oauthApiController; @@ -52,55 +66,307 @@ class OauthApiControllerTest extends TestCase { $this->request = $this->createMock(IRequest::class); $this->crypto = $this->createMock(ICrypto::class); $this->accessTokenMapper = $this->createMock(AccessTokenMapper::class); - $this->defaultTokenMapper = $this->createMock(DefaultTokenMapper::class); + $this->clientMapper = $this->createMock(ClientMapper::class); + $this->tokenProvider = $this->createMock(TokenProvider::class); $this->secureRandom = $this->createMock(ISecureRandom::class); + $this->time = $this->createMock(ITimeFactory::class); $this->oauthApiController = new OauthApiController( 'oauth2', $this->request, $this->crypto, $this->accessTokenMapper, - $this->defaultTokenMapper, - $this->secureRandom + $this->clientMapper, + $this->tokenProvider, + $this->secureRandom, + $this->time ); } - public function testGetToken() { + public function testGetTokenInvalidGrantType() { + $expected = new JSONResponse([ + 'error' => 'invalid_grant', + ], Http::STATUS_BAD_REQUEST); + + $this->assertEquals($expected, $this->oauthApiController->getToken('foo', null, null, null, null)); + } + + public function testGetTokenInvalidCode() { + $expected = new JSONResponse([ + 'error' => 'invalid_request', + ], Http::STATUS_BAD_REQUEST); + + $this->accessTokenMapper->method('getByCode') + ->with('invalidcode') + ->willThrowException(new AccessTokenNotFoundException()); + + $this->assertEquals($expected, $this->oauthApiController->getToken('authorization_code', 'invalidcode', null, null, null)); + } + + public function testGetTokenInvalidRefreshToken() { + $expected = new JSONResponse([ + 'error' => 'invalid_request', + ], Http::STATUS_BAD_REQUEST); + + $this->accessTokenMapper->method('getByCode') + ->with('invalidrefresh') + ->willThrowException(new AccessTokenNotFoundException()); + + $this->assertEquals($expected, $this->oauthApiController->getToken('refresh_token', null, 'invalidrefresh', null, null)); + } + + public function testGetTokenClientDoesNotExist() { + $expected = new JSONResponse([ + 'error' => 'invalid_request', + ], Http::STATUS_BAD_REQUEST); + $accessToken = new AccessToken(); - $accessToken->setEncryptedToken('MyEncryptedToken'); - $accessToken->setTokenId(123); - $this->accessTokenMapper - ->expects($this->once()) - ->method('getByCode') + $accessToken->setClientId(42); + + $this->accessTokenMapper->method('getByCode') + ->with('validrefresh') ->willReturn($accessToken); - $this->crypto - ->expects($this->once()) - ->method('decrypt') - ->with('MyEncryptedToken', 'MySecretCode') - ->willReturn('MyDecryptedToken'); - $this->secureRandom - ->expects($this->once()) - ->method('generate') - ->with(128) - ->willReturn('NewToken'); - $token = new DefaultToken(); - $token->setUid('JohnDoe'); - $this->defaultTokenMapper - ->expects($this->once()) - ->method('getTokenById') - ->with(123) - ->willReturn($token); - - $expected = new JSONResponse( - [ - 'access_token' => 'MyDecryptedToken', - 'token_type' => 'Bearer', - 'expires_in' => 3600, - 'refresh_token' => 'NewToken', - 'user_id' => 'JohnDoe', - ] - ); - $this->assertEquals($expected, $this->oauthApiController->getToken('MySecretCode')); + + $this->clientMapper->method('getByUid') + ->with(42) + ->willThrowException(new ClientNotFoundException()); + + $this->assertEquals($expected, $this->oauthApiController->getToken('refresh_token', null, 'validrefresh', null, null)); + } + + public function invalidClientProvider() { + return [ + ['invalidClientId', 'invalidClientSecret'], + ['clientId', 'invalidClientSecret'], + ['invalidClientId', 'clientSecret'], + ]; + } + + /** + * @dataProvider invalidClientProvider + * + * @param string $clientId + * @param string $clientSecret + */ + public function testGetTokenInvalidClient($clientId, $clientSecret) { + $expected = new JSONResponse([ + 'error' => 'invalid_client', + ], Http::STATUS_BAD_REQUEST); + + $accessToken = new AccessToken(); + $accessToken->setClientId(42); + + $this->accessTokenMapper->method('getByCode') + ->with('validrefresh') + ->willReturn($accessToken); + + $client = new Client(); + $client->setClientIdentifier('clientId'); + $client->setSecret('clientSecret'); + $this->clientMapper->method('getByUid') + ->with(42) + ->willReturn($client); + + $this->assertEquals($expected, $this->oauthApiController->getToken('refresh_token', null, 'validrefresh', $clientId, $clientSecret)); + } + + public function testGetTokenInvalidAppToken() { + $expected = new JSONResponse([ + 'error' => 'invalid_request', + ], Http::STATUS_BAD_REQUEST); + + $accessToken = new AccessToken(); + $accessToken->setClientId(42); + $accessToken->setTokenId(1337); + $accessToken->setEncryptedToken('encryptedToken'); + + $this->accessTokenMapper->method('getByCode') + ->with('validrefresh') + ->willReturn($accessToken); + + $client = new Client(); + $client->setClientIdentifier('clientId'); + $client->setSecret('clientSecret'); + $this->clientMapper->method('getByUid') + ->with(42) + ->willReturn($client); + + $this->crypto->method('decrypt') + ->with( + 'encryptedToken', + 'validrefresh' + )->willReturn('decryptedToken'); + + $this->tokenProvider->method('getTokenById') + ->with(1337) + ->willThrowException(new InvalidTokenException()); + + $this->accessTokenMapper->expects($this->once()) + ->method('delete') + ->with($accessToken); + + $this->assertEquals($expected, $this->oauthApiController->getToken('refresh_token', null, 'validrefresh', 'clientId', 'clientSecret')); } + public function testGetTokenValidAppToken() { + $accessToken = new AccessToken(); + $accessToken->setClientId(42); + $accessToken->setTokenId(1337); + $accessToken->setEncryptedToken('encryptedToken'); + + $this->accessTokenMapper->method('getByCode') + ->with('validrefresh') + ->willReturn($accessToken); + + $client = new Client(); + $client->setClientIdentifier('clientId'); + $client->setSecret('clientSecret'); + $this->clientMapper->method('getByUid') + ->with(42) + ->willReturn($client); + + $this->crypto->method('decrypt') + ->with( + 'encryptedToken', + 'validrefresh' + )->willReturn('decryptedToken'); + + $appToken = new DefaultToken(); + $appToken->setUid('userId'); + $this->tokenProvider->method('getTokenById') + ->with(1337) + ->willThrowException(new ExpiredTokenException($appToken)); + + $this->accessTokenMapper->expects($this->never()) + ->method('delete') + ->with($accessToken); + + $this->secureRandom->method('generate') + ->will($this->returnCallback(function ($len) { + return 'random'.$len; + })); + + $this->tokenProvider->expects($this->once()) + ->method('rotate') + ->with( + $appToken, + 'decryptedToken', + 'random72' + )->willReturn($appToken); + + $this->time->method('getTime') + ->willReturn(1000); + + $this->tokenProvider->expects($this->once()) + ->method('updateToken') + ->with( + $this->callback(function (DefaultToken $token) { + return $token->getExpires() === 4600; + }) + ); + + $this->crypto->method('encrypt') + ->with('random72', 'random128') + ->willReturn('newEncryptedToken'); + + $this->accessTokenMapper->expects($this->once()) + ->method('update') + ->with( + $this->callback(function (AccessToken $token) { + return $token->getHashedCode() === hash('sha512', 'random128') && + $token->getEncryptedToken() === 'newEncryptedToken'; + }) + ); + + $expected = new JSONResponse([ + 'access_token' => 'random72', + 'token_type' => 'Bearer', + 'expires_in' => 3600, + 'refresh_token' => 'random128', + 'user_id' => 'userId', + ]); + + $this->assertEquals($expected, $this->oauthApiController->getToken('refresh_token', null, 'validrefresh', 'clientId', 'clientSecret')); + } + + public function testGetTokenExpiredAppToken() { + $accessToken = new AccessToken(); + $accessToken->setClientId(42); + $accessToken->setTokenId(1337); + $accessToken->setEncryptedToken('encryptedToken'); + + $this->accessTokenMapper->method('getByCode') + ->with('validrefresh') + ->willReturn($accessToken); + + $client = new Client(); + $client->setClientIdentifier('clientId'); + $client->setSecret('clientSecret'); + $this->clientMapper->method('getByUid') + ->with(42) + ->willReturn($client); + + $this->crypto->method('decrypt') + ->with( + 'encryptedToken', + 'validrefresh' + )->willReturn('decryptedToken'); + + $appToken = new DefaultToken(); + $appToken->setUid('userId'); + $this->tokenProvider->method('getTokenById') + ->with(1337) + ->willReturn($appToken); + + $this->accessTokenMapper->expects($this->never()) + ->method('delete') + ->with($accessToken); + + $this->secureRandom->method('generate') + ->will($this->returnCallback(function ($len) { + return 'random'.$len; + })); + + $this->tokenProvider->expects($this->once()) + ->method('rotate') + ->with( + $appToken, + 'decryptedToken', + 'random72' + )->willReturn($appToken); + + $this->time->method('getTime') + ->willReturn(1000); + + $this->tokenProvider->expects($this->once()) + ->method('updateToken') + ->with( + $this->callback(function (DefaultToken $token) { + return $token->getExpires() === 4600; + }) + ); + + $this->crypto->method('encrypt') + ->with('random72', 'random128') + ->willReturn('newEncryptedToken'); + + $this->accessTokenMapper->expects($this->once()) + ->method('update') + ->with( + $this->callback(function (AccessToken $token) { + return $token->getHashedCode() === hash('sha512', 'random128') && + $token->getEncryptedToken() === 'newEncryptedToken'; + }) + ); + + $expected = new JSONResponse([ + 'access_token' => 'random72', + 'token_type' => 'Bearer', + 'expires_in' => 3600, + 'refresh_token' => 'random128', + 'user_id' => 'userId', + ]); + + $this->assertEquals($expected, $this->oauthApiController->getToken('refresh_token', null, 'validrefresh', 'clientId', 'clientSecret')); + } } diff --git a/apps/sharebymail/l10n/cs.js b/apps/sharebymail/l10n/cs.js index 25012c581dd..fc2dac6a5e1 100644 --- a/apps/sharebymail/l10n/cs.js +++ b/apps/sharebymail/l10n/cs.js @@ -40,4 +40,4 @@ OC.L10N.register( "Enforce password protection" : "Vynutit ochranu heslem", "Failed to send share by E-mail" : "Odeslání sdílení e-mailem se nezdařilo" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/sharebymail/l10n/cs.json b/apps/sharebymail/l10n/cs.json index 02f938b830a..3bc36a902c9 100644 --- a/apps/sharebymail/l10n/cs.json +++ b/apps/sharebymail/l10n/cs.json @@ -37,5 +37,5 @@ "Send password by mail" : "Odeslat heslo e-mailem", "Enforce password protection" : "Vynutit ochranu heslem", "Failed to send share by E-mail" : "Odeslání sdílení e-mailem se nezdařilo" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/sharebymail/l10n/ka_GE.js b/apps/sharebymail/l10n/ka_GE.js index 8d2d43afc6c..737d6c4c765 100644 --- a/apps/sharebymail/l10n/ka_GE.js +++ b/apps/sharebymail/l10n/ka_GE.js @@ -40,4 +40,4 @@ OC.L10N.register( "Enforce password protection" : "პროლით დაცვის იძულება", "Failed to send share by E-mail" : "საოფსტო გაზიარების გაგზავნა ვერ მოხერხდა" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/sharebymail/l10n/ka_GE.json b/apps/sharebymail/l10n/ka_GE.json index 140b8dbb344..dcdef8d8655 100644 --- a/apps/sharebymail/l10n/ka_GE.json +++ b/apps/sharebymail/l10n/ka_GE.json @@ -37,5 +37,5 @@ "Send password by mail" : "პაროლის გაგზავნა ფოსტით", "Enforce password protection" : "პროლით დაცვის იძულება", "Failed to send share by E-mail" : "საოფსტო გაზიარების გაგზავნა ვერ მოხერხდა" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/sharebymail/l10n/lt_LT.js b/apps/sharebymail/l10n/lt_LT.js index 4adcb4242f4..57f4198562c 100644 --- a/apps/sharebymail/l10n/lt_LT.js +++ b/apps/sharebymail/l10n/lt_LT.js @@ -40,4 +40,4 @@ OC.L10N.register( "Enforce password protection" : "Apsaugoti slaptažodžiu", "Failed to send share by E-mail" : "Nepavyko išsiųsti bendrinimo el. paštu" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/sharebymail/l10n/lt_LT.json b/apps/sharebymail/l10n/lt_LT.json index 61f2ea0994a..15cb90eb2c6 100644 --- a/apps/sharebymail/l10n/lt_LT.json +++ b/apps/sharebymail/l10n/lt_LT.json @@ -37,5 +37,5 @@ "Send password by mail" : "Siųti slaptažodį elektroniniu paštu", "Enforce password protection" : "Apsaugoti slaptažodžiu", "Failed to send share by E-mail" : "Nepavyko išsiųsti bendrinimo el. paštu" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/sharebymail/l10n/sk.js b/apps/sharebymail/l10n/sk.js index d10d5d49959..703059e3784 100644 --- a/apps/sharebymail/l10n/sk.js +++ b/apps/sharebymail/l10n/sk.js @@ -33,4 +33,4 @@ OC.L10N.register( "Enforce password protection" : "Vynútiť ochranu heslom", "Failed to send share by E-mail" : "Nebolo možné poslať sprístupnenie emailom" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/sharebymail/l10n/sk.json b/apps/sharebymail/l10n/sk.json index 89f0b8fc2f3..5e0b7e103df 100644 --- a/apps/sharebymail/l10n/sk.json +++ b/apps/sharebymail/l10n/sk.json @@ -30,5 +30,5 @@ "Send password by mail" : "Odoslať heslo e-mailom", "Enforce password protection" : "Vynútiť ochranu heslom", "Failed to send share by E-mail" : "Nebolo možné poslať sprístupnenie emailom" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/cs.js b/apps/systemtags/l10n/cs.js index 5fc3ae2ba3c..56ec392ebe1 100644 --- a/apps/systemtags/l10n/cs.js +++ b/apps/systemtags/l10n/cs.js @@ -55,4 +55,4 @@ OC.L10N.register( "Size" : "Velikost", "Modified" : "Upraveno" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/systemtags/l10n/cs.json b/apps/systemtags/l10n/cs.json index 92addac3ef6..4e2a187f950 100644 --- a/apps/systemtags/l10n/cs.json +++ b/apps/systemtags/l10n/cs.json @@ -52,5 +52,5 @@ "No entries found in this folder" : "V tomto adresáři nebylo nic nalezeno", "Size" : "Velikost", "Modified" : "Upraveno" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/he.js b/apps/systemtags/l10n/he.js index a81468cd559..55e2600d85f 100644 --- a/apps/systemtags/l10n/he.js +++ b/apps/systemtags/l10n/he.js @@ -55,4 +55,4 @@ OC.L10N.register( "Size" : "גודל", "Modified" : "זמן שינוי" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/systemtags/l10n/he.json b/apps/systemtags/l10n/he.json index 7d3ae53f5f5..e589b743f8d 100644 --- a/apps/systemtags/l10n/he.json +++ b/apps/systemtags/l10n/he.json @@ -52,5 +52,5 @@ "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Size" : "גודל", "Modified" : "זמן שינוי" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/ka_GE.js b/apps/systemtags/l10n/ka_GE.js index ee007fd0189..bd653e6d3ca 100644 --- a/apps/systemtags/l10n/ka_GE.js +++ b/apps/systemtags/l10n/ka_GE.js @@ -55,4 +55,4 @@ OC.L10N.register( "Size" : "ზომა", "Modified" : "შეცვლილია" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/systemtags/l10n/ka_GE.json b/apps/systemtags/l10n/ka_GE.json index 7895041ae1f..49c6bdcfb81 100644 --- a/apps/systemtags/l10n/ka_GE.json +++ b/apps/systemtags/l10n/ka_GE.json @@ -52,5 +52,5 @@ "No entries found in this folder" : "ამ დირექტორიაში შენატანების მოძებნა ვერ მოხერხდა", "Size" : "ზომა", "Modified" : "შეცვლილია" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/lt_LT.js b/apps/systemtags/l10n/lt_LT.js index daf26d2c389..c3b6cfb84f1 100644 --- a/apps/systemtags/l10n/lt_LT.js +++ b/apps/systemtags/l10n/lt_LT.js @@ -55,4 +55,4 @@ OC.L10N.register( "Size" : "Dydis", "Modified" : "Pakeista" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/systemtags/l10n/lt_LT.json b/apps/systemtags/l10n/lt_LT.json index 37296ec4186..558915d60be 100644 --- a/apps/systemtags/l10n/lt_LT.json +++ b/apps/systemtags/l10n/lt_LT.json @@ -52,5 +52,5 @@ "No entries found in this folder" : "Nerasta įrašų šiame aplanke", "Size" : "Dydis", "Modified" : "Pakeista" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/sk.js b/apps/systemtags/l10n/sk.js index 77ddf39e4bb..e5add97c9fc 100644 --- a/apps/systemtags/l10n/sk.js +++ b/apps/systemtags/l10n/sk.js @@ -55,4 +55,4 @@ OC.L10N.register( "Size" : "Veľkosť", "Modified" : "Upravené" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/systemtags/l10n/sk.json b/apps/systemtags/l10n/sk.json index a4d4bb32264..43738ca3bca 100644 --- a/apps/systemtags/l10n/sk.json +++ b/apps/systemtags/l10n/sk.json @@ -52,5 +52,5 @@ "No entries found in this folder" : "V tomto priečinku sa nič nenašlo", "Size" : "Veľkosť", "Modified" : "Upravené" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/theming/css/settings-admin.scss b/apps/theming/css/settings-admin.scss index ceb560f0f02..7753540ccd2 100644 --- a/apps/theming/css/settings-admin.scss +++ b/apps/theming/css/settings-admin.scss @@ -28,7 +28,7 @@ visibility: hidden; } form.uploadButton { - width: 356px; + width: 411px; } form .theme-undo, .theme-remove-bg { @@ -46,13 +46,17 @@ input[type='text']:hover + .theme-undo, input[type='text'] + .theme-undo:hover, input[type='text']:focus + .theme-undo, - input[type='text']:active + .theme-undo { + input[type='text']:active + .theme-undo, + input[type='url']:hover + .theme-undo, + input[type='url'] + .theme-undo:hover, + input[type='url']:focus + .theme-undo, + input[type='url']:active + .theme-undo{ visibility: visible; } label span { display: inline-block; - min-width: 120px; + min-width: 175px; padding: 8px 0px; vertical-align: top; } @@ -88,7 +92,7 @@ background-size: cover; background-position: center center; text-align: center; - margin-left: 123px; + margin-left: 178px; margin-top: 10px; margin-bottom: 20px; cursor: pointer; @@ -117,4 +121,4 @@ background-repeat: no-repeat; background-size: contain; } -}
\ No newline at end of file +} diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js index 25ac092a964..76d9fb965ca 100644 --- a/apps/theming/js/settings-admin.js +++ b/apps/theming/js/settings-admin.js @@ -83,7 +83,8 @@ function hideUndoButton(setting, value) { url: 'https://nextcloud.com', color: '#0082c9', logoMime: '', - backgroundMime: '' + backgroundMime: '', + imprintUrl: '' }; if (value === themingDefaults[setting] || value === '') { @@ -175,7 +176,7 @@ $(document).ready(function () { var el = $(this); }); - $('#theming input[type=text]').change(function(e) { + function onChange(e) { var el = $(this); var setting = el.parent().find('div[data-setting]').data('setting'); var value = $(this).val(); @@ -186,14 +187,14 @@ $(document).ready(function () { } } if(setting === 'name') { - if(checkName()){ - $.when(el.focusout()).then(function() { - setThemingValue('name', value); - }); - if (e.keyCode == 13) { - setThemingValue('name', value); - } - } + if(checkName()){ + $.when(el.focusout()).then(function() { + setThemingValue('name', value); + }); + if (e.keyCode == 13) { + setThemingValue('name', value); + } + } } $.when(el.focusout()).then(function() { @@ -202,7 +203,10 @@ $(document).ready(function () { if (e.keyCode == 13) { setThemingValue(setting, value); } - }); + }; + + $('#theming input[type="text"]').change(onChange); + $('#theming input[type="url"]').change(onChange); $('.theme-undo').click(function (e) { var setting = $(this).data('setting'); diff --git a/apps/theming/l10n/af.js b/apps/theming/l10n/af.js index d0074943d6b..bdac2625c56 100644 --- a/apps/theming/l10n/af.js +++ b/apps/theming/l10n/af.js @@ -17,8 +17,6 @@ OC.L10N.register( "Unsupported image type" : "Onondersteunde beeldtipe", "Name" : "Naam", "Reset to default" : "Herstel na verstek", - "Web address" : "Webadres", - "Web address https://…" : "Webadres https://…", "Slogan" : "Slagspreuk", "Color" : "Kleur", "Logo" : "Logo", @@ -28,6 +26,8 @@ OC.L10N.register( "Remove background image" : "Verwyder agtergrondbeeld", "You are already using a custom theme" : "U gebruik reeds ’n pasgemaakte tema", "reset to default" : "herstel na verstek", + "Web address" : "Webadres", + "Web address https://…" : "Webadres https://…", "There is no error, the file uploaded with success" : "Geen fout is teëgekom nie, die lêer is met suksesvol opgelaai", "The uploaded file was only partially uploaded" : "Die opgelaaide lêer is slegs gedeeltelik opgelaai" }, diff --git a/apps/theming/l10n/af.json b/apps/theming/l10n/af.json index 2893d111ded..8bb6cbd6ae9 100644 --- a/apps/theming/l10n/af.json +++ b/apps/theming/l10n/af.json @@ -15,8 +15,6 @@ "Unsupported image type" : "Onondersteunde beeldtipe", "Name" : "Naam", "Reset to default" : "Herstel na verstek", - "Web address" : "Webadres", - "Web address https://…" : "Webadres https://…", "Slogan" : "Slagspreuk", "Color" : "Kleur", "Logo" : "Logo", @@ -26,6 +24,8 @@ "Remove background image" : "Verwyder agtergrondbeeld", "You are already using a custom theme" : "U gebruik reeds ’n pasgemaakte tema", "reset to default" : "herstel na verstek", + "Web address" : "Webadres", + "Web address https://…" : "Webadres https://…", "There is no error, the file uploaded with success" : "Geen fout is teëgekom nie, die lêer is met suksesvol opgelaai", "The uploaded file was only partially uploaded" : "Die opgelaaide lêer is slegs gedeeltelik opgelaai" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/theming/l10n/ar.js b/apps/theming/l10n/ar.js index ddf7b4c4558..ebd8140e2c8 100644 --- a/apps/theming/l10n/ar.js +++ b/apps/theming/l10n/ar.js @@ -17,8 +17,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "السمات تجعل من الممكن بسهولة تخصيص الشكل والمظهر لنموذجك ودعم العملاء. سيكون هذا مرئيا لجميع المستخدمين.", "Name" : "الاسم", "Reset to default" : "اعادة تعيين الافتراضيات", - "Web address" : "عنوان صفحة أنترنت", - "Web address https://…" : "عنوان صفحة أنترنت https://", "Slogan" : "شعار", "Color" : "لون", "Logo" : "العلامة", @@ -28,6 +26,8 @@ OC.L10N.register( "Remove background image" : "إزالة صورة الخلفية", "You are already using a custom theme" : "انت تستعمل قالب مخصص", "reset to default" : "إلغاء كل التغييرات", + "Web address" : "عنوان صفحة أنترنت", + "Web address https://…" : "عنوان صفحة أنترنت https://", "Failed to write file to disk." : "خطأ في الكتابة على القرص الصلب." }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/theming/l10n/ar.json b/apps/theming/l10n/ar.json index 16f3027613b..a76fee17652 100644 --- a/apps/theming/l10n/ar.json +++ b/apps/theming/l10n/ar.json @@ -15,8 +15,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "السمات تجعل من الممكن بسهولة تخصيص الشكل والمظهر لنموذجك ودعم العملاء. سيكون هذا مرئيا لجميع المستخدمين.", "Name" : "الاسم", "Reset to default" : "اعادة تعيين الافتراضيات", - "Web address" : "عنوان صفحة أنترنت", - "Web address https://…" : "عنوان صفحة أنترنت https://", "Slogan" : "شعار", "Color" : "لون", "Logo" : "العلامة", @@ -26,6 +24,8 @@ "Remove background image" : "إزالة صورة الخلفية", "You are already using a custom theme" : "انت تستعمل قالب مخصص", "reset to default" : "إلغاء كل التغييرات", + "Web address" : "عنوان صفحة أنترنت", + "Web address https://…" : "عنوان صفحة أنترنت https://", "Failed to write file to disk." : "خطأ في الكتابة على القرص الصلب." },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/theming/l10n/ca.js b/apps/theming/l10n/ca.js index 2e1b7f73bce..fb3147108b9 100644 --- a/apps/theming/l10n/ca.js +++ b/apps/theming/l10n/ca.js @@ -17,8 +17,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "La personalització permet canviar fàcilment l'aspecte de la vostra web i dels clients. Això serà visible per a tots els usuaris.", "Name" : "Nom", "Reset to default" : "Restablir al valor predeterminat", - "Web address" : "Adreça web", - "Web address https://…" : "Adreça del servidor https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotip", @@ -30,6 +28,8 @@ OC.L10N.register( "Upload new header logo" : "Pujar un nou logo de capçalera", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instal·la l'extensió Imagemagick per al PHP i es generarà automàticament un favicon a partir del logo i del color del tema.", "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat", - "reset to default" : "restablir a configuració predeterminada" + "reset to default" : "restablir a configuració predeterminada", + "Web address" : "Adreça web", + "Web address https://…" : "Adreça del servidor https://…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/ca.json b/apps/theming/l10n/ca.json index 062b7776248..88af2eafb6d 100644 --- a/apps/theming/l10n/ca.json +++ b/apps/theming/l10n/ca.json @@ -15,8 +15,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "La personalització permet canviar fàcilment l'aspecte de la vostra web i dels clients. Això serà visible per a tots els usuaris.", "Name" : "Nom", "Reset to default" : "Restablir al valor predeterminat", - "Web address" : "Adreça web", - "Web address https://…" : "Adreça del servidor https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotip", @@ -28,6 +26,8 @@ "Upload new header logo" : "Pujar un nou logo de capçalera", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instal·la l'extensió Imagemagick per al PHP i es generarà automàticament un favicon a partir del logo i del color del tema.", "You are already using a custom theme" : "Ja esteu utilitzant un tema personalitzat", - "reset to default" : "restablir a configuració predeterminada" + "reset to default" : "restablir a configuració predeterminada", + "Web address" : "Adreça web", + "Web address https://…" : "Adreça del servidor https://…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/cs.js b/apps/theming/l10n/cs.js index 3d56fef0d2e..19834d3bd4d 100644 --- a/apps/theming/l10n/cs.js +++ b/apps/theming/l10n/cs.js @@ -20,8 +20,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motivy umožňují jednoduché přizpůsobení vzhledu vaší instance a podporovaných klientů. Tato přizpůsobení uvidí všichni uživatelé.", "Name" : "Název", "Reset to default" : "Obnovit výchozí", - "Web address" : "Webová adresa", - "Web address https://…" : "Webová adresa https://", "Slogan" : "Slogan", "Color" : "Barva", "Logo" : "Logo", @@ -32,9 +30,11 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainstalujte rozšíření Imagemagick PHP s podporou obrázků SVG, které automaticky generuje favicony na základě nahraného loga a barvy.", "You are already using a custom theme" : "Již používáte vlastní motiv", "reset to default" : "obnovit výchozí", + "Web address" : "Webová adresa", + "Web address https://…" : "Webová adresa https://", "There is no error, the file uploaded with success" : "Nenastala žádná chyba, soubor byl úspěšně nahrán", "The uploaded file was only partially uploaded" : "Nahraný soubor byl nahrán pouze částečně", "Failed to write file to disk." : "Selhal zápis na disk", "A PHP extension stopped the file upload." : "Rozšíření PHP zastavilo nahrávání souboru." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/theming/l10n/cs.json b/apps/theming/l10n/cs.json index 6040528d3da..457cea2e15d 100644 --- a/apps/theming/l10n/cs.json +++ b/apps/theming/l10n/cs.json @@ -18,8 +18,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motivy umožňují jednoduché přizpůsobení vzhledu vaší instance a podporovaných klientů. Tato přizpůsobení uvidí všichni uživatelé.", "Name" : "Název", "Reset to default" : "Obnovit výchozí", - "Web address" : "Webová adresa", - "Web address https://…" : "Webová adresa https://", "Slogan" : "Slogan", "Color" : "Barva", "Logo" : "Logo", @@ -30,9 +28,11 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainstalujte rozšíření Imagemagick PHP s podporou obrázků SVG, které automaticky generuje favicony na základě nahraného loga a barvy.", "You are already using a custom theme" : "Již používáte vlastní motiv", "reset to default" : "obnovit výchozí", + "Web address" : "Webová adresa", + "Web address https://…" : "Webová adresa https://", "There is no error, the file uploaded with success" : "Nenastala žádná chyba, soubor byl úspěšně nahrán", "The uploaded file was only partially uploaded" : "Nahraný soubor byl nahrán pouze částečně", "Failed to write file to disk." : "Selhal zápis na disk", "A PHP extension stopped the file upload." : "Rozšíření PHP zastavilo nahrávání souboru." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/theming/l10n/da.js b/apps/theming/l10n/da.js index cd91d9ecde3..ddf2c1c2fc0 100644 --- a/apps/theming/l10n/da.js +++ b/apps/theming/l10n/da.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming gør det muligt nemt at tilpasse udseendet på din installation og understøttede klienter. Dette vil være synlig for alle brugere.", "Name" : "Navn", "Reset to default" : "Nulstil", - "Web address" : "Web adresse", - "Web address https://…" : "Web adresse http://...", "Slogan" : "Slogan", "Color" : "Farve", "Logo" : "Logo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installer Imagemagick PHP udvidelsen med SVG support for automatisk at genererer favikoner baseret på the uploadede logo og farver.", "You are already using a custom theme" : "Du bruger allerede et brugerdefineret tema", "reset to default" : "nulstil til standardindstillinger ", + "Web address" : "Web adresse", + "Web address https://…" : "Web adresse http://...", "There is no error, the file uploaded with success" : "Der skete ingen fejl, filen blev succesfuldt uploadet", "The uploaded file was only partially uploaded" : "Filen blev kun delvist uploadet.", "Failed to write file to disk." : "Fejl ved skrivning af fil til disk.", diff --git a/apps/theming/l10n/da.json b/apps/theming/l10n/da.json index 9d6035c748f..ad2d187693e 100644 --- a/apps/theming/l10n/da.json +++ b/apps/theming/l10n/da.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming gør det muligt nemt at tilpasse udseendet på din installation og understøttede klienter. Dette vil være synlig for alle brugere.", "Name" : "Navn", "Reset to default" : "Nulstil", - "Web address" : "Web adresse", - "Web address https://…" : "Web adresse http://...", "Slogan" : "Slogan", "Color" : "Farve", "Logo" : "Logo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installer Imagemagick PHP udvidelsen med SVG support for automatisk at genererer favikoner baseret på the uploadede logo og farver.", "You are already using a custom theme" : "Du bruger allerede et brugerdefineret tema", "reset to default" : "nulstil til standardindstillinger ", + "Web address" : "Web adresse", + "Web address https://…" : "Web adresse http://...", "There is no error, the file uploaded with success" : "Der skete ingen fejl, filen blev succesfuldt uploadet", "The uploaded file was only partially uploaded" : "Filen blev kun delvist uploadet.", "Failed to write file to disk." : "Fejl ved skrivning af fil til disk.", diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js index d9a7bbf84ae..b88e36b1e50 100644 --- a/apps/theming/l10n/de.js +++ b/apps/theming/l10n/de.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Der Name darf nicht leer sein", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", + "The given legal notice address is too long" : "Die im Impressum angegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", "The file was uploaded" : "Die Datei wurde hochgeladen", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Theme. Eine App für Themes würde dies überschreiben.", "Theming" : "Theming", + "Legal notice" : "Impressum", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "Reset to default" : " Auf Standard zurücksetzen ", - "Web address" : "Internetadresse", - "Web address https://…" : "Internetadresse https://…", + "Web link" : "Internet-Link", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Farbe", "Logo" : "Logo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", "Remove background image" : "Entferne Hintergrundbild", "Advanced options" : "Erweiterte Optionen", + "Legal notice link" : "Link zu Impressum", "Header logo" : "Kopfbereich-Logo", "Upload new header logo" : "Neues Kopfbereich-Logo hochladen", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favoriten-Icons auf Basis des hochgeladenen Icons und der Farbe zu erstellen.", "You are already using a custom theme" : "Du benutzt bereits ein eigenes Thema", "reset to default" : "Auf Standard zurücksetzen", + "Web address" : "Internetadresse", + "Web address https://…" : "Internetadresse https://…", "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json index 385acc7257a..2fa61c8b67d 100644 --- a/apps/theming/l10n/de.json +++ b/apps/theming/l10n/de.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Der Name darf nicht leer sein", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", + "The given legal notice address is too long" : "Die im Impressum angegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", "The file was uploaded" : "Die Datei wurde hochgeladen", @@ -20,11 +21,12 @@ "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Theme. Eine App für Themes würde dies überschreiben.", "Theming" : "Theming", + "Legal notice" : "Impressum", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "Reset to default" : " Auf Standard zurücksetzen ", - "Web address" : "Internetadresse", - "Web address https://…" : "Internetadresse https://…", + "Web link" : "Internet-Link", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Farbe", "Logo" : "Logo", @@ -33,6 +35,7 @@ "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", "Remove background image" : "Entferne Hintergrundbild", "Advanced options" : "Erweiterte Optionen", + "Legal notice link" : "Link zu Impressum", "Header logo" : "Kopfbereich-Logo", "Upload new header logo" : "Neues Kopfbereich-Logo hochladen", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favoriten-Icons auf Basis des hochgeladenen Icons und der Farbe zu erstellen.", "You are already using a custom theme" : "Du benutzt bereits ein eigenes Thema", "reset to default" : "Auf Standard zurücksetzen", + "Web address" : "Internetadresse", + "Web address https://…" : "Internetadresse https://…", "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", diff --git a/apps/theming/l10n/de_DE.js b/apps/theming/l10n/de_DE.js index 027bf5f097f..f6b6b2909e1 100644 --- a/apps/theming/l10n/de_DE.js +++ b/apps/theming/l10n/de_DE.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Der Name darf nicht leer sein", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", + "The given legal notice address is too long" : "Die im Impressum angegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", "The file was uploaded" : "Die Datei wurde hochgeladen", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Sie benutzen bereits ein benutzerdefiniertes Theme. Eine App für Themes würde dies überschreiben.", "Theming" : "Theming", + "Legal notice" : "Impressum", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Ihrer Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "Reset to default" : " Auf Standard zurücksetzen ", - "Web address" : "Internetadresse", - "Web address https://…" : "Internetadresse https://…", + "Web link" : "Internetseite", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Farbe", "Logo" : "Logo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", "Remove background image" : "Entferne Hintergrundbild", "Advanced options" : "Erweiterte Optionen", + "Legal notice link" : "Link zu Impressum", "Header logo" : "Kopfbereich-Logo", "Upload new header logo" : "Neues Kopfbereich-Logo hochladen", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installieren Sie die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favoriten-Icons auf Basis des hochgeladenen Icons und der Farbe zu erstellen.", "You are already using a custom theme" : "Sie benutzen bereits ein eigenes Thema", "reset to default" : "Auf Standard zurücksetzen", + "Web address" : "Internetadresse", + "Web address https://…" : "Internetadresse https://…", "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", diff --git a/apps/theming/l10n/de_DE.json b/apps/theming/l10n/de_DE.json index b1447a15498..96abc2fc740 100644 --- a/apps/theming/l10n/de_DE.json +++ b/apps/theming/l10n/de_DE.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Der Name darf nicht leer sein", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", + "The given legal notice address is too long" : "Die im Impressum angegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", "The file was uploaded" : "Die Datei wurde hochgeladen", @@ -20,11 +21,12 @@ "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Sie benutzen bereits ein benutzerdefiniertes Theme. Eine App für Themes würde dies überschreiben.", "Theming" : "Theming", + "Legal notice" : "Impressum", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Ihrer Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "Reset to default" : " Auf Standard zurücksetzen ", - "Web address" : "Internetadresse", - "Web address https://…" : "Internetadresse https://…", + "Web link" : "Internetseite", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Farbe", "Logo" : "Logo", @@ -33,6 +35,7 @@ "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", "Remove background image" : "Entferne Hintergrundbild", "Advanced options" : "Erweiterte Optionen", + "Legal notice link" : "Link zu Impressum", "Header logo" : "Kopfbereich-Logo", "Upload new header logo" : "Neues Kopfbereich-Logo hochladen", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installieren Sie die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favoriten-Icons auf Basis des hochgeladenen Icons und der Farbe zu erstellen.", "You are already using a custom theme" : "Sie benutzen bereits ein eigenes Thema", "reset to default" : "Auf Standard zurücksetzen", + "Web address" : "Internetadresse", + "Web address https://…" : "Internetadresse https://…", "There is no error, the file uploaded with success" : "Es ist kein Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.", "The uploaded file was only partially uploaded" : "Die Datei konnte nur teilweise übertragen werden", "Failed to write file to disk." : "Fehler beim Schreiben der Datei auf die Festplatte.", diff --git a/apps/theming/l10n/el.js b/apps/theming/l10n/el.js index 0934e6923d5..3913562af57 100644 --- a/apps/theming/l10n/el.js +++ b/apps/theming/l10n/el.js @@ -23,8 +23,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Η προσαρμογή θέματος καθιστά δυνατή την εύκολη προσαρμογή της εμφάνισης της εμφάνισης της εγκατάστασής σας καθώς και των υποστηριζόμενων πελατών. Αυτή θα είναι ορατή για όλους τους χρήστες.", "Name" : "Όνομα", "Reset to default" : "Επαναφορά στα προεπιλεγμένα", - "Web address" : "Διεύθυση ιστοσελίδας", - "Web address https://…" : "Διεύθυνση ιστοσελίδας https://...", "Slogan" : "Ρητό", "Color" : "Χρώμα", "Logo" : "Λογότυπο", @@ -35,6 +33,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα.", "You are already using a custom theme" : "Χρησιμοποιείτε ήδη προσαρμοσμένο θέμα", "reset to default" : "επαναφορά στα προεπιλεγμένα", + "Web address" : "Διεύθυση ιστοσελίδας", + "Web address https://…" : "Διεύθυνση ιστοσελίδας https://...", "There is no error, the file uploaded with success" : "Δεν υπάρχει σφάλμα, το αρχείο μεταφορτώθηκε με επιτυχία", "The uploaded file was only partially uploaded" : "Το μεταφορτωμένο αρχείο μεταφορτώθηκε εν μέρει", "Failed to write file to disk." : "Αποτυχία εγγραφής αρχείου στο δίσκο.", diff --git a/apps/theming/l10n/el.json b/apps/theming/l10n/el.json index 18f5379e13d..91f6661e015 100644 --- a/apps/theming/l10n/el.json +++ b/apps/theming/l10n/el.json @@ -21,8 +21,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Η προσαρμογή θέματος καθιστά δυνατή την εύκολη προσαρμογή της εμφάνισης της εμφάνισης της εγκατάστασής σας καθώς και των υποστηριζόμενων πελατών. Αυτή θα είναι ορατή για όλους τους χρήστες.", "Name" : "Όνομα", "Reset to default" : "Επαναφορά στα προεπιλεγμένα", - "Web address" : "Διεύθυση ιστοσελίδας", - "Web address https://…" : "Διεύθυνση ιστοσελίδας https://...", "Slogan" : "Ρητό", "Color" : "Χρώμα", "Logo" : "Λογότυπο", @@ -33,6 +31,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα.", "You are already using a custom theme" : "Χρησιμοποιείτε ήδη προσαρμοσμένο θέμα", "reset to default" : "επαναφορά στα προεπιλεγμένα", + "Web address" : "Διεύθυση ιστοσελίδας", + "Web address https://…" : "Διεύθυνση ιστοσελίδας https://...", "There is no error, the file uploaded with success" : "Δεν υπάρχει σφάλμα, το αρχείο μεταφορτώθηκε με επιτυχία", "The uploaded file was only partially uploaded" : "Το μεταφορτωμένο αρχείο μεταφορτώθηκε εν μέρει", "Failed to write file to disk." : "Αποτυχία εγγραφής αρχείου στο δίσκο.", diff --git a/apps/theming/l10n/en_GB.js b/apps/theming/l10n/en_GB.js index 0e58e3c9bec..e6115185166 100644 --- a/apps/theming/l10n/en_GB.js +++ b/apps/theming/l10n/en_GB.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Name cannot be empty", "The given name is too long" : "The given name is too long", "The given web address is too long" : "The given web address is too long", + "The given legal notice address is too long" : "The given legal notice address is too long", "The given slogan is too long" : "The given slogan is too long", "The given color is invalid" : "The given colour is invalid", "The file was uploaded" : "The file was uploaded", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Unsupported image type", "You are already using a custom theme. Theming app settings might be overwritten by that." : "You are already using a custom theme. Theming app settings might be overwritten by that.", "Theming" : "Theming", + "Legal notice" : "Legal notice", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming makes it possible to easily customise the look and feel of your instance and supported clients. This will be visible for all users.", "Name" : "Name", "Reset to default" : "Reset to default", - "Web address" : "Web address", - "Web address https://…" : "Web address https://…", + "Web link" : "Web link", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Colour", "Logo" : "Logo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Upload new login background", "Remove background image" : "Remove background image", "Advanced options" : "Advanced options", + "Legal notice link" : "Legal notice link", "Header logo" : "Header logo", "Upload new header logo" : "Upload new header logo", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.", "You are already using a custom theme" : "You are already using a custom theme", "reset to default" : "reset to default", + "Web address" : "Web address", + "Web address https://…" : "Web address https://…", "There is no error, the file uploaded with success" : "There is no error, the file uploaded with success", "The uploaded file was only partially uploaded" : "The uploaded file was only partially uploaded", "Failed to write file to disk." : "Failed to write file to disk.", diff --git a/apps/theming/l10n/en_GB.json b/apps/theming/l10n/en_GB.json index cdbeae24019..a11008ebcd0 100644 --- a/apps/theming/l10n/en_GB.json +++ b/apps/theming/l10n/en_GB.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Name cannot be empty", "The given name is too long" : "The given name is too long", "The given web address is too long" : "The given web address is too long", + "The given legal notice address is too long" : "The given legal notice address is too long", "The given slogan is too long" : "The given slogan is too long", "The given color is invalid" : "The given colour is invalid", "The file was uploaded" : "The file was uploaded", @@ -20,11 +21,12 @@ "Unsupported image type" : "Unsupported image type", "You are already using a custom theme. Theming app settings might be overwritten by that." : "You are already using a custom theme. Theming app settings might be overwritten by that.", "Theming" : "Theming", + "Legal notice" : "Legal notice", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming makes it possible to easily customise the look and feel of your instance and supported clients. This will be visible for all users.", "Name" : "Name", "Reset to default" : "Reset to default", - "Web address" : "Web address", - "Web address https://…" : "Web address https://…", + "Web link" : "Web link", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Colour", "Logo" : "Logo", @@ -33,6 +35,7 @@ "Upload new login background" : "Upload new login background", "Remove background image" : "Remove background image", "Advanced options" : "Advanced options", + "Legal notice link" : "Legal notice link", "Header logo" : "Header logo", "Upload new header logo" : "Upload new header logo", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.", "You are already using a custom theme" : "You are already using a custom theme", "reset to default" : "reset to default", + "Web address" : "Web address", + "Web address https://…" : "Web address https://…", "There is no error, the file uploaded with success" : "There is no error, the file uploaded with success", "The uploaded file was only partially uploaded" : "The uploaded file was only partially uploaded", "Failed to write file to disk." : "Failed to write file to disk.", diff --git a/apps/theming/l10n/es.js b/apps/theming/l10n/es.js index 5302be90106..df7289023ce 100644 --- a/apps/theming/l10n/es.js +++ b/apps/theming/l10n/es.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "El nombre no puede estar vacío", "The given name is too long" : "El nombre provisto es demasiado largo", "The given web address is too long" : "La dirección provista es demasiado larga", + "The given legal notice address is too long" : "El aviso legal dado es demasiado largo", "The given slogan is too long" : "El eslogan provisto es demasiado largo", "The given color is invalid" : "El color provisto es inválido", "The file was uploaded" : "Se ha subido el archivo", @@ -22,11 +23,11 @@ OC.L10N.register( "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya estás usando un tema personalizado. La configuración de la aplicación de temas puede ser sobrescrita por el.", "Theming" : "Tema", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Los temas hacen posible personalizar fácilmente la apariencia de tu instancia y los clientes soportados. Esto será visible para todos los usuarios.", "Name" : "Nombre", "Reset to default" : "Vovler a configuración por defecto", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://", + "Web link" : "Enlace web", "Slogan" : "Eslogan", "Color" : "Color", "Logo" : "Logo", @@ -35,6 +36,7 @@ OC.L10N.register( "Upload new login background" : "Subir una nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", "Header logo" : "Logo de la cabecera", "Upload new header logo" : "Subir nuevo logo de la cabecera", "Favicon" : "Favicon", @@ -42,6 +44,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión de PHP Imagemagick con soporte para imágenes SVG para generar automáticamente faviconos basados en el logo y color subidos.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a configuración inicial", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://", "There is no error, the file uploaded with success" : "No ha habido errores, el archivo ha subido satisfactoriamente", "The uploaded file was only partially uploaded" : "El archivo para subir ha sido solo parcialmente subido", "Failed to write file to disk." : "Fallo al escribir el archivo al disco.", diff --git a/apps/theming/l10n/es.json b/apps/theming/l10n/es.json index 4e084f562d8..1004a85230a 100644 --- a/apps/theming/l10n/es.json +++ b/apps/theming/l10n/es.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "El nombre no puede estar vacío", "The given name is too long" : "El nombre provisto es demasiado largo", "The given web address is too long" : "La dirección provista es demasiado larga", + "The given legal notice address is too long" : "El aviso legal dado es demasiado largo", "The given slogan is too long" : "El eslogan provisto es demasiado largo", "The given color is invalid" : "El color provisto es inválido", "The file was uploaded" : "Se ha subido el archivo", @@ -20,11 +21,11 @@ "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya estás usando un tema personalizado. La configuración de la aplicación de temas puede ser sobrescrita por el.", "Theming" : "Tema", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Los temas hacen posible personalizar fácilmente la apariencia de tu instancia y los clientes soportados. Esto será visible para todos los usuarios.", "Name" : "Nombre", "Reset to default" : "Vovler a configuración por defecto", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://", + "Web link" : "Enlace web", "Slogan" : "Eslogan", "Color" : "Color", "Logo" : "Logo", @@ -33,6 +34,7 @@ "Upload new login background" : "Subir una nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", "Header logo" : "Logo de la cabecera", "Upload new header logo" : "Subir nuevo logo de la cabecera", "Favicon" : "Favicon", @@ -40,6 +42,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión de PHP Imagemagick con soporte para imágenes SVG para generar automáticamente faviconos basados en el logo y color subidos.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a configuración inicial", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://", "There is no error, the file uploaded with success" : "No ha habido errores, el archivo ha subido satisfactoriamente", "The uploaded file was only partially uploaded" : "El archivo para subir ha sido solo parcialmente subido", "Failed to write file to disk." : "Fallo al escribir el archivo al disco.", diff --git a/apps/theming/l10n/es_419.js b/apps/theming/l10n/es_419.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_419.js +++ b/apps/theming/l10n/es_419.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_419.json b/apps/theming/l10n/es_419.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_419.json +++ b/apps/theming/l10n/es_419.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_AR.js b/apps/theming/l10n/es_AR.js index 45ad11b077e..bf7a8a39246 100644 --- a/apps/theming/l10n/es_AR.js +++ b/apps/theming/l10n/es_AR.js @@ -15,8 +15,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve su instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -25,6 +23,8 @@ OC.L10N.register( "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "You are already using a custom theme" : "Usted ya se encuentra usando un tema personalizado", - "reset to default" : "restaurar a predeterminado" + "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://..." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/es_AR.json b/apps/theming/l10n/es_AR.json index fca7aff2c2e..c48cf478e6d 100644 --- a/apps/theming/l10n/es_AR.json +++ b/apps/theming/l10n/es_AR.json @@ -13,8 +13,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve su instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -23,6 +21,8 @@ "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "You are already using a custom theme" : "Usted ya se encuentra usando un tema personalizado", - "reset to default" : "restaurar a predeterminado" + "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://..." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/es_CL.js b/apps/theming/l10n/es_CL.js index a5c28e1ee77..869dd66510c 100644 --- a/apps/theming/l10n/es_CL.js +++ b/apps/theming/l10n/es_CL.js @@ -5,22 +5,30 @@ OC.L10N.register( "Saved" : "Guardado", "Admin" : "Administración", "a safe home for all your data" : "un lugar seguro para todos tus datos", + "Name cannot be empty" : "El nombre no puede estar en blanco", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given legal notice address is too long" : "La dirección del aviso legal es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", + "The file was uploaded" : "El archivo fue cargado", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo cargado excede el valor establecido en la directiva upload_max_filesize en el archivo php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo cargado excede el valor especificado de la directiva MAX_FILE_SIZE en la forma de HTML", + "The file was only partially uploaded" : "El archivo sólo fue cargado parcialmente", "No file was uploaded" : "No se cargó el archivo", "Missing a temporary folder" : "Falta una carpeta temporal", + "Could not write file to disk" : "No fue posible escribir a disco", + "A PHP extension stopped the file upload" : "Una extensión de PHP detuvo la carga del archivo", "No file uploaded" : "No hay archivos cargados", "Unsupported image type" : "Tipo de imagen no soportado", + "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya te encuentras usando un tema personalizado. La aplicación de Temas puede estar siendo sobreescrita por él.", "Theming" : "Tematizar", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", + "Web link" : "Enlace web", + "https://…" : "https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -28,9 +36,17 @@ OC.L10N.register( "Login image" : "Imágen de inicio de sesión", "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", + "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", + "Header logo" : "Logo del encabezado", + "Upload new header logo" : "Cargar un nuevo logotipo del encabezado", + "Favicon" : "Favicon", + "Upload new favicon" : "Cargar un nuevo favicon", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_CL.json b/apps/theming/l10n/es_CL.json index 6099c9a9c1e..6010e0d8819 100644 --- a/apps/theming/l10n/es_CL.json +++ b/apps/theming/l10n/es_CL.json @@ -3,22 +3,30 @@ "Saved" : "Guardado", "Admin" : "Administración", "a safe home for all your data" : "un lugar seguro para todos tus datos", + "Name cannot be empty" : "El nombre no puede estar en blanco", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given legal notice address is too long" : "La dirección del aviso legal es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", + "The file was uploaded" : "El archivo fue cargado", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo cargado excede el valor establecido en la directiva upload_max_filesize en el archivo php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo cargado excede el valor especificado de la directiva MAX_FILE_SIZE en la forma de HTML", + "The file was only partially uploaded" : "El archivo sólo fue cargado parcialmente", "No file was uploaded" : "No se cargó el archivo", "Missing a temporary folder" : "Falta una carpeta temporal", + "Could not write file to disk" : "No fue posible escribir a disco", + "A PHP extension stopped the file upload" : "Una extensión de PHP detuvo la carga del archivo", "No file uploaded" : "No hay archivos cargados", "Unsupported image type" : "Tipo de imagen no soportado", + "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya te encuentras usando un tema personalizado. La aplicación de Temas puede estar siendo sobreescrita por él.", "Theming" : "Tematizar", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", + "Web link" : "Enlace web", + "https://…" : "https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -26,9 +34,17 @@ "Login image" : "Imágen de inicio de sesión", "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", + "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", + "Header logo" : "Logo del encabezado", + "Upload new header logo" : "Cargar un nuevo logotipo del encabezado", + "Favicon" : "Favicon", + "Upload new favicon" : "Cargar un nuevo favicon", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_CO.js b/apps/theming/l10n/es_CO.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_CO.js +++ b/apps/theming/l10n/es_CO.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_CO.json b/apps/theming/l10n/es_CO.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_CO.json +++ b/apps/theming/l10n/es_CO.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_CR.js b/apps/theming/l10n/es_CR.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_CR.js +++ b/apps/theming/l10n/es_CR.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_CR.json b/apps/theming/l10n/es_CR.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_CR.json +++ b/apps/theming/l10n/es_CR.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_DO.js b/apps/theming/l10n/es_DO.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_DO.js +++ b/apps/theming/l10n/es_DO.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_DO.json b/apps/theming/l10n/es_DO.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_DO.json +++ b/apps/theming/l10n/es_DO.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_EC.js b/apps/theming/l10n/es_EC.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_EC.js +++ b/apps/theming/l10n/es_EC.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_EC.json b/apps/theming/l10n/es_EC.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_EC.json +++ b/apps/theming/l10n/es_EC.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_GT.js b/apps/theming/l10n/es_GT.js index bee78be90cc..869dd66510c 100644 --- a/apps/theming/l10n/es_GT.js +++ b/apps/theming/l10n/es_GT.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "El nombre no puede estar en blanco", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given legal notice address is too long" : "La dirección del aviso legal es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", "The file was uploaded" : "El archivo fue cargado", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya te encuentras usando un tema personalizado. La aplicación de Temas puede estar siendo sobreescrita por él.", "Theming" : "Tematizar", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", + "Web link" : "Enlace web", + "https://…" : "https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", "Header logo" : "Logo del encabezado", "Upload new header logo" : "Cargar un nuevo logotipo del encabezado", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_GT.json b/apps/theming/l10n/es_GT.json index 84e7927dda8..6010e0d8819 100644 --- a/apps/theming/l10n/es_GT.json +++ b/apps/theming/l10n/es_GT.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "El nombre no puede estar en blanco", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given legal notice address is too long" : "La dirección del aviso legal es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", "The file was uploaded" : "El archivo fue cargado", @@ -20,11 +21,12 @@ "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya te encuentras usando un tema personalizado. La aplicación de Temas puede estar siendo sobreescrita por él.", "Theming" : "Tematizar", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", + "Web link" : "Enlace web", + "https://…" : "https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -33,6 +35,7 @@ "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", "Header logo" : "Logo del encabezado", "Upload new header logo" : "Cargar un nuevo logotipo del encabezado", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_HN.js b/apps/theming/l10n/es_HN.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_HN.js +++ b/apps/theming/l10n/es_HN.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_HN.json b/apps/theming/l10n/es_HN.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_HN.json +++ b/apps/theming/l10n/es_HN.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_MX.js b/apps/theming/l10n/es_MX.js index bee78be90cc..869dd66510c 100644 --- a/apps/theming/l10n/es_MX.js +++ b/apps/theming/l10n/es_MX.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "El nombre no puede estar en blanco", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given legal notice address is too long" : "La dirección del aviso legal es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", "The file was uploaded" : "El archivo fue cargado", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya te encuentras usando un tema personalizado. La aplicación de Temas puede estar siendo sobreescrita por él.", "Theming" : "Tematizar", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", + "Web link" : "Enlace web", + "https://…" : "https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", "Header logo" : "Logo del encabezado", "Upload new header logo" : "Cargar un nuevo logotipo del encabezado", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_MX.json b/apps/theming/l10n/es_MX.json index 84e7927dda8..6010e0d8819 100644 --- a/apps/theming/l10n/es_MX.json +++ b/apps/theming/l10n/es_MX.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "El nombre no puede estar en blanco", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given legal notice address is too long" : "La dirección del aviso legal es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", "The file was uploaded" : "El archivo fue cargado", @@ -20,11 +21,12 @@ "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Ya te encuentras usando un tema personalizado. La aplicación de Temas puede estar siendo sobreescrita por él.", "Theming" : "Tematizar", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", + "Web link" : "Enlace web", + "https://…" : "https://…", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -33,6 +35,7 @@ "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", "Remove background image" : "Eliminar imagen de fondo", "Advanced options" : "Opciones avanzadas", + "Legal notice link" : "Enlace al aviso legal", "Header logo" : "Logo del encabezado", "Upload new header logo" : "Cargar un nuevo logotipo del encabezado", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_NI.js b/apps/theming/l10n/es_NI.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_NI.js +++ b/apps/theming/l10n/es_NI.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_NI.json b/apps/theming/l10n/es_NI.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_NI.json +++ b/apps/theming/l10n/es_NI.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PA.js b/apps/theming/l10n/es_PA.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_PA.js +++ b/apps/theming/l10n/es_PA.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PA.json b/apps/theming/l10n/es_PA.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_PA.json +++ b/apps/theming/l10n/es_PA.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PE.js b/apps/theming/l10n/es_PE.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_PE.js +++ b/apps/theming/l10n/es_PE.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PE.json b/apps/theming/l10n/es_PE.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_PE.json +++ b/apps/theming/l10n/es_PE.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PR.js b/apps/theming/l10n/es_PR.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_PR.js +++ b/apps/theming/l10n/es_PR.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PR.json b/apps/theming/l10n/es_PR.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_PR.json +++ b/apps/theming/l10n/es_PR.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PY.js b/apps/theming/l10n/es_PY.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_PY.js +++ b/apps/theming/l10n/es_PY.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_PY.json b/apps/theming/l10n/es_PY.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_PY.json +++ b/apps/theming/l10n/es_PY.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_SV.js b/apps/theming/l10n/es_SV.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_SV.js +++ b/apps/theming/l10n/es_SV.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_SV.json b/apps/theming/l10n/es_SV.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_SV.json +++ b/apps/theming/l10n/es_SV.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_UY.js b/apps/theming/l10n/es_UY.js index a5c28e1ee77..0a0aba96e9c 100644 --- a/apps/theming/l10n/es_UY.js +++ b/apps/theming/l10n/es_UY.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/es_UY.json b/apps/theming/l10n/es_UY.json index 6099c9a9c1e..46e1f477bd7 100644 --- a/apps/theming/l10n/es_UY.json +++ b/apps/theming/l10n/es_UY.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve tu instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "Reset to default" : "Restablecer al predeterminado", - "Web address" : "Dirección web", - "Web address https://…" : "Dirección web https://...", "Slogan" : "Lema", "Color" : "Color", "Logo" : "Logotipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color.", "You are already using a custom theme" : "Ya estás usando un tema personalizado", "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", "There is no error, the file uploaded with success" : "No hay errores, el archivo se cargó exitosamente", "The uploaded file was only partially uploaded" : "La carga del archivo solo se realizó parcialmente", "Failed to write file to disk." : "Se presentó una falla al escribir el archivo en el disco. ", diff --git a/apps/theming/l10n/et_EE.js b/apps/theming/l10n/et_EE.js index 4b7474b6675..eb36d1e788f 100644 --- a/apps/theming/l10n/et_EE.js +++ b/apps/theming/l10n/et_EE.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teemad võimaldavad lihtsalt serveriinstantsi ja toetatud klientide välimus muuta. See on näha kõigile kasutajatele.", "Name" : "Nimi", "Reset to default" : "Taasta vaikeseaded", - "Web address" : "Veebiaadress", - "Web address https://…" : "Veebiaadress https://...", "Slogan" : "Tunnuslause", "Color" : "Värv", "Logo" : "Logo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Paigalda Imagemagick PHP laiendus SVG piltide toega, et üleslaetud logo ja värvi põhjal automaatselt faviconid genereerida. ", "You are already using a custom theme" : "Kohandatud teema on juba kasutusel", "reset to default" : "taasta vaikeseaded", + "Web address" : "Veebiaadress", + "Web address https://…" : "Veebiaadress https://...", "There is no error, the file uploaded with success" : "Vigu pole, fail laetu edukalt üles", "The uploaded file was only partially uploaded" : "Üleslatud fail laeti üles ainult osaliselt", "Failed to write file to disk." : "Faili kettale kirjutamine ebaõnnestus.", diff --git a/apps/theming/l10n/et_EE.json b/apps/theming/l10n/et_EE.json index f8d45cd2e7b..93d51928914 100644 --- a/apps/theming/l10n/et_EE.json +++ b/apps/theming/l10n/et_EE.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teemad võimaldavad lihtsalt serveriinstantsi ja toetatud klientide välimus muuta. See on näha kõigile kasutajatele.", "Name" : "Nimi", "Reset to default" : "Taasta vaikeseaded", - "Web address" : "Veebiaadress", - "Web address https://…" : "Veebiaadress https://...", "Slogan" : "Tunnuslause", "Color" : "Värv", "Logo" : "Logo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Paigalda Imagemagick PHP laiendus SVG piltide toega, et üleslaetud logo ja värvi põhjal automaatselt faviconid genereerida. ", "You are already using a custom theme" : "Kohandatud teema on juba kasutusel", "reset to default" : "taasta vaikeseaded", + "Web address" : "Veebiaadress", + "Web address https://…" : "Veebiaadress https://...", "There is no error, the file uploaded with success" : "Vigu pole, fail laetu edukalt üles", "The uploaded file was only partially uploaded" : "Üleslatud fail laeti üles ainult osaliselt", "Failed to write file to disk." : "Faili kettale kirjutamine ebaõnnestus.", diff --git a/apps/theming/l10n/fi.js b/apps/theming/l10n/fi.js index 45f5035ca50..285554ccfa2 100644 --- a/apps/theming/l10n/fi.js +++ b/apps/theming/l10n/fi.js @@ -23,8 +23,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teeman avulla voit helposti kustomoida web-käyttöliittymän ja tuettujen sovelluksien ulkonäköä ja tuntumaa. Teema näkyy kaikille käyttäjille.", "Name" : "Nimi", "Reset to default" : "Palauta oletukseksi", - "Web address" : "Verkko-osoite", - "Web address https://…" : "Verkko-osoite https://…", "Slogan" : "Slogani", "Color" : "Väri", "Logo" : "Logo", @@ -39,6 +37,8 @@ OC.L10N.register( "Upload new favicon" : "Lähetä uusi favicon", "You are already using a custom theme" : "Käytät jo kustomoitua ulkoasua", "reset to default" : "palauta oletukseksi", + "Web address" : "Verkko-osoite", + "Web address https://…" : "Verkko-osoite https://…", "There is no error, the file uploaded with success" : "Ei virhettä, tiedosto lähetettiin onnistuneesti", "The uploaded file was only partially uploaded" : "Lähetetty tiedosto lähetettiin vain osittain", "Failed to write file to disk." : "Levylle kirjoittaminen epäonnistui.", diff --git a/apps/theming/l10n/fi.json b/apps/theming/l10n/fi.json index e74c8b008c6..b3a939392bb 100644 --- a/apps/theming/l10n/fi.json +++ b/apps/theming/l10n/fi.json @@ -21,8 +21,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teeman avulla voit helposti kustomoida web-käyttöliittymän ja tuettujen sovelluksien ulkonäköä ja tuntumaa. Teema näkyy kaikille käyttäjille.", "Name" : "Nimi", "Reset to default" : "Palauta oletukseksi", - "Web address" : "Verkko-osoite", - "Web address https://…" : "Verkko-osoite https://…", "Slogan" : "Slogani", "Color" : "Väri", "Logo" : "Logo", @@ -37,6 +35,8 @@ "Upload new favicon" : "Lähetä uusi favicon", "You are already using a custom theme" : "Käytät jo kustomoitua ulkoasua", "reset to default" : "palauta oletukseksi", + "Web address" : "Verkko-osoite", + "Web address https://…" : "Verkko-osoite https://…", "There is no error, the file uploaded with success" : "Ei virhettä, tiedosto lähetettiin onnistuneesti", "The uploaded file was only partially uploaded" : "Lähetetty tiedosto lähetettiin vain osittain", "Failed to write file to disk." : "Levylle kirjoittaminen epäonnistui.", diff --git a/apps/theming/l10n/fr.js b/apps/theming/l10n/fr.js index e920df1becb..b90ae2bbb6a 100644 --- a/apps/theming/l10n/fr.js +++ b/apps/theming/l10n/fr.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Le nom ne peut pas être vide", "The given name is too long" : "Le nom donné est trop long", "The given web address is too long" : "L'adresse web donnée est trop longue", + "The given legal notice address is too long" : "L'adresse de la notice légale donnée est trop longue", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", "The file was uploaded" : "Le fichier a été téléversé", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Ce type d'image n'est pas pris en charge", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Vous utilisez déjà un thème personnalisé. Les paramètres de l'application Theming peuvent être remplacés par ceux-ci.", "Theming" : "Personnaliser l'apparence", + "Legal notice" : "Notice légale", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Cette extension permet de personnaliser facilement l'apparence de votre instance et des clients supportés. La personnalisation de l'apparence sera visible par tous les utilisateurs.", "Name" : "Nom", "Reset to default" : "Restaurer les valeurs par défaut", - "Web address" : "Adresse web", - "Web address https://…" : "Adresse du serveur https://…", + "Web link" : "Lien web", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Couleur", "Logo" : "Logo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Téléverser un nouvel arrière-plan de connexion", "Remove background image" : "Supprimer l'image en arrière-plan", "Advanced options" : "Options avancées", + "Legal notice link" : "Lien de la notice légale", "Header logo" : "Logo d'en-tête", "Upload new header logo" : "Téléverser un nouveau logo d'en-tête", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installez l'extension PHP Imagemagick avec le support pour les images SVG afin de générer automatiquement les favicons sur base du logo téléversé et de la couleur.", "You are already using a custom theme" : "Vous utilisez déjà un thème personnalisé", "reset to default" : "Restaurer les valeurs par défaut", + "Web address" : "Adresse web", + "Web address https://…" : "Adresse du serveur https://…", "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été téléversé avec succès", "The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement téléversé", "Failed to write file to disk." : "Erreur d'écriture du fichier sur le disque.", diff --git a/apps/theming/l10n/fr.json b/apps/theming/l10n/fr.json index 4501667ef8d..d427cdd4a1c 100644 --- a/apps/theming/l10n/fr.json +++ b/apps/theming/l10n/fr.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Le nom ne peut pas être vide", "The given name is too long" : "Le nom donné est trop long", "The given web address is too long" : "L'adresse web donnée est trop longue", + "The given legal notice address is too long" : "L'adresse de la notice légale donnée est trop longue", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", "The file was uploaded" : "Le fichier a été téléversé", @@ -20,11 +21,12 @@ "Unsupported image type" : "Ce type d'image n'est pas pris en charge", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Vous utilisez déjà un thème personnalisé. Les paramètres de l'application Theming peuvent être remplacés par ceux-ci.", "Theming" : "Personnaliser l'apparence", + "Legal notice" : "Notice légale", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Cette extension permet de personnaliser facilement l'apparence de votre instance et des clients supportés. La personnalisation de l'apparence sera visible par tous les utilisateurs.", "Name" : "Nom", "Reset to default" : "Restaurer les valeurs par défaut", - "Web address" : "Adresse web", - "Web address https://…" : "Adresse du serveur https://…", + "Web link" : "Lien web", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Couleur", "Logo" : "Logo", @@ -33,6 +35,7 @@ "Upload new login background" : "Téléverser un nouvel arrière-plan de connexion", "Remove background image" : "Supprimer l'image en arrière-plan", "Advanced options" : "Options avancées", + "Legal notice link" : "Lien de la notice légale", "Header logo" : "Logo d'en-tête", "Upload new header logo" : "Téléverser un nouveau logo d'en-tête", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installez l'extension PHP Imagemagick avec le support pour les images SVG afin de générer automatiquement les favicons sur base du logo téléversé et de la couleur.", "You are already using a custom theme" : "Vous utilisez déjà un thème personnalisé", "reset to default" : "Restaurer les valeurs par défaut", + "Web address" : "Adresse web", + "Web address https://…" : "Adresse du serveur https://…", "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été téléversé avec succès", "The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement téléversé", "Failed to write file to disk." : "Erreur d'écriture du fichier sur le disque.", diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js index f3ade1c2d24..d48f941f10c 100644 --- a/apps/theming/l10n/hu.js +++ b/apps/theming/l10n/hu.js @@ -20,8 +20,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetőve teszik, hogy könnyedén személyre szabja a kinézetét az oldalnak, és a támogatott klienseknek. Ez minden felhasználó számára látható lesz.", "Name" : "Név", "Reset to default" : "Visszaállítás eredetire", - "Web address" : "Webcím", - "Web address https://…" : "Webcím https://...", "Slogan" : "Szlogen", "Color" : "Szín", "Logo" : "Logó", @@ -32,6 +30,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítsd az Imagemagick PHP kiterjesztést SVG kép támogatással a feltöltött logóból és színből való automatikus favikon generáláshoz.", "You are already using a custom theme" : "Már egyedi témát használ", "reset to default" : "Visszaállítás alapértelmezettre", + "Web address" : "Webcím", + "Web address https://…" : "Webcím https://...", "There is no error, the file uploaded with success" : "Nincs hiba, a feltöltés sikeres", "The uploaded file was only partially uploaded" : "Csak részben került feltöltésre a fájl", "Failed to write file to disk." : "Lemezre írás sikertelen.", diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json index cb1195c1783..b4832fed153 100644 --- a/apps/theming/l10n/hu.json +++ b/apps/theming/l10n/hu.json @@ -18,8 +18,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetőve teszik, hogy könnyedén személyre szabja a kinézetét az oldalnak, és a támogatott klienseknek. Ez minden felhasználó számára látható lesz.", "Name" : "Név", "Reset to default" : "Visszaállítás eredetire", - "Web address" : "Webcím", - "Web address https://…" : "Webcím https://...", "Slogan" : "Szlogen", "Color" : "Szín", "Logo" : "Logó", @@ -30,6 +28,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítsd az Imagemagick PHP kiterjesztést SVG kép támogatással a feltöltött logóból és színből való automatikus favikon generáláshoz.", "You are already using a custom theme" : "Már egyedi témát használ", "reset to default" : "Visszaállítás alapértelmezettre", + "Web address" : "Webcím", + "Web address https://…" : "Webcím https://...", "There is no error, the file uploaded with success" : "Nincs hiba, a feltöltés sikeres", "The uploaded file was only partially uploaded" : "Csak részben került feltöltésre a fájl", "Failed to write file to disk." : "Lemezre írás sikertelen.", diff --git a/apps/theming/l10n/is.js b/apps/theming/l10n/is.js index 9b7a510bb15..12f081bbf98 100644 --- a/apps/theming/l10n/is.js +++ b/apps/theming/l10n/is.js @@ -25,8 +25,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Þemu gera þér kleift að breyta útliti og hegðun þíns eintaks af viðmótinu auk studdra biðlaraforrita. Það verður sýnilegt öllum notendum.", "Name" : "Heiti", "Reset to default" : "Endurstilla á sjálfgefið", - "Web address" : "Veffang", - "Web address https://…" : "Veffang https://…", "Slogan" : "Slagorð", "Color" : "Litur", "Logo" : "Táknmerki", @@ -37,6 +35,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Settu inn Imagemagick PHP forritsviðaukann með stuðningi við SVG-myndir til að útbúa sjálfvirkt veftáknmyndir byggðar á innsendu táknmerki og lit.", "You are already using a custom theme" : "Þú ert nú þegar að nota sérsniðið þema", "reset to default" : "endurstilla á sjálfgefið", + "Web address" : "Veffang", + "Web address https://…" : "Veffang https://…", "There is no error, the file uploaded with success" : "Engin villa, innsending heppnaðist", "The uploaded file was only partially uploaded" : "Einungis hluti af innsendri skrá skilaði sér", "Failed to write file to disk." : "Tókst ekki að skrifa skrá á disk.", diff --git a/apps/theming/l10n/is.json b/apps/theming/l10n/is.json index 501c2e62e67..3e5bdfa4521 100644 --- a/apps/theming/l10n/is.json +++ b/apps/theming/l10n/is.json @@ -23,8 +23,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Þemu gera þér kleift að breyta útliti og hegðun þíns eintaks af viðmótinu auk studdra biðlaraforrita. Það verður sýnilegt öllum notendum.", "Name" : "Heiti", "Reset to default" : "Endurstilla á sjálfgefið", - "Web address" : "Veffang", - "Web address https://…" : "Veffang https://…", "Slogan" : "Slagorð", "Color" : "Litur", "Logo" : "Táknmerki", @@ -35,6 +33,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Settu inn Imagemagick PHP forritsviðaukann með stuðningi við SVG-myndir til að útbúa sjálfvirkt veftáknmyndir byggðar á innsendu táknmerki og lit.", "You are already using a custom theme" : "Þú ert nú þegar að nota sérsniðið þema", "reset to default" : "endurstilla á sjálfgefið", + "Web address" : "Veffang", + "Web address https://…" : "Veffang https://…", "There is no error, the file uploaded with success" : "Engin villa, innsending heppnaðist", "The uploaded file was only partially uploaded" : "Einungis hluti af innsendri skrá skilaði sér", "Failed to write file to disk." : "Tókst ekki að skrifa skrá á disk.", diff --git a/apps/theming/l10n/it.js b/apps/theming/l10n/it.js index 71ba5745438..035898f47e1 100644 --- a/apps/theming/l10n/it.js +++ b/apps/theming/l10n/it.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Il nome non può essere vuoto", "The given name is too long" : "Questo nome è troppo lungo", "The given web address is too long" : "Questo indirizzo web è troppo lungo", + "The given legal notice address is too long" : "L'indirizzo dell'avviso legale specificato è troppo lungo", "The given slogan is too long" : "Questo slogan è troppo lungo", "The given color is invalid" : "Questo colore non è valido", "The file was uploaded" : "Il file è stato caricato", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Tipo di immagine non supportato", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Stai già utilizzando un tema personalizzato. Le impostazioni dell'applicazione dei temi potrebbero essere sovrascritte.", "Theming" : "Tema", + "Legal notice" : "Avviso legale", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "La gestione dei temi rende semplice la personalizzazione dell'aspetto della tua istanza e dei client supportati. Ciò sarà visibile a tutti gli utenti.", "Name" : "Nome", "Reset to default" : "Ripristina valori predefiniti", - "Web address" : "Indirizzo web", - "Web address https://…" : "Indirizzo web https://…", + "Web link" : "Collegamento web", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Colore", "Logo" : "Logo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Carica nuovo sfondo di accesso", "Remove background image" : "Rimuovi immagine di sfondo", "Advanced options" : "Opzioni avanzate", + "Legal notice link" : "Collegamento avviso legale", "Header logo" : "Logo dell'intestazione", "Upload new header logo" : "Carica nuovo logo dell'intestazione", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installa l'estensione Imagemacick di PHP con supporto per le immagini SVG per generare automaticamente favicon basate sul logo caricato e sul colore.", "You are already using a custom theme" : "Stai già usando un tema personalizzato", "reset to default" : "ripristina valori predefiniti", + "Web address" : "Indirizzo web", + "Web address https://…" : "Indirizzo web https://…", "There is no error, the file uploaded with success" : "Non ci sono errori, il file è stato caricato correttamente", "The uploaded file was only partially uploaded" : "Il file è stato caricato solo parzialmente", "Failed to write file to disk." : "Scrittura su disco non riuscita", diff --git a/apps/theming/l10n/it.json b/apps/theming/l10n/it.json index a657c561d78..33a1006f1a8 100644 --- a/apps/theming/l10n/it.json +++ b/apps/theming/l10n/it.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Il nome non può essere vuoto", "The given name is too long" : "Questo nome è troppo lungo", "The given web address is too long" : "Questo indirizzo web è troppo lungo", + "The given legal notice address is too long" : "L'indirizzo dell'avviso legale specificato è troppo lungo", "The given slogan is too long" : "Questo slogan è troppo lungo", "The given color is invalid" : "Questo colore non è valido", "The file was uploaded" : "Il file è stato caricato", @@ -20,11 +21,12 @@ "Unsupported image type" : "Tipo di immagine non supportato", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Stai già utilizzando un tema personalizzato. Le impostazioni dell'applicazione dei temi potrebbero essere sovrascritte.", "Theming" : "Tema", + "Legal notice" : "Avviso legale", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "La gestione dei temi rende semplice la personalizzazione dell'aspetto della tua istanza e dei client supportati. Ciò sarà visibile a tutti gli utenti.", "Name" : "Nome", "Reset to default" : "Ripristina valori predefiniti", - "Web address" : "Indirizzo web", - "Web address https://…" : "Indirizzo web https://…", + "Web link" : "Collegamento web", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Colore", "Logo" : "Logo", @@ -33,6 +35,7 @@ "Upload new login background" : "Carica nuovo sfondo di accesso", "Remove background image" : "Rimuovi immagine di sfondo", "Advanced options" : "Opzioni avanzate", + "Legal notice link" : "Collegamento avviso legale", "Header logo" : "Logo dell'intestazione", "Upload new header logo" : "Carica nuovo logo dell'intestazione", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installa l'estensione Imagemacick di PHP con supporto per le immagini SVG per generare automaticamente favicon basate sul logo caricato e sul colore.", "You are already using a custom theme" : "Stai già usando un tema personalizzato", "reset to default" : "ripristina valori predefiniti", + "Web address" : "Indirizzo web", + "Web address https://…" : "Indirizzo web https://…", "There is no error, the file uploaded with success" : "Non ci sono errori, il file è stato caricato correttamente", "The uploaded file was only partially uploaded" : "Il file è stato caricato solo parzialmente", "Failed to write file to disk." : "Scrittura su disco non riuscita", diff --git a/apps/theming/l10n/ja.js b/apps/theming/l10n/ja.js index df03dc04d3f..0affa80d283 100644 --- a/apps/theming/l10n/ja.js +++ b/apps/theming/l10n/ja.js @@ -18,8 +18,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマではあなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更は全てのユーザが対象となります。", "Name" : "名前", "Reset to default" : "デフォルトに戻す", - "Web address" : "Webアドレス", - "Web address https://…" : "Webアドレス https://...", "Slogan" : "スローガン", "Color" : "色", "Logo" : "ロゴ", @@ -29,6 +27,8 @@ OC.L10N.register( "Remove background image" : "背景画像を削除", "You are already using a custom theme" : "あなたは既にカスタムテーマを利用しています", "reset to default" : "デフォルトに戻す", + "Web address" : "Webアドレス", + "Web address https://…" : "Webアドレス https://...", "There is no error, the file uploaded with success" : "ファイルはエラーなくアップロードされました", "Failed to write file to disk." : "ファイルをディスクに書き込めませんでした", "A PHP extension stopped the file upload." : "PHP拡張でファイルのアップロードが停止されています" diff --git a/apps/theming/l10n/ja.json b/apps/theming/l10n/ja.json index 772f9e259fb..2872ef43a2f 100644 --- a/apps/theming/l10n/ja.json +++ b/apps/theming/l10n/ja.json @@ -16,8 +16,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマではあなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更は全てのユーザが対象となります。", "Name" : "名前", "Reset to default" : "デフォルトに戻す", - "Web address" : "Webアドレス", - "Web address https://…" : "Webアドレス https://...", "Slogan" : "スローガン", "Color" : "色", "Logo" : "ロゴ", @@ -27,6 +25,8 @@ "Remove background image" : "背景画像を削除", "You are already using a custom theme" : "あなたは既にカスタムテーマを利用しています", "reset to default" : "デフォルトに戻す", + "Web address" : "Webアドレス", + "Web address https://…" : "Webアドレス https://...", "There is no error, the file uploaded with success" : "ファイルはエラーなくアップロードされました", "Failed to write file to disk." : "ファイルをディスクに書き込めませんでした", "A PHP extension stopped the file upload." : "PHP拡張でファイルのアップロードが停止されています" diff --git a/apps/theming/l10n/ka_GE.js b/apps/theming/l10n/ka_GE.js index 9ced9526a92..ca4efb68d56 100644 --- a/apps/theming/l10n/ka_GE.js +++ b/apps/theming/l10n/ka_GE.js @@ -20,8 +20,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "ვიზუალური თემები საშუალებას გაძლევთ თქვენს ინსტანციას და მხარდაჭერილ კლიენტებს მარტივად გაუწიოთ გამოსახულებას პერსონალიზაცია. ეს გამოჩნდება ყველა მომხმარებელთან.", "Name" : "სახელი", "Reset to default" : "საწყის მდგომარეობაში დაბრუნება", - "Web address" : "ვებ-მისამართი", - "Web address https://…" : "ვებ მისამართ https://…", "Slogan" : "ლოზუნგი", "Color" : "ფერი", "Logo" : "ლოგო", @@ -32,9 +30,11 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "SVG სურთების მხარდაჭერის მქონე Imagemagick PHP გაფართოების დაყენება ფავიკონებს ატვირთული ლოგოსა და ფერის მიხევით დააგენერირებს ავტომატურად.", "You are already using a custom theme" : "თქვენ პერზონალიზირებულ ვიზუალურ თემას უკვე იყენებთ", "reset to default" : "დაბრუნება საწყისზე", + "Web address" : "ვებ-მისამართი", + "Web address https://…" : "ვებ მისამართ https://…", "There is no error, the file uploaded with success" : "ეს არაა შეცდომა, ფაილი წარმატებით აიტვირთა", "The uploaded file was only partially uploaded" : "ფაილი აიტვირთა მხოლოდ ნაწილობრივ", "Failed to write file to disk." : "ფაილი დისკზე ვერ ჩაიწერა.", "A PHP extension stopped the file upload." : "PHP გაფართოებამ შეაჩერა ფაილის ატვირთვა." }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/theming/l10n/ka_GE.json b/apps/theming/l10n/ka_GE.json index 4f9c81895ea..db72c8d7924 100644 --- a/apps/theming/l10n/ka_GE.json +++ b/apps/theming/l10n/ka_GE.json @@ -18,8 +18,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "ვიზუალური თემები საშუალებას გაძლევთ თქვენს ინსტანციას და მხარდაჭერილ კლიენტებს მარტივად გაუწიოთ გამოსახულებას პერსონალიზაცია. ეს გამოჩნდება ყველა მომხმარებელთან.", "Name" : "სახელი", "Reset to default" : "საწყის მდგომარეობაში დაბრუნება", - "Web address" : "ვებ-მისამართი", - "Web address https://…" : "ვებ მისამართ https://…", "Slogan" : "ლოზუნგი", "Color" : "ფერი", "Logo" : "ლოგო", @@ -30,9 +28,11 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "SVG სურთების მხარდაჭერის მქონე Imagemagick PHP გაფართოების დაყენება ფავიკონებს ატვირთული ლოგოსა და ფერის მიხევით დააგენერირებს ავტომატურად.", "You are already using a custom theme" : "თქვენ პერზონალიზირებულ ვიზუალურ თემას უკვე იყენებთ", "reset to default" : "დაბრუნება საწყისზე", + "Web address" : "ვებ-მისამართი", + "Web address https://…" : "ვებ მისამართ https://…", "There is no error, the file uploaded with success" : "ეს არაა შეცდომა, ფაილი წარმატებით აიტვირთა", "The uploaded file was only partially uploaded" : "ფაილი აიტვირთა მხოლოდ ნაწილობრივ", "Failed to write file to disk." : "ფაილი დისკზე ვერ ჩაიწერა.", "A PHP extension stopped the file upload." : "PHP გაფართოებამ შეაჩერა ფაილის ატვირთვა." -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/ko.js b/apps/theming/l10n/ko.js index 872d1973464..3ffd05f4b20 100644 --- a/apps/theming/l10n/ko.js +++ b/apps/theming/l10n/ko.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "테마를 사용하여 내 인스턴스와 지원하는 클라이언트의 모습을 변경할 수 있습니다. 테마는 모든 사용자에게 적용됩니다.", "Name" : "이름", "Reset to default" : "기본값으로 초기화", - "Web address" : "웹 주소", - "Web address https://…" : "웹 주소 https://…", "Slogan" : "슬로건", "Color" : "색", "Logo" : "로고", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "업로드한 로고와 색으로부터 자동으로 파비콘을 생성하려면 PHP Imagemagick 확장 기능 및 SVG 형식 그림 지원을 설치하십시오.", "You are already using a custom theme" : "이미 사용자 정의 테마 사용 중", "reset to default" : "기본값으로 초기화", + "Web address" : "웹 주소", + "Web address https://…" : "웹 주소 https://…", "There is no error, the file uploaded with success" : "오류 없음, 파일 업로드 성공", "The uploaded file was only partially uploaded" : "파일이 일부분만 업로드됨", "Failed to write file to disk." : "디스크에 파일을 기록할 수 없습니다.", diff --git a/apps/theming/l10n/ko.json b/apps/theming/l10n/ko.json index 5f3e5deab3d..012ca756995 100644 --- a/apps/theming/l10n/ko.json +++ b/apps/theming/l10n/ko.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "테마를 사용하여 내 인스턴스와 지원하는 클라이언트의 모습을 변경할 수 있습니다. 테마는 모든 사용자에게 적용됩니다.", "Name" : "이름", "Reset to default" : "기본값으로 초기화", - "Web address" : "웹 주소", - "Web address https://…" : "웹 주소 https://…", "Slogan" : "슬로건", "Color" : "색", "Logo" : "로고", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "업로드한 로고와 색으로부터 자동으로 파비콘을 생성하려면 PHP Imagemagick 확장 기능 및 SVG 형식 그림 지원을 설치하십시오.", "You are already using a custom theme" : "이미 사용자 정의 테마 사용 중", "reset to default" : "기본값으로 초기화", + "Web address" : "웹 주소", + "Web address https://…" : "웹 주소 https://…", "There is no error, the file uploaded with success" : "오류 없음, 파일 업로드 성공", "The uploaded file was only partially uploaded" : "파일이 일부분만 업로드됨", "Failed to write file to disk." : "디스크에 파일을 기록할 수 없습니다.", diff --git a/apps/theming/l10n/lt_LT.js b/apps/theming/l10n/lt_LT.js index 4d5bacf2817..eb2b29a533a 100644 --- a/apps/theming/l10n/lt_LT.js +++ b/apps/theming/l10n/lt_LT.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Pavadinimas negali būti tuščias", "The given name is too long" : "Nurodytas pavadinimas yra per ilgas", "The given web address is too long" : "Nurodytas adresas yra per ilgas", + "The given legal notice address is too long" : "Nurodytas teisinio pranešimo adresas yra per ilgas", "The given slogan is too long" : "Nurodytas šūkis yra per ilgas", "The given color is invalid" : "Nurodyta spalva yra neteisinga", "The file was uploaded" : "Failas buvo įkeltas", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Nepalaikomas paveikslo tipas", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Jūs jau naudojate tinkintą temą. Temų programėlės nustatymai gali būti perrašyti tos temos.", "Theming" : "Tema", + "Legal notice" : "Teisinis pranešimas", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Temos leidžia lengvai tinkinti jūsų egzemplioriaus ir palaikomų klientų išvaizdą ir turinį. Tai bus matoma visiems naudotojams. ", "Name" : "Pavadinimas", "Reset to default" : "Atstatyti į numatytąją", - "Web address" : "Saityno adresas", - "Web address https://…" : "Saityno adresas https://…", + "Web link" : "Internetinė nuoroda", + "https://…" : "https://…", "Slogan" : "Šūkis", "Color" : "Spalva", "Logo" : "Logotipas", @@ -34,12 +36,20 @@ OC.L10N.register( "Login image" : "Prisijungimo paveikslas", "Upload new login background" : "Įkelti naują prisijungimo foną", "Remove background image" : "Šalinti foninį paveikslą", + "Advanced options" : "Išplėstinės parinktys", + "Legal notice link" : "Teisinio pranešimo nuoroda", + "Header logo" : "Antraštės logotipas", + "Upload new header logo" : "Įkelti naują antraštės logotipą", + "Favicon" : "Svetainės piktograma", + "Upload new favicon" : "Įkelti naują svetainės piktogramą", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Norėdami automatiškai generuoti svetainės piktogramą remiantis įkeltu logotipu ir spalva, įdiekite Imagemagick PHP plėtinį su SVG paveikslų palaikymu.", "You are already using a custom theme" : "Jūs jau naudojate tinkintą temą", "reset to default" : "atstatyta į numatytąją", + "Web address" : "Saityno adresas", + "Web address https://…" : "Saityno adresas https://…", "There is no error, the file uploaded with success" : "Klaidų nėra, failas buvo sėkmingai įkeltas", "The uploaded file was only partially uploaded" : "Įkeliamas failas buvo tik dalinai įkeltas", "Failed to write file to disk." : "Nepavyko įrašyti failą į diską.", "A PHP extension stopped the file upload." : "PHP plėtinys sustabdė failo įkėlimą." }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/theming/l10n/lt_LT.json b/apps/theming/l10n/lt_LT.json index 2dd75243c9e..76111e4cceb 100644 --- a/apps/theming/l10n/lt_LT.json +++ b/apps/theming/l10n/lt_LT.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Pavadinimas negali būti tuščias", "The given name is too long" : "Nurodytas pavadinimas yra per ilgas", "The given web address is too long" : "Nurodytas adresas yra per ilgas", + "The given legal notice address is too long" : "Nurodytas teisinio pranešimo adresas yra per ilgas", "The given slogan is too long" : "Nurodytas šūkis yra per ilgas", "The given color is invalid" : "Nurodyta spalva yra neteisinga", "The file was uploaded" : "Failas buvo įkeltas", @@ -20,11 +21,12 @@ "Unsupported image type" : "Nepalaikomas paveikslo tipas", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Jūs jau naudojate tinkintą temą. Temų programėlės nustatymai gali būti perrašyti tos temos.", "Theming" : "Tema", + "Legal notice" : "Teisinis pranešimas", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Temos leidžia lengvai tinkinti jūsų egzemplioriaus ir palaikomų klientų išvaizdą ir turinį. Tai bus matoma visiems naudotojams. ", "Name" : "Pavadinimas", "Reset to default" : "Atstatyti į numatytąją", - "Web address" : "Saityno adresas", - "Web address https://…" : "Saityno adresas https://…", + "Web link" : "Internetinė nuoroda", + "https://…" : "https://…", "Slogan" : "Šūkis", "Color" : "Spalva", "Logo" : "Logotipas", @@ -32,12 +34,20 @@ "Login image" : "Prisijungimo paveikslas", "Upload new login background" : "Įkelti naują prisijungimo foną", "Remove background image" : "Šalinti foninį paveikslą", + "Advanced options" : "Išplėstinės parinktys", + "Legal notice link" : "Teisinio pranešimo nuoroda", + "Header logo" : "Antraštės logotipas", + "Upload new header logo" : "Įkelti naują antraštės logotipą", + "Favicon" : "Svetainės piktograma", + "Upload new favicon" : "Įkelti naują svetainės piktogramą", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Norėdami automatiškai generuoti svetainės piktogramą remiantis įkeltu logotipu ir spalva, įdiekite Imagemagick PHP plėtinį su SVG paveikslų palaikymu.", "You are already using a custom theme" : "Jūs jau naudojate tinkintą temą", "reset to default" : "atstatyta į numatytąją", + "Web address" : "Saityno adresas", + "Web address https://…" : "Saityno adresas https://…", "There is no error, the file uploaded with success" : "Klaidų nėra, failas buvo sėkmingai įkeltas", "The uploaded file was only partially uploaded" : "Įkeliamas failas buvo tik dalinai įkeltas", "Failed to write file to disk." : "Nepavyko įrašyti failą į diską.", "A PHP extension stopped the file upload." : "PHP plėtinys sustabdė failo įkėlimą." -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/theming/l10n/lv.js b/apps/theming/l10n/lv.js index 6aaa3864368..3076061abc5 100644 --- a/apps/theming/l10n/lv.js +++ b/apps/theming/l10n/lv.js @@ -15,8 +15,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.", "Name" : "Nosaukums", "Reset to default" : "Atiestatīt", - "Web address" : "Tīmekļa adrese", - "Web address https://…" : "Servera adrese https://…", "Slogan" : "Sauklis", "Color" : "Krāsa", "Logo" : "Logo", @@ -25,6 +23,8 @@ OC.L10N.register( "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu", "Remove background image" : "Noņemt fona attēlu", "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu", - "reset to default" : "Atiestatīt" + "reset to default" : "Atiestatīt", + "Web address" : "Tīmekļa adrese", + "Web address https://…" : "Servera adrese https://…" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/theming/l10n/lv.json b/apps/theming/l10n/lv.json index bf67f89547c..15d4620a293 100644 --- a/apps/theming/l10n/lv.json +++ b/apps/theming/l10n/lv.json @@ -13,8 +13,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Tēmošana padara iespējamu viegli pielāgot savas instances un atbalstošo klientaplikāciju izskatu un sajūtu. Tas būs redzams visiem lietotājiem.", "Name" : "Nosaukums", "Reset to default" : "Atiestatīt", - "Web address" : "Tīmekļa adrese", - "Web address https://…" : "Servera adrese https://…", "Slogan" : "Sauklis", "Color" : "Krāsa", "Logo" : "Logo", @@ -23,6 +21,8 @@ "Upload new login background" : "Augšupielādēt jaunu pieslēgšanās fona attēlu", "Remove background image" : "Noņemt fona attēlu", "You are already using a custom theme" : "Tu jau izmanto pielāgotu tēmu", - "reset to default" : "Atiestatīt" + "reset to default" : "Atiestatīt", + "Web address" : "Tīmekļa adrese", + "Web address https://…" : "Servera adrese https://…" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/theming/l10n/nb.js b/apps/theming/l10n/nb.js index 464acad9c49..ca1bc77958a 100644 --- a/apps/theming/l10n/nb.js +++ b/apps/theming/l10n/nb.js @@ -24,8 +24,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Draktvalg gjør det enkelt å tilpasse utseende og følelsen av din installasjon og støttede klienter. Dette vil bli synlig for alle brukere.", "Name" : "Navn", "Reset to default" : "Tilbakestill til forvalg", - "Web address" : "Nettadresse", - "Web address https://…" : "Nettadresse https://…", "Slogan" : "Slagord", "Color" : "Farge", "Logo" : "Logo", @@ -36,6 +34,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installer PHP-utvidelsen Imagemagick med støtte for SVG-bilder for å opprette favikoner automatisk basert på opplastet logo og farge.", "You are already using a custom theme" : "Du bruker allerede en egendefinert drakt", "reset to default" : "tilbakestill til forvalg", + "Web address" : "Nettadresse", + "Web address https://…" : "Nettadresse https://…", "There is no error, the file uploaded with success" : "Det er ingen feil, filen ble lastet opp", "The uploaded file was only partially uploaded" : "Filen ble bare delvis lastet opp", "Failed to write file to disk." : "Klarte ikke å skrive til disk.", diff --git a/apps/theming/l10n/nb.json b/apps/theming/l10n/nb.json index e6f7ac32f4a..e5733f5e2e5 100644 --- a/apps/theming/l10n/nb.json +++ b/apps/theming/l10n/nb.json @@ -22,8 +22,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Draktvalg gjør det enkelt å tilpasse utseende og følelsen av din installasjon og støttede klienter. Dette vil bli synlig for alle brukere.", "Name" : "Navn", "Reset to default" : "Tilbakestill til forvalg", - "Web address" : "Nettadresse", - "Web address https://…" : "Nettadresse https://…", "Slogan" : "Slagord", "Color" : "Farge", "Logo" : "Logo", @@ -34,6 +32,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installer PHP-utvidelsen Imagemagick med støtte for SVG-bilder for å opprette favikoner automatisk basert på opplastet logo og farge.", "You are already using a custom theme" : "Du bruker allerede en egendefinert drakt", "reset to default" : "tilbakestill til forvalg", + "Web address" : "Nettadresse", + "Web address https://…" : "Nettadresse https://…", "There is no error, the file uploaded with success" : "Det er ingen feil, filen ble lastet opp", "The uploaded file was only partially uploaded" : "Filen ble bare delvis lastet opp", "Failed to write file to disk." : "Klarte ikke å skrive til disk.", diff --git a/apps/theming/l10n/nl.js b/apps/theming/l10n/nl.js index dcdc4d69ade..59dc43ceaac 100644 --- a/apps/theming/l10n/nl.js +++ b/apps/theming/l10n/nl.js @@ -25,8 +25,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Thematiseren maakt het mogelijk om uiterlijk en gevoel van je systeem en ondersteunde clients aan te passen. Dit wordt zichtbaar voor alle gebruikers.", "Name" : "Naam", "Reset to default" : "Herstellen naar standaard", - "Web address" : "Webadres", - "Web address https://…" : "Webadres https://…", "Slogan" : "Slagzin", "Color" : "Kleur", "Logo" : "Logo", @@ -37,6 +35,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installeer de Imagemagick PHP extensie met ondersteuning voor SVG afbeeldingen om automatisch favicons te genereren op basis van het geuploade logo en kleur.", "You are already using a custom theme" : "Je gebruikt al een maatwerkthema", "reset to default" : "herstellen naar standaard", + "Web address" : "Webadres", + "Web address https://…" : "Webadres https://…", "There is no error, the file uploaded with success" : "Er trad geen fout op, het bestand is succesvol geüpload", "The uploaded file was only partially uploaded" : "Het bestand is slechts gedeeltelijk geüpload", "Failed to write file to disk." : "Schrijven van het bestand naar schijf mislukte.", diff --git a/apps/theming/l10n/nl.json b/apps/theming/l10n/nl.json index 63c4a8ae633..6aa20fb8043 100644 --- a/apps/theming/l10n/nl.json +++ b/apps/theming/l10n/nl.json @@ -23,8 +23,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Thematiseren maakt het mogelijk om uiterlijk en gevoel van je systeem en ondersteunde clients aan te passen. Dit wordt zichtbaar voor alle gebruikers.", "Name" : "Naam", "Reset to default" : "Herstellen naar standaard", - "Web address" : "Webadres", - "Web address https://…" : "Webadres https://…", "Slogan" : "Slagzin", "Color" : "Kleur", "Logo" : "Logo", @@ -35,6 +33,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installeer de Imagemagick PHP extensie met ondersteuning voor SVG afbeeldingen om automatisch favicons te genereren op basis van het geuploade logo en kleur.", "You are already using a custom theme" : "Je gebruikt al een maatwerkthema", "reset to default" : "herstellen naar standaard", + "Web address" : "Webadres", + "Web address https://…" : "Webadres https://…", "There is no error, the file uploaded with success" : "Er trad geen fout op, het bestand is succesvol geüpload", "The uploaded file was only partially uploaded" : "Het bestand is slechts gedeeltelijk geüpload", "Failed to write file to disk." : "Schrijven van het bestand naar schijf mislukte.", diff --git a/apps/theming/l10n/pl.js b/apps/theming/l10n/pl.js index 0b9413bd2c7..59e1b641781 100644 --- a/apps/theming/l10n/pl.js +++ b/apps/theming/l10n/pl.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wspieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", "Name" : "Nazwa", "Reset to default" : "Przywróć domyślne", - "Web address" : "adres internetowy", - "Web address https://…" : "adres internetowy https://...", "Slogan" : "Slogan", "Color" : "Kolor", "Logo" : "Logo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Aby wygenerować favicon oparte o wysłane logo i kolor, zainstaluj rozszerzenie PHP Imagemagick z obsługą SVG.", "You are already using a custom theme" : "Używasz już motywu niestandarowego", "reset to default" : "przywróć domyślne", + "Web address" : "adres internetowy", + "Web address https://…" : "adres internetowy https://...", "There is no error, the file uploaded with success" : "Brak błędów, plik wysłano poprawnie.", "The uploaded file was only partially uploaded" : "Załadowany plik został wysłany tylko częściowo.", "Failed to write file to disk." : "Błąd zapisu na dysk.", diff --git a/apps/theming/l10n/pl.json b/apps/theming/l10n/pl.json index 067681d03f6..bd99aaebfc4 100644 --- a/apps/theming/l10n/pl.json +++ b/apps/theming/l10n/pl.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wspieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", "Name" : "Nazwa", "Reset to default" : "Przywróć domyślne", - "Web address" : "adres internetowy", - "Web address https://…" : "adres internetowy https://...", "Slogan" : "Slogan", "Color" : "Kolor", "Logo" : "Logo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Aby wygenerować favicon oparte o wysłane logo i kolor, zainstaluj rozszerzenie PHP Imagemagick z obsługą SVG.", "You are already using a custom theme" : "Używasz już motywu niestandarowego", "reset to default" : "przywróć domyślne", + "Web address" : "adres internetowy", + "Web address https://…" : "adres internetowy https://...", "There is no error, the file uploaded with success" : "Brak błędów, plik wysłano poprawnie.", "The uploaded file was only partially uploaded" : "Załadowany plik został wysłany tylko częściowo.", "Failed to write file to disk." : "Błąd zapisu na dysk.", diff --git a/apps/theming/l10n/pt_BR.js b/apps/theming/l10n/pt_BR.js index a04d0f22d30..0eadf2471d5 100644 --- a/apps/theming/l10n/pt_BR.js +++ b/apps/theming/l10n/pt_BR.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "O nome não pode ficar em branco", "The given name is too long" : "O nome é muito longo", "The given web address is too long" : "O endereço web fornecido é muito longo", + "The given legal notice address is too long" : "O endereço do aviso legal é muito longo", "The given slogan is too long" : "O slogan dado é muito longo", "The given color is invalid" : "A cor fornecida é inválida", "The file was uploaded" : "O arquivo foi enviado", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Tipo de imagem não suportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Você já está usando um tema personalizado. As configurações do aplicativo Theming podem ser sobrescritas por isso.", "Theming" : "Personalização", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Criar e alterar temas torna possível personalizar facilmente o Nextcloud e clientes suportados. Isso será visível para todos os usuários.", "Name" : "Nome", "Reset to default" : "Redefinir para o padrão", - "Web address" : "Endereço web", - "Web address https://…" : "Endereço web https://...", + "Web link" : "Link web", + "https://…" : "https://...", "Slogan" : "Slogan", "Color" : "Cor", "Logo" : "Logotipo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Enviar nova imagem de fundo para o login", "Remove background image" : "Excluir a imagem de fundo", "Advanced options" : "Opções avançadas", + "Legal notice link" : "Link do aviso legal", "Header logo" : "Logotipo de cabeçalho", "Upload new header logo" : "Enviar novo logotipo de cabeçalho", "Favicon" : "Ícone de favoritos", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP Imagemagick com suporte a imagens SVG para gerar favicons automaticamente, com base no logotipo e na cor enviados.", "You are already using a custom theme" : "Você já está usando um tema personalizado", "reset to default" : "restaurar ao padrão", + "Web address" : "Endereço web", + "Web address https://…" : "Endereço web https://...", "There is no error, the file uploaded with success" : "Sem erros. Arquivo enviado com sucesso", "The uploaded file was only partially uploaded" : "O arquivo foi enviado parcialmente", "Failed to write file to disk." : "Falha ao escrever no disco.", diff --git a/apps/theming/l10n/pt_BR.json b/apps/theming/l10n/pt_BR.json index 0c58de03148..11da3008f0f 100644 --- a/apps/theming/l10n/pt_BR.json +++ b/apps/theming/l10n/pt_BR.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "O nome não pode ficar em branco", "The given name is too long" : "O nome é muito longo", "The given web address is too long" : "O endereço web fornecido é muito longo", + "The given legal notice address is too long" : "O endereço do aviso legal é muito longo", "The given slogan is too long" : "O slogan dado é muito longo", "The given color is invalid" : "A cor fornecida é inválida", "The file was uploaded" : "O arquivo foi enviado", @@ -20,11 +21,12 @@ "Unsupported image type" : "Tipo de imagem não suportado", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Você já está usando um tema personalizado. As configurações do aplicativo Theming podem ser sobrescritas por isso.", "Theming" : "Personalização", + "Legal notice" : "Aviso legal", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Criar e alterar temas torna possível personalizar facilmente o Nextcloud e clientes suportados. Isso será visível para todos os usuários.", "Name" : "Nome", "Reset to default" : "Redefinir para o padrão", - "Web address" : "Endereço web", - "Web address https://…" : "Endereço web https://...", + "Web link" : "Link web", + "https://…" : "https://...", "Slogan" : "Slogan", "Color" : "Cor", "Logo" : "Logotipo", @@ -33,6 +35,7 @@ "Upload new login background" : "Enviar nova imagem de fundo para o login", "Remove background image" : "Excluir a imagem de fundo", "Advanced options" : "Opções avançadas", + "Legal notice link" : "Link do aviso legal", "Header logo" : "Logotipo de cabeçalho", "Upload new header logo" : "Enviar novo logotipo de cabeçalho", "Favicon" : "Ícone de favoritos", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP Imagemagick com suporte a imagens SVG para gerar favicons automaticamente, com base no logotipo e na cor enviados.", "You are already using a custom theme" : "Você já está usando um tema personalizado", "reset to default" : "restaurar ao padrão", + "Web address" : "Endereço web", + "Web address https://…" : "Endereço web https://...", "There is no error, the file uploaded with success" : "Sem erros. Arquivo enviado com sucesso", "The uploaded file was only partially uploaded" : "O arquivo foi enviado parcialmente", "Failed to write file to disk." : "Falha ao escrever no disco.", diff --git a/apps/theming/l10n/pt_PT.js b/apps/theming/l10n/pt_PT.js index add385f5ce8..7fb026981ea 100644 --- a/apps/theming/l10n/pt_PT.js +++ b/apps/theming/l10n/pt_PT.js @@ -19,8 +19,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A tematização possibilita a fácil personalização da aparência da sua instância e clientes suportados. Isto será visível para todos os utilizadores", "Name" : "Nome", "Reset to default" : "Repor original", - "Web address" : "Endereço Web", - "Web address https://…" : "Endereço Web https::// ...", "Slogan" : "Slogan", "Color" : "Cor", "Logo" : "Logótipo", @@ -31,6 +29,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP Imagemagick com suporte para imagens SVG para gerar automaticamente favicons com base na cor e no logotipo carregado.", "You are already using a custom theme" : "Já está a usar um tema personalizado", "reset to default" : "restaurar valor padrão", + "Web address" : "Endereço Web", + "Web address https://…" : "Endereço Web https::// ...", "There is no error, the file uploaded with success" : "Não ocorreu nenhum erro, o ficheiro foi carregado com sucesso", "The uploaded file was only partially uploaded" : "O ficheiro escolhido foi apenas parcialmente carregado", "Failed to write file to disk." : "Falhou a escrever o ficheiro no disco.", diff --git a/apps/theming/l10n/pt_PT.json b/apps/theming/l10n/pt_PT.json index 0ce97a8df20..d9936d74b46 100644 --- a/apps/theming/l10n/pt_PT.json +++ b/apps/theming/l10n/pt_PT.json @@ -17,8 +17,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A tematização possibilita a fácil personalização da aparência da sua instância e clientes suportados. Isto será visível para todos os utilizadores", "Name" : "Nome", "Reset to default" : "Repor original", - "Web address" : "Endereço Web", - "Web address https://…" : "Endereço Web https::// ...", "Slogan" : "Slogan", "Color" : "Cor", "Logo" : "Logótipo", @@ -29,6 +27,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instale a extensão PHP Imagemagick com suporte para imagens SVG para gerar automaticamente favicons com base na cor e no logotipo carregado.", "You are already using a custom theme" : "Já está a usar um tema personalizado", "reset to default" : "restaurar valor padrão", + "Web address" : "Endereço Web", + "Web address https://…" : "Endereço Web https::// ...", "There is no error, the file uploaded with success" : "Não ocorreu nenhum erro, o ficheiro foi carregado com sucesso", "The uploaded file was only partially uploaded" : "O ficheiro escolhido foi apenas parcialmente carregado", "Failed to write file to disk." : "Falhou a escrever o ficheiro no disco.", diff --git a/apps/theming/l10n/ru.js b/apps/theming/l10n/ru.js index 945ab1c7d6d..abca821620f 100644 --- a/apps/theming/l10n/ru.js +++ b/apps/theming/l10n/ru.js @@ -25,8 +25,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Темы оформление позволяют легко настроить внешний вид вашего сервера и поддерживаемых клиентов. Это будет доступно для всех пользователей.", "Name" : "Название", "Reset to default" : "Сбросить изменения", - "Web address" : "Веб адрес", - "Web address https://…" : "Веб адрес https://…", "Slogan" : "Слоган", "Color" : "Цвет", "Logo" : "Логотип", @@ -42,6 +40,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Для автоматической генерации favicon на основе загруженного логотипа и цвета нужно установить PHP расширение Imagemagick с поддержкой изображений SVG ", "You are already using a custom theme" : "Вы уже используете настраиваемую тему", "reset to default" : "сброс до настроек по-умолчанию", + "Web address" : "Веб адрес", + "Web address https://…" : "Веб адрес https://…", "There is no error, the file uploaded with success" : "Файл загружен успешно. Ошибок нет.", "The uploaded file was only partially uploaded" : "Файл загружен лишь частично", "Failed to write file to disk." : "Ошибка записи на диск.", diff --git a/apps/theming/l10n/ru.json b/apps/theming/l10n/ru.json index 871416e3c79..c0fa70965c5 100644 --- a/apps/theming/l10n/ru.json +++ b/apps/theming/l10n/ru.json @@ -23,8 +23,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Темы оформление позволяют легко настроить внешний вид вашего сервера и поддерживаемых клиентов. Это будет доступно для всех пользователей.", "Name" : "Название", "Reset to default" : "Сбросить изменения", - "Web address" : "Веб адрес", - "Web address https://…" : "Веб адрес https://…", "Slogan" : "Слоган", "Color" : "Цвет", "Logo" : "Логотип", @@ -40,6 +38,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Для автоматической генерации favicon на основе загруженного логотипа и цвета нужно установить PHP расширение Imagemagick с поддержкой изображений SVG ", "You are already using a custom theme" : "Вы уже используете настраиваемую тему", "reset to default" : "сброс до настроек по-умолчанию", + "Web address" : "Веб адрес", + "Web address https://…" : "Веб адрес https://…", "There is no error, the file uploaded with success" : "Файл загружен успешно. Ошибок нет.", "The uploaded file was only partially uploaded" : "Файл загружен лишь частично", "Failed to write file to disk." : "Ошибка записи на диск.", diff --git a/apps/theming/l10n/sk.js b/apps/theming/l10n/sk.js index ef0c289d7a3..2e89556756a 100644 --- a/apps/theming/l10n/sk.js +++ b/apps/theming/l10n/sk.js @@ -24,8 +24,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Zmena vzhľadu umožňuje ľahko upraviť pocit z vašej inštalácie a podporovaných klientov. Toto bude viditeľné pre všetkých klientov.", "Name" : "Názov", "Reset to default" : "Nastaviť predvolené", - "Web address" : "Web adresa", - "Web address https://…" : "Webová adresa https://...", "Slogan" : "Slogan", "Color" : "Farba", "Logo" : "Logo", @@ -36,9 +34,11 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Ak chcete automaticky generovať favikony na základe nahraného loga a farby, nainštalujte rozšírenie Imagemagick PHP s podporou pre SVG obrázky.", "You are already using a custom theme" : "Už používate upravený vzhľad", "reset to default" : "nastaviť predvolené", + "Web address" : "Web adresa", + "Web address https://…" : "Webová adresa https://...", "There is no error, the file uploaded with success" : "Nenastala žiadna chyba, súbor bol úspešne nahraný", "The uploaded file was only partially uploaded" : "Ukladaný súbor sa nahral len čiastočne", "Failed to write file to disk." : "Nepodarilo sa zapísať súbor na disk.", "A PHP extension stopped the file upload." : "rozšírenie PHP zastavilo nahrávanie súboru." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/theming/l10n/sk.json b/apps/theming/l10n/sk.json index 335ecfcc819..210a3a3e9b5 100644 --- a/apps/theming/l10n/sk.json +++ b/apps/theming/l10n/sk.json @@ -22,8 +22,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Zmena vzhľadu umožňuje ľahko upraviť pocit z vašej inštalácie a podporovaných klientov. Toto bude viditeľné pre všetkých klientov.", "Name" : "Názov", "Reset to default" : "Nastaviť predvolené", - "Web address" : "Web adresa", - "Web address https://…" : "Webová adresa https://...", "Slogan" : "Slogan", "Color" : "Farba", "Logo" : "Logo", @@ -34,9 +32,11 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Ak chcete automaticky generovať favikony na základe nahraného loga a farby, nainštalujte rozšírenie Imagemagick PHP s podporou pre SVG obrázky.", "You are already using a custom theme" : "Už používate upravený vzhľad", "reset to default" : "nastaviť predvolené", + "Web address" : "Web adresa", + "Web address https://…" : "Webová adresa https://...", "There is no error, the file uploaded with success" : "Nenastala žiadna chyba, súbor bol úspešne nahraný", "The uploaded file was only partially uploaded" : "Ukladaný súbor sa nahral len čiastočne", "Failed to write file to disk." : "Nepodarilo sa zapísať súbor na disk.", "A PHP extension stopped the file upload." : "rozšírenie PHP zastavilo nahrávanie súboru." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/theming/l10n/sl.js b/apps/theming/l10n/sl.js index 5475cc8241b..dc59800365f 100644 --- a/apps/theming/l10n/sl.js +++ b/apps/theming/l10n/sl.js @@ -15,8 +15,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teme omogočajo, da enostavno prilagodiš izgled in občutek svojega strežnika in podprtih strank. To bodo videli vsi uporabniki.", "Name" : "Ime", "Reset to default" : "Ponastavi na privzeto", - "Web address" : "Spletni naslov", - "Web address https://…" : "Spletni naslov https://…", "Slogan" : "Slogan", "Color" : "Barva", "Logo" : "Logo", @@ -25,6 +23,8 @@ OC.L10N.register( "Upload new login background" : "Naloži novo ozadje za prijavo", "Remove background image" : "Odstrani sliko ozadja", "You are already using a custom theme" : "Ti že uporabljaš lastno temo", - "reset to default" : "ponastavi na privzeto" + "reset to default" : "ponastavi na privzeto", + "Web address" : "Spletni naslov", + "Web address https://…" : "Spletni naslov https://…" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/theming/l10n/sl.json b/apps/theming/l10n/sl.json index 3a37919e76e..d8945a15ef6 100644 --- a/apps/theming/l10n/sl.json +++ b/apps/theming/l10n/sl.json @@ -13,8 +13,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teme omogočajo, da enostavno prilagodiš izgled in občutek svojega strežnika in podprtih strank. To bodo videli vsi uporabniki.", "Name" : "Ime", "Reset to default" : "Ponastavi na privzeto", - "Web address" : "Spletni naslov", - "Web address https://…" : "Spletni naslov https://…", "Slogan" : "Slogan", "Color" : "Barva", "Logo" : "Logo", @@ -23,6 +21,8 @@ "Upload new login background" : "Naloži novo ozadje za prijavo", "Remove background image" : "Odstrani sliko ozadja", "You are already using a custom theme" : "Ti že uporabljaš lastno temo", - "reset to default" : "ponastavi na privzeto" + "reset to default" : "ponastavi na privzeto", + "Web address" : "Spletni naslov", + "Web address https://…" : "Spletni naslov https://…" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/theming/l10n/sq.js b/apps/theming/l10n/sq.js index 55f0eac5e54..8c83a7ef28b 100644 --- a/apps/theming/l10n/sq.js +++ b/apps/theming/l10n/sq.js @@ -15,8 +15,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming bën të mundur për të përshtatur lehtësisht pamjen dhe ndjenjën e instancës suaj dhe klientëve të mbështetur. Kjo do të jetë e dukshme për të gjithë përdoruesit.", "Name" : "Emri", "Reset to default" : "Rivendos tek të paracaktuarat", - "Web address" : "Adresa e Web", - "Web address https://…" : "Adresë uebi https://...", "Slogan" : "Sllogan", "Color" : "Ngjyrë ", "Logo" : "Logo", @@ -25,6 +23,8 @@ OC.L10N.register( "Upload new login background" : "Ngarko background të ri hyrjeje", "Remove background image" : "Hiqni imazhin në sfond", "You are already using a custom theme" : "Ju jeni duke përdorur një temë të zakonshme tashmë", - "reset to default" : "rivendos tek të paracaktuarat" + "reset to default" : "rivendos tek të paracaktuarat", + "Web address" : "Adresa e Web", + "Web address https://…" : "Adresë uebi https://..." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/sq.json b/apps/theming/l10n/sq.json index 281fe7f8013..2a379c502cb 100644 --- a/apps/theming/l10n/sq.json +++ b/apps/theming/l10n/sq.json @@ -13,8 +13,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming bën të mundur për të përshtatur lehtësisht pamjen dhe ndjenjën e instancës suaj dhe klientëve të mbështetur. Kjo do të jetë e dukshme për të gjithë përdoruesit.", "Name" : "Emri", "Reset to default" : "Rivendos tek të paracaktuarat", - "Web address" : "Adresa e Web", - "Web address https://…" : "Adresë uebi https://...", "Slogan" : "Sllogan", "Color" : "Ngjyrë ", "Logo" : "Logo", @@ -23,6 +21,8 @@ "Upload new login background" : "Ngarko background të ri hyrjeje", "Remove background image" : "Hiqni imazhin në sfond", "You are already using a custom theme" : "Ju jeni duke përdorur një temë të zakonshme tashmë", - "reset to default" : "rivendos tek të paracaktuarat" + "reset to default" : "rivendos tek të paracaktuarat", + "Web address" : "Adresa e Web", + "Web address https://…" : "Adresë uebi https://..." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/sr.js b/apps/theming/l10n/sr.js index 5c33035a32b..e0dc4f20499 100644 --- a/apps/theming/l10n/sr.js +++ b/apps/theming/l10n/sr.js @@ -25,8 +25,8 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Теме Вам омогућавају да лако измените изглед Ваше инстанце и подржаних клијената. Ово ће бити видљиво свим корисницима.", "Name" : "Име", "Reset to default" : "Ресетуј на подразумевано", - "Web address" : "Веб адреса", - "Web address https://…" : "Веб адреса https://…", + "Web link" : "Веб веза", + "https://…" : "https://…", "Slogan" : "Слоган", "Color" : "Боја", "Logo" : "Лого", @@ -42,6 +42,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Инсталирајте Imagemagick PHP екстензију која подржава SVG слике, да аутоматски направи иконе од отпремљеног логоа и боје.", "You are already using a custom theme" : "Већ користите прилагођену тему", "reset to default" : "ресетуј на подразумевано", + "Web address" : "Веб адреса", + "Web address https://…" : "Веб адреса https://…", "There is no error, the file uploaded with success" : "Нема грешке, фајл је отпремљен успешно", "The uploaded file was only partially uploaded" : "Отпремани фајл је само делимично отпремљен", "Failed to write file to disk." : "Не могу да пишем фајл на диск", diff --git a/apps/theming/l10n/sr.json b/apps/theming/l10n/sr.json index d762e49d67b..d1e10682086 100644 --- a/apps/theming/l10n/sr.json +++ b/apps/theming/l10n/sr.json @@ -23,8 +23,8 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Теме Вам омогућавају да лако измените изглед Ваше инстанце и подржаних клијената. Ово ће бити видљиво свим корисницима.", "Name" : "Име", "Reset to default" : "Ресетуј на подразумевано", - "Web address" : "Веб адреса", - "Web address https://…" : "Веб адреса https://…", + "Web link" : "Веб веза", + "https://…" : "https://…", "Slogan" : "Слоган", "Color" : "Боја", "Logo" : "Лого", @@ -40,6 +40,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Инсталирајте Imagemagick PHP екстензију која подржава SVG слике, да аутоматски направи иконе од отпремљеног логоа и боје.", "You are already using a custom theme" : "Већ користите прилагођену тему", "reset to default" : "ресетуј на подразумевано", + "Web address" : "Веб адреса", + "Web address https://…" : "Веб адреса https://…", "There is no error, the file uploaded with success" : "Нема грешке, фајл је отпремљен успешно", "The uploaded file was only partially uploaded" : "Отпремани фајл је само делимично отпремљен", "Failed to write file to disk." : "Не могу да пишем фајл на диск", diff --git a/apps/theming/l10n/sv.js b/apps/theming/l10n/sv.js index d56503dcf1b..1437a4d9e5d 100644 --- a/apps/theming/l10n/sv.js +++ b/apps/theming/l10n/sv.js @@ -20,8 +20,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teman gör det möjligt att enkelt skräddarsy utseendet på ditt moln. Detta kommer att synas för alla användare.", "Name" : "Namn", "Reset to default" : "Återställ till grundinställningar", - "Web address" : "Webbadress", - "Web address https://…" : "Webbadress https://...", "Slogan" : "Slogan", "Color" : "Färg", "Logo" : "Logotyp", @@ -31,6 +29,8 @@ OC.L10N.register( "Remove background image" : "Ta bort bakgrundsbild", "You are already using a custom theme" : "Du använder redan ett annat tema", "reset to default" : "Återställ till standard", + "Web address" : "Webbadress", + "Web address https://…" : "Webbadress https://...", "There is no error, the file uploaded with success" : "Det finns inga fel, uppladdning av filen lyckades ", "The uploaded file was only partially uploaded" : "Den uppladdade filen laddades bara upp delvis", "Failed to write file to disk." : "Misslyckades att skriva till disk", diff --git a/apps/theming/l10n/sv.json b/apps/theming/l10n/sv.json index 8a37792fed8..60efd285876 100644 --- a/apps/theming/l10n/sv.json +++ b/apps/theming/l10n/sv.json @@ -18,8 +18,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teman gör det möjligt att enkelt skräddarsy utseendet på ditt moln. Detta kommer att synas för alla användare.", "Name" : "Namn", "Reset to default" : "Återställ till grundinställningar", - "Web address" : "Webbadress", - "Web address https://…" : "Webbadress https://...", "Slogan" : "Slogan", "Color" : "Färg", "Logo" : "Logotyp", @@ -29,6 +27,8 @@ "Remove background image" : "Ta bort bakgrundsbild", "You are already using a custom theme" : "Du använder redan ett annat tema", "reset to default" : "Återställ till standard", + "Web address" : "Webbadress", + "Web address https://…" : "Webbadress https://...", "There is no error, the file uploaded with success" : "Det finns inga fel, uppladdning av filen lyckades ", "The uploaded file was only partially uploaded" : "Den uppladdade filen laddades bara upp delvis", "Failed to write file to disk." : "Misslyckades att skriva till disk", diff --git a/apps/theming/l10n/tr.js b/apps/theming/l10n/tr.js index f8955ce9300..cfa9ff82b84 100644 --- a/apps/theming/l10n/tr.js +++ b/apps/theming/l10n/tr.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Ad boş olamaz", "The given name is too long" : "Belirtilen ad çok uzun", "The given web address is too long" : "Belirtilen web adresi çok uzun", + "The given legal notice address is too long" : "Belirtilen yasal bildirim adresi çok uzun", "The given slogan is too long" : "Belirtilen slogan çok uzun", "The given color is invalid" : "Belirtilen renk geçersiz", "The file was uploaded" : "Dosya yüklendi", @@ -22,11 +23,12 @@ OC.L10N.register( "Unsupported image type" : "Görsel türü desteklenmiyor", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Zaten özel bir tema kullanıyorsunuz. Tema uygulaması ayarları bu değer ile değiştirilebilir.", "Theming" : "Tema", + "Legal notice" : "Yasal bildirim", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Temalar kullandığınız kopyanın ve desteklenen istemcilerin genel görünümün kolayca değiştirilmesini sağlar. Tüm kullanıcılara görüntülenir.", "Name" : "Ad", "Reset to default" : "Varsayılana Sıfırla", - "Web address" : "Web adresi", - "Web address https://…" : "Web adresi https://...", + "Web link" : "Web bağlantısı", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Renk", "Logo" : "Logo", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Yeni oturum açma art alanı yükle", "Remove background image" : "Art alan görselini kaldır", "Advanced options" : "Gelişmiş ayarlar", + "Legal notice link" : "Yasal bildirim bağlantısı", "Header logo" : "Üst bilgi logosu", "Upload new header logo" : "Yeni üst bilgi logosu yükle", "Favicon" : "Favicon", @@ -42,6 +45,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Yüklenen logo ve renge göre otomatik olarak favicon üretilmesi için Imagemagick PHP eklentisini SVG desteği ile kurun.", "You are already using a custom theme" : "Zaten özel bir tema kullanıyorsunuz", "reset to default" : "varsayılana dön", + "Web address" : "Web adresi", + "Web address https://…" : "Web adresi https://...", "There is no error, the file uploaded with success" : "Herhangi bir sorun yok, dosya yüklendi", "The uploaded file was only partially uploaded" : "Dosyanın yalnızca bir bölümü yüklenebildi", "Failed to write file to disk." : "Dosya diske yazılamadı.", diff --git a/apps/theming/l10n/tr.json b/apps/theming/l10n/tr.json index 86b5742690a..9b1fc6dc635 100644 --- a/apps/theming/l10n/tr.json +++ b/apps/theming/l10n/tr.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Ad boş olamaz", "The given name is too long" : "Belirtilen ad çok uzun", "The given web address is too long" : "Belirtilen web adresi çok uzun", + "The given legal notice address is too long" : "Belirtilen yasal bildirim adresi çok uzun", "The given slogan is too long" : "Belirtilen slogan çok uzun", "The given color is invalid" : "Belirtilen renk geçersiz", "The file was uploaded" : "Dosya yüklendi", @@ -20,11 +21,12 @@ "Unsupported image type" : "Görsel türü desteklenmiyor", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Zaten özel bir tema kullanıyorsunuz. Tema uygulaması ayarları bu değer ile değiştirilebilir.", "Theming" : "Tema", + "Legal notice" : "Yasal bildirim", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Temalar kullandığınız kopyanın ve desteklenen istemcilerin genel görünümün kolayca değiştirilmesini sağlar. Tüm kullanıcılara görüntülenir.", "Name" : "Ad", "Reset to default" : "Varsayılana Sıfırla", - "Web address" : "Web adresi", - "Web address https://…" : "Web adresi https://...", + "Web link" : "Web bağlantısı", + "https://…" : "https://…", "Slogan" : "Slogan", "Color" : "Renk", "Logo" : "Logo", @@ -33,6 +35,7 @@ "Upload new login background" : "Yeni oturum açma art alanı yükle", "Remove background image" : "Art alan görselini kaldır", "Advanced options" : "Gelişmiş ayarlar", + "Legal notice link" : "Yasal bildirim bağlantısı", "Header logo" : "Üst bilgi logosu", "Upload new header logo" : "Yeni üst bilgi logosu yükle", "Favicon" : "Favicon", @@ -40,6 +43,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Yüklenen logo ve renge göre otomatik olarak favicon üretilmesi için Imagemagick PHP eklentisini SVG desteği ile kurun.", "You are already using a custom theme" : "Zaten özel bir tema kullanıyorsunuz", "reset to default" : "varsayılana dön", + "Web address" : "Web adresi", + "Web address https://…" : "Web adresi https://...", "There is no error, the file uploaded with success" : "Herhangi bir sorun yok, dosya yüklendi", "The uploaded file was only partially uploaded" : "Dosyanın yalnızca bir bölümü yüklenebildi", "Failed to write file to disk." : "Dosya diske yazılamadı.", diff --git a/apps/theming/l10n/vi.js b/apps/theming/l10n/vi.js index 0d075921df0..3ed49b956af 100644 --- a/apps/theming/l10n/vi.js +++ b/apps/theming/l10n/vi.js @@ -15,8 +15,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Điều chỉnh giao diện cho phép bạn có thể dễ dàng tùy biến bố cục trình bày của hệ thống. Khi thực hiện nó sẽ hiện hữu đối với tất cả người dùng", "Name" : "Tên", "Reset to default" : "Đặt lại về mặc định", - "Web address" : "Địa chỉ web", - "Web address https://…" : "Địa chỉ web https://...", "Slogan" : "Khẩu hiệu", "Color" : "Màu sắc", "Logo" : "Logo", @@ -25,6 +23,8 @@ OC.L10N.register( "Upload new login background" : "Tải lên ảnh nền trang đăng nhập mới", "Remove background image" : "Xóa bỏ ảnh nền", "You are already using a custom theme" : "Bạn đã sử dụng một chủ đề tuỳ chỉnh", - "reset to default" : "đặt lại về mặc định" + "reset to default" : "đặt lại về mặc định", + "Web address" : "Địa chỉ web", + "Web address https://…" : "Địa chỉ web https://..." }, "nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/vi.json b/apps/theming/l10n/vi.json index d38c77971be..199a8791391 100644 --- a/apps/theming/l10n/vi.json +++ b/apps/theming/l10n/vi.json @@ -13,8 +13,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Điều chỉnh giao diện cho phép bạn có thể dễ dàng tùy biến bố cục trình bày của hệ thống. Khi thực hiện nó sẽ hiện hữu đối với tất cả người dùng", "Name" : "Tên", "Reset to default" : "Đặt lại về mặc định", - "Web address" : "Địa chỉ web", - "Web address https://…" : "Địa chỉ web https://...", "Slogan" : "Khẩu hiệu", "Color" : "Màu sắc", "Logo" : "Logo", @@ -23,6 +21,8 @@ "Upload new login background" : "Tải lên ảnh nền trang đăng nhập mới", "Remove background image" : "Xóa bỏ ảnh nền", "You are already using a custom theme" : "Bạn đã sử dụng một chủ đề tuỳ chỉnh", - "reset to default" : "đặt lại về mặc định" + "reset to default" : "đặt lại về mặc định", + "Web address" : "Địa chỉ web", + "Web address https://…" : "Địa chỉ web https://..." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/theming/l10n/zh_CN.js b/apps/theming/l10n/zh_CN.js index 3fa45380d61..4903998839b 100644 --- a/apps/theming/l10n/zh_CN.js +++ b/apps/theming/l10n/zh_CN.js @@ -20,8 +20,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主题使得方便地定制你的实例的外观和体验成为可能。所有用户都可以使用。", "Name" : "名字", "Reset to default" : "重置为默认设置", - "Web address" : "网址", - "Web address https://…" : "网址 https://...", "Slogan" : "标语", "Color" : "颜色", "Logo" : "标志", @@ -32,6 +30,8 @@ OC.L10N.register( "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "安装支持SVG图像的PHP扩展Imagemagick,根据上传的logo和颜色自动生成收藏图标。", "You are already using a custom theme" : "你已经在使用自定义主题", "reset to default" : "重置默认", + "Web address" : "网址", + "Web address https://…" : "网址 https://...", "There is no error, the file uploaded with success" : "没有错误,文件已上传成功", "The uploaded file was only partially uploaded" : "上传的文件只有部分已上传", "Failed to write file to disk." : "文件写入磁盘失败。", diff --git a/apps/theming/l10n/zh_CN.json b/apps/theming/l10n/zh_CN.json index 332671cbec1..fc892c60ead 100644 --- a/apps/theming/l10n/zh_CN.json +++ b/apps/theming/l10n/zh_CN.json @@ -18,8 +18,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主题使得方便地定制你的实例的外观和体验成为可能。所有用户都可以使用。", "Name" : "名字", "Reset to default" : "重置为默认设置", - "Web address" : "网址", - "Web address https://…" : "网址 https://...", "Slogan" : "标语", "Color" : "颜色", "Logo" : "标志", @@ -30,6 +28,8 @@ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "安装支持SVG图像的PHP扩展Imagemagick,根据上传的logo和颜色自动生成收藏图标。", "You are already using a custom theme" : "你已经在使用自定义主题", "reset to default" : "重置默认", + "Web address" : "网址", + "Web address https://…" : "网址 https://...", "There is no error, the file uploaded with success" : "没有错误,文件已上传成功", "The uploaded file was only partially uploaded" : "上传的文件只有部分已上传", "Failed to write file to disk." : "文件写入磁盘失败。", diff --git a/apps/theming/l10n/zh_TW.js b/apps/theming/l10n/zh_TW.js index 30e4fa38dc9..794f598e9fe 100644 --- a/apps/theming/l10n/zh_TW.js +++ b/apps/theming/l10n/zh_TW.js @@ -16,8 +16,6 @@ OC.L10N.register( "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "使用佈景主題來客製化網頁界面和客戶端程式的外觀(並非所有客戶端程式都支援佈景主題),外觀將會套用至所有使用者。", "Name" : "名稱", "Reset to default" : "恢復預設值", - "Web address" : "網址", - "Web address https://…" : "網址 https://…", "Slogan" : "標語", "Color" : "顏色", "Logo" : "Logo", @@ -26,6 +24,8 @@ OC.L10N.register( "Upload new login background" : "上傳新的登入頁背景", "Remove background image" : "移除背景圖片", "You are already using a custom theme" : "您正在使用自訂主題", - "reset to default" : "恢復預設值" + "reset to default" : "恢復預設值", + "Web address" : "網址", + "Web address https://…" : "網址 https://…" }, "nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/zh_TW.json b/apps/theming/l10n/zh_TW.json index 1d8bcfe8eeb..c1b066e07c9 100644 --- a/apps/theming/l10n/zh_TW.json +++ b/apps/theming/l10n/zh_TW.json @@ -14,8 +14,6 @@ "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "使用佈景主題來客製化網頁界面和客戶端程式的外觀(並非所有客戶端程式都支援佈景主題),外觀將會套用至所有使用者。", "Name" : "名稱", "Reset to default" : "恢復預設值", - "Web address" : "網址", - "Web address https://…" : "網址 https://…", "Slogan" : "標語", "Color" : "顏色", "Logo" : "Logo", @@ -24,6 +22,8 @@ "Upload new login background" : "上傳新的登入頁背景", "Remove background image" : "移除背景圖片", "You are already using a custom theme" : "您正在使用自訂主題", - "reset to default" : "恢復預設值" + "reset to default" : "恢復預設值", + "Web address" : "網址", + "Web address https://…" : "網址 https://…" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php index 421af051998..dd7bf4bb04d 100644 --- a/apps/theming/lib/Controller/ThemingController.php +++ b/apps/theming/lib/Controller/ThemingController.php @@ -161,6 +161,16 @@ class ThemingController extends Controller { ]); } break; + case 'imprintUrl': + if (strlen($value) > 500) { + return new DataResponse([ + 'data' => [ + 'message' => $this->l10n->t('The given legal notice address is too long'), + ], + 'status' => 'error' + ]); + } + break; case 'slogan': if (strlen($value) > 500) { return new DataResponse([ @@ -248,8 +258,9 @@ class ThemingController extends Controller { } $target = $folder->newFile($key); - $supportedFormats = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'text/svg']; - if (!in_array($image['type'], $supportedFormats)) { + $supportedFormats = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/svg']; + $detectedMimeType = mime_content_type($image['tmp_name']); + if (!in_array($image['type'], $supportedFormats) || !in_array($detectedMimeType, $supportedFormats)) { return new DataResponse( [ 'data' => [ @@ -353,6 +364,7 @@ class ThemingController extends Controller { $response->addHeader('Expires', $expires->format(\DateTime::RFC2822)); $response->addHeader('Pragma', 'cache'); $response->addHeader('Content-Type', $this->config->getAppValue($this->appName, $key . 'Mime', '')); + $response->addHeader('Content-Disposition', 'attachment; filename="' . $key . '"'); return $response; } @@ -406,6 +418,7 @@ class ThemingController extends Controller { url: ' . json_encode($this->themingDefaults->getBaseUrl()) . ', slogan: ' . json_encode($this->themingDefaults->getSlogan()) . ', color: ' . json_encode($this->themingDefaults->getColorPrimary()) . ', + imprintUrl: ' . json_encode($this->themingDefaults->getImprintUrl()) . ', inverted: ' . json_encode($this->util->invertTextColor($this->themingDefaults->getColorPrimary())) . ', cacheBuster: ' . json_encode($cacheBusterValue) . ' }; diff --git a/apps/theming/lib/Settings/Admin.php b/apps/theming/lib/Settings/Admin.php index 7c937f19790..ef296688ed2 100644 --- a/apps/theming/lib/Settings/Admin.php +++ b/apps/theming/lib/Settings/Admin.php @@ -84,6 +84,7 @@ class Admin implements ISettings { 'canThemeIcons' => $this->themingDefaults->shouldReplaceIcons(), 'iconDocs' => $this->urlGenerator->linkToDocs('admin-theming-icons'), 'images' => $this->imageManager->getCustomImages(), + 'imprintUrl' => $this->themingDefaults->getImprintUrl(), ]; return new TemplateResponse('theming', 'settings-admin', $parameters, ''); diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index 2e6b667b1f6..d2f57471242 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -141,12 +141,26 @@ class ThemingDefaults extends \OC_Defaults { return \OCP\Util::sanitizeHTML($this->config->getAppValue('theming', 'slogan', $this->slogan)); } + public function getImprintUrl() { + return $this->config->getAppValue('theming', 'imprintUrl', ''); + } + public function getShortFooter() { $slogan = $this->getSlogan(); $footer = '<a href="'. $this->getBaseUrl() . '" target="_blank"' . ' rel="noreferrer noopener">' .$this->getEntity() . '</a>'. ($slogan !== '' ? ' – ' . $slogan : ''); + $imprintUrl = (string)$this->getImprintUrl(); + if($imprintUrl !== '' + && filter_var($imprintUrl, FILTER_VALIDATE_URL, [ + 'flags' => FILTER_FLAG_SCHEME_REQUIRED | FILTER_FLAG_HOST_REQUIRED + ]) + ) { + $footer .= '<br/><a href="' . $imprintUrl . '" class="legal" target="_blank"' . + ' rel="noreferrer noopener">' . $this->l->t('Legal notice') . '</a>'; + } + return $footer; } diff --git a/apps/theming/templates/settings-admin.php b/apps/theming/templates/settings-admin.php index ea9925f3a64..26ab78637c9 100644 --- a/apps/theming/templates/settings-admin.php +++ b/apps/theming/templates/settings-admin.php @@ -47,8 +47,8 @@ style('theming', 'settings-admin'); </div> <div> <label> - <span><?php p($l->t('Web address')) ?></span> - <input id="theming-url" type="url" placeholder="<?php p($l->t('Web address https://…')); ?>" value="<?php p($_['url']) ?>" maxlength="500" /> + <span><?php p($l->t('Web link')) ?></span> + <input id="theming-url" type="url" placeholder="<?php p($l->t('https://…')); ?>" value="<?php p($_['url']) ?>" maxlength="500" /> <div data-setting="url" data-toggle="tooltip" data-original-title="<?php p($l->t('Reset to default')); ?>" class="theme-undo icon icon-history"></div> </label> </div> @@ -94,6 +94,13 @@ style('theming', 'settings-admin'); <h2 class="inlineblock"><?php p($l->t('Advanced options')); ?></h2> <div class="advanced-options"> + <div> + <label> + <span><?php p($l->t('Legal notice link')) ?></span> + <input id="theming-imprintUrl" type="url" placeholder="<?php p($l->t('https://…')); ?>" value="<?php p($_['imprintUrl']) ?>" maxlength="500" /> + <div data-setting="imprintUrl" data-toggle="tooltip" data-original-title="<?php p($l->t('Reset to default')); ?>" class="theme-undo icon icon-history"></div> + </label> + </div> <div class="advanced-option-logoheader"> <form class="uploadButton" method="post" action="<?php p($_['uploadLogoRoute']) ?>" data-image-key="logoheader"> <input type="hidden" id="theming-logoheaderMime" value="<?php p($_['images']['logoheader']['mime']); ?>" /> diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index dda881525f0..f196541d371 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -255,7 +255,7 @@ class ThemingControllerTest extends TestCase { ->method('getUploadedFile') ->with('image') ->willReturn([ - 'tmp_name' => 'logo.pdf', + 'tmp_name' => __DIR__ . '/../../../../tests/data/lorem.txt', 'type' => 'application/pdf', 'name' => 'logo.pdf', 'error' => 0, @@ -295,7 +295,7 @@ class ThemingControllerTest extends TestCase { ['image/gif'], ['image/png'], ['image/svg+xml'], - ['text/svg'], + ['image/svg'] ]; } @@ -305,6 +305,7 @@ class ThemingControllerTest extends TestCase { $destination = \OC::$server->getTempManager()->getTemporaryFolder(); touch($tmpLogo); + copy(__DIR__ . '/../../../../tests/data/testimage.png', $tmpLogo); $this->request ->expects($this->at(0)) ->method('getParam') @@ -377,10 +378,10 @@ class ThemingControllerTest extends TestCase { /** @dataProvider dataUpdateImages */ public function testUpdateLogoLoginScreenUpload($folderExists) { - $tmpLogo = \OC::$server->getTempManager()->getTemporaryFolder() . '/logo.svg'; + $tmpLogo = \OC::$server->getTempManager()->getTemporaryFolder() . 'logo.png'; touch($tmpLogo); - file_put_contents($tmpLogo, file_get_contents(__DIR__ . '/../../../../tests/data/desktopapp.png')); + copy(__DIR__ . '/../../../../tests/data/desktopapp.png', $tmpLogo); $this->request ->expects($this->at(0)) ->method('getParam') @@ -392,7 +393,7 @@ class ThemingControllerTest extends TestCase { ->with('image') ->willReturn([ 'tmp_name' => $tmpLogo, - 'type' => 'text/svg', + 'type' => 'image/svg+xml', 'name' => 'logo.svg', 'error' => 0, ]); @@ -524,7 +525,7 @@ class ThemingControllerTest extends TestCase { ->with('image') ->willReturn([ 'tmp_name' => '', - 'type' => 'text/svg', + 'type' => 'image/svg+xml', 'name' => 'logo.svg', 'error' => $error, ]); @@ -700,6 +701,7 @@ class ThemingControllerTest extends TestCase { $expected->addHeader('Expires', $expires->format(\DateTime::RFC2822)); $expected->addHeader('Pragma', 'cache'); $expected->addHeader('Content-Type', 'text/svg'); + $expected->addHeader('Content-Disposition', 'attachment; filename="logo"'); @$this->assertEquals($expected, $this->themingController->getImage('logo')); } @@ -732,6 +734,7 @@ class ThemingControllerTest extends TestCase { $expected->addHeader('Expires', $expires->format(\DateTime::RFC2822)); $expected->addHeader('Pragma', 'cache'); $expected->addHeader('Content-Type', 'image/png'); + $expected->addHeader('Content-Disposition', 'attachment; filename="background"'); @$this->assertEquals($expected, $this->themingController->getImage('background')); } @@ -814,6 +817,7 @@ class ThemingControllerTest extends TestCase { url: "", slogan: "", color: "#000", + imprintUrl: null, inverted: false, cacheBuster: null }; @@ -848,6 +852,7 @@ class ThemingControllerTest extends TestCase { url: "nextcloudurl", slogan: "awesome", color: "#ffffff", + imprintUrl: null, inverted: true, cacheBuster: null }; diff --git a/apps/theming/tests/Settings/AdminTest.php b/apps/theming/tests/Settings/AdminTest.php index 4eac689fb3f..f7361677d77 100644 --- a/apps/theming/tests/Settings/AdminTest.php +++ b/apps/theming/tests/Settings/AdminTest.php @@ -83,6 +83,10 @@ class AdminTest extends TestCase { ->willReturn('https://example.com'); $this->themingDefaults ->expects($this->once()) + ->method('getImprintUrl') + ->willReturn(''); + $this->themingDefaults + ->expects($this->once()) ->method('getSlogan') ->willReturn('MySlogan'); $this->themingDefaults @@ -105,6 +109,7 @@ class AdminTest extends TestCase { 'canThemeIcons' => null, 'iconDocs' => null, 'images' => [], + 'imprintUrl' => '', ]; $expected = new TemplateResponse('theming', 'settings-admin', $params, ''); @@ -132,6 +137,10 @@ class AdminTest extends TestCase { ->willReturn('https://example.com'); $this->themingDefaults ->expects($this->once()) + ->method('getImprintUrl') + ->willReturn(''); + $this->themingDefaults + ->expects($this->once()) ->method('getSlogan') ->willReturn('MySlogan'); $this->themingDefaults @@ -154,6 +163,7 @@ class AdminTest extends TestCase { 'canThemeIcons' => null, 'iconDocs' => '', 'images' => [], + 'imprintUrl' => '', ]; $expected = new TemplateResponse('theming', 'settings-admin', $params, ''); diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index c943af01c6c..b454b21f840 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -195,6 +195,27 @@ class ThemingDefaultsTest extends TestCase { $this->assertEquals('https://example.com/', $this->template->getBaseUrl()); } + public function imprintUrlProvider() { + return [ + [ '' ], + [ 'https://example.com/imprint.html'] + ]; + } + + /** + * @param $imprintUrl + * @dataProvider imprintUrlProvider + */ + public function testGetImprintURL($imprintUrl) { + $this->config + ->expects($this->once()) + ->method('getAppValue') + ->with('theming', 'imprintUrl', '') + ->willReturn($imprintUrl); + + $this->assertEquals($imprintUrl, $this->template->getImprintUrl()); + } + public function testGetSloganWithDefault() { $this->config ->expects($this->once()) @@ -217,12 +238,13 @@ class ThemingDefaultsTest extends TestCase { public function testGetShortFooter() { $this->config - ->expects($this->exactly(3)) + ->expects($this->exactly(4)) ->method('getAppValue') ->willReturnMap([ ['theming', 'url', $this->defaults->getBaseUrl(), 'url'], ['theming', 'name', 'Nextcloud', 'Name'], ['theming', 'slogan', $this->defaults->getSlogan(), 'Slogan'], + ['theming', 'imprintUrl', '', ''], ]); $this->assertEquals('<a href="url" target="_blank" rel="noreferrer noopener">Name</a> – Slogan', $this->template->getShortFooter()); @@ -230,17 +252,62 @@ class ThemingDefaultsTest extends TestCase { public function testGetShortFooterEmptySlogan() { $this->config - ->expects($this->exactly(3)) + ->expects($this->exactly(4)) ->method('getAppValue') ->willReturnMap([ ['theming', 'url', $this->defaults->getBaseUrl(), 'url'], ['theming', 'name', 'Nextcloud', 'Name'], ['theming', 'slogan', $this->defaults->getSlogan(), ''], + ['theming', 'imprintUrl', '', ''], ]); $this->assertEquals('<a href="url" target="_blank" rel="noreferrer noopener">Name</a>', $this->template->getShortFooter()); } + public function testGetShortFooterImprint() { + $this->config + ->expects($this->exactly(4)) + ->method('getAppValue') + ->willReturnMap([ + ['theming', 'url', $this->defaults->getBaseUrl(), 'url'], + ['theming', 'name', 'Nextcloud', 'Name'], + ['theming', 'slogan', $this->defaults->getSlogan(), 'Slogan'], + ['theming', 'imprintUrl', '', 'https://example.com/imprint'], + ]); + + $this->l10n + ->expects($this->any()) + ->method('t') + ->willReturnArgument(0); + + $this->assertEquals('<a href="url" target="_blank" rel="noreferrer noopener">Name</a> – Slogan<br/><a href="https://example.com/imprint" class="legal" target="_blank" rel="noreferrer noopener">Legal notice</a>', $this->template->getShortFooter()); + } + + public function invalidImprintUrlProvider() { + return [ + ['example.com/imprint'], # missing scheme + ['https:///imprint'], # missing host + ]; + } + + /** + * @param $invalidImprintUrl + * @dataProvider invalidImprintUrlProvider + */ + public function testGetShortFooterInvalidImprint($invalidImprintUrl) { + $this->config + ->expects($this->exactly(4)) + ->method('getAppValue') + ->willReturnMap([ + ['theming', 'url', $this->defaults->getBaseUrl(), 'url'], + ['theming', 'name', 'Nextcloud', 'Name'], + ['theming', 'slogan', $this->defaults->getSlogan(), 'Slogan'], + ['theming', 'imprintUrl', '', $invalidImprintUrl], + ]); + + $this->assertEquals('<a href="url" target="_blank" rel="noreferrer noopener">Name</a> – Slogan', $this->template->getShortFooter()); + } + public function testgetColorPrimaryWithDefault() { $this->config ->expects($this->once()) diff --git a/apps/twofactor_backupcodes/l10n/cs.js b/apps/twofactor_backupcodes/l10n/cs.js index 6b8ceac654d..4ca9972e906 100644 --- a/apps/twofactor_backupcodes/l10n/cs.js +++ b/apps/twofactor_backupcodes/l10n/cs.js @@ -15,4 +15,4 @@ OC.L10N.register( "Use backup code" : "Použít záložní kód", "Second-factor backup codes" : "Dvoufázové záložní kódy" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/twofactor_backupcodes/l10n/cs.json b/apps/twofactor_backupcodes/l10n/cs.json index c4f01be5418..600d44af29c 100644 --- a/apps/twofactor_backupcodes/l10n/cs.json +++ b/apps/twofactor_backupcodes/l10n/cs.json @@ -12,5 +12,5 @@ "Backup code" : "Záložní kód", "Use backup code" : "Použít záložní kód", "Second-factor backup codes" : "Dvoufázové záložní kódy" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/ka_GE.js b/apps/twofactor_backupcodes/l10n/ka_GE.js index 93de0eaee8f..4ab3e700e57 100644 --- a/apps/twofactor_backupcodes/l10n/ka_GE.js +++ b/apps/twofactor_backupcodes/l10n/ka_GE.js @@ -16,4 +16,4 @@ OC.L10N.register( "Two factor backup codes" : "მეორე-ფაქტორის ბექაფის კოდები", "Second-factor backup codes" : "მეორე-ფაქტორის ბექაფის კოდები" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/twofactor_backupcodes/l10n/ka_GE.json b/apps/twofactor_backupcodes/l10n/ka_GE.json index f6c95d674b8..7c0608716bc 100644 --- a/apps/twofactor_backupcodes/l10n/ka_GE.json +++ b/apps/twofactor_backupcodes/l10n/ka_GE.json @@ -13,5 +13,5 @@ "Use backup code" : "ბექაფის კოდების გამოყენება", "Two factor backup codes" : "მეორე-ფაქტორის ბექაფის კოდები", "Second-factor backup codes" : "მეორე-ფაქტორის ბექაფის კოდები" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/sk.js b/apps/twofactor_backupcodes/l10n/sk.js index d81158eb5ef..81608f97acf 100644 --- a/apps/twofactor_backupcodes/l10n/sk.js +++ b/apps/twofactor_backupcodes/l10n/sk.js @@ -15,4 +15,4 @@ OC.L10N.register( "Use backup code" : "Použiť záložný kód", "Second-factor backup codes" : "Dvojfaktorové záložné kódy" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/twofactor_backupcodes/l10n/sk.json b/apps/twofactor_backupcodes/l10n/sk.json index 230cfa62523..d15ff5dc37b 100644 --- a/apps/twofactor_backupcodes/l10n/sk.json +++ b/apps/twofactor_backupcodes/l10n/sk.json @@ -12,5 +12,5 @@ "Backup code" : "Záložný kód", "Use backup code" : "Použiť záložný kód", "Second-factor backup codes" : "Dvojfaktorové záložné kódy" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/cs.js b/apps/updatenotification/l10n/cs.js index f060b245894..28e669d107c 100644 --- a/apps/updatenotification/l10n/cs.js +++ b/apps/updatenotification/l10n/cs.js @@ -29,4 +29,4 @@ OC.L10N.register( "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.", "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/updatenotification/l10n/cs.json b/apps/updatenotification/l10n/cs.json index 9226c60df94..9c35a6e402f 100644 --- a/apps/updatenotification/l10n/cs.json +++ b/apps/updatenotification/l10n/cs.json @@ -26,5 +26,5 @@ "Checked on %s" : "Zkontrolováno %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.", "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_CL.js b/apps/updatenotification/l10n/es_CL.js index c5f27640c95..c09deca12f9 100644 --- a/apps/updatenotification/l10n/es_CL.js +++ b/apps/updatenotification/l10n/es_CL.js @@ -2,15 +2,26 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", "Your version is up to date." : "Tu verisón está actualizada.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", - "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Nota que después una nueva publicación puede tomar algo de tiempo antes de que se muestre aquí. Distribuimos nuevas versiones para que sean distribuidas a través del tiempo para nuestros usuarios y algunas veces nos saltamos una versión cuando encontramos detalles.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Nota que después una nueva publicación puede tomar algo de tiempo antes de que se muestre aquí. Distribuimos nuevas versiones para que sean distribuidas a través del tiempo para nuestros usuarios y algunas veces omitimos una versión cuando encontramos detalles.", "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", + "A new version is available: <strong>{newVersionString}</strong>" : "Una versión más reciente está disponible: <strong>{newVersionString}</strong>", + "Checked on {lastCheckedDate}" : "Verificado el {lastCheckedDate}", + "Checking apps for compatible updates" : "Verificando si las aplicaciones tienen actualizaciones compatibles", + "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Por favor asegurate que en tu config.php no se establezca <samp>appstoreenabled</samp> como falso.", + "Could not connect to the appstore or the appstore returned no updates at all. Search manually for updates or make sure your server has access to the internet and can connect to the appstore." : "No fue posible conectarse a la appstore o bien la appstore no regresó ninguna actualización. Busca manualmente o asegurate que tu servidor teng acceso a Internet y pueda conectarse a la appstore. ", + "<strong>All</strong> apps have an update for this version available" : "<strong>Todas</strong> las aplicaciones tienen una actualización disponible para esta versión", + "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> aplicación no cuenta con una actualización para esta versión","<strong>%n</strong> aplicaciones no cuentan con una actualización para esta versión"], + "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", + "<strong>stable</strong> is the most recent stable version. It is suited for production use and will always update to the latest major version." : "<strong>estable</strong> es la version estable más reciente. Es adecuada para su uso en producción y siempre estará actualizada a la versión mayor más reciente. ", + "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", "Update notifications" : "Actualizar notificaciones", "Channel updated" : "Canal actualizado", @@ -19,7 +30,9 @@ OC.L10N.register( "Update to %1$s is available." : "La actualización a %1$s está disponible. ", "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", + "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", "Checked on %s" : "Verificado el %s", "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", diff --git a/apps/updatenotification/l10n/es_CL.json b/apps/updatenotification/l10n/es_CL.json index 35a0f910f75..36b78263980 100644 --- a/apps/updatenotification/l10n/es_CL.json +++ b/apps/updatenotification/l10n/es_CL.json @@ -1,14 +1,25 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", "Your version is up to date." : "Tu verisón está actualizada.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", - "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Nota que después una nueva publicación puede tomar algo de tiempo antes de que se muestre aquí. Distribuimos nuevas versiones para que sean distribuidas a través del tiempo para nuestros usuarios y algunas veces nos saltamos una versión cuando encontramos detalles.", + "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Nota que después una nueva publicación puede tomar algo de tiempo antes de que se muestre aquí. Distribuimos nuevas versiones para que sean distribuidas a través del tiempo para nuestros usuarios y algunas veces omitimos una versión cuando encontramos detalles.", "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", + "A new version is available: <strong>{newVersionString}</strong>" : "Una versión más reciente está disponible: <strong>{newVersionString}</strong>", + "Checked on {lastCheckedDate}" : "Verificado el {lastCheckedDate}", + "Checking apps for compatible updates" : "Verificando si las aplicaciones tienen actualizaciones compatibles", + "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Por favor asegurate que en tu config.php no se establezca <samp>appstoreenabled</samp> como falso.", + "Could not connect to the appstore or the appstore returned no updates at all. Search manually for updates or make sure your server has access to the internet and can connect to the appstore." : "No fue posible conectarse a la appstore o bien la appstore no regresó ninguna actualización. Busca manualmente o asegurate que tu servidor teng acceso a Internet y pueda conectarse a la appstore. ", + "<strong>All</strong> apps have an update for this version available" : "<strong>Todas</strong> las aplicaciones tienen una actualización disponible para esta versión", + "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> aplicación no cuenta con una actualización para esta versión","<strong>%n</strong> aplicaciones no cuentan con una actualización para esta versión"], + "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", + "<strong>stable</strong> is the most recent stable version. It is suited for production use and will always update to the latest major version." : "<strong>estable</strong> es la version estable más reciente. Es adecuada para su uso en producción y siempre estará actualizada a la versión mayor más reciente. ", + "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", "Update notifications" : "Actualizar notificaciones", "Channel updated" : "Canal actualizado", @@ -17,7 +28,9 @@ "Update to %1$s is available." : "La actualización a %1$s está disponible. ", "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", + "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", "Checked on %s" : "Verificado el %s", "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", diff --git a/apps/updatenotification/l10n/ka_GE.js b/apps/updatenotification/l10n/ka_GE.js index 5f4d40c1227..6036fc2428e 100644 --- a/apps/updatenotification/l10n/ka_GE.js +++ b/apps/updatenotification/l10n/ka_GE.js @@ -27,4 +27,4 @@ OC.L10N.register( "The selected update channel makes dedicated notifications for the server obsolete." : "არჩეული განახლების არხი მოძველებული სერვერის შესახებ საჭიროებს გამოყოფილ შეტყობინებებს.", "The update check is not yet finished. Please refresh the page." : "განახლება ჯერ არ დასრულებულა. გთხოვთ განაახლოთ გვერდი." }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/updatenotification/l10n/ka_GE.json b/apps/updatenotification/l10n/ka_GE.json index 3ccf4e2a5a8..dc7567a23d5 100644 --- a/apps/updatenotification/l10n/ka_GE.json +++ b/apps/updatenotification/l10n/ka_GE.json @@ -24,5 +24,5 @@ "Checked on %s" : "შემოწმდა %s-ზე", "The selected update channel makes dedicated notifications for the server obsolete." : "არჩეული განახლების არხი მოძველებული სერვერის შესახებ საჭიროებს გამოყოფილ შეტყობინებებს.", "The update check is not yet finished. Please refresh the page." : "განახლება ჯერ არ დასრულებულა. გთხოვთ განაახლოთ გვერდი." -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/lt_LT.js b/apps/updatenotification/l10n/lt_LT.js index d644525946a..a87493aae63 100644 --- a/apps/updatenotification/l10n/lt_LT.js +++ b/apps/updatenotification/l10n/lt_LT.js @@ -24,4 +24,4 @@ OC.L10N.register( "Checked on %s" : "Tikrinta %s", "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo." }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/updatenotification/l10n/lt_LT.json b/apps/updatenotification/l10n/lt_LT.json index 1ab530e1093..7bc1838b681 100644 --- a/apps/updatenotification/l10n/lt_LT.json +++ b/apps/updatenotification/l10n/lt_LT.json @@ -21,5 +21,5 @@ "Download now" : "Atsisiųsti dabar", "Checked on %s" : "Tikrinta %s", "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo." -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/sk.js b/apps/updatenotification/l10n/sk.js index b6e93e41e01..a0c36afb569 100644 --- a/apps/updatenotification/l10n/sk.js +++ b/apps/updatenotification/l10n/sk.js @@ -28,4 +28,4 @@ OC.L10N.register( "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané.", "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/updatenotification/l10n/sk.json b/apps/updatenotification/l10n/sk.json index b3537282c72..f0a15730d3e 100644 --- a/apps/updatenotification/l10n/sk.json +++ b/apps/updatenotification/l10n/sk.json @@ -25,5 +25,5 @@ "Checked on %s" : "Skontrolované %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané.", "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js index 57cc721a460..9db12023c6d 100644 --- a/apps/user_ldap/l10n/cs.js +++ b/apps/user_ldap/l10n/cs.js @@ -57,10 +57,10 @@ OC.L10N.register( "Please login with the new password" : "Prosím, přihlaste se pomocí nového hesla", "Your password will expire tomorrow." : "Vaše heslo zítra vyprší.", "Your password will expire today." : "Vaše heslo dnes vyprší.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo vyprší za %n den.","Vaše heslo vyprší za %n dny.","Vaše heslo vyprší za %n dní."], + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo vyprší za %n den.","Vaše heslo vyprší za %n dny.","Vaše heslo vyprší za %n dní.","Vaše heslo vyprší za %n dní."], "LDAP / AD integration" : "LDAP / AD propojení", - "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], - "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], + "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin","nalezeno %s skupin"], + "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů","nalezeno %s uživatelů"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", @@ -190,4 +190,4 @@ OC.L10N.register( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Varování:</b> Aplikace user_ldap a user_webdavauth jsou vzájemně nekompatibilní. Můžete zaznamenat neočekávané chování. Požádejte prosím svého správce systému o zakázání jedné z nich.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména jsou používána pro uchovávání a přiřazování (meta)dat. Pro správnou identifikaci a rozpoznání uživatelů bude mít každý LDAP uživatel interní uživatelské jméno. To vyžaduje mapování uživatelských jmen na uživatele LDAP. Vytvořené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navíc udržována v paměti pro snížení interakce s LDAP, ale není používána pro identifikaci. Pokud se DN změní, bude to správně rozpoznáno. Interní uživatelské jméno se používá celé. Vyčištění mapování zanechá zbytky všude. Vyčištění navíc není specifické pro každou konfiguraci, bude mít vliv na všechny LDAP konfigurace! Nikdy nečistěte mapování v produkčním prostředí, ale pouze v testovací nebo experimentální fázi." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json index e3a01f40484..8e11584c1bc 100644 --- a/apps/user_ldap/l10n/cs.json +++ b/apps/user_ldap/l10n/cs.json @@ -55,10 +55,10 @@ "Please login with the new password" : "Prosím, přihlaste se pomocí nového hesla", "Your password will expire tomorrow." : "Vaše heslo zítra vyprší.", "Your password will expire today." : "Vaše heslo dnes vyprší.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo vyprší za %n den.","Vaše heslo vyprší za %n dny.","Vaše heslo vyprší za %n dní."], + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo vyprší za %n den.","Vaše heslo vyprší za %n dny.","Vaše heslo vyprší za %n dní.","Vaše heslo vyprší za %n dní."], "LDAP / AD integration" : "LDAP / AD propojení", - "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], - "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], + "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin","nalezeno %s skupin"], + "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů","nalezeno %s uživatelů"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", @@ -187,5 +187,5 @@ "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Varování:</b> Aplikace user_ldap a user_webdavauth jsou vzájemně nekompatibilní. Můžete zaznamenat neočekávané chování. Požádejte prosím svého správce systému o zakázání jedné z nich.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména jsou používána pro uchovávání a přiřazování (meta)dat. Pro správnou identifikaci a rozpoznání uživatelů bude mít každý LDAP uživatel interní uživatelské jméno. To vyžaduje mapování uživatelských jmen na uživatele LDAP. Vytvořené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navíc udržována v paměti pro snížení interakce s LDAP, ale není používána pro identifikaci. Pokud se DN změní, bude to správně rozpoznáno. Interní uživatelské jméno se používá celé. Vyčištění mapování zanechá zbytky všude. Vyčištění navíc není specifické pro každou konfiguraci, bude mít vliv na všechny LDAP konfigurace! Nikdy nečistěte mapování v produkčním prostředí, ale pouze v testovací nebo experimentální fázi." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js index c47089e7184..d6aa7e688cd 100644 --- a/apps/user_ldap/l10n/he.js +++ b/apps/user_ldap/l10n/he.js @@ -38,8 +38,8 @@ OC.L10N.register( "A connection error to LDAP / AD occurred, please check host, port and credentials." : "אירעה שגיאת חיבור ל- LDAP / AD, יש לבדוק את השרת, שער החיבור - פורט ופרטי הכניסה. ", "Please provide a login name to test against" : "יש לספק שם משתמש לבדיקה מולו", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "שדה הקבוצה נוטרל, כיוון ששרת ה- LDAP / AD לא תומך ב- memberOf.", - "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות"], - "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים"], + "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות","אותרו %s קבוצות","אותרו %s קבוצות"], + "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים","אותרו %s משתמשים","אותרו %s משתמשים"], "Could not find the desired feature" : "לא אותרה התכונה הרצויה", "Invalid Host" : "מארח לא חוקי", "Test Configuration" : "בדיקת הגדרות", @@ -134,4 +134,4 @@ OC.L10N.register( "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>אזהרה:</b> יישומים user_ldap ו- user_webdavauth אינם תואמים. תופעות לא מוסברות עלולות להתקיים. כדאי לפנות למנהל המערכת כדי שינטרל אחד מהם." }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json index c98905ef12d..5f383fc0ee9 100644 --- a/apps/user_ldap/l10n/he.json +++ b/apps/user_ldap/l10n/he.json @@ -36,8 +36,8 @@ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "אירעה שגיאת חיבור ל- LDAP / AD, יש לבדוק את השרת, שער החיבור - פורט ופרטי הכניסה. ", "Please provide a login name to test against" : "יש לספק שם משתמש לבדיקה מולו", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "שדה הקבוצה נוטרל, כיוון ששרת ה- LDAP / AD לא תומך ב- memberOf.", - "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות"], - "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים"], + "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות","אותרו %s קבוצות","אותרו %s קבוצות"], + "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים","אותרו %s משתמשים","אותרו %s משתמשים"], "Could not find the desired feature" : "לא אותרה התכונה הרצויה", "Invalid Host" : "מארח לא חוקי", "Test Configuration" : "בדיקת הגדרות", @@ -131,5 +131,5 @@ " entries available within the provided Base DN" : " קיימות רשומות מתוך בסיס ה- DN שסופק", "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>אזהרה:</b> יישומים user_ldap ו- user_webdavauth אינם תואמים. תופעות לא מוסברות עלולות להתקיים. כדאי לפנות למנהל המערכת כדי שינטרל אחד מהם." -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/ka_GE.js b/apps/user_ldap/l10n/ka_GE.js index 11e68a6ed90..393777ac844 100644 --- a/apps/user_ldap/l10n/ka_GE.js +++ b/apps/user_ldap/l10n/ka_GE.js @@ -57,10 +57,10 @@ OC.L10N.register( "Please login with the new password" : "გთხოვთ გაიაროთ ავტორიზაცია ახალი პაროლით", "Your password will expire tomorrow." : "თქვენი პაროლი გაუქმდება ხვალ.", "Your password will expire today." : "თქვენი პაროლი გაუქმდება დღეს.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["თქვენი პაროლი გაუქმდება %n დღეში."], + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["თქვენი პაროლი გაუქმდება %n დღეში.","თქვენი პაროლი გაუქმდება %n დღეში."], "LDAP / AD integration" : "LDAP / AD ინტეგრაცია", - "_%s group found_::_%s groups found_" : ["ნაპოვნა %s ჯგუფი"], - "_%s user found_::_%s users found_" : ["ნაპოვნია %s მომხმარებელი"], + "_%s group found_::_%s groups found_" : ["ნაპოვნა %s ჯგუფი","ნაპოვნა %s ჯგუფი"], + "_%s user found_::_%s users found_" : ["ნაპოვნია %s მომხმარებელი","ნაპოვნია %s მომხმარებელი"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "მომხმარებლის დისპლეის სახელის ატრიბუტის აღმოჩენა ვერ მოხერხდა. გთხოვთ LDAP-ის პარამეტრებში თქვენით დააყენოთ ის.", "Could not find the desired feature" : "მოთხოვნილი ფუნქციონალის პოვნა ვერ მოხერხდა", "Invalid Host" : "არასწორი ჰოსტი", @@ -190,4 +190,4 @@ OC.L10N.register( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>გაფრთხილება:</b> აპლიკაციები user_ldap და user_webdavauth არაა თავსებადი. შესაძლოა შეგვხდეთ მოულოდნელი ქმედება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს ერთ-ერთის გათიშვა.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "მომხმარებლების სახელები გამოიყენება (მეტა) მონაცემების შესანახად და დასანიშნად. ზუსტი იდენტიფიკაციისა და ამოზნობისთვის, ყოველ LDAP-ის მომხმარებელს ექნება შიდა მომხმარებელი. ეს საჭიროებს ბმას მომხმარებელსა და LDAP-ის სახელს შორის. შექმნილი მომხმარებელი ებმება LDAP-ის მომხმარებელის UUID-ს. LDAP-თან ინტერაქციის შესამცირებლად, დამატებითად კეშირდება DN, მაგრამ არ ხდება მისი მოხმარება იდენტიფიკაციისთვის. ბმების გასუფთავება ბევრ ადგილას დატოვებს კვალს. ბმების გასუფთავება არაა კონფიგურაციასთან მგრძნობიარე, ის მოქმედებს ყველა LDAP-ის კონფიგურაციაზე! არასდროს გაასუფთავოთ ბმები საწარმოო გარემოში, მოიხმარეთ ეს მხოლოდ შემოწმების ან ექსპერიმენტისთვის." }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/user_ldap/l10n/ka_GE.json b/apps/user_ldap/l10n/ka_GE.json index 45ee0df38fd..b3f9cc9639c 100644 --- a/apps/user_ldap/l10n/ka_GE.json +++ b/apps/user_ldap/l10n/ka_GE.json @@ -55,10 +55,10 @@ "Please login with the new password" : "გთხოვთ გაიაროთ ავტორიზაცია ახალი პაროლით", "Your password will expire tomorrow." : "თქვენი პაროლი გაუქმდება ხვალ.", "Your password will expire today." : "თქვენი პაროლი გაუქმდება დღეს.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["თქვენი პაროლი გაუქმდება %n დღეში."], + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["თქვენი პაროლი გაუქმდება %n დღეში.","თქვენი პაროლი გაუქმდება %n დღეში."], "LDAP / AD integration" : "LDAP / AD ინტეგრაცია", - "_%s group found_::_%s groups found_" : ["ნაპოვნა %s ჯგუფი"], - "_%s user found_::_%s users found_" : ["ნაპოვნია %s მომხმარებელი"], + "_%s group found_::_%s groups found_" : ["ნაპოვნა %s ჯგუფი","ნაპოვნა %s ჯგუფი"], + "_%s user found_::_%s users found_" : ["ნაპოვნია %s მომხმარებელი","ნაპოვნია %s მომხმარებელი"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "მომხმარებლის დისპლეის სახელის ატრიბუტის აღმოჩენა ვერ მოხერხდა. გთხოვთ LDAP-ის პარამეტრებში თქვენით დააყენოთ ის.", "Could not find the desired feature" : "მოთხოვნილი ფუნქციონალის პოვნა ვერ მოხერხდა", "Invalid Host" : "არასწორი ჰოსტი", @@ -187,5 +187,5 @@ "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>გაფრთხილება:</b> აპლიკაციები user_ldap და user_webdavauth არაა თავსებადი. შესაძლოა შეგვხდეთ მოულოდნელი ქმედება. გთხოვთ სთხოვოთ თქვენი სისტემის ადმინისტრატორს ერთ-ერთის გათიშვა.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "მომხმარებლების სახელები გამოიყენება (მეტა) მონაცემების შესანახად და დასანიშნად. ზუსტი იდენტიფიკაციისა და ამოზნობისთვის, ყოველ LDAP-ის მომხმარებელს ექნება შიდა მომხმარებელი. ეს საჭიროებს ბმას მომხმარებელსა და LDAP-ის სახელს შორის. შექმნილი მომხმარებელი ებმება LDAP-ის მომხმარებელის UUID-ს. LDAP-თან ინტერაქციის შესამცირებლად, დამატებითად კეშირდება DN, მაგრამ არ ხდება მისი მოხმარება იდენტიფიკაციისთვის. ბმების გასუფთავება ბევრ ადგილას დატოვებს კვალს. ბმების გასუფთავება არაა კონფიგურაციასთან მგრძნობიარე, ის მოქმედებს ყველა LDAP-ის კონფიგურაციაზე! არასდროს გაასუფთავოთ ბმები საწარმოო გარემოში, მოიხმარეთ ეს მხოლოდ შემოწმების ან ექსპერიმენტისთვის." -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/lt_LT.js b/apps/user_ldap/l10n/lt_LT.js index dc42bdabc5c..e6d0d157332 100644 --- a/apps/user_ldap/l10n/lt_LT.js +++ b/apps/user_ldap/l10n/lt_LT.js @@ -56,8 +56,8 @@ OC.L10N.register( "Your password will expire tomorrow." : "Jūsų slaptažodžio galiojimo laikas pasibaigs rytoj.", "Your password will expire today." : "Jūsų slaptažodžio galiojimo laikas baigiasi šiandien.", "LDAP / AD integration" : "LDAP / AD integracija", - "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rastos %s grupės"], - "_%s user found_::_%s users found_" : ["Rastas %s naudotojas","Rasti %s naudotojai","Rasta %s naudotojų"], + "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rastos %s grupės","Rastos %s grupės"], + "_%s user found_::_%s users found_" : ["Rastas %s naudotojas","Rasti %s naudotojai","Rasta %s naudotojų","Rasta %s naudotojų"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepavyko aptikti naudotojo rodomo vardo atributo. Nurodykite jį papildomuose LDAP nustatymuose.", "Could not find the desired feature" : "Nepavyko rasti pageidaujamos ypatybės", "Invalid Host" : "Neteisingas serveris", @@ -180,4 +180,4 @@ OC.L10N.register( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Įspėjimas: </b> Programėlės user_ldap ir user_webdavauth yra nesuderinami. Tai gali sukelti nepageidaujamą veikimą. Paprašykite, kad sistemos administratorius vieną jų išjungtų.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Naudotojų vardai yra naudojami saugoti ir priskirti (meta) duomenis. Siekiant identifikuoti ir atpažinti naudotojus,kiekvienas LDAP naudotojas turės vidinį naudotojo vardą. Tam reikia susieti naudotojo vardą su LDAP naudotoju. Sukurtas naudotojo vardas yra susiejamas su LDAP naudotojo UUID. Papildomai DN talpinamas, kad sumažintų LDAP sąveiką, bet nenaudojamas identifikacijoje. Visur yra naudojamas vidinis naudotojo vardas. Susiejimų pašalinimas visur paliks \"pėdsaką\" ir įtakos visas LDAP konfigūracijas! Niekada susiejimų nešalinkite produkciniame serveryje." }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/user_ldap/l10n/lt_LT.json b/apps/user_ldap/l10n/lt_LT.json index a7e70ea6163..807ea15a984 100644 --- a/apps/user_ldap/l10n/lt_LT.json +++ b/apps/user_ldap/l10n/lt_LT.json @@ -54,8 +54,8 @@ "Your password will expire tomorrow." : "Jūsų slaptažodžio galiojimo laikas pasibaigs rytoj.", "Your password will expire today." : "Jūsų slaptažodžio galiojimo laikas baigiasi šiandien.", "LDAP / AD integration" : "LDAP / AD integracija", - "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rastos %s grupės"], - "_%s user found_::_%s users found_" : ["Rastas %s naudotojas","Rasti %s naudotojai","Rasta %s naudotojų"], + "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rastos %s grupės","Rastos %s grupės"], + "_%s user found_::_%s users found_" : ["Rastas %s naudotojas","Rasti %s naudotojai","Rasta %s naudotojų","Rasta %s naudotojų"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepavyko aptikti naudotojo rodomo vardo atributo. Nurodykite jį papildomuose LDAP nustatymuose.", "Could not find the desired feature" : "Nepavyko rasti pageidaujamos ypatybės", "Invalid Host" : "Neteisingas serveris", @@ -177,5 +177,5 @@ "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Įspėjimas: </b> Programėlės user_ldap ir user_webdavauth yra nesuderinami. Tai gali sukelti nepageidaujamą veikimą. Paprašykite, kad sistemos administratorius vieną jų išjungtų.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Naudotojų vardai yra naudojami saugoti ir priskirti (meta) duomenis. Siekiant identifikuoti ir atpažinti naudotojus,kiekvienas LDAP naudotojas turės vidinį naudotojo vardą. Tam reikia susieti naudotojo vardą su LDAP naudotoju. Sukurtas naudotojo vardas yra susiejamas su LDAP naudotojo UUID. Papildomai DN talpinamas, kad sumažintų LDAP sąveiką, bet nenaudojamas identifikacijoje. Visur yra naudojamas vidinis naudotojo vardas. Susiejimų pašalinimas visur paliks \"pėdsaką\" ir įtakos visas LDAP konfigūracijas! Niekada susiejimų nešalinkite produkciniame serveryje." -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js index a2c72363142..24a2082f189 100644 --- a/apps/user_ldap/l10n/sk.js +++ b/apps/user_ldap/l10n/sk.js @@ -48,10 +48,10 @@ OC.L10N.register( "Please login with the new password" : "Prihláste sa prosím novým heslom", "Your password will expire tomorrow." : "Vaše heslo expiruje zajtra.", "Your password will expire today." : "Vaše heslo expiruje dnes.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní."], + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."], "LDAP / AD integration" : "Spolupráca s LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"], - "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov"], + "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín","%s nájdených skupín"], + "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov","%s nájdených používateľov"], "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", "Test Configuration" : "Test nastavenia", @@ -157,4 +157,4 @@ OC.L10N.register( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Upozornenie:</b> Aplikácie user_ldap a user_webdavauth sú navzájom nekompatibilné. Môžete zaznamenať neočakávané správanie. Požiadajte prosím vášho systémového administrátora pre zakázanie jedného z nich.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Používateľské mená sa používajú na uchovávanie a priraďovanie (meta)dát. Každý používateľ v LDAP bude mať interné používateľské meno, aby bolo možné správne identifikovať a rozpoznávať používateľov. To je vyžaduje vytvorenie mapovania používateľských mien na používateľov v LDAPe. Vytvorené používateľské meno sa namapuje na UUID používateľa v LDAPe. Naviac je sa vo vyrovnávacej pamäti udržiava DN, aby sa obmedzila nadmerná interakcia s LDAPom, ale to sa nepoužíva na identifikáciu. Ak sa DN zmení, zmena bude správne rozpoznaná. Interné používateľské meno sa používa všade. Vyčistenie mapovaní vymaže zvyšky všade. Vyčistenie mapovaní naviac nie je špecifické pre určitú konfiguráciu; bude mať vplyv na všetky konfigurácie LDAPu! Nikdy nečistite mapovanie v produkčnom prostredí, len v testovacej alebo experimentálnej fáze." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json index e55264080fc..893c6316f4b 100644 --- a/apps/user_ldap/l10n/sk.json +++ b/apps/user_ldap/l10n/sk.json @@ -46,10 +46,10 @@ "Please login with the new password" : "Prihláste sa prosím novým heslom", "Your password will expire tomorrow." : "Vaše heslo expiruje zajtra.", "Your password will expire today." : "Vaše heslo expiruje dnes.", - "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní."], + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."], "LDAP / AD integration" : "Spolupráca s LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín"], - "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov"], + "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín","%s nájdených skupín"], + "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov","%s nájdených používateľov"], "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", "Test Configuration" : "Test nastavenia", @@ -154,5 +154,5 @@ "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Upozornenie:</b> Aplikácie user_ldap a user_webdavauth sú navzájom nekompatibilné. Môžete zaznamenať neočakávané správanie. Požiadajte prosím vášho systémového administrátora pre zakázanie jedného z nich.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Používateľské mená sa používajú na uchovávanie a priraďovanie (meta)dát. Každý používateľ v LDAP bude mať interné používateľské meno, aby bolo možné správne identifikovať a rozpoznávať používateľov. To je vyžaduje vytvorenie mapovania používateľských mien na používateľov v LDAPe. Vytvorené používateľské meno sa namapuje na UUID používateľa v LDAPe. Naviac je sa vo vyrovnávacej pamäti udržiava DN, aby sa obmedzila nadmerná interakcia s LDAPom, ale to sa nepoužíva na identifikáciu. Ak sa DN zmení, zmena bude správne rozpoznaná. Interné používateľské meno sa používa všade. Vyčistenie mapovaní vymaže zvyšky všade. Vyčistenie mapovaní naviac nie je špecifické pre určitú konfiguráciu; bude mať vplyv na všetky konfigurácie LDAPu! Nikdy nečistite mapovanie v produkčnom prostredí, len v testovacej alebo experimentálnej fáze." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js index 00678e0eaee..8570421137c 100644 --- a/apps/user_ldap/l10n/uk.js +++ b/apps/user_ldap/l10n/uk.js @@ -21,8 +21,8 @@ OC.L10N.register( "Error while clearing the mappings." : "Помилка при очищенні відображень.", "Select attributes" : "Виберіть атрибути", "User found and settings verified." : "Користувача знайдено і налаштування перевірені.", - "_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено "], - "_%s user found_::_%s users found_" : ["%s користувача знайдено","%s користувачів знайдено","%s користувачів знайдено"], + "_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено ","%s груп знайдено "], + "_%s user found_::_%s users found_" : ["%s користувача знайдено","%s користувачів знайдено","%s користувачів знайдено","%s користувачів знайдено"], "Could not find the desired feature" : "Не вдалося знайти потрібну функцію", "Invalid Host" : "Невірний Host", "Test Configuration" : "Тестове налаштування", @@ -107,4 +107,4 @@ OC.L10N.register( "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Попередження:</b> Застосунки user_ldap та user_webdavauth не сумісні. Ви можете зіткнутися з несподіваною поведінкою. Будь ласка, зверніться до системного адміністратора, щоб відключити одну з них.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud використовує імена користувачів для зберігання та призначення метаданих. Для точної ідентифікації та розпізнавання користувачів, кожен користувач LDAP буде мати своє внутрішнє ім'я користувача. Це вимагає прив'язки імені користувача ownCloud до користувача LDAP. При створенні ім'я користувача призначається ідентифікатором UUID користувача LDAP. Крім цього кешируєтся доменне ім'я (DN) для зменшення числа звернень до LDAP, однак воно не використовується для ідентифікації. Якщо доменне ім'я було змінено, про це стане відомо ownCloud. Внутрішнє ім'я ownCloud використовується повсюдно в ownCloud. Після скидання прив'язок в базі можуть зберегтися залишки старої інформації. Скидання прив'язок не прив'язане до конфігурації, воно вплине на всі LDAP підключення! Ні в якому разі не рекомендується скидати прив'язки якщо система вже знаходиться в експлуатації, тільки на етапі тестування." }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json index b7adace6ea6..8cbef74a159 100644 --- a/apps/user_ldap/l10n/uk.json +++ b/apps/user_ldap/l10n/uk.json @@ -19,8 +19,8 @@ "Error while clearing the mappings." : "Помилка при очищенні відображень.", "Select attributes" : "Виберіть атрибути", "User found and settings verified." : "Користувача знайдено і налаштування перевірені.", - "_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено "], - "_%s user found_::_%s users found_" : ["%s користувача знайдено","%s користувачів знайдено","%s користувачів знайдено"], + "_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено ","%s груп знайдено "], + "_%s user found_::_%s users found_" : ["%s користувача знайдено","%s користувачів знайдено","%s користувачів знайдено","%s користувачів знайдено"], "Could not find the desired feature" : "Не вдалося знайти потрібну функцію", "Invalid Host" : "Невірний Host", "Test Configuration" : "Тестове налаштування", @@ -104,5 +104,5 @@ "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Попередження:</b> Застосунки user_ldap та user_webdavauth не сумісні. Ви можете зіткнутися з несподіваною поведінкою. Будь ласка, зверніться до системного адміністратора, щоб відключити одну з них.", "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud використовує імена користувачів для зберігання та призначення метаданих. Для точної ідентифікації та розпізнавання користувачів, кожен користувач LDAP буде мати своє внутрішнє ім'я користувача. Це вимагає прив'язки імені користувача ownCloud до користувача LDAP. При створенні ім'я користувача призначається ідентифікатором UUID користувача LDAP. Крім цього кешируєтся доменне ім'я (DN) для зменшення числа звернень до LDAP, однак воно не використовується для ідентифікації. Якщо доменне ім'я було змінено, про це стане відомо ownCloud. Внутрішнє ім'я ownCloud використовується повсюдно в ownCloud. Після скидання прив'язок в базі можуть зберегтися залишки старої інформації. Скидання прив'язок не прив'язане до конфігурації, воно вплине на всі LDAP підключення! Ні в якому разі не рекомендується скидати прив'язки якщо система вже знаходиться в експлуатації, тільки на етапі тестування." -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/workflowengine/l10n/ca.js b/apps/workflowengine/l10n/ca.js index f0958152e40..aee47ecfd93 100644 --- a/apps/workflowengine/l10n/ca.js +++ b/apps/workflowengine/l10n/ca.js @@ -2,6 +2,7 @@ OC.L10N.register( "workflowengine", { "Group list is empty" : "La llista del grup és buida", + "Unable to retrieve the group list" : "No es pot obtenir la llista del grup", "Saved" : "Desat", "Saving failed:" : "Error al desar", "File MIME type" : "Tipus MIME d\\'arxiu", diff --git a/apps/workflowengine/l10n/ca.json b/apps/workflowengine/l10n/ca.json index c30639e370e..1dd46ebc020 100644 --- a/apps/workflowengine/l10n/ca.json +++ b/apps/workflowengine/l10n/ca.json @@ -1,5 +1,6 @@ { "translations": { "Group list is empty" : "La llista del grup és buida", + "Unable to retrieve the group list" : "No es pot obtenir la llista del grup", "Saved" : "Desat", "Saving failed:" : "Error al desar", "File MIME type" : "Tipus MIME d\\'arxiu", diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js index d5b34773d4b..0e4d3828903 100644 --- a/apps/workflowengine/l10n/cs.js +++ b/apps/workflowengine/l10n/cs.js @@ -68,4 +68,4 @@ OC.L10N.register( "Saving…" : "Ukládání…", "Loading…" : "Načítání…" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json index 923fc6a4004..3f0ed413c61 100644 --- a/apps/workflowengine/l10n/cs.json +++ b/apps/workflowengine/l10n/cs.json @@ -65,5 +65,5 @@ "Save" : "Uložit", "Saving…" : "Ukládání…", "Loading…" : "Načítání…" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/workflowengine/l10n/fa.js b/apps/workflowengine/l10n/fa.js index 023c22aca89..da199e47cad 100644 --- a/apps/workflowengine/l10n/fa.js +++ b/apps/workflowengine/l10n/fa.js @@ -68,4 +68,4 @@ OC.L10N.register( "Saving…" : "در حال ذخیره", "Loading…" : "در حال بار گزاری" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/apps/workflowengine/l10n/fa.json b/apps/workflowengine/l10n/fa.json index a2342b3198c..b131e32cbb5 100644 --- a/apps/workflowengine/l10n/fa.json +++ b/apps/workflowengine/l10n/fa.json @@ -65,5 +65,5 @@ "Save" : "ذخیره", "Saving…" : "در حال ذخیره", "Loading…" : "در حال بار گزاری" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/workflowengine/l10n/ka_GE.js b/apps/workflowengine/l10n/ka_GE.js index f2060064f1c..cb67c3fb304 100644 --- a/apps/workflowengine/l10n/ka_GE.js +++ b/apps/workflowengine/l10n/ka_GE.js @@ -69,4 +69,4 @@ OC.L10N.register( "Saving…" : "მიმდინარეობს დამახსოვრება...", "Loading…" : "იტვირთება..." }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/apps/workflowengine/l10n/ka_GE.json b/apps/workflowengine/l10n/ka_GE.json index 5cf10e81968..8ac29299d22 100644 --- a/apps/workflowengine/l10n/ka_GE.json +++ b/apps/workflowengine/l10n/ka_GE.json @@ -66,5 +66,5 @@ "Save" : "შენახვა", "Saving…" : "მიმდინარეობს დამახსოვრება...", "Loading…" : "იტვირთება..." -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/workflowengine/l10n/lt_LT.js b/apps/workflowengine/l10n/lt_LT.js index 018745d964a..976e11ac2d4 100644 --- a/apps/workflowengine/l10n/lt_LT.js +++ b/apps/workflowengine/l10n/lt_LT.js @@ -70,4 +70,4 @@ OC.L10N.register( "Saving…" : "Įrašoma…", "Loading…" : "Įkeliama…" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/workflowengine/l10n/lt_LT.json b/apps/workflowengine/l10n/lt_LT.json index 4dc641183c6..e609fcde96b 100644 --- a/apps/workflowengine/l10n/lt_LT.json +++ b/apps/workflowengine/l10n/lt_LT.json @@ -67,5 +67,5 @@ "Save" : "Įrašyti", "Saving…" : "Įrašoma…", "Loading…" : "Įkeliama…" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/workflowengine/l10n/sk.js b/apps/workflowengine/l10n/sk.js index 0afe7721b24..f833baec147 100644 --- a/apps/workflowengine/l10n/sk.js +++ b/apps/workflowengine/l10n/sk.js @@ -70,4 +70,4 @@ OC.L10N.register( "Saving…" : "Ukladá sa...", "Loading…" : "Načítava sa..." }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/workflowengine/l10n/sk.json b/apps/workflowengine/l10n/sk.json index 6a7dcd9c56f..295f1432407 100644 --- a/apps/workflowengine/l10n/sk.json +++ b/apps/workflowengine/l10n/sk.json @@ -67,5 +67,5 @@ "Save" : "Uložiť", "Saving…" : "Ukladá sa...", "Loading…" : "Načítava sa..." -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/bower.json b/bower.json index 5693641dc38..49b40f390f8 100644 --- a/bower.json +++ b/bower.json @@ -13,7 +13,7 @@ "tests" ], "dependencies": { - "autosize": "4.0.0", + "autosize": "^4.0.0", "backbone": "~1.2.3", "base64": "~0.3.0", "blueimp-md5": "^2.7.0", diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php index ab9d98df8d6..c3b88f752db 100644 --- a/core/Controller/ClientFlowLoginController.php +++ b/core/Controller/ClientFlowLoginController.php @@ -329,7 +329,7 @@ class ClientFlowLoginController extends Controller { ); if($client) { - $code = $this->random->generate(128); + $code = $this->random->generate(128, ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_LOWER.ISecureRandom::CHAR_DIGITS); $accessToken = new AccessToken(); $accessToken->setClientId($client->getId()); $accessToken->setEncryptedToken($this->crypto->encrypt($token, $code)); diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php index 90a1176ae83..f45de3653ea 100644 --- a/core/Controller/LostController.php +++ b/core/Controller/LostController.php @@ -31,6 +31,7 @@ namespace OC\Core\Controller; +use OC\HintException; use \OCP\AppFramework\Controller; use OCP\AppFramework\Http\JSONResponse; use \OCP\AppFramework\Http\TemplateResponse; @@ -275,6 +276,8 @@ class LostController extends Controller { $this->config->deleteUserValue($userId, 'core', 'lostpassword'); @\OC::$server->getUserSession()->unsetMagicInCookie(); + } catch (HintException $e){ + return $this->error($e->getHint()); } catch (\Exception $e){ return $this->error($e->getMessage()); } diff --git a/core/Migrations/Version14000Date20180516101403.php b/core/Migrations/Version14000Date20180516101403.php new file mode 100644 index 00000000000..9b56e0ab601 --- /dev/null +++ b/core/Migrations/Version14000Date20180516101403.php @@ -0,0 +1,56 @@ +<?php +/** + * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\Core\Migrations; + +use OCP\DB\ISchemaWrapper; +use OCP\Migration\SimpleMigrationStep; +use OCP\Migration\IOutput; + +class Version14000Date20180516101403 extends SimpleMigrationStep { + + /** + * @param IOutput $output + * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + * @return null|ISchemaWrapper + */ + public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + + $table = $schema->getTable('authtoken'); + + if (!$table->hasColumn('expires')) { + $table->addColumn('expires', 'integer', [ + 'notnull' => false, + 'length' => 4, + 'default' => null, + 'unsigned' => true, + ]); + + return $schema; + } + return null; + } +} diff --git a/core/css/apps.scss b/core/css/apps.scss index 918dc838412..19447d6e41d 100644 --- a/core/css/apps.scss +++ b/core/css/apps.scss @@ -696,7 +696,7 @@ kbd { &:hover { background-color: $color-main-background; opacity: 1; - box-shadow: inset 2px 0 $color-primary; + box-shadow: inset 4px 0 $color-primary; } } diff --git a/core/css/guest.css b/core/css/guest.css index e0e639252ee..88341fb903a 100644 --- a/core/css/guest.css +++ b/core/css/guest.css @@ -744,6 +744,10 @@ footer .info a { overflow: hidden; } +a.legal { + font-size: smaller; +} + /* for low-res screens, use Regular font-weight instead of Light */ @media (-webkit-max-device-pixel-ratio: 1.3), (max-resolution: 124.8dpi) { @font-face { diff --git a/core/css/header.scss b/core/css/header.scss index 8e520957889..d71ec5b713a 100644 --- a/core/css/header.scss +++ b/core/css/header.scss @@ -434,7 +434,7 @@ nav[role='navigation'] { &:active, &.active { opacity: 1; - box-shadow: inset 2px 0 $color-primary; + box-shadow: inset 4px 0 $color-primary; } } } diff --git a/core/l10n/cs.js b/core/l10n/cs.js index b5bc8b1dd95..676488c3eb5 100644 --- a/core/l10n/cs.js +++ b/core/l10n/cs.js @@ -64,7 +64,7 @@ OC.L10N.register( "Error fetching contact actions" : "Chyba při získávání akcí kontaktů", "Settings" : "Nastavení", "Connection to server lost" : "Připojení k serveru ztraceno", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problém s načítáním stránky, obnovení za %n sekundu","Problém s načítáním stránky, obnovení za %n sekundy","Problém s načítáním stránky, obnovení za %n sekund"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problém s načítáním stránky, obnovení za %n sekundu","Problém s načítáním stránky, obnovení za %n sekundy","Problém s načítáním stránky, obnovení za %n sekund","Problém s načítáním stránky, obnovení za %n sekund"], "Saving..." : "Ukládám...", "Dismiss" : "Zamítnout", "This action requires you to confirm your password" : "Tato akce vyžaduje zadání vašeho hesla", @@ -91,7 +91,7 @@ OC.L10N.register( "OK" : "OK", "Error loading message template: {error}" : "Chyba při nahrávání šablony zprávy: {error}", "read-only" : "pouze ke čtení", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} souborový konflikt","{count} souborové konflikty","{count} souborových konfliktů"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} souborový konflikt","{count} souborové konflikty","{count} souborových konfliktů","{count} souborových konfliktů"], "One file conflict" : "Jeden konflikt souboru", "New Files" : "Nové soubory", "Already existing files" : "Již existující soubory", @@ -170,7 +170,7 @@ OC.L10N.register( "Could not unshare" : "Nelze zrušit sdílení", "Error while sharing" : "Chyba při sdílení", "Share details could not be loaded for this item." : "Detaily sdílení pro tuto položku nelze načíst.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Alespoň {count} znak je vyžadován pro automatické doplňování","Alespoň {count} znaky jsou vyžadovány pro automatické doplňování","Alespoň {count} znaků je vyžadováno pro automatické doplňování"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Alespoň {count} znak je vyžadován pro automatické doplňování","Alespoň {count} znaky jsou vyžadovány pro automatické doplňování","Alespoň {count} znaků je vyžadováno pro automatické doplňování","Alespoň {count} znaků je vyžadováno pro automatické doplňování"], "This list is maybe truncated - please refine your search term to see more results." : "Tento seznam je možná zkrácený - prosím upřesněte vyhledávací výraz pro více výsledků.", "No users or groups found for {search}" : "Nebyli nalezeni žádní členové ani skupiny pro {search}", "No users found for {search}" : "Nebyli nalezeni žádní uživatelé pro {search}", @@ -201,7 +201,7 @@ OC.L10N.register( "Hello {name}" : "Vítej, {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Toto jsou vaše výsledky hledání<script>alert(1)</script></strong>", "new" : "nový", - "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů"], + "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů","stáhnout %n souborů"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.", "Update to {version}" : "Aktualizace na {version}", "An error occurred." : "Došlo k chybě.", @@ -209,10 +209,10 @@ OC.L10N.register( "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizace nebyla úspěšná. Pro více informací si <a href=\"{url}\">přečtěte komentáře ve fóru</a> pojednávající o tomto problému.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizace byla neúspěšná. Nahlaste prosím problém <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunitě Nextcloudu</a>", "Continue to Nextcloud" : "Pokračovat do Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundu.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundy.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekund."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundu.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundy.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekund.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekund."], "Searching other places" : "Prohledávání ostatních umístění", "No search results in other folders for {tag}{filter}{endtag}" : "Žádné výsledky v dalších složkách pro {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} nález v dalším adresáři","{count} nálezy v dalších adresářích","{count} nálezů v dalších adresářích"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} nález v dalším adresáři","{count} nálezy v dalších adresářích","{count} nálezů v dalších adresářích","{count} nálezů v dalších adresářích"], "Personal" : "Osobní", "Users" : "Uživatelé", "Apps" : "Aplikace", @@ -275,6 +275,8 @@ OC.L10N.register( "Wrong password." : "Chybné heslo.", "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Bylo rozpoznáno několik neplatných pokusů o přihlášeni z Vaší IP. Další přihlášení bude možné za 30 sekund.", "Forgot password?" : "Zapomněli jste heslo?", + "Back to login" : "Zpět na přihlášení", + "Connect to your account" : "Připojit ke svému účtu", "App token" : "Token aplikace", "Grant access" : "Povolit přístup", "Account access" : "Přístup k účtu", @@ -345,4 +347,4 @@ OC.L10N.register( "Back to log in" : "Zpět na přihlášení", "Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/core/l10n/cs.json b/core/l10n/cs.json index 75dc780b631..19f85a669d9 100644 --- a/core/l10n/cs.json +++ b/core/l10n/cs.json @@ -62,7 +62,7 @@ "Error fetching contact actions" : "Chyba při získávání akcí kontaktů", "Settings" : "Nastavení", "Connection to server lost" : "Připojení k serveru ztraceno", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problém s načítáním stránky, obnovení za %n sekundu","Problém s načítáním stránky, obnovení za %n sekundy","Problém s načítáním stránky, obnovení za %n sekund"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problém s načítáním stránky, obnovení za %n sekundu","Problém s načítáním stránky, obnovení za %n sekundy","Problém s načítáním stránky, obnovení za %n sekund","Problém s načítáním stránky, obnovení za %n sekund"], "Saving..." : "Ukládám...", "Dismiss" : "Zamítnout", "This action requires you to confirm your password" : "Tato akce vyžaduje zadání vašeho hesla", @@ -89,7 +89,7 @@ "OK" : "OK", "Error loading message template: {error}" : "Chyba při nahrávání šablony zprávy: {error}", "read-only" : "pouze ke čtení", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} souborový konflikt","{count} souborové konflikty","{count} souborových konfliktů"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} souborový konflikt","{count} souborové konflikty","{count} souborových konfliktů","{count} souborových konfliktů"], "One file conflict" : "Jeden konflikt souboru", "New Files" : "Nové soubory", "Already existing files" : "Již existující soubory", @@ -168,7 +168,7 @@ "Could not unshare" : "Nelze zrušit sdílení", "Error while sharing" : "Chyba při sdílení", "Share details could not be loaded for this item." : "Detaily sdílení pro tuto položku nelze načíst.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Alespoň {count} znak je vyžadován pro automatické doplňování","Alespoň {count} znaky jsou vyžadovány pro automatické doplňování","Alespoň {count} znaků je vyžadováno pro automatické doplňování"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Alespoň {count} znak je vyžadován pro automatické doplňování","Alespoň {count} znaky jsou vyžadovány pro automatické doplňování","Alespoň {count} znaků je vyžadováno pro automatické doplňování","Alespoň {count} znaků je vyžadováno pro automatické doplňování"], "This list is maybe truncated - please refine your search term to see more results." : "Tento seznam je možná zkrácený - prosím upřesněte vyhledávací výraz pro více výsledků.", "No users or groups found for {search}" : "Nebyli nalezeni žádní členové ani skupiny pro {search}", "No users found for {search}" : "Nebyli nalezeni žádní uživatelé pro {search}", @@ -199,7 +199,7 @@ "Hello {name}" : "Vítej, {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Toto jsou vaše výsledky hledání<script>alert(1)</script></strong>", "new" : "nový", - "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů"], + "_download %n file_::_download %n files_" : ["stáhnout %n soubor","stáhnout %n soubory","stáhnout %n souborů","stáhnout %n souborů"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Probíhá aktualizace, opuštění této stránky může v některých prostředích přerušit proces.", "Update to {version}" : "Aktualizace na {version}", "An error occurred." : "Došlo k chybě.", @@ -207,10 +207,10 @@ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizace nebyla úspěšná. Pro více informací si <a href=\"{url}\">přečtěte komentáře ve fóru</a> pojednávající o tomto problému.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizace byla neúspěšná. Nahlaste prosím problém <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunitě Nextcloudu</a>", "Continue to Nextcloud" : "Pokračovat do Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundu.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundy.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekund."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundu.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekundy.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekund.","Aktualizace byla úspěšná. Přesměrování do Nextcloud za %n sekund."], "Searching other places" : "Prohledávání ostatních umístění", "No search results in other folders for {tag}{filter}{endtag}" : "Žádné výsledky v dalších složkách pro {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} nález v dalším adresáři","{count} nálezy v dalších adresářích","{count} nálezů v dalších adresářích"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} nález v dalším adresáři","{count} nálezy v dalších adresářích","{count} nálezů v dalších adresářích","{count} nálezů v dalších adresářích"], "Personal" : "Osobní", "Users" : "Uživatelé", "Apps" : "Aplikace", @@ -273,6 +273,8 @@ "Wrong password." : "Chybné heslo.", "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." : "Bylo rozpoznáno několik neplatných pokusů o přihlášeni z Vaší IP. Další přihlášení bude možné za 30 sekund.", "Forgot password?" : "Zapomněli jste heslo?", + "Back to login" : "Zpět na přihlášení", + "Connect to your account" : "Připojit ke svému účtu", "App token" : "Token aplikace", "Grant access" : "Povolit přístup", "Account access" : "Přístup k účtu", @@ -342,5 +344,5 @@ "Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "Váš PHP nepodporuje freetype. Následek budou požkozené profilové obrázky a nastavení rozhraní", "Back to log in" : "Zpět na přihlášení", "Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/core/l10n/fa.js b/core/l10n/fa.js index 86f6d10eea9..4b45282c71a 100644 --- a/core/l10n/fa.js +++ b/core/l10n/fa.js @@ -63,7 +63,7 @@ OC.L10N.register( "Error fetching contact actions" : "خطا در دریافت فعالیتهای تماس", "Settings" : "تنظیمات", "Connection to server lost" : "اتصال به سرور از دست رفته است", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["%nمشکل بارگذاری صفحه، بارگیری مجدد در ثانیه"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["%nمشکل بارگذاری صفحه، بارگیری مجدد در ثانیه","%nمشکل بارگذاری صفحه، بارگیری مجدد در ثانیه"], "Saving..." : "در حال ذخیره سازی...", "Dismiss" : "پنهان کن", "This action requires you to confirm your password" : "این اقدام نیاز به تایید رمز عبور شما دارد", @@ -89,7 +89,7 @@ OC.L10N.register( "OK" : "تایید", "Error loading message template: {error}" : "خطا در بارگذاری قالب پیام : {error}", "read-only" : "فقط-خواندنی", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} تضاد در فایل"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} تضاد در فایل","{count} تضاد در فایل"], "One file conflict" : "یک فایل متضاد", "New Files" : "فایل های جدید", "Already existing files" : "فایل های موجود در حال حاضر ", @@ -149,7 +149,7 @@ OC.L10N.register( "Could not unshare" : "اشتراک گذاری بازگردانده نشد", "Error while sharing" : "خطا درحال به اشتراک گذاشتن", "Share details could not be loaded for this item." : "جزئیات اشتراک گذاری برای این مورد قابل بارگذاری نیست.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["برای تکمیل خودکار لازم است حداقل {count} کاراکتر وجود داشته باشد"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["برای تکمیل خودکار لازم است حداقل {count} کاراکتر وجود داشته باشد","برای تکمیل خودکار لازم است حداقل {count} کاراکتر وجود داشته باشد"], "This list is maybe truncated - please refine your search term to see more results." : "این فهرست ممکن است کامل نباشد - لطفا نتایج جستجوی خود را ریفرش کنید تا نتایج بیشتری ببینید.", "No users or groups found for {search}" : "هیچ کاربری یا گروهی یافت نشد {search}", "No users found for {search}" : "هیچ کاربری با جستجوی {search} یافت نشد", @@ -180,7 +180,7 @@ OC.L10N.register( "Hello {name}" : "سلام {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>این نتایج جستجوی شماست <script>alert(1)</script> </strong>", "new" : "جدید", - "_download %n file_::_download %n files_" : ["دانلود %n فایل"], + "_download %n file_::_download %n files_" : ["دانلود %n فایل","دانلود %n فایل"], "The update is in progress, leaving this page might interrupt the process in some environments." : "به روز رسانی در حال انجام است، این صفحه ممکن است روند در برخی از محیط ها را قطع کند.", "Update to {version}" : "بروزرسانی به {version}", "An error occurred." : "یک خطا رخداده است.", @@ -188,10 +188,10 @@ OC.L10N.register( "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "به روزرسانی ناموفق بود. برای اطلاعات بیشتر <a href=\"{url}\">فروم ما را بررسی کنید</a>", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "به روزرسانی ناموفق بود. لطفا این مسئله را در <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">جامعه Nextcloud</a> گزارش دهید", "Continue to Nextcloud" : "ادامه به Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["به روز رسانی موفقیت آمیز بود هدایت شما به Nextcloud در %nثانیه "], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["به روز رسانی موفقیت آمیز بود هدایت شما به Nextcloud در %nثانیه ","به روز رسانی موفقیت آمیز بود هدایت شما به Nextcloud در %nثانیه "], "Searching other places" : "جستجو در مکانهای دیگر", "No search results in other folders for {tag}{filter}{endtag}" : "جستجو در پوشه های دیگر برای {tag}{filter}{endtag} یافت نشد", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} نتایج جستجو در پوشه های دیگر"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} نتایج جستجو در پوشه های دیگر","{count} نتایج جستجو در پوشه های دیگر"], "Personal" : "شخصی", "Users" : "کاربران", "Apps" : " برنامه ها", @@ -268,4 +268,4 @@ OC.L10N.register( "Alternative Logins" : "ورود متناوب", "Add \"%s\" as trusted domain" : "افزودن \"%s\" به عنوان دامنه مورد اعتماد" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/core/l10n/fa.json b/core/l10n/fa.json index ffb5b86c403..03eab318251 100644 --- a/core/l10n/fa.json +++ b/core/l10n/fa.json @@ -61,7 +61,7 @@ "Error fetching contact actions" : "خطا در دریافت فعالیتهای تماس", "Settings" : "تنظیمات", "Connection to server lost" : "اتصال به سرور از دست رفته است", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["%nمشکل بارگذاری صفحه، بارگیری مجدد در ثانیه"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["%nمشکل بارگذاری صفحه، بارگیری مجدد در ثانیه","%nمشکل بارگذاری صفحه، بارگیری مجدد در ثانیه"], "Saving..." : "در حال ذخیره سازی...", "Dismiss" : "پنهان کن", "This action requires you to confirm your password" : "این اقدام نیاز به تایید رمز عبور شما دارد", @@ -87,7 +87,7 @@ "OK" : "تایید", "Error loading message template: {error}" : "خطا در بارگذاری قالب پیام : {error}", "read-only" : "فقط-خواندنی", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} تضاد در فایل"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} تضاد در فایل","{count} تضاد در فایل"], "One file conflict" : "یک فایل متضاد", "New Files" : "فایل های جدید", "Already existing files" : "فایل های موجود در حال حاضر ", @@ -147,7 +147,7 @@ "Could not unshare" : "اشتراک گذاری بازگردانده نشد", "Error while sharing" : "خطا درحال به اشتراک گذاشتن", "Share details could not be loaded for this item." : "جزئیات اشتراک گذاری برای این مورد قابل بارگذاری نیست.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["برای تکمیل خودکار لازم است حداقل {count} کاراکتر وجود داشته باشد"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["برای تکمیل خودکار لازم است حداقل {count} کاراکتر وجود داشته باشد","برای تکمیل خودکار لازم است حداقل {count} کاراکتر وجود داشته باشد"], "This list is maybe truncated - please refine your search term to see more results." : "این فهرست ممکن است کامل نباشد - لطفا نتایج جستجوی خود را ریفرش کنید تا نتایج بیشتری ببینید.", "No users or groups found for {search}" : "هیچ کاربری یا گروهی یافت نشد {search}", "No users found for {search}" : "هیچ کاربری با جستجوی {search} یافت نشد", @@ -178,7 +178,7 @@ "Hello {name}" : "سلام {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>این نتایج جستجوی شماست <script>alert(1)</script> </strong>", "new" : "جدید", - "_download %n file_::_download %n files_" : ["دانلود %n فایل"], + "_download %n file_::_download %n files_" : ["دانلود %n فایل","دانلود %n فایل"], "The update is in progress, leaving this page might interrupt the process in some environments." : "به روز رسانی در حال انجام است، این صفحه ممکن است روند در برخی از محیط ها را قطع کند.", "Update to {version}" : "بروزرسانی به {version}", "An error occurred." : "یک خطا رخداده است.", @@ -186,10 +186,10 @@ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "به روزرسانی ناموفق بود. برای اطلاعات بیشتر <a href=\"{url}\">فروم ما را بررسی کنید</a>", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "به روزرسانی ناموفق بود. لطفا این مسئله را در <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">جامعه Nextcloud</a> گزارش دهید", "Continue to Nextcloud" : "ادامه به Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["به روز رسانی موفقیت آمیز بود هدایت شما به Nextcloud در %nثانیه "], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["به روز رسانی موفقیت آمیز بود هدایت شما به Nextcloud در %nثانیه ","به روز رسانی موفقیت آمیز بود هدایت شما به Nextcloud در %nثانیه "], "Searching other places" : "جستجو در مکانهای دیگر", "No search results in other folders for {tag}{filter}{endtag}" : "جستجو در پوشه های دیگر برای {tag}{filter}{endtag} یافت نشد", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} نتایج جستجو در پوشه های دیگر"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} نتایج جستجو در پوشه های دیگر","{count} نتایج جستجو در پوشه های دیگر"], "Personal" : "شخصی", "Users" : "کاربران", "Apps" : " برنامه ها", @@ -265,5 +265,5 @@ "Stay logged in" : "در سیستم بمانید", "Alternative Logins" : "ورود متناوب", "Add \"%s\" as trusted domain" : "افزودن \"%s\" به عنوان دامنه مورد اعتماد" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/core/l10n/he.js b/core/l10n/he.js index 2557095f652..948784c61a7 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -64,7 +64,7 @@ OC.L10N.register( "Error fetching contact actions" : "שגיאה בקבלת פעולות אנשי הקשר", "Settings" : "הגדרות", "Connection to server lost" : "החיבור לשרת אבד", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["תקלה בטעינת העמוד, יתבצע רענון בעוד שנייה","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["תקלה בטעינת העמוד, יתבצע רענון בעוד שנייה","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות"], "Saving..." : "שמירה…", "Dismiss" : "שחרור", "This action requires you to confirm your password" : "פעולה זו דורשת ממך לאמת את הססמה שלך", @@ -91,7 +91,7 @@ OC.L10N.register( "OK" : "אישור", "Error loading message template: {error}" : "שגיאה בטעינת תבנית ההודעות: {error}", "read-only" : "לקריאה בלבד", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} הנגשות קובץ","{count} התנגשויות קבצים"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} הנגשות קובץ","{count} התנגשויות קבצים","{count} התנגשויות קבצים","{count} התנגשויות קבצים"], "One file conflict" : "התנגשות קובץ אחת", "New Files" : "קבצים חדשים", "Already existing files" : "קבצים קיימים כבר", @@ -171,7 +171,7 @@ OC.L10N.register( "Could not unshare" : "לא ניתן לבטל שיתוף", "Error while sharing" : "שגיאה במהלך השיתוף", "Share details could not be loaded for this item." : "לא ניתן היה לטעון מידע שיתוף לפריט זה", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["נדרש לפחות תו אחד להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["נדרש לפחות תו אחד להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית"], "This list is maybe truncated - please refine your search term to see more results." : "יתכן שזו רשימה מקוצרת - נא למקד את ביטוי החיפוש שלך כדי להציג תוצאות נוספות.", "No users or groups found for {search}" : "לא אותרו משתמשים או קבוצות עבור {search}", "No users found for {search}" : "לא אותרו משתמשים עבור {search}", @@ -203,7 +203,7 @@ OC.L10N.register( "Hello {name}" : "שלום {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>אלו תוצאות החיפוש שלך<script>alert(1)</script></strong>", "new" : "חדש", - "_download %n file_::_download %n files_" : ["התקבל קובץ %n","התקבלו %n קבצים"], + "_download %n file_::_download %n files_" : ["התקבל קובץ %n","התקבלו %n קבצים","התקבלו %n קבצים","התקבלו %n קבצים"], "The update is in progress, leaving this page might interrupt the process in some environments." : "העדכון מתבצע, יציאה מהעמוד הזה עשויה להפריע לתהליך בסביבות מסוימות.", "Update to {version}" : "עדכון ל־{version}", "An error occurred." : "אירעה שגיאה.", @@ -211,10 +211,10 @@ OC.L10N.register( "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "העדכון בוצע בהצלחה. למידע נוסף <a href=\"{url}\">ניתן לבדוק בהודעת הפורום שלנו</a> המכסה נושא זו.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "העדכון לא הצליח. נא לדווח על התקלה הזאת ל<a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">קהילת Nextcloud</a>.", "Continue to Nextcloud" : "להמשיך ל־Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד שנייה.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד שנייה.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות."], "Searching other places" : "מחפש במקומות אחרים", "No search results in other folders for {tag}{filter}{endtag}" : "אין תוצאות חיפוש בתיקיות אחרות עבור {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} תוצאת חיפוש בתיקייה אחרות","{count} תוצאות חיפוש בתיקיות אחרות"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} תוצאת חיפוש בתיקייה אחרות","{count} תוצאות חיפוש בתיקיות אחרות","{count} תוצאות חיפוש בתיקיות אחרות","{count} תוצאות חיפוש בתיקיות אחרות"], "Personal" : "אישי", "Users" : "משתמשים", "Apps" : "יישומים", @@ -348,4 +348,4 @@ OC.L10N.register( "Back to log in" : "חזרה לכניסה", "Depending on your configuration, this button could also work to trust the domain:" : "בהתאם לתצורה שלך, הכפתור הזה יכול לעבוד גם כדי לתת אמון בשם המתחם:" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/core/l10n/he.json b/core/l10n/he.json index d699004afce..073d8cf5f43 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -62,7 +62,7 @@ "Error fetching contact actions" : "שגיאה בקבלת פעולות אנשי הקשר", "Settings" : "הגדרות", "Connection to server lost" : "החיבור לשרת אבד", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["תקלה בטעינת העמוד, יתבצע רענון בעוד שנייה","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["תקלה בטעינת העמוד, יתבצע רענון בעוד שנייה","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות","תקלה בטעינת העמוד, יתבצע רענון בעוד %n שניות"], "Saving..." : "שמירה…", "Dismiss" : "שחרור", "This action requires you to confirm your password" : "פעולה זו דורשת ממך לאמת את הססמה שלך", @@ -89,7 +89,7 @@ "OK" : "אישור", "Error loading message template: {error}" : "שגיאה בטעינת תבנית ההודעות: {error}", "read-only" : "לקריאה בלבד", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} הנגשות קובץ","{count} התנגשויות קבצים"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} הנגשות קובץ","{count} התנגשויות קבצים","{count} התנגשויות קבצים","{count} התנגשויות קבצים"], "One file conflict" : "התנגשות קובץ אחת", "New Files" : "קבצים חדשים", "Already existing files" : "קבצים קיימים כבר", @@ -169,7 +169,7 @@ "Could not unshare" : "לא ניתן לבטל שיתוף", "Error while sharing" : "שגיאה במהלך השיתוף", "Share details could not be loaded for this item." : "לא ניתן היה לטעון מידע שיתוף לפריט זה", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["נדרש לפחות תו אחד להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["נדרש לפחות תו אחד להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית","נדרשים לפחות {count} תווים להשלמה אוטומטית"], "This list is maybe truncated - please refine your search term to see more results." : "יתכן שזו רשימה מקוצרת - נא למקד את ביטוי החיפוש שלך כדי להציג תוצאות נוספות.", "No users or groups found for {search}" : "לא אותרו משתמשים או קבוצות עבור {search}", "No users found for {search}" : "לא אותרו משתמשים עבור {search}", @@ -201,7 +201,7 @@ "Hello {name}" : "שלום {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>אלו תוצאות החיפוש שלך<script>alert(1)</script></strong>", "new" : "חדש", - "_download %n file_::_download %n files_" : ["התקבל קובץ %n","התקבלו %n קבצים"], + "_download %n file_::_download %n files_" : ["התקבל קובץ %n","התקבלו %n קבצים","התקבלו %n קבצים","התקבלו %n קבצים"], "The update is in progress, leaving this page might interrupt the process in some environments." : "העדכון מתבצע, יציאה מהעמוד הזה עשויה להפריע לתהליך בסביבות מסוימות.", "Update to {version}" : "עדכון ל־{version}", "An error occurred." : "אירעה שגיאה.", @@ -209,10 +209,10 @@ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "העדכון בוצע בהצלחה. למידע נוסף <a href=\"{url}\">ניתן לבדוק בהודעת הפורום שלנו</a> המכסה נושא זו.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "העדכון לא הצליח. נא לדווח על התקלה הזאת ל<a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">קהילת Nextcloud</a>.", "Continue to Nextcloud" : "להמשיך ל־Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד שנייה.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד שנייה.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות.","העדכון הצליח. תתבצע העברה ל־Nextcloud בעוד %n שניות."], "Searching other places" : "מחפש במקומות אחרים", "No search results in other folders for {tag}{filter}{endtag}" : "אין תוצאות חיפוש בתיקיות אחרות עבור {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} תוצאת חיפוש בתיקייה אחרות","{count} תוצאות חיפוש בתיקיות אחרות"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} תוצאת חיפוש בתיקייה אחרות","{count} תוצאות חיפוש בתיקיות אחרות","{count} תוצאות חיפוש בתיקיות אחרות","{count} תוצאות חיפוש בתיקיות אחרות"], "Personal" : "אישי", "Users" : "משתמשים", "Apps" : "יישומים", @@ -345,5 +345,5 @@ "Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "ל־PHP שלך אין תמיכה ב־freetype. מצב כזה יגרום לתמונות פרופיל משובשות לצד מנשק הגדרות משובש.", "Back to log in" : "חזרה לכניסה", "Depending on your configuration, this button could also work to trust the domain:" : "בהתאם לתצורה שלך, הכפתור הזה יכול לעבוד גם כדי לתת אמון בשם המתחם:" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/core/l10n/ka_GE.js b/core/l10n/ka_GE.js index f56f1858730..642ef88ba6e 100644 --- a/core/l10n/ka_GE.js +++ b/core/l10n/ka_GE.js @@ -64,7 +64,7 @@ OC.L10N.register( "Error fetching contact actions" : "კონტაქტის ქმედებების მოხვეწისას წარმოიქმნა შეცდომა", "Settings" : "პარამეტრები", "Connection to server lost" : "სერვერთან კავშირი დაიკარგა", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["გვერდის ჩატვირთვის პროლბემა, ხელახალი ჩატვირთვა მოხდება %n წამში"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["გვერდის ჩატვირთვის პროლბემა, ხელახალი ჩატვირთვა მოხდება %n წამში","გვერდის ჩატვირთვის პროლბემა, ხელახალი ჩატვირთვა მოხდება %n წამში"], "Saving..." : "შენახვა...", "Dismiss" : "დათხოვნა", "This action requires you to confirm your password" : "ეს ქმედება საჭიროებს პაროლის დადასტურებას", @@ -91,7 +91,7 @@ OC.L10N.register( "OK" : "კარგი", "Error loading message template: {error}" : "შეცდომა წერილის შაბლონის ჩატვირთვისას: {error}", "read-only" : "მხოლოდ-კითხვადი", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} ფაილის კონფლიქტი"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} ფაილის კონფლიქტი","{count} ფაილის კონფლიქტი"], "One file conflict" : "კონფლიქტი ერთ ფაილთან", "New Files" : "ახალი ფაილები", "Already existing files" : "უკვე არსებული ფაილები", @@ -171,7 +171,7 @@ OC.L10N.register( "Could not unshare" : "გაზიარების შეწყვეტა ვერ მოხერხდა", "Error while sharing" : "შეცდომა გაზიარების დროს", "Share details could not be loaded for this item." : "ამ ობიექტისთვის გაზიარების დეტალები ვერ ჩაიტვირთა.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["ავტო-დასრულებისთვის საჭიროა მინიმუმ {count} სიბმოლო"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["ავტო-დასრულებისთვის საჭიროა მინიმუმ {count} სიბმოლო","ავტო-დასრულებისთვის საჭიროა მინიმუმ {count} სიბმოლო"], "This list is maybe truncated - please refine your search term to see more results." : "ეს სია შეიძლება იყოს წაკვეთილი - მეტი შედეგისთვის, გთხოვთ გაწმინდოთ თქვენი საძიებო სიტყვა.", "No users or groups found for {search}" : "მომხმარებლები და ჯგუფები {search}-ისთვის არ იქნა ნაპოვნი", "No users found for {search}" : "მომხმარებლები {search}-ისთვის არ იქნა ნაპოვნი", @@ -202,7 +202,7 @@ OC.L10N.register( "Hello {name}" : "გამარჯობა {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>ეს ძიების შედეგებია<script>alert(1)</script></strong>", "new" : "ახალი", - "_download %n file_::_download %n files_" : ["ჩამოტვირთეთ %n ფაილი"], + "_download %n file_::_download %n files_" : ["ჩამოტვირთეთ %n ფაილი","ჩამოტვირთეთ %n ფაილი"], "The update is in progress, leaving this page might interrupt the process in some environments." : "განახლება პროცესშია, გარკვეულ გარემოებებში ამ გვერდის დატოვებამ შეიძლება შეწყვიტოს პროცესი.", "Update to {version}" : "განაახლეთ ვერსიაზე {version}", "An error occurred." : "წარმოიშვა შეცდომა.", @@ -210,10 +210,10 @@ OC.L10N.register( "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "განახლებისას წარმოიშვა შეცდომა. მეტი ინფორმაციისთვის იხილეთ <a href=\"{url}\">ჩვენი ფორუმის პოსტი</a>, სადაც საუბარია ამ პრობლემაზე.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "განახლებისას წარმოიშვა შეცდომა. გთხოვთ განაცხადოთ ამ პრობლემის შესახებ <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud საზოგადოებაში</a>.", "Continue to Nextcloud" : "გაგრძლება Nextcloud-ისკენ", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["განახლება წარმატებით დასრულდა. Nextcloud-ისკენ გადაგამისამართებთ %n წამში."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["განახლება წარმატებით დასრულდა. Nextcloud-ისკენ გადაგამისამართებთ %n წამში.","განახლება წარმატებით დასრულდა. Nextcloud-ისკენ გადაგამისამართებთ %n წამში."], "Searching other places" : "ვეძებთ დანარჩენ ადგილებში", "No search results in other folders for {tag}{filter}{endtag}" : "ძიების შედეგები სხვა დირექტორიებში {tag}{filter}{endtag}-სთვის არაა", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} ძიების შედეგები სხვა დირექტორიებში"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} ძიების შედეგები სხვა დირექტორიებში","{count} ძიების შედეგები სხვა დირექტორიებში"], "Personal" : "პირადი", "Users" : "მომხმარებელი", "Apps" : "აპლიკაციები", @@ -346,4 +346,4 @@ OC.L10N.register( "Back to log in" : "უკან ავტორიზაციისკენ", "Depending on your configuration, this button could also work to trust the domain:" : "თქვენი კონფიგურაციიდან გამომდინარე, ეს ღილაკი დომენის ნდობისთვის შეიძლება ასევე მუშაობდეს." }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/core/l10n/ka_GE.json b/core/l10n/ka_GE.json index 2c93e76177b..44725888f59 100644 --- a/core/l10n/ka_GE.json +++ b/core/l10n/ka_GE.json @@ -62,7 +62,7 @@ "Error fetching contact actions" : "კონტაქტის ქმედებების მოხვეწისას წარმოიქმნა შეცდომა", "Settings" : "პარამეტრები", "Connection to server lost" : "სერვერთან კავშირი დაიკარგა", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["გვერდის ჩატვირთვის პროლბემა, ხელახალი ჩატვირთვა მოხდება %n წამში"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["გვერდის ჩატვირთვის პროლბემა, ხელახალი ჩატვირთვა მოხდება %n წამში","გვერდის ჩატვირთვის პროლბემა, ხელახალი ჩატვირთვა მოხდება %n წამში"], "Saving..." : "შენახვა...", "Dismiss" : "დათხოვნა", "This action requires you to confirm your password" : "ეს ქმედება საჭიროებს პაროლის დადასტურებას", @@ -89,7 +89,7 @@ "OK" : "კარგი", "Error loading message template: {error}" : "შეცდომა წერილის შაბლონის ჩატვირთვისას: {error}", "read-only" : "მხოლოდ-კითხვადი", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} ფაილის კონფლიქტი"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} ფაილის კონფლიქტი","{count} ფაილის კონფლიქტი"], "One file conflict" : "კონფლიქტი ერთ ფაილთან", "New Files" : "ახალი ფაილები", "Already existing files" : "უკვე არსებული ფაილები", @@ -169,7 +169,7 @@ "Could not unshare" : "გაზიარების შეწყვეტა ვერ მოხერხდა", "Error while sharing" : "შეცდომა გაზიარების დროს", "Share details could not be loaded for this item." : "ამ ობიექტისთვის გაზიარების დეტალები ვერ ჩაიტვირთა.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["ავტო-დასრულებისთვის საჭიროა მინიმუმ {count} სიბმოლო"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["ავტო-დასრულებისთვის საჭიროა მინიმუმ {count} სიბმოლო","ავტო-დასრულებისთვის საჭიროა მინიმუმ {count} სიბმოლო"], "This list is maybe truncated - please refine your search term to see more results." : "ეს სია შეიძლება იყოს წაკვეთილი - მეტი შედეგისთვის, გთხოვთ გაწმინდოთ თქვენი საძიებო სიტყვა.", "No users or groups found for {search}" : "მომხმარებლები და ჯგუფები {search}-ისთვის არ იქნა ნაპოვნი", "No users found for {search}" : "მომხმარებლები {search}-ისთვის არ იქნა ნაპოვნი", @@ -200,7 +200,7 @@ "Hello {name}" : "გამარჯობა {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>ეს ძიების შედეგებია<script>alert(1)</script></strong>", "new" : "ახალი", - "_download %n file_::_download %n files_" : ["ჩამოტვირთეთ %n ფაილი"], + "_download %n file_::_download %n files_" : ["ჩამოტვირთეთ %n ფაილი","ჩამოტვირთეთ %n ფაილი"], "The update is in progress, leaving this page might interrupt the process in some environments." : "განახლება პროცესშია, გარკვეულ გარემოებებში ამ გვერდის დატოვებამ შეიძლება შეწყვიტოს პროცესი.", "Update to {version}" : "განაახლეთ ვერსიაზე {version}", "An error occurred." : "წარმოიშვა შეცდომა.", @@ -208,10 +208,10 @@ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "განახლებისას წარმოიშვა შეცდომა. მეტი ინფორმაციისთვის იხილეთ <a href=\"{url}\">ჩვენი ფორუმის პოსტი</a>, სადაც საუბარია ამ პრობლემაზე.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "განახლებისას წარმოიშვა შეცდომა. გთხოვთ განაცხადოთ ამ პრობლემის შესახებ <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud საზოგადოებაში</a>.", "Continue to Nextcloud" : "გაგრძლება Nextcloud-ისკენ", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["განახლება წარმატებით დასრულდა. Nextcloud-ისკენ გადაგამისამართებთ %n წამში."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["განახლება წარმატებით დასრულდა. Nextcloud-ისკენ გადაგამისამართებთ %n წამში.","განახლება წარმატებით დასრულდა. Nextcloud-ისკენ გადაგამისამართებთ %n წამში."], "Searching other places" : "ვეძებთ დანარჩენ ადგილებში", "No search results in other folders for {tag}{filter}{endtag}" : "ძიების შედეგები სხვა დირექტორიებში {tag}{filter}{endtag}-სთვის არაა", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} ძიების შედეგები სხვა დირექტორიებში"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} ძიების შედეგები სხვა დირექტორიებში","{count} ძიების შედეგები სხვა დირექტორიებში"], "Personal" : "პირადი", "Users" : "მომხმარებელი", "Apps" : "აპლიკაციები", @@ -343,5 +343,5 @@ "Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "თქვენს PHP-ს არ აქვს freetype-ის მხარდაჭერა. ეს გამოწვევს დარღვეულ პროფილის სურათებს და მომხმარებლის ინტერფეისს.", "Back to log in" : "უკან ავტორიზაციისკენ", "Depending on your configuration, this button could also work to trust the domain:" : "თქვენი კონფიგურაციიდან გამომდინარე, ეს ღილაკი დომენის ნდობისთვის შეიძლება ასევე მუშაობდეს." -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js index 213f6cb674b..c94a6e965d1 100644 --- a/core/l10n/lt_LT.js +++ b/core/l10n/lt_LT.js @@ -64,7 +64,7 @@ OC.L10N.register( "Error fetching contact actions" : "Klaida bandant gauti veiksmus darbui su pažįstamų asmenų informacija", "Settings" : "Nustatymai", "Connection to server lost" : "Ryšys su serveriu nutrūko", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"], "Saving..." : "Įrašoma...", "Dismiss" : "Atmesti", "This action requires you to confirm your password" : "Šis veiksmas reikalauja, kad įvestumėte savo slaptažodį", @@ -91,7 +91,7 @@ OC.L10N.register( "OK" : "Gerai", "Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}", "read-only" : "tik skaitymui", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai","{count} nesuderinami rinkmenų pakeitimai"], "One file conflict" : "Nesuderinama rinkmena", "New Files" : "Įkeliamos rinkmenos", "Already existing files" : "Egzistuojančios rinkmenos saugykloje", @@ -155,7 +155,7 @@ OC.L10N.register( "Could not unshare" : "Negalima nustoti dalintis", "Error while sharing" : "Klaida, dalijimosi metu", "Share details could not be loaded for this item." : "Dalinimosi detalės negali būti atskleistos šiai bylai", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"], "This list is maybe truncated - please refine your search term to see more results." : "Sąrašas galimai sutrumpintas - prašome patikslinti paiešką, norint matyti daugiau rezultatų.", "No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}", "No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}", @@ -186,7 +186,7 @@ OC.L10N.register( "Hello {name}" : "Sveiki, {name},", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Paieškos rezultatai:<script>alert(1)</script></strong>", "new" : "Naujas", - "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"], + "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Vykdomas atnaujinimas, jei šis puslapis bus neuždarytas, yra tikimybė, kad sistemos atnaujinimas nepavyks.", "Update to {version}" : "Atnaujinti į versiją {version}", "An error occurred." : "Įvyko klaida.", @@ -194,10 +194,10 @@ OC.L10N.register( "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atnaujinimas nebuvo sėkmingas. Detalesnę problemos sprendimo informaciją rasite <a href=\"{url}\">forumo puslapyje</a>.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atnaujinimas buvo nesėkmingas. Prašome pranešti apie problemą <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">NextCloud bendruomenei</a>.", "Continue to Nextcloud" : "Eiti į NextCloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."], "Searching other places" : "Ieškoma kitose vietose", "No search results in other folders for {tag}{filter}{endtag}" : "Nėra paieškos rezultatų kituose aplankuose naudojat paieškos kriterijus: {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"], "Personal" : "Asmeniniai", "Users" : "Naudotojai", "Apps" : "Programėlės", @@ -305,4 +305,4 @@ OC.L10N.register( "Back to log in" : "Grįžti prie prisijungimo", "Depending on your configuration, this button could also work to trust the domain:" : "Priklausomai nuo konfigūracijos, šiuo mygtuku taip pat galima patvirtinti domeną kaip patikimą." }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json index 363c3639e68..54ec5ae3e13 100644 --- a/core/l10n/lt_LT.json +++ b/core/l10n/lt_LT.json @@ -62,7 +62,7 @@ "Error fetching contact actions" : "Klaida bandant gauti veiksmus darbui su pažįstamų asmenų informacija", "Settings" : "Nustatymai", "Connection to server lost" : "Ryšys su serveriu nutrūko", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundės","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių","Problemos, įkeliant puslapį. Įkeliama iš naujo po %n sekundžių"], "Saving..." : "Įrašoma...", "Dismiss" : "Atmesti", "This action requires you to confirm your password" : "Šis veiksmas reikalauja, kad įvestumėte savo slaptažodį", @@ -89,7 +89,7 @@ "OK" : "Gerai", "Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}", "read-only" : "tik skaitymui", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} nesuderinami rinkmenų pakeitimai","{count} nesuderinami rinkmenų pakeitimai"], "One file conflict" : "Nesuderinama rinkmena", "New Files" : "Įkeliamos rinkmenos", "Already existing files" : "Egzistuojančios rinkmenos saugykloje", @@ -153,7 +153,7 @@ "Could not unshare" : "Negalima nustoti dalintis", "Error while sharing" : "Klaida, dalijimosi metu", "Share details could not be loaded for this item." : "Dalinimosi detalės negali būti atskleistos šiai bylai", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius","Norint pasinaudoti automatinio užpildymo paslauga, reikia suvesti bent {count} simbolius"], "This list is maybe truncated - please refine your search term to see more results." : "Sąrašas galimai sutrumpintas - prašome patikslinti paiešką, norint matyti daugiau rezultatų.", "No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}", "No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}", @@ -184,7 +184,7 @@ "Hello {name}" : "Sveiki, {name},", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Paieškos rezultatai:<script>alert(1)</script></strong>", "new" : "Naujas", - "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"], + "_download %n file_::_download %n files_" : ["parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas","parsisiųsti %n rinkmenas"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Vykdomas atnaujinimas, jei šis puslapis bus neuždarytas, yra tikimybė, kad sistemos atnaujinimas nepavyks.", "Update to {version}" : "Atnaujinti į versiją {version}", "An error occurred." : "Įvyko klaida.", @@ -192,10 +192,10 @@ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Atnaujinimas nebuvo sėkmingas. Detalesnę problemos sprendimo informaciją rasite <a href=\"{url}\">forumo puslapyje</a>.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atnaujinimas buvo nesėkmingas. Prašome pranešti apie problemą <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">NextCloud bendruomenei</a>.", "Continue to Nextcloud" : "Eiti į NextCloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių.","Sėkmingai atnaujinta. NextCloud bus atidarytas po %n sekundžių."], "Searching other places" : "Ieškoma kitose vietose", "No search results in other folders for {tag}{filter}{endtag}" : "Nėra paieškos rezultatų kituose aplankuose naudojat paieškos kriterijus: {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose","{count} paieškos rezultatai kituose aplankuose"], "Personal" : "Asmeniniai", "Users" : "Naudotojai", "Apps" : "Programėlės", @@ -302,5 +302,5 @@ "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Detalesnės informacijos ieškokite <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentacijoje</a>", "Back to log in" : "Grįžti prie prisijungimo", "Depending on your configuration, this button could also work to trust the domain:" : "Priklausomai nuo konfigūracijos, šiuo mygtuku taip pat galima patvirtinti domeną kaip patikimą." -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/core/l10n/sk.js b/core/l10n/sk.js index c0df39679b4..2312c9e53c0 100644 --- a/core/l10n/sk.js +++ b/core/l10n/sk.js @@ -64,7 +64,7 @@ OC.L10N.register( "Error fetching contact actions" : "Chyba počas získavania akcií kontaktu", "Settings" : "Nastavenia", "Connection to server lost" : "Stratené spojenie so serverom", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Nepodarilo sa načítať stránku, opätovný pokus o %n sekundu","Nepodarilo sa načítať stránku, opätovný pokus o %n sekundy","Nepodarilo sa načítať stránku, opätovný pokus o %n sekúnd"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Nepodarilo sa načítať stránku, opätovný pokus o %n sekundu","Nepodarilo sa načítať stránku, opätovný pokus o %n sekundy","Nepodarilo sa načítať stránku, opätovný pokus o %n sekúnd","Nepodarilo sa načítať stránku, opätovný pokus o %n sekúnd"], "Saving..." : "Ukladám...", "Dismiss" : "Odmietnuť", "This action requires you to confirm your password" : "Táto akcia vyžaduje potvrdenie vášho hesla", @@ -91,7 +91,7 @@ OC.L10N.register( "OK" : "Ok", "Error loading message template: {error}" : "Chyba pri nahrávaní šablóny správy: {error}", "read-only" : "iba na čítanie", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} konflikt súboru","{count} konflikty súboru","{count} konfliktov súboru"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} konflikt súboru","{count} konflikty súboru","{count} konfliktov súboru","{count} konfliktov súboru"], "One file conflict" : "Jeden konflikt súboru", "New Files" : "Nové súbory", "Already existing files" : "Už existujúce súbory", @@ -171,7 +171,7 @@ OC.L10N.register( "Could not unshare" : "Nepodarilo sa zrušiť sprístupnenie", "Error while sharing" : "Chyba počas sprístupňovania", "Share details could not be loaded for this item." : "Nebolo možné načítať údaje o sprístupnení tejto položky.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Najmenej {count} znak je potrebný pre autodopĺňanie","Najmenej {count} znaky sú potrebné pre autodopĺňanie","Najmenej {count} znakov je potrebných pre autodopĺňanie"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Najmenej {count} znak je potrebný pre autodopĺňanie","Najmenej {count} znaky sú potrebné pre autodopĺňanie","Najmenej {count} znakov je potrebných pre autodopĺňanie","Najmenej {count} znakov je potrebných pre autodopĺňanie"], "This list is maybe truncated - please refine your search term to see more results." : "Tento zoznam môže byť skrátený - upresnite hľadaný výraz, aby ste získali viac výsledkov.", "No users or groups found for {search}" : "Výrazu {search} nezodpovedá žiadny používateľ ani skupina", "No users found for {search}" : "Výrazu {search} nezodpovedá žiadny používateľ", @@ -203,7 +203,7 @@ OC.L10N.register( "Hello {name}" : "Vitaj {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Toto sú výsledky vášho vyhľadávania <script>alert(1)</script></strong>", "new" : "nový", - "_download %n file_::_download %n files_" : ["stiahnuť %n súbor","stiahnuť %n súbory","stiahnuť %n súborov"], + "_download %n file_::_download %n files_" : ["stiahnuť %n súbor","stiahnuť %n súbory","stiahnuť %n súborov","stiahnuť %n súborov"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Aktualizácie prebieha. V niektorých prostrediach môže opustenie tejto stránky spôsobiť prerušenie aktualizácie.", "Update to {version}" : "Aktualizuj na {version}", "An error occurred." : "Vyskytla sa chyba.", @@ -211,10 +211,10 @@ OC.L10N.register( "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizácia neprebehla úspešne. Pre viac informácií <a href=\"{url}\">navštívte príspevok na našom fóre</a>, ktorý pokrýva tento problém.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizácia bola neúspešná. Oznámte prosím tento problém <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunite Nextcloud</a>.", "Continue to Nextcloud" : "Pokračovať na Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundu.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundy.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekúnd."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundu.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundy.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekúnd.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekúnd."], "Searching other places" : "Prehľadanie ostatných umiestnení", "No search results in other folders for {tag}{filter}{endtag}" : "Žiadne výsledky vyhľadávania v ostatných priečinkoch pre {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} výsledok vyhľadávania v ostatných priečinkoch","{count} výsledky vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} výsledok vyhľadávania v ostatných priečinkoch","{count} výsledky vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch"], "Personal" : "Osobné", "Users" : "Používatelia", "Apps" : "Aplikácie", @@ -352,4 +352,4 @@ OC.L10N.register( "Back to log in" : "Späť na prihlásenie", "Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/core/l10n/sk.json b/core/l10n/sk.json index 19499de9380..f62878ded72 100644 --- a/core/l10n/sk.json +++ b/core/l10n/sk.json @@ -62,7 +62,7 @@ "Error fetching contact actions" : "Chyba počas získavania akcií kontaktu", "Settings" : "Nastavenia", "Connection to server lost" : "Stratené spojenie so serverom", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Nepodarilo sa načítať stránku, opätovný pokus o %n sekundu","Nepodarilo sa načítať stránku, opätovný pokus o %n sekundy","Nepodarilo sa načítať stránku, opätovný pokus o %n sekúnd"], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Nepodarilo sa načítať stránku, opätovný pokus o %n sekundu","Nepodarilo sa načítať stránku, opätovný pokus o %n sekundy","Nepodarilo sa načítať stránku, opätovný pokus o %n sekúnd","Nepodarilo sa načítať stránku, opätovný pokus o %n sekúnd"], "Saving..." : "Ukladám...", "Dismiss" : "Odmietnuť", "This action requires you to confirm your password" : "Táto akcia vyžaduje potvrdenie vášho hesla", @@ -89,7 +89,7 @@ "OK" : "Ok", "Error loading message template: {error}" : "Chyba pri nahrávaní šablóny správy: {error}", "read-only" : "iba na čítanie", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} konflikt súboru","{count} konflikty súboru","{count} konfliktov súboru"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} konflikt súboru","{count} konflikty súboru","{count} konfliktov súboru","{count} konfliktov súboru"], "One file conflict" : "Jeden konflikt súboru", "New Files" : "Nové súbory", "Already existing files" : "Už existujúce súbory", @@ -169,7 +169,7 @@ "Could not unshare" : "Nepodarilo sa zrušiť sprístupnenie", "Error while sharing" : "Chyba počas sprístupňovania", "Share details could not be loaded for this item." : "Nebolo možné načítať údaje o sprístupnení tejto položky.", - "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Najmenej {count} znak je potrebný pre autodopĺňanie","Najmenej {count} znaky sú potrebné pre autodopĺňanie","Najmenej {count} znakov je potrebných pre autodopĺňanie"], + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Najmenej {count} znak je potrebný pre autodopĺňanie","Najmenej {count} znaky sú potrebné pre autodopĺňanie","Najmenej {count} znakov je potrebných pre autodopĺňanie","Najmenej {count} znakov je potrebných pre autodopĺňanie"], "This list is maybe truncated - please refine your search term to see more results." : "Tento zoznam môže byť skrátený - upresnite hľadaný výraz, aby ste získali viac výsledkov.", "No users or groups found for {search}" : "Výrazu {search} nezodpovedá žiadny používateľ ani skupina", "No users found for {search}" : "Výrazu {search} nezodpovedá žiadny používateľ", @@ -201,7 +201,7 @@ "Hello {name}" : "Vitaj {name}", "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Toto sú výsledky vášho vyhľadávania <script>alert(1)</script></strong>", "new" : "nový", - "_download %n file_::_download %n files_" : ["stiahnuť %n súbor","stiahnuť %n súbory","stiahnuť %n súborov"], + "_download %n file_::_download %n files_" : ["stiahnuť %n súbor","stiahnuť %n súbory","stiahnuť %n súborov","stiahnuť %n súborov"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Aktualizácie prebieha. V niektorých prostrediach môže opustenie tejto stránky spôsobiť prerušenie aktualizácie.", "Update to {version}" : "Aktualizuj na {version}", "An error occurred." : "Vyskytla sa chyba.", @@ -209,10 +209,10 @@ "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Aktualizácia neprebehla úspešne. Pre viac informácií <a href=\"{url}\">navštívte príspevok na našom fóre</a>, ktorý pokrýva tento problém.", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Aktualizácia bola neúspešná. Oznámte prosím tento problém <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">komunite Nextcloud</a>.", "Continue to Nextcloud" : "Pokračovať na Nextcloud", - "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundu.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundy.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekúnd."], + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundu.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekundy.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekúnd.","Aktualizácia bola úspešná. Presmerúva sa na Nextcloud za %n sekúnd."], "Searching other places" : "Prehľadanie ostatných umiestnení", "No search results in other folders for {tag}{filter}{endtag}" : "Žiadne výsledky vyhľadávania v ostatných priečinkoch pre {tag}{filter}{endtag}", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} výsledok vyhľadávania v ostatných priečinkoch","{count} výsledky vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} výsledok vyhľadávania v ostatných priečinkoch","{count} výsledky vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch","{count} výsledkov vyhľadávania v ostatných priečinkoch"], "Personal" : "Osobné", "Users" : "Používatelia", "Apps" : "Aplikácie", @@ -349,5 +349,5 @@ "Your PHP does not have freetype support. This will result in broken profile pictures and settings interface." : "Vaše PHP nemá podporu FreeType, čo bude mať za následok poškodenie profilových obrázkov a rozhrania nastavení.", "Back to log in" : "Späť na prihlásenie", "Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/core/l10n/uk.js b/core/l10n/uk.js index 22bedcc5768..89bc8cf7925 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -63,7 +63,7 @@ OC.L10N.register( "Error fetching contact actions" : "Неможливо отримати дії з контактами", "Settings" : "Налаштування", "Connection to server lost" : "З'єднання з сервером втрачено", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за 5 сек."], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за 5 сек.","Проблема під час завантаження сторінки, повторне завантаження за 5 сек."], "Saving..." : "Збереження...", "Dismiss" : "Припинити", "This action requires you to confirm your password" : "Ця дія потребує підтвердження вашого пароля", @@ -90,7 +90,7 @@ OC.L10N.register( "OK" : "OK", "Error loading message template: {error}" : "Помилка при завантаженні шаблону повідомлення: {error}", "read-only" : "Тільки для читання", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} файловий конфлікт","{count} файлових конфліктів","{count} файлових конфліктів"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} файловий конфлікт","{count} файлових конфліктів","{count} файлових конфліктів","{count} файлових конфліктів"], "One file conflict" : "Один файловий конфлікт", "New Files" : "Нових Файлів", "Already existing files" : "Файли що вже існують", @@ -178,13 +178,13 @@ OC.L10N.register( "Hello {name}, the weather is {weather}" : "Привіт {name}, погода {weather} ", "Hello {name}" : "Привіт {name}", "new" : "новий", - "_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів"], + "_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів","завантаження %n файлів"], "Update to {version}" : "Оновлення до {version}", "An error occurred." : "Виникла помилка.", "Please reload the page." : "Будь ласка, перезавантажте сторінку.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Оновлення не вдалося. За інформацією <a href=\"{url}\">зверніться до повідомлення на форумі</a>, що описує цю проблему.", "Searching other places" : "Йде пошук в інших місцях", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках"], "Personal" : "Особисте", "Users" : "Користувачі", "Apps" : "Додатки", @@ -271,4 +271,4 @@ OC.L10N.register( "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Для допомоги, дивіться <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>.", "Back to log in" : "Повернутися до сторінки авторизації" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/core/l10n/uk.json b/core/l10n/uk.json index ee535456ab3..23ac1e8eaf2 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -61,7 +61,7 @@ "Error fetching contact actions" : "Неможливо отримати дії з контактами", "Settings" : "Налаштування", "Connection to server lost" : "З'єднання з сервером втрачено", - "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за 5 сек."], + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за %n сек.","Проблема під час завантаження сторінки, повторне завантаження за 5 сек.","Проблема під час завантаження сторінки, повторне завантаження за 5 сек."], "Saving..." : "Збереження...", "Dismiss" : "Припинити", "This action requires you to confirm your password" : "Ця дія потребує підтвердження вашого пароля", @@ -88,7 +88,7 @@ "OK" : "OK", "Error loading message template: {error}" : "Помилка при завантаженні шаблону повідомлення: {error}", "read-only" : "Тільки для читання", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} файловий конфлікт","{count} файлових конфліктів","{count} файлових конфліктів"], + "_{count} file conflict_::_{count} file conflicts_" : ["{count} файловий конфлікт","{count} файлових конфліктів","{count} файлових конфліктів","{count} файлових конфліктів"], "One file conflict" : "Один файловий конфлікт", "New Files" : "Нових Файлів", "Already existing files" : "Файли що вже існують", @@ -176,13 +176,13 @@ "Hello {name}, the weather is {weather}" : "Привіт {name}, погода {weather} ", "Hello {name}" : "Привіт {name}", "new" : "новий", - "_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів"], + "_download %n file_::_download %n files_" : ["завантаження %n файлу","завантаження %n файлів","завантаження %n файлів","завантаження %n файлів"], "Update to {version}" : "Оновлення до {version}", "An error occurred." : "Виникла помилка.", "Please reload the page." : "Будь ласка, перезавантажте сторінку.", "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "Оновлення не вдалося. За інформацією <a href=\"{url}\">зверніться до повідомлення на форумі</a>, що описує цю проблему.", "Searching other places" : "Йде пошук в інших місцях", - "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках"], + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} результат пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках","{count} результатів пошуку в інших теках"], "Personal" : "Особисте", "Users" : "Користувачі", "Apps" : "Додатки", @@ -268,5 +268,5 @@ "Add \"%s\" as trusted domain" : "Додати \"%s\" як довірений домен", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Для допомоги, дивіться <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>.", "Back to log in" : "Повернутися до сторінки авторизації" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/core/vendor/DOMPurify/.bower.json b/core/vendor/DOMPurify/.bower.json index cb58c97b3bb..2eb81967225 100644 --- a/core/vendor/DOMPurify/.bower.json +++ b/core/vendor/DOMPurify/.bower.json @@ -1,6 +1,6 @@ { "name": "DOMPurify", - "version": "1.0.0", + "version": "1.0.4", "homepage": "https://github.com/cure53/DOMPurify", "author": "Cure53 <info@cure53.de>", "description": "A DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG", @@ -29,14 +29,13 @@ "test", "website" ], - "_release": "1.0.0", + "_release": "1.0.4", "_resolution": { "type": "version", - "tag": "1.0.0", - "commit": "4d0115a125b295e8b8e9fe4353222da53e543ba0" + "tag": "1.0.4", + "commit": "e7a1c316269bc0f6dd2698c3a7571bc4b561d892" }, "_source": "https://github.com/cure53/DOMPurify.git", "_target": "^1.0.0", - "_originalSource": "DOMPurify", - "_direct": true + "_originalSource": "DOMPurify" }
\ No newline at end of file diff --git a/core/vendor/DOMPurify/dist/purify.min.js b/core/vendor/DOMPurify/dist/purify.min.js index 4e7b95467b1..13ec1701f14 100644 --- a/core/vendor/DOMPurify/dist/purify.min.js +++ b/core/vendor/DOMPurify/dist/purify.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.DOMPurify=t()}(this,function(){"use strict";function e(e,t){for(var n=t.length;n--;)"string"==typeof t[n]&&(t[n]=t[n].toLowerCase()),e[t[n]]=!0;return e}function t(e){var t={},n=void 0;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(){return Function("return this")()}function r(){var h=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o(),g=function(e){return r(e)};if(g.version="1.0.0",g.removed=[],!h||!h.document||9!==h.document.nodeType)return g.isSupported=!1,g;var y=h.document,v=!1,b=!1,T=h.document,A=h.DocumentFragment,x=h.HTMLTemplateElement,S=h.Node,k=h.NodeFilter,E=h.NamedNodeMap,w=void 0===E?h.NamedNodeMap||h.MozNamedAttrMap:E,O=h.Text,M=h.Comment,N=h.DOMParser,L=h.XMLHttpRequest,D=void 0===L?h.XMLHttpRequest:L,_=h.encodeURI,R=void 0===_?h.encodeURI:_;if("function"==typeof x){var C=T.createElement("template");C.content&&C.content.ownerDocument&&(T=C.content.ownerDocument)}var F=T,z=F.implementation,H=F.createNodeIterator,I=F.getElementsByTagName,j=F.createDocumentFragment,U=y.importNode,q={};g.isSupported=z&&void 0!==z.createHTMLDocument&&9!==T.documentMode;var W=null,B=e({},[].concat(n(i),n(a),n(l),n(s),n(c))),G=null,P=e({},[].concat(n(d),n(u),n(m),n(f))),V=null,X=null,Y=!0,K=!0,$=!1,J=!1,Q=!1,Z=/\{\{[\s\S]*|[\s\S]*\}\}/gm,ee=/<%[\s\S]*|[\s\S]*%>/gm,te=!1,ne=!1,oe=!1,re=!1,ie=!1,ae=!1,le=!0,se=!0,ce={},de=e({},["audio","head","math","script","style","template","svg","video"]),ue=e({},["audio","video","img","source","image"]),me=e({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),fe=null,pe=T.createElement("form"),he=function(o){"object"!==(void 0===o?"undefined":p(o))&&(o={}),W="ALLOWED_TAGS"in o?e({},o.ALLOWED_TAGS):B,G="ALLOWED_ATTR"in o?e({},o.ALLOWED_ATTR):P,V="FORBID_TAGS"in o?e({},o.FORBID_TAGS):{},X="FORBID_ATTR"in o?e({},o.FORBID_ATTR):{},ce="USE_PROFILES"in o&&o.USE_PROFILES,Y=!1!==o.ALLOW_ARIA_ATTR,K=!1!==o.ALLOW_DATA_ATTR,$=o.ALLOW_UNKNOWN_PROTOCOLS||!1,J=o.SAFE_FOR_JQUERY||!1,Q=o.SAFE_FOR_TEMPLATES||!1,te=o.WHOLE_DOCUMENT||!1,re=o.RETURN_DOM||!1,ie=o.RETURN_DOM_FRAGMENT||!1,ae=o.RETURN_DOM_IMPORT||!1,oe=o.FORCE_BODY||!1,le=!1!==o.SANITIZE_DOM,se=!1!==o.KEEP_CONTENT,Q&&(K=!1),ie&&(re=!0),ce&&(W=e({},[].concat(n(c))),G=[],!0===ce.html&&(e(W,i),e(G,d)),!0===ce.svg&&(e(W,a),e(G,u),e(G,f)),!0===ce.svgFilters&&(e(W,l),e(G,u),e(G,f)),!0===ce.mathMl&&(e(W,s),e(G,m),e(G,f))),o.ADD_TAGS&&(W===B&&(W=t(W)),e(W,o.ADD_TAGS)),o.ADD_ATTR&&(G===P&&(G=t(G)),e(G,o.ADD_ATTR)),o.ADD_URI_SAFE_ATTR&&e(me,o.ADD_URI_SAFE_ATTR),se&&(W["#text"]=!0),Object&&"freeze"in Object&&Object.freeze(o),fe=o},ge=function(e){g.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}},ye=function(e,t){g.removed.push({attribute:t.getAttributeNode(e),from:t}),t.removeAttribute(e)},ve=function(e){var t=void 0,n=void 0;if(oe&&(e="<remove></remove>"+e),b){try{e=R(e)}catch(e){}var o=new D;o.responseType="document",o.open("GET","data:text/html;charset=utf-8,"+e,!1),o.send(null),t=o.response}if(v)try{t=(new N).parseFromString(e,"text/html")}catch(e){}return t&&t.documentElement||((n=(t=z.createHTMLDocument("")).body).parentNode.removeChild(n.parentNode.firstElementChild),n.outerHTML=e),I.call(t,te?"html":"body")[0]};g.isSupported&&function(){var e=ve('<svg><g onload="this.parentNode.remove()"></g></svg>');e.querySelector("svg")||(b=!0);try{(e=ve('<svg><p><style><img src="</style><img src=x onerror=alert(1)//">')).querySelector("svg img")&&(v=!0)}catch(e){}}();var be=function(e){return H.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,function(){return k.FILTER_ACCEPT},!1)},Te=function(e){return!(e instanceof O||e instanceof M)&&!("string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof w&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute)},Ae=function(e){return"object"===(void 0===S?"undefined":p(S))?e instanceof S:e&&"object"===(void 0===e?"undefined":p(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},xe=function(e,t,n){q[e]&&q[e].forEach(function(e){e.call(g,t,n,fe)})},Se=function(e){var t=void 0;if(xe("beforeSanitizeElements",e,null),Te(e))return ge(e),!0;var n=e.nodeName.toLowerCase();if(xe("uponSanitizeElement",e,{tagName:n,allowedTags:W}),!W[n]||V[n]){if(se&&!de[n]&&"function"==typeof e.insertAdjacentHTML)try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(e){}return ge(e),!0}return!J||e.firstElementChild||e.content&&e.content.firstElementChild||!/</g.test(e.textContent)||(g.removed.push({element:e.cloneNode()}),e.innerHTML=e.textContent.replace(/</g,"<")),Q&&3===e.nodeType&&(t=(t=(t=e.textContent).replace(Z," ")).replace(ee," "),e.textContent!==t&&(g.removed.push({element:e.cloneNode()}),e.textContent=t)),xe("afterSanitizeElements",e,null),!1},ke=/^data-[\-\w.\u00B7-\uFFFF]/,Ee=/^aria-[\-\w]+$/,we=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Oe=/^(?:\w+script|data):/i,Me=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Ne=function(e){var t=void 0,n=void 0,o=void 0,r=void 0,i=void 0,a=void 0,l=void 0;if(xe("beforeSanitizeAttributes",e,null),a=e.attributes){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:G};for(l=a.length;l--;){if(t=a[l],n=t.name,o=t.value.trim(),r=n.toLowerCase(),s.attrName=r,s.attrValue=o,s.keepAttr=!0,xe("uponSanitizeAttribute",e,s),o=s.attrValue,"name"===r&&"IMG"===e.nodeName&&a.id)i=a.id,a=Array.prototype.slice.apply(a),ye("id",e),ye(n,e),a.indexOf(i)>l&&e.setAttribute("id",i.value);else{if("INPUT"===e.nodeName&&"type"===r&&"file"===o&&(G[r]||!X[r]))continue;"id"===n&&e.setAttribute(n,""),ye(n,e)}if(s.keepAttr&&(!le||"id"!==r&&"name"!==r||!(o in h||o in T||o in pe))){if(Q&&(o=(o=o.replace(Z," ")).replace(ee," ")),K&&ke.test(r));else if(Y&&Ee.test(r));else{if(!G[r]||X[r])continue;if(me[r]);else if(we.test(o.replace(Me,"")));else if("src"!==r&&"xlink:href"!==r||0!==o.indexOf("data:")||!ue[e.nodeName.toLowerCase()]){if($&&!Oe.test(o.replace(Me,"")));else if(o)continue}else;}try{e.setAttribute(n,o),g.removed.pop()}catch(e){}}}xe("afterSanitizeAttributes",e,null)}},Le=function e(t){var n=void 0,o=be(t);for(xe("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)xe("uponSanitizeShadowNode",n,null),Se(n)||(n.content instanceof A&&e(n.content),Ne(n));xe("afterSanitizeShadowDOM",t,null)};return g.sanitize=function(e,t){var n=void 0,o=void 0,r=void 0,i=void 0,a=void 0;if(e||(e="\x3c!--\x3e"),"string"!=typeof e&&!Ae(e)){if("function"!=typeof e.toString)throw new TypeError("toString is not a function");e=e.toString()}if(!g.isSupported){if("object"===p(h.toStaticHTML)||"function"==typeof h.toStaticHTML){if("string"==typeof e)return h.toStaticHTML(e);if(Ae(e))return h.toStaticHTML(e.outerHTML)}return e}if(ne||he(t),g.removed=[],e instanceof S)1===(o=(n=ve("\x3c!--\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===o.nodeName?n=o:n.appendChild(o);else{if(!re&&!te&&-1===e.indexOf("<"))return e;if(!(n=ve(e)))return re?null:""}oe&&ge(n.firstChild);for(var l=be(n);r=l.nextNode();)3===r.nodeType&&r===i||Se(r)||(r.content instanceof A&&Le(r.content),Ne(r),i=r);if(re){if(ie)for(a=j.call(n.ownerDocument);n.firstChild;)a.appendChild(n.firstChild);else a=n;return ae&&(a=U.call(y,a,!0)),a}return te?n.outerHTML:n.innerHTML},g.setConfig=function(e){he(e),ne=!0},g.clearConfig=function(){fe=null,ne=!1},g.addHook=function(e,t){"function"==typeof t&&(q[e]=q[e]||[],q[e].push(t))},g.removeHook=function(e){q[e]&&q[e].pop()},g.removeHooks=function(e){q[e]&&(q[e]=[])},g.removeAllHooks=function(){q={}},g}var i=["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"],a=["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"],l=["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence"],s=["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"],c=["#text"],d=["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns"],u=["accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"],m=["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"],f=["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"],p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};return r()}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.DOMPurify=t()}(this,function(){"use strict";function e(e,t){for(var n=t.length;n--;)"string"==typeof t[n]&&(t[n]=t[n].toLowerCase()),e[t[n]]=!0;return e}function t(e){var t={},n=void 0;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(){var x=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A(),S=function(e){return o(e)};if(S.version="1.0.4",S.removed=[],!x||!x.document||9!==x.document.nodeType)return S.isSupported=!1,S;var k=x.document,w=!1,E=!1,L=x.document,O=x.DocumentFragment,M=x.HTMLTemplateElement,N=x.Node,D=x.NodeFilter,_=x.NamedNodeMap,R=void 0===_?x.NamedNodeMap||x.MozNamedAttrMap:_,C=x.Text,F=x.Comment,z=x.DOMParser,H=x.XMLHttpRequest,I=void 0===H?x.XMLHttpRequest:H,j=x.encodeURI,U=void 0===j?x.encodeURI:j;if("function"==typeof M){var P=L.createElement("template");P.content&&P.content.ownerDocument&&(L=P.content.ownerDocument)}var W=L,q=W.implementation,G=W.createNodeIterator,B=W.getElementsByTagName,X=W.createDocumentFragment,V=k.importNode,Y={};S.isSupported=q&&void 0!==q.createHTMLDocument&&9!==L.documentMode;var K=p,$=f,J=h,Q=g,Z=v,ee=b,te=y,ne=null,oe=e({},[].concat(n(r),n(i),n(a),n(l),n(s))),re=null,ie=e({},[].concat(n(c),n(d),n(u),n(m))),ae=null,le=null,se=!0,ce=!0,de=!1,ue=!1,me=!1,pe=!1,fe=!1,he=!1,ge=!1,ye=!1,ve=!1,be=!0,Te=!0,Ae={},xe=e({},["audio","head","math","script","style","template","svg","video"]),Se=e({},["audio","video","img","source","image"]),ke=e({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),we=null,Ee=L.createElement("form"),Le=function(o){"object"!==(void 0===o?"undefined":T(o))&&(o={}),ne="ALLOWED_TAGS"in o?e({},o.ALLOWED_TAGS):oe,re="ALLOWED_ATTR"in o?e({},o.ALLOWED_ATTR):ie,ae="FORBID_TAGS"in o?e({},o.FORBID_TAGS):{},le="FORBID_ATTR"in o?e({},o.FORBID_ATTR):{},Ae="USE_PROFILES"in o&&o.USE_PROFILES,se=!1!==o.ALLOW_ARIA_ATTR,ce=!1!==o.ALLOW_DATA_ATTR,de=o.ALLOW_UNKNOWN_PROTOCOLS||!1,ue=o.SAFE_FOR_JQUERY||!1,me=o.SAFE_FOR_TEMPLATES||!1,pe=o.WHOLE_DOCUMENT||!1,ge=o.RETURN_DOM||!1,ye=o.RETURN_DOM_FRAGMENT||!1,ve=o.RETURN_DOM_IMPORT||!1,he=o.FORCE_BODY||!1,be=!1!==o.SANITIZE_DOM,Te=!1!==o.KEEP_CONTENT,te=o.ALLOWED_URI_REGEXP||te,me&&(ce=!1),ye&&(ge=!0),Ae&&(ne=e({},[].concat(n(s))),re=[],!0===Ae.html&&(e(ne,r),e(re,c)),!0===Ae.svg&&(e(ne,i),e(re,d),e(re,m)),!0===Ae.svgFilters&&(e(ne,a),e(re,d),e(re,m)),!0===Ae.mathMl&&(e(ne,l),e(re,u),e(re,m))),o.ADD_TAGS&&(ne===oe&&(ne=t(ne)),e(ne,o.ADD_TAGS)),o.ADD_ATTR&&(re===ie&&(re=t(re)),e(re,o.ADD_ATTR)),o.ADD_URI_SAFE_ATTR&&e(ke,o.ADD_URI_SAFE_ATTR),Te&&(ne["#text"]=!0),Object&&"freeze"in Object&&Object.freeze(o),we=o},Oe=function(e){S.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}},Me=function(e,t){try{S.removed.push({attribute:t.getAttributeNode(e),from:t})}catch(e){S.removed.push({attribute:null,from:t})}t.removeAttribute(e)},Ne=function(e){var t=void 0,n=void 0;if(he&&(e="<remove></remove>"+e),E){try{e=U(e)}catch(e){}var o=new I;o.responseType="document",o.open("GET","data:text/html;charset=utf-8,"+e,!1),o.send(null),t=o.response}if(w)try{t=(new z).parseFromString(e,"text/html")}catch(e){}return t&&t.documentElement||((n=(t=q.createHTMLDocument("")).body).parentNode.removeChild(n.parentNode.firstElementChild),n.outerHTML=e),B.call(t,pe?"html":"body")[0]};S.isSupported&&function(){var e=Ne('<svg><g onload="this.parentNode.remove()"></g></svg>');e.querySelector("svg")||(E=!0);try{(e=Ne('<svg><p><style><img src="</style><img src=x onerror=alert(1)//">')).querySelector("svg img")&&(w=!0)}catch(e){}}();var De=function(e){return G.call(e.ownerDocument||e,e,D.SHOW_ELEMENT|D.SHOW_COMMENT|D.SHOW_TEXT,function(){return D.FILTER_ACCEPT},!1)},_e=function(e){return!(e instanceof C||e instanceof F)&&!("string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof R&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute)},Re=function(e){return"object"===(void 0===N?"undefined":T(N))?e instanceof N:e&&"object"===(void 0===e?"undefined":T(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Ce=function(e,t,n){Y[e]&&Y[e].forEach(function(e){e.call(S,t,n,we)})},Fe=function(e){var t=void 0;if(Ce("beforeSanitizeElements",e,null),_e(e))return Oe(e),!0;var n=e.nodeName.toLowerCase();if(Ce("uponSanitizeElement",e,{tagName:n,allowedTags:ne}),!ne[n]||ae[n]){if(Te&&!xe[n]&&"function"==typeof e.insertAdjacentHTML)try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(e){}return Oe(e),!0}return!ue||e.firstElementChild||e.content&&e.content.firstElementChild||!/</g.test(e.textContent)||(S.removed.push({element:e.cloneNode()}),e.innerHTML=e.textContent.replace(/</g,"<")),me&&3===e.nodeType&&(t=(t=(t=e.textContent).replace(K," ")).replace($," "),e.textContent!==t&&(S.removed.push({element:e.cloneNode()}),e.textContent=t)),Ce("afterSanitizeElements",e,null),!1},ze=function(e){var t=void 0,n=void 0,o=void 0,r=void 0,i=void 0,a=void 0,l=void 0;if(Ce("beforeSanitizeAttributes",e,null),a=e.attributes){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:re};for(l=a.length;l--;){if(t=a[l],n=t.name,o=t.value.trim(),r=n.toLowerCase(),s.attrName=r,s.attrValue=o,s.keepAttr=!0,Ce("uponSanitizeAttribute",e,s),o=s.attrValue,"name"===r&&"IMG"===e.nodeName&&a.id)i=a.id,a=Array.prototype.slice.apply(a),Me("id",e),Me(n,e),a.indexOf(i)>l&&e.setAttribute("id",i.value);else{if("INPUT"===e.nodeName&&"type"===r&&"file"===o&&(re[r]||!le[r]))continue;"id"===n&&e.setAttribute(n,""),Me(n,e)}if(s.keepAttr&&(!be||"id"!==r&&"name"!==r||!(o in L||o in Ee))){if(me&&(o=(o=o.replace(K," ")).replace($," ")),ce&&J.test(r));else if(se&&Q.test(r));else{if(!re[r]||le[r])continue;if(ke[r]);else if(te.test(o.replace(ee,"")));else if("src"!==r&&"xlink:href"!==r||0!==o.indexOf("data:")||!Se[e.nodeName.toLowerCase()]){if(de&&!Z.test(o.replace(ee,"")));else if(o)continue}else;}try{e.setAttribute(n,o),S.removed.pop()}catch(e){}}}Ce("afterSanitizeAttributes",e,null)}},He=function e(t){var n=void 0,o=De(t);for(Ce("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)Ce("uponSanitizeShadowNode",n,null),Fe(n)||(n.content instanceof O&&e(n.content),ze(n));Ce("afterSanitizeShadowDOM",t,null)};return S.sanitize=function(e,t){var n=void 0,o=void 0,r=void 0,i=void 0,a=void 0;if(e||(e="\x3c!--\x3e"),"string"!=typeof e&&!Re(e)){if("function"!=typeof e.toString)throw new TypeError("toString is not a function");if("string"!=typeof(e=e.toString()))throw new TypeError("dirty is not a string, aborting")}if(!S.isSupported){if("object"===T(x.toStaticHTML)||"function"==typeof x.toStaticHTML){if("string"==typeof e)return x.toStaticHTML(e);if(Re(e))return x.toStaticHTML(e.outerHTML)}return e}if(fe||Le(t),S.removed=[],e instanceof N)1===(o=(n=Ne("\x3c!--\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===o.nodeName?n=o:n.appendChild(o);else{if(!ge&&!pe&&-1===e.indexOf("<"))return e;if(!(n=Ne(e)))return ge?null:""}he&&Oe(n.firstChild);for(var l=De(n);r=l.nextNode();)3===r.nodeType&&r===i||Fe(r)||(r.content instanceof O&&He(r.content),ze(r),i=r);if(ge){if(ye)for(a=X.call(n.ownerDocument);n.firstChild;)a.appendChild(n.firstChild);else a=n;return ve&&(a=V.call(k,a,!0)),a}return pe?n.outerHTML:n.innerHTML},S.setConfig=function(e){Le(e),fe=!0},S.clearConfig=function(){we=null,fe=!1},S.addHook=function(e,t){"function"==typeof t&&(Y[e]=Y[e]||[],Y[e].push(t))},S.removeHook=function(e){Y[e]&&Y[e].pop()},S.removeHooks=function(e){Y[e]&&(Y[e]=[])},S.removeAllHooks=function(){Y={}},S}var r=["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"],i=["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"],a=["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"],l=["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"],s=["#text"],c=["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","crossorigin","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","integrity","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns"],d=["accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"],u=["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"],m=["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"],p=/\{\{[\s\S]*|[\s\S]*\}\}/gm,f=/<%[\s\S]*|[\s\S]*%>/gm,h=/^data-[\-\w.\u00B7-\uFFFF]/,g=/^aria-[\-\w]+$/,y=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,v=/^(?:\w+script|data):/i,b=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A=function(){return"undefined"==typeof window?null:window};return o()}); //# sourceMappingURL=purify.min.js.map diff --git a/core/vendor/autosize/.bower.json b/core/vendor/autosize/.bower.json index 7d6321e7d74..d1bcb9577b1 100644 --- a/core/vendor/autosize/.bower.json +++ b/core/vendor/autosize/.bower.json @@ -1,39 +1,14 @@ { "name": "autosize", - "description": "Autosize is a small, stand-alone script to automatically adjust textarea height to fit text.", - "dependencies": {}, - "keywords": [ - "textarea", - "form", - "ui" - ], - "authors": [ - { - "name": "Jack Moore", - "url": "http://www.jacklmoore.com", - "email": "hello@jacklmoore.com" - } - ], - "license": "MIT", - "homepage": "http://www.jacklmoore.com/autosize", - "ignore": [], - "repository": { - "type": "git", - "url": "http://github.com/jackmoore/autosize.git" - }, - "main": "dist/autosize.js", - "moduleType": [ - "amd", - "node" - ], - "version": "4.0.0", - "_release": "4.0.0", + "homepage": "https://github.com/jackmoore/autosize", + "version": "4.0.2", + "_release": "4.0.2", "_resolution": { "type": "version", - "tag": "4.0.0", - "commit": "09f21821aa6ee8237a558d2921649f54cee3b83a" + "tag": "4.0.2", + "commit": "e394a257cc1e059eadc4198f56c301702289dd88" }, "_source": "https://github.com/jackmoore/autosize.git", - "_target": "4.0.0", + "_target": "^4.0.0", "_originalSource": "autosize" }
\ No newline at end of file diff --git a/core/vendor/autosize/dist/autosize.min.js b/core/vendor/autosize/dist/autosize.min.js index 2a162d3da5a..4d9b4e9a7cd 100644 --- a/core/vendor/autosize/dist/autosize.min.js +++ b/core/vendor/autosize/dist/autosize.min.js @@ -1,6 +1,6 @@ /*! - Autosize 4.0.0 + autosize 4.0.2 license: MIT http://www.jacklmoore.com/autosize */ -!function(e,t){if("function"==typeof define&&define.amd)define(["exports","module"],t);else if("undefined"!=typeof exports&&"undefined"!=typeof module)t(exports,module);else{var n={exports:{}};t(n.exports,n),e.autosize=n.exports}}(this,function(e,t){"use strict";function n(e){function t(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),s="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(s)&&(s=0),l()}function n(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function o(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){var t=e.style.height,n=o(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="";var i=e.scrollHeight+s;return 0===e.scrollHeight?void(e.style.height=t):(e.style.height=i+"px",u=e.clientWidth,n.forEach(function(e){e.node.scrollTop=e.scrollTop}),void(r&&(document.documentElement.scrollTop=r)))}function l(){r();var t=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i="content-box"===o.boxSizing?Math.round(parseFloat(o.height)):e.offsetHeight;if(i!==t?"hidden"===o.overflowY&&(n("scroll"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):"hidden"!==o.overflowY&&(n("hidden"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),a!==i){a=i;var l=d("autosize:resized");try{e.dispatchEvent(l)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var s=null,u=e.clientWidth,a=null,c=function(){e.clientWidth!==u&&l()},p=function(t){window.removeEventListener("resize",c,!1),e.removeEventListener("input",l,!1),e.removeEventListener("keyup",l,!1),e.removeEventListener("autosize:destroy",p,!1),e.removeEventListener("autosize:update",l,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",p,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",l,!1),window.addEventListener("resize",c,!1),e.addEventListener("input",l,!1),e.addEventListener("autosize:update",l,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:p,update:l}),t()}}function o(e){var t=i.get(e);t&&t.destroy()}function r(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){e.indexOf(n)===-1&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}}(),d=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){d=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(l=function(e){return e},l.destroy=function(e){return e},l.update=function(e){return e}):(l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e,t)}),e},l.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e}),t.exports=l});
\ No newline at end of file +!function(e,t){if("function"==typeof define&&define.amd)define(["module","exports"],t);else if("undefined"!=typeof exports)t(module,exports);else{var n={exports:{}};t(n,n.exports),e.autosize=n.exports}}(this,function(e,t){"use strict";var n,o,p="function"==typeof Map?new Map:(n=[],o=[],{has:function(e){return-1<n.indexOf(e)},get:function(e){return o[n.indexOf(e)]},set:function(e,t){-1===n.indexOf(e)&&(n.push(e),o.push(t))},delete:function(e){var t=n.indexOf(e);-1<t&&(n.splice(t,1),o.splice(t,1))}}),c=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){c=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}function r(r){if(r&&r.nodeName&&"TEXTAREA"===r.nodeName&&!p.has(r)){var e,n=null,o=null,i=null,d=function(){r.clientWidth!==o&&a()},l=function(t){window.removeEventListener("resize",d,!1),r.removeEventListener("input",a,!1),r.removeEventListener("keyup",a,!1),r.removeEventListener("autosize:destroy",l,!1),r.removeEventListener("autosize:update",a,!1),Object.keys(t).forEach(function(e){r.style[e]=t[e]}),p.delete(r)}.bind(r,{height:r.style.height,resize:r.style.resize,overflowY:r.style.overflowY,overflowX:r.style.overflowX,wordWrap:r.style.wordWrap});r.addEventListener("autosize:destroy",l,!1),"onpropertychange"in r&&"oninput"in r&&r.addEventListener("keyup",a,!1),window.addEventListener("resize",d,!1),r.addEventListener("input",a,!1),r.addEventListener("autosize:update",a,!1),r.style.overflowX="hidden",r.style.wordWrap="break-word",p.set(r,{destroy:l,update:a}),"vertical"===(e=window.getComputedStyle(r,null)).resize?r.style.resize="none":"both"===e.resize&&(r.style.resize="horizontal"),n="content-box"===e.boxSizing?-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)):parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),isNaN(n)&&(n=0),a()}function s(e){var t=r.style.width;r.style.width="0px",r.offsetWidth,r.style.width=t,r.style.overflowY=e}function u(){if(0!==r.scrollHeight){var e=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}(r),t=document.documentElement&&document.documentElement.scrollTop;r.style.height="",r.style.height=r.scrollHeight+n+"px",o=r.clientWidth,e.forEach(function(e){e.node.scrollTop=e.scrollTop}),t&&(document.documentElement.scrollTop=t)}}function a(){u();var e=Math.round(parseFloat(r.style.height)),t=window.getComputedStyle(r,null),n="content-box"===t.boxSizing?Math.round(parseFloat(t.height)):r.offsetHeight;if(n<e?"hidden"===t.overflowY&&(s("scroll"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight):"hidden"!==t.overflowY&&(s("hidden"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight),i!==n){i=n;var o=c("autosize:resized");try{r.dispatchEvent(o)}catch(e){}}}}function i(e){var t=p.get(e);t&&t.destroy()}function d(e){var t=p.get(e);t&&t.update()}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?((l=function(e){return e}).destroy=function(e){return e},l.update=function(e){return e}):((l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return r(e)}),e}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],d),e}),t.default=l,e.exports=t.default});
\ No newline at end of file diff --git a/core/vendor/core.js b/core/vendor/core.js index 228b0b4da1f..4dec5d56849 100644 --- a/core/vendor/core.js +++ b/core/vendor/core.js @@ -5950,12 +5950,12 @@ dav.Client.prototype = { */ !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n||t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<o.length;a++)i(o[a]);return i}({1:[function(t,e,n){function o(t,e){for(;t&&t.nodeType!==i;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var i=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}e.exports=o},{}],2:[function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function i(t,e,n,o){return function(n){n.delegateTarget=r(n.target,e),n.delegateTarget&&o.call(t,n)}}var r=t("./closest");e.exports=o},{"./closest":1}],3:[function(t,e,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},{}],4:[function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return i(t,e,n);if(c.nodeList(t))return r(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function r(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return l(document.body,t,e,n)}var c=t("./is"),l=t("delegate");e.exports=o},{"./is":3,delegate:2}],5:[function(t,e,n){function o(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),i=document.createRange();i.selectNodeContents(t),o.removeAllRanges(),o.addRange(i),e=o.toString()}return e}e.exports=o},{}],6:[function(t,e,n){function o(){}o.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;for(o;o<i;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;r<a;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],7:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if(void 0!==o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),c=function(){function t(e){o(this,t),this.resolveOptions(e),this.initSelection()}return a(t,[{key:"resolveOptions",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function t(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function t(){var e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var o=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=o+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function t(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function t(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function t(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function t(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function t(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function t(){this.removeFake()}},{key:"action",set:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function t(){return this._action}},{key:"target",set:function t(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function t(){return this._target}}]),t}();t.exports=c})},{select:5}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if(void 0!==o)r(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var s=i(e),u=i(n),f=i(o),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),p=function(t){function e(t,n){r(this,e);var o=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.resolveOptions(n),o.listenClick(t),o}return c(e,t),h(e,[{key:"resolveOptions",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===d(e.container)?e.container:document.body}},{key:"listenClick",value:function t(e){var n=this;this.listener=(0,f.default)(e,"click",function(t){return n.onClick(t)})}},{key:"onClick",value:function t(e){var n=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new s.default({action:this.action(n),target:this.target(n),text:this.text(n),container:this.container,trigger:n,emitter:this})}},{key:"defaultAction",value:function t(e){return l("action",e)}},{key:"defaultTarget",value:function t(e){var n=l("target",e);if(n)return document.querySelector(n)}},{key:"defaultText",value:function t(e){return l("text",e)}},{key:"destroy",value:function t(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),e}(u.default);t.exports=p})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)}); /*! - Autosize 4.0.0 + autosize 4.0.2 license: MIT http://www.jacklmoore.com/autosize */ -!function(e,t){if("function"==typeof define&&define.amd)define(["exports","module"],t);else if("undefined"!=typeof exports&&"undefined"!=typeof module)t(exports,module);else{var n={exports:{}};t(n.exports,n),e.autosize=n.exports}}(this,function(e,t){"use strict";function n(e){function t(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),s="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(s)&&(s=0),l()}function n(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function o(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){var t=e.style.height,n=o(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="";var i=e.scrollHeight+s;return 0===e.scrollHeight?void(e.style.height=t):(e.style.height=i+"px",u=e.clientWidth,n.forEach(function(e){e.node.scrollTop=e.scrollTop}),void(r&&(document.documentElement.scrollTop=r)))}function l(){r();var t=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i="content-box"===o.boxSizing?Math.round(parseFloat(o.height)):e.offsetHeight;if(i!==t?"hidden"===o.overflowY&&(n("scroll"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):"hidden"!==o.overflowY&&(n("hidden"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),a!==i){a=i;var l=d("autosize:resized");try{e.dispatchEvent(l)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var s=null,u=e.clientWidth,a=null,c=function(){e.clientWidth!==u&&l()},p=function(t){window.removeEventListener("resize",c,!1),e.removeEventListener("input",l,!1),e.removeEventListener("keyup",l,!1),e.removeEventListener("autosize:destroy",p,!1),e.removeEventListener("autosize:update",l,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",p,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",l,!1),window.addEventListener("resize",c,!1),e.addEventListener("input",l,!1),e.addEventListener("autosize:update",l,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:p,update:l}),t()}}function o(e){var t=i.get(e);t&&t.destroy()}function r(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){e.indexOf(n)===-1&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}}(),d=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){d=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(l=function(e){return e},l.destroy=function(e){return e},l.update=function(e){return e}):(l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e,t)}),e},l.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e}),t.exports=l}); -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.DOMPurify=t()}(this,function(){"use strict";function e(e,t){for(var n=t.length;n--;)"string"==typeof t[n]&&(t[n]=t[n].toLowerCase()),e[t[n]]=!0;return e}function t(e){var t={},n=void 0;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(){return Function("return this")()}function r(){var h=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o(),g=function(e){return r(e)};if(g.version="1.0.0",g.removed=[],!h||!h.document||9!==h.document.nodeType)return g.isSupported=!1,g;var y=h.document,v=!1,b=!1,T=h.document,A=h.DocumentFragment,x=h.HTMLTemplateElement,S=h.Node,k=h.NodeFilter,E=h.NamedNodeMap,w=void 0===E?h.NamedNodeMap||h.MozNamedAttrMap:E,O=h.Text,M=h.Comment,N=h.DOMParser,L=h.XMLHttpRequest,D=void 0===L?h.XMLHttpRequest:L,_=h.encodeURI,R=void 0===_?h.encodeURI:_;if("function"==typeof x){var C=T.createElement("template");C.content&&C.content.ownerDocument&&(T=C.content.ownerDocument)}var F=T,z=F.implementation,H=F.createNodeIterator,I=F.getElementsByTagName,j=F.createDocumentFragment,U=y.importNode,q={};g.isSupported=z&&void 0!==z.createHTMLDocument&&9!==T.documentMode;var W=null,B=e({},[].concat(n(i),n(a),n(l),n(s),n(c))),G=null,P=e({},[].concat(n(d),n(u),n(m),n(f))),V=null,X=null,Y=!0,K=!0,$=!1,J=!1,Q=!1,Z=/\{\{[\s\S]*|[\s\S]*\}\}/gm,ee=/<%[\s\S]*|[\s\S]*%>/gm,te=!1,ne=!1,oe=!1,re=!1,ie=!1,ae=!1,le=!0,se=!0,ce={},de=e({},["audio","head","math","script","style","template","svg","video"]),ue=e({},["audio","video","img","source","image"]),me=e({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),fe=null,pe=T.createElement("form"),he=function(o){"object"!==(void 0===o?"undefined":p(o))&&(o={}),W="ALLOWED_TAGS"in o?e({},o.ALLOWED_TAGS):B,G="ALLOWED_ATTR"in o?e({},o.ALLOWED_ATTR):P,V="FORBID_TAGS"in o?e({},o.FORBID_TAGS):{},X="FORBID_ATTR"in o?e({},o.FORBID_ATTR):{},ce="USE_PROFILES"in o&&o.USE_PROFILES,Y=!1!==o.ALLOW_ARIA_ATTR,K=!1!==o.ALLOW_DATA_ATTR,$=o.ALLOW_UNKNOWN_PROTOCOLS||!1,J=o.SAFE_FOR_JQUERY||!1,Q=o.SAFE_FOR_TEMPLATES||!1,te=o.WHOLE_DOCUMENT||!1,re=o.RETURN_DOM||!1,ie=o.RETURN_DOM_FRAGMENT||!1,ae=o.RETURN_DOM_IMPORT||!1,oe=o.FORCE_BODY||!1,le=!1!==o.SANITIZE_DOM,se=!1!==o.KEEP_CONTENT,Q&&(K=!1),ie&&(re=!0),ce&&(W=e({},[].concat(n(c))),G=[],!0===ce.html&&(e(W,i),e(G,d)),!0===ce.svg&&(e(W,a),e(G,u),e(G,f)),!0===ce.svgFilters&&(e(W,l),e(G,u),e(G,f)),!0===ce.mathMl&&(e(W,s),e(G,m),e(G,f))),o.ADD_TAGS&&(W===B&&(W=t(W)),e(W,o.ADD_TAGS)),o.ADD_ATTR&&(G===P&&(G=t(G)),e(G,o.ADD_ATTR)),o.ADD_URI_SAFE_ATTR&&e(me,o.ADD_URI_SAFE_ATTR),se&&(W["#text"]=!0),Object&&"freeze"in Object&&Object.freeze(o),fe=o},ge=function(e){g.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}},ye=function(e,t){g.removed.push({attribute:t.getAttributeNode(e),from:t}),t.removeAttribute(e)},ve=function(e){var t=void 0,n=void 0;if(oe&&(e="<remove></remove>"+e),b){try{e=R(e)}catch(e){}var o=new D;o.responseType="document",o.open("GET","data:text/html;charset=utf-8,"+e,!1),o.send(null),t=o.response}if(v)try{t=(new N).parseFromString(e,"text/html")}catch(e){}return t&&t.documentElement||((n=(t=z.createHTMLDocument("")).body).parentNode.removeChild(n.parentNode.firstElementChild),n.outerHTML=e),I.call(t,te?"html":"body")[0]};g.isSupported&&function(){var e=ve('<svg><g onload="this.parentNode.remove()"></g></svg>');e.querySelector("svg")||(b=!0);try{(e=ve('<svg><p><style><img src="</style><img src=x onerror=alert(1)//">')).querySelector("svg img")&&(v=!0)}catch(e){}}();var be=function(e){return H.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,function(){return k.FILTER_ACCEPT},!1)},Te=function(e){return!(e instanceof O||e instanceof M)&&!("string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof w&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute)},Ae=function(e){return"object"===(void 0===S?"undefined":p(S))?e instanceof S:e&&"object"===(void 0===e?"undefined":p(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},xe=function(e,t,n){q[e]&&q[e].forEach(function(e){e.call(g,t,n,fe)})},Se=function(e){var t=void 0;if(xe("beforeSanitizeElements",e,null),Te(e))return ge(e),!0;var n=e.nodeName.toLowerCase();if(xe("uponSanitizeElement",e,{tagName:n,allowedTags:W}),!W[n]||V[n]){if(se&&!de[n]&&"function"==typeof e.insertAdjacentHTML)try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(e){}return ge(e),!0}return!J||e.firstElementChild||e.content&&e.content.firstElementChild||!/</g.test(e.textContent)||(g.removed.push({element:e.cloneNode()}),e.innerHTML=e.textContent.replace(/</g,"<")),Q&&3===e.nodeType&&(t=(t=(t=e.textContent).replace(Z," ")).replace(ee," "),e.textContent!==t&&(g.removed.push({element:e.cloneNode()}),e.textContent=t)),xe("afterSanitizeElements",e,null),!1},ke=/^data-[\-\w.\u00B7-\uFFFF]/,Ee=/^aria-[\-\w]+$/,we=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,Oe=/^(?:\w+script|data):/i,Me=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Ne=function(e){var t=void 0,n=void 0,o=void 0,r=void 0,i=void 0,a=void 0,l=void 0;if(xe("beforeSanitizeAttributes",e,null),a=e.attributes){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:G};for(l=a.length;l--;){if(t=a[l],n=t.name,o=t.value.trim(),r=n.toLowerCase(),s.attrName=r,s.attrValue=o,s.keepAttr=!0,xe("uponSanitizeAttribute",e,s),o=s.attrValue,"name"===r&&"IMG"===e.nodeName&&a.id)i=a.id,a=Array.prototype.slice.apply(a),ye("id",e),ye(n,e),a.indexOf(i)>l&&e.setAttribute("id",i.value);else{if("INPUT"===e.nodeName&&"type"===r&&"file"===o&&(G[r]||!X[r]))continue;"id"===n&&e.setAttribute(n,""),ye(n,e)}if(s.keepAttr&&(!le||"id"!==r&&"name"!==r||!(o in h||o in T||o in pe))){if(Q&&(o=(o=o.replace(Z," ")).replace(ee," ")),K&&ke.test(r));else if(Y&&Ee.test(r));else{if(!G[r]||X[r])continue;if(me[r]);else if(we.test(o.replace(Me,"")));else if("src"!==r&&"xlink:href"!==r||0!==o.indexOf("data:")||!ue[e.nodeName.toLowerCase()]){if($&&!Oe.test(o.replace(Me,"")));else if(o)continue}else;}try{e.setAttribute(n,o),g.removed.pop()}catch(e){}}}xe("afterSanitizeAttributes",e,null)}},Le=function e(t){var n=void 0,o=be(t);for(xe("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)xe("uponSanitizeShadowNode",n,null),Se(n)||(n.content instanceof A&&e(n.content),Ne(n));xe("afterSanitizeShadowDOM",t,null)};return g.sanitize=function(e,t){var n=void 0,o=void 0,r=void 0,i=void 0,a=void 0;if(e||(e="\x3c!--\x3e"),"string"!=typeof e&&!Ae(e)){if("function"!=typeof e.toString)throw new TypeError("toString is not a function");e=e.toString()}if(!g.isSupported){if("object"===p(h.toStaticHTML)||"function"==typeof h.toStaticHTML){if("string"==typeof e)return h.toStaticHTML(e);if(Ae(e))return h.toStaticHTML(e.outerHTML)}return e}if(ne||he(t),g.removed=[],e instanceof S)1===(o=(n=ve("\x3c!--\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===o.nodeName?n=o:n.appendChild(o);else{if(!re&&!te&&-1===e.indexOf("<"))return e;if(!(n=ve(e)))return re?null:""}oe&&ge(n.firstChild);for(var l=be(n);r=l.nextNode();)3===r.nodeType&&r===i||Se(r)||(r.content instanceof A&&Le(r.content),Ne(r),i=r);if(re){if(ie)for(a=j.call(n.ownerDocument);n.firstChild;)a.appendChild(n.firstChild);else a=n;return ae&&(a=U.call(y,a,!0)),a}return te?n.outerHTML:n.innerHTML},g.setConfig=function(e){he(e),ne=!0},g.clearConfig=function(){fe=null,ne=!1},g.addHook=function(e,t){"function"==typeof t&&(q[e]=q[e]||[],q[e].push(t))},g.removeHook=function(e){q[e]&&q[e].pop()},g.removeHooks=function(e){q[e]&&(q[e]=[])},g.removeAllHooks=function(){q={}},g}var i=["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"],a=["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"],l=["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence"],s=["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"],c=["#text"],d=["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns"],u=["accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"],m=["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"],f=["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"],p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};return r()}); +!function(e,t){if("function"==typeof define&&define.amd)define(["module","exports"],t);else if("undefined"!=typeof exports)t(module,exports);else{var n={exports:{}};t(n,n.exports),e.autosize=n.exports}}(this,function(e,t){"use strict";var n,o,p="function"==typeof Map?new Map:(n=[],o=[],{has:function(e){return-1<n.indexOf(e)},get:function(e){return o[n.indexOf(e)]},set:function(e,t){-1===n.indexOf(e)&&(n.push(e),o.push(t))},delete:function(e){var t=n.indexOf(e);-1<t&&(n.splice(t,1),o.splice(t,1))}}),c=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){c=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}function r(r){if(r&&r.nodeName&&"TEXTAREA"===r.nodeName&&!p.has(r)){var e,n=null,o=null,i=null,d=function(){r.clientWidth!==o&&a()},l=function(t){window.removeEventListener("resize",d,!1),r.removeEventListener("input",a,!1),r.removeEventListener("keyup",a,!1),r.removeEventListener("autosize:destroy",l,!1),r.removeEventListener("autosize:update",a,!1),Object.keys(t).forEach(function(e){r.style[e]=t[e]}),p.delete(r)}.bind(r,{height:r.style.height,resize:r.style.resize,overflowY:r.style.overflowY,overflowX:r.style.overflowX,wordWrap:r.style.wordWrap});r.addEventListener("autosize:destroy",l,!1),"onpropertychange"in r&&"oninput"in r&&r.addEventListener("keyup",a,!1),window.addEventListener("resize",d,!1),r.addEventListener("input",a,!1),r.addEventListener("autosize:update",a,!1),r.style.overflowX="hidden",r.style.wordWrap="break-word",p.set(r,{destroy:l,update:a}),"vertical"===(e=window.getComputedStyle(r,null)).resize?r.style.resize="none":"both"===e.resize&&(r.style.resize="horizontal"),n="content-box"===e.boxSizing?-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom)):parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),isNaN(n)&&(n=0),a()}function s(e){var t=r.style.width;r.style.width="0px",r.offsetWidth,r.style.width=t,r.style.overflowY=e}function u(){if(0!==r.scrollHeight){var e=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}(r),t=document.documentElement&&document.documentElement.scrollTop;r.style.height="",r.style.height=r.scrollHeight+n+"px",o=r.clientWidth,e.forEach(function(e){e.node.scrollTop=e.scrollTop}),t&&(document.documentElement.scrollTop=t)}}function a(){u();var e=Math.round(parseFloat(r.style.height)),t=window.getComputedStyle(r,null),n="content-box"===t.boxSizing?Math.round(parseFloat(t.height)):r.offsetHeight;if(n<e?"hidden"===t.overflowY&&(s("scroll"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight):"hidden"!==t.overflowY&&(s("hidden"),u(),n="content-box"===t.boxSizing?Math.round(parseFloat(window.getComputedStyle(r,null).height)):r.offsetHeight),i!==n){i=n;var o=c("autosize:resized");try{r.dispatchEvent(o)}catch(e){}}}}function i(e){var t=p.get(e);t&&t.destroy()}function d(e){var t=p.get(e);t&&t.update()}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?((l=function(e){return e}).destroy=function(e){return e},l.update=function(e){return e}):((l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return r(e)}),e}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],d),e}),t.default=l,e.exports=t.default}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.DOMPurify=t()}(this,function(){"use strict";function e(e,t){for(var n=t.length;n--;)"string"==typeof t[n]&&(t[n]=t[n].toLowerCase()),e[t[n]]=!0;return e}function t(e){var t={},n=void 0;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(){var x=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A(),S=function(e){return o(e)};if(S.version="1.0.4",S.removed=[],!x||!x.document||9!==x.document.nodeType)return S.isSupported=!1,S;var k=x.document,w=!1,E=!1,L=x.document,O=x.DocumentFragment,M=x.HTMLTemplateElement,N=x.Node,D=x.NodeFilter,_=x.NamedNodeMap,R=void 0===_?x.NamedNodeMap||x.MozNamedAttrMap:_,C=x.Text,F=x.Comment,z=x.DOMParser,H=x.XMLHttpRequest,I=void 0===H?x.XMLHttpRequest:H,j=x.encodeURI,U=void 0===j?x.encodeURI:j;if("function"==typeof M){var P=L.createElement("template");P.content&&P.content.ownerDocument&&(L=P.content.ownerDocument)}var W=L,q=W.implementation,G=W.createNodeIterator,B=W.getElementsByTagName,X=W.createDocumentFragment,V=k.importNode,Y={};S.isSupported=q&&void 0!==q.createHTMLDocument&&9!==L.documentMode;var K=p,$=f,J=h,Q=g,Z=v,ee=b,te=y,ne=null,oe=e({},[].concat(n(r),n(i),n(a),n(l),n(s))),re=null,ie=e({},[].concat(n(c),n(d),n(u),n(m))),ae=null,le=null,se=!0,ce=!0,de=!1,ue=!1,me=!1,pe=!1,fe=!1,he=!1,ge=!1,ye=!1,ve=!1,be=!0,Te=!0,Ae={},xe=e({},["audio","head","math","script","style","template","svg","video"]),Se=e({},["audio","video","img","source","image"]),ke=e({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),we=null,Ee=L.createElement("form"),Le=function(o){"object"!==(void 0===o?"undefined":T(o))&&(o={}),ne="ALLOWED_TAGS"in o?e({},o.ALLOWED_TAGS):oe,re="ALLOWED_ATTR"in o?e({},o.ALLOWED_ATTR):ie,ae="FORBID_TAGS"in o?e({},o.FORBID_TAGS):{},le="FORBID_ATTR"in o?e({},o.FORBID_ATTR):{},Ae="USE_PROFILES"in o&&o.USE_PROFILES,se=!1!==o.ALLOW_ARIA_ATTR,ce=!1!==o.ALLOW_DATA_ATTR,de=o.ALLOW_UNKNOWN_PROTOCOLS||!1,ue=o.SAFE_FOR_JQUERY||!1,me=o.SAFE_FOR_TEMPLATES||!1,pe=o.WHOLE_DOCUMENT||!1,ge=o.RETURN_DOM||!1,ye=o.RETURN_DOM_FRAGMENT||!1,ve=o.RETURN_DOM_IMPORT||!1,he=o.FORCE_BODY||!1,be=!1!==o.SANITIZE_DOM,Te=!1!==o.KEEP_CONTENT,te=o.ALLOWED_URI_REGEXP||te,me&&(ce=!1),ye&&(ge=!0),Ae&&(ne=e({},[].concat(n(s))),re=[],!0===Ae.html&&(e(ne,r),e(re,c)),!0===Ae.svg&&(e(ne,i),e(re,d),e(re,m)),!0===Ae.svgFilters&&(e(ne,a),e(re,d),e(re,m)),!0===Ae.mathMl&&(e(ne,l),e(re,u),e(re,m))),o.ADD_TAGS&&(ne===oe&&(ne=t(ne)),e(ne,o.ADD_TAGS)),o.ADD_ATTR&&(re===ie&&(re=t(re)),e(re,o.ADD_ATTR)),o.ADD_URI_SAFE_ATTR&&e(ke,o.ADD_URI_SAFE_ATTR),Te&&(ne["#text"]=!0),Object&&"freeze"in Object&&Object.freeze(o),we=o},Oe=function(e){S.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}},Me=function(e,t){try{S.removed.push({attribute:t.getAttributeNode(e),from:t})}catch(e){S.removed.push({attribute:null,from:t})}t.removeAttribute(e)},Ne=function(e){var t=void 0,n=void 0;if(he&&(e="<remove></remove>"+e),E){try{e=U(e)}catch(e){}var o=new I;o.responseType="document",o.open("GET","data:text/html;charset=utf-8,"+e,!1),o.send(null),t=o.response}if(w)try{t=(new z).parseFromString(e,"text/html")}catch(e){}return t&&t.documentElement||((n=(t=q.createHTMLDocument("")).body).parentNode.removeChild(n.parentNode.firstElementChild),n.outerHTML=e),B.call(t,pe?"html":"body")[0]};S.isSupported&&function(){var e=Ne('<svg><g onload="this.parentNode.remove()"></g></svg>');e.querySelector("svg")||(E=!0);try{(e=Ne('<svg><p><style><img src="</style><img src=x onerror=alert(1)//">')).querySelector("svg img")&&(w=!0)}catch(e){}}();var De=function(e){return G.call(e.ownerDocument||e,e,D.SHOW_ELEMENT|D.SHOW_COMMENT|D.SHOW_TEXT,function(){return D.FILTER_ACCEPT},!1)},_e=function(e){return!(e instanceof C||e instanceof F)&&!("string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof R&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute)},Re=function(e){return"object"===(void 0===N?"undefined":T(N))?e instanceof N:e&&"object"===(void 0===e?"undefined":T(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Ce=function(e,t,n){Y[e]&&Y[e].forEach(function(e){e.call(S,t,n,we)})},Fe=function(e){var t=void 0;if(Ce("beforeSanitizeElements",e,null),_e(e))return Oe(e),!0;var n=e.nodeName.toLowerCase();if(Ce("uponSanitizeElement",e,{tagName:n,allowedTags:ne}),!ne[n]||ae[n]){if(Te&&!xe[n]&&"function"==typeof e.insertAdjacentHTML)try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(e){}return Oe(e),!0}return!ue||e.firstElementChild||e.content&&e.content.firstElementChild||!/</g.test(e.textContent)||(S.removed.push({element:e.cloneNode()}),e.innerHTML=e.textContent.replace(/</g,"<")),me&&3===e.nodeType&&(t=(t=(t=e.textContent).replace(K," ")).replace($," "),e.textContent!==t&&(S.removed.push({element:e.cloneNode()}),e.textContent=t)),Ce("afterSanitizeElements",e,null),!1},ze=function(e){var t=void 0,n=void 0,o=void 0,r=void 0,i=void 0,a=void 0,l=void 0;if(Ce("beforeSanitizeAttributes",e,null),a=e.attributes){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:re};for(l=a.length;l--;){if(t=a[l],n=t.name,o=t.value.trim(),r=n.toLowerCase(),s.attrName=r,s.attrValue=o,s.keepAttr=!0,Ce("uponSanitizeAttribute",e,s),o=s.attrValue,"name"===r&&"IMG"===e.nodeName&&a.id)i=a.id,a=Array.prototype.slice.apply(a),Me("id",e),Me(n,e),a.indexOf(i)>l&&e.setAttribute("id",i.value);else{if("INPUT"===e.nodeName&&"type"===r&&"file"===o&&(re[r]||!le[r]))continue;"id"===n&&e.setAttribute(n,""),Me(n,e)}if(s.keepAttr&&(!be||"id"!==r&&"name"!==r||!(o in L||o in Ee))){if(me&&(o=(o=o.replace(K," ")).replace($," ")),ce&&J.test(r));else if(se&&Q.test(r));else{if(!re[r]||le[r])continue;if(ke[r]);else if(te.test(o.replace(ee,"")));else if("src"!==r&&"xlink:href"!==r||0!==o.indexOf("data:")||!Se[e.nodeName.toLowerCase()]){if(de&&!Z.test(o.replace(ee,"")));else if(o)continue}else;}try{e.setAttribute(n,o),S.removed.pop()}catch(e){}}}Ce("afterSanitizeAttributes",e,null)}},He=function e(t){var n=void 0,o=De(t);for(Ce("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)Ce("uponSanitizeShadowNode",n,null),Fe(n)||(n.content instanceof O&&e(n.content),ze(n));Ce("afterSanitizeShadowDOM",t,null)};return S.sanitize=function(e,t){var n=void 0,o=void 0,r=void 0,i=void 0,a=void 0;if(e||(e="\x3c!--\x3e"),"string"!=typeof e&&!Re(e)){if("function"!=typeof e.toString)throw new TypeError("toString is not a function");if("string"!=typeof(e=e.toString()))throw new TypeError("dirty is not a string, aborting")}if(!S.isSupported){if("object"===T(x.toStaticHTML)||"function"==typeof x.toStaticHTML){if("string"==typeof e)return x.toStaticHTML(e);if(Re(e))return x.toStaticHTML(e.outerHTML)}return e}if(fe||Le(t),S.removed=[],e instanceof N)1===(o=(n=Ne("\x3c!--\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===o.nodeName?n=o:n.appendChild(o);else{if(!ge&&!pe&&-1===e.indexOf("<"))return e;if(!(n=Ne(e)))return ge?null:""}he&&Oe(n.firstChild);for(var l=De(n);r=l.nextNode();)3===r.nodeType&&r===i||Fe(r)||(r.content instanceof O&&He(r.content),ze(r),i=r);if(ge){if(ye)for(a=X.call(n.ownerDocument);n.firstChild;)a.appendChild(n.firstChild);else a=n;return ve&&(a=V.call(k,a,!0)),a}return pe?n.outerHTML:n.innerHTML},S.setConfig=function(e){Le(e),fe=!0},S.clearConfig=function(){we=null,fe=!1},S.addHook=function(e,t){"function"==typeof t&&(Y[e]=Y[e]||[],Y[e].push(t))},S.removeHook=function(e){Y[e]&&Y[e].pop()},S.removeHooks=function(e){Y[e]&&(Y[e]=[])},S.removeAllHooks=function(){Y={}},S}var r=["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"],i=["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"],a=["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"],l=["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"],s=["#text"],c=["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","crossorigin","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","integrity","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns"],d=["accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"],u=["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"],m=["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"],p=/\{\{[\s\S]*|[\s\S]*\}\}/gm,f=/<%[\s\S]*|[\s\S]*%>/gm,h=/^data-[\-\w.\u00B7-\uFFFF]/,g=/^aria-[\-\w]+$/,y=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,v=/^(?:\w+script|data):/i,b=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A=function(){return"undefined"==typeof window?null:window};return o()}); /*! Snap.js v2.0.0-rc1 */ diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index a97850d9d26..c6475f8c889 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -414,6 +414,7 @@ return array( 'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php', 'OC\\Authentication\\Token\\DefaultTokenMapper' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenMapper.php', 'OC\\Authentication\\Token\\DefaultTokenProvider' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenProvider.php', + 'OC\\Authentication\\Token\\ExpiredTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php', 'OC\\Authentication\\Token\\IProvider' => $baseDir . '/lib/private/Authentication/Token/IProvider.php', 'OC\\Authentication\\Token\\IToken' => $baseDir . '/lib/private/Authentication/Token/IToken.php', 'OC\\Authentication\\TwoFactorAuth\\Manager' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/Manager.php', @@ -563,6 +564,7 @@ return array( 'OC\\Core\\Migrations\\Version13000Date20170926101637' => $baseDir . '/core/Migrations/Version13000Date20170926101637.php', 'OC\\Core\\Migrations\\Version14000Date20180129121024' => $baseDir . '/core/Migrations/Version14000Date20180129121024.php', 'OC\\Core\\Migrations\\Version14000Date20180404140050' => $baseDir . '/core/Migrations/Version14000Date20180404140050.php', + 'OC\\Core\\Migrations\\Version14000Date20180516101403' => $baseDir . '/core/Migrations/Version14000Date20180516101403.php', 'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php', 'OC\\DB\\AdapterMySQL' => $baseDir . '/lib/private/DB/AdapterMySQL.php', 'OC\\DB\\AdapterOCI8' => $baseDir . '/lib/private/DB/AdapterOCI8.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index ddb07f0b3e2..f334733a2c9 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -444,6 +444,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php', 'OC\\Authentication\\Token\\DefaultTokenMapper' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenMapper.php', 'OC\\Authentication\\Token\\DefaultTokenProvider' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenProvider.php', + 'OC\\Authentication\\Token\\ExpiredTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php', 'OC\\Authentication\\Token\\IProvider' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/IProvider.php', 'OC\\Authentication\\Token\\IToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/IToken.php', 'OC\\Authentication\\TwoFactorAuth\\Manager' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/Manager.php', @@ -593,6 +594,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Core\\Migrations\\Version13000Date20170926101637' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170926101637.php', 'OC\\Core\\Migrations\\Version14000Date20180129121024' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180129121024.php', 'OC\\Core\\Migrations\\Version14000Date20180404140050' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180404140050.php', + 'OC\\Core\\Migrations\\Version14000Date20180516101403' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180516101403.php', 'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php', 'OC\\DB\\AdapterMySQL' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterMySQL.php', 'OC\\DB\\AdapterOCI8' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterOCI8.php', diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js index 4989ac90342..fbf2e0cec51 100644 --- a/lib/l10n/ca.js +++ b/lib/l10n/ca.js @@ -4,6 +4,7 @@ OC.L10N.register( "Cannot write into \"config\" directory!" : "No es pot escriure a la carpeta \"config\"!", "This can usually be fixed by giving the webserver write access to the config directory" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura a la carpeta de configuració", "See %s" : "Comproveu %s", + "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Això normalment es soluciona donant permisos d'escriptura al servidor al directori de configuració. Consulta %s", "Sample configuration detected" : "Configuració d'exemple detectada", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "S'ha detectat que la configuració d'exemple ha estat copiada. Això no està suportat, i podria corrompre la vostra instalació. Siusplau, llegiu la documentació abans de realitzar canvis a config.php", "%1$s and %2$s" : "%1$s i %2$s", @@ -19,6 +20,7 @@ OC.L10N.register( "%sbit or higher PHP required." : "Es requereix PHP %s o superior.", "Following databases are supported: %s" : "Es suporten les següents bases de dades: %s", "The command line tool %s could not be found" : "No s'ha pogut trobar l'eina per intèrpret de comandes %s", + "The library %s is not available." : "La llibreria %s no es troba disponible.", "Server version %s or higher is required." : "Es requereix una versió de servidor %s o superior", "Server version %s or lower is required." : "Es requereix una versió de servidor %s o inferior", "Unknown filetype" : "Tipus de fitxer desconegut", @@ -60,6 +62,7 @@ OC.L10N.register( "Change" : "Modifica", "Delete" : "Esborra", "Share" : "Comparteix", + "Overview" : "Resum", "Basic settings" : "Configuració bàsica", "Sharing" : "Compartir", "Security" : "Seguretat", @@ -106,8 +109,13 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Ha fallat en compartir %s, perquè no es permet compartir de nou", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ha fallat en compartir %s, perquè el rerefons de compartir per %s no pot trobar la seva font", "Sharing %s failed, because the file could not be found in the file cache" : "Ha fallat en compartir %s, perquè el fitxer no s'ha trobat en el fitxer cau", + "Files can’t be shared with delete permissions" : "No es poden compartir els fitxers amb permisos d'esborrat", + "Files can’t be shared with create permissions" : "No es poden compartir els fitxers amb permisos de creació", "%s shared »%s« with you" : "%s ha compartit »%s« amb tu", + "Click the button below to open it." : "Feu clic al botó següent per obrir-lo.", + "Open »%s«" : "Obre »%s«", "%s via %s" : "%s via %s", + "The requested share does not exist anymore" : "El recurs sol·licitat ja no existeix", "Could not find category \"%s\"" : "No s'ha trobat la categoria \"%s\"", "Sunday" : "Diumenge", "Monday" : "Dilluns", @@ -155,6 +163,7 @@ OC.L10N.register( "Nov." : "Nov.", "Dec." : "Des.", "A valid username must be provided" : "Heu de facilitar un nom d'usuari vàlid", + "Username must not consist of dots only" : "El nom d'usuari no pot està format només per punts", "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida", "The username is already being used" : "El nom d'usuari ja està en ús", "Could not create user" : "No s'ha pogut crear l'usuari", diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json index 0c2e047778b..298c235bf2e 100644 --- a/lib/l10n/ca.json +++ b/lib/l10n/ca.json @@ -2,6 +2,7 @@ "Cannot write into \"config\" directory!" : "No es pot escriure a la carpeta \"config\"!", "This can usually be fixed by giving the webserver write access to the config directory" : "Això normalment es pot solucionar donant al servidor web permís d'escriptura a la carpeta de configuració", "See %s" : "Comproveu %s", + "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Això normalment es soluciona donant permisos d'escriptura al servidor al directori de configuració. Consulta %s", "Sample configuration detected" : "Configuració d'exemple detectada", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "S'ha detectat que la configuració d'exemple ha estat copiada. Això no està suportat, i podria corrompre la vostra instalació. Siusplau, llegiu la documentació abans de realitzar canvis a config.php", "%1$s and %2$s" : "%1$s i %2$s", @@ -17,6 +18,7 @@ "%sbit or higher PHP required." : "Es requereix PHP %s o superior.", "Following databases are supported: %s" : "Es suporten les següents bases de dades: %s", "The command line tool %s could not be found" : "No s'ha pogut trobar l'eina per intèrpret de comandes %s", + "The library %s is not available." : "La llibreria %s no es troba disponible.", "Server version %s or higher is required." : "Es requereix una versió de servidor %s o superior", "Server version %s or lower is required." : "Es requereix una versió de servidor %s o inferior", "Unknown filetype" : "Tipus de fitxer desconegut", @@ -58,6 +60,7 @@ "Change" : "Modifica", "Delete" : "Esborra", "Share" : "Comparteix", + "Overview" : "Resum", "Basic settings" : "Configuració bàsica", "Sharing" : "Compartir", "Security" : "Seguretat", @@ -104,8 +107,13 @@ "Sharing %s failed, because resharing is not allowed" : "Ha fallat en compartir %s, perquè no es permet compartir de nou", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Ha fallat en compartir %s, perquè el rerefons de compartir per %s no pot trobar la seva font", "Sharing %s failed, because the file could not be found in the file cache" : "Ha fallat en compartir %s, perquè el fitxer no s'ha trobat en el fitxer cau", + "Files can’t be shared with delete permissions" : "No es poden compartir els fitxers amb permisos d'esborrat", + "Files can’t be shared with create permissions" : "No es poden compartir els fitxers amb permisos de creació", "%s shared »%s« with you" : "%s ha compartit »%s« amb tu", + "Click the button below to open it." : "Feu clic al botó següent per obrir-lo.", + "Open »%s«" : "Obre »%s«", "%s via %s" : "%s via %s", + "The requested share does not exist anymore" : "El recurs sol·licitat ja no existeix", "Could not find category \"%s\"" : "No s'ha trobat la categoria \"%s\"", "Sunday" : "Diumenge", "Monday" : "Dilluns", @@ -153,6 +161,7 @@ "Nov." : "Nov.", "Dec." : "Des.", "A valid username must be provided" : "Heu de facilitar un nom d'usuari vàlid", + "Username must not consist of dots only" : "El nom d'usuari no pot està format només per punts", "A valid password must be provided" : "Heu de facilitar una contrasenya vàlida", "The username is already being used" : "El nom d'usuari ja està en ús", "Could not create user" : "No s'ha pogut crear l'usuari", diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js index 575b12e59c8..81b70c6f056 100644 --- a/lib/l10n/cs.js +++ b/lib/l10n/cs.js @@ -33,20 +33,20 @@ OC.L10N.register( "today" : "dnes", "tomorrow" : "zítra", "yesterday" : "včera", - "_in %n day_::_in %n days_" : ["během %n dne","během %n dnů","během %n dnů"], - "_%n day ago_::_%n days ago_" : ["včera","před %n dny","před %n dny"], + "_in %n day_::_in %n days_" : ["během %n dne","během %n dnů","během %n dnů","během %n dnů"], + "_%n day ago_::_%n days ago_" : ["včera","před %n dny","před %n dny","před %n dny"], "next month" : "následující měsíc", "last month" : "minulý měsíc", - "_in %n month_::_in %n months_" : ["během %n měsíce","během %n měsíců","během %n měsíců"], - "_%n month ago_::_%n months ago_" : ["před %n měsícem","před %n měsíci","před %n měsíci"], + "_in %n month_::_in %n months_" : ["během %n měsíce","během %n měsíců","během %n měsíců","během %n měsíců"], + "_%n month ago_::_%n months ago_" : ["před %n měsícem","před %n měsíci","před %n měsíci","před %n měsíci"], "next year" : "následující rok", "last year" : "minulý rok", - "_in %n year_::_in %n years_" : ["během %n roku","během %n roků","během %n roků"], - "_%n year ago_::_%n years ago_" : ["před rokem","před %n lety","před %n lety"], - "_in %n hour_::_in %n hours_" : ["během %n hodiny","během %n hodin","během %n hodin"], - "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"], - "_in %n minute_::_in %n minutes_" : ["během %n minuty","během %n minut","během %n minut"], - "_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami"], + "_in %n year_::_in %n years_" : ["během %n roku","během %n roků","během %n roků","během %n roků"], + "_%n year ago_::_%n years ago_" : ["před rokem","před %n lety","před %n lety","před %n lety"], + "_in %n hour_::_in %n hours_" : ["během %n hodiny","během %n hodin","během %n hodin","během %n hodin"], + "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami","před %n hodinami"], + "_in %n minute_::_in %n minutes_" : ["během %n minuty","během %n minut","během %n minut","během %n minut"], + "_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami","před %n minutami"], "in a few seconds" : "během několika sekund", "seconds ago" : "před pár sekundami", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povolte ho v nastavení aplikací, nebo kontaktujte vašeho administrátora.", @@ -233,4 +233,4 @@ OC.L10N.register( "Storage is temporarily not available" : "Úložiště je dočasně nedostupné", "Storage connection timeout. %s" : "Vypršení připojení k úložišti. %s" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json index c5a613123f9..a6d5d5c702d 100644 --- a/lib/l10n/cs.json +++ b/lib/l10n/cs.json @@ -31,20 +31,20 @@ "today" : "dnes", "tomorrow" : "zítra", "yesterday" : "včera", - "_in %n day_::_in %n days_" : ["během %n dne","během %n dnů","během %n dnů"], - "_%n day ago_::_%n days ago_" : ["včera","před %n dny","před %n dny"], + "_in %n day_::_in %n days_" : ["během %n dne","během %n dnů","během %n dnů","během %n dnů"], + "_%n day ago_::_%n days ago_" : ["včera","před %n dny","před %n dny","před %n dny"], "next month" : "následující měsíc", "last month" : "minulý měsíc", - "_in %n month_::_in %n months_" : ["během %n měsíce","během %n měsíců","během %n měsíců"], - "_%n month ago_::_%n months ago_" : ["před %n měsícem","před %n měsíci","před %n měsíci"], + "_in %n month_::_in %n months_" : ["během %n měsíce","během %n měsíců","během %n měsíců","během %n měsíců"], + "_%n month ago_::_%n months ago_" : ["před %n měsícem","před %n měsíci","před %n měsíci","před %n měsíci"], "next year" : "následující rok", "last year" : "minulý rok", - "_in %n year_::_in %n years_" : ["během %n roku","během %n roků","během %n roků"], - "_%n year ago_::_%n years ago_" : ["před rokem","před %n lety","před %n lety"], - "_in %n hour_::_in %n hours_" : ["během %n hodiny","během %n hodin","během %n hodin"], - "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"], - "_in %n minute_::_in %n minutes_" : ["během %n minuty","během %n minut","během %n minut"], - "_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami"], + "_in %n year_::_in %n years_" : ["během %n roku","během %n roků","během %n roků","během %n roků"], + "_%n year ago_::_%n years ago_" : ["před rokem","před %n lety","před %n lety","před %n lety"], + "_in %n hour_::_in %n hours_" : ["během %n hodiny","během %n hodin","během %n hodin","během %n hodin"], + "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami","před %n hodinami"], + "_in %n minute_::_in %n minutes_" : ["během %n minuty","během %n minut","během %n minut","během %n minut"], + "_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami","před %n minutami"], "in a few seconds" : "během několika sekund", "seconds ago" : "před pár sekundami", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povolte ho v nastavení aplikací, nebo kontaktujte vašeho administrátora.", @@ -230,5 +230,5 @@ "Storage connection error. %s" : "Chyba připojení úložiště. %s", "Storage is temporarily not available" : "Úložiště je dočasně nedostupné", "Storage connection timeout. %s" : "Vypršení připojení k úložišti. %s" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js index 52b6644338d..7df4c702084 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -71,6 +71,7 @@ OC.L10N.register( "Change" : "Change", "Delete" : "Delete", "Share" : "Share", + "Overview" : "Overview", "Basic settings" : "Basic settings", "Sharing" : "Sharing", "Security" : "Security", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index 484b6b4efa6..6345eb12faa 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -69,6 +69,7 @@ "Change" : "Change", "Delete" : "Delete", "Share" : "Share", + "Overview" : "Overview", "Basic settings" : "Basic settings", "Sharing" : "Sharing", "Security" : "Security", diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js index d8c4fc2cbbe..a6bf129a454 100644 --- a/lib/l10n/fa.js +++ b/lib/l10n/fa.js @@ -14,13 +14,13 @@ OC.L10N.register( "Invalid image" : "عکس نامعتبر", "today" : "امروز", "yesterday" : "دیروز", - "_%n day ago_::_%n days ago_" : ["%n روز پیش"], + "_%n day ago_::_%n days ago_" : ["%n روز پیش","%n روز پیش"], "last month" : "ماه قبل", - "_%n month ago_::_%n months ago_" : ["%n ماه قبل"], + "_%n month ago_::_%n months ago_" : ["%n ماه قبل","%n ماه قبل"], "last year" : "سال قبل", - "_%n year ago_::_%n years ago_" : ["%n سال پیش"], - "_%n hour ago_::_%n hours ago_" : ["%n ساعت قبل"], - "_%n minute ago_::_%n minutes ago_" : ["%n دقیقه قبل"], + "_%n year ago_::_%n years ago_" : ["%n سال پیش","%n سال پیش"], + "_%n hour ago_::_%n hours ago_" : ["%n ساعت قبل","%n ساعت قبل"], + "_%n minute ago_::_%n minutes ago_" : ["%n دقیقه قبل","%n دقیقه قبل"], "seconds ago" : "ثانیهها پیش", "File name is a reserved word" : "این نام فایل جزو کلمات رزرو میباشد", "File name contains at least one invalid character" : "نام فایل دارای حداقل یک کاراکتر نامعتبر است", @@ -55,4 +55,4 @@ OC.L10N.register( "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است", "Please upgrade your database version" : "لطفا نسخهی پایگاهدادهی خود را بروز کنید" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json index 946e4f2fd42..958071c7684 100644 --- a/lib/l10n/fa.json +++ b/lib/l10n/fa.json @@ -12,13 +12,13 @@ "Invalid image" : "عکس نامعتبر", "today" : "امروز", "yesterday" : "دیروز", - "_%n day ago_::_%n days ago_" : ["%n روز پیش"], + "_%n day ago_::_%n days ago_" : ["%n روز پیش","%n روز پیش"], "last month" : "ماه قبل", - "_%n month ago_::_%n months ago_" : ["%n ماه قبل"], + "_%n month ago_::_%n months ago_" : ["%n ماه قبل","%n ماه قبل"], "last year" : "سال قبل", - "_%n year ago_::_%n years ago_" : ["%n سال پیش"], - "_%n hour ago_::_%n hours ago_" : ["%n ساعت قبل"], - "_%n minute ago_::_%n minutes ago_" : ["%n دقیقه قبل"], + "_%n year ago_::_%n years ago_" : ["%n سال پیش","%n سال پیش"], + "_%n hour ago_::_%n hours ago_" : ["%n ساعت قبل","%n ساعت قبل"], + "_%n minute ago_::_%n minutes ago_" : ["%n دقیقه قبل","%n دقیقه قبل"], "seconds ago" : "ثانیهها پیش", "File name is a reserved word" : "این نام فایل جزو کلمات رزرو میباشد", "File name contains at least one invalid character" : "نام فایل دارای حداقل یک کاراکتر نامعتبر است", @@ -52,5 +52,5 @@ "PHP module %s not installed." : "ماژول PHP %s نصب نشده است.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 نیاز است", "Please upgrade your database version" : "لطفا نسخهی پایگاهدادهی خود را بروز کنید" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/lib/l10n/he.js b/lib/l10n/he.js index dc5b4a5ce38..0853ea21af1 100644 --- a/lib/l10n/he.js +++ b/lib/l10n/he.js @@ -19,10 +19,10 @@ OC.L10N.register( "Invalid image" : "תמונה לא חוקית", "today" : "היום", "yesterday" : "אתמול", - "_%n day ago_::_%n days ago_" : ["לפני %n יום","לפני %n ימים"], + "_%n day ago_::_%n days ago_" : ["לפני %n יום","לפני %n ימים","לפני %n ימים","לפני %n ימים"], "last month" : "חודש שעבר", "last year" : "שנה שעברה", - "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים"], + "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים","לפני %n שנים","לפני %n שנים"], "seconds ago" : "שניות", "File name is a reserved word" : "שם קובץ הנו מילה שמורה", "File name contains at least one invalid character" : "שם קובץ כולל לפחות תו אחד לא חוקי", @@ -168,4 +168,4 @@ OC.L10N.register( "Storage connection error. %s" : "שגיאת חיבור אחסון. %s", "Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/lib/l10n/he.json b/lib/l10n/he.json index 38218b4ecc7..99da3e7e7ff 100644 --- a/lib/l10n/he.json +++ b/lib/l10n/he.json @@ -17,10 +17,10 @@ "Invalid image" : "תמונה לא חוקית", "today" : "היום", "yesterday" : "אתמול", - "_%n day ago_::_%n days ago_" : ["לפני %n יום","לפני %n ימים"], + "_%n day ago_::_%n days ago_" : ["לפני %n יום","לפני %n ימים","לפני %n ימים","לפני %n ימים"], "last month" : "חודש שעבר", "last year" : "שנה שעברה", - "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים"], + "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים","לפני %n שנים","לפני %n שנים"], "seconds ago" : "שניות", "File name is a reserved word" : "שם קובץ הנו מילה שמורה", "File name contains at least one invalid character" : "שם קובץ כולל לפחות תו אחד לא חוקי", @@ -165,5 +165,5 @@ "Storage incomplete configuration. %s" : "תצורה לא מושלמת של האחסון. %s", "Storage connection error. %s" : "שגיאת חיבור אחסון. %s", "Storage connection timeout. %s" : "פסק זמן חיבור אחסון. %s" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/lib/l10n/ka_GE.js b/lib/l10n/ka_GE.js index 4bf2a9506b0..48c5e67e49f 100644 --- a/lib/l10n/ka_GE.js +++ b/lib/l10n/ka_GE.js @@ -34,20 +34,20 @@ OC.L10N.register( "today" : "დღეს", "tomorrow" : "ხვალ", "yesterday" : "გუშინ", - "_in %n day_::_in %n days_" : ["%n დღეში"], - "_%n day ago_::_%n days ago_" : ["%n დღის წინ"], + "_in %n day_::_in %n days_" : ["%n დღეში","%n დღეში"], + "_%n day ago_::_%n days ago_" : ["%n დღის წინ","%n დღის წინ"], "next month" : "შემდეგი თვე", "last month" : "გასულ თვეში", - "_in %n month_::_in %n months_" : ["%n თვეში"], - "_%n month ago_::_%n months ago_" : ["%n თვის წინ"], + "_in %n month_::_in %n months_" : ["%n თვეში","%n თვეში"], + "_%n month ago_::_%n months ago_" : ["%n თვის წინ","%n თვის წინ"], "next year" : "შემდეგი წელი", "last year" : "გასულ წელს", - "_in %n year_::_in %n years_" : ["%n წელიწადში"], - "_%n year ago_::_%n years ago_" : ["%n წლის წინ"], - "_in %n hour_::_in %n hours_" : ["%n საათში"], - "_%n hour ago_::_%n hours ago_" : ["%n საათის წინ"], - "_in %n minute_::_in %n minutes_" : ["%n წუთში"], - "_%n minute ago_::_%n minutes ago_" : ["%n წუთის წინ"], + "_in %n year_::_in %n years_" : ["%n წელიწადში","%n წელიწადში"], + "_%n year ago_::_%n years ago_" : ["%n წლის წინ","%n წლის წინ"], + "_in %n hour_::_in %n hours_" : ["%n საათში","%n საათში"], + "_%n hour ago_::_%n hours ago_" : ["%n საათის წინ","%n საათის წინ"], + "_in %n minute_::_in %n minutes_" : ["%n წუთში","%n წუთში"], + "_%n minute ago_::_%n minutes ago_" : ["%n წუთის წინ","%n წუთის წინ"], "in a few seconds" : "რამდენიმე წამში", "seconds ago" : "წამის წინ", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "მოდული ID-ით: %s არ არსებობს. გთხოვთ აამოქმედოთ ის აპლიკაციების პარამეტრებში ან დაუკავშირდეთ ადმინისტრატორს.", @@ -248,4 +248,4 @@ OC.L10N.register( "No app name specified" : "აპლიკაციის სახელი არაა მოცემული", "App '%s' could not be installed!" : "აპლიკაცია '%s' ვერ ყენდება!" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/lib/l10n/ka_GE.json b/lib/l10n/ka_GE.json index 81ba596f141..fed1604a821 100644 --- a/lib/l10n/ka_GE.json +++ b/lib/l10n/ka_GE.json @@ -32,20 +32,20 @@ "today" : "დღეს", "tomorrow" : "ხვალ", "yesterday" : "გუშინ", - "_in %n day_::_in %n days_" : ["%n დღეში"], - "_%n day ago_::_%n days ago_" : ["%n დღის წინ"], + "_in %n day_::_in %n days_" : ["%n დღეში","%n დღეში"], + "_%n day ago_::_%n days ago_" : ["%n დღის წინ","%n დღის წინ"], "next month" : "შემდეგი თვე", "last month" : "გასულ თვეში", - "_in %n month_::_in %n months_" : ["%n თვეში"], - "_%n month ago_::_%n months ago_" : ["%n თვის წინ"], + "_in %n month_::_in %n months_" : ["%n თვეში","%n თვეში"], + "_%n month ago_::_%n months ago_" : ["%n თვის წინ","%n თვის წინ"], "next year" : "შემდეგი წელი", "last year" : "გასულ წელს", - "_in %n year_::_in %n years_" : ["%n წელიწადში"], - "_%n year ago_::_%n years ago_" : ["%n წლის წინ"], - "_in %n hour_::_in %n hours_" : ["%n საათში"], - "_%n hour ago_::_%n hours ago_" : ["%n საათის წინ"], - "_in %n minute_::_in %n minutes_" : ["%n წუთში"], - "_%n minute ago_::_%n minutes ago_" : ["%n წუთის წინ"], + "_in %n year_::_in %n years_" : ["%n წელიწადში","%n წელიწადში"], + "_%n year ago_::_%n years ago_" : ["%n წლის წინ","%n წლის წინ"], + "_in %n hour_::_in %n hours_" : ["%n საათში","%n საათში"], + "_%n hour ago_::_%n hours ago_" : ["%n საათის წინ","%n საათის წინ"], + "_in %n minute_::_in %n minutes_" : ["%n წუთში","%n წუთში"], + "_%n minute ago_::_%n minutes ago_" : ["%n წუთის წინ","%n წუთის წინ"], "in a few seconds" : "რამდენიმე წამში", "seconds ago" : "წამის წინ", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "მოდული ID-ით: %s არ არსებობს. გთხოვთ აამოქმედოთ ის აპლიკაციების პარამეტრებში ან დაუკავშირდეთ ადმინისტრატორს.", @@ -245,5 +245,5 @@ "Cannot set expiration date more than %s days in the future" : "ვადის ამოწურვის თარიღი %s დღეზე მეტი მომავალში ვერ იქნება", "No app name specified" : "აპლიკაციის სახელი არაა მოცემული", "App '%s' could not be installed!" : "აპლიკაცია '%s' ვერ ყენდება!" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/lib/l10n/kn.js b/lib/l10n/kn.js index e8332f6cfde..9494afe50dd 100644 --- a/lib/l10n/kn.js +++ b/lib/l10n/kn.js @@ -10,4 +10,4 @@ OC.L10N.register( "A valid password must be provided" : "ಸರಿಯಾದ ಬಳಕೆದಾರ ಗುಪ್ತಪದ ಒದಗಿಸಬೇಕಾಗಿದೆ", "Authentication error" : "ದೃಢೀಕರಣ ದೋಷ" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/lib/l10n/kn.json b/lib/l10n/kn.json index bf547fdd363..cb88e314b42 100644 --- a/lib/l10n/kn.json +++ b/lib/l10n/kn.json @@ -7,5 +7,5 @@ "A valid username must be provided" : "ಮಾನ್ಯ ಬಳಕೆದಾರ ಹೆಸರು ಒದಗಿಸಬೇಕಾಗುತ್ತದೆ", "A valid password must be provided" : "ಸರಿಯಾದ ಬಳಕೆದಾರ ಗುಪ್ತಪದ ಒದಗಿಸಬೇಕಾಗಿದೆ", "Authentication error" : "ದೃಢೀಕರಣ ದೋಷ" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js index 0faa87ebcd0..108fbbdbecb 100644 --- a/lib/l10n/lt_LT.js +++ b/lib/l10n/lt_LT.js @@ -27,13 +27,13 @@ OC.L10N.register( "today" : "šiandien", "tomorrow" : "rytoj", "yesterday" : "vakar", - "_%n day ago_::_%n days ago_" : ["prieš %n dieną","prieš %n dienas","prieš %n dienų"], + "_%n day ago_::_%n days ago_" : ["prieš %n dieną","prieš %n dienas","prieš %n dienų","prieš %n dienų"], "last month" : "praeitą mėnesį", - "_%n month ago_::_%n months ago_" : ["prieš %n mėnesį","prieš %n mėnesius","prieš %n mėnesių"], + "_%n month ago_::_%n months ago_" : ["prieš %n mėnesį","prieš %n mėnesius","prieš %n mėnesių","prieš %n mėnesių"], "last year" : "praeitais metais", - "_%n year ago_::_%n years ago_" : ["prieš %n metus","prieš %n metus","prieš %n metų"], - "_%n hour ago_::_%n hours ago_" : ["prieš %n valandą","prieš %n valandas","prieš %n valandų"], - "_%n minute ago_::_%n minutes ago_" : ["prieš %n minutę","prieš % minutes","prieš %n minučių"], + "_%n year ago_::_%n years ago_" : ["prieš %n metus","prieš %n metus","prieš %n metų","prieš %n metų"], + "_%n hour ago_::_%n hours ago_" : ["prieš %n valandą","prieš %n valandas","prieš %n valandų","prieš %n valandų"], + "_%n minute ago_::_%n minutes ago_" : ["prieš %n minutę","prieš % minutes","prieš %n minučių","prieš %n minučių"], "seconds ago" : "prieš keletą sekundžių", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulio, kurio id: %s, nėra. Prašome jį įjungti savo programėlių nustatymuose arba susisiekti su savo administratoriumi.", "File name is a reserved word" : "Failo pavadinimas negalimas, žodis rezervuotas", @@ -53,6 +53,7 @@ OC.L10N.register( "Redis" : "Redis", "Create" : "Sukurti", "Delete" : "Ištrinti", + "Overview" : "Apžvalga", "Basic settings" : "Pagrindiniai nustatymai", "Sharing" : "Dalijimasis", "Security" : "Saugumas", @@ -209,4 +210,4 @@ OC.L10N.register( "No app name specified" : "Nenurodytas programėlės pavadinimas", "App '%s' could not be installed!" : "Nepavyko įdiegti \"%s\" programėlės!" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json index 85e5fbef41f..73127879195 100644 --- a/lib/l10n/lt_LT.json +++ b/lib/l10n/lt_LT.json @@ -25,13 +25,13 @@ "today" : "šiandien", "tomorrow" : "rytoj", "yesterday" : "vakar", - "_%n day ago_::_%n days ago_" : ["prieš %n dieną","prieš %n dienas","prieš %n dienų"], + "_%n day ago_::_%n days ago_" : ["prieš %n dieną","prieš %n dienas","prieš %n dienų","prieš %n dienų"], "last month" : "praeitą mėnesį", - "_%n month ago_::_%n months ago_" : ["prieš %n mėnesį","prieš %n mėnesius","prieš %n mėnesių"], + "_%n month ago_::_%n months ago_" : ["prieš %n mėnesį","prieš %n mėnesius","prieš %n mėnesių","prieš %n mėnesių"], "last year" : "praeitais metais", - "_%n year ago_::_%n years ago_" : ["prieš %n metus","prieš %n metus","prieš %n metų"], - "_%n hour ago_::_%n hours ago_" : ["prieš %n valandą","prieš %n valandas","prieš %n valandų"], - "_%n minute ago_::_%n minutes ago_" : ["prieš %n minutę","prieš % minutes","prieš %n minučių"], + "_%n year ago_::_%n years ago_" : ["prieš %n metus","prieš %n metus","prieš %n metų","prieš %n metų"], + "_%n hour ago_::_%n hours ago_" : ["prieš %n valandą","prieš %n valandas","prieš %n valandų","prieš %n valandų"], + "_%n minute ago_::_%n minutes ago_" : ["prieš %n minutę","prieš % minutes","prieš %n minučių","prieš %n minučių"], "seconds ago" : "prieš keletą sekundžių", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modulio, kurio id: %s, nėra. Prašome jį įjungti savo programėlių nustatymuose arba susisiekti su savo administratoriumi.", "File name is a reserved word" : "Failo pavadinimas negalimas, žodis rezervuotas", @@ -51,6 +51,7 @@ "Redis" : "Redis", "Create" : "Sukurti", "Delete" : "Ištrinti", + "Overview" : "Apžvalga", "Basic settings" : "Pagrindiniai nustatymai", "Sharing" : "Dalijimasis", "Security" : "Saugumas", @@ -206,5 +207,5 @@ "Files can't be shared with create permissions" : "Failai negali būti bendrinami su sukūrimo leidimais", "No app name specified" : "Nenurodytas programėlės pavadinimas", "App '%s' could not be installed!" : "Nepavyko įdiegti \"%s\" programėlės!" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js index 5b5f93ce175..63c8af929e4 100644 --- a/lib/l10n/sk.js +++ b/lib/l10n/sk.js @@ -33,20 +33,20 @@ OC.L10N.register( "today" : "dnes", "tomorrow" : "zajtra", "yesterday" : "včera", - "_in %n day_::_in %n days_" : ["o %n deň","o %n dni","o %n dní"], - "_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami"], + "_in %n day_::_in %n days_" : ["o %n deň","o %n dni","o %n dní","o %n dní"], + "_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami","pred %n dňami"], "next month" : "budúci mesiac", "last month" : "minulý mesiac", - "_in %n month_::_in %n months_" : ["o %n mesiac ","o %n mesiace","o %n mesiacov"], - "_%n month ago_::_%n months ago_" : ["pred %n mesiacom","pred %n mesiacmi","pred %n mesiacmi"], + "_in %n month_::_in %n months_" : ["o %n mesiac ","o %n mesiace","o %n mesiacov","o %n mesiacov"], + "_%n month ago_::_%n months ago_" : ["pred %n mesiacom","pred %n mesiacmi","pred %n mesiacmi","pred %n mesiacmi"], "next year" : "budúci rok", "last year" : "minulý rok", - "_in %n year_::_in %n years_" : ["o %n rok","o %n roky","o %n rokov"], - "_%n year ago_::_%n years ago_" : ["vlani","pred %n rokmi","pred %n rokmi"], - "_in %n hour_::_in %n hours_" : ["o %n hodinu","o %n hodiny","o %n hodín"], - "_%n hour ago_::_%n hours ago_" : ["pred %n hodinou","pred %n hodinami","pred %n hodinami"], - "_in %n minute_::_in %n minutes_" : ["o %n minútu","o %n minúty","o %n minút"], - "_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami"], + "_in %n year_::_in %n years_" : ["o %n rok","o %n roky","o %n rokov","o %n rokov"], + "_%n year ago_::_%n years ago_" : ["vlani","pred %n rokmi","pred %n rokmi","pred %n rokmi"], + "_in %n hour_::_in %n hours_" : ["o %n hodinu","o %n hodiny","o %n hodín","o %n hodín"], + "_%n hour ago_::_%n hours ago_" : ["pred %n hodinou","pred %n hodinami","pred %n hodinami","pred %n hodinami"], + "_in %n minute_::_in %n minutes_" : ["o %n minútu","o %n minúty","o %n minút","o %n minút"], + "_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami","pred %n minútami"], "in a few seconds" : "o pár sekúnd", "seconds ago" : "pred sekundami", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo kontaktujte správcu.", @@ -234,4 +234,4 @@ OC.L10N.register( "Personal" : "Osobné", "App '%s' could not be installed!" : "Aplikáciu '%s' nebolo možné nainštalovať!" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json index 107c44a73c3..15a46f491b0 100644 --- a/lib/l10n/sk.json +++ b/lib/l10n/sk.json @@ -31,20 +31,20 @@ "today" : "dnes", "tomorrow" : "zajtra", "yesterday" : "včera", - "_in %n day_::_in %n days_" : ["o %n deň","o %n dni","o %n dní"], - "_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami"], + "_in %n day_::_in %n days_" : ["o %n deň","o %n dni","o %n dní","o %n dní"], + "_%n day ago_::_%n days ago_" : ["včera","pred %n dňami","pred %n dňami","pred %n dňami"], "next month" : "budúci mesiac", "last month" : "minulý mesiac", - "_in %n month_::_in %n months_" : ["o %n mesiac ","o %n mesiace","o %n mesiacov"], - "_%n month ago_::_%n months ago_" : ["pred %n mesiacom","pred %n mesiacmi","pred %n mesiacmi"], + "_in %n month_::_in %n months_" : ["o %n mesiac ","o %n mesiace","o %n mesiacov","o %n mesiacov"], + "_%n month ago_::_%n months ago_" : ["pred %n mesiacom","pred %n mesiacmi","pred %n mesiacmi","pred %n mesiacmi"], "next year" : "budúci rok", "last year" : "minulý rok", - "_in %n year_::_in %n years_" : ["o %n rok","o %n roky","o %n rokov"], - "_%n year ago_::_%n years ago_" : ["vlani","pred %n rokmi","pred %n rokmi"], - "_in %n hour_::_in %n hours_" : ["o %n hodinu","o %n hodiny","o %n hodín"], - "_%n hour ago_::_%n hours ago_" : ["pred %n hodinou","pred %n hodinami","pred %n hodinami"], - "_in %n minute_::_in %n minutes_" : ["o %n minútu","o %n minúty","o %n minút"], - "_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami"], + "_in %n year_::_in %n years_" : ["o %n rok","o %n roky","o %n rokov","o %n rokov"], + "_%n year ago_::_%n years ago_" : ["vlani","pred %n rokmi","pred %n rokmi","pred %n rokmi"], + "_in %n hour_::_in %n hours_" : ["o %n hodinu","o %n hodiny","o %n hodín","o %n hodín"], + "_%n hour ago_::_%n hours ago_" : ["pred %n hodinou","pred %n hodinami","pred %n hodinami","pred %n hodinami"], + "_in %n minute_::_in %n minutes_" : ["o %n minútu","o %n minúty","o %n minút","o %n minút"], + "_%n minute ago_::_%n minutes ago_" : ["pred %n minútou","pred %n minútami","pred %n minútami","pred %n minútami"], "in a few seconds" : "o pár sekúnd", "seconds ago" : "pred sekundami", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s ID: %s neexistuje. Povoľte ho prosím vo vašom nastavení aplikácií alebo kontaktujte správcu.", @@ -231,5 +231,5 @@ "Storage connection timeout. %s" : "Vypršanie pripojenia k úložisku. %s", "Personal" : "Osobné", "App '%s' could not be installed!" : "Aplikáciu '%s' nebolo možné nainštalovať!" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js index d5f0982e1db..4c75023395c 100644 --- a/lib/l10n/uk.js +++ b/lib/l10n/uk.js @@ -18,10 +18,10 @@ OC.L10N.register( "Invalid image" : "Невірне зображення", "today" : "сьогодні", "yesterday" : "вчора", - "_%n day ago_::_%n days ago_" : ["%n день тому","%n днів тому","%n днів тому"], + "_%n day ago_::_%n days ago_" : ["%n день тому","%n днів тому","%n днів тому","%n днів тому"], "last month" : "минулого місяця", "last year" : "минулого року", - "_%n year ago_::_%n years ago_" : ["%n рік тому","%n років тому","%n років тому"], + "_%n year ago_::_%n years ago_" : ["%n рік тому","%n років тому","%n років тому","%n років тому"], "seconds ago" : "секунди тому", "File name is a reserved word" : "Ім’я файлу є зарезервованим словом", "File name contains at least one invalid character" : "Ім’я файлу містить принаймні один некоректний символ", @@ -115,4 +115,4 @@ OC.L10N.register( "Storage connection error. %s" : "Помилка з'єднання зі сховищем. %s", "Storage connection timeout. %s" : "Час під'єднання до сховища вичерпався. %s" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json index bd4735da5f3..05c475862a4 100644 --- a/lib/l10n/uk.json +++ b/lib/l10n/uk.json @@ -16,10 +16,10 @@ "Invalid image" : "Невірне зображення", "today" : "сьогодні", "yesterday" : "вчора", - "_%n day ago_::_%n days ago_" : ["%n день тому","%n днів тому","%n днів тому"], + "_%n day ago_::_%n days ago_" : ["%n день тому","%n днів тому","%n днів тому","%n днів тому"], "last month" : "минулого місяця", "last year" : "минулого року", - "_%n year ago_::_%n years ago_" : ["%n рік тому","%n років тому","%n років тому"], + "_%n year ago_::_%n years ago_" : ["%n рік тому","%n років тому","%n років тому","%n років тому"], "seconds ago" : "секунди тому", "File name is a reserved word" : "Ім’я файлу є зарезервованим словом", "File name contains at least one invalid character" : "Ім’я файлу містить принаймні один некоректний символ", @@ -112,5 +112,5 @@ "Storage incomplete configuration. %s" : "Неповна конфігурація сховища. %s", "Storage connection error. %s" : "Помилка з'єднання зі сховищем. %s", "Storage connection timeout. %s" : "Час під'єднання до сховища вичерпався. %s" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/lib/private/Authentication/Exceptions/ExpiredTokenException.php b/lib/private/Authentication/Exceptions/ExpiredTokenException.php new file mode 100644 index 00000000000..a45ca5b6955 --- /dev/null +++ b/lib/private/Authentication/Exceptions/ExpiredTokenException.php @@ -0,0 +1,41 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OC\Authentication\Token; + +use OC\Authentication\Exceptions\InvalidTokenException; + +class ExpiredTokenException extends InvalidTokenException { + /** @var IToken */ + private $token; + + public function __construct(IToken $token) { + parent::__construct(); + + $this->token = $token; + } + + public function getToken(): IToken { + return $this->token; + } +} diff --git a/lib/private/Authentication/Token/DefaultToken.php b/lib/private/Authentication/Token/DefaultToken.php index e2753ba979c..67aa89ea66b 100644 --- a/lib/private/Authentication/Token/DefaultToken.php +++ b/lib/private/Authentication/Token/DefaultToken.php @@ -30,9 +30,7 @@ use OCP\AppFramework\Db\Entity; * @method void setId(int $id) * @method void setUid(string $uid); * @method void setLoginName(string $loginname) - * @method void setPassword(string $password) * @method void setName(string $name) - * @method void setToken(string $token) * @method string getToken() * @method void setType(int $type) * @method int getType() @@ -72,6 +70,9 @@ class DefaultToken extends Entity implements IToken { /** @var string */ protected $scope; + /** @var int */ + protected $expires; + public function __construct() { $this->addType('uid', 'string'); $this->addType('loginName', 'string'); @@ -83,6 +84,7 @@ class DefaultToken extends Entity implements IToken { $this->addType('lastActivity', 'int'); $this->addType('lastCheck', 'int'); $this->addType('scope', 'string'); + $this->addType('expires', 'int'); } public function getId(): int { @@ -173,4 +175,23 @@ class DefaultToken extends Entity implements IToken { public function getRemember(): int { return parent::getRemember(); } + + public function setToken(string $token) { + parent::setToken($token); + } + + public function setPassword(string $password = null) { + parent::setPassword($password); + } + + public function setExpires($expires) { + parent::setExpires($expires); + } + + /** + * @return int|null + */ + public function getExpires() { + return parent::getExpires(); + } } diff --git a/lib/private/Authentication/Token/DefaultTokenMapper.php b/lib/private/Authentication/Token/DefaultTokenMapper.php index 285b043c2c1..a67d7d151e9 100644 --- a/lib/private/Authentication/Token/DefaultTokenMapper.php +++ b/lib/private/Authentication/Token/DefaultTokenMapper.php @@ -79,7 +79,7 @@ class DefaultTokenMapper extends QBMapper { public function getToken(string $token): DefaultToken { /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); - $result = $qb->select('id', 'uid', 'login_name', 'password', 'name', 'type', 'remember', 'token', 'last_activity', 'last_check', 'scope') + $result = $qb->select('*') ->from('authtoken') ->where($qb->expr()->eq('token', $qb->createNamedParameter($token))) ->execute(); @@ -102,7 +102,7 @@ class DefaultTokenMapper extends QBMapper { public function getTokenById(int $id): DefaultToken { /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); - $result = $qb->select('id', 'uid', 'login_name', 'password', 'name', 'type', 'token', 'last_activity', 'last_check', 'scope') + $result = $qb->select('*') ->from('authtoken') ->where($qb->expr()->eq('id', $qb->createNamedParameter($id))) ->execute(); @@ -127,7 +127,7 @@ class DefaultTokenMapper extends QBMapper { public function getTokenByUser(IUser $user): array { /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); - $qb->select('id', 'uid', 'login_name', 'password', 'name', 'type', 'remember', 'token', 'last_activity', 'last_check', 'scope') + $qb->select('*') ->from('authtoken') ->where($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID()))) ->setMaxResults(1000); diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php index 747fb8ef6ea..5df74cadac4 100644 --- a/lib/private/Authentication/Token/DefaultTokenProvider.php +++ b/lib/private/Authentication/Token/DefaultTokenProvider.php @@ -161,14 +161,21 @@ class DefaultTokenProvider implements IProvider { * * @param string $tokenId * @throws InvalidTokenException + * @throws ExpiredTokenException * @return IToken */ public function getToken(string $tokenId): IToken { try { - return $this->mapper->getToken($this->hashToken($tokenId)); + $token = $this->mapper->getToken($this->hashToken($tokenId)); } catch (DoesNotExistException $ex) { throw new InvalidTokenException(); } + + if ($token->getExpires() !== null && $token->getExpires() < $this->time->getTime()) { + throw new ExpiredTokenException($token); + } + + return $token; } /** @@ -176,14 +183,21 @@ class DefaultTokenProvider implements IProvider { * * @param int $tokenId * @throws InvalidTokenException + * @throws ExpiredTokenException * @return IToken */ public function getTokenById(int $tokenId): IToken { try { - return $this->mapper->getTokenById($tokenId); + $token = $this->mapper->getTokenById($tokenId); } catch (DoesNotExistException $ex) { throw new InvalidTokenException(); } + + if ($token->getExpires() !== null && $token->getExpires() < $this->time->getTime()) { + throw new ExpiredTokenException($token); + } + + return $token; } /** @@ -274,6 +288,28 @@ class DefaultTokenProvider implements IProvider { } /** + * Rotate the token. Usefull for for example oauth tokens + * + * @param IToken $token + * @param string $oldTokenId + * @param string $newTokenId + * @return IToken + */ + public function rotate(IToken $token, string $oldTokenId, string $newTokenId): IToken { + try { + $password = $this->getPassword($token, $oldTokenId); + $token->setPassword($this->encryptPassword($password, $newTokenId)); + } catch (PasswordlessTokenException $e) { + + } + + $token->setToken($this->hashToken($newTokenId)); + $this->updateToken($token); + + return $token; + } + + /** * @param string $token * @return string */ diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php index 9b9048b1635..0efffefac68 100644 --- a/lib/private/Authentication/Token/IProvider.php +++ b/lib/private/Authentication/Token/IProvider.php @@ -58,6 +58,7 @@ interface IProvider { * * @param string $tokenId * @throws InvalidTokenException + * @throws ExpiredTokenException * @return IToken */ public function getToken(string $tokenId): IToken; @@ -67,6 +68,7 @@ interface IProvider { * * @param int $tokenId * @throws InvalidTokenException + * @throws ExpiredTokenException * @return IToken */ public function getTokenById(int $tokenId): IToken; @@ -145,4 +147,14 @@ interface IProvider { * @throws InvalidTokenException */ public function setPassword(IToken $token, string $tokenId, string $password); + + /** + * Rotate the token. Usefull for for example oauth tokens + * + * @param IToken $token + * @param string $oldTokenId + * @param string $newTokenId + * @return IToken + */ + public function rotate(IToken $token, string $oldTokenId, string $newTokenId): IToken; } diff --git a/lib/private/Authentication/Token/IToken.php b/lib/private/Authentication/Token/IToken.php index b40f55fb6ca..e122ec02764 100644 --- a/lib/private/Authentication/Token/IToken.php +++ b/lib/private/Authentication/Token/IToken.php @@ -96,7 +96,37 @@ interface IToken extends JsonSerializable { */ public function setScope($scope); + /** + * Get the name of the token + * @return string + */ public function getName(): string; + /** + * Get the remember state of the token + * + * @return int + */ public function getRemember(): int; + + /** + * Set the token + * + * @param string $token + */ + public function setToken(string $token); + + /** + * Set the password + * + * @param string $password + */ + public function setPassword(string $password); + + /** + * Set the expiration time of the token + * + * @param int|null $expires + */ + public function setExpires($expires); } diff --git a/lib/private/LargeFileHelper.php b/lib/private/LargeFileHelper.php index ea848f83622..d6dcbeedb48 100644..100755 --- a/lib/private/LargeFileHelper.php +++ b/lib/private/LargeFileHelper.php @@ -117,7 +117,7 @@ class LargeFileHelper { public function getFileSizeViaCurl($fileName) { if (\OC::$server->getIniWrapper()->getString('open_basedir') === '') { $encodedFileName = rawurlencode($fileName); - $ch = curl_init("file://$encodedFileName"); + $ch = curl_init("file:///$encodedFileName"); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); @@ -185,14 +185,22 @@ class LargeFileHelper { * @return int */ public function getFileMtime($fullPath) { - if (\OC_Helper::is_function_enabled('exec')) { - $os = strtolower(php_uname('s')); - if (strpos($os, 'linux') !== false) { - return $this->exec('stat -c %Y ' . escapeshellarg($fullPath)); + try { + $result = filemtime($fullPath); + } catch (\Exception $e) { + $result =- 1; + } + if ($result < 0) { + if (\OC_Helper::is_function_enabled('exec')) { + $os = strtolower(php_uname('s')); + if (strpos($os, 'linux') !== false) { + return $this->exec('stat -c %Y ' . escapeshellarg($fullPath)); + } } } + return $result; + - return filemtime($fullPath); } protected function exec($cmd) { diff --git a/lib/private/Preview/Watcher.php b/lib/private/Preview/Watcher.php index be462d9c935..0c0531dff94 100644 --- a/lib/private/Preview/Watcher.php +++ b/lib/private/Preview/Watcher.php @@ -49,6 +49,10 @@ class Watcher { } public function postWrite(Node $node) { + $this->deleteNode($node); + } + + protected function deleteNode(Node $node) { // We only handle files if ($node instanceof Folder) { return; @@ -61,4 +65,10 @@ class Watcher { //Nothing to do } } + + public function versionRollback(array $data) { + if (isset($data['node'])) { + $this->deleteNode($data['node']); + } + } } diff --git a/lib/private/Preview/WatcherConnector.php b/lib/private/Preview/WatcherConnector.php index bf9e6c29e4f..f374b909d8f 100644 --- a/lib/private/Preview/WatcherConnector.php +++ b/lib/private/Preview/WatcherConnector.php @@ -60,6 +60,8 @@ class WatcherConnector { $this->root->listen('\OC\Files', 'postWrite', function (Node $node) { $this->getWatcher()->postWrite($node); }); + + \OC_Hook::connect('\OCP\Versions', 'rollback', $this->getWatcher(), 'versionRollback'); } } } diff --git a/lib/public/Util.php b/lib/public/Util.php index 0e32d8473a5..27b703ea2d8 100644 --- a/lib/public/Util.php +++ b/lib/public/Util.php @@ -82,7 +82,7 @@ class Util { private static $shareManager; /** - * get the current installed version of ownCloud + * get the current installed version of Nextcloud * @return array * @since 4.0.0 */ diff --git a/settings/l10n/cs.js b/settings/l10n/cs.js index 6356eccd2e0..8ac5133e1fe 100644 --- a/settings/l10n/cs.js +++ b/settings/l10n/cs.js @@ -386,4 +386,4 @@ OC.L10N.register( "Create" : "Vytvořit", "Group name" : "Název skupiny" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/settings/l10n/cs.json b/settings/l10n/cs.json index 323735fa943..4ae6d2da492 100644 --- a/settings/l10n/cs.json +++ b/settings/l10n/cs.json @@ -383,5 +383,5 @@ "Send email to new user" : "Poslat e-mail novému uživateli", "Create" : "Vytvořit", "Group name" : "Název skupiny" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js index bab49b9755d..4f967a9598d 100644 --- a/settings/l10n/en_GB.js +++ b/settings/l10n/en_GB.js @@ -262,6 +262,8 @@ OC.L10N.register( "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "It is strongly proposed to install the required packages on your system to support one of the following locales: %s.", "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "It was not possible to execute the cron job via CLI. The following technical errors have appeared:", + "Last background job execution ran %s. Something seems wrong." : "Last background job execution ran %s. Something seems wrong.", + "Check the background job settings" : "Check the background job settings", "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>.", "All checks passed." : "All checks passed.", "Version" : "Version", @@ -341,6 +343,7 @@ OC.L10N.register( "Current password" : "Current password", "New password" : "New password", "Change password" : "Change password", + "Devices & sessions" : "Devices & sessions", "Web, desktop and mobile clients currently logged in to your account." : "Web, desktop and mobile clients currently logged in to your account.", "Device" : "Device", "Last activity" : "Last activity", diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json index c1c59993216..06b66ad6117 100644 --- a/settings/l10n/en_GB.json +++ b/settings/l10n/en_GB.json @@ -260,6 +260,8 @@ "It is strongly proposed to install the required packages on your system to support one of the following locales: %s." : "It is strongly proposed to install the required packages on your system to support one of the following locales: %s.", "If your installation is not installed at the root of the domain and uses system Cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "If your installation is not installed at the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "It was not possible to execute the cron job via CLI. The following technical errors have appeared:", + "Last background job execution ran %s. Something seems wrong." : "Last background job execution ran %s. Something seems wrong.", + "Check the background job settings" : "Check the background job settings", "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>.", "All checks passed." : "All checks passed.", "Version" : "Version", @@ -339,6 +341,7 @@ "Current password" : "Current password", "New password" : "New password", "Change password" : "Change password", + "Devices & sessions" : "Devices & sessions", "Web, desktop and mobile clients currently logged in to your account." : "Web, desktop and mobile clients currently logged in to your account.", "Device" : "Device", "Last activity" : "Last activity", diff --git a/settings/l10n/fa.js b/settings/l10n/fa.js index f8b29c78d1b..fe04caa9617 100644 --- a/settings/l10n/fa.js +++ b/settings/l10n/fa.js @@ -157,4 +157,4 @@ OC.L10N.register( "Send email to new user" : "ارسال ایمیل به کاربر جدید", "Create" : "ایجاد کردن" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/settings/l10n/fa.json b/settings/l10n/fa.json index 71232d63c66..c9871c9e1b0 100644 --- a/settings/l10n/fa.json +++ b/settings/l10n/fa.json @@ -154,5 +154,5 @@ "Show email address" : "نمایش پست الکترونیکی", "Send email to new user" : "ارسال ایمیل به کاربر جدید", "Create" : "ایجاد کردن" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/settings/l10n/he.js b/settings/l10n/he.js index 911e68e79d5..09d756084c6 100644 --- a/settings/l10n/he.js +++ b/settings/l10n/he.js @@ -217,4 +217,4 @@ OC.L10N.register( "Send email to new user" : "שליחת דואר אלקטרוני למשתמש חדש", "Create" : "יצירה" }, -"nplurals=2; plural=(n != 1);"); +"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/settings/l10n/he.json b/settings/l10n/he.json index 87594941a67..b6ce550bb8d 100644 --- a/settings/l10n/he.json +++ b/settings/l10n/he.json @@ -214,5 +214,5 @@ "Show email address" : "הצגת כתובת דואר אלקטרוני", "Send email to new user" : "שליחת דואר אלקטרוני למשתמש חדש", "Create" : "יצירה" -},"pluralForm" :"nplurals=2; plural=(n != 1);" +},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/settings/l10n/ka_GE.js b/settings/l10n/ka_GE.js index 941f992a542..66177fb8a77 100644 --- a/settings/l10n/ka_GE.js +++ b/settings/l10n/ka_GE.js @@ -380,7 +380,7 @@ OC.L10N.register( "Migration Completed" : "მიგრაცია დასრულდა", "Are you really sure you want add {domain} as trusted domain?" : "დამდვილად გსურთ {domain}-ის დამატება სანდო დომენად?", "Add trusted domain" : "სანდო დომენის დამატება", - "_You have %n app update pending_::_You have %n app updates pending_" : ["თქვენ მოლოდინში გაქვთ %n აპლიკაციის განახლება"], + "_You have %n app update pending_::_You have %n app updates pending_" : ["თქვენ მოლოდინში გაქვთ %n აპლიკაციის განახლება","თქვენ მოლოდინში გაქვთ %n აპლიკაციის განახლება"], "Updating...." : "ნახლდება…", "Error while updating app" : "შეცდომა აპლიკაციის განახლების დროს", "Error while removing app" : "აპლიკაციის წაშლისას წარმოიშვა შეცდომა", @@ -425,4 +425,4 @@ OC.L10N.register( "Create" : "შექმნა", "Group name" : "ჯგუფის სახელი" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n!=1);"); diff --git a/settings/l10n/ka_GE.json b/settings/l10n/ka_GE.json index 03cce24cdee..a6d2fd6c140 100644 --- a/settings/l10n/ka_GE.json +++ b/settings/l10n/ka_GE.json @@ -378,7 +378,7 @@ "Migration Completed" : "მიგრაცია დასრულდა", "Are you really sure you want add {domain} as trusted domain?" : "დამდვილად გსურთ {domain}-ის დამატება სანდო დომენად?", "Add trusted domain" : "სანდო დომენის დამატება", - "_You have %n app update pending_::_You have %n app updates pending_" : ["თქვენ მოლოდინში გაქვთ %n აპლიკაციის განახლება"], + "_You have %n app update pending_::_You have %n app updates pending_" : ["თქვენ მოლოდინში გაქვთ %n აპლიკაციის განახლება","თქვენ მოლოდინში გაქვთ %n აპლიკაციის განახლება"], "Updating...." : "ნახლდება…", "Error while updating app" : "შეცდომა აპლიკაციის განახლების დროს", "Error while removing app" : "აპლიკაციის წაშლისას წარმოიშვა შეცდომა", @@ -422,5 +422,5 @@ "Send email to new user" : "გაუგზავნეთ ელ-წერილი ახალ მომხმარებელს", "Create" : "შექმნა", "Group name" : "ჯგუფის სახელი" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/settings/l10n/kn.js b/settings/l10n/kn.js index 5bd4ca353fd..9be4d7f4286 100644 --- a/settings/l10n/kn.js +++ b/settings/l10n/kn.js @@ -91,4 +91,4 @@ OC.L10N.register( "A valid email must be provided" : "ಮಾನ್ಯ ಬಳಕೆದಾರ ಇ-ಅಂಚೆಯನ್ನು ಒದಗಿಸಬೇಕಾಗುತ್ತದೆ", "Create" : "ಸೃಷ್ಟಿಸಿ" }, -"nplurals=1; plural=0;"); +"nplurals=2; plural=(n > 1);"); diff --git a/settings/l10n/kn.json b/settings/l10n/kn.json index aa41e3f4aba..3328b9310e8 100644 --- a/settings/l10n/kn.json +++ b/settings/l10n/kn.json @@ -88,5 +88,5 @@ "A valid password must be provided" : "ಸರಿಯಾದ ಬಳಕೆದಾರ ಗುಪ್ತಪದ ಒದಗಿಸಬೇಕಾಗಿದೆ", "A valid email must be provided" : "ಮಾನ್ಯ ಬಳಕೆದಾರ ಇ-ಅಂಚೆಯನ್ನು ಒದಗಿಸಬೇಕಾಗುತ್ತದೆ", "Create" : "ಸೃಷ್ಟಿಸಿ" -},"pluralForm" :"nplurals=1; plural=0;" +},"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js index e3b4118790d..c344dc6b2c1 100644 --- a/settings/l10n/lt_LT.js +++ b/settings/l10n/lt_LT.js @@ -231,4 +231,4 @@ OC.L10N.register( "Show email address" : "Rodyti el. pašto adresą", "Create" : "Sukurti" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json index 5b9b00504db..fba2ea507c7 100644 --- a/settings/l10n/lt_LT.json +++ b/settings/l10n/lt_LT.json @@ -228,5 +228,5 @@ "Subscribe to our newsletter!" : "Prenumeruokite mūsų naujienlaiškį!", "Show email address" : "Rodyti el. pašto adresą", "Create" : "Sukurti" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/settings/l10n/sk.js b/settings/l10n/sk.js index 9c3c47b32a3..e88f2c4e012 100644 --- a/settings/l10n/sk.js +++ b/settings/l10n/sk.js @@ -392,4 +392,4 @@ OC.L10N.register( "Create" : "Vytvoriť", "Group name" : "Názov skupiny" }, -"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); +"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/settings/l10n/sk.json b/settings/l10n/sk.json index b55f6b5b719..cb473f9b4fd 100644 --- a/settings/l10n/sk.json +++ b/settings/l10n/sk.json @@ -389,5 +389,5 @@ "Send email to new user" : "Odoslať email novému používateľovi", "Create" : "Vytvoriť", "Group name" : "Názov skupiny" -},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/settings/l10n/uk.js b/settings/l10n/uk.js index d4c0917ccf0..e02fb897f04 100644 --- a/settings/l10n/uk.js +++ b/settings/l10n/uk.js @@ -182,4 +182,4 @@ OC.L10N.register( "Send email to new user" : "Надіслати email новому користувачу", "Create" : "Створити" }, -"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); +"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/settings/l10n/uk.json b/settings/l10n/uk.json index 9cfeceadc3c..502a81ca1c6 100644 --- a/settings/l10n/uk.json +++ b/settings/l10n/uk.json @@ -179,5 +179,5 @@ "Show email address" : "Показати адресу електронної пошти", "Send email to new user" : "Надіслати email новому користувачу", "Create" : "Створити" -},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" +},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/tests/acceptance/config/behat.yml b/tests/acceptance/config/behat.yml index bfdbfbacba2..5f1b27ffe2d 100644 --- a/tests/acceptance/config/behat.yml +++ b/tests/acceptance/config/behat.yml @@ -31,3 +31,9 @@ default: selenium2: ~ Jane: selenium2: ~ + Rubeus: + # Rubeus uses a browser that has CSS grid support. + selenium2: + capabilities: + firefox: + profile: config/firefox-profiles/css-grid-enabled.zip diff --git a/tests/acceptance/config/firefox-profiles/css-grid-enabled.zip b/tests/acceptance/config/firefox-profiles/css-grid-enabled.zip Binary files differnew file mode 100644 index 00000000000..8f061806d0a --- /dev/null +++ b/tests/acceptance/config/firefox-profiles/css-grid-enabled.zip diff --git a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php index a2128e0fd4c..95b5b928559 100644 --- a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php +++ b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php @@ -26,6 +26,7 @@ use OC\Authentication\Exceptions\InvalidTokenException; use OC\Authentication\Token\DefaultToken; use OC\Authentication\Token\DefaultTokenMapper; use OC\Authentication\Token\DefaultTokenProvider; +use OC\Authentication\Token\ExpiredTokenException; use OC\Authentication\Token\IToken; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Utility\ITimeFactory; @@ -395,6 +396,63 @@ class DefaultTokenProviderTest extends TestCase { $this->tokenProvider->renewSessionToken('oldId', 'newId'); } + public function testGetToken() { + $token = new DefaultToken(); + + $this->config->method('getSystemValue') + ->with('secret') + ->willReturn('mysecret'); + + $this->mapper->method('getToken') + ->with( + $this->callback(function (string $token) { + return hash('sha512', 'unhashedTokenmysecret') === $token; + }) + )->willReturn($token); + + $this->assertSame($token, $this->tokenProvider->getToken('unhashedToken')); + } + + public function testGetInvalidToken() { + $this->expectException(InvalidTokenException::class); + + $this->config->method('getSystemValue') + ->with('secret') + ->willReturn('mysecret'); + + $this->mapper->method('getToken') + ->with( + $this->callback(function (string $token) { + return hash('sha512', 'unhashedTokenmysecret') === $token; + }) + )->willThrowException(new InvalidTokenException()); + + $this->tokenProvider->getToken('unhashedToken'); + } + + public function testGetExpiredToken() { + $token = new DefaultToken(); + $token->setExpires(42); + + $this->config->method('getSystemValue') + ->with('secret') + ->willReturn('mysecret'); + + $this->mapper->method('getToken') + ->with( + $this->callback(function (string $token) { + return hash('sha512', 'unhashedTokenmysecret') === $token; + }) + )->willReturn($token); + + try { + $this->tokenProvider->getToken('unhashedToken'); + } catch (ExpiredTokenException $e) { + $this->assertSame($token, $e->getToken()); + } + + } + public function testGetTokenById() { $token = $this->createMock(DefaultToken::class); @@ -416,4 +474,63 @@ class DefaultTokenProviderTest extends TestCase { $this->tokenProvider->getTokenById(42); } + + public function testGetExpiredTokenById() { + $token = new DefaultToken(); + $token->setExpires(42); + + $this->mapper->expects($this->once()) + ->method('getTokenById') + ->with($this->equalTo(42)) + ->willReturn($token); + + try { + $this->tokenProvider->getTokenById(42); + $this->fail(); + } catch (ExpiredTokenException $e) { + $this->assertSame($token, $e->getToken()); + } + } + + public function testRotate() { + $token = new DefaultToken(); + $token->setPassword('oldencryptedpassword'); + + $this->config->method('getSystemValue') + ->with('secret') + ->willReturn('mysecret'); + + $this->crypto->method('decrypt') + ->with('oldencryptedpassword', 'oldtokenmysecret') + ->willReturn('mypassword'); + $this->crypto->method('encrypt') + ->with('mypassword', 'newtokenmysecret') + ->willReturn('newencryptedpassword'); + + $this->mapper->expects($this->once()) + ->method('update') + ->with($this->callback(function (DefaultToken $token) { + return $token->getPassword() === 'newencryptedpassword' && + $token->getToken() === hash('sha512', 'newtokenmysecret'); + })); + + $this->tokenProvider->rotate($token, 'oldtoken', 'newtoken'); + } + + public function testRotateNoPassword() { + $token = new DefaultToken(); + + $this->config->method('getSystemValue') + ->with('secret') + ->willReturn('mysecret'); + + $this->mapper->expects($this->once()) + ->method('update') + ->with($this->callback(function (DefaultToken $token) { + return $token->getPassword() === null && + $token->getToken() === hash('sha512', 'newtokenmysecret'); + })); + + $this->tokenProvider->rotate($token, 'oldtoken', 'newtoken'); + } } diff --git a/version.php b/version.php index 433f248aec7..a7b0fdbcc67 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ // between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel // when updating major/minor version number. -$OC_Version = array(14, 0, 0, 3); +$OC_Version = array(14, 0, 0, 4); // The human readable string $OC_VersionString = '14.0.0 alpha'; |