diff --git a/apps/comments/l10n/cs.js b/apps/comments/l10n/cs.js
index 3677d0bbff74df62675b2f13d1b1e24ed96f0d50..d24508a06ab6cf8a5ed116ebca42a9da8a74e8dd 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/comments/l10n/cs.json b/apps/comments/l10n/cs.json
index 7f9bb2f636c9032e283ae7b2910da9a38859451e..4f21ebd36a995e7ed32c8c695d1b10373a5fcc36 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/comments/l10n/he.js b/apps/comments/l10n/he.js
index ce851ed9fb2388f40e865f6eaef3d802741b8967..9969267a9f74df667f8a12aa25d87c3ba6648f25 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 תגובות שלא נקראו"],
     "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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/comments/l10n/he.json b/apps/comments/l10n/he.json
index 8ab976952a197a92aa1e9bfaa758444451789343..a2ff91300ca7c44a936952a608cdbc8783c444b5 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 תגובות שלא נקראו"],
     "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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/apps/comments/l10n/ka_GE.js b/apps/comments/l10n/ka_GE.js
index 295d6ce41ec3296c5ef8928465bbeeff14141ab4..772b23c0fa33f83ad62ca6ba4b8c9c78a384f666 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 d10f8aafa0e05b0473e32b400ffc6e406883b2dd..e10ee3c9f2695baf21867468f1fd60f70f57650a 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 8608dc01f9d5d62fc7d221dd4396674622974d08..4895fb83136833290f483c4048f898298cf7995c 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/comments/l10n/lt_LT.json b/apps/comments/l10n/lt_LT.json
index 165f33b6de13dffc8c553f4059f3f68c1ea69c12..56fbfe1009eb9a7a769e6be9c588c0b6cd004269 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/comments/l10n/sk.js b/apps/comments/l10n/sk.js
index a797eb61619da075d2654ec63893f5e4baccdcb5..9a5567ba4537f82b79eef0ed6aa43b7d699a7bab 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/comments/l10n/sk.json b/apps/comments/l10n/sk.json
index 1a9c6d58e05dc86057c2a372bf9d3f3ff017d666..9d6a839eacdac79a53411aab25b25b3d5608676c 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/comments/l10n/uk.js b/apps/comments/l10n/uk.js
index fdd6cf8416390d4cfd0ef5da9c145508fd9a661c..45c60fedcd229cc75e788f4024e58e17d31c2975 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/apps/comments/l10n/uk.json b/apps/comments/l10n/uk.json
index a33108bae71747ea65cec3eb11b4521d0c866c6b..ca246e40258ff3fa0a22315fc4ecce19f02703f4 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js
index 012a3c09b884d53e606e8094f6739bebe7a66153..808b9677a0ae69d704803d7e22bbf705fc32902d 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json
index 09b60937f3ac99773fc480f32be457d81eec7f5b..50b296e2c55b2e76733a449ff7a19016abbb0d8a 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/dav/l10n/he.js b/apps/dav/l10n/he.js
index 04523cb0c1e64dc37a65d8e65b4f9949df66f12b..649d73a0f912e29103656585eb4f4eea398a3284 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/dav/l10n/he.json b/apps/dav/l10n/he.json
index 11c7ca6b6bf3f748890dc66b62956ba6f96a0c95..1ddc3c3f0b67ca6614c20aca5e8496300e0ad6e1 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/apps/dav/l10n/ka_GE.js b/apps/dav/l10n/ka_GE.js
index 5c3d70b2c64bbb840af59ccd071f314d321acfbc..aabc712aa539cc5a090ec0aaf71122c006749b79 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 c9318e2c9f5472e00cb1ea6606ed2f66f367cb76..0e3c97ecb8b40d074e508065bef08ca0532f5666 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 ec20bcf7bc867891521041db11630c416edc63d3..2d21e9f1212620284e0a7aa7dd1db55cda67bb51 100644
--- a/apps/dav/l10n/lt_LT.js
+++ b/apps/dav/l10n/lt_LT.js
@@ -46,4 +46,4 @@ OC.L10N.register(
     "Remote Address: %s" : "Nuotolinis adresas: %s",
     "Request ID: %s" : "Užklausos ID: %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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/dav/l10n/lt_LT.json b/apps/dav/l10n/lt_LT.json
index c0a8e43c7b827232e8e1eb47f061b81b4eacaa86..03ca7ad98c64c45428d39c90aacbb6f8a86ef0f2 100644
--- a/apps/dav/l10n/lt_LT.json
+++ b/apps/dav/l10n/lt_LT.json
@@ -43,5 +43,5 @@
     "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);"
+},"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/dav/l10n/sk.js b/apps/dav/l10n/sk.js
index 8122af1dcf0e6b0c6ecf1a0e3fb8118225490473..6dbf7e47a64bc88111208b887f89ba7f081c557a 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/dav/l10n/sk.json b/apps/dav/l10n/sk.json
index a30b68b0416d5ad66d0e4218f0bb30bac21936d8..412b980bc21fe31c17e870f1314de3694c11c251 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/encryption/l10n/cs.js b/apps/encryption/l10n/cs.js
index 71076d204c38e1f59d3e05b5829cb9b6c3d95234..610c5b290efb820dcdd96bc9e61912584233382e 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/encryption/l10n/cs.json b/apps/encryption/l10n/cs.json
index 69aaf8ebadce7121669793dab4c660cc0ddac690..84a3ea77b98dc82639e0667ea48db1182c845e6d 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/encryption/l10n/fa.js b/apps/encryption/l10n/fa.js
index c4759a799e8001fadcd7e14fdf878c2a5808225e..32e268deeafa21a3453ab7b89c71250af1a17d89 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 && n>= 0) ? 1);");
diff --git a/apps/encryption/l10n/fa.json b/apps/encryption/l10n/fa.json
index a9adbebb31b87a8fb146e116a615ba8ab80d5212..fba9a0e6ecfb07d8ca20399d4b4d291a469b19ac 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/apps/encryption/l10n/he.js b/apps/encryption/l10n/he.js
index 5ed57596d5f28deede8fa4a56c1a737c15e1a261..41d29d8b9afb4b8bba8b0f536de4654b81373af2 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/encryption/l10n/he.json b/apps/encryption/l10n/he.json
index 645302d577d6b391e7daf6058c670888d41f1e41..61bec1c2c31629126b807d3e15781550d33ed249 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/apps/encryption/l10n/ka_GE.js b/apps/encryption/l10n/ka_GE.js
index 535c4ad1ed6480a347b5ecee3efe5f75abab17aa..65710c2f846d922cf653fd829a86ee7c0158b7d0 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 f3a2550f115af10ffa9bf1f2f648a8f61a5646a7..f2fa1bc3134e243d05618095826bea8fb95619d1 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 7ac21150f4702f611696e1cbcc7c816e1f093782..d4378a5f7b94010108f12fd92243da817d19cfa3 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json
index 3a148b6d8ca476173dda0670b06e9913a2a8c45f..1bb5a7853065e6f06bf3fae86fa38cb77eda55d0 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/encryption/l10n/sk.js b/apps/encryption/l10n/sk.js
index dc8840f495d6fcc05a4058fa08032d7b7479d7ee..58c5a50338f849cf0d58b2bb52bd4610666a9b5a 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/encryption/l10n/sk.json b/apps/encryption/l10n/sk.json
index 6bd2cab2cc2a5d4011e225fcc6e806ebc48c4b3d..5390ea641ed7258d8e5ea40886abbff9ecda8941 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/encryption/l10n/uk.js b/apps/encryption/l10n/uk.js
index 3c256d336dc0d0ee29f2433fe5aee2ca72cd2155..e53cc1f908c6fe362084dc147e9f4fb0d611b5b2 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/apps/encryption/l10n/uk.json b/apps/encryption/l10n/uk.json
index 05b5108588e1a62bc8b8bbae1335b2f87e896ef5..b8a198c822d5dfd6d500da50b778346f7fd811c9 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/cs.js b/apps/federatedfilesharing/l10n/cs.js
index 51e53113f0cee91b89f7b2407f4f4b6a7779f7de..787cac6812ff837549b9b3894b9fa36f62c9a51c 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/federatedfilesharing/l10n/cs.json b/apps/federatedfilesharing/l10n/cs.json
index f17d7bb2371a5b729a9a54eef90698ce6b899c43..92d8785ee62592a83717b80d456a57d549328cdb 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/ka_GE.js b/apps/federatedfilesharing/l10n/ka_GE.js
index 383ae2fc3c9b9e126766392a29bd3bb07a390c61..24417ffe2ee58ea0e49afc89fccb69e88c8cfa85 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 19165fd3155c0237085910da2629dcec265ac4aa..7ad3e889718df1a7cf00a82d670f21c29a6f0a1b 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 47479c9e791ba2cabc0b9373457993b8d635ff76..ea9707d92fa71f695f00b7cfc6041a3bfecbdb25 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/federatedfilesharing/l10n/lt_LT.json b/apps/federatedfilesharing/l10n/lt_LT.json
index 278d4381ae0fddfb3cbffced71f28335bfca573f..dd98e4b140270980716444321a945ff33068702b 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/sk.js b/apps/federatedfilesharing/l10n/sk.js
index b1a1f748ac1891beb484303afd8d1fe7b4ae7296..ab9b598731edbfea8932e0de1d4b7f8bbb49bc4b 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/federatedfilesharing/l10n/sk.json b/apps/federatedfilesharing/l10n/sk.json
index c1ddd980e6a25c4962a7aafc38d7a1ff2d26db66..db354ce1e48cafe78e696683475e8fd416ba5ac6 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/federation/l10n/cs.js b/apps/federation/l10n/cs.js
index ab76961f5b8ad5eef51396b8a134b04f592f6a28..6271bb7cf4fd0152bd1679ef6aae18bbefb30d08 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/federation/l10n/cs.json b/apps/federation/l10n/cs.json
index 8c7e4f40b61ccee7330272c4ece37763840b6051..5da2de183a00e73803e584c1effef7936255df16 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/federation/l10n/fa.js b/apps/federation/l10n/fa.js
index 62279af2361eba125e1d14e8a824cbd964a1f5ac..4e198c01bd810aab6af12dbce40343c4da7508ce 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 && n>= 0) ? 1);");
diff --git a/apps/federation/l10n/fa.json b/apps/federation/l10n/fa.json
index 0d79140137e2b53e5b0ee098beba6833ff26fd09..4e0985c569e63fc3f85b26da3110273128cc118a 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/apps/federation/l10n/ka_GE.js b/apps/federation/l10n/ka_GE.js
index 5d8c926e293be10ce5637a3acf0707fcbf0ae972..fab637005fbafad4a675bca10f0426413989ea97 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 edf97f30f62a4f33e46149fb34774ff5f616e68b..5c58878852c92482667265b34f45e3d253322eee 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 24087403daf01812f3531285ac88e513c7c11ad2..2b7d5015f92be336625a34d24c6537fffd05b20b 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/federation/l10n/lt_LT.json b/apps/federation/l10n/lt_LT.json
index d83d14060a630789a53f5d43131da455a57ffdea..bfbd06e08745d865c6cf4452bdcc90b53e79d214 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/federation/l10n/sk.js b/apps/federation/l10n/sk.js
index 7a842a3961a37ab829bcca96fba2d90d9cb7f27a..7a34cd0bf9b45612b15012467ff694b66911212c 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/federation/l10n/sk.json b/apps/federation/l10n/sk.json
index 16da9ab402269b736b4c6e52368a4f43ba1a9802..67bf8461968008a3fb1240881bfc62e64dda846a 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index ef9b5799a2e20de2c8572f5364665ca3559a8aee..f04e73655189af9ee4ad06adac0d037dcef38d15 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index 5e5719bc6f7f5ea86e79aa784c73ac3a7c1295f5..11295433909d288016666c0a9753ae192aaac4bb 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js
index 8c7f34c1c089a3f460eeb6e6402fd190aad94f52..f70f9216279461502b8fe37aa8ffd75f13e14206 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 file_::_%n files_" : ["%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 מוסתרים"],
     "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 קבצים"],
     "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}'"],
     "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 בייטים"],
     "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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json
