diff --git a/package.json b/package.json
index 210f2b3c3d..79208d22f8 100644
--- a/package.json
+++ b/package.json
@@ -51,14 +51,14 @@
"nodebb-plugin-composer-default": "4.0.2",
"nodebb-plugin-dbsearch": "1.0.1",
"nodebb-plugin-emoji-extended": "1.1.0",
- "nodebb-plugin-emoji-one": "1.1.4",
- "nodebb-plugin-markdown": "5.1.5",
+ "nodebb-plugin-emoji-one": "1.1.5",
+ "nodebb-plugin-markdown": "5.1.6",
"nodebb-plugin-mentions": "1.1.2",
"nodebb-plugin-soundpack-default": "0.1.6",
"nodebb-plugin-spam-be-gone": "0.4.6",
"nodebb-rewards-essentials": "0.0.8",
"nodebb-theme-lavender": "3.0.13",
- "nodebb-theme-persona": "4.0.146",
+ "nodebb-theme-persona": "4.0.148",
"nodebb-theme-vanilla": "5.0.78",
"nodebb-widget-essentials": "2.0.9",
"nodemailer": "2.0.0",
@@ -118,4 +118,4 @@
"url": "https://github.com/barisusakli"
}
]
-}
\ No newline at end of file
+}
diff --git a/public/language/ar/error.json b/public/language/ar/error.json
index 3bf837409e..a302d3af7e 100644
--- a/public/language/ar/error.json
+++ b/public/language/ar/error.json
@@ -40,6 +40,12 @@
"category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/bg/error.json b/public/language/bg/error.json
index e802137ceb..686b68fa5b 100644
--- a/public/language/bg/error.json
+++ b/public/language/bg/error.json
@@ -1,5 +1,5 @@
{
- "invalid-data": "Невалидни данни",
+ "invalid-data": "Грешни данни",
"not-logged-in": "Изглежда не сте влезли в системата.",
"account-locked": "Вашият акаунт беше заключен временно",
"search-requires-login": "Търсенето изисква акаунт – моля, влезте или се регистрирайте.",
@@ -40,6 +40,12 @@
"category-disabled": "Категорията е изключена",
"topic-locked": "Темата е заключена",
"post-edit-duration-expired": "Можете да редактирате публикациите си до %1 секунда/и, след като ги пуснете",
+ "post-edit-duration-expired-minutes": "Можете да редактирате публикациите си до %1 минута/и, след като ги пуснете",
+ "post-edit-duration-expired-minutes-seconds": "Можете да редактирате публикациите си до %1 минута/и и %2 секунда/и, след като ги пуснете",
+ "post-edit-duration-expired-hours": "Можете да редактирате публикациите си до %1 час(а), след като ги пуснете",
+ "post-edit-duration-expired-hours-minutes": "Можете да редактирате публикациите си до %1 час(а) и %2 минута/и, след като ги пуснете",
+ "post-edit-duration-expired-days": "Можете да редактирате публикациите си до %1 ден(а), след като ги пуснете",
+ "post-edit-duration-expired-days-hours": "Можете да редактирате публикациите си до %1 ден(а) и %2 час(а), след като ги пуснете",
"content-too-short": "Моля, въведете по-дълъг текст на публикацията. Публикациите трябва да съдържат поне %1 символ(а).",
"content-too-long": "Моля, въведете по-кратък текст на публикацията. Публикациите трябва да съдържат не повече от %1 символ(а).",
"title-too-short": "Моля, въведете по-дълго заглавие. Заглавията трябва да съдържат поне %1 символ(а).",
diff --git a/public/language/bn/error.json b/public/language/bn/error.json
index 9ab8ec0dda..ed7079bf49 100644
--- a/public/language/bn/error.json
+++ b/public/language/bn/error.json
@@ -40,6 +40,12 @@
"category-disabled": "বিভাগটি নিষ্ক্রিয়",
"topic-locked": "টপিক বন্ধ",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/cs/category.json b/public/language/cs/category.json
index 223da66ff3..4df50da536 100644
--- a/public/language/cs/category.json
+++ b/public/language/cs/category.json
@@ -2,7 +2,7 @@
"category": "Kategorie",
"subcategories": "Podkategorie",
"new_topic_button": "Nové téma",
- "guest-login-post": "Přihlásit se pro přidání",
+ "guest-login-post": "Přihlásit se pro přispívání",
"no_topics": "V této kategorii zatím nejsou žádné příspěvky. Můžeš být první!",
"browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl",
diff --git a/public/language/cs/error.json b/public/language/cs/error.json
index dff0f5465c..1dedd003da 100644
--- a/public/language/cs/error.json
+++ b/public/language/cs/error.json
@@ -22,11 +22,11 @@
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
- "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.",
+ "confirm-email-already-sent": "Potvrzovací email již byl odeslán. Vyčkejte %1 minut pokud chcete odeslat další.",
"sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
"username-too-short": "Uživatelské jméno je příliš krátké",
"username-too-long": "Uživatelské jméno je příliš dlouhé",
- "password-too-long": "Password too long",
+ "password-too-long": "Heslo je příliš dlouhé",
"user-banned": "Uživatel byl zakázán",
"user-too-new": "Sorry, you are required to wait %1 second(s) before making your first post",
"blacklisted-ip": "Sorry, your IP address has been banned from this community. If you feel this is in error, please contact an administrator.",
@@ -40,6 +40,12 @@
"category-disabled": "Kategorie zakázána",
"topic-locked": "Téma uzamčeno",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/da/error.json b/public/language/da/error.json
index ae1c3278db..fd0b021221 100644
--- a/public/language/da/error.json
+++ b/public/language/da/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategorien er deaktiveret",
"topic-locked": "Tråden er låst",
"post-edit-duration-expired": "Du kan kun redigere indlæg i %1 sekund(er) efter indlæg",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Venligst indtast et længere indlæg. Indlægget skal mindst indeholde %1 karakter(er).",
"content-too-long": "Venligt indtast et kortere indlæg. Indlæg kan ikke være længere end %1 karakter(er).",
"title-too-short": "Venligst indtast en længere titel. Titlen skal mindst indeholde %1 karakter(er).",
diff --git a/public/language/de/error.json b/public/language/de/error.json
index 524d0f786d..a1a71d8827 100644
--- a/public/language/de/error.json
+++ b/public/language/de/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategorie ist deaktiviert",
"topic-locked": "Thema ist gesperrt",
"post-edit-duration-expired": "Entschuldigung, du darfst Beiträge nur %1 Sekunde(n) nach dem Veröffentlichen editieren.",
+ "post-edit-duration-expired-minutes": "Du darfst Beiträge lediglich innerhalb von %1 Minuten/n nach dem Erstellen editieren",
+ "post-edit-duration-expired-minutes-seconds": "Du darfst Beiträge lediglich innerhalb von %1 Minuten/n und %2 Sekunden nach dem Erstellen editieren",
+ "post-edit-duration-expired-hours": "Du darfst Beiträge lediglich innerhalb von %1 Stunde/n nach dem Erstellen editieren",
+ "post-edit-duration-expired-hours-minutes": "Du darfst Beiträge lediglich innerhalb von %1 Stunde/n und %2 Minute/n nach dem Erstellen editieren",
+ "post-edit-duration-expired-days": "Du darfst Beiträge lediglich innerhalb von %1 Tag/en nach dem Erstellen editieren",
+ "post-edit-duration-expired-days-hours": "Du darfst Beiträge lediglich innerhalb von %1 Tag/en und %2 Stunde/n nach dem Erstellen editieren",
"content-too-short": "Bitte schreibe einen längeren Beitrag. Beiträge sollten mindestens %1 Zeichen enthalten.",
"content-too-long": "Bitte schreibe einen kürzeren Beitrag. Beiträge können nicht länger als %1 Zeichen sein.",
"title-too-short": "Bitte gebe einen längeren Titel ein. Ein Titel muss mindestens %1 Zeichen enthalten.",
diff --git a/public/language/el/error.json b/public/language/el/error.json
index 568829bb63..917c04c4cf 100644
--- a/public/language/el/error.json
+++ b/public/language/el/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Η κατηγορία έχει απενεργοποιηθεί",
"topic-locked": "Το θέμα έχει κλειδωθεί",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/en@pirate/error.json b/public/language/en@pirate/error.json
index 66eb9b04ba..20979833e9 100644
--- a/public/language/en@pirate/error.json
+++ b/public/language/en@pirate/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Category disabled",
"topic-locked": "Topic Locked",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json
index cfbebc4c0a..7e239fb5e2 100644
--- a/public/language/en_GB/error.json
+++ b/public/language/en_GB/error.json
@@ -79,6 +79,7 @@
"cant-ban-other-admins": "You can't ban other admins!",
"cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin",
+ "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.",
"invalid-image-type": "Invalid image type. Allowed types are: %1",
"invalid-image-extension": "Invalid image extension",
diff --git a/public/language/en_US/error.json b/public/language/en_US/error.json
index 66eb9b04ba..20979833e9 100644
--- a/public/language/en_US/error.json
+++ b/public/language/en_US/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Category disabled",
"topic-locked": "Topic Locked",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/es/error.json b/public/language/es/error.json
index 91303b3f99..cb5c6d495f 100644
--- a/public/language/es/error.json
+++ b/public/language/es/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Categoría deshabilitada",
"topic-locked": "Tema bloqueado",
"post-edit-duration-expired": "Sólo puedes editar mensajes durante %1 segundo(s) después de haberlo escrito",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Por favor introduzca una publicación más larga. Las publicaciones deben contener al menos %1 caractere(s).",
"content-too-long": "Por favor introduzca un mensaje más corto. Los mensajes no pueden exceder los %1 caractere(s).",
"title-too-short": "Por favor introduzca un título más largo. Los títulos deben contener al menos %1 caractere(s).",
diff --git a/public/language/et/error.json b/public/language/et/error.json
index 62e3902f8a..edceafddbf 100644
--- a/public/language/et/error.json
+++ b/public/language/et/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategooria keelatud",
"topic-locked": "Teema lukustatud",
"post-edit-duration-expired": "Te peate ootama %1 sekund(it), enne kui oma postitust muudate.",
+ "post-edit-duration-expired-minutes": "Teil on lubatud muuta oma postitusi vaid %1 minuti jooksul peale postitamist",
+ "post-edit-duration-expired-minutes-seconds": "Teil on lubatud muuta oma postitusi vaid %1 minuti %2 sekundi jooksul peale postitamist",
+ "post-edit-duration-expired-hours": "Teil on lubatud muuta oma postitusi vaid %1 tunni jooksul peale postitamist",
+ "post-edit-duration-expired-hours-minutes": "Teil on lubatud muuta oma postitusi vaid %1 tunni %2 minuti jooksul peale postitamist",
+ "post-edit-duration-expired-days": "Teil on lubatud muuta oma postitusi vaid %1 päeva jooksul peale postitamist",
+ "post-edit-duration-expired-days-hours": "Teil on lubatud muuta oma postitusi vaid %1 päeva %2 tunni jooksul peale postitamist",
"content-too-short": "Palun tehke pikem postitus. Postituse pikkus peab olema vähemalt %1 tähemärk(i).",
"content-too-long": "Palun tehke lühem postitus. Postituse pikkus peab olema vähem kui %1 tähemärk(i).",
"title-too-short": "Palun sisesta pikem pealkiri. Pealkirjad ei saa olla lühemad kui %1 tähemärk(i).",
diff --git a/public/language/et/topic.json b/public/language/et/topic.json
index a9024f4db7..998356d44a 100644
--- a/public/language/et/topic.json
+++ b/public/language/et/topic.json
@@ -45,9 +45,9 @@
"watching": "Vaatan",
"not-watching": "Ei vaata",
"ignoring": "Ignoreerin",
- "watching.description": "Notify me of new replies. Show topic in unread.",
- "not-watching.description": "Do not notify me of new replies. Show topic in unread if category is not ignored.",
- "ignoring.description": "Do not notify me of new replies. Do not show topic in unread.",
+ "watching.description": "Teavita mind uutest vastustest. Näita teemat lugemata teemade hulgas.",
+ "not-watching.description": "Ära teavita mind uutest vastustest. Näita teemat lugemata teemade hulgas, kui kategooria on ignoreeritud.",
+ "ignoring.description": "Ära teavita mind uutest vastustest. Ära näita teemat lugemata teemade hulgas.",
"thread_tools.title": "Teema tööriistad",
"thread_tools.markAsUnreadForAll": "Märgi mitte-loetuks",
"thread_tools.pin": "Tõsta esile teema",
diff --git a/public/language/fa_IR/error.json b/public/language/fa_IR/error.json
index 7ee878ae8f..edeaf57d4e 100644
--- a/public/language/fa_IR/error.json
+++ b/public/language/fa_IR/error.json
@@ -40,6 +40,12 @@
"category-disabled": "دسته غیرفعال شد.",
"topic-locked": "موضوع بسته شد.",
"post-edit-duration-expired": "شما تنها می توانید %1 ثانیه پس از فرستادن پست آنرا ویرایش کنید",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "خواهشمندیم پست بلندتری بنویسید. پستها دستکم باید %1 کاراکتر داشته باشند.",
"content-too-long": "لطفا طول مطلب را کوتاه تر کنید. طول پست نمیتواند بیشتر از %1 کاراکتر باشد.",
"title-too-short": "لطفا یک عنوان بلندتر وارد کنید. عنوان باید حداقل %1 کاراکتر داشته باشد.",
diff --git a/public/language/fi/error.json b/public/language/fi/error.json
index 21a027b171..b77c547492 100644
--- a/public/language/fi/error.json
+++ b/public/language/fi/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategoria ei ole käytössä",
"topic-locked": "Aihe lukittu",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Ole hyvä ja syötä pidempi viesti. Sen pitäisi sisältää ainakin %1 merkki(ä).",
"content-too-long": "Ole hyvä ja syötä lyhyempi viesti. Sen voi sisältää vain %1 merkki(ä).",
"title-too-short": "Ole hyä ja syötä pidempi otsikko. Sen pitäisi sisältää anakin %1 merkki(ä).",
diff --git a/public/language/fr/error.json b/public/language/fr/error.json
index 93267ba5e5..bf8d05bfcf 100644
--- a/public/language/fr/error.json
+++ b/public/language/fr/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Catégorie désactivée",
"topic-locked": "Sujet verrouillé",
"post-edit-duration-expired": "Vous ne pouvez modifier un message que %1 seconde(s) après l'avoir posté.",
+ "post-edit-duration-expired-minutes": "Vous ne pouvez éditer un message que %1 minute(s) après l'avoir posté.",
+ "post-edit-duration-expired-minutes-seconds": "Vous ne pouvez éditer un message que %1 minute(s) et %2 seconde(s) après l'avoir posté.",
+ "post-edit-duration-expired-hours": "Vous ne pouvez éditer un message que %1 heure(s) après l'avoir posté.",
+ "post-edit-duration-expired-hours-minutes": "Vous ne pouvez éditer un message que %1 heure(s) et %2 minute(s) après l'avoir posté.",
+ "post-edit-duration-expired-days": "Vous ne pouvez éditer un message que %1 jours(s) après l'avoir posté.",
+ "post-edit-duration-expired-days-hours": "Vous ne pouvez éditer un message que %1 jours(s) et %2 heures(s) après l'avoir posté.",
"content-too-short": "Veuillez entrer un message plus long. %1 caractère(s) minimum.",
"content-too-long": "Veuillez poster un message plus cours. Les messages ne peuvent être plus long que %1 caractère(s).",
"title-too-short": "Veuillez entrer un titre plus long. %1 caractère(s) minimum.",
diff --git a/public/language/fr/search.json b/public/language/fr/search.json
index cfbabc6dd0..b371aa3097 100644
--- a/public/language/fr/search.json
+++ b/public/language/fr/search.json
@@ -7,7 +7,7 @@
"titles-posts": "Titres et Messages",
"posted-by": "Posté par",
"in-categories": "Dans les catégories",
- "search-child-categories": "Chercher les sous catégories",
+ "search-child-categories": "Rechercher également dans les sous catégories",
"reply-count": "Nombre de réponses",
"at-least": "Au moins",
"at-most": "Au plus",
diff --git a/public/language/gl/error.json b/public/language/gl/error.json
index 910ae77dfd..78aa915d91 100644
--- a/public/language/gl/error.json
+++ b/public/language/gl/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Categoría deshabilitada",
"topic-locked": "Tema Pechado",
"post-edit-duration-expired": "Só podes editar as publicacións %1 segundo(s) despois de envialas. ",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Por favor, introduce unha publicación máis longa. Debe conter %1 carácter(es) como mínimo.",
"content-too-long": "Por favor, introduce unha publicación máis curta. As publicacións non poden conter máis de %1 carácter(es).",
"title-too-short": "Por favor, introduce un título máis longo. Os títulos deben conter %1 carácter(es) como mínimo.",
diff --git a/public/language/he/error.json b/public/language/he/error.json
index 28c0d099fe..298d413201 100644
--- a/public/language/he/error.json
+++ b/public/language/he/error.json
@@ -40,6 +40,12 @@
"category-disabled": "קטגוריה לא פעילה",
"topic-locked": "נושא נעול",
"post-edit-duration-expired": "אתה רשאי לערוך פוסטים רק ל-%1 שניות לאחר הפרסום",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "אנא הכנס פוסט ארוך יותר. פוסטים חייבים להכיל לפחות %1 תווים.",
"content-too-long": "אנא הכנס פוסט קצר יותר. פוסטים חייבים להיות קצרים יותר מ-%1 תווים.",
"title-too-short": "אנא הכנס כותרת ארוכה יותר. כותרות חייבות להכיל לפחות %1 תווים.",
diff --git a/public/language/hu/error.json b/public/language/hu/error.json
index b629bd7e64..d1912b9a1d 100644
--- a/public/language/hu/error.json
+++ b/public/language/hu/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategória kikapcsolva",
"topic-locked": "Téma lezárva",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/id/error.json b/public/language/id/error.json
index a178804439..e41da125c3 100644
--- a/public/language/id/error.json
+++ b/public/language/id/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategori ditiadakan",
"topic-locked": "Topik dikunci",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/it/error.json b/public/language/it/error.json
index 4f8a110bc4..2c4802ca47 100644
--- a/public/language/it/error.json
+++ b/public/language/it/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Categoria disabilitata",
"topic-locked": "Discussione Bloccata",
"post-edit-duration-expired": "Ti è consentito modificare un post per %1 secondi dopo averlo inviato",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Inserisci un testo più lungo. Il messaggio deve contenere almeno %1 caratteri.",
"content-too-long": "Inserisci un post più breve. I post non possono essere più lunghi di %1 caratteri.",
"title-too-short": "Inserisci un titolo più lungo. I titoli devono contenere almeno %1 caratteri.",
diff --git a/public/language/ja/error.json b/public/language/ja/error.json
index c8e0d84b9b..a42eaa0fde 100644
--- a/public/language/ja/error.json
+++ b/public/language/ja/error.json
@@ -40,6 +40,12 @@
"category-disabled": "この板は無効された",
"topic-locked": "スレッドがロックされた",
"post-edit-duration-expired": "あなたが%1秒後に投稿を編集する事が許されます",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "より長く投稿を書いて下さい。投稿にはせめて%1文字が必要です。",
"content-too-long": "より短く投稿を書いて下さい。投稿が%1文字以上が許されません。",
"title-too-short": "より長くタイトルを書いて下さい。タイトルはせめて%1文字が必要です。",
diff --git a/public/language/ko/error.json b/public/language/ko/error.json
index cf8c9346e9..e4539ed911 100644
--- a/public/language/ko/error.json
+++ b/public/language/ko/error.json
@@ -40,6 +40,12 @@
"category-disabled": "비활성화된 카테고리입니다.",
"topic-locked": "잠긴 주제입니다.",
"post-edit-duration-expired": "게시물의 수정은 작성한 시간으로부터 %1초 후에 가능합니다.",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "게시물의 내용이 너무 짧습니다. 내용은 최소 %1자 이상이어야 합니다.",
"content-too-long": "게시물의 내용이 너무 깁니다. 내용은 최대 %1자 이내로 작성할 수 있습니다.",
"title-too-short": "제목이 너무 짧습니다. 제목은 최소 %1자 이상이어야 합니다.",
diff --git a/public/language/lt/error.json b/public/language/lt/error.json
index 735aedea42..2424628cb8 100644
--- a/public/language/lt/error.json
+++ b/public/language/lt/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategorija išjungta",
"topic-locked": "Tema užrakinta",
"post-edit-duration-expired": "Jums galima redaguoti pranešims tik %1 sekunde(s) po parašymo",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Prašome parašyti ilgesni pranešimą. Pranešimas turi sudaryti mažiausiai %1 simboli(us)",
"content-too-long": "Prašome parašyti trumpesnį pranešimą. Pranešimas negali sudaryti daugiau %1 simboli(us)",
"title-too-short": "Prašome įvesti ilgesni pavadinimą. Pavadinimas turi sudaryti mažiausiai %1 simboli(us)",
diff --git a/public/language/ms/error.json b/public/language/ms/error.json
index 790970710b..65b9cb304d 100644
--- a/public/language/ms/error.json
+++ b/public/language/ms/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategori dilumpuhkan",
"topic-locked": "Topik Dikunci",
"post-edit-duration-expired": "Anda hanya dibenarkan menyunting kiriman selepas %1 saat() berlalu",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Sila masukkan kiriman yang lebih panjang. Kiriman mesti mengandungi sekurang-kurangnya %1 aksara().",
"content-too-long": "Sila masukkan kiriman yang lebih ringkas. Kiriman mesti mengandungi tidak lebih %1 aksara().",
"title-too-short": "Sila masukkan tajuk yang lebih panjang. Tajuk mesti mengandungi sekurang-kurangnya %1 aksara().",
diff --git a/public/language/nb/error.json b/public/language/nb/error.json
index 5ebe7f9b86..e3270eeab4 100644
--- a/public/language/nb/error.json
+++ b/public/language/nb/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategori deaktivert",
"topic-locked": "Emne låst",
"post-edit-duration-expired": "Du har bare lov til å redigere innlegg i %1 sekund(er) etter at det er sendt",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Vennligst skriv et lengre innlegg. Innlegg må inneholde minst %1 tegn.",
"content-too-long": "Vennligst skriv et kortere innlegg. Innlegg kan ikke være lengre enn %1 tegn.",
"title-too-short": "Vennligst skriv en lengre tittel. Titler må inneholde minst %1 tegn.",
diff --git a/public/language/nl/error.json b/public/language/nl/error.json
index a469d872a5..89957ef654 100644
--- a/public/language/nl/error.json
+++ b/public/language/nl/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Categorie uitgeschakeld",
"topic-locked": "Onderwerp gesloten",
"post-edit-duration-expired": "Het is slechts toegestaan om binnen %1 seconde(n) na plaatsen van het bericht, deze te bewerken.",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Geef wat meer inhoud aan een bericht! Berichten dienen uit minimaal %1 teken(s) te bestaan.",
"content-too-long": "Kort het bericht wat in, het aantal gebruikte tekens overschrijdt het ingestelde limiet want berichten mogen niet meer dan %1 teken(s) bevatten.",
"title-too-short": "Geef een titel op die uit meer tekens bestaat. Titels dienen ten minste uit %1 teken(s) te bestaan.",
diff --git a/public/language/pl/error.json b/public/language/pl/error.json
index 46bee2204a..f9437c5e8a 100644
--- a/public/language/pl/error.json
+++ b/public/language/pl/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategoria wyłączona.",
"topic-locked": "Temat Zablokowany",
"post-edit-duration-expired": "Możesz edytować posty tylko przez %1 sekund(y) po ich napisaniu",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Prosimy wpisać dłuższy post. Posty powinny zawierać co najmniej %1 znaków.",
"content-too-long": "Prosimy wpisać krótszy post. Posty nie mogą zawierać więcej niż %1 znaków.",
"title-too-short": "Prosimy podać dłuższy tytuł. Tytuły powinny zawierać co najmniej %1 znaków.",
diff --git a/public/language/pt_BR/error.json b/public/language/pt_BR/error.json
index 06dc8588cd..4b7d42c828 100644
--- a/public/language/pt_BR/error.json
+++ b/public/language/pt_BR/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Categoria desativada",
"topic-locked": "Tópico Trancado",
"post-edit-duration-expired": "Você só pode editar posts %1 segundo(s) após postar.",
+ "post-edit-duration-expired-minutes": "Você pode apenas editar posts por %1 minuto(s) após postar",
+ "post-edit-duration-expired-minutes-seconds": "Você pode apenas editar posts por %1 minuto(s) e %2 segundo(s) após postar",
+ "post-edit-duration-expired-hours": "Você pode apenas editar posts por %1 hora(s) após postar",
+ "post-edit-duration-expired-hours-minutes": "Você pode apenas editar posts por %1 hora(s) e %2 minuto(s) após postar",
+ "post-edit-duration-expired-days": "Você pode apenas editar posts por %1 dia(s) após postar",
+ "post-edit-duration-expired-days-hours": "Você pode apenas editar posts por %1 dia(s) e %2 hora(s) após postar",
"content-too-short": "Por favor digite um post maior. Posts precisam conter ao menos %1 caractere(s).",
"content-too-long": "Por favor digite um post mais curto. Posts não podem ser maiores que %1 caractere(s)",
"title-too-short": "Por favor digite um título maior. Títulos devem conter no mínimo %1 caractere(s)",
diff --git a/public/language/ro/error.json b/public/language/ro/error.json
index 986fbb8f19..5535c7385b 100644
--- a/public/language/ro/error.json
+++ b/public/language/ro/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Categorie dezactivată",
"topic-locked": "Subiect Închis",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/ru/error.json b/public/language/ru/error.json
index 00b8d29a13..3c7c7ea73f 100644
--- a/public/language/ru/error.json
+++ b/public/language/ru/error.json
@@ -14,8 +14,8 @@
"invalid-password": "Неверный пароль",
"invalid-username-or-password": "Пожалуйста, укажите и имя пользователя и пароль",
"invalid-search-term": "Неверный поисковой запрос",
- "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
- "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",
+ "csrf-invalid": "Нам не удалось Вас найти из-за просроченной сессии. Попробуйте еще раз.",
+ "invalid-pagination-value": "Неверное значение страницы. Значение должно быть в диапазоне от %1 до %2",
"username-taken": "Имя пользователя занято",
"email-taken": "Email занят",
"email-not-confirmed": "Ваш email не подтвержден, нажмите для подтверждения.",
@@ -23,7 +23,7 @@
"no-email-to-confirm": "Этот форум требует подтверждения по E-mail. Нажмите здесь для ввода E-mail.",
"email-confirm-failed": "Мы не можем подтвердить Ваш E-mail, попробуйте позже.",
"confirm-email-already-sent": "Сообщение для подтверждения уже выслано на E-mail. Повторная отправка возможна через %1 мин.",
- "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
+ "sendmail-not-found": "Не можем найти sendmail, убедитесь что он установлен и управляется NodeBB.",
"username-too-short": "Слишком короткое имя пользователя",
"username-too-long": "Имя пользователя слишком длинное",
"password-too-long": "Пароль слишком длинный",
@@ -40,6 +40,12 @@
"category-disabled": "Категория отключена",
"topic-locked": "Тема закрыта",
"post-edit-duration-expired": "Сообщения можно редактировать только в течение %1 секунд(ы) после опубликования",
+ "post-edit-duration-expired-minutes": "Вы можете редактировать посты только в течение %1 минут(ы) после публикации.",
+ "post-edit-duration-expired-minutes-seconds": "Вы можете редактировать сообщение в течение %1 минут(ы) %2 секунд(ы) после публикации.",
+ "post-edit-duration-expired-hours": "Вы можете редактировать сообщения в течение %1 час(а) после публикации.",
+ "post-edit-duration-expired-hours-minutes": "Вы можете редактировать сообщения в течение %1 час(а) %2 минут(ы) после публикации.",
+ "post-edit-duration-expired-days": "Вы можете редактировать сообщения в течение %1 дня(ей) после публикации.",
+ "post-edit-duration-expired-days-hours": "Вы можете редактировать сообщения в течение %1 чдня(ей) и %2 час(а) после публикации.",
"content-too-short": "Слишком короткое сообщение. Минимум символов: %1.",
"content-too-long": "Слишком длинное сообщение. Максимум символов: %1.",
"title-too-short": "Слишком короткое сообщение. Минимум символов: %1.",
@@ -54,7 +60,7 @@
"file-too-big": "Слишком большой файл. Максимальный размер: %1 Кбайт.",
"guest-upload-disabled": "Загрузка для гостей была отключена",
"already-favourited": "Вы уже добавили это сообщение в закладки",
- "already-unfavourited": "You have already unbookmarked this post",
+ "already-unfavourited": "Вы уже убрали из закладок этот пост",
"cant-ban-other-admins": "Вы не можете забанить других администраторов!",
"cant-remove-last-admin": "Вы единственный администратор. Назначьте другого пользователя администратором, прежде чем складывать с себя полномочия админа",
"invalid-image-type": "Неверный формат изображения. Поддерживаемые форматы: %1",
diff --git a/public/language/ru/global.json b/public/language/ru/global.json
index 3c6a09c0b5..c011811dba 100644
--- a/public/language/ru/global.json
+++ b/public/language/ru/global.json
@@ -50,8 +50,8 @@
"topics": "Темы",
"posts": "Сообщения",
"best": "Лучшие",
- "upvoted": "Upvoted",
- "downvoted": "Downvoted",
+ "upvoted": "Повышение рейтинга",
+ "downvoted": "Понижение рейтинга",
"views": "Просмотры",
"reputation": "Репутация",
"read_more": "читать дальше",
@@ -60,12 +60,12 @@
"posted_ago_by": "сообщений %1 от %2",
"posted_ago": "написал %1",
"posted_in": "написал в %1",
- "posted_in_by": "posted in %1 by %2",
+ "posted_in_by": "опубликовано в %1 %2",
"posted_in_ago": "написал в %1 %2",
"posted_in_ago_by": "%3 написал в %1 %2",
"user_posted_ago": "%1 написал %2",
"guest_posted_ago": "Гость написал %1",
- "last_edited_by": "last edited by %1",
+ "last_edited_by": "отредактировано %1",
"norecentposts": "Нет новых сообщений",
"norecenttopics": "Нету новых тем",
"recentposts": "Свежие записи",
diff --git a/public/language/ru/groups.json b/public/language/ru/groups.json
index eeeca0e8fb..53ac0687f2 100644
--- a/public/language/ru/groups.json
+++ b/public/language/ru/groups.json
@@ -41,7 +41,7 @@
"details.hidden": "Скрыто",
"details.hidden_help": "Если включено, группа не будет показываться в списках, а пользователи должны приглашаться вручную",
"details.delete_group": "Удалить группу",
- "details.private_system_help": "Private groups is disabled at system level, this option does not do anything",
+ "details.private_system_help": "Частные группы отключены на уровне системы, эта опция ничего не даст",
"event.updated": "Настройки группы обновлены",
"event.deleted": "Группа \"%1\" удалена",
"membership.accept-invitation": "Принять приглашение",
diff --git a/public/language/ru/login.json b/public/language/ru/login.json
index 43764ef23b..62a4e64f8a 100644
--- a/public/language/ru/login.json
+++ b/public/language/ru/login.json
@@ -5,7 +5,7 @@
"remember_me": "Запомнить меня",
"forgot_password": "Забыли пароль?",
"alternative_logins": "Войти через",
- "failed_login_attempt": "Login Unsuccessful",
+ "failed_login_attempt": "Некорректный логин",
"login_successful": "Вы успешно вошли!",
"dont_have_account": "Нет акканута?"
}
\ No newline at end of file
diff --git a/public/language/ru/notifications.json b/public/language/ru/notifications.json
index 21c0a3b46c..eae90894d7 100644
--- a/public/language/ru/notifications.json
+++ b/public/language/ru/notifications.json
@@ -16,9 +16,9 @@
"upvoted_your_post_in_multiple": "%1 и %2 другие проголосовали за ваше сообщение в %3",
"moved_your_post": "%1 переместил Ваше сообщение в %2",
"moved_your_topic": "%1 переместил %2",
- "favourited_your_post_in": "%1 has bookmarked your post in %2.",
- "favourited_your_post_in_dual": "%1 and %2 have bookmarked your post in %3.",
- "favourited_your_post_in_multiple": "%1 and %2 others have bookmarked your post in %3.",
+ "favourited_your_post_in": "%1 сделал закладкой Ваш пост в %2.",
+ "favourited_your_post_in_dual": "%1 и %2 добавили в закладки Ваш пост в %3.",
+ "favourited_your_post_in_multiple": "%1 и %2 добавили в закладки Ваш пост в %3.",
"user_flagged_post_in": "%1 пометил сообщение в %2",
"user_flagged_post_in_dual": "%1 и %2 пометили ваше сообщение в %3",
"user_flagged_post_in_multiple": "%1 и %2 другие пометили ваше сообщение %3",
@@ -30,7 +30,7 @@
"user_started_following_you_dual": "%1 и %2 подписались на вас.",
"user_started_following_you_multiple": "%1 и %2 подписались на вас.",
"new_register": "%1 отправил запрос на регистрацию.",
- "new_register_multiple": "There are %1 registration requests awaiting review.",
+ "new_register_multiple": "В очереди %1 заявок на регистрацию.",
"email-confirmed": "Email подтвержден",
"email-confirmed-message": "Спасибо за подтверждение Вашего Email-адреса. Ваш аккаунт активирован.",
"email-confirm-error-message": "Ошибка проверки Email-адреса. Возможно, код неверен, либо у него истек срок действия.",
diff --git a/public/language/ru/pages.json b/public/language/ru/pages.json
index 962dba881c..62ea6d05a0 100644
--- a/public/language/ru/pages.json
+++ b/public/language/ru/pages.json
@@ -33,14 +33,14 @@
"account/posts": "Сообщение от %1",
"account/topics": "Тема создана %1",
"account/groups": "%1 Групп",
- "account/favourites": "%1's Bookmarked Posts",
+ "account/favourites": "%1 постов в закладках",
"account/settings": "Настройки пользователя",
"account/watched": "Тему смотрели %1",
- "account/upvoted": "Posts upvoted by %1",
- "account/downvoted": "Posts downvoted by %1",
+ "account/upvoted": "Рейтинг поста поднят %1",
+ "account/downvoted": "Рейтинг поста снижен %1",
"account/best": "Лучшие сообщения написанные %1",
"confirm": "Email подтвержден",
"maintenance.text": "%1 в настоящее время на обслуживании. Пожалуйста, возвращайтесь позже.",
"maintenance.messageIntro": "Администратор оставил сообщение:",
- "throttled.text": "%1 is currently unavailable due to excessive load. Please come back another time."
+ "throttled.text": "%1 в настоящее время недоступен из-за высокой нагрузки. Пожалуйста, приходите в другой раз."
}
\ No newline at end of file
diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json
index e9ba3b041c..5c882e2719 100644
--- a/public/language/ru/topic.json
+++ b/public/language/ru/topic.json
@@ -26,13 +26,13 @@
"tools": "Опции",
"flag": "Отметить",
"locked": "Закрыт",
- "bookmark_instructions": "Click here to return to the last read post in this thread.",
+ "bookmark_instructions": "Нажмите здесь, чтобы вернуться к последнему прочитанному сообщению в этой теме.",
"flag_title": "Отметить сообщение для модерирования",
"flag_success": "Это сообщение было помечено для модерации",
"deleted_message": "Эта тема была удалена. Только пользователи с правами управления темами могут ее видеть.",
"following_topic.message": "Теперь вы будете получать уведомления при обновлении этой темы.",
"not_following_topic.message": "Вы больше не будете получать уведомления из этой темы.",
- "ignoring_topic.message": "You will no longer see this topic in the unread topics list. You will be notified when you are mentioned or your post is up voted.",
+ "ignoring_topic.message": "Вы больше не будете видеть эту тему в списке непрочитанных тем. Вас уведомят, когда Вас упомянут или проголосуют за Ваш пост.",
"login_to_subscribe": "Пожалуйста зарегистрируйтесь, или войдите под своим аккаунтом, чтобы подписаться на эту тему.",
"markAsUnreadForAll.success": "Тема помечена как непрочитанная для всех.",
"mark_unread": "Отметить как непрочитанное",
@@ -42,12 +42,12 @@
"watch.title": "Сообщать мне об ответах в этой теме",
"unwatch.title": "Не сообщать мне об ответах в этой теме",
"share_this_post": "Поделиться этим Сообщением",
- "watching": "Watching",
- "not-watching": "Not Watching",
+ "watching": "Наблюдать",
+ "not-watching": "Не наблюдать",
"ignoring": "Игнорирование",
- "watching.description": "Notify me of new replies. Show topic in unread.",
- "not-watching.description": "Do not notify me of new replies. Show topic in unread if category is not ignored.",
- "ignoring.description": "Do not notify me of new replies. Do not show topic in unread.",
+ "watching.description": "Сообщить мне о новых ответах. Показать тему в непрочитанных.",
+ "not-watching.description": "Не уведомлять меня о новых ответах. Показать тему в непрочитанных, если категория мной не игнорируется.",
+ "ignoring.description": "Не уведомлять меня о новых ответах. Не отображать тему в непрочитанных.",
"thread_tools.title": "Опции темы",
"thread_tools.markAsUnreadForAll": "Отметить как непрочитанные",
"thread_tools.pin": "Прикрепить тему",
@@ -108,12 +108,12 @@
"newest_to_oldest": "От новых к старым",
"most_votes": "По голосам",
"most_posts": "По количеству ответов",
- "stale.title": "Create new topic instead?",
- "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?",
+ "stale.title": "Создать новую тему вместо этой?",
+ "stale.warning": "Тема, в которую Вы пишите, очень старая. Вы хотите создать новую тему?",
"stale.create": "Создать новую тему",
"stale.reply_anyway": "Всё равно ответить в этой теме",
- "link_back": "Re: [%1](%2)",
+ "link_back": "Ответ: [%1](%2)",
"spam": "Спам",
- "offensive": "Offensive",
- "custom-flag-reason": "Enter a flagging reason"
+ "offensive": "Наступление",
+ "custom-flag-reason": "Введите другую причину"
}
\ No newline at end of file
diff --git a/public/language/ru/unread.json b/public/language/ru/unread.json
index 1317a92a45..421d8d730c 100644
--- a/public/language/ru/unread.json
+++ b/public/language/ru/unread.json
@@ -7,7 +7,7 @@
"all": "Все",
"all_categories": "Все категории",
"topics_marked_as_read.success": "Темы помечены как прочитанные!",
- "all-topics": "All Topics",
- "new-topics": "New Topics",
- "watched-topics": "Watched Topics"
+ "all-topics": "Все темы",
+ "new-topics": "Новые темы",
+ "watched-topics": "Наблюдаемые темы"
}
\ No newline at end of file
diff --git a/public/language/ru/user.json b/public/language/ru/user.json
index 934d3a04da..b72ce13b4e 100644
--- a/public/language/ru/user.json
+++ b/public/language/ru/user.json
@@ -79,9 +79,9 @@
"has_no_posts": "Этот пользователь еще ничего не написал.",
"has_no_topics": "Этот пользователь еще не размещал какие-либо темы.",
"has_no_watched_topics": "Этот пользователь еще не просматривал какие-либо темы.",
- "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.",
- "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.",
- "has_no_voted_posts": "This user has no voted posts",
+ "has_no_upvoted_posts": "Пользователь не поднимал рейтинг ни одному посту.",
+ "has_no_downvoted_posts": "Пользователь не понижал рейтинг ни одному посту.",
+ "has_no_voted_posts": "Пользователь не голосовал за сообщения.",
"email_hidden": "Email скрыт",
"hidden": "скрыто",
"paginate_description": "Разбивать по страницам топики и посты вместо того чтобы выводить бесконечным списком",
@@ -92,19 +92,19 @@
"open_links_in_new_tab": "Открывать внешние ссылки в новых вкладках",
"enable_topic_searching": "Активировать поиск внутри тем",
"topic_search_help": "Если опция включена, поиск в теме будет осуществляться за счёт собственного поиска, который позволит искать во всей теме, а не только в загруженных сообщениях",
- "delay_image_loading": "Delay Image Loading",
- "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
- "scroll_to_my_post": "After posting a reply, show the new post",
+ "delay_image_loading": "Ожидайте загрузки изображения",
+ "image_load_delay_help": "Если включить, изображения в темах не будут загружаться, пока они не появятся в поле зрения.",
+ "scroll_to_my_post": "После отправки ответа, прокрутить страницу до него.",
"follow_topics_you_reply_to": "Следить за темами в которых вы отвечаете",
"follow_topics_you_create": "Следить за темами которые вы создаёте",
- "grouptitle": "Group Title",
+ "grouptitle": "Заголовок группы",
"no-group-title": "Не показывать бейдж",
"select-skin": "Выбрать скин",
"select-homepage": "Укажите главную страницу",
"homepage": "Главная страница",
"homepage_description": "Укажите страницу, которую хотите использовать как главную страницу форума или 'None', что бы использовать страницу по умолчанию.",
- "custom_route": "Custom Homepage Route",
- "custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")",
+ "custom_route": "Другой маршрут главной страницы",
+ "custom_route_help": "Введите название маршрута здесь, без слешей (например, \\\"recent\\\", или \\\"popular\\\")",
"sso.title": "Сервис единого входа",
"sso.associated": "Связан с",
"sso.not-associated": "Нажмите здесь, что бы связать себя с"
diff --git a/public/language/rw/error.json b/public/language/rw/error.json
index 5abd13e7b7..747a82036b 100644
--- a/public/language/rw/error.json
+++ b/public/language/rw/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Icyiciro cyabujijwe",
"topic-locked": "Ikiganiro Cyafungiranywe",
"post-edit-duration-expired": "Wemerewe gusa kugira icyo uhindura ku byo washyizeho nyuma y'amasegonda (isegonda) %1 nyuma yo kubishyiraho",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Gerageza ushyireho ikintu kirekireho. Icyo ushyiraho kigomba kuba kigizwe nibura n'inyuguti (cyangwa ibimenyetso) zigera kuri %1.",
"content-too-long": "Gerageza ushyireho ibintu bigufiyaho. Icyo ushyiraho kigomba kuba kigizwe n'inyuguti (cyangwa ibimenyetso) zirenga %1. ",
"title-too-short": "Gerageza ushyireho umutwe muremureho. Umutwe ugomba kuba ugizwe n'inyuguti (cyangwa ibimenyetso) zigera kuri %1. ",
diff --git a/public/language/sc/error.json b/public/language/sc/error.json
index 66eb9b04ba..20979833e9 100644
--- a/public/language/sc/error.json
+++ b/public/language/sc/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Category disabled",
"topic-locked": "Topic Locked",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/sk/error.json b/public/language/sk/error.json
index 90a82087f1..4b5a94f2aa 100644
--- a/public/language/sk/error.json
+++ b/public/language/sk/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategória je znefunkčená.",
"topic-locked": "Uzamknutá téma",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/sl/error.json b/public/language/sl/error.json
index 37a42a71fa..86e5178815 100644
--- a/public/language/sl/error.json
+++ b/public/language/sl/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategorija onemogočena",
"topic-locked": "Tema zaklenjena",
"post-edit-duration-expired": "Urejanje objave je dovoljeno le %1 sekund po prvi objavi.",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Prosimo napišite daljšo objavo. Objave morajo vsebovati vsaj %1 znak(ov).",
"content-too-long": "Prosimo napišite krajšo objavo. Objave ne smejo vsebovati več kot %1 znak(ov).",
"title-too-short": "Prosimo vnesite daljši naslov. Naslovi morajo vsebovati vsaj %1 znak(ov).",
diff --git a/public/language/sr/error.json b/public/language/sr/error.json
index 3b6c56c969..aa0a6956be 100644
--- a/public/language/sr/error.json
+++ b/public/language/sr/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Category disabled",
"topic-locked": "Тема је закључана",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/sv/error.json b/public/language/sv/error.json
index 28432eb55a..663f466e37 100644
--- a/public/language/sv/error.json
+++ b/public/language/sv/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Kategorin inaktiverad",
"topic-locked": "Ämnet låst",
"post-edit-duration-expired": "Du kan endast ändra inlägg inom %1 sekund(er) efter att ha skickat det",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Skriv ett längre inlägg. Inlägg måste innehålla minst %1 tecken.",
"content-too-long": "Skriv ett kortare inlägg. Inlägg kan inte innehålla mer än %1 tecken.",
"title-too-short": "Skriv en längre rubrik. Rubriker måste innehålla minst %1 tecken.",
diff --git a/public/language/th/error.json b/public/language/th/error.json
index 9bf0093c6b..bba7b6f6ad 100644
--- a/public/language/th/error.json
+++ b/public/language/th/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Category นี้ถูกปิดการใช้งานแล้ว",
"topic-locked": "Topic Locked",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 second(s) after posting",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",
diff --git a/public/language/tr/error.json b/public/language/tr/error.json
index 776523067a..38d253f631 100644
--- a/public/language/tr/error.json
+++ b/public/language/tr/error.json
@@ -14,7 +14,7 @@
"invalid-password": "Geçersiz Şifre",
"invalid-username-or-password": "Lütfen kullanıcı ismi ve parola girin.",
"invalid-search-term": "Geçersiz arama",
- "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
+ "csrf-invalid": "Büyük olasılıkla süresi dolmuş oturum nedeniyle girişinizi geçersiz kıldık. Lütfen tekrar deneyiniz.",
"invalid-pagination-value": "Geçersiz sayfalama değeri, en az %1 ve en fazla %2 olabilir",
"username-taken": "Kullanıcı İsmi Alınmış",
"email-taken": "E-posta Alınmış",
@@ -23,7 +23,7 @@
"no-email-to-confirm": "Bu forum e-posta doğrulaması gerektirir, lütfen buraya bir e-posta adresi girin",
"email-confirm-failed": "E-posta adresinizi doğrulayamıyoruz. Lütfen daha sonra tekrar deneyin.",
"confirm-email-already-sent": "E-mail onayı zaten gönderilmiş, yeni bir onay göndermek için lütfen 1 dakika bekleyin.",
- "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
+ "sendmail-not-found": "Sendmail yürütülemedi, lüften indirildiğinden ve NodeBB kullanıcısı tarafından uygulanabilir olduğundan emin olun.",
"username-too-short": "Kullanıcı ismi çok kısa",
"username-too-long": "Kullanıcı ismi çok uzun.",
"password-too-long": "Parola çok uzun",
@@ -40,6 +40,12 @@
"category-disabled": "Kategori aktif değil",
"topic-locked": "Başlık Kilitli",
"post-edit-duration-expired": "Gönderilen iletiler %1 saniyeden sonra değiştirilemez",
+ "post-edit-duration-expired-minutes": "Gönderildikten %1 dakika(s) sonra iletini düzenlemene izin verilir.",
+ "post-edit-duration-expired-minutes-seconds": "Gönderildikten %1 dakika(s) %2 saniye(s) sonra iletini düzenlemene izin verilir.",
+ "post-edit-duration-expired-hours": "Gönderildikten %1 saat(s) sonra iletini düzenlemene izin verilir.",
+ "post-edit-duration-expired-hours-minutes": "Gönderildikten %1 saat(s) %2 dakika(s) sonra iletini düzenlemene izin verilir.",
+ "post-edit-duration-expired-days": "Gönderildikten %1 gün(s) sonra iletini düzenlemene izin verilir.",
+ "post-edit-duration-expired-days-hours": "Gönderildikten %1 gün(s) %2 saat(s) sonra iletini düzenlemene izin verilir.",
"content-too-short": "Lütfen daha uzun bir ileti girin. En az %1 karakter.",
"content-too-long": "Lütfen daha kısa bir ileti girin. İletiler %1 karakterden uzun olamaz.",
"title-too-short": "Lütfen daha uzun bir başlık girin. Başlıklar en az %1 karakter içermelidir.",
diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json
index ab96d25288..e79c6c3d4e 100644
--- a/public/language/tr/topic.json
+++ b/public/language/tr/topic.json
@@ -32,7 +32,7 @@
"deleted_message": "Bu başlık silindi. Sadece başlık düzenleme yetkisi olan kullanıcılar görebilir.",
"following_topic.message": "Artık bir kullanıcı bu başlığa ileti gönderdiğinde bildirim alacaksınız.",
"not_following_topic.message": "Artık bu başlık için bildirim almayacaksınız.",
- "ignoring_topic.message": "You will no longer see this topic in the unread topics list. You will be notified when you are mentioned or your post is up voted.",
+ "ignoring_topic.message": "Bu başlığı okunmamış başlıklar alanında görmeyeceksin. Eğer bir iletide bahsedilirsen veya iletin oylanırsa bildiri alacaksın.",
"login_to_subscribe": "Lütfen bu iletiyi başlığa üye olmak için giriş yapın.",
"markAsUnreadForAll.success": "Başlık herkes için okunmadı olarak işaretlendi.",
"mark_unread": "Okunmadı olarak işaretle",
diff --git a/public/language/vi/error.json b/public/language/vi/error.json
index 31c13565e9..3174194992 100644
--- a/public/language/vi/error.json
+++ b/public/language/vi/error.json
@@ -40,6 +40,12 @@
"category-disabled": "Danh mục bị khóa",
"topic-locked": "Chủ đề bị khóa",
"post-edit-duration-expired": "Bạn chỉ được phép sửa bài viết sau khi đăng %1 giây.",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "Vui lòng nhập một bài viết dài hơn. Bài viết phải có tối thiểu %1 ký tự.",
"content-too-long": "Vui lòng nhập một bài viết ngắn hơn. Bài viết chỉ có thể có tối đa %1 ký tự.",
"title-too-short": "Vui lòng nhập tiêu đề dài hơn. Tiêu đề phải có tối thiểu %1 ký tự.",
diff --git a/public/language/zh_CN/error.json b/public/language/zh_CN/error.json
index c011152297..0dccf62626 100644
--- a/public/language/zh_CN/error.json
+++ b/public/language/zh_CN/error.json
@@ -40,6 +40,12 @@
"category-disabled": "版块已禁用",
"topic-locked": "主题已锁定",
"post-edit-duration-expired": "您必须在发表 %1 秒后才能修改内容",
+ "post-edit-duration-expired-minutes": "在发表 %1 分钟后才能修改内容",
+ "post-edit-duration-expired-minutes-seconds": "发表 %1 分 %2 秒后才能修改内容",
+ "post-edit-duration-expired-hours": "发表 %1 小时后才能修改内容",
+ "post-edit-duration-expired-hours-minutes": "发表 %1 小时 %2 分钟后才能修改内容",
+ "post-edit-duration-expired-days": "发表 %1 天后才能修改内容",
+ "post-edit-duration-expired-days-hours": "发表 %1 天 %2 小时后才能修改内容",
"content-too-short": "请增添发帖内容,不能少于 %1 个字符。",
"content-too-long": "请删减发帖内容,不能超过 %1 个字符。",
"title-too-short": "请增加标题,不能少于 %1 个字符。",
diff --git a/public/language/zh_TW/error.json b/public/language/zh_TW/error.json
index bb40b11933..dadb7e23a2 100644
--- a/public/language/zh_TW/error.json
+++ b/public/language/zh_TW/error.json
@@ -40,6 +40,12 @@
"category-disabled": "該類別已被關閉",
"topic-locked": "該主題已被鎖定",
"post-edit-duration-expired": "在張貼 %1 秒後,你才能編輯張貼文章",
+ "post-edit-duration-expired-minutes": "You are only allowed to edit posts for %1 minute(s) after posting",
+ "post-edit-duration-expired-minutes-seconds": "You are only allowed to edit posts for %1 minute(s) %2 second(s) after posting",
+ "post-edit-duration-expired-hours": "You are only allowed to edit posts for %1 hour(s) after posting",
+ "post-edit-duration-expired-hours-minutes": "You are only allowed to edit posts for %1 hour(s) %2 minute(s) after posting",
+ "post-edit-duration-expired-days": "You are only allowed to edit posts for %1 day(s) after posting",
+ "post-edit-duration-expired-days-hours": "You are only allowed to edit posts for %1 day(s) %2 hour(s) after posting",
"content-too-short": "請輸入一個長一點的張貼內容。張貼內容長度不能少於 %1 字元。",
"content-too-long": "請輸入一個短一點的張貼內容。張貼內容長度不能超過 %1 字元。",
"title-too-short": "請輸入一個長一點的標題。標題長度不能少於 %1 字元。",
diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js
index 4f452f7b08..4639acaeca 100644
--- a/public/src/ajaxify.js
+++ b/public/src/ajaxify.js
@@ -61,12 +61,12 @@ $(document).ready(function() {
apiXHR.abort();
}
- url = ajaxify.start(url, quiet);
-
if (!window.location.pathname.match(/\/(403|404)$/g)) {
app.previousUrl = window.location.href;
}
+ url = ajaxify.start(url, quiet);
+
$('body').removeClass(ajaxify.data.bodyClass);
$('#footer, #content').removeClass('hide').addClass('ajaxifying');
@@ -303,6 +303,10 @@ $(document).ready(function() {
}
}
+ if (internalLink && $(this).attr('href').endsWith('.rss')) {
+ return;
+ }
+
if (hrefEmpty(this.href) || this.protocol === 'javascript:' || $(this).attr('href') === '#') {
return e.preventDefault();
}
diff --git a/public/src/app.js b/public/src/app.js
index 2f61be6994..93837d6e9a 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -117,7 +117,7 @@ app.cacheBuster = null;
title: '[[global:alert.success]]',
message: message,
type: 'success',
- timeout: timeout ? timeout : 2000
+ timeout: timeout ? timeout : 5000
});
};
@@ -126,7 +126,7 @@ app.cacheBuster = null;
title: '[[global:alert.error]]',
message: message,
type: 'danger',
- timeout: timeout ? timeout : 5000
+ timeout: timeout ? timeout : 10000
});
};
diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js
index 385d5e0ed1..db600a2f55 100644
--- a/public/src/client/account/edit.js
+++ b/public/src/client/account/edit.js
@@ -174,8 +174,9 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator'],
} else {
socket.emit('user.deleteAccount', {}, function(err) {
if (err) {
- app.alertError(err.message);
+ return app.alertError(err.message);
}
+
window.location.href = config.relative_path + '/';
});
}
diff --git a/public/src/client/login.js b/public/src/client/login.js
index ace40db68d..ab8dc0fe8a 100644
--- a/public/src/client/login.js
+++ b/public/src/client/login.js
@@ -57,10 +57,11 @@ define('forum/login', ['csrf', 'translator'], function(csrf, translator) {
// Add "returnTo" data if present
- if (app.previousUrl) {
+ if (app.previousUrl && $('#returnTo').length === 0) {
var returnToEl = document.createElement('input');
returnToEl.type = 'hidden';
returnToEl.name = 'returnTo';
+ returnToEl.id = 'returnTo';
returnToEl.value = app.previousUrl;
$(returnToEl).appendTo(formEl);
}
diff --git a/public/src/utils.js b/public/src/utils.js
index 78e0013c25..a1ce6959a4 100644
--- a/public/src/utils.js
+++ b/public/src/utils.js
@@ -177,7 +177,7 @@
},
fileMimeType: function (path) {
- utils.extensionToMimeType(utils.fileExtension(path));
+ return utils.extensionToMimeType(utils.fileExtension(path));
},
extensionToMimeType: function(extension) {
diff --git a/src/categories/create.js b/src/categories/create.js
index afca6c6b24..dfa722c4f0 100644
--- a/src/categories/create.js
+++ b/src/categories/create.js
@@ -97,14 +97,14 @@ module.exports = function(Categories) {
destination = results.destination;
var tasks = [];
-
+
if (copyParent && utils.isNumber(destination.parentCid)) {
tasks.push(async.apply(db.sortedSetRemove, 'cid:' + destination.parentCid + ':children', toCid));
}
if (copyParent && utils.isNumber(results.source.parentCid)) {
tasks.push(async.apply(db.sortedSetAdd, 'cid:' + results.source.parentCid + ':children', results.source.order, toCid));
- }
+ }
destination.description = results.source.description;
destination.descriptionParsed = results.source.descriptionParsed;
@@ -115,11 +115,11 @@ module.exports = function(Categories) {
destination.numRecentReplies = results.source.numRecentReplies;
destination.class = results.source.class;
destination.imageClass = results.source.imageClass;
-
+
if (copyParent) {
- destination.parentCid = results.source.parentCid || 0;
+ destination.parentCid = results.source.parentCid || 0;
}
-
+
tasks.push(async.apply(db.setObject, 'category:' + toCid, destination));
async.series(tasks, next);
@@ -133,12 +133,7 @@ module.exports = function(Categories) {
};
Categories.copyPrivilegesFrom = function(fromCid, toCid, callback) {
- var privilegeList = [
- 'find', 'read', 'topics:create', 'topics:read', 'topics:reply', 'purge', 'mods',
- 'groups:find', 'groups:read', 'groups:topics:create', 'groups:topics:reply', 'groups:purge', 'groups:moderate'
- ];
-
- async.each(privilegeList, function(privilege, next) {
+ async.each(privileges.privilegeList, function(privilege, next) {
copyPrivilege(privilege, fromCid, toCid, next);
}, callback);
};
diff --git a/src/categories/delete.js b/src/categories/delete.js
index c8a383037e..63f9fe324b 100644
--- a/src/categories/delete.js
+++ b/src/categories/delete.js
@@ -1,10 +1,12 @@
'use strict';
-var async = require('async'),
- db = require('../database'),
- batch = require('../batch'),
- plugins = require('../plugins'),
- topics = require('../topics');
+var async = require('async');
+var db = require('../database');
+var batch = require('../batch');
+var plugins = require('../plugins');
+var topics = require('../topics');
+var privileges = require('../privileges');
+var groups = require('../groups');
module.exports = function(Categories) {
@@ -42,6 +44,11 @@ module.exports = function(Categories) {
'cid:' + cid + ':children',
'category:' + cid
], next);
+ },
+ function(next) {
+ async.each(privileges.privilegeList, function(privilege, next) {
+ groups.destroy('cid:' + cid + ':privileges:' + privilege, next);
+ }, next);
}
], callback);
}
@@ -78,7 +85,7 @@ module.exports = function(Categories) {
}
], next);
}
- ], function(err, results) {
+ ], function(err) {
callback(err);
});
}
diff --git a/src/controllers/unread.js b/src/controllers/unread.js
index 0fc32c390c..82efcd2dd3 100644
--- a/src/controllers/unread.js
+++ b/src/controllers/unread.js
@@ -2,6 +2,7 @@
'use strict';
var async = require('async');
+var querystring = require('querystring');
var categories = require('../categories');
var privileges = require('../privileges');
@@ -47,6 +48,14 @@ unreadController.get = function(req, res, next) {
return next(err);
}
+ data.pageCount = Math.max(1, Math.ceil(data.topicCount / settings.topicsPerPage));
+ data.pagination = pagination.create(page, data.pageCount, req.query);
+
+ if (settings.usePagination && (page < 1 || page > data.pageCount)) {
+ req.query.page = Math.max(1, Math.min(data.pageCount, page));
+ return helpers.redirect(res, '/unread?' + querystring.stringify(req.query));
+ }
+
data.categories = results.watchedCategories.categories;
data.selectedCategory = results.watchedCategories.selectedCategory;
@@ -75,9 +84,6 @@ unreadController.get = function(req, res, next) {
data.querystring = req.query.cid ? ('?cid=' + req.query.cid) : '';
- data.pageCount = Math.max(1, Math.ceil(data.topicCount / settings.topicsPerPage));
- data.pagination = pagination.create(page, data.pageCount, req.query);
-
res.render('unread', data);
});
};
diff --git a/src/favourites.js b/src/favourites.js
index e5d8eb3e0a..543b41af98 100644
--- a/src/favourites.js
+++ b/src/favourites.js
@@ -46,8 +46,7 @@ var meta = require('./meta');
db.sortedSetAdd('users:reputation', newreputation, postData.uid);
}
- adjustPostVotes(postData, uid, type, unvote, function(err, votes) {
- postData.votes = votes;
+ adjustPostVotes(postData, uid, type, unvote, function(err) {
callback(err, {
user: {
reputation: newreputation
@@ -91,11 +90,10 @@ var meta = require('./meta');
if (err) {
return callback(err);
}
- var voteCount = parseInt(results.upvotes, 10) - parseInt(results.downvotes, 10);
-
- posts.updatePostVoteCount(postData, voteCount, function(err) {
- callback(err, voteCount);
- });
+ postData.upvotes = parseInt(results.upvotes, 10);
+ postData.downvotes = parseInt(results.downvotes, 10);
+ postData.votes = postData.upvotes - postData.downvotes;
+ posts.updatePostVoteCount(postData, callback);
});
});
}
diff --git a/src/groups/delete.js b/src/groups/delete.js
index 8e665249a8..ca062b364a 100644
--- a/src/groups/delete.js
+++ b/src/groups/delete.js
@@ -1,9 +1,9 @@
'use strict';
-var async = require('async'),
- plugins = require('../plugins'),
- utils = require('../../public/src/utils'),
- db = require('./../database');
+var async = require('async');
+var plugins = require('../plugins');
+var utils = require('../../public/src/utils');
+var db = require('./../database');
module.exports = function(Groups) {
diff --git a/src/posts.js b/src/posts.js
index c4703f8ae7..8a494be7c7 100644
--- a/src/posts.js
+++ b/src/posts.js
@@ -55,7 +55,9 @@ var plugins = require('./plugins');
if (!post) {
return next();
}
-
+ post.upvotes = parseInt(post.upvotes, 10) || 0;
+ post.downvotes = parseInt(post.downvotes, 10) || 0;
+ post.votes = post.upvotes - post.downvotes;
post.timestampISO = utils.toISOString(post.timestamp);
post.editedISO = parseInt(post.edited, 10) !== 0 ? utils.toISOString(post.edited) : '';
Posts.parsePost(post, next);
@@ -219,14 +221,14 @@ var plugins = require('./plugins');
});
};
- Posts.updatePostVoteCount = function(postData, voteCount, callback) {
+ Posts.updatePostVoteCount = function(postData, callback) {
if (!postData || !postData.pid || !postData.tid) {
return callback();
}
async.parallel([
function (next) {
if (postData.uid) {
- db.sortedSetAdd('uid:' + postData.uid + ':posts:votes', voteCount, postData.pid, next);
+ db.sortedSetAdd('uid:' + postData.uid + ':posts:votes', postData.votes, postData.pid, next);
} else {
next();
}
@@ -240,12 +242,12 @@ var plugins = require('./plugins');
if (parseInt(mainPid, 10) === parseInt(postData.pid, 10)) {
return next();
}
- db.sortedSetAdd('tid:' + postData.tid + ':posts:votes', voteCount, postData.pid, next);
+ db.sortedSetAdd('tid:' + postData.tid + ':posts:votes', postData.votes, postData.pid, next);
}
], next);
},
function (next) {
- Posts.setPostField(postData.pid, 'votes', voteCount, next);
+ Posts.setPostFields(postData.pid, {upvotes: postData.upvotes, downvotes: postData.downvotes}, next);
}
], function(err) {
callback(err);
diff --git a/src/posts/create.js b/src/posts/create.js
index 041d662915..e84fdaaf3d 100644
--- a/src/posts/create.js
+++ b/src/posts/create.js
@@ -1,23 +1,24 @@
'use strict';
-var async = require('async'),
- _ = require('underscore'),
+var async = require('async');
+var _ = require('underscore');
- meta = require('../meta'),
- db = require('../database'),
- plugins = require('../plugins'),
- user = require('../user'),
- topics = require('../topics'),
- categories = require('../categories');
+var meta = require('../meta');
+var db = require('../database');
+var plugins = require('../plugins');
+var user = require('../user');
+var topics = require('../topics');
+var categories = require('../categories');
module.exports = function(Posts) {
+
Posts.create = function(data, callback) {
// This is an internal method, consider using Topics.reply instead
- var uid = data.uid,
- tid = data.tid,
- content = data.content.toString(),
- timestamp = data.timestamp || Date.now();
+ var uid = data.uid;
+ var tid = data.tid;
+ var content = data.content.toString();
+ var timestamp = data.timestamp || Date.now();
if (!uid && parseInt(uid, 10) !== 0) {
return callback(new Error('[[error:invalid-uid]]'));
@@ -38,7 +39,6 @@ module.exports = function(Posts) {
'content': content,
'timestamp': timestamp,
'reputation': 0,
- 'votes': 0,
'editor': '',
'edited': 0,
'deleted': 0
diff --git a/src/privileges.js b/src/privileges.js
index 5c12365597..0e82e92d06 100644
--- a/src/privileges.js
+++ b/src/privileges.js
@@ -2,6 +2,11 @@
var privileges = {};
+privileges.userPrivilegeList = ['find', 'read', 'topics:create', 'topics:read', 'topics:reply', 'purge', 'mods'];
+privileges.groupPrivilegeList = ['groups:find', 'groups:read', 'groups:topics:create', 'groups:topics:read', 'groups:topics:reply', 'groups:purge', 'groups:moderate'];
+
+privileges.privilegeList = privileges.userPrivilegeList.concat(privileges.groupPrivilegeList);
+
require('./privileges/categories')(privileges);
require('./privileges/topics')(privileges);
require('./privileges/posts')(privileges);
diff --git a/src/privileges/categories.js b/src/privileges/categories.js
index 9ccc6b3b03..382d89e4e4 100644
--- a/src/privileges/categories.js
+++ b/src/privileges/categories.js
@@ -1,14 +1,14 @@
'use strict';
-var async = require('async'),
- _ = require('underscore'),
+var async = require('async');
+var _ = require('underscore');
- user = require('../user'),
- categories = require('../categories'),
- groups = require('../groups'),
- helpers = require('./helpers'),
- plugins = require('../plugins');
+var user = require('../user');
+var categories = require('../categories');
+var groups = require('../groups');
+var helpers = require('./helpers');
+var plugins = require('../plugins');
module.exports = function(privileges) {
@@ -27,13 +27,6 @@ module.exports = function(privileges) {
{name: 'Moderate'}
];
- var userPrivilegeList = [
- 'find', 'read', 'topics:read', 'topics:create', 'topics:reply', 'purge', 'mods'
- ];
- var groupPrivilegeList = [
- 'groups:find', 'groups:read', 'groups:topics:read', 'groups:topics:create', 'groups:topics:reply', 'groups:purge', 'groups:moderate'
- ];
-
async.parallel({
labels: function(next) {
async.parallel({
@@ -42,12 +35,12 @@ module.exports = function(privileges) {
}, next);
},
users: function(next) {
- var privileges;
+ var userPrivileges;
async.waterfall([
- async.apply(plugins.fireHook, 'filter:privileges.list', userPrivilegeList),
- function(privs, next) {
- privileges = privs;
- groups.getMembersOfGroups(privs.map(function(privilege) {
+ async.apply(plugins.fireHook, 'filter:privileges.list', privileges.userPrivilegeList),
+ function(_privs, next) {
+ userPrivileges = _privs;
+ groups.getMembersOfGroups(userPrivileges.map(function(privilege) {
return 'cid:' + cid + ':privileges:' + privilege;
}), next);
},
@@ -68,8 +61,8 @@ module.exports = function(privileges) {
memberData.forEach(function(member) {
member.privileges = {};
- for(var x=0,numPrivs=privileges.length;x meta.config.maximumUsernameLength) {
- return false;
+ function guestHandleValid(data, callback) {
+ if (parseInt(meta.config.allowGuestHandles, 10) === 1 && parseInt(data.uid, 10) === 0 && data.handle) {
+ if (data.handle.length > meta.config.maximumUsernameLength) {
+ return callback(new Error('[[error:guest-handle-invalid]]'));
+ }
+ user.existsBySlug(utils.slugify(data.handle), function(err, exists) {
+ if (err || exists) {
+ return callback(err || new Error('[[error:username-taken]]'));
+ }
+ callback();
+ });
}
- return true;
+ callback();
}
};
diff --git a/src/upgrade.js b/src/upgrade.js
index 0f863c757c..895520d193 100644
--- a/src/upgrade.js
+++ b/src/upgrade.js
@@ -10,7 +10,7 @@ var db = require('./database'),
schemaDate, thisSchemaDate,
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema
- latestSchema = Date.UTC(2016, 4, 28);
+ latestSchema = Date.UTC(2016, 5, 13);
Upgrade.check = function(callback) {
db.get('schemaDate', function(err, value) {
@@ -504,7 +504,7 @@ Upgrade.upgrade = function(callback) {
var groupsAPI = require('./groups');
var privilegesAPI = require('./privileges');
-
+
db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) {
async.eachSeries(cids, function(cid, next) {
privilegesAPI.categories.list(cid, function(err, data) {
@@ -523,13 +523,13 @@ Upgrade.upgrade = function(callback) {
return next(err);
});
}
-
+
next(null);
}, next);
},
function(next) {
async.eachSeries(users, function(user, next) {
- if (user.privileges['read']) {
+ if (user.privileges.read) {
return groupsAPI.join('cid:' + cid + ':privileges:topics:read', user.uid, function(err) {
if (!err) {
winston.info('cid:' + cid + ':privileges:topics:read granted to uid: ' + user.uid);
@@ -538,7 +538,7 @@ Upgrade.upgrade = function(callback) {
return next(err);
});
}
-
+
next(null);
}, next);
}
@@ -552,7 +552,7 @@ Upgrade.upgrade = function(callback) {
});
}, function(err) {
if (err) {
- return next(err);
+ return next(err);
}
winston.info('[2016/05/28] Giving topics:read privs to any group that was previously allowed to Find & Access Category - done');
@@ -563,6 +563,60 @@ Upgrade.upgrade = function(callback) {
winston.info('[2016/05/28] Giving topics:read privs to any group that was previously allowed to Find & Access Category - skipped!');
next();
}
+ },
+ function(next) {
+ thisSchemaDate = Date.UTC(2016, 5, 13);
+
+ if (schemaDate < thisSchemaDate) {
+ updatesMade = true;
+ winston.info('[2016/06/13] Store upvotes/downvotes separately');
+
+ var batch = require('./batch');
+ var posts = require('./posts');
+ var count = 0;
+ batch.processSortedSet('posts:pid', function(pids, next) {
+ winston.info('upgraded ' + count + ' posts');
+ count += pids.length;
+ async.each(pids, function(pid, next) {
+ async.parallel({
+ upvotes: function(next) {
+ db.setCount('pid:' + pid + ':upvote', next);
+ },
+ downvotes: function(next) {
+ db.setCount('pid:' + pid + ':downvote', next);
+ }
+ }, function(err, results) {
+ if (err) {
+ return next(err);
+ }
+ var data = {};
+
+ if (parseInt(results.upvotes, 10) > 0) {
+ data.upvotes = results.upvotes;
+ }
+ if (parseInt(results.downvotes, 10) > 0) {
+ data.downvotes = results.downvotes;
+ }
+
+ if (Object.keys(data).length) {
+ posts.setPostFields(pid, data, next);
+ } else {
+ next();
+ }
+ }, next);
+ }, next);
+ }, {}, function(err) {
+ if (err) {
+ return next(err);
+ }
+
+ winston.info('[2016/06/13] Store upvotes/downvotes separately done');
+ Upgrade.update(thisSchemaDate, next);
+ });
+ } else {
+ winston.info('[2016/06/13] Store upvotes/downvotes separately skipped!');
+ next();
+ }
}
// Add new schema updates here
// IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema IN LINE 24!!!
diff --git a/src/user/approval.js b/src/user/approval.js
index 94e0f097e5..8ccd5192aa 100644
--- a/src/user/approval.js
+++ b/src/user/approval.js
@@ -128,7 +128,7 @@ module.exports = function(User) {
async.parallel([
async.apply(db.sortedSetRemove, 'registration:queue', username),
async.apply(db.delete, 'registration:queue:name:' + username)
- ], function(err, results) {
+ ], function(err) {
callback(err);
});
}
@@ -178,11 +178,11 @@ module.exports = function(User) {
if (err) {
return next(null, user);
}
- if (response.statusCode === 200) {
+ if (response.statusCode === 200 && body) {
user.spamData = body;
- user.usernameSpam = body.username.frequency > 0 || body.username.appears > 0;
- user.emailSpam = body.email.frequency > 0 || body.email.appears > 0;
- user.ipSpam = body.ip.frequency > 0 || body.ip.appears > 0;
+ user.usernameSpam = body.username ? (body.username.frequency > 0 || body.username.appears > 0) : true;
+ user.emailSpam = body.email ? (body.email.frequency > 0 || body.email.appears > 0) : true;
+ user.ipSpam = body.ip ? (body.ip.frequency > 0 || body.ip.appears > 0) : true;
}
next(null, user);
diff --git a/src/views/admin/manage/flags.tpl b/src/views/admin/manage/flags.tpl
index d5807ce88e..a7a9253163 100644
--- a/src/views/admin/manage/flags.tpl
+++ b/src/views/admin/manage/flags.tpl
@@ -83,8 +83,8 @@