Merge commit '54d2c39c3ad0663b8b2c3302152282aeab339375' into weekly

This commit is contained in:
NodeBB Misty
2016-06-13 16:00:21 -04:00
73 changed files with 480 additions and 169 deletions

View File

@@ -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"
}
]
}
}

View File

@@ -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).",

View File

@@ -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 символ(а).",

View File

@@ -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).",

View File

@@ -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": "<strong>V této kategorii zatím nejsou žádné příspěvky.</strong><br />Můžeš být první!",
"browsing": "prohlíží",
"no_replies": "Nikdo ještě neodpověděl",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -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.",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -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",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -45,9 +45,9 @@
"watching": "Vaatan",
"not-watching": "Ei vaata",
"ignoring": "Ignoreerin",
"watching.description": "Notify me of new replies.<br/>Show topic in unread.",
"not-watching.description": "Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.",
"ignoring.description": "Do not notify me of new replies.<br/>Do not show topic in unread.",
"watching.description": "Teavita mind uutest vastustest.<br/>Näita teemat lugemata teemade hulgas.",
"not-watching.description": "Ära teavita mind uutest vastustest.<br/>Näita teemat lugemata teemade hulgas, kui kategooria on ignoreeritud.",
"ignoring.description": "Ära teavita mind uutest vastustest.<br/>Ä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",

View File

@@ -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 کاراکتر داشته باشد.",

View File

@@ -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(ä).",

View File

@@ -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.",

View File

@@ -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",

View File

@@ -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.",

View File

@@ -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 תווים.",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -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.",

View File

@@ -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文字が必要です。",

View File

@@ -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자 이상이어야 합니다.",

View File

@@ -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)",

View File

@@ -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().",

View File

@@ -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.",

View File

@@ -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.",

View File

@@ -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.",

View File

@@ -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)",

View File

@@ -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).",

View File

@@ -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",

View File

@@ -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": "Свежие записи",

View File

@@ -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": "Принять приглашение",

View File

@@ -5,7 +5,7 @@
"remember_me": "Запомнить меня",
"forgot_password": "Забыли пароль?",
"alternative_logins": "Войти через",
"failed_login_attempt": "Login Unsuccessful",
"failed_login_attempt": "Некорректный логин",
"login_successful": "Вы успешно вошли!",
"dont_have_account": "Нет акканута?"
}

View File

@@ -16,9 +16,9 @@
"upvoted_your_post_in_multiple": "<strong>%1</strong> и %2 другие проголосовали за ваше сообщение в <strong>%3</strong>",
"moved_your_post": "<strong>%1</strong> переместил Ваше сообщение в <strong>%2</strong>",
"moved_your_topic": "<strong>%1</strong> переместил <strong>%2</strong>",
"favourited_your_post_in": "<strong>%1</strong> has bookmarked your post in <strong>%2</strong>.",
"favourited_your_post_in_dual": "<strong>%1</strong> and <strong>%2</strong> have bookmarked your post in <strong>%3</strong>.",
"favourited_your_post_in_multiple": "<strong>%1</strong> and %2 others have bookmarked your post in <strong>%3</strong>.",
"favourited_your_post_in": "<strong>%1</strong> сделал закладкой Ваш пост в <strong>%2</strong>.",
"favourited_your_post_in_dual": "<strong>%1</strong> и <strong>%2</strong> добавили в закладки Ваш пост в <strong>%3</strong>.",
"favourited_your_post_in_multiple": "<strong>%1</strong> и %2 добавили в закладки Ваш пост в <strong>%3</strong>.",
"user_flagged_post_in": "<strong>%1</strong> пометил сообщение в <strong>%2</strong>",
"user_flagged_post_in_dual": "<strong>%1</strong> и <strong>%2</strong> пометили ваше сообщение в <strong>%3</strong>",
"user_flagged_post_in_multiple": "<strong>%1</strong> и %2 другие пометили ваше сообщение <strong>%3</strong>",
@@ -30,7 +30,7 @@
"user_started_following_you_dual": "<strong>%1</strong> и <strong>%2</strong> подписались на вас.",
"user_started_following_you_multiple": "<strong>%1</strong> и %2 подписались на вас.",
"new_register": "<strong>%1</strong> отправил запрос на регистрацию.",
"new_register_multiple": "There are <strong>%1</strong> registration requests awaiting review.",
"new_register_multiple": "В очереди <strong>%1</strong> заявок на регистрацию.",
"email-confirmed": "Email подтвержден",
"email-confirmed-message": "Спасибо за подтверждение Вашего Email-адреса. Ваш аккаунт активирован.",
"email-confirm-error-message": "Ошибка проверки Email-адреса. Возможно, код неверен, либо у него истек срок действия.",

View File

@@ -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 в настоящее время недоступен из-за высокой нагрузки. Пожалуйста, приходите в другой раз."
}

View File