index 4f15c4c781895dcac90f6480c89075be8ee592c7..297b7fafde2aab077f8fbe19fbed954ac4fd4a70 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 file_::_%n files_" : ["%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 מוסתרים"],
     "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 קבצים"],
     "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}'"],
     "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 בייטים"],
     "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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/apps/files/l10n/ka_GE.js b/apps/files/l10n/ka_GE.js
index 428f2a6eedc06b53bdd42c4572ff9aadec3d8493..137afac9373b1efbddd32b35997d047f1fe8024c 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 57e4d987f8f6101ae00d9a8252e68cdcc4500bd3..74e68d0d65bb1f405e9a233734e22d1efe896c94 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 a30e7272c5d5598ece010b0f042647e38860c81c..746fffa231578142f5394504ccf8c680232947f8 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -47,12 +47,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 +62,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 +133,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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index 78aec5fd4633d1c8d9f447413debee61638d4ea0..fa7e0a8958374648a20656e1dae9ad1db3d83df2 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -45,12 +45,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 +60,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 +130,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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js
index 4d74625a007ea0ef6756fdd0a9c8cd63f0192e89..3f4f4b4ffc7501cd0e68443f67ed8c0d79c79c78 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json
index 304a9e8dd798ccb24c6e158972c39be131afa679..2f60871e878ef66d512b45bb14586cdd019451b9 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index c5b9b7938c37e2b54abdcb268bbcc89ab20bbb56..e6a267a92bb1deebc2823e517810ffcd6be658c9 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index 01f37c48ffa7904e0131f35105c8fa76cf9261bd..01c35e383a73549d1b9ce750c8804b609c82748c 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/apps/files_external/l10n/cs.js b/apps/files_external/l10n/cs.js
index af9a0666f5f572e170f8beecefb6c1a116b6c998..465dbd7e8494d2c870d760ad1be02830f674d549 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/files_external/l10n/cs.json b/apps/files_external/l10n/cs.json
index 57f2782b1d161461a71d7a3a2edb8289a89d0fd1..835c07bc0423ba4f398a1218934b987aa3278c8e 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js
index fc4227e8142d54a14fb535032080423087e96cac..c36f7777592a09ab4473296e5460fcbe7c8b46e9 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json
index fd14572f449156765850200a960b6f8831604011..39655a54f0e0a788fd7a61ea5331cb5f7e5278c4 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ 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 228e131004a3e7e5a105b294046834bf057a7d43..a11d2d2e6b3b8388343770dd86c19eca3eeb8662 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 e8a3e4162ec81d9cbd8682d5b63a06508abb9ff4..fdb1154e41e9be46dddac60fee764d66be49176e 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 4ca8e6cf6d65950450d21a72b38cb88f04e12158..cf069cb899237303c4741b80b9f1c841be9ec865 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json
index ff69617c68bcea4d25eccd701f9bcb2380c49a0f..eae25841ae802066a68bb8585634ce7e432eebb4 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/files_external/l10n/sk.js b/apps/files_external/l10n/sk.js
index 83eeded4bdefe15c206e60edd53459a5bce19d1a..6eb9b3973229278e03b5e744413be9ca886a8584 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/files_external/l10n/sk.json b/apps/files_external/l10n/sk.json
index 0a84c569dfbbc16f44dd2861904780274f1c76c5..5bc3586adfe4138cb85f3440f3554a7b4b2c525b 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js
index 2446e958b74baaece6d3bd28702f655ac40ba453..f026e558c8484f94ea9938ec514d1af035400e6d 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json
index ad9f5b77ad723b50f1a7c24e9c45195a22828c79..3acb69cd8ef152bf6839c916d13fd472b192a448 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ 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 9216347a76480b970a990ed3a2eb0753f62e6390..d15596a03fe3509f71bf1b1fbb5995576d827541 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 a8ba3ee19968188f88c2a0f341fd2947df1e3ae4..96a440495ebd1886dae8a1d891f3e7711214eca8 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 5fa75c104171e77d10546ca32ba8f2a28551ae03..45aafdef5d6fb0fe878c7bc1fba2df0377de0057 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json
index 5764613a2ff81dbac076c75f7412ea1b541d281f..0d45ffb1be72f8261fab4f01f8317e0daac9187f 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js
index 1b12fe41b439963550e64ffba31ae8680ecc4129..34dc38447efab77fdb6120bf001b33fc23ceed58 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json
index dd44d86330ece4222a16f5dffd6bf5d263c86cf9..6cd8b794758a9e62300a4fe7112e17cd3011875e 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/files_trashbin/l10n/cs.js b/apps/files_trashbin/l10n/cs.js
index 712076402f471885bed974ced5096228cdafb91c..7a96a4ce97b5192ec6fd8653eb12910678271a53 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/files_trashbin/l10n/cs.json b/apps/files_trashbin/l10n/cs.json
index 06c3b2ce096aef77185f21d645b34517b3f8cc24..9e5bc6bd4c685bb70664907c2c909d025fcd140a 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/files_trashbin/l10n/fa.js b/apps/files_trashbin/l10n/fa.js
index b3c63104b043f1b12e42752408d0eebd272fbad8..4548fc5fb12ab7cd8e5e61af6846a868eb0776c5 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 && n>= 0) ? 1);");
diff --git a/apps/files_trashbin/l10n/fa.json b/apps/files_trashbin/l10n/fa.json
index 09ff91cc2e03c1b19c3aeb928525c3a382a5222b..4d14181a8cfe80cddda2a8653cd49cb97a88456c 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/apps/files_trashbin/l10n/he.js b/apps/files_trashbin/l10n/he.js
index e2104b9b57025be0b940cac3023ade7bdfe3da9b..3b5a9af0a6f06744d8beee3b39ef098d4acb02b2 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/files_trashbin/l10n/he.json b/apps/files_trashbin/l10n/he.json
index c76079b0d3421d6f40bedd7617cf9511be148b21..6987701af93f42c6e0adaad416b38bf510c778c7 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ 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 8a90a571c9c9cc942620b9b115f70bbfca1ff0fa..e970d50ff68ff31ad4139690920c7a09be17f65d 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 9ccca984eab96c26b5b342407760160211d9ba7f..54a6c4d9f106b3bd1405bc53ecac779b36f3fbde 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 40785b474db0624b9f79f0f537b935c29fe81f4d..3b12e4137f0f12412750440c610ca613a97ee9df 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/files_trashbin/l10n/lt_LT.json b/apps/files_trashbin/l10n/lt_LT.json
index b871d16d31eb6ba199e84c90a317438e07a1bea4..85233ffdd098b5036c65b4a8aa94ae61d8fa9f2f 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/files_trashbin/l10n/sk.js b/apps/files_trashbin/l10n/sk.js
index b4168ec544050e9521d71307b7e612ac6dab9035..2ba56add86c7e065330c23434df3d2f05f6f5f8d 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/files_trashbin/l10n/sk.json b/apps/files_trashbin/l10n/sk.json
index b02227c70646ea817b4de0b9663fb4d09c03a218..d35932084a832c945ceffb5d3094abe58e04b43b 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/files_trashbin/l10n/uk.js b/apps/files_trashbin/l10n/uk.js
index 10747cda3f61dacdc406ef540eb313df13e2a915..30752cbfa7842b439791d6a931ac1ea2c3ac0f19 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/apps/files_trashbin/l10n/uk.json b/apps/files_trashbin/l10n/uk.json
index d02ee89faf66e4ba052befb37796639fc8d5743c..8168b75e4f465b01be83edb54dd0236cf966f7f8 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/apps/files_versions/l10n/cs.js b/apps/files_versions/l10n/cs.js
index deb7e3e33b92b9e821a720837d4cd9ad95193bbe..e8a5535d6601ecbb3d76d8d9e0ae900bb9a430c5 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/files_versions/l10n/cs.json b/apps/files_versions/l10n/cs.json
index 6b72774799814675ce8b0e1785235d906364a0c5..1164298db830b2c708824f85dcc9154ceb0d800a 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/files_versions/l10n/fa.js b/apps/files_versions/l10n/fa.js
index 35332939df172c2ebedcc012af7089a2f86ff38f..2545daf38174a4d5585555190ec729f103c4372e 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 && n>= 0) ? 1);");
diff --git a/apps/files_versions/l10n/fa.json b/apps/files_versions/l10n/fa.json
index 2618427c674000eeeb84d78a4011cf52d0864b88..6b96efe89fb9a8afa6a9ae19ac38351d45aff72a 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/apps/files_versions/l10n/he.js b/apps/files_versions/l10n/he.js
index 09e655c422f3a0e2c817f175132be5274d427e45..d9f9d69bbccec20e667cadb3677dd70c78730cbf 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 בייטים"],
     "Restore" : "שחזור",
     "No earlier versions available" : "אין גרסאות קודמות זמינות",
     "More versions …" : "גרסאות נוספות…"
 },
-"nplurals=2; plural=(n != 1);");
+"nplurals=4; plural=(n==1 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/files_versions/l10n/he.json b/apps/files_versions/l10n/he.json
index 380df68f9717f25c1728953625abc0c13eed0ede..15ee15ab7b1a90bc065f187489f2cbbc3426667e 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 בייטים"],
     "Restore" : "שחזור",
     "No earlier versions available" : "אין גרסאות קודמות זמינות",
     "More versions …" : "גרסאות נוספות…"
-},"pluralForm" :"nplurals=2; plural=(n != 1);"
+},"pluralForm" :"nplurals=4; plural=(n==1 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ 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 464d43af1c9e8762c7adc6d7b0429f98be7f3783..09bb4d37b24abd1cfe3b6fa79985a81a4f39d8a6 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 89e9436c5d87b4da82c2928571e1ed90ec81d08f..73162f3c5000990ab602664aadfa0fb55ff03932 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 181fe6322e2d2226a2be5212ed988c319e781885..44edbb5f9a7f7f785a2d84cae3cf0721c4c4e790 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 && n>= 0) ? 1);");
diff --git a/apps/files_versions/l10n/kn.json b/apps/files_versions/l10n/kn.json
index 56d909779e44e173cecaf9601b0ac20118c613d1..c35ca7272d9e0d280e81cc41eb2ff5f30c548155 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 && n>= 0) ? 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 a38a9657503cfd93a9d067817f0bf9da5d5a7d53..4fcd26deea8501c7fdf0e9d94b483188ab6dff12 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/files_versions/l10n/lt_LT.json b/apps/files_versions/l10n/lt_LT.json
index a8842fc16136f1d7e0d588d757ef1a5fb73f725c..eb1d9c26f79fed650de5e0005361dc0a2ebd6df9 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/files_versions/l10n/sk.js b/apps/files_versions/l10n/sk.js
index 0c06a7bf2396338e8564016b74228165a0b336b7..2c1179e065f9b1c07d265d6823f4d53ff9e1a186 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/files_versions/l10n/sk.json b/apps/files_versions/l10n/sk.json
index 76a4d6f8261fc5efa120875299b41ad69461d9f7..a604e39c5f679afdc081934ab8a555c9a5130451 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/files_versions/l10n/uk.js b/apps/files_versions/l10n/uk.js
index 34a9faedbd5fb5e6555f06ccd2b060b693d91f10..f991bfaf3c4bb053e0ca929506007b613fa6ba32 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/apps/files_versions/l10n/uk.json b/apps/files_versions/l10n/uk.json
index 8bd76ae3526bf2c2c0279a34d12722243144610c..82de0fd456cc18bcb6bb9c6e7d1447b572d863bc 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/apps/oauth2/l10n/cs.js b/apps/oauth2/l10n/cs.js
index 7bdce516054a1e6de2bbd08fdad2b5e37efdac9c..4c768e39ee56ecd056b7ee143fae2886adc36b27 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/oauth2/l10n/cs.json b/apps/oauth2/l10n/cs.json
index 7a76470dbe27a7fc953c32fd24e220829638ad96..a7f0184c74575ac0aa3466eaee95c3b1f9a2661c 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/oauth2/l10n/he.js b/apps/oauth2/l10n/he.js
index 250205239a85c1e8cd1c7481d1635c483ff80fc4..080c8e0b9b3026df3ab1c6f2f80d843fc133fff0 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/oauth2/l10n/he.json b/apps/oauth2/l10n/he.json
index 09505d773023ba05ce046862665d8e5b7665e838..2d1fbe48cbe2327b9519690e324c210c26c7d57f 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/apps/oauth2/l10n/ka_GE.js b/apps/oauth2/l10n/ka_GE.js
index bc15a0bb375a03e99ae8e4a5587585c1b120235c..fcf2da09fd7728eeb66910665eee7fb07a38397b 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 234349103b12630474885fcf13b15c80573f8e98..829461f55de94a2fb86e69fc0c6415455dd23845 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 b93d9063ae27a714c3c05c4144aaa576bee57895..131959033da947e8f8639ff370ba04685c64fb9a 100644
--- a/apps/oauth2/l10n/lt_LT.js
+++ b/apps/oauth2/l10n/lt_LT.js
@@ -10,4 +10,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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/oauth2/l10n/lt_LT.json b/apps/oauth2/l10n/lt_LT.json
index 6b311c7b5cd34a19afc0d26341700da78497e469..5cf8a27de473a018b57784c3cc865149e2a29347 100644
--- a/apps/oauth2/l10n/lt_LT.json
+++ b/apps/oauth2/l10n/lt_LT.json
@@ -7,5 +7,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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/oauth2/l10n/sk.js b/apps/oauth2/l10n/sk.js
index 977ffe779a062d85f13bf7d5c763143e531e765e..7e1d0983c61371dbd435b39f297ffcf62a8edd4b 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/oauth2/l10n/sk.json b/apps/oauth2/l10n/sk.json
index bc0e014f8595c6571b748e4e4bf9b50ee74db577..24f1959e55d6a3ddc9f5821024a32ee1afb5ab37 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/sharebymail/l10n/cs.js b/apps/sharebymail/l10n/cs.js
index 25012c581dddfb26166286738ecd58da4d0427c3..146ffe23e1a63edeaaa6850733a382c6f7a21aa6 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/sharebymail/l10n/cs.json b/apps/sharebymail/l10n/cs.json
index 02f938b830aa7c9787e9ac2fdd0ded0e26baddc8..a4a180957f0383c37b3035133367d2cb25d77615 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/sharebymail/l10n/ka_GE.js b/apps/sharebymail/l10n/ka_GE.js
index 8d2d43afc6ce85f01e4df6e3781941662853821e..81a952c0dc066070270fd885bfdab6dedcb7340d 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 140b8dbb34470c521ca44e0e59d786721d676a42..9699e8c10a23f2f59e61d401c1ffd255ae88a7c6 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 4adcb4242f4b40de62a1952e9edab026074dd371..a15db357e0a8c487077e597b5c3a9b71f48a8ef1 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/sharebymail/l10n/lt_LT.json b/apps/sharebymail/l10n/lt_LT.json
index 61f2ea0994abc77ecb91466e40a3ff0cc5e07b0d..c1dd8bbb85f97836bb1cdaff9e860451acbd666c 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/sharebymail/l10n/sk.js b/apps/sharebymail/l10n/sk.js
index d10d5d49959c0cc351aebee3d54c2912d83c7c92..4fa88544593822014065dfd7a6bf7a498b472a62 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/sharebymail/l10n/sk.json b/apps/sharebymail/l10n/sk.json
index 89f0b8fc2f3161ff761806b849961e4d0704b332..997de521f8a58627f69d0b7576d8899c4c57d728 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/systemtags/l10n/cs.js b/apps/systemtags/l10n/cs.js
index 5fc3ae2ba3c5d9ff7113d3ad85f8e45285be82df..37d563ab4a34f55128807b3566ce9a98eaa4de2a 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/systemtags/l10n/cs.json b/apps/systemtags/l10n/cs.json
index 92addac3ef60734fa6c28291d18ceedfb7cf3ef8..bebe1e0c7185eafe4ae137b5bac285f8849c2f2c 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/systemtags/l10n/he.js b/apps/systemtags/l10n/he.js
index a81468cd559b3ea26b66af68c72edbf54f0d68c0..f1b99d86a66ad0a01e0631377a7ed1d21077551e 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/systemtags/l10n/he.json b/apps/systemtags/l10n/he.json
index 7d3ae53f5f51bb8ef3878041fe5389b8e3ca0cec..ecff1e3bfa5537b026d4ff59bc79485807af88fc 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/apps/systemtags/l10n/ka_GE.js b/apps/systemtags/l10n/ka_GE.js
index ee007fd018943dde5402f917f87ad16a8ccfe460..15b0a1657cb947daf050b84b1d1c7ab63f83c149 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 7895041ae1fbe8673a2ee89c852873f2192e898e..6a3a281fe735c6ebcc82e86dc9db2c12f976cb6b 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 daf26d2c3896f68c492771c0a6b35e6c2d7f0949..8fe84801a8f86465f543dcdeb15253d5b7e0b056 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/systemtags/l10n/lt_LT.json b/apps/systemtags/l10n/lt_LT.json
index 37296ec4186629d8d9e9b95b9c70648a433d7e9d..c6d1fec960e013d10d48181df67c5b8ff99737ce 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/systemtags/l10n/sk.js b/apps/systemtags/l10n/sk.js
index 77ddf39e4bb49b54efb206c840c8239052f4c566..595a382cc5e0c55b19b16c67c727e514acf75083 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/systemtags/l10n/sk.json b/apps/systemtags/l10n/sk.json
index a4d4bb322649baa4e42f42f0113808547fd514ca..dc676bbc4afe69637a237149c57a4b74efa9136f 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/theming/l10n/cs.js b/apps/theming/l10n/cs.js
index 3d56fef0d2e496575a3b9c01dca8245951811938..98ceb010505e5eea0a4036fe5f75cd502bde481c 100644
--- a/apps/theming/l10n/cs.js
+++ b/apps/theming/l10n/cs.js
@@ -37,4 +37,4 @@ OC.L10N.register(
     "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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/theming/l10n/cs.json b/apps/theming/l10n/cs.json
index 6040528d3da74fec3d0f4633b34ac71578ef710a..e33d584fce9d9401d0aa03a2b6bc38b550fa0503 100644
--- a/apps/theming/l10n/cs.json
+++ b/apps/theming/l10n/cs.json
@@ -34,5 +34,5 @@
     "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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/theming/l10n/ka_GE.js b/apps/theming/l10n/ka_GE.js
index 9ced9526a926ca7501de9e61bab72747d071196a..3306aae65f07df558941d679207a51092309e259 100644
--- a/apps/theming/l10n/ka_GE.js
+++ b/apps/theming/l10n/ka_GE.js
@@ -37,4 +37,4 @@ OC.L10N.register(
     "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 4f9c81895ea89fee866cd1a6d08217f8867cc09f..2d9d9480be7b81a3b1d2ef00d65b9afadddf6042 100644
--- a/apps/theming/l10n/ka_GE.json
+++ b/apps/theming/l10n/ka_GE.json
@@ -34,5 +34,5 @@
     "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/lt_LT.js b/apps/theming/l10n/lt_LT.js
index 4d5bacf2817b5183cc54f7f54165867aeb93cc49..7ef208f86db914ff795c071605ba121bdef254f4 100644
--- a/apps/theming/l10n/lt_LT.js
+++ b/apps/theming/l10n/lt_LT.js
@@ -42,4 +42,4 @@ OC.L10N.register(
     "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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/theming/l10n/lt_LT.json b/apps/theming/l10n/lt_LT.json
index 2dd75243c9ee7d657efeaaa73f26d4ad2ad9000c..37d478276121aa62cd436c8c062379565bb40dff 100644
--- a/apps/theming/l10n/lt_LT.json
+++ b/apps/theming/l10n/lt_LT.json
@@ -39,5 +39,5 @@
     "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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/theming/l10n/sk.js b/apps/theming/l10n/sk.js
index ef0c289d7a3596a2036947a16b0cba0d8a784e45..b3c5b8571a65b9d34eed50c13cde3cac27e7e52a 100644
--- a/apps/theming/l10n/sk.js
+++ b/apps/theming/l10n/sk.js
@@ -41,4 +41,4 @@ OC.L10N.register(
     "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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/theming/l10n/sk.json b/apps/theming/l10n/sk.json
index 335ecfcc81934b74ee5c07f0c34a73f87cb56077..9a087a7c1f70dba2bf295ff67a269501deed3bea 100644
--- a/apps/theming/l10n/sk.json
+++ b/apps/theming/l10n/sk.json
@@ -38,5 +38,5 @@
     "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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/twofactor_backupcodes/l10n/cs.js b/apps/twofactor_backupcodes/l10n/cs.js
index 6b8ceac654d40c627afd5c00a3862d3895adef7e..17d62e542f811e30b70775e96f2b6a725dd8ae3b 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/twofactor_backupcodes/l10n/cs.json b/apps/twofactor_backupcodes/l10n/cs.json
index c4f01be541896e07a2134542d860035261352eba..9c6307d4f945e485a22a7670474d0f371e8e7782 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ 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 93de0eaee8f537601bbf30db647d72dfe07010a6..94f5802e9bbe85f317fe2cd901836105ef979786 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 f6c95d674b81880778b498c3e244c86f41b838e3..7fc565f633bc0d63b610268ff588be58ba64ab35 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 d81158eb5efa71b23480b1196dcaa283c3728973..85f0bb884a7661aaac7e9f679287e04accd1bef1 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/twofactor_backupcodes/l10n/sk.json b/apps/twofactor_backupcodes/l10n/sk.json
index 230cfa62523dda211941f8547d49a135c5b1171a..4ecb0ac52e6900831e94e0142d866a8078c6d92f 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/updatenotification/l10n/cs.js b/apps/updatenotification/l10n/cs.js
index f060b245894786de42d20c3b78f91cb1daf5a58e..f1e1172da2f04ebbb63e3ffeaebe816f9b59cda7 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/updatenotification/l10n/cs.json b/apps/updatenotification/l10n/cs.json
index 9226c60df94d02a5d764d1b672a49f8b808990a4..7ed8018338e8966502644619f175e38f94244e71 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/updatenotification/l10n/ka_GE.js b/apps/updatenotification/l10n/ka_GE.js
index 5f4d40c12277785e1610141ee2da316cf7b8a15d..6f5dc6e111ee8913f20614d78f966343156df676 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 3ccf4e2a5a80e4c59fa2f48a523728e39ad5ffde..a8a46923c315829a848fb110191b4bd48e1a02e5 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 d644525946a2f65bea4e8a9c76f64c47b696bc77..ec5af957e4ba457ac38f6533789af930669c54ca 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/updatenotification/l10n/lt_LT.json b/apps/updatenotification/l10n/lt_LT.json
index 1ab530e10932beb20ba43612d544afbbe25d5fff..7c43922b62e0c10d2444c2896df3af11843b9694 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/updatenotification/l10n/sk.js b/apps/updatenotification/l10n/sk.js
index b6e93e41e019d9dc8707aa437a27d36977206561..b3575a143f9b880e45dd169c37ad0090172e963f 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/updatenotification/l10n/sk.json b/apps/updatenotification/l10n/sk.json
index b3537282c729646433c6d35ebd818a865ce65a56..495f71e4c9f09e15e17f6c92498b3dfefce64338 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js
index 57cc721a460cbb46fda13768e4ebc5ca19b1ebcd..de915ead291557722b394722ecc1312e78109f62 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json
index e3a01f404844eed24632220fde5157d38ac49f04..d5f5f33822453d151b3848f10ed04e33aca02832 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index c47089e7184930b5ddf7dbc633f4d74840dc5334..659a1793cbe9bd8e2442b1b5fb7e2c3eedbb347d 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 user found_::_%s users found_" : ["אותר %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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index c98905ef12d7bfe9baff504dca0e6470ec74344b..18ec7ef56e08a043811c96022e876a1eb179456c 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 user found_::_%s users found_" : ["אותר %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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ 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 11e68a6ed900f898087b0ee048135d220988f781..61be13b2cec0c911ef4c586b7ee7c21ddabdfc50 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 45ee0df38fdd0f27fefd34301a671906b81285bf..d36cf3558eb18500748de75ec7ac099c13c16940 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 dc42bdabc5c9d4d145f0eef0617432f81b75e039..ba86c852fd83cd3ba107363f9e454e50ba13184f 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/user_ldap/l10n/lt_LT.json b/apps/user_ldap/l10n/lt_LT.json
index a7e70ea6163e317d43ac46be267b6675215cb016..66f96775e4fee188a78c50db1fed93ac09f56867 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js
index a2c723631426fa5cdaa4e8b82c4e7376989e9907..e0e24521ee73d8123048f1efc571cf596f7d608f 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json
index e55264080fcabab77099b55a59bebcf8d3fa3a1f..e0119fafc8d4565f3d8315e33446e80119388b0b 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js
index 00678e0eaeeebb9babeef04769900f3bd01b6386..bb39875effd2249f93e0c203acdd15217b357198 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json
index b7adace6ea60e4a9980bddeeb6f2a412ca198d3d..08dc887c53cbda918f10340b761e02f9e0ac221e 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js
index d5b34773d4bc4b0586940f8088dcc5ae2ab845e8..af4429e9a36e11d21b18d988de89a0f0424dafce 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json
index 923fc6a4004abdb34e215265f20a8f49ce4c50c7..fc56c084c194ad695dd894ee7ec1d83265d0dd4e 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/apps/workflowengine/l10n/fa.js b/apps/workflowengine/l10n/fa.js
index 023c22aca89dbaf87489051157311a8e8e08c3a0..789fe77645fbea95ea2221b82bc102babf691aa5 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 && n>= 0) ? 1);");
diff --git a/apps/workflowengine/l10n/fa.json b/apps/workflowengine/l10n/fa.json
index a2342b3198ce81a462ad942276a3d80107c47711..6607456938b18adaf46fe536d1f8315243b3af48 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/apps/workflowengine/l10n/ka_GE.js b/apps/workflowengine/l10n/ka_GE.js
index f2060064f1c238933ab285a0bd8a2bac12324514..c4feaee0b2e19234885e6f79f2a80e9cce4ce6a8 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 5cf10e819681dd2b8afa774fdb325c930240db95..419cd38beea60aa52223ef56e69e77be3c9bfe3b 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 018745d964a8a2374223ddf015af2ac0f0d7e590..66026d54714526620029ce2e4f9d1d6e894d6c8e 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/apps/workflowengine/l10n/lt_LT.json b/apps/workflowengine/l10n/lt_LT.json
index 4dc641183c6b46e84e6a46fd9b3492adeb7e4a42..3d0b36f5220f02fca496647f1db21b076e5316c1 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/apps/workflowengine/l10n/sk.js b/apps/workflowengine/l10n/sk.js
index 0afe7721b24a742b8589515f215513c350e7c450..a50f5f1d0a0dcc550eb40667c301a02a039d2068 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/apps/workflowengine/l10n/sk.json b/apps/workflowengine/l10n/sk.json
index 6a7dcd9c56ffcc936d4cb1ea7cf35da26c56c01b..9e9981970c742bb99c7c714b19f6680fd27c69ae 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index b5bc8b1dd959b059ba4a3d30019c8c253879bc3b..860818e1f2f0b2f16443ee912d602814579446af 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",
@@ -345,4 +345,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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index 75dc780b6318994c3fa3c95c45c71cf9f18a829f..400cfef0bc5b836ad1f3188e4a308728c8653a33 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",
@@ -342,5 +342,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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/core/l10n/fa.js b/core/l10n/fa.js
index 86f6d10eea9127657e2bdf72fe69d58ed3f2540c..3c5052b51b9537681ef4a8f4f6495460eadb012e 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 && n>= 0) ? 1);");
diff --git a/core/l10n/fa.json b/core/l10n/fa.json
index ffb5b86c4039d42e031baf863b978019247d67d1..6f240892cf748288c257c954ca800de79a4842a9 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/core/l10n/he.js b/core/l10n/he.js
index 2557095f65296713d19cca6d272a180de6e0fd86..9726477ca7e0eca1abde90ad375cdf2fcc87dbbd 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 שניות"],
     "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} התנגשויות קבצים"],
     "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}",