@@ -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.<br/>Show topic in unread.",
"not-watching.description": "Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.",
"ignoring.description": "Do not notify me of new replies.<br/>Do not show topic in unread.",
"watching.description": "Сообщить мне о новых ответах.<br/>Показать тему в непрочитанных.",
"not-watching.description": "Не уведомлять меня о новых ответах.<br/>Показать тему в непрочитанных, если категория мной не игнорируется.",
"ignoring.description": "Не уведомлять меня о новых ответах.<br/>Не отображать тему в непрочитанных.",
"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": "Введите другую причину"
}

View File

@@ -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": "Наблюдаемые темы"
}

View File

@@ -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": "Нажмите здесь, что бы связать себя с"

View File

@@ -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. ",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -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).",

View File

@@ -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.",

View File

@@ -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).",

View File

@@ -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.",

View File

@@ -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",

View File

@@ -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ự.",

View File

@@ -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 个字符。",

View File

@@ -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 字元。",

View File

@@ -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();
}

View File

@@ -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
});
};

View File

@@ -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 + '/';
});
}

View File

@@ -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);
}

View File

@@ -177,7 +177,7 @@
},
fileMimeType: function (path) {
utils.extensionToMimeType(utils.fileExtension(path));
return utils.extensionToMimeType(utils.fileExtension(path));
},
extensionToMimeType: function(extension) {

View File

@@ -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);
};

View File

@@ -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);
});
}

View File

@@ -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);
});
};

View File

@@ -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);
});
});
}

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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

View File

@@ -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);

View File

@@ -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<numPrivs;x++) {
member.privileges[privileges[x]] = memberSets[x].indexOf(parseInt(member.uid, 10)) !== -1;
for(var x=0,numPrivs=userPrivileges.length;x<numPrivs;x++) {
member.privileges[userPrivileges[x]] = memberSets[x].indexOf(parseInt(member.uid, 10)) !== -1;
}
});
@@ -79,12 +72,12 @@ module.exports = function(privileges) {
], next);
},
groups: function(next) {
var privileges;
var groupPrivileges;
async.waterfall([
async.apply(plugins.fireHook, 'filter:privileges.groups.list', groupPrivilegeList),
function(privs, next) {
privileges = privs;
groups.getMembersOfGroups(privs.map(function(privilege) {
async.apply(plugins.fireHook, 'filter:privileges.groups.list', privileges.groupPrivilegeList),
function(_privs, next) {
groupPrivileges = _privs;
groups.getMembersOfGroups(groupPrivileges.map(function(privilege) {
return 'cid:' + cid + ':privileges:' + privilege;
}), next);
},
@@ -119,8 +112,8 @@ module.exports = function(privileges) {
var memberData = groupNames.map(function(member) {
memberPrivs = {};
for(var x=0,numPrivs=privileges.length;x<numPrivs;x++) {
memberPrivs[privileges[x]] = memberSets[x].indexOf(member) !== -1;
for(var x=0,numPrivs=groupPrivileges.length;x<numPrivs;x++) {
memberPrivs[groupPrivileges[x]] = memberSets[x].indexOf(member) !== -1;
}
return {
name: member,

View File

@@ -6,6 +6,7 @@ var async = require('async');
var nconf = require('nconf');
var cookieParser = require('cookie-parser')(nconf.get('secret'));
var winston = require('winston');
var url = require('url');
var db = require('../database');
var logger = require('../logger');

View File

@@ -112,11 +112,9 @@ module.exports = function(Topics) {
if (!canCreate) {
return next(new Error('[[error:no-privileges]]'));
}
if (!guestHandleValid(data)) {
return next(new Error('[[error:guest-handle-invalid]]'));
}
guestHandleValid(data, next);
},
function (next) {
user.isReadyToPost(data.uid, data.cid, next);
},
function(next) {
@@ -212,11 +210,9 @@ module.exports = function(Topics) {
if (!results.canReply) {
return next(new Error('[[error:no-privileges]]'));
}
if (!guestHandleValid(data)) {
return next(new Error('[[error:guest-handle-invalid]]'));
}
guestHandleValid(data, next);
},
function(next) {
user.isReadyToPost(uid, cid, next);
},
function(next) {
@@ -316,12 +312,19 @@ module.exports = function(Topics) {
callback();
}
function guestHandleValid(data) {
if (parseInt(meta.config.allowGuestHandles, 10) === 1 && parseInt(data.uid, 10) === 0 &&
data.handle && data.handle.length > 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();
}
};

View File

@@ -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!!!

View File

@@ -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);

View File

@@ -83,8 +83,8 @@
</ul>
</blockquote>
<div class="btn-group">
<button class="btn btn-sm btn-success dismiss">Dismiss</button>
<button class="btn btn-sm btn-danger delete">Delete</button>
<button class="btn btn-sm btn-success dismiss">Dismiss this Flag</button>
<button class="btn btn-sm btn-danger delete">Delete the Post</button>
</div>
</div>
</div>