@@ -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 קבצים"],
     "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 שניות."],
     "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} תוצאות חיפוש בתיקיות אחרות"],
     "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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/core/l10n/he.json b/core/l10n/he.json
index d699004afce42da3841e6c5f3732101ff564a3e2..73aba517d28775cf7a67991a721fbf509a50b51d 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 שניות"],
     "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} התנגשויות קבצים"],
     "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}",
@@ -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 קבצים"],
     "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 שניות."],
     "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} תוצאות חיפוש בתיקיות אחרות"],
     "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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/core/l10n/ka_GE.js b/core/l10n/ka_GE.js
index f56f1858730c7f281bed5ba1d2965d5ee4ea510c..dbf37dc28bab3d906fbe8ae543fa44d7fb5d8f9d 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 2c93e76177bc60176aa335855ba4159a373019c2..eeba7a18cd8462ee08feec5c3afd66dba3685a61 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 213f6cb674be1c9b5be74b861c0c78aa1fad0447..9a8b86bdf5e0494fea74289029654be421907083 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index 363c3639e68edaeee134d518ad8a4cef90924cc4..3ade39482177ea5804f1540ab8806fb530cb0e3d 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index c0df39679b44e4e5bf2d2a9cd17d8f802ef9ae8e..2c050f796288914d663fa3cf534580048d50c1d1 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index 19499de938087111a2a90458a36512f67bf45c1b..a48cfc4575fedde8e60b55634013370bad1727a0 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 22bedcc5768ffe1ae435e80cc605efc1c4746352..f52b9c36e2e73b8a70bf46942807368277d4aa9e 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index ee535456ab3f717ad8028f05588e142343bf0dcf..7c2aa74ef76aaa7d47f644f2d325880f30f997df 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index 575b12e59c8ffd4897e40cbed5fdc3a71b5a3391..00881a9839694c30a45da3e16649559ec6f3dbc0 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index c5a613123f927c4da1b55af3c76a73325738bd67..483cf2057dda4799163e0740e773606a660bdc55 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js
index d8c4fc2cbbe55ebaa6b9cc66325726d42c3eb7e9..285a77708141f98db7c9d8e3b37baa50d8ad9d1a 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 && n>= 0) ? 1);");
diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json
index 946e4f2fd427775b40181ea31b67e5ff1be71869..3e2852de30328fd7c7e6fdc9e5ad9625d9d2deaf 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/lib/l10n/he.js b/lib/l10n/he.js
index dc5b4a5ce382c025b975679c9a160a1261472d8a..940d61fe29bdcb80b1b0ed56773139b500fecc8c 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 ימים"],
     "last month" : "חודש שעבר",
     "last year" : "שנה שעברה",
-    "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים"],
+    "_%n year ago_::_%n years ago_" : ["לפני %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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/lib/l10n/he.json b/lib/l10n/he.json
index 38218b4ecc7187d7d24a3a188c4d192f26694d4e..2dcd0166beb725f769a0cbf5d2e2c8eb5c639b1d 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 ימים"],
     "last month" : "חודש שעבר",
     "last year" : "שנה שעברה",
-    "_%n year ago_::_%n years ago_" : ["לפני %n שנה","לפני %n שנים"],
+    "_%n year ago_::_%n years ago_" : ["לפני %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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/lib/l10n/ka_GE.js b/lib/l10n/ka_GE.js
index 4bf2a9506b01a5ff1838fac9267547b0a0be57bf..831a65fcad33d95e8b7c968d4e5cdaabf62aa78a 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 81ba596f14148b82a15c48454aee24522edec48b..63a8f63d50d32477caedcf81cb6de318696f4707 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 e8332f6cfde4430c3d363bfce458f20ffe7d7d9f..4e5d8f1358ad60c980f0efa0af7fccb7f2be8c69 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 && n>= 0) ? 1);");
diff --git a/lib/l10n/kn.json b/lib/l10n/kn.json
index bf547fdd3632442a028cb62c62c1567a31dd6b3e..c095baba5a912f0d7129903c2542c9aaaed2ec88 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js
index 0faa87ebcd090c57bd442bbfc9cf1cb60b9ccf0d..353e1b50d32412f803f285adff67dc3856287df6 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",
@@ -209,4 +209,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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json
index 85e5fbef41fa689d9f4d922d35093d4c74e2eb4a..6932fe3d84994cd45fc25d0388847c580a2bbab4 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",
@@ -206,5 +206,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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js
index 5b5f93ce175e0fb63f236adcb0c43cd7c7c6e633..0651380a19b92706c401da69765bc57fc95b9411 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json
index 107c44a73c39fcb9eb02cd00e9c9e7ef81303e2d..713a5106b655d5885d0a71a5f1909b460418aa61 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js
index d5f0982e1db4913d2d4fb253ab1b5bc16be4698b..e07da8b738f0150b0aa5c169aeaf696ccb04bd6d 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json
index bd4735da5f3425538cd605f68c37380289670a94..0f1c68c1855fa64d154f5b35e654c903a60d6402 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file
diff --git a/settings/l10n/cs.js b/settings/l10n/cs.js
index 6356eccd2e03048c3eb85dc6b855692c7089e81c..008bb827de3489611cba4717066c2e77004903c1 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;");
diff --git a/settings/l10n/cs.json b/settings/l10n/cs.json
index 323735fa943d540ae15eda56c06035d3f92e6d05..919c70fde41e1013b2c8fe45eea6a31bd50b8a4d 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 < 10 && n % 1 == 0) ? 1 : (n < 9999 && n >= 10 && n % 1 == 0) ? 3 : (n % 1 != 0) : 4;"
 }
\ No newline at end of file
diff --git a/settings/l10n/fa.js b/settings/l10n/fa.js
index f8b29c78d1bfb30ea0692c36466a9a8fe08c5855..1debc05852f8e857de88a68423c8eb6ad9ac3140 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 && n>= 0) ? 1);");
diff --git a/settings/l10n/fa.json b/settings/l10n/fa.json
index 71232d63c6629278a6841f791375a50829046c3f..0c17e065136ee14c14fd0934048ba3b9b4378cc7 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/settings/l10n/he.js b/settings/l10n/he.js
index 911e68e79d5cc62799997d27362beb702c4203c4..d163393908ef891b10d319b6c6d481a9c83d6140 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);");
diff --git a/settings/l10n/he.json b/settings/l10n/he.json
index 87594941a678fca971a51c71fd68bc478bc6fcd5..058ab60965e90dbba352a62e6f3f9c8d3f2e6bc6 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 ? 1: n == 2 ? 2 : (n % 10 == 0 and n > 10) ? 4);"
 }
\ No newline at end of file
diff --git a/settings/l10n/ka_GE.js b/settings/l10n/ka_GE.js
index 941f992a542c6b613637b75241d5a38b8d46c874..e60026a038250c60a892b8c47d0609f8603be587 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 03cce24cdee10df868cc6ae681bea258d58044b5..1d95a1ab57fdef6fc276c999402ae5574cdd382a 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 5bd4ca353fd8ca85a8a42f1576aefad4e0d16068..ace1620f468c61a8dd23f5b825d4fddef9cbc6eb 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 && n>= 0) ? 1);");
diff --git a/settings/l10n/kn.json b/settings/l10n/kn.json
index aa41e3f4abab7d0ad38aad0bef77b84b191b55df..3eca4b7534dd3765a3523666f4f13e32f81810c0 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 && n>= 0) ? 1);"
 }
\ No newline at end of file
diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js
index e3b4118790d582408f1595815ef8ce75ac182abc..1d77beffd340887ee43d71d8fe293f20fec86ecd 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);");
diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json
index 5b9b00504db6f9854d595378dbda5168f935d2f3..8c1f618375e2fa00ef76239655cc95b761efa26b 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) ? 1 : (n%10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 3 : n % 1 != 0 ? 4);"
 }
\ No newline at end of file
diff --git a/settings/l10n/sk.js b/settings/l10n/sk.js
index 9c3c47b32a3a8e46b49878bae603095528ca9ca6..083b83f89458dc26f0497d72a3fd76585865afcc 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);");
diff --git a/settings/l10n/sk.json b/settings/l10n/sk.json
index b55f6b5b7190a3d8e26bbb18cbdbd3fdc010f5be..701b828a054d77cc509898c3f767a6aad3cd2b94 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 ? 4: n==1 ? 1: n % 1 == 0 && n>=2 && n<=4 ? 3);"
 }
\ No newline at end of file
diff --git a/settings/l10n/uk.js b/settings/l10n/uk.js
index d4c0917ccf07643e421d1205a0cf3d4d3f502ead..4392ff6f4319b75d01995fc69451ccf341c784ab 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));");
diff --git a/settings/l10n/uk.json b/settings/l10n/uk.json
index 9cfeceadc3c448822a075ae2ea9845d1e45d316d..6ce4a155707b373361bbc1e9d143a91b2cbcbd5e 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) ? 1 : ( n %1 == 0 && ( n >= 2 && n <=4) && ( n % 100 <12 || n % 100 > 14)) ? 3 : ( n % 1 ==0 && (n% 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14));"
 }
\ No newline at end of file