diff --git a/app.js b/app.js index acb1a3baca..dcdf8e1819 100644 --- a/app.js +++ b/app.js @@ -116,7 +116,7 @@ function start() { nconf.set('use_port', !!urlObject.port); nconf.set('relative_path', relativePath); nconf.set('port', urlObject.port || nconf.get('port') || nconf.get('PORT') || 4567); - nconf.set('upload_url', relativePath + '/uploads/'); + nconf.set('upload_url', '/uploads/'); if (nconf.get('isPrimary') === 'true') { winston.info('Time: %s', (new Date()).toString()); diff --git a/package.json b/package.json index 22c2570b1a..8de4dbc58c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPLv3 or later", "description": "NodeBB Forum", - "version": "0.6.1-dev", + "version": "0.7.0-dev", "homepage": "http://www.nodebb.org", "repository": { "type": "git", @@ -37,12 +37,13 @@ "morgan": "^1.3.2", "nconf": "~0.7.1", "nodebb-plugin-dbsearch": "^0.1.0", + "nodebb-plugin-emoji-extended": "^0.4.1-4", "nodebb-plugin-markdown": "^0.8.0", "nodebb-plugin-mentions": "^0.9.0", "nodebb-plugin-soundpack-default": "~0.1.1", "nodebb-plugin-spam-be-gone": "^0.4.0", - "nodebb-theme-lavender": "^0.2.0", - "nodebb-theme-vanilla": "^0.2.0", + "nodebb-theme-lavender": "^1.0.0", + "nodebb-theme-vanilla": "^1.0.0", "nodebb-widget-essentials": "~0.2.0", "npm": "^2.1.4", "passport": "^0.2.1", diff --git a/public/language/ar/email.json b/public/language/ar/email.json index f2820e0600..98cb9c0b0d 100644 --- a/public/language/ar/email.json +++ b/public/language/ar/email.json @@ -9,6 +9,9 @@ "reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة السرالخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.", "reset.text2": "لمواصلة طلب إعاة تعيين كلمة السر، المرجو تتبع هذا الرابط.", "reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:", "digest.latest_topics": "آخر المستجدات من %1", "digest.cta": "انقر هنا لمشاهدة %1", diff --git a/public/language/ar/error.json b/public/language/ar/error.json index 26d90ae89e..73eb289378 100644 --- a/public/language/ar/error.json +++ b/public/language/ar/error.json @@ -35,6 +35,7 @@ "topic-locked": "الموضوع مقفول", "still-uploading": "الرجاء انتظار الرفع", "content-too-short": "المرجو إدخال موضوع أطول من هذا. يجب أن تتوفر المواضيع على %1 حروف على الأقل.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "المرجو إدخال عنوان أطول من هذا. يجب أن تتوفر العناوين على %1 حروف على الأقل.", "title-too-long": "المرجو إدخال عنوان أقصر من هذا. يجب ألا تتجاوز العناوين %1 حرفًا.", "too-many-posts": "يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية - المرجو الانتظار قليلا.", diff --git a/public/language/ar/groups.json b/public/language/ar/groups.json index 5ca494a696..b006f74391 100644 --- a/public/language/ar/groups.json +++ b/public/language/ar/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "آخر المشاركات", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/ar/pages.json b/public/language/ar/pages.json index 0dc17e025a..15e8209928 100644 --- a/public/language/ar/pages.json +++ b/public/language/ar/pages.json @@ -11,6 +11,7 @@ "user.followers": "المستخدمون الذين يتبعون %1", "user.posts": "ردود %1", "user.topics": "مواضيع %1", + "user.groups": "%1's Groups", "user.favourites": "مفضلات %1", "user.settings": "خيارات المستخدم", "maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.", diff --git a/public/language/ar/reset_password.json b/public/language/ar/reset_password.json index 603f117b7e..b4f95dd780 100644 --- a/public/language/ar/reset_password.json +++ b/public/language/ar/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "يرجى إدخال عنوان البريد الإلكتروني الخاص بك وسوف نرسل لك رسالة بالبريد الالكتروني مع تعليمات حول كيفية إستعادة حسابك.", "enter_email_address": "ادخل عنوان البريد الإلكتروني", "password_reset_sent": "إعادة تعيين كلمة السر أرسلت", - "invalid_email": "بريد إلكتروني غير صالح أو غير موجود" + "invalid_email": "بريد إلكتروني غير صالح أو غير موجود", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/ar/search.json b/public/language/ar/search.json index 581a791905..50b985d452 100644 --- a/public/language/ar/search.json +++ b/public/language/ar/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/ar/users.json b/public/language/ar/users.json index b37bca619f..a842def62b 100644 --- a/public/language/ar/users.json +++ b/public/language/ar/users.json @@ -5,7 +5,7 @@ "search": "بحث", "enter_username": "أدخل اسم مستخدم للبحث", "load_more": "حمل المزيد", - "users-found-search-took": "تم إيجاد %1 مستخدمـ(ين)! استغرق البحث %2 ميليثانية.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/bn/email.json b/public/language/bn/email.json index b151164f2f..91169e5549 100644 --- a/public/language/bn/email.json +++ b/public/language/bn/email.json @@ -9,6 +9,9 @@ "reset.text1": "আমরা আপনার পাসওয়ার্ড রিসেট করার অনুরোধ পেয়েছি, সম্ভবত আপনি আপনার পাসওয়ার্ড ভুলে গিয়েছেন বলেই। তবে যদি তা না হয়ে থাকে, তাহলে এই মেইলকে উপেক্ষা করতে পারেন।", "reset.text2": "পাসওয়ার্ড রিসেট করতে নিচের লিংকে ক্লিক করুন", "reset.cta": "পাসওয়ার্ড রিসেট করতে এখানে ক্লিক করুন", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "%1 থেকে আনরিড নোটিফিকেশন আছে।", "digest.latest_topics": "%1 এর সর্বশেষ টপিকসমূহ", "digest.cta": "%1 ভিজিট করতে এখানে ক্লিক করুন", diff --git a/public/language/bn/error.json b/public/language/bn/error.json index ea1240c0ad..d1abf066d9 100644 --- a/public/language/bn/error.json +++ b/public/language/bn/error.json @@ -35,6 +35,7 @@ "topic-locked": "টপিক বন্ধ", "still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন", "content-too-short": "অনুগ্রহকরে অপেক্ষকৃত বড় পোষ্ট করুন। একটি পোষ্টে নূন্যতম %1 অক্ষর থাকতে হবে।", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "অনুগ্রহপূর্বক বড় শিরোনাম ব্যাবহার করুন। শিরোনামের জন্য নূন্যতম %1 অক্ষর ব্যাবহার করতে হবে।", "title-too-long": "অনুগ্রহ করে সংক্ষিপ্ত শিরোনাম লিখুন। শিরোনাম %1 অক্ষরের বেশি হতে পারবে না।", "too-many-posts": "আপনি প্রতি %1 সেকেন্ডে একবার পোষ্ট করতে পারবেন। পরবর্তী পোষ্ট করার জন্য অপেক্ষা করুন। ", diff --git a/public/language/bn/groups.json b/public/language/bn/groups.json index a9f9207a2f..fe8c9fed1d 100644 --- a/public/language/bn/groups.json +++ b/public/language/bn/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "সর্বশেষ পোষ্টসমূহ", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/bn/pages.json b/public/language/bn/pages.json index 1e28db3a2d..4ab90a11a2 100644 --- a/public/language/bn/pages.json +++ b/public/language/bn/pages.json @@ -11,6 +11,7 @@ "user.followers": "যারা %1 কে অনুসরণ করেন", "user.posts": "%1 এর পোস্ট সমুহ", "user.topics": "%1 এর টপিক সমুহ", + "user.groups": "%1's Groups", "user.favourites": "%1'র প্রিয় পোস্টগুলো", "user.settings": "সদস্য সেটিংস", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/bn/reset_password.json b/public/language/bn/reset_password.json index d4aa6415c1..5643e1c427 100644 --- a/public/language/bn/reset_password.json +++ b/public/language/bn/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "অনুগ্রহপূর্বক আপনার ইমেইল এড্রেস প্রদান করুন, আমরা আপনাকে আপনার পাসওয়ার্ড রিসেট সম্পর্কিত তথ্যাবলী ইমেইলে পাঠিয়ে দিবো। ", "enter_email_address": "আপনার ইমেইল এড্রেস", "password_reset_sent": "পাসওয়ার্ড রিসেট মেইল পাঠানো হয়েছে", - "invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই" + "invalid_email": "ভুল ইমেইল / ইমেইল ডেটাবেইজে নেই", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/bn/search.json b/public/language/bn/search.json index eafce184ec..0038567599 100644 --- a/public/language/bn/search.json +++ b/public/language/bn/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/bn/users.json b/public/language/bn/users.json index 5d7dbd5cec..402aa33c27 100644 --- a/public/language/bn/users.json +++ b/public/language/bn/users.json @@ -5,7 +5,7 @@ "search": "খুঁজুন", "enter_username": "ইউজারনেম এর ভিত্তিতে সার্চ করুন", "load_more": "আরো লোড করুন", - "users-found-search-took": "%1 সদস্য(দের) খুঁজে পাওয়া গিয়েছে! সময় লেগেছে %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/cs/email.json b/public/language/cs/email.json index 27a2f06198..a259648e70 100644 --- a/public/language/cs/email.json +++ b/public/language/cs/email.json @@ -9,6 +9,9 @@ "reset.text1": "Obdrželi jsme požadavek na obnovu hesla, pravděpodobně kvůli tomu, že jste ho zapomněli. Pokud to není tento případ, ignorujte, prosím, tento email.", "reset.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:", "reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Máte tu nepřečtená oznámení od %1:", "digest.latest_topics": "Nejnovější témata od %1", "digest.cta": "Kliknutím zde navštívíte %1", diff --git a/public/language/cs/error.json b/public/language/cs/error.json index c5ae30c511..f858b2b15f 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -35,6 +35,7 @@ "topic-locked": "Téma uzamčeno", "still-uploading": "Vyčkejte, prosím, nežli se vše kompletně nahraje.", "content-too-short": "Vložte, prosím, delší příspěvek. Příspěvky by měly obsahovat nejméně %1 znaků.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Vložte, prosím, delší titulek. Titulky by měly obsahovat nejméně %1 znaků.", "title-too-long": "Vložte, prosím, kratší titulek. Titulky by neměly být delší, než-li %1 znaků.", "too-many-posts": "Své příspěvky můžete odesílat po %1 sekundách - vyčkejte, prosím, před dalším odesláním", diff --git a/public/language/cs/groups.json b/public/language/cs/groups.json index 980b41e1b7..95d083451f 100644 --- a/public/language/cs/groups.json +++ b/public/language/cs/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Nejnovější příspěvky", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/cs/pages.json b/public/language/cs/pages.json index b77b6411ba..15386435af 100644 --- a/public/language/cs/pages.json +++ b/public/language/cs/pages.json @@ -11,6 +11,7 @@ "user.followers": "People who Follow %1", "user.posts": "Posts made by %1", "user.topics": "Topics created by %1", + "user.groups": "%1's Groups", "user.favourites": "%1's Favourite Posts", "user.settings": "User Settings", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/cs/reset_password.json b/public/language/cs/reset_password.json index 41dce1549f..ba87244661 100644 --- a/public/language/cs/reset_password.json +++ b/public/language/cs/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Zadejte svou emailovou adresu a my Vám pošleme informace, jak můžete obnovit své heslo.", "enter_email_address": "Zadejte emailovou adresu", "password_reset_sent": "Obnova hesla odeslána", - "invalid_email": "Špatný email / Email neexistuje!" + "invalid_email": "Špatný email / Email neexistuje!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/cs/search.json b/public/language/cs/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/cs/search.json +++ b/public/language/cs/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/cs/users.json b/public/language/cs/users.json index fe3e7cb9b7..22b698a8c0 100644 --- a/public/language/cs/users.json +++ b/public/language/cs/users.json @@ -5,7 +5,7 @@ "search": "Vyhledávat", "enter_username": "Zadej uživatelské jméno k hledání", "load_more": "Načíst další", - "users-found-search-took": "Nazelezeno: %1 uživetel(ů)! Vyhledání trvalo %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/de/category.json b/public/language/de/category.json index f455b1604b..e3d45d3af8 100644 --- a/public/language/de/category.json +++ b/public/language/de/category.json @@ -1,6 +1,6 @@ { "new_topic_button": "Neues Thema", - "no_topics": "Es gibt noch keine Themen in dieser Kategorie.
Warum beginnst du nicht das erste?", + "no_topics": "Es gibt noch keine Themen in dieser Kategorie.
Warum beginnst du nicht eins?", "browsing": "Aktiv", "no_replies": "Niemand hat geantwortet", "share_this_category": "Teile diese Kategorie", diff --git a/public/language/de/email.json b/public/language/de/email.json index 4236feca0b..b60e620dd8 100644 --- a/public/language/de/email.json +++ b/public/language/de/email.json @@ -9,6 +9,9 @@ "reset.text1": "Wir haben eine Anfrage auf Zurücksetzung deines Passworts erhalten, wahrscheinlich, weil du es vergessen hast. Falls dies nicht der Fall ist, ignoriere bitte diese E-Mail.", "reset.text2": "Klicke bitte auf den folgenden Link, um mit der Zurücksetzung deines Passworts fortzufahren:", "reset.cta": "Klicke hier, um dein Passwort zurückzusetzen", + "reset.notify.subject": "Passwort erfolgreich geändert", + "reset.notify.text1": "Wir benachrichtigen dich das am %1, dein Passwort erfolgreich geändert wurde.", + "reset.notify.text2": "Wenn du das nicht autorisiert hast, bitte benachrichtige umgehend einen Administrator.", "digest.notifications": "Du hast ungelesene Benachrichtigungen von %1:", "digest.latest_topics": "Aktuellste Themen vom %1", "digest.cta": "Klicke hier, um %1 zu besuchen", diff --git a/public/language/de/error.json b/public/language/de/error.json index 376b75f62d..b2deb8a2d3 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -2,7 +2,7 @@ "invalid-data": "Daten ungültig", "not-logged-in": "Du bist nicht angemeldet.", "account-locked": "Dein Account wurde vorübergehend gesperrt.", - "search-requires-login": "Die Suche erfordert ein Konto! Bitte log dich ein oder registrieren dich!", + "search-requires-login": "Die Suche erfordert ein Konto! Bitte log dich ein oder registriere dich!", "invalid-cid": "Ungültige Kategorie-ID", "invalid-tid": "Ungültige Themen-ID", "invalid-pid": "Ungültige Beitrags-ID", @@ -35,6 +35,7 @@ "topic-locked": "Thema ist gesperrt", "still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.", "content-too-short": "Bitte gib einen längeren Beitrag ein. Beiträge sollten mindestens %1 Zeichen enthalten.", + "content-too-long": "Bitte schreibe einen kürzeren Beitrag. Beiträge können nicht mehr als %1 Zeichen enthalten.", "title-too-short": "Bitte gib einen längeren Titel ein. Titel sollten mindestens %1 Zeichen enthalten.", "title-too-long": "Der Titel darf maximal %1 Zeichen enthalten.", "too-many-posts": "Du kannst maximal alle %1 Sekunden einen Beitrag erstellen - bitte warte, bevor du einen neuen Beitrag erstellst", diff --git a/public/language/de/groups.json b/public/language/de/groups.json index 812b309dc3..375e09d9b5 100644 --- a/public/language/de/groups.json +++ b/public/language/de/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Aktuelle Beiträge", "details.private": "Private Gruppe", "details.public": "Öffentliche Gruppe", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Gruppenadministration", "event.updated": "Gruppendetails wurden aktualisiert", "event.deleted": "Die Gruppe \"% 1\" wurde gelöscht" diff --git a/public/language/de/pages.json b/public/language/de/pages.json index 277678114f..78b7c7469d 100644 --- a/public/language/de/pages.json +++ b/public/language/de/pages.json @@ -11,6 +11,7 @@ "user.followers": "Nutzer, die %1 folgen", "user.posts": "Beiträge von %1", "user.topics": "Themen von %1", + "user.groups": "%1's Gruppen", "user.favourites": "Von %1 favorisierte Beiträge", "user.settings": "Benutzer-Einstellungen", "maintenance.text": "%1 befindet sich derzeit in der Wartung. Bitte komm später wieder.", diff --git a/public/language/de/reset_password.json b/public/language/de/reset_password.json index bbbfae1249..02d9329f7d 100644 --- a/public/language/de/reset_password.json +++ b/public/language/de/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Bitte gib Deine E-Mail Adresse ein und wir senden Dir eine Anleitung, wie Du Dein Passwort zurücksetzen kannst.", "enter_email_address": "E-Mail Adresse eingeben", "password_reset_sent": "Passwortzurücksetzung beantragt.", - "invalid_email": "Ungültige E-Mail / Adresse existiert nicht!" + "invalid_email": "Ungültige E-Mail / Adresse existiert nicht!", + "password_too_short": "Das eingegebene Passwort ist zu kurz, bitte wähle ein anderes Passwort.", + "passwords_do_not_match": "Die eingegebenen Passwörter stimmen nicht überein." } \ No newline at end of file diff --git a/public/language/de/search.json b/public/language/de/search.json index 80f5d100a7..d817f2aa7f 100644 --- a/public/language/de/search.json +++ b/public/language/de/search.json @@ -3,5 +3,33 @@ "no-matches": "Keine Ergebnisse gefunden", "in": "In", "by": "Bei", - "posted-by": "Geschrieben von" + "titles": "Titel", + "titles-posts": "Titel und Beiträge", + "posted-by": "Geschrieben von", + "in-categories": "In Kategorien", + "search-child-categories": "Suche in Unterkategorien", + "reply-count": "Antwort Anzahl", + "at-least": "Mindestens", + "at-most": "Höchstens", + "post-time": "Beitrags Zeit", + "newer-than": "Neuer als", + "older-than": "Älter als", + "any-date": "Jeder Zeitpunkt", + "yesterday": "Gestern", + "one-week": "Eine Woche", + "two-weeks": "Zwei Wochen", + "one-month": "Ein Monat", + "three-months": "Drei Monate", + "six-months": "Sechs Monate", + "one-year": "Ein Jahr", + "sort-by": "Sortieren nach", + "last-reply-time": "Letzter Antwort Zeitpunkt", + "topic-title": "Thementitel", + "number-of-replies": "Anzahl von Antworten", + "number-of-views": "Anzahl der Aufrufe", + "topic-start-date": "Thema Startdatum", + "username": "Benutzername", + "category": "Kategorie", + "descending": "In absteigender Reihenfolge", + "ascending": "In aufsteigender Reihenfolge" } \ No newline at end of file diff --git a/public/language/el/email.json b/public/language/el/email.json index 6563d675d5..c4a52f1ffa 100644 --- a/public/language/el/email.json +++ b/public/language/el/email.json @@ -9,6 +9,9 @@ "reset.text1": "Λάβαμε ένα αίτημα για επαναφορά του κωδικού σου, πιθανότατα γιατί τον ξέχασες. Αν δεν έκανες εσύ αυτό το αίτημα, αγνόησε αυτό το email.", "reset.text2": "Για να κάνεις την επαναφορά του κωδικού σου, παρακαλώ πάτα στο παρακάτω σύνδεσμο:", "reset.cta": "Κάνε κλικ εδώ για να επαναφέρεις τον κωδικό σου", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Πρόσφατα θέματα στο %1", "digest.cta": "Κάνε κλικ εδώ για να επισκεφτείς το %1", diff --git a/public/language/el/error.json b/public/language/el/error.json index e072c910f8..9cadac2731 100644 --- a/public/language/el/error.json +++ b/public/language/el/error.json @@ -35,6 +35,7 @@ "topic-locked": "Το θέμα έχει κλειδωθεί", "still-uploading": "Παρακαλώ περίμενε να τελειώσει το ανέβασμα των αρχείων.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Παρακαλώ γράψε έναν μικρότερο τίτλο. Δεν μπορεί να είναι μεγαλύτερος από %1 χαρακτήρες.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/el/groups.json b/public/language/el/groups.json index 5fa5a25877..9ad8583476 100644 --- a/public/language/el/groups.json +++ b/public/language/el/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Τελευταίες δημοσιεύσεις.", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/el/pages.json b/public/language/el/pages.json index 04301ee967..0b9a89746e 100644 --- a/public/language/el/pages.json +++ b/public/language/el/pages.json @@ -11,6 +11,7 @@ "user.followers": "Άτομα που ακολουθούν τον/την %1", "user.posts": "Δημοσιεύσεις από τον/την %1", "user.topics": "Θέματα από τον/την %1", + "user.groups": "%1's Groups", "user.favourites": "Οι αγαπημένες δημοσιεύσεις του/της %1", "user.settings": "Επιλογές Χρήστη", "maintenance.text": "Το %1 αυτή την στιγμή συντηρείται. Παρακαλώ έλα αργότερα.", diff --git a/public/language/el/reset_password.json b/public/language/el/reset_password.json index e088a5bd9f..1ceecfd014 100644 --- a/public/language/el/reset_password.json +++ b/public/language/el/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Παρακαλώ γράψε την διεύθυνση email σου και θα σου στείλουμε ένα email με οδηγίες για το πως να επαναφέρεις τον λογαριασμό σου.", "enter_email_address": "Εισαγωγή Διεύθυνσης Email", "password_reset_sent": "Η Επαναφορά Κωδικού Εστάλη", - "invalid_email": "Άκυρο Email / Το email δεν υπάρχει!" + "invalid_email": "Άκυρο Email / Το email δεν υπάρχει!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/el/search.json b/public/language/el/search.json index fd5d9fa97e..eb08d6b538 100644 --- a/public/language/el/search.json +++ b/public/language/el/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/el/users.json b/public/language/el/users.json index 7a668b12a8..aae33e825c 100644 --- a/public/language/el/users.json +++ b/public/language/el/users.json @@ -5,7 +5,7 @@ "search": "Αναζήτηση", "enter_username": "Γράψε ένα όνομα χρήστη προς αναζήτηση", "load_more": "Φόρτωση περισσότερων", - "users-found-search-took": "%1 χρήστης(ες) βρέθηκαν! Η αναζήτηση πήρε %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/en@pirate/email.json b/public/language/en@pirate/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/en@pirate/email.json +++ b/public/language/en@pirate/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/en@pirate/error.json b/public/language/en@pirate/error.json index 6079502fae..9bbcf03247 100644 --- a/public/language/en@pirate/error.json +++ b/public/language/en@pirate/error.json @@ -35,6 +35,7 @@ "topic-locked": "Topic Locked", "still-uploading": "Please wait for uploads to complete.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/en@pirate/groups.json b/public/language/en@pirate/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/en@pirate/groups.json +++ b/public/language/en@pirate/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/en@pirate/pages.json b/public/language/en@pirate/pages.json index b77b6411ba..15386435af 100644 --- a/public/language/en@pirate/pages.json +++ b/public/language/en@pirate/pages.json @@ -11,6 +11,7 @@ "user.followers": "People who Follow %1", "user.posts": "Posts made by %1", "user.topics": "Topics created by %1", + "user.groups": "%1's Groups", "user.favourites": "%1's Favourite Posts", "user.settings": "User Settings", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/en@pirate/reset_password.json b/public/language/en@pirate/reset_password.json index dcdf4e76b6..ba9f012ea6 100644 --- a/public/language/en@pirate/reset_password.json +++ b/public/language/en@pirate/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Please enter your email address and we will send you an email with instructions on how to reset your account.", "enter_email_address": "Enter Email Address", "password_reset_sent": "Password Reset Sent", - "invalid_email": "Invalid Email / Email does not exist!" + "invalid_email": "Invalid Email / Email does not exist!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/en@pirate/search.json b/public/language/en@pirate/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/en@pirate/search.json +++ b/public/language/en@pirate/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/en@pirate/users.json b/public/language/en@pirate/users.json index adbfee83cc..daabbb899c 100644 --- a/public/language/en@pirate/users.json +++ b/public/language/en@pirate/users.json @@ -5,7 +5,7 @@ "search": "Search", "enter_username": "Gimme y'er handle", "load_more": "Load More", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/en_GB/email.json b/public/language/en_GB/email.json index efee400748..33fd28377b 100644 --- a/public/language/en_GB/email.json +++ b/public/language/en_GB/email.json @@ -13,6 +13,10 @@ "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", + "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/en_GB/groups.json b/public/language/en_GB/groups.json index eb9a45f994..964b5f42c6 100644 --- a/public/language/en_GB/groups.json +++ b/public/language/en_GB/groups.json @@ -17,6 +17,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", diff --git a/public/language/en_GB/reset_password.json b/public/language/en_GB/reset_password.json index 27537ffdf2..96ba318a8a 100644 --- a/public/language/en_GB/reset_password.json +++ b/public/language/en_GB/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Please enter your email address and we will send you an email with instructions on how to reset your account.", "enter_email_address": "Enter Email Address", "password_reset_sent": "Password Reset Sent", - "invalid_email": "Invalid Email / Email does not exist!" + "invalid_email": "Invalid Email / Email does not exist!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } diff --git a/public/language/en_GB/search.json b/public/language/en_GB/search.json index 4f099ef554..8c73511bda 100644 --- a/public/language/en_GB/search.json +++ b/public/language/en_GB/search.json @@ -3,6 +3,8 @@ "no-matches": "No matches found", "in": "In", "by": "By", + "titles": "Titles", + "titles-posts": "Titles and Posts", "posted-by": "Posted by", "in-categories": "In Categories", "search-child-categories": "Search child categories", @@ -19,5 +21,21 @@ "one-month": "One month", "three-months": "Three months", "six-months": "Six months", - "one-year": "One year" + "one-year": "One year", + "sort-by": "Sort by", + "post-time": "Post time", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order", + "save-preferences": "Save preferences", + "clear-preferences": "Clear preferences", + "search-preferences-saved": "Search preferences saved", + "search-preferences-cleared": "Search preferences cleared", + "show-results-as": "Show results as" } diff --git a/public/language/en_GB/users.json b/public/language/en_GB/users.json index 683ad7e155..0f3687c9ed 100644 --- a/public/language/en_GB/users.json +++ b/public/language/en_GB/users.json @@ -5,7 +5,7 @@ "search": "Search", "enter_username": "Enter a username to search", "load_more": "Load More", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/en_US/email.json b/public/language/en_US/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/en_US/email.json +++ b/public/language/en_US/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/en_US/error.json b/public/language/en_US/error.json index 6079502fae..9bbcf03247 100644 --- a/public/language/en_US/error.json +++ b/public/language/en_US/error.json @@ -35,6 +35,7 @@ "topic-locked": "Topic Locked", "still-uploading": "Please wait for uploads to complete.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/en_US/groups.json b/public/language/en_US/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/en_US/groups.json +++ b/public/language/en_US/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/en_US/pages.json b/public/language/en_US/pages.json index d96ee1a8e6..c6d577d2f5 100644 --- a/public/language/en_US/pages.json +++ b/public/language/en_US/pages.json @@ -11,6 +11,7 @@ "user.followers": "People who Follow %1", "user.posts": "Posts made by %1", "user.topics": "Topics created by %1", + "user.groups": "%1's Groups", "user.favourites": "%1's Favorite Posts", "user.settings": "User Settings", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/en_US/reset_password.json b/public/language/en_US/reset_password.json index dcdf4e76b6..ba9f012ea6 100644 --- a/public/language/en_US/reset_password.json +++ b/public/language/en_US/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Please enter your email address and we will send you an email with instructions on how to reset your account.", "enter_email_address": "Enter Email Address", "password_reset_sent": "Password Reset Sent", - "invalid_email": "Invalid Email / Email does not exist!" + "invalid_email": "Invalid Email / Email does not exist!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/en_US/search.json b/public/language/en_US/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/en_US/search.json +++ b/public/language/en_US/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/en_US/users.json b/public/language/en_US/users.json index a06aee2734..0038dcffc4 100644 --- a/public/language/en_US/users.json +++ b/public/language/en_US/users.json @@ -5,7 +5,7 @@ "search": "Search", "enter_username": "Enter a username to search", "load_more": "Load More", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/es/email.json b/public/language/es/email.json index 870687c4e6..fd42293e1b 100644 --- a/public/language/es/email.json +++ b/public/language/es/email.json @@ -9,6 +9,9 @@ "reset.text1": "Recibimos una solicitud para reiniciar tu contraseña, posiblemente porque la olvidaste. Si no es así, por favor ignora este email.", "reset.text2": "Para continuar con el reinicio de contraseña, por favor cliquea en el siguiente vínculo:", "reset.cta": "Cliquea aquí para reiniciar tu contraseña", + "reset.notify.subject": "Se ha modificado correctamente la contraseña.", + "reset.notify.text1": "Te estamos notificando que a a %1, tu contraseña ha sido cambiado correctamente.", + "reset.notify.text2": "Si no has sido tu, por favor notifica al administrador inmediatamente.", "digest.notifications": "Tiene notificaciones sin leer de %1:", "digest.latest_topics": "Últimos temas de %1", "digest.cta": "Cliquea aquí para visitar %1", diff --git a/public/language/es/error.json b/public/language/es/error.json index 1c4f54397b..7a79b28ba4 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -35,6 +35,7 @@ "topic-locked": "Tema bloqueado", "still-uploading": "Por favor, espera a que terminen las subidas.", "content-too-short": "Por favor introduzca una publicación más larga. Las publicaciones deben contener al menos %1 caracteres.", + "content-too-long": "Por favor introduzca un mensaje más corto. Los mensajes no pueden exceder los %1 caracteres.", "title-too-short": "Por favor introduzca un título más largo. Los títulos deben contener al menos %1 caracteres.", "title-too-long": "Por favor, introduce un título más corto, que no sobrepase los %1 caracteres.", "too-many-posts": "Solo puedes publicar una vez cada %1 segundos - por favor espere antes de volver a publicar", diff --git a/public/language/es/groups.json b/public/language/es/groups.json index bc91648d60..999550b671 100644 --- a/public/language/es/groups.json +++ b/public/language/es/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Últimas Publicaciones", "details.private": "Grupo Privado", "details.public": "Grupo Público", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Administración De Grupo", "event.updated": "Los detalles del grupo han sido actualizados", "event.deleted": "El grupo \"%1\" ha sido eliminado" diff --git a/public/language/es/pages.json b/public/language/es/pages.json index 27d9ca8f67..4cd102fdf0 100644 --- a/public/language/es/pages.json +++ b/public/language/es/pages.json @@ -11,6 +11,7 @@ "user.followers": "Seguidores de %1", "user.posts": "Mensajes de %1", "user.topics": "Temas creados por %1", + "user.groups": "%1's Grupos", "user.favourites": "Publicaciones favoritas de %1 ", "user.settings": "Preferencias de usuario", "maintenance.text": "%1 está en mantenimiento actualmente. Por favor vuelva en otro momento.", diff --git a/public/language/es/reset_password.json b/public/language/es/reset_password.json index ea8e2b1fac..da269f5448 100644 --- a/public/language/es/reset_password.json +++ b/public/language/es/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Por favor ingresa tu correo electrónico y te enviaremos un mensaje con indicaciones para restablecer tu cuenta.", "enter_email_address": "Introduce tu correo electrónico", "password_reset_sent": "Restablecimiento de contraseña enviado", - "invalid_email": "¡Correo electrónico no válido o inexistente!" + "invalid_email": "¡Correo electrónico no válido o inexistente!", + "password_too_short": "La contraseña introducida es demasiado corta, por favor introduzca una contraseña diferente.", + "passwords_do_not_match": "Las dos contraseñas introducidas no concuerdan." } \ No newline at end of file diff --git a/public/language/es/search.json b/public/language/es/search.json index 769c91f354..e23eea6ba8 100644 --- a/public/language/es/search.json +++ b/public/language/es/search.json @@ -3,5 +3,33 @@ "no-matches": "No se encontraron coincidencias", "in": "En", "by": "Por", - "posted-by": "Publicado por" + "titles": "Títulos", + "titles-posts": "Títulos y publicaciones", + "posted-by": "Publicado por", + "in-categories": "En categorías", + "search-child-categories": "Buscar categorías hijas", + "reply-count": "Número de Respuestas", + "at-least": "De mínimo", + "at-most": "De máximo", + "post-time": "Fecha de publicación", + "newer-than": "Más reciente que", + "older-than": "Más antiguo que", + "any-date": "Cualquier fecha", + "yesterday": "Ayer", + "one-week": "Una semana", + "two-weeks": "Dos semanas", + "one-month": "Un mes", + "three-months": "Tres meses", + "six-months": "Seis meses", + "one-year": "Un año", + "sort-by": "Ordenar por", + "last-reply-time": "Fecha de última respuesta", + "topic-title": "Título de tema", + "number-of-replies": "Número de respuestas", + "number-of-views": "Número de visualizaciones", + "topic-start-date": "Fecha de inicio del tema", + "username": "Usuario", + "category": "Categoría", + "descending": "En orden descendente", + "ascending": "En orden ascendente" } \ No newline at end of file diff --git a/public/language/es/users.json b/public/language/es/users.json index 529a6accb5..81668516cf 100644 --- a/public/language/es/users.json +++ b/public/language/es/users.json @@ -5,7 +5,7 @@ "search": "Buscar", "enter_username": "Ingresa el nombre de usuario que quieres buscar", "load_more": "Cargar más", - "users-found-search-took": "¡%1 usuario(s) encontrados! La búsqueda tardó %2 ms.", + "users-found-search-took": "¡%1 usuario(s) encontrado! La búsqueda ha llevado %2 segundos.", "filter-by": "Filtrar Por", "online-only": "Sólo en línea", "picture-only": "Sólo imagen" diff --git a/public/language/et/email.json b/public/language/et/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/et/email.json +++ b/public/language/et/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/et/error.json b/public/language/et/error.json index ea2c2e9ff4..277568c591 100644 --- a/public/language/et/error.json +++ b/public/language/et/error.json @@ -35,6 +35,7 @@ "topic-locked": "Teema lukustatud", "still-uploading": "Palun oota, kuni üleslaadimised on laetud.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Palun sisesta lühem pealkiri. Pealkirjad ei saa olla pikemad kui %1 tähemärki.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/et/groups.json b/public/language/et/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/et/groups.json +++ b/public/language/et/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/et/pages.json b/public/language/et/pages.json index be7537527b..4a8ef6408f 100644 --- a/public/language/et/pages.json +++ b/public/language/et/pages.json @@ -11,6 +11,7 @@ "user.followers": "Kasutajad, kes jälgivad %1", "user.posts": "Postitused, mis on tehtud kasutaja %1 poolt", "user.topics": "Teemad on kirjutanud %1", + "user.groups": "%1's Groups", "user.favourites": "%1's lemmikud postitused", "user.settings": "Kasutaja sätted", "maintenance.text": "%1 foorumil on käimas hooldustööd. Palun külastage meid mõne aja pärast uuesti.", diff --git a/public/language/et/reset_password.json b/public/language/et/reset_password.json index c504ed9296..98e4fe4fae 100644 --- a/public/language/et/reset_password.json +++ b/public/language/et/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Palun sisesta oma emaili aadress ja me saadame sulle emaili koos õpetusega, kuidas oma parooli vahetada.", "enter_email_address": "Sisesta emaili aadress", "password_reset_sent": "Saadetud", - "invalid_email": "Vigane emaili aadress / emaili aadressi ei ekisteeri!" + "invalid_email": "Vigane emaili aadress / emaili aadressi ei ekisteeri!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/et/search.json b/public/language/et/search.json index 840538a793..448f45b055 100644 --- a/public/language/et/search.json +++ b/public/language/et/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/et/users.json b/public/language/et/users.json index 4782d131f5..ac83e6b160 100644 --- a/public/language/et/users.json +++ b/public/language/et/users.json @@ -5,7 +5,7 @@ "search": "Otsi", "enter_username": "Sisesta kasutajanimi, keda soovid otsida", "load_more": "Lae veel", - "users-found-search-took": "%1kasutaja(t) leiti! Otsing kestis %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/fa_IR/email.json b/public/language/fa_IR/email.json index 79cf1e91cf..206fe1823b 100644 --- a/public/language/fa_IR/email.json +++ b/public/language/fa_IR/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "برای تنظیم مجدد گذرواژه‌ی خود اینجا کلیک کنید", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "برای دیدن 1% اینجا کلیک کنید", diff --git a/public/language/fa_IR/error.json b/public/language/fa_IR/error.json index 61736c18c4..e99118134c 100644 --- a/public/language/fa_IR/error.json +++ b/public/language/fa_IR/error.json @@ -35,6 +35,7 @@ "topic-locked": "جستار بسته شد.", "still-uploading": "خواهشمندیم تا پایان بارگذاری‌ها شکیبا باشید.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "خواهشمندیم عنوان کوتاه‌تری بنویسید. عنوان‌ها نمی‌توانند بیش‌تر از %1 نویسه داشته باشند.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/fa_IR/groups.json b/public/language/fa_IR/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/fa_IR/groups.json +++ b/public/language/fa_IR/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/fa_IR/pages.json b/public/language/fa_IR/pages.json index ec3b4e6800..42dacfa193 100644 --- a/public/language/fa_IR/pages.json +++ b/public/language/fa_IR/pages.json @@ -11,6 +11,7 @@ "user.followers": "کاربرانی که %1 را دنبال می‌کنند", "user.posts": "دیدگاه‌های %1", "user.topics": "%1 این جستار را ساخت.", + "user.groups": "%1's Groups", "user.favourites": "دیدگاه‌های پسندیدهٔ %1", "user.settings": "تنظیمات کاربر", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/fa_IR/reset_password.json b/public/language/fa_IR/reset_password.json index a0171f831c..5e6ea61461 100644 --- a/public/language/fa_IR/reset_password.json +++ b/public/language/fa_IR/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "لطفا نشانی رایانامهٔ خود را بنویسید و ما دستورکار بازیابی شناسه‌تان را به این رایانامه می‌فرستیم.", "enter_email_address": "نوشتن نشانی رایانامه", "password_reset_sent": "رایانامهٔ بازیابی گذرواژه فرستاده شد", - "invalid_email": "رایانامهٔ نامعتبر / رایانامه وجود ندارد!" + "invalid_email": "رایانامهٔ نامعتبر / رایانامه وجود ندارد!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/fa_IR/search.json b/public/language/fa_IR/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/fa_IR/search.json +++ b/public/language/fa_IR/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/fa_IR/users.json b/public/language/fa_IR/users.json index aec64b6020..b164bd0839 100644 --- a/public/language/fa_IR/users.json +++ b/public/language/fa_IR/users.json @@ -5,7 +5,7 @@ "search": "جستجو", "enter_username": "یک نام کاربری برای جستجو وارد کنید", "load_more": "بارگذاری بیش‌تر", - "users-found-search-took": "%1 کاربر() در مدت زمان %2 میلی ثانیه یافت شد!", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/fi/email.json b/public/language/fi/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/fi/email.json +++ b/public/language/fi/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/fi/error.json b/public/language/fi/error.json index a9f843b34a..813f7896e2 100644 --- a/public/language/fi/error.json +++ b/public/language/fi/error.json @@ -35,6 +35,7 @@ "topic-locked": "Aihe lukittu", "still-uploading": "Ole hyvä ja odota tiedostojen lähettämisen valmistumista.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Otsikkosi on liian pitkä. Otsikoiden pituuden tulee olla enintään %1 merkkiä.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/fi/groups.json b/public/language/fi/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/fi/groups.json +++ b/public/language/fi/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/fi/pages.json b/public/language/fi/pages.json index 22b1b20306..07d941a4dc 100644 --- a/public/language/fi/pages.json +++ b/public/language/fi/pages.json @@ -11,6 +11,7 @@ "user.followers": "Käyttäjät, jotka seuraavat käyttäjää %1", "user.posts": "Käyttäjän %1 kirjoittamat viestit", "user.topics": "Käyttäjän %1 aloittamat aiheet", + "user.groups": "%1's Groups", "user.favourites": "Käyttäjän %1 suosikkiviestit", "user.settings": "Käyttäjän asetukset", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/fi/reset_password.json b/public/language/fi/reset_password.json index 071287708d..9d78c5f372 100644 --- a/public/language/fi/reset_password.json +++ b/public/language/fi/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Syötä sähköpostiosoitteesi, niin me lähetämme sinulle sähköpostilla ohjeet käyttäjätilisi palauttamiseksi.", "enter_email_address": "Syötä sähköpostiosoite", "password_reset_sent": "Salasanan palautuskoodi lähetetty", - "invalid_email": "Virheellinen sähköpostiosoite / Sähköpostiosoitetta ei ole olemassa!" + "invalid_email": "Virheellinen sähköpostiosoite / Sähköpostiosoitetta ei ole olemassa!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/fi/search.json b/public/language/fi/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/fi/search.json +++ b/public/language/fi/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/fi/users.json b/public/language/fi/users.json index 67556152ae..f1cca4ea56 100644 --- a/public/language/fi/users.json +++ b/public/language/fi/users.json @@ -5,7 +5,7 @@ "search": "Hae", "enter_username": "Syötä käyttäjätunnus hakeaksesi", "load_more": "Lataa lisää", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/fr/email.json b/public/language/fr/email.json index 0e4f57d601..a3b80ecd21 100644 --- a/public/language/fr/email.json +++ b/public/language/fr/email.json @@ -9,6 +9,9 @@ "reset.text1": "Nous avons reçu une demande de réinitialisation de votre mot de passe, probablement parce que vous l'avez oublié. Si ce n'est pas le cas, veuillez ignorer cet email.", "reset.text2": "Pour confirmer la réinitialisation de votre mot de passe, veuillez cliquer sur le lien suivant :", "reset.cta": "Cliquez ici pour réinitialiser votre mot de passe", + "reset.notify.subject": "Mot de Passe modifié", + "reset.notify.text1": "Nous vous informons que le %1, votre mot de passe a été modifié.", + "reset.notify.text2": "Si vous n'avez pas autorisé ceci, veuillez contacter immédiatement un administrateur.", "digest.notifications": "Vous avez des notifications non-lues de %1 :", "digest.latest_topics": "Derniers sujets de %1 :", "digest.cta": "Cliquez ici pour aller sur %1", diff --git a/public/language/fr/error.json b/public/language/fr/error.json index 50507ebd02..bfa70c579c 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -35,6 +35,7 @@ "topic-locked": "Sujet verrouillé", "still-uploading": "Veuillez patienter pendant le téléchargement.", "content-too-short": "Veuillez entrer un message plus long. %1 caractères minimum.", + "content-too-long": "Veuillez poster un message plus cours. Les messages ne peuvent être plus long que %1 caractères.", "title-too-short": "Veuillez entrer un titre plus long. %1 caractères minimum.", "title-too-long": "Veuillez entrer un titre plus court. Les titres ne peuvent excéder %1 caractères.", "too-many-posts": "Vous ne pouvez poster que toutes les %1 secondes.", diff --git a/public/language/fr/groups.json b/public/language/fr/groups.json index e786d08dd0..d8c81570df 100644 --- a/public/language/fr/groups.json +++ b/public/language/fr/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Derniers messages", "details.private": "Groupe Privé", "details.public": "Groupe Public", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Administration du Groupe", "event.updated": "Les détails du groupe ont été mis à jour", "event.deleted": "Le groupe é%1\" a été supprimé" diff --git a/public/language/fr/pages.json b/public/language/fr/pages.json index 1085bcfc21..7698a55986 100644 --- a/public/language/fr/pages.json +++ b/public/language/fr/pages.json @@ -11,6 +11,7 @@ "user.followers": "Personnes qui suivent %1", "user.posts": "Message écrit par %1", "user.topics": "Sujets créés par %1", + "user.groups": "Les Groupes de %1", "user.favourites": "Messages favoris de %1", "user.settings": "Préférences utilisateur", "maintenance.text": "%1 est en maintenance. Veuillez revenir un peu plus tard.", diff --git a/public/language/fr/reset_password.json b/public/language/fr/reset_password.json index 00e531a9c4..f21186c870 100644 --- a/public/language/fr/reset_password.json +++ b/public/language/fr/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Veuillez entrer votre adresse email pour recevoir un email contenant les instructions permettant de réinitialiser votre compte.", "enter_email_address": "Entrer votre adresse email", "password_reset_sent": "La demande de réinitialisation du mot de passe a bien été envoyée", - "invalid_email": "Email invalide / L'email n'existe pas !" + "invalid_email": "Email invalide / L'email n'existe pas !", + "password_too_short": "Le mot de passe est trop court, veuillez entre un mot de passe différent.", + "passwords_do_not_match": "Les deux mots de passe saisient ne correspondent pas." } \ No newline at end of file diff --git a/public/language/fr/search.json b/public/language/fr/search.json index b8cdfc8d2a..20e22d2fa0 100644 --- a/public/language/fr/search.json +++ b/public/language/fr/search.json @@ -3,5 +3,33 @@ "no-matches": "Aucune réponse trouvée", "in": "Dans", "by": "Par", - "posted-by": "Posté par" + "titles": "Titres", + "titles-posts": "Titres et Messages", + "posted-by": "Posté par", + "in-categories": "Dans les catégories", + "search-child-categories": "Chercher les sous catégories", + "reply-count": "Nombre de réponses", + "at-least": "Au moins", + "at-most": "Au plus", + "post-time": "Date de message", + "newer-than": "Plus récent que", + "older-than": "Plus vieux que", + "any-date": "Toute date", + "yesterday": "Hier", + "one-week": "Une semaine", + "two-weeks": "Deux semaines", + "one-month": "Un mois", + "three-months": "Trois mois", + "six-months": "Six mois", + "one-year": "Un an", + "sort-by": "Trier par", + "last-reply-time": "Date de dernière réponse", + "topic-title": "Titre de sujet", + "number-of-replies": "Nombre de réponses", + "number-of-views": "Nombre de vues", + "topic-start-date": "Date de création du sujet", + "username": "Nom d'utilisateur", + "category": "Catgorie", + "descending": "Par ordre décroissant", + "ascending": "Par ordre croissant" } \ No newline at end of file diff --git a/public/language/fr/users.json b/public/language/fr/users.json index 8d2c4481ea..1028292a9b 100644 --- a/public/language/fr/users.json +++ b/public/language/fr/users.json @@ -5,7 +5,7 @@ "search": "Rechercher", "enter_username": "Entrer un nom d'utilisateur pour rechercher", "load_more": "Charger la suite", - "users-found-search-took": "%1 utilisateur(s) trouvé(s) ! Recherche effectuée en %2 ms.", + "users-found-search-took": "%1 utilisateur(s) trouvé(s)! La recherche a pris %2 secondes.", "filter-by": "Filtrer Par", "online-only": "En Ligne uniquement", "picture-only": "Avec Image uniquement" diff --git a/public/language/he/category.json b/public/language/he/category.json index bc5e530729..86292076b6 100644 --- a/public/language/he/category.json +++ b/public/language/he/category.json @@ -4,5 +4,5 @@ "browsing": "צופים בנושא זה כעת", "no_replies": "אין תגובות", "share_this_category": "שתף קטגוריה זו", - "ignore": "Ignore" + "ignore": "התעלם" } \ No newline at end of file diff --git a/public/language/he/email.json b/public/language/he/email.json index e3199a9b14..8743ba21d8 100644 --- a/public/language/he/email.json +++ b/public/language/he/email.json @@ -1,25 +1,28 @@ { - "password-reset-requested": "Password Reset Requested - %1!", - "welcome-to": "Welcome to %1", - "greeting_no_name": "Hello", - "greeting_with_name": "Hello %1", - "welcome.text1": "Thank you for registering with %1!", - "welcome.text2": "To fully activate your account, we need to verify that you own the email address you registered with.", - "welcome.cta": "Click here to confirm your email address", - "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", - "reset.text2": "To continue with the password reset, please click on the following link:", - "reset.cta": "Click here to reset your password", - "digest.notifications": "You have unread notifications from %1:", - "digest.latest_topics": "Latest topics from %1", - "digest.cta": "Click here to visit %1", - "digest.unsub.info": "This digest was sent to you due to your subscription settings.", - "digest.no_topics": "There have been no active topics in the past %1", - "notif.chat.subject": "New chat message received from %1", - "notif.chat.cta": "Click here to continue the conversation", - "notif.chat.unsub.info": "This chat notification was sent to you due to your subscription settings.", - "notif.post.cta": "Click here to read the full topic", - "notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.", - "test.text1": "This is a test email to verify that the emailer is set up correctly for your NodeBB.", - "unsub.cta": "Click here to alter those settings", - "closing": "Thanks!" + "password-reset-requested": "בקשת איפוס הסיסמה נשלחה - %1!", + "welcome-to": "ברוכים הבאים ל%1", + "greeting_no_name": "שלום", + "greeting_with_name": "שלום %1", + "welcome.text1": "תודה שנרשמת ל%1!", + "welcome.text2": "על מנת להפעיל את החשבון שלך, אנו צריכים לוודא שאתה בעל חשבון המייל שנרשמת איתו.", + "welcome.cta": "לחץ כאן על מנת לאשר את כתובת המייל שלך.", + "reset.text1": "קיבלנו בקשה לאפס את הסיסמה לחשבון שלך, כנראה מפני ששכחת אותה. אם לא ביקשת לאפס את הסיסמה, אנא התעלם ממייל זה.", + "reset.text2": "על מנת להמשיך עם תהליך איפוס הסיסמה, אנא לחץ על הלינק הבא:", + "reset.cta": "לחץ כאן לאפס את הסיסמה שלך.", + "reset.notify.subject": "הסיסמה שונתה בהצלחה.", + "reset.notify.text1": "אנו מודיעים לך שב%1, סיסמתך שונתה בהצלחה.", + "reset.notify.text2": "אם לא אישרת בקשה זו, אנא הודע למנהל מיד.", + "digest.notifications": "יש לך התראה שלא נקראה מ%1:", + "digest.latest_topics": "נושאים אחרונים מ%1", + "digest.cta": "לחץ כאן כדי לבקר ב %1", + "digest.unsub.info": "תקציר זה נשלח אליך על-פי הגדרות החשבון שלך.", + "digest.no_topics": "אין נושאים פעילים ב%1 האחרון/ים", + "notif.chat.subject": "הודעת צ'אט חדשה התקבלה מ%1", + "notif.chat.cta": "לחץ כאן כדי להמשיך את השיחה", + "notif.chat.unsub.info": "התראה הצ'אט הזו נשלחה אליך על-פי הגדרות החשבון שלך.", + "notif.post.cta": "לחץ כאן בשביל לקרוא את כל הנושא", + "notif.post.unsub.info": "התראת הפוסט הזו נשלחה אליך על-פי הגדרות החשבון שלך.", + "test.text1": "זהו אימייל ניסיון על מנת לוודא שהגדרות המייל בוצעו כהלכה בהגדרות NodeBB.", + "unsub.cta": "לחץ כאן לשנות הגדרות אלו", + "closing": "תודה!" } \ No newline at end of file diff --git a/public/language/he/error.json b/public/language/he/error.json index 28a5461705..23d21ee1ae 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -12,62 +12,63 @@ "invalid-title": "כותרת שגויה", "invalid-user-data": "מידע משתמש שגוי", "invalid-password": "סיסמא שגויה", - "invalid-username-or-password": "Please specify both a username and password", - "invalid-search-term": "Invalid search term", + "invalid-username-or-password": "אנא הגדר שם משתמש וסיסמה", + "invalid-search-term": "מילת חיפוש לא תקינה", "invalid-pagination-value": "ערך דפדוף שגוי", "username-taken": "שם משתמש תפוס", "email-taken": "כתובת אימייל תפוסה", - "email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.", - "email-not-confirmed-chat": "You are unable to chat until your email is confirmed", + "email-not-confirmed": "כתובת המייל שלך עוד לא אושרה, לחץ כאן על-מנת לאשר את המייל שלך.", + "email-not-confirmed-chat": "לא תוכל לדבר בצ'אט עד שלא תאשר את כתובת המייל שלך", "username-too-short": "שם משתמש קצר מדי", - "username-too-long": "Username too long", + "username-too-long": "שם משתמש ארוך מדי", "user-banned": "המשתמש חסום", - "user-too-new": "Sorry, you are required to wait %1 seconds before making your first post", - "no-category": "Category does not exist", - "no-topic": "Topic does not exist", - "no-post": "Post does not exist", - "no-group": "Group does not exist", - "no-user": "User does not exist", - "no-teaser": "Teaser does not exist", - "no-privileges": "You do not have enough privileges for this action.", - "no-emailers-configured": "No email plugins were loaded, so a test email could not be sent", + "user-too-new": "מצטערים, אתה צריך לחכות %1 שניות לפני שתוכל לפרסם את הפוסט הראשון שלך", + "no-category": "קטגוריה אינה קיימת", + "no-topic": "נושא אינו קיים", + "no-post": "פוסט אינו קיים", + "no-group": "קבוצה אינה קיימת", + "no-user": "משתמש אינו קיים", + "no-teaser": "תקציר אינו קיים", + "no-privileges": "ההרשאות שלך אינן מספיקות לביצוע פעולה זו", + "no-emailers-configured": "לא נמצאו פלאגינים למייל, לכן אין אפשרות לשלוח מייל ניסיון.", "category-disabled": "קטגוריה לא פעילה", "topic-locked": "נושא נעול", "still-uploading": "אנא המתן לסיום ההעלאות", - "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", - "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", + "content-too-short": "יש להכניס פוסט ארוך יותר. פוסטים חייבים להכיל לפחות %1 תווים.", + "content-too-long": "יש לקצר את הפוסט. פוסטים אינם יכולים להיות ארוכים מ %1 תווים.", + "title-too-short": "יש להכניס כותרת ארוכה יותר. כותרות חייבות להכיל לפחות %1 תווים.", "title-too-long": "יש לקצר את הכותרת. כותרות אינן יכולות להיות ארוכות מ %1 תווים.", - "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", - "too-many-posts-newbie": "As a new user, you can only post once every %1 seconds until you have earned %2 reputation - please wait before posting again", - "file-too-big": "Maximum allowed file size is %1 kbs - please upload a smaller file", + "too-many-posts": "אתה יכול להעלות פוסט כל %1 שניות בלבד - אנא המתן.", + "too-many-posts-newbie": "כמשתמש חדש, אתה יכול להעלות פוסט כל %1 שניות עד שצברת %2 מוניטין - אנא המתן.", + "file-too-big": "גודל קובץ מקסימלי הינו %1 קילובייט - אנא העלה קובץ קטן יותר.", "cant-vote-self-post": "לא ניתן להצביע לפוסט שלך", - "already-favourited": "You have already favourited this post", - "already-unfavourited": "You have already unfavourited this post", + "already-favourited": "כבר הוספת פוסט זה למועדפים", + "already-unfavourited": "כבר הסרת פוסט זה מהמועדפים", "cant-ban-other-admins": "אינך יכול לחסום מנהלים אחרים!", - "invalid-image-type": "Invalid image type. Allowed types are: %1", - "invalid-image-extension": "Invalid image extension", + "invalid-image-type": "פורמט תמונה לא תקין. הפורמטים המורשים הם: %1", + "invalid-image-extension": "פורמט תמונה לא תקין", "group-name-too-short": "שם הקבוצה קצר מדי", "group-already-exists": "הקבוצה כבר קיימת", "group-name-change-not-allowed": "לא ניתן לשנות את שם הקבוצה", - "group-already-member": "You are already part of this group", - "group-needs-owner": "This group requires at least one owner", - "post-already-deleted": "This post has already been deleted", - "post-already-restored": "This post has already been restored", - "topic-already-deleted": "This topic has already been deleted", - "topic-already-restored": "This topic has already been restored", + "group-already-member": "אתה כבר חבר בקבוצה זו", + "group-needs-owner": "קבוצה זו חייבת לפחות מנהל אחד", + "post-already-deleted": "פוסט זה כבר נמחק", + "post-already-restored": "פוסט זה כבר שוחזר", + "topic-already-deleted": "נושא זה כבר נמחק", + "topic-already-restored": "נושא זה כבר שוחזר", "topic-thumbnails-are-disabled": "תמונות ממוזערות לנושא אינן מאופשרות.", "invalid-file": "קובץ לא תקין", "uploads-are-disabled": "העלאת קבצים אינה מאופשרת", "upload-error": "שגיאה בהעלאה : %1", - "signature-too-long": "Sorry, your signature cannot be longer than %1 characters.", + "signature-too-long": "מצטערים, אורך החתימה המקסימלי הוא %1 תווים.", "cant-chat-with-yourself": "לא ניתן לעשות צ'אט עם עצמך!", - "chat-restricted": "This user has restricted their chat messages. They must follow you before you can chat with them", - "too-many-messages": "You have sent too many messages, please wait awhile.", - "reputation-system-disabled": "Reputation system is disabled.", - "downvoting-disabled": "Downvoting is disabled", + "chat-restricted": "משתמש זה חסם את הודעות הצ'אט שלו ממשתמשים זרים. המשתמש חייב לעקוב אחריך לפני שתוכל לשוחח איתו בצ'אט", + "too-many-messages": "שלחת יותר מדי הודעות, אנא המתן לזמן מה.", + "reputation-system-disabled": "מערכת המוניטין לא פעילה.", + "downvoting-disabled": "היכולת להצביע נגד לא פעילה", "not-enough-reputation-to-downvote": "אין לך מספיק מוניטין כדי להוריד את הדירוג של פוסט זה", - "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", - "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", - "registration-error": "Registration Error", - "parse-error": "Something went wrong while parsing server response" + "not-enough-reputation-to-flag": "אין לך מוניטין מספק על מנת לסמן את הפוסט הזה", + "reload-failed": "אירעה תקלה ב NodeBB בזמן הטעינה של: \"%1\". המערכת תמשיך להגיש דפים קיימים, אבל כדאי שתשחזר את הפעולות שלך מהפעם האחרונה שהמערכת עבדה כראוי.", + "registration-error": "שגיאה בהרשמה", + "parse-error": "אירעה שגיאה בעת בעת ניתוח תגובת השרת" } \ No newline at end of file diff --git a/public/language/he/global.json b/public/language/he/global.json index 7a5d014492..da7f284644 100644 --- a/public/language/he/global.json +++ b/public/language/he/global.json @@ -3,10 +3,10 @@ "search": "חיפוש", "buttons.close": "סגור", "403.title": "גישה נדחתה", - "403.message": "You seem to have stumbled upon a page that you do not have access to.", - "403.login": "Perhaps you should try logging in?", + "403.message": "נראה שהגעת לעמוד שאין לך הרשאה לצפות בו", + "403.login": "נסה להתחבר.", "404.title": "לא נמצא", - "404.message": "You seem to have stumbled upon a page that does not exist. Return to the home page.", + "404.message": "נראה שהגעת לעמוד שלא קיים. חזור לעמוד הבית", "500.title": "שגיאה פנימית.", "500.message": "אופס! נראה שמשהו השתבש!", "register": "הרשמה", @@ -27,7 +27,7 @@ "header.tags": "תגיות", "header.popular": "פופולרי", "header.users": "משתמשים", - "header.groups": "Groups", + "header.groups": "קבוצות", "header.chats": "צ'אטים", "header.notifications": "התראות", "header.search": "חיפוש", @@ -74,8 +74,8 @@ "guests": "אורחים", "updated.title": "הפורום עודכן", "updated.message": "הפורום עודכן לגרסא האחרונה. נא ללחוץ כאן לעדכון הדף.", - "privacy": "Privacy", - "follow": "Follow", - "unfollow": "Unfollow", - "delete_all": "Delete All" + "privacy": "פרטיות", + "follow": "עקוב", + "unfollow": "הפסק לעקוב", + "delete_all": "מחק הכל" } \ No newline at end of file diff --git a/public/language/he/groups.json b/public/language/he/groups.json index 6dfd71256b..6754a5611c 100644 --- a/public/language/he/groups.json +++ b/public/language/he/groups.json @@ -1,21 +1,23 @@ { - "groups": "Groups", - "view_group": "View Group", - "owner": "Group Owner", - "new_group": "Create New Group", - "no_groups_found": "There are no groups to see", - "cover-instructions": "Drag and Drop a photo, drag to position, and hit Save", - "cover-change": "Change", - "cover-save": "Save", - "cover-saving": "Saving", - "details.title": "Group Details", - "details.members": "Member List", - "details.pending": "Pending Members", - "details.has_no_posts": "This group's members have not made any posts.", - "details.latest_posts": "Latest Posts", - "details.private": "Private Group", - "details.public": "Public Group", - "details.owner_options": "Group Administration", - "event.updated": "Group details have been updated", - "event.deleted": "The group \"%1\" has been deleted" + "groups": "קבוצות", + "view_group": "צפה בקבוצה", + "owner": "מנהל הקבוצה", + "new_group": "צור קבוצה חדשה", + "no_groups_found": "אין קבוצות לצפייה", + "cover-instructions": "גרור תמונה, הזז למיקום הרצוי ואז לחץ על שמור", + "cover-change": "שנה", + "cover-save": "שמור", + "cover-saving": "שומר", + "details.title": "פרטי הקבוצה", + "details.members": "רשימת חברי הקבוצה", + "details.pending": "חברי קבוצה הממתינים לאישור", + "details.has_no_posts": "חברי הקבוצה הזו לא העלו אף פוסט.", + "details.latest_posts": "פוסטים אחרונים", + "details.private": "קבוצה פרטית", + "details.public": "קבוצה פומבית", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", + "details.owner_options": "ניהול הקבוצה", + "event.updated": "פרטי הקבוצה עודכנו", + "event.deleted": "קבוצת \"%1\" נמחקה" } \ No newline at end of file diff --git a/public/language/he/modules.json b/public/language/he/modules.json index 521915ec96..43bf264e7b 100644 --- a/public/language/he/modules.json +++ b/public/language/he/modules.json @@ -1,20 +1,20 @@ { "chat.chatting_with": "שוחח עם ", - "chat.placeholder": "Type chat message here, press enter to send", + "chat.placeholder": "הקלד את הודעת הצ'אט כאן, לחץ אנטר לשליחה", "chat.send": "שלח", "chat.no_active": "אין לך צ'אטים פעילים", "chat.user_typing": "%1 מקליד ...", "chat.user_has_messaged_you": "ל%1 יש הודעה עבורך.", "chat.see_all": "צפה בכל הצ'אטים", - "chat.no-messages": "Please select a recipient to view chat message history", - "chat.recent-chats": "Recent Chats", - "chat.contacts": "Contacts", - "chat.message-history": "Message History", - "chat.pop-out": "Pop out chat", - "chat.maximize": "Maximize", - "chat.seven_days": "7 Days", - "chat.thirty_days": "30 Days", - "chat.three_months": "3 Months", + "chat.no-messages": "אנא בחר נמען על מנת לראות את היסטוריית הצ'אט איתו", + "chat.recent-chats": "צ'אטים אחרונים", + "chat.contacts": "אנשי קשר", + "chat.message-history": "היסטוריית הודעות", + "chat.pop-out": "הוצא את חלון הצ'אט", + "chat.maximize": "הרחב", + "chat.seven_days": "7 ימים", + "chat.thirty_days": "30 ימים", + "chat.three_months": "3 חודשים", "composer.user_said_in": "%1 אמר ב%2:", "composer.user_said": "%1 אמר:", "composer.discard": "האם למחוק פוסט זה?" diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index 9bc2d9c5d8..515b890810 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/notifications.json @@ -2,26 +2,26 @@ "title": "התראות", "no_notifs": "אין התראות", "see_all": "צפה בכל ההתראות", - "back_to_home": "Back to %1", + "back_to_home": "חזרה ל%1", "outgoing_link": "לינק", - "outgoing_link_message": "You are now leaving %1.", - "continue_to": "Continue to %1", - "return_to": "Return to %1", - "new_notification": "New Notification", - "you_have_unread_notifications": "You have unread notifications.", - "new_message_from": "New message from %1", - "upvoted_your_post_in": "%1 has upvoted your post in %2.", - "moved_your_post": "%1 has moved your post.", - "moved_your_topic": "%1 has moved your topic.", - "favourited_your_post_in": "%1 has favourited your post in %2.", - "user_flagged_post_in": "%1 flagged a post in %2", - "user_posted_to": "%1 has posted a reply to: %2", - "user_posted_topic": "%1 has posted a new topic: %2", - "user_mentioned_you_in": "%1 mentioned you in %2", - "user_started_following_you": "%1 started following you.", - "email-confirmed": "Email Confirmed", - "email-confirmed-message": "Thank you for validating your email. Your account is now fully activated.", - "email-confirm-error": "An error occurred...", - "email-confirm-error-message": "There was a problem validating your email address. Perhaps the code was invalid or has expired.", - "email-confirm-sent": "Confirmation email sent." + "outgoing_link_message": "אתה כעת עוזב את %1.", + "continue_to": "המשך ל %1", + "return_to": "חזור ל %1", + "new_notification": "התראה חדשה", + "you_have_unread_notifications": "יש לך התראות שלא נקראו.", + "new_message_from": "הודעה חדשה מ %1", + "upvoted_your_post_in": "%1 הצביע בעד הפוסט שלך ב %2", + "moved_your_post": "%1 העביר את הפוסט שלך.", + "moved_your_topic": "%1 הזיז את הנושא שלך.", + "favourited_your_post_in": "%1 הוסיף את הפוסט שלך ב %2 למועדפים שלו.", + "user_flagged_post_in": "%1 דיווח על פוסט ב %2", + "user_posted_to": "%1 פרסם תגובה ל: %2", + "user_posted_topic": "%1 העלה נושא חדש: %2", + "user_mentioned_you_in": "%1 הזכיר אותך ב %2", + "user_started_following_you": "%1 התחיל לעקוב אחריך.", + "email-confirmed": "כתובת המייל אושרה", + "email-confirmed-message": "תודה שאישרת את כתובת המייל שלך. החשבון שלך פעיל כעת.", + "email-confirm-error": "אירעה שגיאה...", + "email-confirm-error-message": "אירעה שגיאה בעת אישור המייל שלך. ייתכן כי הקוד היה שגוי או פג תוקף.", + "email-confirm-sent": "מייל אישור נשלח." } \ No newline at end of file diff --git a/public/language/he/pages.json b/public/language/he/pages.json index 46544cf924..aaeb1fcac5 100644 --- a/public/language/he/pages.json +++ b/public/language/he/pages.json @@ -5,14 +5,15 @@ "recent": "נושאים אחרונים", "users": "משתמשים רשומים", "notifications": "התראות", - "tags": "Topics tagged under \"%1\"", + "tags": "נושאים שתויגו תחת \"%1\"", "user.edit": "עורך את %1", "user.following": "אנשים ש%1 עוקב אחריהם", "user.followers": "אנשים שעוקבים אחרי %1", "user.posts": "פוסטים שהועלו על ידי %1", "user.topics": "נושאים שנוצרו על ידי %1", + "user.groups": "הקבוצות של %1", "user.favourites": "הפוסטים המועדפים על %1", "user.settings": "הגדרות משתמש", - "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", - "maintenance.messageIntro": "Additionally, the administrator has left this message:" + "maintenance.text": "%1 כרגע תחת עבודות תחזוקה. אנא חזור בזמן מאוחר יותר.", + "maintenance.messageIntro": "בנוסף, המנהל השאיר את ההודעה הזו:" } \ No newline at end of file diff --git a/public/language/he/recent.json b/public/language/he/recent.json index 6e1cd5f811..44960c78f7 100644 --- a/public/language/he/recent.json +++ b/public/language/he/recent.json @@ -3,16 +3,16 @@ "day": "יום", "week": "שבוע", "month": "חודש", - "year": "Year", - "alltime": "All Time", + "year": "שנה", + "alltime": "כל הזמן", "no_recent_topics": "אין נושאים חדשים", - "there-is-a-new-topic": "There is a new topic.", - "there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.", - "there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.", - "there-are-new-topics": "There are %1 new topics.", - "there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.", - "there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.", - "there-is-a-new-post": "There is a new post.", - "there-are-new-posts": "There are %1 new posts.", - "click-here-to-reload": "Click here to reload." + "there-is-a-new-topic": "יש נושא חדש.", + "there-is-a-new-topic-and-a-new-post": "יש נושא ופוסט חדש.", + "there-is-a-new-topic-and-new-posts": "יש נושא ו%1 פוסטים חדשים.", + "there-are-new-topics": "יש %1 נושאים חדשים.", + "there-are-new-topics-and-a-new-post": "יש %1 נושאים ופוסט חדש.", + "there-are-new-topics-and-new-posts": "יש %1 נושאים ו %2 פוסטים חדשים.", + "there-is-a-new-post": "יש פוסט חדש.", + "there-are-new-posts": "יש %1 פוסטים חדשים.", + "click-here-to-reload": "לחץ כאן על מנת לטעון מחדש." } \ No newline at end of file diff --git a/public/language/he/reset_password.json b/public/language/he/reset_password.json index 7aa44652cd..2ed1435b18 100644 --- a/public/language/he/reset_password.json +++ b/public/language/he/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "אנא הקלד את כתובת האימייל שלך ואנו נשלח לך הוראות כיצד לאפס את חשבונך", "enter_email_address": "הכנס כתובת אימייל", "password_reset_sent": "קוד איפוס סיסמה נשלח", - "invalid_email": "מייל שגוי / כתובת מייל לא נמצאה" + "invalid_email": "מייל שגוי / כתובת מייל לא נמצאה", + "password_too_short": "הסיסמה שבחרת קצרה מדי, אנא בחר סיסמה שונה.", + "passwords_do_not_match": "הסיסמאות שהזנת אינן תואמות." } \ No newline at end of file diff --git a/public/language/he/search.json b/public/language/he/search.json index c89241d382..fec789c3be 100644 --- a/public/language/he/search.json +++ b/public/language/he/search.json @@ -1,7 +1,35 @@ { - "results_matching": "%1 result(s) matching \"%2\", (%3 seconds)", - "no-matches": "No matches found", - "in": "In", - "by": "By", - "posted-by": "Posted by" + "results_matching": "נמצאו %1 תוצאות עבור החיפוש \"%2\", (%3 שניות)", + "no-matches": "לא נמצאו תוצאות", + "in": "ב", + "by": "על ידי", + "titles": "כותרות", + "titles-posts": "כותרות ופוסטים", + "posted-by": "פורסם על-ידי", + "in-categories": "בקטגוריות", + "search-child-categories": "חפש בתת קטגוריות", + "reply-count": "כמות תגובות", + "at-least": "לפחות", + "at-most": "לכל היותר", + "post-time": "זמן הפוסט", + "newer-than": "חדש מ", + "older-than": "ישן מ", + "any-date": "כל תאריך", + "yesterday": "אתמול", + "one-week": "שבוע אחד", + "two-weeks": "שבועיים", + "one-month": "חודש אחד", + "three-months": "שלושה חודשים", + "six-months": "שישה חודשים", + "one-year": "שנה אחת", + "sort-by": "סדר על-פי", + "last-reply-time": "תאריך תגובה אחרון", + "topic-title": "כותרת הנושא", + "number-of-replies": "מספר התגובות", + "number-of-views": "מספר הצפיות", + "topic-start-date": "זמן תחילת הנושא", + "username": "שם משתמש", + "category": "קטגוריה", + "descending": "בסדר יורד", + "ascending": "בסדר עולה" } \ No newline at end of file diff --git a/public/language/he/tags.json b/public/language/he/tags.json index 94d002603f..13912500cb 100644 --- a/public/language/he/tags.json +++ b/public/language/he/tags.json @@ -2,6 +2,6 @@ "no_tag_topics": "אין פוסטים עם תגית זו.", "tags": "תגיות", "enter_tags_here": "יש להכניס כאן את התגיות. לחץ אנטר אחרי כל תגית.", - "enter_tags_here_short": "Enter tags...", + "enter_tags_here_short": "הכנס תגיות", "no_tags": "אין עדיין תגיות." } \ No newline at end of file diff --git a/public/language/he/topic.json b/public/language/he/topic.json index 2e0d4a0d2e..e16ebc08cf 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -1,61 +1,61 @@ { "topic": "נושא", - "topic_id": "Topic ID", - "topic_id_placeholder": "Enter topic ID", + "topic_id": "מזהה נושא", + "topic_id_placeholder": "הכנס מזהה נושא", "no_topics_found": "לא נמצאו נושאים!", "no_posts_found": "לא נמצאו פוסטים!", - "post_is_deleted": "This post is deleted!", + "post_is_deleted": "פוסט זה נמחק!", "profile": "פרופיל", "posted_by": "הפוסט הועלה על ידי %1", - "posted_by_guest": "Posted by Guest", + "posted_by_guest": "פורסם על-ידי אורח", "chat": "צ'אט", "notify_me": "קבל התראה כאשר יש תגובות חדשות בנושא זה", "quote": "ציטוט", "reply": "תגובה", "edit": "עריכה", "delete": "מחק", - "purge": "Purge", - "restore": "Restore", + "purge": "מחק הכל", + "restore": "שחזר", "move": "הזז", "fork": "פורק", "link": "לינק", "share": "Share", "tools": "כלים", "flag": "דווח", - "locked": "Locked", - "bookmark_instructions": "Click here to return to your last position or close to discard.", + "locked": "נעול", + "bookmark_instructions": "לחץ כאן על-מנת לחזור למיקום האחרון או סגור למחיקה.", "flag_title": "דווח על פוסט זה למנהל", - "flag_confirm": "Are you sure you want to flag this post?", - "flag_success": "This post has been flagged for moderation.", - "deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.", + "flag_confirm": "אתה בטוח שאתה רוצה לדווח על הפוסט הזה?", + "flag_success": "התקבל דיווח על פוסט זה.", + "deleted_message": "נושא זה נמחק. רק משתמשים עם ההרשאות המתאימות יכולים לצפות בו.", "following_topic.message": "מעתה, תקבל הודעות כאשר מישהו יעלה פוסט לנושא זה.", "not_following_topic.message": "לא תקבל הודעות נוספות בנושא זה.", - "login_to_subscribe": "Please register or log in in order to subscribe to this topic.", - "markAsUnreadForAll.success": "Topic marked as unread for all.", + "login_to_subscribe": "אנא הרשם או התחבר על-מנת לעקוב אחר נושא זה.", + "markAsUnreadForAll.success": "נושא זה סומן כלא נקרא לכולם.", "watch": "עקוב", - "unwatch": "Unwatch", - "watch.title": "Be notified of new replies in this topic", - "unwatch.title": "Stop watching this topic", + "unwatch": "הפסק לעקוב", + "watch.title": "קבל התראה כאשר יש תגובות חדשות בנושא זה", + "unwatch.title": "הפסק לעקוב אחר נושא זה", "share_this_post": "שתף פוסט זה", - "thread_tools.title": "Topic Tools", + "thread_tools.title": "כלי נושא", "thread_tools.markAsUnreadForAll": "סמן כלא נקרא", "thread_tools.pin": "נעץ נושא", "thread_tools.unpin": "הסר נעץ", "thread_tools.lock": "נעל נושא", "thread_tools.unlock": "הסר נעילה", "thread_tools.move": "הזז נושא", - "thread_tools.move_all": "Move All", + "thread_tools.move_all": "הזז הכל", "thread_tools.fork": "שכפל נושא", "thread_tools.delete": "מחק נושא", - "thread_tools.delete_confirm": "Are you sure you want to delete this topic?", + "thread_tools.delete_confirm": "אתה בטוח שאתה רוצה למחוק את הנושא הזה?", "thread_tools.restore": "שחזר נושא", - "thread_tools.restore_confirm": "Are you sure you want to restore this topic?", - "thread_tools.purge": "Purge Topic", - "thread_tools.purge_confirm": "Are you sure you want to purge this topic?", - "topic_move_success": "This topic has been successfully moved to %1", - "post_delete_confirm": "Are you sure you want to delete this post?", - "post_restore_confirm": "Are you sure you want to restore this post?", - "post_purge_confirm": "Are you sure you want to purge this post?", + "thread_tools.restore_confirm": "אתה בטוח שאתה רוצה לשחזר את הנושא הזה?", + "thread_tools.purge": "מחק נושא", + "thread_tools.purge_confirm": "אתה בטוח שאתה רוצה למחוק את הנושא הזה?", + "topic_move_success": "נושא זה הועבר בהצלחה ל %1", + "post_delete_confirm": "אתה בטוח שאתה רוצה למחוק את הפוסט הזה?", + "post_restore_confirm": "אתה בטוח שאתה רוצה לשחזר את הפוסט הזה?", + "post_purge_confirm": "אתה בטוח שאתה רוצה למחוק את הפוסט הזה?", "load_categories": "טוען קטגוריות", "disabled_categories_note": "קטגוריות מבוטלות צבועות באפור", "confirm_move": "הזז", @@ -65,34 +65,34 @@ "favourites.has_no_favourites": "אין לך כרגע פוסטים מועדפים, סמן מספר פוסטים כמועדפים על מנת לראות אותם כאן!", "loading_more_posts": "טוען פוסטים נוספים", "move_topic": "הזז נושא", - "move_topics": "Move Topics", + "move_topics": "הזז נושאים", "move_post": "הזז פוסט", - "post_moved": "Post moved!", + "post_moved": "הפוסט הועבר!", "fork_topic": "שכפל נושא", "topic_will_be_moved_to": "נושא זה יועבר לקטגוריה", "fork_topic_instruction": "לחץ על הפוסטים שברצונך לשכפל", "fork_no_pids": "לא בחרת אף פוסט!", - "fork_success": "Successfully forked topic! Click here to go to the forked topic.", + "fork_success": "הפוסט שוכפל בהצלחה! לחץ כאן על מנת לעבור לפוסט המשוכפל.", "composer.title_placeholder": "הכנס את כותרת הנושא כאן...", - "composer.handle_placeholder": "Name", + "composer.handle_placeholder": "שם", "composer.discard": "מחק", "composer.submit": "שלח", - "composer.replying_to": "Replying to %1", + "composer.replying_to": "מגיב ל %1", "composer.new_topic": "נושא חדש", - "composer.uploading": "uploading...", - "composer.thumb_url_label": "Paste a topic thumbnail URL", - "composer.thumb_title": "Add a thumbnail to this topic", + "composer.uploading": "מעלה...", + "composer.thumb_url_label": "הדבק את כתובת ה URL לתמונה המוקטנת עבור הנושא", + "composer.thumb_title": "הוסף תמונה מוקטנת לנושא זה", "composer.thumb_url_placeholder": "http://example.com/thumb.png", - "composer.thumb_file_label": "Or upload a file", - "composer.thumb_remove": "Clear fields", - "composer.drag_and_drop_images": "Drag and Drop Images Here", - "more_users_and_guests": "%1 more user(s) and %2 guest(s)", - "more_users": "%1 more user(s)", - "more_guests": "%1 more guest(s)", - "users_and_others": "%1 and %2 others", - "sort_by": "Sort by", - "oldest_to_newest": "Oldest to Newest", - "newest_to_oldest": "Newest to Oldest", - "most_votes": "Most votes", - "most_posts": "Most posts" + "composer.thumb_file_label": "או העלה קובץ", + "composer.thumb_remove": "נקה שדות", + "composer.drag_and_drop_images": "גרור תמונות לכאן", + "more_users_and_guests": "%1 משתמשים ו%2 אורחים נוספים", + "more_users": "%1 משתמשים נוספים", + "more_guests": "%1 אורחים נוספים", + "users_and_others": "%1 ו%2 אחרים", + "sort_by": "סדר על-פי", + "oldest_to_newest": "מהישן לחדש", + "newest_to_oldest": "מהחדש לישן", + "most_votes": "הכי הרבה הצבעות", + "most_posts": "הכי הרבה פוסטים" } \ No newline at end of file diff --git a/public/language/he/user.json b/public/language/he/user.json index ec3d0e5b7a..e8b3a5d3a7 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -2,12 +2,12 @@ "banned": "מורחק", "offline": "לא מחובר", "username": "שם משתמש", - "joindate": "Join Date", - "postcount": "Post Count", + "joindate": "תאריך הצטרפות", + "postcount": "כמות פוסטים", "email": "כתובת אימייל", - "confirm_email": "Confirm Email", - "delete_account": "Delete Account", - "delete_account_confirm": "Are you sure you want to delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your username to confirm that you wish to destroy this account.", + "confirm_email": "אשר מייל", + "delete_account": "מחק חשבון", + "delete_account_confirm": "אתה בטוח שאתה רוצה למחוק את חשבונך?
פעולה זו לא ניתנת לשחזור ולא תוכל לגשת למידע שלך

הזן את שם המשתמש שלך על מנת לאשר שברצונך למחוק את חשבונך.", "fullname": "שם מלא", "website": "אתר", "location": "מיקום", @@ -18,7 +18,7 @@ "profile_views": "צפיות בפרופיל", "reputation": "מוניטין", "favourites": "מועדפים", - "watched": "Watched", + "watched": "נצפה", "followers": "עוקבים", "following": "עוקב אחרי", "signature": "חתימה", @@ -32,7 +32,7 @@ "edit": "ערוך", "uploaded_picture": "התמונה הועלתה", "upload_new_picture": "העלה תמונה חדשה", - "upload_new_picture_from_url": "Upload New Picture From URL", + "upload_new_picture_from_url": "העלה תמונה חדשה מ URL", "current_password": "סיסמה נוכחית", "change_password": "שנה סיסמה", "change_password_error": "סיסמה אינה תקינה!", @@ -43,28 +43,28 @@ "change_password_success": "הסיסמה שלך עודכנה!", "confirm_password": "אמת סיסמה", "password": "סיסמה", - "username_taken_workaround": "The username you requested was already taken, so we have altered it slightly. You are now known as %1", + "username_taken_workaround": "שם המשתמש שבחרת כבר תפוס, אז שינינו אותו מעט. שם המשתמש שלך כעת הוא %1", "upload_picture": "העלה תמונה", "upload_a_picture": "העלה תמונה", "image_spec": "ניתן להעלות תמונות בפורמט PNG, JPG או GIF בלבד", "max": "מקסימום", "settings": "הגדרות", "show_email": "פרסם את כתובת האימייל שלי", - "show_fullname": "Show My Full Name", - "restrict_chats": "Only allow chat messages from users I follow", - "digest_label": "Subscribe to Digest", - "digest_description": "Subscribe to email updates for this forum (new notifications and topics) according to a set schedule", - "digest_off": "Off", + "show_fullname": "הצג את שמי המלא", + "restrict_chats": "אשר הודעות צ'אט ממשתמשים שאני עוקב אחריהם בלבד", + "digest_label": "הרשם לקבלת תקציר", + "digest_description": "הרשם לקבלת עדכונים מפורום זה (התראות ונושאים חדשים) על-פי לוח זמנים קבוע מראש.", + "digest_off": "כבוי", "digest_daily": "יומי", "digest_weekly": "שבועי", "digest_monthly": "חודשי", - "send_chat_notifications": "Send an email if a new chat message arrives and I am not online", - "send_post_notifications": "Send an email when replies are made to topics I am subscribed to", + "send_chat_notifications": "שלח לי הודעה למייל כאשר הודעת צ'אט נשלחה אלי בזמן שאיני מחובר", + "send_post_notifications": "שלח לי הודעה למייל כאשר תגובות חדשות פורסמו לנושאים שאני עוקב אחריהם", "has_no_follower": "למשתמש זה אין עוקבים :(", "follows_no_one": "משתמש זה אינו עוקב אחרי אחרים :(", "has_no_posts": "המשתמש הזה עוד לא פרסם כלום.", "has_no_topics": "המשתמש טרם יצר נושאים כלשהם.", - "has_no_watched_topics": "This user didn't watch any topics yet.", + "has_no_watched_topics": "משתמש זה לא עקב אחרי אף נושא עדיין.", "email_hidden": "כתובת אימייל מוסתרת", "hidden": "מוסתר", "paginate_description": "צור עימוד לנושאים במקום לטעון את כל התוכן בעמוד אחד.", @@ -72,9 +72,9 @@ "posts_per_page": "כמות פוסטים בעמוד", "notification_sounds": "השמע צליל כאשר מתקבלת הודעה עבורך.", "browsing": "הגדרות צפייה", - "open_links_in_new_tab": "Open outgoing links in new tab?", - "enable_topic_searching": "Enable In-Topic Searching", - "topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen.", - "follow_topics_you_reply_to": "Follow topics that you reply to.", - "follow_topics_you_create": "Follow topics you create." + "open_links_in_new_tab": "פתח לינקים חיצוניים בטאב חדש?", + "enable_topic_searching": "הפעל חיפוש בתוך נושא", + "topic_search_help": "אם מופעל, חיפוש בתוך נושא יעקוף את מנגנון החיפוש הרגיל של הדפדפן שלך על מנת לאפשר לך לחפש בתוך כל הנושא ולא רק מה שמוצג כרגע בעמוד.", + "follow_topics_you_reply_to": "עקוב אחר נושאים שהגבת עליהם.", + "follow_topics_you_create": "עקוב אחר נושאים שיצרת." } \ No newline at end of file diff --git a/public/language/he/users.json b/public/language/he/users.json index c37d6e3609..5b996d5f5d 100644 --- a/public/language/he/users.json +++ b/public/language/he/users.json @@ -5,8 +5,8 @@ "search": "חיפוש", "enter_username": "הכנס שם משתמש לחיפוש", "load_more": "טען עוד", - "users-found-search-took": "נמצאו %1 משתמש(ים)! החיפוש ארך %2 מילי שניות.", - "filter-by": "Filter By", - "online-only": "Online only", - "picture-only": "Picture only" + "users-found-search-took": "%1 משתמשים נמצאו! החיפוש ערך %2 שניות.", + "filter-by": "פלטר על-פי", + "online-only": "אונליין בלבד", + "picture-only": "תמונה בלבד" } \ No newline at end of file diff --git a/public/language/hu/email.json b/public/language/hu/email.json index eaf8595c79..8430b8ff27 100644 --- a/public/language/hu/email.json +++ b/public/language/hu/email.json @@ -9,6 +9,9 @@ "reset.text1": "Kaptunk egy kérést jelszava visszaállításához, valószínűleg azért, mert elfelejtette azt. Ha ez nem így van, hagyja figyelmen kívül ezt a levelet.", "reset.text2": "Ha szeretné, hogy továbbra alaphelyzetbe a jelszavát, kérjük kattintson az alábbi linkre:", "reset.cta": "Kattints ide a jelszavad visszaállításához", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Olvasatlan értesítéseid vannak a következőtől: %1", "digest.latest_topics": "Legutóbbi témák a következőből: %1", "digest.cta": "Kattints ide, hogy meglátogasd a következőt: %1", diff --git a/public/language/hu/error.json b/public/language/hu/error.json index 705be11958..821145775e 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -35,6 +35,7 @@ "topic-locked": "Téma lezárva", "still-uploading": "Please wait for uploads to complete.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/hu/groups.json b/public/language/hu/groups.json index 3d8cddf1c1..09324055a0 100644 --- a/public/language/hu/groups.json +++ b/public/language/hu/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Legújabb bejegyzések", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/hu/pages.json b/public/language/hu/pages.json index 9dfa18ac9a..f8d1c20484 100644 --- a/public/language/hu/pages.json +++ b/public/language/hu/pages.json @@ -11,6 +11,7 @@ "user.followers": "Tagok akik követik %1 -t", "user.posts": "Hozzászólások által %1", "user.topics": "%1 által létrehozott témák", + "user.groups": "%1's Groups", "user.favourites": "%1 Kedvenc Hozzászólásai", "user.settings": "Felhasználói Beállítások", "maintenance.text": "%1 jelenleg karbantartás alatt van. Kérlek nézz vissza késöbb!", diff --git a/public/language/hu/reset_password.json b/public/language/hu/reset_password.json index d0efcfda44..3f5721d6d6 100644 --- a/public/language/hu/reset_password.json +++ b/public/language/hu/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Kérlek add meg az e-mail címedet, ahová elküldjük a további teendőket a jelszavad visszaállításával kapcsolatban.", "enter_email_address": "Email cím megadása", "password_reset_sent": "Jelszó-visszaállítás elküldve", - "invalid_email": "Helytelen E-mail cím / Nem létező E-mail cím!" + "invalid_email": "Helytelen E-mail cím / Nem létező E-mail cím!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/hu/search.json b/public/language/hu/search.json index f5df223660..6cae8bb926 100644 --- a/public/language/hu/search.json +++ b/public/language/hu/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/hu/users.json b/public/language/hu/users.json index 2f992c73b2..95e721a4d7 100644 --- a/public/language/hu/users.json +++ b/public/language/hu/users.json @@ -5,7 +5,7 @@ "search": "Keresés", "enter_username": "Írj be egy nicknevet a kereséshez", "load_more": "Több betöltése", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/id/email.json b/public/language/id/email.json index 86557a5832..481f412f23 100644 --- a/public/language/id/email.json +++ b/public/language/id/email.json @@ -9,6 +9,9 @@ "reset.text1": "Kami menerima permintan untuk mengatur ulang kata sandi anda, Ini dikarenakan anda telah lupa akan kata sandi anda. Tolong abaikan email ini jika sebaliknya.", "reset.text2": "Mohon klik link berikut untuk mengatur ulang kata sandi anda.", "reset.cta": "Klik di sini untuk mengatur ulang kata sandi anda", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Anda mempunyai notifikasi yang belum terbaca dari %1:", "digest.latest_topics": "Topik-topik terbaru dari %1", "digest.cta": "Klik di sini untuk mengunjungi %1", diff --git a/public/language/id/error.json b/public/language/id/error.json index dcce92a9bf..ce802296e2 100644 --- a/public/language/id/error.json +++ b/public/language/id/error.json @@ -35,6 +35,7 @@ "topic-locked": "Topik dikunci", "still-uploading": "Tunggu proses upload sampai selesai", "content-too-short": "Mohon masukkan posting yang lebih panjang. Posting harus memuat setidaknya %1 karakter.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Mohon masukkan judul yang lebih panjang. Judul harus memuat setidaknya %1 karakter.", "title-too-long": "Mohon masukkan judul yang lebih pendek. Judul tidak dapat melebihi %1 karakter.", "too-many-posts": "Kamu hanya dapat melakukan posting satu kali setiap %1 detik - mohon tunggu beberapa saat sebelum melakukan posting kembali", diff --git a/public/language/id/groups.json b/public/language/id/groups.json index bca990761d..3bae971661 100644 --- a/public/language/id/groups.json +++ b/public/language/id/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Posting Terkini", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/id/pages.json b/public/language/id/pages.json index bfedbfaa27..83b55a2b22 100644 --- a/public/language/id/pages.json +++ b/public/language/id/pages.json @@ -11,6 +11,7 @@ "user.followers": "Pengguna yang mengikuti %1", "user.posts": "Posting dibuat oleh %1", "user.topics": "Topik dibuat oleh %1", + "user.groups": "%1's Groups", "user.favourites": "Posting Favorit %1", "user.settings": "Pengaturan Pengguna", "maintenance.text": "%1 saat ini sedang dalam masa pemeliharaan. Silahkan kembali lain waktu.", diff --git a/public/language/id/reset_password.json b/public/language/id/reset_password.json index 7ae5b9e8d7..ec65c5ca68 100644 --- a/public/language/id/reset_password.json +++ b/public/language/id/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Mohon masukkan alamat emailmu dan kami akan mengirimkan mu sebuah email dengan instruksi mengenai cara pengaturan ulang akunmu.", "enter_email_address": "Masukkan Alamat Email", "password_reset_sent": "Pengaturan Kembali Kata Sandi telah DIkirim", - "invalid_email": "Email Salah / Email tidak ada!" + "invalid_email": "Email Salah / Email tidak ada!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/id/search.json b/public/language/id/search.json index af974065ab..5eb7f1f851 100644 --- a/public/language/id/search.json +++ b/public/language/id/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/id/users.json b/public/language/id/users.json index 4f7636a9c3..783d9478f3 100644 --- a/public/language/id/users.json +++ b/public/language/id/users.json @@ -5,7 +5,7 @@ "search": "Pencarian", "enter_username": "Masukkan nama pengguna untuk mencari", "load_more": "Tampilkan Lebih Banyak", - "users-found-search-took": "%1 pengguna ditemukan! Pencarian butuh waktu %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/it/email.json b/public/language/it/email.json index 8c0a1666c2..d54cf8c4cd 100644 --- a/public/language/it/email.json +++ b/public/language/it/email.json @@ -9,6 +9,9 @@ "reset.text1": "Abbiamo ricevuto una richiesta di reset della tua password, probabilmente perché l'hai dimenticata. Se non è così si prega di ignorare questa email.", "reset.text2": "Per confermare il reset della password per favore clicca il seguente link:", "reset.cta": "Clicca qui per resettare la tua password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Hai una notifica non letta da %1:", "digest.latest_topics": "Ultimi argomenti su %1", "digest.cta": "Clicca qui per visitare %1", diff --git a/public/language/it/error.json b/public/language/it/error.json index 241f9d90ea..fe207d0502 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -35,6 +35,7 @@ "topic-locked": "Discussione Bloccata", "still-uploading": "Per favore attendere il completamento degli uploads.", "content-too-short": "Inserisci un post più lungo. Il Messaggio deve contenere almeno %1 caratteri.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Inserisci un titolo più lungo. I titoli devono contenere almeno %1 caratteri.", "title-too-long": "Per favore inserire un titolo più corto, non può essere più lungo di %1 caratteri.", "too-many-posts": "È possibile inserire un Post ogni %1 secondi - si prega di attendere prima di postare di nuovo", diff --git a/public/language/it/groups.json b/public/language/it/groups.json index 51f67ec593..f4e5f32787 100644 --- a/public/language/it/groups.json +++ b/public/language/it/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Ultimi Post", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/it/pages.json b/public/language/it/pages.json index 38c22f82b7..72d2a3e042 100644 --- a/public/language/it/pages.json +++ b/public/language/it/pages.json @@ -11,6 +11,7 @@ "user.followers": "Persone che seguono %1", "user.posts": "Post creati da %1", "user.topics": "Discussioni create da %1", + "user.groups": "%1's Groups", "user.favourites": "Post Favoriti da %1", "user.settings": "Impostazioni Utente", "maintenance.text": "%1 è attualmente in manutenzione. Per favore ritorna più tardi.", diff --git a/public/language/it/reset_password.json b/public/language/it/reset_password.json index 9340714167..4789b7f1c1 100644 --- a/public/language/it/reset_password.json +++ b/public/language/it/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Inserisci il tuo indirizzo email e ti invieremo un'email con le istruzioni per resettare il tuo account.", "enter_email_address": "Inserisci l'Indirizzo Email", "password_reset_sent": "Password Reset Inviata", - "invalid_email": "Email invalida / L'email non esiste!" + "invalid_email": "Email invalida / L'email non esiste!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/it/search.json b/public/language/it/search.json index 6b1250cf39..9d021ec7c5 100644 --- a/public/language/it/search.json +++ b/public/language/it/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/it/users.json b/public/language/it/users.json index 3faed8adbb..44f4b4f916 100644 --- a/public/language/it/users.json +++ b/public/language/it/users.json @@ -5,7 +5,7 @@ "search": "Cerca", "enter_username": "Inserisci il nome utente da cercare", "load_more": "Carica altri", - "users-found-search-took": "%1 utente(i) trovati! La ricerca ha impiegato %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/ja/email.json b/public/language/ja/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/ja/email.json +++ b/public/language/ja/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/ja/error.json b/public/language/ja/error.json index a7b4c90a77..2a4a1ebac9 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -35,6 +35,7 @@ "topic-locked": "スレッドがロックされた", "still-uploading": "アップロードが完成するまでお待ちください。", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "タイトルに最大 %1 文字の制限があります。", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/ja/groups.json b/public/language/ja/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/ja/groups.json +++ b/public/language/ja/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/ja/pages.json b/public/language/ja/pages.json index e4534d567d..eb5274c6f1 100644 --- a/public/language/ja/pages.json +++ b/public/language/ja/pages.json @@ -11,6 +11,7 @@ "user.followers": "%1のフォロワー", "user.posts": "%1が作成したポスト", "user.topics": "%1が作成したスレッド", + "user.groups": "%1's Groups", "user.favourites": "%1のお気に入りポスト", "user.settings": "ユーザー設定", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/ja/reset_password.json b/public/language/ja/reset_password.json index c732e9e159..7e31c22720 100644 --- a/public/language/ja/reset_password.json +++ b/public/language/ja/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "メールアドレスを入力してください.パスワードリセットの指示をメールでご送付します。", "enter_email_address": "メールアドレスを入力してください", "password_reset_sent": "パスワードリセットのメールを送信しました", - "invalid_email": "このメールアドレスは存在しません" + "invalid_email": "このメールアドレスは存在しません", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/ja/search.json b/public/language/ja/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/ja/search.json +++ b/public/language/ja/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/ja/users.json b/public/language/ja/users.json index 9bf3d7a0d9..6d73cf0513 100644 --- a/public/language/ja/users.json +++ b/public/language/ja/users.json @@ -5,7 +5,7 @@ "search": "検索", "enter_username": "検索するユーザー名を入力してください", "load_more": "もっと表示", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/ko/email.json b/public/language/ko/email.json index a7e4ea2cfc..1c5032db35 100644 --- a/public/language/ko/email.json +++ b/public/language/ko/email.json @@ -9,6 +9,9 @@ "reset.text1": "패스워드 재설정 요청을 받았습니다. 패스워드를 분실해서 요청한 것이 아니라면 이 메일을 무시하셔도 좋습니다.", "reset.text2": "패스워드를 재설정하려면 다음 링크를 클릭하세요.", "reset.cta": "패스워드를 재설정하려면 여기를 클릭하세요.", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "%1에 읽지 않은 게시물이 있습니다.", "digest.latest_topics": "%1의 최근 주제", "digest.cta": "%1에 방문하시려면 클릭하세요.", diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 88c01be5d7..fcca053185 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -35,6 +35,7 @@ "topic-locked": "잠긴 주제입니다.", "still-uploading": "업로드가 끝날 때까지 기다려 주세요.", "content-too-short": "게시물의 내용이 너무 짧습니다. 최소 %1자 이상이어야 합니다.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "제목이 너무 짧습니다. 최소 %1자 이상이어야 합니다.", "title-too-long": "제목은 최대 %1자로 제한됩니다.", "too-many-posts": "새 게시물 작성은 %1초 간격으로 제한됩니다 - 잠시 기다렸다가 작성해주세요.", diff --git a/public/language/ko/groups.json b/public/language/ko/groups.json index 8a788bebb2..344c35078b 100644 --- a/public/language/ko/groups.json +++ b/public/language/ko/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "최근 게시물", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/ko/pages.json b/public/language/ko/pages.json index 570f5b22f5..ce1f9e5a05 100644 --- a/public/language/ko/pages.json +++ b/public/language/ko/pages.json @@ -11,6 +11,7 @@ "user.followers": "%1님을 팔로우하는 사용자", "user.posts": "%1님이 작성한 게시물", "user.topics": "%1님이 생성한 주제", + "user.groups": "%1's Groups", "user.favourites": "%1님이 좋아하는 게시물", "user.settings": "설정", "maintenance.text": "%1 사이트는 현재 점검 중입니다. 나중에 다시 방문해주세요.", diff --git a/public/language/ko/reset_password.json b/public/language/ko/reset_password.json index d229a5a931..60fe18c8e5 100644 --- a/public/language/ko/reset_password.json +++ b/public/language/ko/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "이메일 주소를 입력하면 비밀번호를 초기화하는 방법을 메일로 알려드립니다.", "enter_email_address": "여기에 이메일 주소를 입력하세요.", "password_reset_sent": "이메일이 발송되었습니다.", - "invalid_email": "올바르지 않거나 가입되지 않은 이메일입니다." + "invalid_email": "올바르지 않거나 가입되지 않은 이메일입니다.", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/ko/search.json b/public/language/ko/search.json index 391a7477ee..3905534515 100644 --- a/public/language/ko/search.json +++ b/public/language/ko/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/ko/users.json b/public/language/ko/users.json index 14f0b96551..9135621eb6 100644 --- a/public/language/ko/users.json +++ b/public/language/ko/users.json @@ -5,7 +5,7 @@ "search": "검색", "enter_username": "검색할 사용자 이름을 입력하세요.", "load_more": "더 보기", - "users-found-search-took": "%1명의 사용자를 찾았습니다! 검색에 %2 ms가 소요되었습니다.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/lt/email.json b/public/language/lt/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/lt/email.json +++ b/public/language/lt/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/lt/error.json b/public/language/lt/error.json index 91f17b67bc..1951d21778 100644 --- a/public/language/lt/error.json +++ b/public/language/lt/error.json @@ -35,6 +35,7 @@ "topic-locked": "Tema užrakinta", "still-uploading": "Prašome palaukti kol bus baigti visi kėlimai į serverį", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Pavadinimas turėtų būti trumpesnis. Maksimalus leistinas ilgis- %1 simbolių.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/lt/groups.json b/public/language/lt/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/lt/groups.json +++ b/public/language/lt/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/lt/pages.json b/public/language/lt/pages.json index 1551e325f2..338cd346f5 100644 --- a/public/language/lt/pages.json +++ b/public/language/lt/pages.json @@ -11,6 +11,7 @@ "user.followers": "Žmonės, kurie seka %1", "user.posts": "Pranešimai, kuriuos parašė %1", "user.topics": "Temos, kurias sukūrė %1", + "user.groups": "%1's Groups", "user.favourites": "Vartotojo %1 mėgstami pranešimai", "user.settings": "Vartotojo nustatymai", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/lt/reset_password.json b/public/language/lt/reset_password.json index 66192d423f..104f75e6e3 100644 --- a/public/language/lt/reset_password.json +++ b/public/language/lt/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Prašome įrašyti el. pašto adresą ir mes atsiųsime jums instrukciją, kaip atstatyti jūsų paskyrą.", "enter_email_address": "Įrašykite el. pašto adresą", "password_reset_sent": "Slaptažodžio atstatymas išsiųstas", - "invalid_email": "Klaidingas arba neegzistuojantis el. pašto adresas!" + "invalid_email": "Klaidingas arba neegzistuojantis el. pašto adresas!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/lt/search.json b/public/language/lt/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/lt/search.json +++ b/public/language/lt/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/lt/users.json b/public/language/lt/users.json index 58f5d1793e..043ca55bcc 100644 --- a/public/language/lt/users.json +++ b/public/language/lt/users.json @@ -5,7 +5,7 @@ "search": "Ieškoti", "enter_username": "Įrašykite vartotojo vardą paieškai", "load_more": "Įkelti daugiau", - "users-found-search-took": "%1 paskyra(-os)! Paieška užtruko %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/ms/email.json b/public/language/ms/email.json index 6e765e9f0b..4c5ca1adde 100644 --- a/public/language/ms/email.json +++ b/public/language/ms/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/ms/error.json b/public/language/ms/error.json index 9c50886310..3c68a1d7e5 100644 --- a/public/language/ms/error.json +++ b/public/language/ms/error.json @@ -35,6 +35,7 @@ "topic-locked": "Topic Locked", "still-uploading": "Please wait for uploads to complete.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/ms/groups.json b/public/language/ms/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/ms/groups.json +++ b/public/language/ms/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/ms/pages.json b/public/language/ms/pages.json index 6ce4a94980..dc7c0385e9 100644 --- a/public/language/ms/pages.json +++ b/public/language/ms/pages.json @@ -11,6 +11,7 @@ "user.followers": "Pengguna yang Mengikuti %1", "user.posts": "Kiriman dibuat oleh %1", "user.topics": "Topik dibuat oleh %1", + "user.groups": "%1's Groups", "user.favourites": "Mesej Kegemaran %1", "user.settings": "Tetapan pengguna", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/ms/reset_password.json b/public/language/ms/reset_password.json index 20c519aa55..2951ed5007 100644 --- a/public/language/ms/reset_password.json +++ b/public/language/ms/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Sila masukkan alamat emel dan kami akan menghantar arahan untuk penetapan semula akaun anda", "enter_email_address": "Masukkan alamat emel", "password_reset_sent": "Penetapan semula password telah dihantar", - "invalid_email": "Emel yang tidak sah / Emel tidak wujud" + "invalid_email": "Emel yang tidak sah / Emel tidak wujud", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/ms/search.json b/public/language/ms/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/ms/search.json +++ b/public/language/ms/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/ms/users.json b/public/language/ms/users.json index 3e1a3f089b..26475bd746 100644 --- a/public/language/ms/users.json +++ b/public/language/ms/users.json @@ -5,7 +5,7 @@ "search": "Cari", "enter_username": "Masukkan nama pengguna untuk carian", "load_more": "Muat lagi", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/nb/email.json b/public/language/nb/email.json index 69fa94dcca..65e1accaee 100644 --- a/public/language/nb/email.json +++ b/public/language/nb/email.json @@ -9,6 +9,9 @@ "reset.text1": "Vi har blir bedt om å tilbakestille passordet ditt, muligens fordi du har glemt det. Hvis dette ikke stemmer kan du ignorere denne eposten.", "reset.text2": "For å fortsette med tilbakestillingen, vennligst klikk på følgende lenke:", "reset.cta": "Klikk her for å tilbakestille passordet ditt", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Du har uleste varsler fra %1:", "digest.latest_topics": "Siste emner fra %1", "digest.cta": "Klikk her for å besøke %1", diff --git a/public/language/nb/error.json b/public/language/nb/error.json index 3703ca393c..a19bdad64d 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -35,6 +35,7 @@ "topic-locked": "Emne låst", "still-uploading": "Vennligst vent til opplastingene blir fullført.", "content-too-short": "Vennligst skriv et lengere innlegg. Innlegg må inneholde minst %1 tegn.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Vennligst skriv en lengere tittel. Titler må inneholde minst %1 tegn.", "title-too-long": "Vennligst skriv en kortere tittel. Titler må inneholde minst %1 tegn.", "too-many-posts": "Du kan bare poste et innlegg hvert %1 sekund - vennligst vent før du poster igjen", diff --git a/public/language/nb/groups.json b/public/language/nb/groups.json index 7578e96072..894bbc0a12 100644 --- a/public/language/nb/groups.json +++ b/public/language/nb/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Seneste innlegg", "details.private": "Privat grup", "details.public": "Offentlig grup", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Gruppeadministrasjon", "event.updated": "Gruppedetaljer har blitt oppgradert", "event.deleted": "Gruppen \"%1\" har blitt slettet" diff --git a/public/language/nb/pages.json b/public/language/nb/pages.json index 151b1c7a79..1d657bd759 100644 --- a/public/language/nb/pages.json +++ b/public/language/nb/pages.json @@ -11,6 +11,7 @@ "user.followers": "Personer som følger %1", "user.posts": "Innlegg laget av %1", "user.topics": "Emner opprettet av %1", + "user.groups": "%1's Groups", "user.favourites": "%1 sine favoritt-innlegg", "user.settings": "Brukerinnstillinger", "maintenance.text": "%1 er for tiden under vedlikehold. Kom tilbake en annen gang.", diff --git a/public/language/nb/reset_password.json b/public/language/nb/reset_password.json index d8aab92154..ed6659abdf 100644 --- a/public/language/nb/reset_password.json +++ b/public/language/nb/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Vennligst skriv din e-post-adresse og vi vil sende den en e-post med instruksjoner om hvordan du tilbakestiller din konto.", "enter_email_address": "Skriv e-post", "password_reset_sent": "Passord-tilbakestilling sendt", - "invalid_email": "Ugyldig e-post / e-post eksisterer ikke" + "invalid_email": "Ugyldig e-post / e-post eksisterer ikke", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/nb/search.json b/public/language/nb/search.json index 8daeddcb06..053950fd9e 100644 --- a/public/language/nb/search.json +++ b/public/language/nb/search.json @@ -3,5 +3,33 @@ "no-matches": "Ingen matcher funnet", "in": "I", "by": "Av", - "posted-by": "Skapt av" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Skapt av", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/nb/users.json b/public/language/nb/users.json index a2038667ab..661479fbf1 100644 --- a/public/language/nb/users.json +++ b/public/language/nb/users.json @@ -5,7 +5,7 @@ "search": "Søk", "enter_username": "Skriv ett brukernavn for å søke", "load_more": "Last flere", - "users-found-search-took": "%1 bruker(e) funnet! Søk tok %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filtrer etter", "online-only": "Bare påloggede", "picture-only": "Bare bilde" diff --git a/public/language/nl/email.json b/public/language/nl/email.json index ec4296182c..a1f26cd2ea 100644 --- a/public/language/nl/email.json +++ b/public/language/nl/email.json @@ -9,6 +9,9 @@ "reset.text1": "Wij ontvingen een verzoek van u om uw wachtwoord te resetten. Als dat niet het geval is, kunt u deze mail negeren ", "reset.text2": "Om uw wachtwoord te resetten, klik op de volgende link", "reset.cta": "Klik hier om u wachtwoord te resetten", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "U heeft ongelezen notificaties van %1:", "digest.latest_topics": "De laatste onderwerpen van %1", "digest.cta": "Klik hier om deze website te bezoeken %1 ", diff --git a/public/language/nl/error.json b/public/language/nl/error.json index 7fa4a2f24e..8b2c37d5a1 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -35,6 +35,7 @@ "topic-locked": "Onderwerp gesloten", "still-uploading": "Heb even geduld totdat de alle bestanden geüpload zijn", "content-too-short": "Maak de bericht alsjeblieft wat langer. Op z'n minst %1 karakters", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Maak de titel wat langer. Op z'n minst %1 karakters", "title-too-long": "Maak de titel wat korter. Het kan niet langer zijn dan %1 karakters", "too-many-posts": "Je kan eens in de %1 seconden een bericht aanmaken. Wacht alstublieft.", diff --git a/public/language/nl/groups.json b/public/language/nl/groups.json index a1d2ca868d..59681475d1 100644 --- a/public/language/nl/groups.json +++ b/public/language/nl/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Nieuwste Berichten", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/nl/pages.json b/public/language/nl/pages.json index b567e526d1..09cda815b9 100644 --- a/public/language/nl/pages.json +++ b/public/language/nl/pages.json @@ -11,6 +11,7 @@ "user.followers": "Mensen die %1 Volgen", "user.posts": "Berichten geplaatst door %1", "user.topics": "Topics gecreëerd door %1", + "user.groups": "%1's Groups", "user.favourites": "%1's Favoriete Berichten", "user.settings": "Gebruikersinstellingen", "maintenance.text": "%1 is momenteel in onderhoud modus. Probeer later opnieuw", diff --git a/public/language/nl/reset_password.json b/public/language/nl/reset_password.json index a529b6b8f8..2bac7d3849 100644 --- a/public/language/nl/reset_password.json +++ b/public/language/nl/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Vul a.u.b. je email address in en we versturen je een email met de stappen hoe je je account reset.", "enter_email_address": "Vul uw Email Adres in", "password_reset_sent": "Wachtwoord Reset Verzonden", - "invalid_email": "Fout Email Adres / Email Adres bestaat niet!" + "invalid_email": "Fout Email Adres / Email Adres bestaat niet!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/nl/search.json b/public/language/nl/search.json index 60193a06b7..168dde5142 100644 --- a/public/language/nl/search.json +++ b/public/language/nl/search.json @@ -3,5 +3,33 @@ "no-matches": "Geen matches gevonden", "in": "in", "by": "door", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/nl/users.json b/public/language/nl/users.json index 4df6bda6f1..315b86fe31 100644 --- a/public/language/nl/users.json +++ b/public/language/nl/users.json @@ -5,7 +5,7 @@ "search": "Zoeken", "enter_username": "Vul een gebruikersnaam in om te zoeken", "load_more": "Meer Laden", - "users-found-search-took": "%1 gebruiker(s) gevonden! Zoekactie duurde %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter op", "online-only": "Online ", "picture-only": "Alleen een afbeelding" diff --git a/public/language/pl/email.json b/public/language/pl/email.json index 04816f6185..d1f327d90a 100644 --- a/public/language/pl/email.json +++ b/public/language/pl/email.json @@ -9,6 +9,9 @@ "reset.text1": "Otrzymaliśmy żądanie przywrócenia Twojego hasła. Jeśli nie żądałeś przywrócenia hasła, zignoruj ten e-mail.", "reset.text2": "Aby przywrócić swoje hasło, skorzystaj z poniższego linku:", "reset.cta": "Kliknij tu, by przywrócić swoje hasło", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Masz nowe powiadomienia od %1:", "digest.latest_topics": "Ostatnie tematy z %1", "digest.cta": "Kliknij, by odwiedzić %1", diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 8929f25bfa..119a9ca553 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -35,6 +35,7 @@ "topic-locked": "Temat zamknięty", "still-uploading": "Poczekaj na pełne załadowanie", "content-too-short": "Proszę wpisać dłuższy post. Posty powinny zawierać co najmniej %1 znaków.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Proszę podać dłuższy tytuł. Tytuły powinny zawierać co najmniej %1 znaków.", "title-too-long": "Wpisz krótszy tytuł, nie może być dłuższy niż %1 znaków.", "too-many-posts": "Możesz wysyłać posty co %1 sekund - proszę poczekać", diff --git a/public/language/pl/groups.json b/public/language/pl/groups.json index 9fdd6d6c79..0cd285b938 100644 --- a/public/language/pl/groups.json +++ b/public/language/pl/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Ostatnie posty", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/pl/pages.json b/public/language/pl/pages.json index f8afb878f5..4aad8f6c6d 100644 --- a/public/language/pl/pages.json +++ b/public/language/pl/pages.json @@ -11,6 +11,7 @@ "user.followers": "Obserwujący %1", "user.posts": "Posty napisane przez %1", "user.topics": "Wątki stworzone przez %1", + "user.groups": "%1's Groups", "user.favourites": "Ulubione posty %1", "user.settings": "Ustawienia użytkownika", "maintenance.text": "Obecnie trwają prace konserwacyjne nad %1. Proszę wrócić później.", diff --git a/public/language/pl/reset_password.json b/public/language/pl/reset_password.json index fa0affeab6..99b7518a97 100644 --- a/public/language/pl/reset_password.json +++ b/public/language/pl/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Podaj swój adres e-mail i wyślemy ci wiadomość z instrukcjami jak zresetować hasło.", "enter_email_address": "Wpisz swój adres e-mail", "password_reset_sent": "Instrukcje zostały wysłane", - "invalid_email": "Niepoprawny adres e-mail." + "invalid_email": "Niepoprawny adres e-mail.", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/pl/search.json b/public/language/pl/search.json index 472b6bf10c..c8775e8c66 100644 --- a/public/language/pl/search.json +++ b/public/language/pl/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/pl/users.json b/public/language/pl/users.json index 38ff75b928..2df9600a30 100644 --- a/public/language/pl/users.json +++ b/public/language/pl/users.json @@ -5,7 +5,7 @@ "search": "Szukaj", "enter_username": "Wpisz nazwę użytkownika", "load_more": "Więcej", - "users-found-search-took": "Znaleziono %1 użytkowników. Szukanie zajęło %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/pt_BR/email.json b/public/language/pt_BR/email.json index 04e7f76246..250bf39788 100644 --- a/public/language/pt_BR/email.json +++ b/public/language/pt_BR/email.json @@ -9,6 +9,9 @@ "reset.text1": "Nós recebemos um pedido para reconfigurar sua senha, possivelmente porque você a esqueceu. Se este não é o caso, por favor ignore este email.", "reset.text2": "Para continuar com a reconfiguração de senha, por favor clique no seguinte link:", "reset.cta": "Clique aqui para reconfigurar sua senha", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Você tem notificações não lidas de %1:", "digest.latest_topics": "Últimos tópicos de %1", "digest.cta": "Clique aqui para visitar %1", diff --git a/public/language/pt_BR/error.json b/public/language/pt_BR/error.json index c1ab421cb3..51d9f13502 100644 --- a/public/language/pt_BR/error.json +++ b/public/language/pt_BR/error.json @@ -35,6 +35,7 @@ "topic-locked": "Tópico Trancado", "still-uploading": "Aguarde a conclusão dos uploads.", "content-too-short": "Por favor digite um post mais longo. Posts devem conter no mínimo %1 caracteres.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Por favor digite um título mais longo. Títulos devem conter no mínimo %1 caracteres.", "title-too-long": "Por favor entre com um título mais curto; Títulos não podem ser maiores que %1 caracteres.", "too-many-posts": "Você pode postar apenas uma vez a cada %1 segundos - por favor aguarde antes de postar novamente", diff --git a/public/language/pt_BR/groups.json b/public/language/pt_BR/groups.json index 09abeb8bcd..4095f4c3ce 100644 --- a/public/language/pt_BR/groups.json +++ b/public/language/pt_BR/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Últimos Posts", "details.private": "Grupo Privado", "details.public": "Grupo Público.", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Administração do Grupo", "event.updated": "Os detalhes do grupo foram atualizados", "event.deleted": "O grupo \"%1\" foi deletado" diff --git a/public/language/pt_BR/pages.json b/public/language/pt_BR/pages.json index a65c95781b..ae42c35f0f 100644 --- a/public/language/pt_BR/pages.json +++ b/public/language/pt_BR/pages.json @@ -11,6 +11,7 @@ "user.followers": "Pessoas que Seguem %1", "user.posts": "Posts feitos por %1", "user.topics": "Tópicos criados por %1", + "user.groups": "%1's Groups", "user.favourites": "Posts Favoritos de %1", "user.settings": "Configurações de Usuário", "maintenance.text": "%1 está atualmente sob manutenção. Por favor retorne em outro momento.", diff --git a/public/language/pt_BR/reset_password.json b/public/language/pt_BR/reset_password.json index 7646899cd1..bf96416678 100644 --- a/public/language/pt_BR/reset_password.json +++ b/public/language/pt_BR/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Por favor digite seu endereço de email e nós iremos lhe enviar em email com instruções de como reconfigurar a sua conta.", "enter_email_address": "Digite seu Email", "password_reset_sent": "Reconfiguração de Senha Enviada", - "invalid_email": "Email Inválido / Email não existe!" + "invalid_email": "Email Inválido / Email não existe!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/pt_BR/search.json b/public/language/pt_BR/search.json index f4d633ffd7..9f10c0970b 100644 --- a/public/language/pt_BR/search.json +++ b/public/language/pt_BR/search.json @@ -3,5 +3,33 @@ "no-matches": "Nenhum resultado encontrado", "in": "Em", "by": "Por", - "posted-by": "Postado por" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Postado por", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/pt_BR/users.json b/public/language/pt_BR/users.json index dc447048a0..32edc568f5 100644 --- a/public/language/pt_BR/users.json +++ b/public/language/pt_BR/users.json @@ -5,7 +5,7 @@ "search": "Procurar", "enter_username": "Digite um nome de usuário para procurar", "load_more": "Carregar Mais", - "users-found-search-took": "%1 usuário(s) encontrado(s)! A pesquisa demorou %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filtrar Por", "online-only": "Apenas Online", "picture-only": "Apenas foto" diff --git a/public/language/ro/email.json b/public/language/ro/email.json index 0e3a1da8ab..25f9723466 100644 --- a/public/language/ro/email.json +++ b/public/language/ro/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "Pentru a continua cu resetarea parolei, te rugăm sa apeși pe următorul link:", "reset.cta": "Apasă aici pentru a-ți reseta parola", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Ultimele mesaje de la %1", "digest.cta": "Apasă aici pentru a vizita %1", diff --git a/public/language/ro/error.json b/public/language/ro/error.json index 06cad8ebe8..1e7de8b50b 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -35,6 +35,7 @@ "topic-locked": "Subiect Închis", "still-uploading": "Te rugăm să aștepți până se termină uploadul.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Te rugăm să introduci un titlu mai scurt. Titlurile nu pot fi mai lungi de %1 caractere.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/ro/groups.json b/public/language/ro/groups.json index 816af582ea..03cacf8b36 100644 --- a/public/language/ro/groups.json +++ b/public/language/ro/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Ultimele Mesaje", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/ro/pages.json b/public/language/ro/pages.json index c3b65dfd23..141c5fb1df 100644 --- a/public/language/ro/pages.json +++ b/public/language/ro/pages.json @@ -11,6 +11,7 @@ "user.followers": "Utilizatori care îl urmăresc pe %1", "user.posts": "Mesaje postate de %1", "user.topics": "Subiecte create de %1", + "user.groups": "%1's Groups", "user.favourites": "Mesajele favorite ale lui %1", "user.settings": "Setări Utilizator", "maintenance.text": "%1 este momentan în mentenanță. Întoarce-te în curând!", diff --git a/public/language/ro/reset_password.json b/public/language/ro/reset_password.json index b4ae4564f8..d9edc5c856 100644 --- a/public/language/ro/reset_password.json +++ b/public/language/ro/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Te rugăm sa introduci adresa ta de email și îți vom trimite un email cu instrucțiuni pentru a îți reseta contul tău de utilizator.", "enter_email_address": "Introdu adresă de email", "password_reset_sent": "Emailul pentru resetarea parolei a fost trimis", - "invalid_email": "Adresă de email invalidă / Adresa de email nu există!" + "invalid_email": "Adresă de email invalidă / Adresa de email nu există!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/ro/search.json b/public/language/ro/search.json index 35c5b72b74..cdae3636ce 100644 --- a/public/language/ro/search.json +++ b/public/language/ro/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/ro/users.json b/public/language/ro/users.json index 065d2b07e2..4ef70026a8 100644 --- a/public/language/ro/users.json +++ b/public/language/ro/users.json @@ -5,7 +5,7 @@ "search": "Căutare", "enter_username": "Introdu un nume de utilizator pentru a căuta", "load_more": "Încarcă mai multe", - "users-found-search-took": "%1 utilizator(i) găsit! Căutarea a durat %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/ru/email.json b/public/language/ru/email.json index 9b070ed2b2..eed54608d0 100644 --- a/public/language/ru/email.json +++ b/public/language/ru/email.json @@ -9,6 +9,9 @@ "reset.text1": "Мы получили запрос на сброс Вашего пароля. Если Вы не подавали запрос, пожалуйста, проигнорируйте это сообщение.", "reset.text2": "Для продолжения процедуры изменения пароля, пожалуйста, перейдите по ссылке:", "reset.cta": "Кликните здесь для изменения пароля", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "У Вас непрочитанные уведомления от %1:", "digest.latest_topics": "Последние темы %1", "digest.cta": "Кликните здесь для просмотра %1", diff --git a/public/language/ru/error.json b/public/language/ru/error.json index d6ac5e2d25..5683d863d1 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -35,6 +35,7 @@ "topic-locked": "Тема закрыта", "still-uploading": "Пожалуйста, подождите завершения загрузки.", "content-too-short": "Пост должен содержать минимум %1 симв.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Заголовок должен содержать минимум %1 симв.", "title-too-long": "Заголовок не может быть длиннее %1 символов.", "too-many-posts": "Вы можете делать пост один раз в %1 сек.", diff --git a/public/language/ru/groups.json b/public/language/ru/groups.json index 55a2f35561..4b86076056 100644 --- a/public/language/ru/groups.json +++ b/public/language/ru/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Последние записи", "details.private": "Приватная группа", "details.public": "Открытая группа", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Настройки группы", "event.updated": "Настройки группы обновлены", "event.deleted": "Группа \"%1\" удалена" diff --git a/public/language/ru/pages.json b/public/language/ru/pages.json index 85348af836..f8a014193b 100644 --- a/public/language/ru/pages.json +++ b/public/language/ru/pages.json @@ -11,6 +11,7 @@ "user.followers": "Читают %1", "user.posts": "Пост написан %1", "user.topics": "Темы созданы %1", + "user.groups": "%1's Groups", "user.favourites": "Избранные сообщения %1", "user.settings": "Настройки", "maintenance.text": "%1 в настоящее время на обслуживании. Пожалуйста, возвращайтесь позже.", diff --git a/public/language/ru/reset_password.json b/public/language/ru/reset_password.json index fdcb497d10..c9b523cf2e 100644 --- a/public/language/ru/reset_password.json +++ b/public/language/ru/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Пожалуйста введите ваш email адрес и мы отправим Вам письмо с инструкцией восстановления пароля.", "enter_email_address": "Введите Email адрес", "password_reset_sent": "Пароль Отправлен", - "invalid_email": "Неверный Email / Email не существует!" + "invalid_email": "Неверный Email / Email не существует!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/ru/search.json b/public/language/ru/search.json index aeb1235df2..f6ecb8d611 100644 --- a/public/language/ru/search.json +++ b/public/language/ru/search.json @@ -1,7 +1,35 @@ { "results_matching": "%1 результатов по фразе \"%2\", (%3 секунды) ", - "no-matches": "No matches found", + "no-matches": "Совпадений не найдено", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/ru/users.json b/public/language/ru/users.json index 78251703d2..e4253bcf62 100644 --- a/public/language/ru/users.json +++ b/public/language/ru/users.json @@ -5,7 +5,7 @@ "search": "Поиск", "enter_username": "Введите имя пользователя для поиска", "load_more": "Загрузить еще", - "users-found-search-took": "Нашел %1 пользователя(ей)! Поиск занял %2 мс.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/sc/email.json b/public/language/sc/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/sc/email.json +++ b/public/language/sc/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/sc/error.json b/public/language/sc/error.json index 6079502fae..9bbcf03247 100644 --- a/public/language/sc/error.json +++ b/public/language/sc/error.json @@ -35,6 +35,7 @@ "topic-locked": "Topic Locked", "still-uploading": "Please wait for uploads to complete.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/sc/groups.json b/public/language/sc/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/sc/groups.json +++ b/public/language/sc/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/sc/pages.json b/public/language/sc/pages.json index 4ccd57cfd2..0f846179c3 100644 --- a/public/language/sc/pages.json +++ b/public/language/sc/pages.json @@ -11,6 +11,7 @@ "user.followers": "Gente chi Sighit %1", "user.posts": "Arresonos fatos dae %1", "user.topics": "Topics created by %1", + "user.groups": "%1's Groups", "user.favourites": "Arresonos Preferidos de %1", "user.settings": "Sèberos de Impitadore", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/sc/reset_password.json b/public/language/sc/reset_password.json index 877f9c716e..d86b716c31 100644 --- a/public/language/sc/reset_password.json +++ b/public/language/sc/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Pro praghere pone s'indiritzu email tuo e t'amus a imbiare un'email cun is istrutziones pro torrare a assentare s'intrada tua.", "enter_email_address": "Pone s'Indiritzu Email", "password_reset_sent": "Còdighe pro Torrare a Assentare sa Password Imbiadu", - "invalid_email": "Email Non Bàlida / Email chi no esistit!" + "invalid_email": "Email Non Bàlida / Email chi no esistit!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/sc/search.json b/public/language/sc/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/sc/search.json +++ b/public/language/sc/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/sc/users.json b/public/language/sc/users.json index 56b67f30f8..19e6cfe95f 100644 --- a/public/language/sc/users.json +++ b/public/language/sc/users.json @@ -5,7 +5,7 @@ "search": "Chirca", "enter_username": "Pone unu nùmene de impitadore de chircare", "load_more": "Càrriga de prus", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/sk/email.json b/public/language/sk/email.json index e3199a9b14..f290435e75 100644 --- a/public/language/sk/email.json +++ b/public/language/sk/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "To continue with the password reset, please click on the following link:", "reset.cta": "Click here to reset your password", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "You have unread notifications from %1:", "digest.latest_topics": "Latest topics from %1", "digest.cta": "Click here to visit %1", diff --git a/public/language/sk/error.json b/public/language/sk/error.json index 92f07fce4c..0ca1924e76 100644 --- a/public/language/sk/error.json +++ b/public/language/sk/error.json @@ -35,6 +35,7 @@ "topic-locked": "Uzamknutá téma", "still-uploading": "Prosím čakajte na dokončenie nahrávania", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Prosím uvedťe kratší názov. Názov nesmie byť dlhší ako 1 % znakov", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/sk/groups.json b/public/language/sk/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/sk/groups.json +++ b/public/language/sk/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/sk/pages.json b/public/language/sk/pages.json index bcc524ed0d..c54ac7e71f 100644 --- a/public/language/sk/pages.json +++ b/public/language/sk/pages.json @@ -11,6 +11,7 @@ "user.followers": "Užívatelia následujúci %1", "user.posts": "Príspevky od %1", "user.topics": "Téma vytvorená %1\n", + "user.groups": "%1's Groups", "user.favourites": "%1's obľubených príspevkov", "user.settings": "Užívatelské nadstavenie", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/sk/reset_password.json b/public/language/sk/reset_password.json index bceaea8148..2391c09cae 100644 --- a/public/language/sk/reset_password.json +++ b/public/language/sk/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Zadajte svoju emailovú adresu a my Vám pošleme informácie, ako môžete obnoviť svoje heslo.", "enter_email_address": "Zadajte e-mail", "password_reset_sent": "Obnova hesla odoslaná", - "invalid_email": "Zlý email / Email neexistuje!" + "invalid_email": "Zlý email / Email neexistuje!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/sk/search.json b/public/language/sk/search.json index c89241d382..a04eb4fc1e 100644 --- a/public/language/sk/search.json +++ b/public/language/sk/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/sk/users.json b/public/language/sk/users.json index 56188b953e..819f861de7 100644 --- a/public/language/sk/users.json +++ b/public/language/sk/users.json @@ -5,7 +5,7 @@ "search": "Vyhľadávať", "enter_username": "Zadaj užívateľské meno k hľadaniu", "load_more": "Načítať dalšie", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/sv/email.json b/public/language/sv/email.json index b6ef31353f..808c73caa8 100644 --- a/public/language/sv/email.json +++ b/public/language/sv/email.json @@ -9,6 +9,9 @@ "reset.text1": "Vi fick en förfrågan om att återställa ditt lösenord, möjligen för att du har glömt det. Om detta inte är fallet, så kan du bortse från det här epostmeddelandet. ", "reset.text2": "För att fortsätta med återställning av lösenordet så kan du klicka på följande länk:", "reset.cta": "Klicka här för att återställa ditt lösenord", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Du har olästa notiser från %1:", "digest.latest_topics": "Senaste ämnen från %1", "digest.cta": "Klicka här för att besöka %1", diff --git a/public/language/sv/error.json b/public/language/sv/error.json index d1d82a2f0d..bf9769aa41 100644 --- a/public/language/sv/error.json +++ b/public/language/sv/error.json @@ -35,6 +35,7 @@ "topic-locked": "Ämnet låst", "still-uploading": "Vänta medan uppladdningen slutförs.", "content-too-short": "Skriv ett längre inlägg. Inlägget måste ha minst %1 tecken.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Skriv en längre rubrik. Rubriken måste ha minst %1 tecken.", "title-too-long": "Skriv in en kortare rubrik. Rubriker får inte vara längre än %1 tecken.", "too-many-posts": "Du kan endast skapa inlägg var %1:e sekund - vänta ett tag innan du försöker skapa ett nytt inlägg", diff --git a/public/language/sv/groups.json b/public/language/sv/groups.json index 92a4eeb90b..fdba1db1b1 100644 --- a/public/language/sv/groups.json +++ b/public/language/sv/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Senaste inlägg", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/sv/pages.json b/public/language/sv/pages.json index 2082249d8c..f7a4904a84 100644 --- a/public/language/sv/pages.json +++ b/public/language/sv/pages.json @@ -11,6 +11,7 @@ "user.followers": "Personer som följer %1", "user.posts": "Inlägg skapat av %1", "user.topics": "Ämnen skapade av %1", + "user.groups": "%1's Groups", "user.favourites": "%1's favorit-inlägg", "user.settings": "Avnändarinställningar", "maintenance.text": "%1 genomgår underhåll just nu. Vänligen kom tillbaka lite senare.", diff --git a/public/language/sv/reset_password.json b/public/language/sv/reset_password.json index 03682d812e..a3771a31b4 100644 --- a/public/language/sv/reset_password.json +++ b/public/language/sv/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Var god fyll i din epost-adress så får du snart en epost med instruktioner hur du återsätller ditt konto.", "enter_email_address": "Skriv in epostadress", "password_reset_sent": "Lösenordsåterställning skickad", - "invalid_email": "Felaktig epost / Epost finns inte!" + "invalid_email": "Felaktig epost / Epost finns inte!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/sv/search.json b/public/language/sv/search.json index 193ea99480..0e4e831f93 100644 --- a/public/language/sv/search.json +++ b/public/language/sv/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/sv/users.json b/public/language/sv/users.json index 2b370c1146..591a32c344 100644 --- a/public/language/sv/users.json +++ b/public/language/sv/users.json @@ -5,7 +5,7 @@ "search": "Sök", "enter_username": "Ange ett användarnamn för att söka", "load_more": "Ladda fler", - "users-found-search-took": "%1 användare hittades! Sökningen tog %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/th/email.json b/public/language/th/email.json index 18bf7c5d1f..d91ba43963 100644 --- a/public/language/th/email.json +++ b/public/language/th/email.json @@ -9,6 +9,9 @@ "reset.text1": "We received a request to reset your password, possibly because you have forgotten it. If this is not the case, please ignore this email.", "reset.text2": "เพื่อดำเนินการตั้งรหัสผ่านใหม่ต่อไป, โปรดกดที่ลิ้งค์นี้:", "reset.cta": "กดตรงนี้เพื่อตั้งรหัสผ่านใหม่", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "คุณมีข้อความแจ้งเตือนที่ยังไม่ได้อ่านจาก %1:", "digest.latest_topics": "หัวข้อสนทนาล่าสุดจาก %1", "digest.cta": "กดตรงนี้เพื่อเข้าดู %1", diff --git a/public/language/th/error.json b/public/language/th/error.json index 55dc809071..05985e9b49 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -35,6 +35,7 @@ "topic-locked": "Topic Locked", "still-uploading": "Please wait for uploads to complete.", "content-too-short": "Please enter a longer post. Posts should contain at least %1 characters.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Please enter a longer title. Titles should contain at least %1 characters.", "title-too-long": "Please enter a shorter title. Titles can't be longer than %1 characters.", "too-many-posts": "You can only post once every %1 seconds - please wait before posting again", diff --git a/public/language/th/groups.json b/public/language/th/groups.json index 6dfd71256b..950fe6dca3 100644 --- a/public/language/th/groups.json +++ b/public/language/th/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Latest Posts", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/th/pages.json b/public/language/th/pages.json index a227f62340..44f8b127e1 100644 --- a/public/language/th/pages.json +++ b/public/language/th/pages.json @@ -11,6 +11,7 @@ "user.followers": "ผู้ใช้ที่ติดตาม %1", "user.posts": "กระทู้โดย %1", "user.topics": "Topics created by %1", + "user.groups": "%1's Groups", "user.favourites": "กระทู้ที่ %1 ชอบ", "user.settings": "ตั้งค่าผู้ใช้", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", diff --git a/public/language/th/reset_password.json b/public/language/th/reset_password.json index 2b12834604..499f2f7136 100644 --- a/public/language/th/reset_password.json +++ b/public/language/th/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "กรุณาใส่อีเมลของคุณ เราจะส่งอีเมลให้คุณพร้อมคำแนะนำเกี่ยวกับวิธีการรีเซ็ตบัญชีของคุณ", "enter_email_address": "ใส่อีเมล์", "password_reset_sent": "รหัสรีเซ็ตถูกส่งออกไปแล้ว", - "invalid_email": "อีเมล์ไม่ถูกต้อง / อีเมล์ไม่มีอยู่!" + "invalid_email": "อีเมล์ไม่ถูกต้อง / อีเมล์ไม่มีอยู่!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/th/search.json b/public/language/th/search.json index 973ff03e13..4e865998e1 100644 --- a/public/language/th/search.json +++ b/public/language/th/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/th/users.json b/public/language/th/users.json index a3dddb41fd..542689e182 100644 --- a/public/language/th/users.json +++ b/public/language/th/users.json @@ -5,7 +5,7 @@ "search": "ค้นหา", "enter_username": "ใส่ชื่อผู้ใช้เพื่อค้นหา", "load_more": "โหลดเพิ่มเติม", - "users-found-search-took": "%1 user(s) found! Search took %2 ms.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/tr/category.json b/public/language/tr/category.json index f29f0c81d0..ba1c4f34ef 100644 --- a/public/language/tr/category.json +++ b/public/language/tr/category.json @@ -1,7 +1,7 @@ { "new_topic_button": "Yeni Başlık", "no_topics": " Bu kategoride hiç konu yok.
Yeni bir konu açmak istemez misiniz?", - "browsing": "dolaşıyor", + "browsing": "gözden geçiriliyor", "no_replies": "Kimse yanıtlamadı", "share_this_category": "Bu kategoriyi paylaş", "ignore": "Yoksay" diff --git a/public/language/tr/email.json b/public/language/tr/email.json index c69e7d0c8f..350df09f81 100644 --- a/public/language/tr/email.json +++ b/public/language/tr/email.json @@ -9,6 +9,9 @@ "reset.text1": "Şifrenizi değiştirmek istediğinize dair bir ileti aldık. Eğer böyle bir istek göndermediyseniz, lütfen bu e-postayı görmezden gelin.", "reset.text2": "Parola değiştirme işlemine devam etmek için aşağıdaki bağlantıya tıklayın:", "reset.cta": "Parolanızı değiştirmek için buraya tıklayın", + "reset.notify.subject": "Şifre başarıyla değiştirildi", + "reset.notify.text1": "Şifrenizin %1 zamanında başarı ile değiştirildiğini bildirmek isteriz.", + "reset.notify.text2": "Bunu siz yetkilendirmediyseniz, lütfen hiç vakit kaybetmeden site yöneticisine bu durumu bildiriniz.", "digest.notifications": "Okunmamış bazı bildirimleriniz var", "digest.latest_topics": "En güncel konular", "digest.cta": "Ziyaret etmek için buraya tıklayın", @@ -17,8 +20,8 @@ "notif.chat.subject": "Okunmamış bazı iletileriniz var", "notif.chat.cta": "Sohbete devam etmek için buraya tıklayın", "notif.chat.unsub.info": "Bu bildirim şectiğiniz ayarlar yüzünden gönderildi.", - "notif.post.cta": "Click here to read the full topic", - "notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.", + "notif.post.cta": "Konunun tamamını okumak için buraya tıklayın", + "notif.post.unsub.info": "Bu yazı bildirimi size abonelik ayarlarınız nedeni ile gönderilmiştir.", "test.text1": "Bu ileti NodeBB e-posta ayarlarınızın doğru çalışıp çalışmadığını kontrol etmek için gönderildi.", "unsub.cta": "Buraya tıklayarak ayarlarınızı değiştirebilirsiniz.", "closing": "Teşekkürler!" diff --git a/public/language/tr/error.json b/public/language/tr/error.json index 4ab34132fc..a18f42652b 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -18,7 +18,7 @@ "username-taken": "Kullanıcı İsmi Alınmış", "email-taken": "E-posta Alınmış", "email-not-confirmed": "E-postanız onaylanmamış, onaylamak için lütfen buraya tıklayın.", - "email-not-confirmed-chat": "You are unable to chat until your email is confirmed", + "email-not-confirmed-chat": "Email adresiniz doğrulanmadan sohbet edemezsiniz.", "username-too-short": "Kullanıcı ismi çok kısa", "username-too-long": "Kullanıcı ismi çok uzun.", "user-banned": "Kullanıcı Yasaklı", @@ -35,6 +35,7 @@ "topic-locked": "Başlık Kilitli", "still-uploading": "Lütfen yüklemelerin bitmesini bekleyin.", "content-too-short": "Lütfen daha uzun bir ileti girin. En az %1 karakter.", + "content-too-long": "Lütfen daha kısa bir yayın girin. Yayınlar %1 karakterden uzun olamaz.", "title-too-short": "Lütfen daha uzun bir başlık girin. En az %1 karakter.", "title-too-long": "Lütfen daha kısa bir başlık girin. Başlıklar %1 karakterden uzun olamaz.", "too-many-posts": "Sadece %1 saniyede bir ileti gönderebilirsiniz.", @@ -44,13 +45,13 @@ "already-favourited": "Bu iletiyi zaten favorilerinize eklediniz", "already-unfavourited": "Bu iletiyi zaten favorilerinizden çıkardınız", "cant-ban-other-admins": "Başka yöneticileri yasaklayamazsınız!", - "invalid-image-type": "Invalid image type. Allowed types are: %1", - "invalid-image-extension": "Invalid image extension", + "invalid-image-type": "Geçersiz resim uzantısı. Izin verilen uzantılar: %1", + "invalid-image-extension": "Geçersiz resim uzantısı", "group-name-too-short": "Grup ismi çok kısa", "group-already-exists": "Grup zaten var", "group-name-change-not-allowed": "Grup ismini değiştiremezsiniz", - "group-already-member": "You are already part of this group", - "group-needs-owner": "This group requires at least one owner", + "group-already-member": "Bu grubun zaten bir parçasısınız.", + "group-needs-owner": "Bu grubu en az bir kişi sahiplenmesi gerekiyor", "post-already-deleted": "İleti zaten silinmiş", "post-already-restored": "İleti zaten geri getirilmiş", "topic-already-deleted": "Başlık zaten silinmiş", @@ -62,12 +63,12 @@ "signature-too-long": "İmza en fazla %1 karakter olabilir!", "cant-chat-with-yourself": "Kendinizle sohbet edemezsiniz!", "chat-restricted": "Bu kullanıcı sohbet ayarlarını kısıtlamış. Bu kişiye mesaj gönderebilmeniz için sizi takip etmeleri gerekiyor", - "too-many-messages": "You have sent too many messages, please wait awhile.", + "too-many-messages": "Ardı ardına çok fazla mesaj yolladınız, lütfen biraz bekleyiniz.", "reputation-system-disabled": "Saygınlık sistemi kapatılmış.", "downvoting-disabled": "Aşagı oylama kapatılmış", "not-enough-reputation-to-downvote": "Bu iletiyi aşagı oylamak için yeterince saygınlığınız yok.", "not-enough-reputation-to-flag": "Bu iletiyi bayraklamak için yeterince saygınlığınız yok", "reload-failed": "NodeBB tekrar yüklenirken bir sorunla karşılaştı: “%1“. NodeBB varolan dosyaları servis etmeye devam edecek.", "registration-error": "Kayıt Hatası", - "parse-error": "Something went wrong while parsing server response" + "parse-error": "Sunucu yanıtı çözümlemesi sırasında bir şeyler ters gitti" } \ No newline at end of file diff --git a/public/language/tr/global.json b/public/language/tr/global.json index 152aba5d0e..cd2e8e18c9 100644 --- a/public/language/tr/global.json +++ b/public/language/tr/global.json @@ -3,10 +3,10 @@ "search": "Arama", "buttons.close": "Kapat", "403.title": "Erişim Engellendi", - "403.message": "You seem to have stumbled upon a page that you do not have access to.", - "403.login": "Perhaps you should try logging in?", + "403.message": "Erişim izniniz olmayan bir sayfaya denk gelmiş gibisiniz.", + "403.login": "Belki de tekrar giriş yapmayı denersiniz?", "404.title": "Bulunamadı", - "404.message": "You seem to have stumbled upon a page that does not exist. Return to the home page.", + "404.message": "Erişim izniniz olmayan bir sayfaya denk gelmiş gibisiniz.Anasayfaya geri dönün.", "500.title": "Dahili hata.", "500.message": "Ups! Bir şeyler ters gitti sanki!", "register": "Kayıt Ol", @@ -27,7 +27,7 @@ "header.tags": "Etiketler", "header.popular": "Popüler", "header.users": "Kullanıcılar", - "header.groups": "Groups", + "header.groups": "Gruplar", "header.chats": "Sohbetler", "header.notifications": "Bildirimler", "header.search": "Arama", @@ -75,7 +75,7 @@ "updated.title": "Forum güncellendi", "updated.message": "Bu forum şu anda güncellendi. Sayfayı tekrar yüklemek için buraya tıklayın.", "privacy": "Gizlilik", - "follow": "Follow", - "unfollow": "Unfollow", + "follow": "Takip et", + "unfollow": "Takip etmeyi bırak", "delete_all": "Hepsini Sil" } \ No newline at end of file diff --git a/public/language/tr/groups.json b/public/language/tr/groups.json index d2c411228d..3b765a2f7b 100644 --- a/public/language/tr/groups.json +++ b/public/language/tr/groups.json @@ -1,21 +1,23 @@ { "groups": "Guruplar", "view_group": "Grubu Gör", - "owner": "Group Owner", - "new_group": "Create New Group", - "no_groups_found": "There are no groups to see", - "cover-instructions": "Drag and Drop a photo, drag to position, and hit Save", - "cover-change": "Change", - "cover-save": "Save", - "cover-saving": "Saving", + "owner": "Grup Kurucusu", + "new_group": "Yeni Grup Oluştur", + "no_groups_found": "Henüz hiç grup yok", + "cover-instructions": "Bir fotoğrafı Sürükleyin ve Bırakın, uygun yere sürükleyip Kaydet'e tıklayın.", + "cover-change": "Değiştir", + "cover-save": "Kaydet", + "cover-saving": "Kaydediliyor", "details.title": "Grup Detayları", "details.members": "Üye Listesi", - "details.pending": "Pending Members", + "details.pending": "Üyeler bekleniyor", "details.has_no_posts": "Bu grubun üyeleri henüz bir ileti göndermedi.", "details.latest_posts": "En son iletiler", - "details.private": "Private Group", - "details.public": "Public Group", - "details.owner_options": "Group Administration", - "event.updated": "Group details have been updated", - "event.deleted": "The group \"%1\" has been deleted" + "details.private": "Özel Grup", + "details.public": "Herkese Açık Grup", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", + "details.owner_options": "Grup Yöneticisi", + "event.updated": "Grup detayları güncellenmiştir", + "event.deleted": "\"%1\" grubu silinmiş" } \ No newline at end of file diff --git a/public/language/tr/pages.json b/public/language/tr/pages.json index e3d1cf9cf8..5171f4232f 100644 --- a/public/language/tr/pages.json +++ b/public/language/tr/pages.json @@ -11,6 +11,7 @@ "user.followers": "%1 takip edenler", "user.posts": "%1 tarafından gönderilen iletiler", "user.topics": "%1 tarafından gönderilen başlıklar", + "user.groups": "%1 Kişisine Ait Gruplar", "user.favourites": "%1'in Favori İletileri", "user.settings": "Kullanıcı Ayarları", "maintenance.text": "%1 şu anda bakımda. Lütfen bir süre sonra tekrar deneyin.", diff --git a/public/language/tr/recent.json b/public/language/tr/recent.json index 4773c22dfd..a1af8adb56 100644 --- a/public/language/tr/recent.json +++ b/public/language/tr/recent.json @@ -6,13 +6,13 @@ "year": "Yıl", "alltime": "Hepsi", "no_recent_topics": "Güncel konular yok.", - "there-is-a-new-topic": "There is a new topic.", - "there-is-a-new-topic-and-a-new-post": "There is a new topic and a new post.", - "there-is-a-new-topic-and-new-posts": "There is a new topic and %1 new posts.", - "there-are-new-topics": "There are %1 new topics.", - "there-are-new-topics-and-a-new-post": "There are %1 new topics and a new post.", - "there-are-new-topics-and-new-posts": "There are %1 new topics and %2 new posts.", - "there-is-a-new-post": "There is a new post.", - "there-are-new-posts": "There are %1 new posts.", - "click-here-to-reload": "Click here to reload." + "there-is-a-new-topic": "Yeni bir konu mevcut.", + "there-is-a-new-topic-and-a-new-post": "Yeni bir konu ve yayın mevcut.", + "there-is-a-new-topic-and-new-posts": "Bir adet yeni konu ve %1 adet yeni yayın var.", + "there-are-new-topics": "%1 adet yeni konu mevcut.", + "there-are-new-topics-and-a-new-post": "%1 adet yeni konu ve bir adet yeni yayın mevcut.", + "there-are-new-topics-and-new-posts": "%1 adet yeni konu %2 adet yeni yayın mevcut.", + "there-is-a-new-post": "Yeni bir yayın mevcut.", + "there-are-new-posts": "%1 adet yeni yayın mevcut.", + "click-here-to-reload": "Yenilemek için buraya tıklayın." } \ No newline at end of file diff --git a/public/language/tr/reset_password.json b/public/language/tr/reset_password.json index 0eb0497ee3..60f0346516 100644 --- a/public/language/tr/reset_password.json +++ b/public/language/tr/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Lütfen e-posta adresinizi girin , size hesabınızı nasıl sıfırlayacağınızı anlatan bir e-posta gönderelim", "enter_email_address": "E-posta Adresinizi girin", "password_reset_sent": "Şifre Yenilemesi Gönderildi", - "invalid_email": "Geçersiz E-posta / E-posta mevcut değil!" + "invalid_email": "Geçersiz E-posta / E-posta mevcut değil!", + "password_too_short": "Girdiğiniz şifre çok kısa, lütfen farklı bir şifre seçiniz.", + "passwords_do_not_match": "Girdiğiniz iki şifre birbirine uymuyor." } \ No newline at end of file diff --git a/public/language/tr/search.json b/public/language/tr/search.json index d3c5da5c91..0d079ffe4a 100644 --- a/public/language/tr/search.json +++ b/public/language/tr/search.json @@ -1,7 +1,35 @@ { "results_matching": "%1 tane “%2“ bulundu (%3 saniye)", - "no-matches": "No matches found", - "in": "In", - "by": "By", - "posted-by": "Posted by" + "no-matches": "Hiç eşleşme bulunamadı", + "in": "Konum:", + "by": "Kim Tarafından :", + "titles": "Başlıklar", + "titles-posts": "Başlıklar ve Yayınlar", + "posted-by": "Gönderen", + "in-categories": "Kategorilerde", + "search-child-categories": "Alt kategorilerde arat", + "reply-count": "Cevap Sayısı", + "at-least": "En az", + "at-most": "En fazla", + "post-time": "Yayınlama zamanı", + "newer-than": "Daha yeni", + "older-than": "Daha eski", + "any-date": "Herhangi bir tarih", + "yesterday": "Dün", + "one-week": "Bir hafta", + "two-weeks": "İki hafta", + "one-month": "Bir ay", + "three-months": "Üç ay", + "six-months": "Altı ay", + "one-year": "Bir yıl", + "sort-by": "Şuna göre filtrele", + "last-reply-time": "En son cevaplama süresi", + "topic-title": "Konu başlığı", + "number-of-replies": "Cevap sayısı", + "number-of-views": "Görüntüleme sayısı", + "topic-start-date": "Başlık açılma tarihi", + "username": "Kullanıcı Adı", + "category": "Kategori", + "descending": "Azalan düzene göre", + "ascending": "Artan düzene göre" } \ No newline at end of file diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json index aa6aa90855..6cd2424e0f 100644 --- a/public/language/tr/topic.json +++ b/public/language/tr/topic.json @@ -74,7 +74,7 @@ "fork_no_pids": "Hiç bir ileti seçilmedi!", "fork_success": "Başlık başarıyla ayrıldı!", "composer.title_placeholder": "Başlık ismini buraya girin...", - "composer.handle_placeholder": "Name", + "composer.handle_placeholder": "İsim", "composer.discard": "Vazgeç", "composer.submit": "Gönder", "composer.replying_to": "Yanıtlanan Konu %1", @@ -94,5 +94,5 @@ "oldest_to_newest": "En eskiden en yeniye", "newest_to_oldest": "En yeniden en eskiye", "most_votes": "En çok oy", - "most_posts": "Most posts" + "most_posts": "En sık yayın" } \ No newline at end of file diff --git a/public/language/tr/user.json b/public/language/tr/user.json index 90bd5eb06b..8fa7b4c5c9 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -2,8 +2,8 @@ "banned": "Yasaklı", "offline": "Çevrimdışı", "username": "Kullanıcı Adı", - "joindate": "Join Date", - "postcount": "Post Count", + "joindate": "Katılım Tarihi", + "postcount": "Yayın Sayısı", "email": "E-posta", "confirm_email": "E-posta onayla", "delete_account": "Hesabı Sil", @@ -18,7 +18,7 @@ "profile_views": "Profil Görüntülemeleri", "reputation": "Saygınlık", "favourites": "Favoriler", - "watched": "Watched", + "watched": "İzlendi", "followers": "Takipçiler", "following": "Takip Ediyor", "signature": "İmza", @@ -59,12 +59,12 @@ "digest_weekly": "Haftalık", "digest_monthly": "Aylık", "send_chat_notifications": "Çevrimiçi değilken gelen iletileri e-posta olarak gönder", - "send_post_notifications": "Send an email when replies are made to topics I am subscribed to", + "send_post_notifications": "Abone olduğum konulara cevap gelince bana eposta yolla", "has_no_follower": "Bu kullanıcının hiç takipçisi yok :(", "follows_no_one": "Bu kullanıcı kimseyi takip etmiyor :(", "has_no_posts": "Bu kullanıcı henüz birşey göndermedi.", "has_no_topics": "Bu kullanıcı henüz bir konu yaratmadı.", - "has_no_watched_topics": "This user didn't watch any topics yet.", + "has_no_watched_topics": "Bu kullanıcı henüz hiçbir konuyu izlemedi.", "email_hidden": "E-posta gizli", "hidden": "gizli", "paginate_description": "Sonsuz yükleme yerine konu ve iletileri sayfalara böl.", diff --git a/public/language/tr/users.json b/public/language/tr/users.json index 8858e75ddd..9e38f04530 100644 --- a/public/language/tr/users.json +++ b/public/language/tr/users.json @@ -5,8 +5,8 @@ "search": "Ara", "enter_username": "Aramak için bir kullanıcı adı girin", "load_more": "Daha Fazla Yükle", - "users-found-search-took": "%1 kullanıcı bulundu! Arama %2 ms sürdü.", - "filter-by": "Filter By", - "online-only": "Online only", - "picture-only": "Picture only" + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", + "filter-by": "Şu şekilde filtrele", + "online-only": "Sadece çevrimiçi", + "picture-only": "Sadece resim" } \ No newline at end of file diff --git a/public/language/vi/email.json b/public/language/vi/email.json index 97bd7549e8..d0d376eb34 100644 --- a/public/language/vi/email.json +++ b/public/language/vi/email.json @@ -9,6 +9,9 @@ "reset.text1": "Chúng tôi nhận được yêu cầu khởi tạo lại mật khẩu của bạn, rất có thể vì bạn đã quên mất nó. Nếu bạn không gởi yêu cầu, hãy bỏ qua email này.", "reset.text2": "Để đặt lại mật khẩu, hãy click vào liên kết sau:", "reset.cta": "Click vào đây để khởi tạo lại mật khẩu", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "Bạn có thông báo chưa đọc từ %1", "digest.latest_topics": "Chủ đề mới nhất từ %1", "digest.cta": "Click vào đây để truy cập %1", diff --git a/public/language/vi/error.json b/public/language/vi/error.json index 8dd065f637..e8da82c330 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -35,6 +35,7 @@ "topic-locked": "Chủ đề bị khóa", "still-uploading": "Vui lòng chờ upload", "content-too-short": "Vui lòng tạo bài viết dài hơn. Bài viết phải có ít nhất %1 ký tự.", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "Vui lòng nhập tiêu đề dài hơn. Tiêu đề phải có ít nhất %1 ký tự", "title-too-long": "Yêu cầu tiêu đề ngắn hơn. Không dài quá %1 ký tự", "too-many-posts": "Bạn chỉ có thể gửi một bài viết mỗi %1 giây - Xin chờ trong giây lát trước khi gửi lại.", diff --git a/public/language/vi/groups.json b/public/language/vi/groups.json index c3a1d060d0..b649073d9b 100644 --- a/public/language/vi/groups.json +++ b/public/language/vi/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "Bài mới nhất", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/vi/pages.json b/public/language/vi/pages.json index 697490930b..153a1f31d8 100644 --- a/public/language/vi/pages.json +++ b/public/language/vi/pages.json @@ -11,6 +11,7 @@ "user.followers": "Người đang theo dõi %1", "user.posts": "Các bài được %1 viết", "user.topics": "Các chủ đề được %1 tạo", + "user.groups": "%1's Groups", "user.favourites": "Các bài gửi yêu thích của %1", "user.settings": "Thiết lập cho người dùng", "maintenance.text": "%1 đang được bảo trì. Xin vui lòng quay lại sau.", diff --git a/public/language/vi/reset_password.json b/public/language/vi/reset_password.json index edc196ba6c..32db56aab3 100644 --- a/public/language/vi/reset_password.json +++ b/public/language/vi/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "Xin hãy nhập địa chỉ email của bạn và chúng tôi sẽ gửi một email hướng dẫn cách thiết lập lại tài khoản cho bạn", "enter_email_address": "Nhập địa chỉ Email", "password_reset_sent": "Đã gửi mật khẩu được thiết lập lại", - "invalid_email": "Email không đúng / Email không tồn tại!" + "invalid_email": "Email không đúng / Email không tồn tại!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/vi/search.json b/public/language/vi/search.json index 254873ed38..a6450e408b 100644 --- a/public/language/vi/search.json +++ b/public/language/vi/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/vi/users.json b/public/language/vi/users.json index 405c9de32b..5e08193fd4 100644 --- a/public/language/vi/users.json +++ b/public/language/vi/users.json @@ -5,7 +5,7 @@ "search": "Tìm kiếm", "enter_username": "Gõ tên người dùng để tìm kiếm", "load_more": "Tải thêm", - "users-found-search-took": "%1 tài khoản(s) tìm thấy! Tìm trong %2 mili giây.", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/zh_CN/email.json b/public/language/zh_CN/email.json index 341874ec67..e81b810a9a 100644 --- a/public/language/zh_CN/email.json +++ b/public/language/zh_CN/email.json @@ -9,6 +9,9 @@ "reset.text1": "我们收到了重置您帐户密码的申请,可能是因为您遗忘了密码。如果不是,请忽略这封邮件。", "reset.text2": "如需继续重置密码,请点击下面的链接:", "reset.cta": "点击这里重置您的密码", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "您有来自 %1 的未读通知:", "digest.latest_topics": "来自 %1 的最新主题", "digest.cta": "点击这里访问 %1", diff --git a/public/language/zh_CN/error.json b/public/language/zh_CN/error.json index eef3088946..cfcb33aee8 100644 --- a/public/language/zh_CN/error.json +++ b/public/language/zh_CN/error.json @@ -35,6 +35,7 @@ "topic-locked": "主题已锁定", "still-uploading": "请等待上传完成", "content-too-short": "请再输入一些内容,帖子至少要有 %1 个字符。", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "请再输入一些内容,标题至少要有 %1 个字符。", "title-too-long": "请输入更短的标题。不超过 %1 字。", "too-many-posts": "发帖间隔至少要 %1 秒 - 请稍候再发帖", diff --git a/public/language/zh_CN/groups.json b/public/language/zh_CN/groups.json index 10a70d94c2..5a4bdd5b1f 100644 --- a/public/language/zh_CN/groups.json +++ b/public/language/zh_CN/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "最新帖子", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/zh_CN/pages.json b/public/language/zh_CN/pages.json index 924e8bdfa4..36d10c1cb3 100644 --- a/public/language/zh_CN/pages.json +++ b/public/language/zh_CN/pages.json @@ -11,6 +11,7 @@ "user.followers": "关注 %1 的人", "user.posts": "%1 发布的帖子", "user.topics": "%1 创建的主题", + "user.groups": "%1's Groups", "user.favourites": "%1 收藏的帖子", "user.settings": "用户设置", "maintenance.text": "%1 正在进行维护。请稍后再来。", diff --git a/public/language/zh_CN/reset_password.json b/public/language/zh_CN/reset_password.json index 701651dfb6..ca294f9dc7 100644 --- a/public/language/zh_CN/reset_password.json +++ b/public/language/zh_CN/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "请输入您的电子邮箱地址,我们会发送一份邮件指导您重置密码。", "enter_email_address": "输入邮箱地址", "password_reset_sent": "密码重置邮件已发送。", - "invalid_email": "无效的电子邮箱/电子邮箱不存在!" + "invalid_email": "无效的电子邮箱/电子邮箱不存在!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/zh_CN/search.json b/public/language/zh_CN/search.json index 338db4e61b..25cc3605e5 100644 --- a/public/language/zh_CN/search.json +++ b/public/language/zh_CN/search.json @@ -3,5 +3,33 @@ "no-matches": "No matches found", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/zh_CN/users.json b/public/language/zh_CN/users.json index bd19c53fa9..f56a4fb88e 100644 --- a/public/language/zh_CN/users.json +++ b/public/language/zh_CN/users.json @@ -5,7 +5,7 @@ "search": "搜索", "enter_username": "输入用户名搜索", "load_more": "加载更多", - "users-found-search-took": "找到 %1 位用户!搜索耗时 %2 毫秒。", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/language/zh_TW/email.json b/public/language/zh_TW/email.json index 6a5e3ef124..1062070b96 100644 --- a/public/language/zh_TW/email.json +++ b/public/language/zh_TW/email.json @@ -9,6 +9,9 @@ "reset.text1": "我們收到一個重設密碼的請求,你忘掉了密碼嗎?如果不是,請忽略這封郵件。", "reset.text2": "要繼續重置密碼,請點擊以下鏈接:", "reset.cta": "點擊這裡重置密碼", + "reset.notify.subject": "Password successfully changed", + "reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.", + "reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.", "digest.notifications": "你有來自$1的未讀通知:", "digest.latest_topics": "來自%1的最新話題", "digest.cta": "點擊這裡訪問%1", diff --git a/public/language/zh_TW/error.json b/public/language/zh_TW/error.json index 5342050972..cb254c35aa 100644 --- a/public/language/zh_TW/error.json +++ b/public/language/zh_TW/error.json @@ -35,6 +35,7 @@ "topic-locked": "該主題已被鎖定", "still-uploading": "請等待上傳完成。", "content-too-short": "請輸入一個較長的帖子。 帖子需至少有 %1 個字。", + "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.", "title-too-short": "請輸入一個較長的標題。 標題需至少有 %1 個字。", "title-too-long": "請輸入一個較短的主題名稱。 標題不能超過 %1 個字元。", "too-many-posts": "你必須間隔 %1 秒後才能發表文章-請稍後", diff --git a/public/language/zh_TW/groups.json b/public/language/zh_TW/groups.json index 7e9ba9f239..a6c0d93c19 100644 --- a/public/language/zh_TW/groups.json +++ b/public/language/zh_TW/groups.json @@ -15,6 +15,8 @@ "details.latest_posts": "最新帖子", "details.private": "Private Group", "details.public": "Public Group", + "details.grant": "Grant/Rescind Ownership", + "details.kick": "Kick", "details.owner_options": "Group Administration", "event.updated": "Group details have been updated", "event.deleted": "The group \"%1\" has been deleted" diff --git a/public/language/zh_TW/pages.json b/public/language/zh_TW/pages.json index deaa502ffe..bcb655c3e2 100644 --- a/public/language/zh_TW/pages.json +++ b/public/language/zh_TW/pages.json @@ -11,6 +11,7 @@ "user.followers": "People who Follow %1", "user.posts": "文章由 %1 所張貼", "user.topics": "主題由 %1 所創建", + "user.groups": "%1's Groups", "user.favourites": "%1's 最喜愛的文章", "user.settings": "使用者設定", "maintenance.text": "%1目前正在進行維修。請稍後再來。", diff --git a/public/language/zh_TW/reset_password.json b/public/language/zh_TW/reset_password.json index b4c454d4da..9f0ab67aa1 100644 --- a/public/language/zh_TW/reset_password.json +++ b/public/language/zh_TW/reset_password.json @@ -10,5 +10,7 @@ "enter_email": "請輸入您的Email地址,我們會發送郵件告訴您如何重設密碼。", "enter_email_address": "輸入郵箱地址", "password_reset_sent": "密碼重設郵件已發送。", - "invalid_email": "非法的郵箱地址/郵箱不存在!" + "invalid_email": "非法的郵箱地址/郵箱不存在!", + "password_too_short": "The password entered is too short, please pick a different password.", + "passwords_do_not_match": "The two passwords you've entered do not match." } \ No newline at end of file diff --git a/public/language/zh_TW/search.json b/public/language/zh_TW/search.json index 426fa932b4..9fa8e84f2a 100644 --- a/public/language/zh_TW/search.json +++ b/public/language/zh_TW/search.json @@ -1,7 +1,35 @@ { "results_matching": "有%1個跟\"%2\"匹配的結果(%3秒)", - "no-matches": "No matches found", + "no-matches": "沒有找到匹配的主題", "in": "In", "by": "By", - "posted-by": "Posted by" + "titles": "Titles", + "titles-posts": "Titles and Posts", + "posted-by": "Posted by", + "in-categories": "In Categories", + "search-child-categories": "Search child categories", + "reply-count": "Reply Count", + "at-least": "At least", + "at-most": "At most", + "post-time": "Post time", + "newer-than": "Newer than", + "older-than": "Older than", + "any-date": "Any date", + "yesterday": "Yesterday", + "one-week": "One week", + "two-weeks": "Two weeks", + "one-month": "One month", + "three-months": "Three months", + "six-months": "Six months", + "one-year": "One year", + "sort-by": "Sort by", + "last-reply-time": "Last reply time", + "topic-title": "Topic title", + "number-of-replies": "Number of replies", + "number-of-views": "Number of views", + "topic-start-date": "Topic start date", + "username": "Username", + "category": "Category", + "descending": "In descending order", + "ascending": "In ascending order" } \ No newline at end of file diff --git a/public/language/zh_TW/users.json b/public/language/zh_TW/users.json index 249b34d36f..b3c22fb165 100644 --- a/public/language/zh_TW/users.json +++ b/public/language/zh_TW/users.json @@ -5,7 +5,7 @@ "search": "搜尋", "enter_username": "輸入想找的使用者帳號", "load_more": "載入更多", - "users-found-search-took": "找到%1個用戶!搜索時間%2毫秒。", + "users-found-search-took": "%1 user(s) found! Search took %2 seconds.", "filter-by": "Filter By", "online-only": "Online only", "picture-only": "Picture only" diff --git a/public/src/admin/extend/widgets.js b/public/src/admin/extend/widgets.js index 1bf4a043ec..9632bbfa68 100644 --- a/public/src/admin/extend/widgets.js +++ b/public/src/admin/extend/widgets.js @@ -46,8 +46,6 @@ define('admin/extend/widgets', function() { appendToggle(ui.item); }, connectWith: "div" - }).on('click', '.toggle-widget', function() { - $(this).parents('.widget-panel').children('.panel-body').toggleClass('hidden'); }).on('click', '.delete-widget', function() { var panel = $(this).parents('.widget-panel'); @@ -56,8 +54,10 @@ define('admin/extend/widgets', function() { panel.remove(); } }); - }).on('dblclick', '.panel-heading', function() { - $(this).parents('.widget-panel').children('.panel-body').toggleClass('hidden'); + }).on('mouseup', '.panel-heading', function(evt) { + if ( !( $(this).parents('.widget-panel').is('.ui-sortable-helper') || $(evt.target).closest('.delete-widget').length ) ) { + $(this).parents('.widget-panel').children('.panel-body').toggleClass('hidden'); + } }); $('#widgets .save').on('click', saveWidgets); diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index fdd63556e4..dad64e35af 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -134,6 +134,19 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) return false; }); + $('.send-validation-email').on('click', function() { + var uids = getSelectedUids(); + if (!uids.length) { + return; + } + socket.emit('admin.user.sendValidationEmail', uids, function(err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[notifications:email-confirm-sent]]'); + }); + }) + $('.password-reset-email').on('click', function() { var uids = getSelectedUids(); if (!uids.length) { diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index cc7c0cbff1..cd87159420 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -275,8 +275,10 @@ $(document).ready(function() { // Enhancing all anchors to ajaxify... $(document.body).on('click', 'a', function (e) { - if (hrefEmpty(this.href) || this.target !== '' || this.protocol === 'javascript:' || $(this).attr('data-ajaxify') === 'false') { + if (this.target !== '') { return; + } else if (hrefEmpty(this.href) || this.protocol === 'javascript:' || $(this).attr('data-ajaxify') === 'false') { + return e.preventDefault(); } if (!window.location.pathname.match(/\/(403|404)$/g)) { diff --git a/public/src/app.js b/public/src/app.js index 35037c8033..5010ead25d 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -10,10 +10,6 @@ app.currentRoom = null; app.widgets = {}; app.cacheBuster = null; -// TODO: deprecate in 0.7.0, use app.user -app.username = null; -app.uid = null; - (function () { var showWelcomeMessage = false; var reconnecting = false; @@ -29,14 +25,7 @@ app.uid = null; socket = io.connect(config.websocketAddress, ioParams); reconnecting = false; - socket.on('event:connect', function (data) { - // TODO : deprecate in 0.7.0, use app.user - app.username = data.username; - app.userslug = data.userslug; - app.picture = data.picture; - app.uid = data.uid; - app.isAdmin = data.isAdmin; - + socket.on('event:connect', function () { app.showLoginMessage(); app.replaceSelfLinks(); $(window).trigger('action:connected'); @@ -182,9 +171,9 @@ app.uid = null; socket.emit('meta.rooms.enter', { enter: room, - username: app.username, - userslug: app.userslug, - picture: app.picture + username: app.user.username, + userslug: app.user.userslug, + picture: app.user.picture }); app.currentRoom = room; @@ -232,8 +221,8 @@ app.uid = null; selector = selector || $('a'); selector.each(function() { var href = $(this).attr('href'); - if (href && app.userslug && href.indexOf('user/_self_') !== -1) { - $(this).attr('href', href.replace(/user\/_self_/g, 'user/' + app.userslug)); + if (href && app.user.userslug && href.indexOf('user/_self_') !== -1) { + $(this).attr('href', href.replace(/user\/_self_/g, 'user/' + app.user.userslug)); } }); }; @@ -261,7 +250,7 @@ app.uid = null; function showAlert() { app.alert({ type: 'success', - title: '[[global:welcome_back]] ' + app.username + '!', + title: '[[global:welcome_back]] ' + app.user.username + '!', message: '[[global:you_have_successfully_logged_in]]', timeout: 5000 }); @@ -278,11 +267,11 @@ app.uid = null; }; app.openChat = function (username, touid) { - if (username === app.username) { + if (username === app.user.username) { return app.alertError('[[error:cant-chat-with-yourself]]'); } - if (!app.uid) { + if (!app.user.uid) { return app.alertError('[[error:not-logged-in]]'); } @@ -436,7 +425,7 @@ app.uid = null; e.preventDefault(); var input = $(this).find('input'); - search.query({term: input.val(), in: 'posts'}, function() { + search.query({term: input.val()}, function() { input.val(''); }); }); diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js index f85e00951c..dc8bfaeaf1 100644 --- a/public/src/client/account/edit.js +++ b/public/src/client/account/edit.js @@ -152,7 +152,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader'], function(head return; } - if ($('#confirm-username').val() !== app.username) { + if ($('#confirm-username').val() !== app.user.username) { app.alertError('[[error:invalid-username]]'); return false; } else { @@ -266,7 +266,7 @@ define('forum/account/edit', ['forum/account/header', 'uploader'], function(head password_confirm.on('blur', onPasswordConfirmChanged); $('#changePasswordBtn').on('click', function() { - if ((passwordvalid && passwordsmatch) || app.isAdmin) { + if ((passwordvalid && passwordsmatch) || app.user.isAdmin) { socket.emit('user.changePassword', { 'currentPassword': currentPassword.val(), 'newPassword': password.val(), diff --git a/public/src/client/account/header.js b/public/src/client/account/header.js index f0a0c112fa..6dcc0b27e4 100644 --- a/public/src/client/account/header.js +++ b/public/src/client/account/header.js @@ -1,3 +1,6 @@ +'use strict'; +/* globals define, app, ajaxify */ + define('forum/account/header', function() { var AccountHeader = {}; @@ -7,10 +10,11 @@ define('forum/account/header', function() { }; function displayAccountMenus() { - $('.account-sub-links .plugin-link').each(function() { - var $this = $(this); - $this.toggleClass('hide', $this.hasClass('private')); - }); + if (!app.user.uid || app.user.uid !== parseInt(ajaxify.variables.get('theirid'), 10)) { + $('.account-sub-links .plugin-link.private').each(function() { + $(this).addClass('hide'); + }); + } } function selectActivePill() { diff --git a/public/src/client/account/profile.js b/public/src/client/account/profile.js index 421fc006ef..89a555a702 100644 --- a/public/src/client/account/profile.js +++ b/public/src/client/account/profile.js @@ -41,6 +41,9 @@ define('forum/account/profile', ['forum/account/header', 'forum/infinitescroll'] function processPage() { $('.user-recent-posts img, .post-signature img').addClass('img-responsive'); + + $('.user-recent-posts blockquote').prev('p').remove(); + $('.user-recent-posts blockquote').remove(); } function updateButtons() { diff --git a/public/src/client/account/settings.js b/public/src/client/account/settings.js index 0b4bbbd00f..fef95fc495 100644 --- a/public/src/client/account/settings.js +++ b/public/src/client/account/settings.js @@ -44,7 +44,7 @@ define('forum/account/settings', ['forum/account/header'], function(header) { } app.exposeConfigToTemplates(); - if (parseInt(app.uid, 10) === parseInt(ajaxify.variables.get('theirid'), 10)) { + if (parseInt(app.user.uid, 10) === parseInt(ajaxify.variables.get('theirid'), 10)) { ajaxify.refresh(); } }); diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 607b84d4f3..994ddeb47a 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -193,7 +193,7 @@ define('forum/chats', ['string', 'sounds', 'forum/infinitescroll'], function(S, Chats.notifyTyping = function(toUid, typing) { socket.emit('modules.chats.user' + (typing ? 'Start' : 'Stop') + 'Typing', { touid: toUid, - fromUid: app.uid + fromUid: app.user.uid }); }; diff --git a/public/src/client/footer.js b/public/src/client/footer.js index 775686aaa2..ff44f25e1e 100644 --- a/public/src/client/footer.js +++ b/public/src/client/footer.js @@ -31,7 +31,7 @@ define('forum/footer', ['notifications', 'chat'], function(Notifications, Chat) if (data && data.posts && data.posts.length) { var post = data.posts[0]; - if (parseInt(post.uid, 10) !== parseInt(app.uid, 10) && !unreadTopics[post.topic.tid]) { + if (parseInt(post.uid, 10) !== parseInt(app.user.uid, 10) && !unreadTopics[post.topic.tid]) { increaseUnreadCount(); markTopicsUnread(post.topic.tid); unreadTopics[post.topic.tid] = true; diff --git a/public/src/client/groups/details.js b/public/src/client/groups/details.js index 09826fb673..1d651fad27 100644 --- a/public/src/client/groups/details.js +++ b/public/src/client/groups/details.js @@ -19,7 +19,7 @@ define('forum/groups/details', ['iconSelect', 'vendor/colorpicker/colorpicker', detailsPage.on('click', '[data-action]', function() { var btnEl = $(this), - userRow = btnEl.parents('tr'), + userRow = btnEl.parents('[data-uid]'), ownerFlagEl = userRow.find('.member-name i'), isOwner = !ownerFlagEl.hasClass('invisible') ? true : false, uid = userRow.attr('data-uid'), @@ -39,6 +39,19 @@ define('forum/groups/details', ['iconSelect', 'vendor/colorpicker/colorpicker', }); break; + case 'kick': + socket.emit('groups.kick', { + uid: uid, + groupName: ajaxify.variables.get('group_name') + }, function(err) { + if (!err) { + userRow.slideUp().remove(); + } else { + app.alertError(err.message); + } + }); + break; + case 'update': Details.update(); break; diff --git a/public/src/client/reset_code.js b/public/src/client/reset_code.js index 9a7fc80075..f690a2b152 100644 --- a/public/src/client/reset_code.js +++ b/public/src/client/reset_code.js @@ -11,44 +11,39 @@ define('forum/reset_code', function() { resetEl.on('click', function() { if (password.val().length < 6) { - $('#error').addClass('hide').hide(); - noticeEl.find('strong').html('Invalid Password'); - noticeEl.find('p').html('The password entered is too short, please pick a different password.'); - noticeEl.removeClass('hide').css({display: 'block'}); - } else if (password.value !== repeat.value) { - $('#error').hide(); - noticeEl.find('strong').html('Invalid Password'); - noticeEl.find('p').html('The two passwords you\'ve entered do not match.'); - noticeEl.removeClass('hide').css({display: 'block'}); + app.alertError('[[reset_password:password_too_short]]'); + } else if (password.val() !== repeat.val()) { + app.alertError('[[reset_password:passwords_do_not_match]]'); } else { + resetEl.prop('disabled', true).html(' Changing Password'); socket.emit('user.reset.commit', { code: reset_code, password: password.val() }, function(err) { - if(err) { + if (err) { + ajaxify.refresh(); return app.alertError(err.message); } - $('#error').addClass('hide').hide(); - $('#notice').addClass('hide').hide(); - $('#success').removeClass('hide').addClass('show').show(); + + window.location.href = RELATIVE_PATH + '/login'; }); } }); - socket.emit('user.reset.valid', reset_code, function(err, valid) { - if(err) { - return app.alertError(err.message); - } + // socket.emit('user.reset.valid', reset_code, function(err, valid) { + // if(err) { + // return app.alertError(err.message); + // } - if (valid) { - resetEl.prop('disabled', false); - } else { - var formEl = $('#reset-form'); - // Show error message - $('#error').show(); - formEl.remove(); - } - }); + // if (valid) { + // resetEl.prop('disabled', false); + // } else { + // var formEl = $('#reset-form'); + // // Show error message + // $('#error').show(); + // formEl.remove(); + // } + // }); }; return ResetCode; diff --git a/public/src/client/search.js b/public/src/client/search.js index 029f7b811a..a8924ce8f9 100644 --- a/public/src/client/search.js +++ b/public/src/client/search.js @@ -12,42 +12,68 @@ define('forum/search', ['search'], function(searchModule) { var searchIn = $('#advanced-search #search-in'); - fillOutFormFromQueryParams(); + fillOutForm(); searchIn.on('change', function() { - $('.post-search-item').toggleClass('hide', searchIn.val() !== 'posts'); + updateFormItemVisiblity(searchIn.val()); }); highlightMatches(searchQuery); $('#advanced-search').off('submit').on('submit', function(e) { e.preventDefault(); + var input = $(this).find('#search-input'); - searchModule.query({ - term: input.val(), - in: $(this).find('#search-in').val(), - by: $(this).find('#posted-by-user').val(), - categories: $(this).find('#posted-in-categories').val(), - searchChildren: $(this).find('#search-children').is(':checked'), - replies: $(this).find('#reply-count').val(), - repliesFilter: $(this).find('#reply-count-filter').val(), - timeFilter: $(this).find('#post-time-filter').val(), - timeRange: $(this).find('#post-time-range').val() - }, function() { + var searchData = getSearchData(); + searchData.term = input.val(); + + searchModule.query(searchData, function() { input.val(''); }); }); + handleSavePreferences(); + enableAutoComplete(); }; - function fillOutFormFromQueryParams() { + function getSearchData() { + var form = $('#advanced-search'); + var searchData = { + in: form.find('#search-in').val() + }; + + if (searchData.in === 'posts' || searchData.in === 'titlespost' || searchData.in === 'titles') { + searchData.by = form.find('#posted-by-user').val(); + searchData.categories = form.find('#posted-in-categories').val(); + searchData.searchChildren = form.find('#search-children').is(':checked'); + searchData.replies = form.find('#reply-count').val(); + searchData.repliesFilter = form.find('#reply-count-filter').val(); + searchData.timeFilter = form.find('#post-time-filter').val(); + searchData.timeRange = form.find('#post-time-range').val(); + searchData.sortBy = form.find('#post-sort-by').val(); + searchData.sortDirection = form.find('#post-sort-direction').val(); + searchData.showAs = form.find('#show-as-topics').is(':checked') ? 'topics' : 'posts'; + } + + return searchData; + } + + function updateFormItemVisiblity(searchIn) { + var hide = searchIn.indexOf('posts') === -1 && searchIn.indexOf('titles') === -1; + $('.post-search-item').toggleClass('hide', hide); + } + + function fillOutForm() { var params = utils.params(); + var searchData = getSearchPreferences(); + params = utils.merge(searchData, params); + if (params) { if (params.in) { $('#search-in').val(params.in); - $('.post-search-item').toggleClass('hide', params.in !== 'posts'); + updateFormItemVisiblity(params.in); } if (params.by) { @@ -71,10 +97,25 @@ define('forum/search', ['search'], function(searchModule) { $('#post-time-range').val(params.timeRange); $('#post-time-filter').val(params.timeFilter); } + + if (params.sortBy) { + $('#post-sort-by').val(params.sortBy); + $('#post-sort-direction').val(params.sortDirection); + } + + if (params.showAs) { + var isTopic = params.showAs === 'topics'; + var isPost = params.showAs === 'posts'; + $('#show-as-topics').prop('checked', isTopic).parent().toggleClass('active', isTopic); + $('#show-as-posts').prop('checked', isPost).parent().toggleClass('active', isPost); + } } } function highlightMatches(searchQuery) { + if (!searchQuery) { + return; + } var searchTerms = searchQuery.split(' '); var regexes = []; for (var i=0; i 1 || !$('#post-container li[data-index="0"]').length) { + if($('#post-container .post-row').length > 1 || !$('#post-container [data-index="0"]').length) { $('.bottom-post-bar').removeClass('hide'); } } function hidePostToolsForDeletedPosts(element) { - element.find('li.deleted').each(function() { + element.find('.post-row.deleted').each(function() { postTools.toggle($(this).attr('data-pid'), true); }); } diff --git a/public/src/client/topic/threadTools.js b/public/src/client/topic/threadTools.js index b401a850ed..c3923e2720 100644 --- a/public/src/client/topic/threadTools.js +++ b/public/src/client/topic/threadTools.js @@ -99,7 +99,7 @@ define('forum/topic/threadTools', ['forum/topic/fork', 'forum/topic/move'], func ThreadTools.setLockedState = function(data) { var threadEl = $('#post-container'); if (parseInt(data.tid, 10) === parseInt(threadEl.attr('data-tid'), 10)) { - var isLocked = data.isLocked && !app.isAdmin; + var isLocked = data.isLocked && !app.user.isAdmin; $('.lock_thread').translateHtml(' [[topic:thread_tools.' + (data.isLocked ? 'un': '') + 'lock]]'); diff --git a/public/src/client/users.js b/public/src/client/users.js index b96f3f5501..c3f374c4ff 100644 --- a/public/src/client/users.js +++ b/public/src/client/users.js @@ -115,11 +115,6 @@ define('forum/users', function() { var username = $('#search-user').val(); var notify = $('#user-notfound-notify'); page = page || 1; - if (!username) { - notify.html(''); - notify.parent().removeClass('btn-warning label-warning btn-success label-success'); - return; - } notify.html(''); var filters = []; diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 02fcbba02e..06e8c75c7d 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -74,7 +74,7 @@ define('chat', ['taskbar', 'string', 'sounds', 'forum/chats'], function(taskbar, } var username = data.message.fromUser.username; - var isSelf = parseInt(data.message.fromUser.uid, 10) === parseInt(app.uid, 10); + var isSelf = parseInt(data.message.fromUser.uid, 10) === parseInt(app.user.uid, 10); data.message.self = data.self; if (isSelf) { username = data.message.toUser.username; diff --git a/public/src/modules/composer.js b/public/src/modules/composer.js index 2836967416..088cafe260 100644 --- a/public/src/modules/composer.js +++ b/public/src/modules/composer.js @@ -68,13 +68,13 @@ define('composer', [ }); // Construct a save_id - if (0 !== parseInt(app.uid, 10)) { + if (0 !== parseInt(app.user.uid, 10)) { if (post.hasOwnProperty('cid')) { - post.save_id = ['composer', app.uid, 'cid', post.cid].join(':'); + post.save_id = ['composer', app.user.uid, 'cid', post.cid].join(':'); } else if (post.hasOwnProperty('tid')) { - post.save_id = ['composer', app.uid, 'tid', post.tid].join(':'); + post.save_id = ['composer', app.user.uid, 'tid', post.tid].join(':'); } else if (post.hasOwnProperty('pid')) { - post.save_id = ['composer', app.uid, 'pid', post.pid].join(':'); + post.save_id = ['composer', app.user.uid, 'pid', post.pid].join(':'); } } @@ -183,7 +183,7 @@ define('composer', [ function emit() { socket.emit('modules.composer.notifyTyping', { tid: postData.tid, - uid: app.uid + uid: app.user.uid }); } @@ -203,7 +203,7 @@ define('composer', [ } socket.emit('modules.composer.stopNotifyTyping', { tid: postData.tid, - uid: app.uid + uid: app.user.uid }); } @@ -219,7 +219,7 @@ define('composer', [ isTopic = composer.posts[post_uuid] ? !!composer.posts[post_uuid].cid : false, isMain = composer.posts[post_uuid] ? !!composer.posts[post_uuid].isMain : false, isEditing = composer.posts[post_uuid] ? !!composer.posts[post_uuid].pid : false, - isGuestPost = composer.posts[post_uuid] ? composer.posts[post_uuid].uid === '0' : null; + isGuestPost = composer.posts[post_uuid] ? parseInt(composer.posts[post_uuid].uid, 10) === 0 : null; composer.bsEnvironment = utils.findBootstrapEnvironment(); diff --git a/public/src/modules/helpers.js b/public/src/modules/helpers.js index bc40bde658..e8f77a5614 100644 --- a/public/src/modules/helpers.js +++ b/public/src/modules/helpers.js @@ -4,7 +4,7 @@ // export the class if we are in a Node-like system. if (typeof module === 'object' && module.exports === exports) { - exports = module.exports/* = SemVer*/; + exports = module.exports/* = SemVer*/; } var helpers = {}; @@ -21,6 +21,11 @@ return ''; }; + helpers.stringify = function(obj) { + // Turns the incoming object into a JSON string + return JSON.stringify(obj).replace(/&/gm,"&").replace(//gm,">").replace(/"/g, '"'); + }; + // Groups helpers helpers.membershipBtn = function(groupObj) { if (groupObj.isMember) { diff --git a/public/src/modules/search.js b/public/src/modules/search.js index 2b90ab290a..eedf0b76b9 100644 --- a/public/src/modules/search.js +++ b/public/src/modules/search.js @@ -9,8 +9,6 @@ define('search', ['navigator'], function(nav) { Search.query = function(data, callback) { var term = data.term; - var searchIn = data.in || 'posts'; - var postedBy = data.by || ''; // Detect if a tid was specified var topicSearch = term.match(/in:topic-([\d]+)/); @@ -23,29 +21,8 @@ define('search', ['navigator'], function(nav) { } catch(e) { return app.alertError('[[error:invalid-search-term]]'); } - var query = {in: searchIn}; - if (postedBy && searchIn === 'posts') { - query.by = postedBy; - } - - if (data.categories && data.categories.length) { - query.categories = data.categories; - if (data.searchChildren) { - query.searchChildren = data.searchChildren; - } - } - - if (parseInt(data.replies, 10) > 0) { - query.replies = data.replies; - query.repliesFilter = data.repliesFilter || 'atleast'; - } - if (data.timeRange) { - query.timeRange = data.timeRange; - query.timeFilter = data.timeFilter || 'newer'; - } - - ajaxify.go('search/' + term + '?' + decodeURIComponent($.param(query))); + ajaxify.go('search/' + term + '?' + createQueryString(data)); callback(); } else { var cleanedTerm = term.replace(topicSearch[0], ''), @@ -55,6 +32,43 @@ define('search', ['navigator'], function(nav) { } }; + function createQueryString(data) { + var searchIn = data.in || 'titlesposts'; + var postedBy = data.by || ''; + var query = {in: searchIn}; + + if (postedBy && (searchIn === 'posts' || searchIn === 'titles' || searchIn === 'titlesposts')) { + query.by = postedBy; + } + + if (data.categories && data.categories.length) { + query.categories = data.categories; + if (data.searchChildren) { + query.searchChildren = data.searchChildren; + } + } + + if (parseInt(data.replies, 10) > 0) { + query.replies = data.replies; + query.repliesFilter = data.repliesFilter || 'atleast'; + } + + if (data.timeRange) { + query.timeRange = data.timeRange; + query.timeFilter = data.timeFilter || 'newer'; + } + + if (data.sortBy) { + query.sortBy = data.sortBy; + query.sortDirection = data.sortDirection; + } + + if (data.showAs) { + query.showAs = data.showAs; + } + return decodeURIComponent($.param(query)); + } + Search.queryTopic = function(tid, term, callback) { socket.emit('topics.search', { tid: tid, diff --git a/public/src/modules/uploader.js b/public/src/modules/uploader.js index d2f7612c0e..6efdbd988c 100644 --- a/public/src/modules/uploader.js +++ b/public/src/modules/uploader.js @@ -49,7 +49,7 @@ define('uploader', ['csrf'], function(csrf) { }, error: function(xhr) { xhr = maybeParse(xhr); - showAlert('error', xhr.responseJSON.error); + showAlert('error', xhr.responseJSON ? xhr.responseJSON.error : 'error uploading, code : ' + xhr.status); }, uploadProgress: function(event, position, total, percent) { diff --git a/public/src/utils.js b/public/src/utils.js index b58984a20e..3b82573c9b 100644 --- a/public/src/utils.js +++ b/public/src/utils.js @@ -204,7 +204,15 @@ tags : ['a', 'abbr', 'acronym', 'address', 'applet', 'area', 'article', 'aside', 'audio', 'b', 'base', 'basefont', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'command', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'map', 'mark', 'menu', 'meta', 'meter', 'nav', 'noframes', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr'], - stripTags : ['abbr', 'acronym', 'address', 'applet', 'area', 'article', 'aside', 'audio', 'base', 'basefont', 'bdi', 'bdo', 'big', 'body', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'command', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'map', 'mark', 'menu', 'meta', 'meter', 'nav', 'noframes', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'param', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'source', 'span', 'strike', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr'], + stripTags : ['abbr', 'acronym', 'address', 'applet', 'area', 'article', 'aside', 'audio', 'base', 'basefont', + 'bdi', 'bdo', 'big', 'blink', 'body', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', + 'command', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'em', 'embed', + 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', + 'head', 'header', 'hr', 'html', 'iframe', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', + 'map', 'mark', 'marquee', 'menu', 'meta', 'meter', 'nav', 'noframes', 'noscript', 'object', 'ol', 'optgroup', 'option', + 'output', 'param', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', + 'source', 'span', 'strike', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', + 'th', 'thead', 'time', 'title', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr'], escapeRegexChars: function(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); diff --git a/src/controllers/accounts.js b/src/controllers/accounts.js index 84b0f96ad5..13055ca852 100644 --- a/src/controllers/accounts.js +++ b/src/controllers/accounts.js @@ -438,7 +438,7 @@ accountsController.uploadPicture = function (req, res, next) { user.setUserFields(updateUid, {uploadedpicture: image.url, picture: image.url}); - res.json([{name: userPhoto.name, url: image.url}]); + res.json([{name: userPhoto.name, url: nconf.get('relative_path') + image.url}]); } if (err) { @@ -521,9 +521,10 @@ accountsController.getChats = function(req, res, next) { async.waterfall([ async.apply(user.getUidByUserslug, req.params.userslug), function(toUid, next) { - if (!toUid) { + if (!toUid || parseInt(toUid, 10) === parseInt(req.user.uid, 10)) { return helpers.notFound(req, res); } + async.parallel({ toUser: async.apply(user.getUserFields, toUid, ['uid', 'username']), messages: async.apply(messaging.getMessages, req.user.uid, toUid, 'recent', false), diff --git a/src/controllers/admin/users.js b/src/controllers/admin/users.js index 17944b8370..283302b48e 100644 --- a/src/controllers/admin/users.js +++ b/src/controllers/admin/users.js @@ -31,7 +31,8 @@ usersController.banned = function(req, res, next) { }; function getUsers(set, req, res, next) { - user.getUsersFromSet(set, 0, 49, function(err, users) { + var uid = req.user ? parseInt(req.user.uid, 10) : 0; + user.getUsersFromSet(set, uid, 0, 49, function(err, users) { if (err) { return next(err); } diff --git a/src/controllers/groups.js b/src/controllers/groups.js index de8af88e07..8c29f2b397 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -57,12 +57,13 @@ groupsController.details = function(req, res, next) { }; groupsController.members = function(req, res, next) { + var uid = req.user ? parseInt(req.user.uid, 10) : 0; async.waterfall([ function(next) { groups.getGroupNameByGroupSlug(req.params.slug, next); }, function(groupName, next) { - user.getUsersFromSet('group:' + groupName + ':members', 0, 49, next); + user.getUsersFromSet('group:' + groupName + ':members', uid, 0, 49, next); }, ], function(err, users) { if (err) { diff --git a/src/controllers/index.js b/src/controllers/index.js index 797d30e22d..ff337250f4 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -106,9 +106,12 @@ Controllers.home = function(req, res, next) { Controllers.reset = function(req, res, next) { if (req.params.code) { - res.render('reset_code', { - reset_code: req.params.code ? req.params.code : null, - breadcrumbs: helpers.buildBreadcrumbs([{text: '[[reset_password:reset_password]]', url: '/reset'}, {text: '[[reset_password:update_password]]'}]) + user.reset.validate(req.params.code, function(err, valid) { + res.render('reset_code', { + valid: valid, + reset_code: req.params.code ? req.params.code : null, + breadcrumbs: helpers.buildBreadcrumbs([{text: '[[reset_password:reset_password]]', url: '/reset'}, {text: '[[reset_password:update_password]]'}]) + }); }); } else { res.render('reset', { diff --git a/src/controllers/search.js b/src/controllers/search.js index 2c0222a6b3..2020612094 100644 --- a/src/controllers/search.js +++ b/src/controllers/search.js @@ -24,24 +24,33 @@ searchController.search = function(req, res, next) { } if (!req.params.term) { - return res.render('search', { + var results = { time: 0, search_query: '', posts: [], - topics: [], users: [], tags: [], categories: categories, breadcrumbs: breadcrumbs + }; + plugins.fireHook('filter:search.build', {data: {}, results: results}, function(err, data) { + if (err) { + return next(err); + } + res.render('search', data.results); }); + return; } req.params.term = validator.escape(req.params.term); var page = Math.max(1, parseInt(req.query.page, 10)) || 1; + if (req.query.categories && !Array.isArray(req.query.categories)) { + req.query.categories = [req.query.categories]; + } - search.search({ + var data = { query: req.params.term, - searchIn: req.query.in, + searchIn: req.query.in || 'posts', postedBy: req.query.by, categories: req.query.categories, searchChildren: req.query.searchChildren, @@ -49,19 +58,30 @@ searchController.search = function(req, res, next) { repliesFilter: req.query.repliesFilter, timeRange: req.query.timeRange, timeFilter: req.query.timeFilter, + sortBy: req.query.sortBy, + sortDirection: req.query.sortDirection, page: page, uid: uid - }, function(err, results) { + }; + + search.search(data, function(err, results) { if (err) { return next(err); } var pageCount = Math.max(1, Math.ceil(results.matchCount / 10)); results.pagination = pagination.create(page, pageCount, req.query); - + results.showAsPosts = !req.query.showAs || req.query.showAs === 'posts'; + results.showAsTopics = req.query.showAs === 'topics'; results.breadcrumbs = breadcrumbs; results.categories = categories; - res.render('search', results); + + plugins.fireHook('filter:search.build', {data: data, results: results}, function(err, data) { + if (err) { + return next(err); + } + res.render('search', data.results); + }); }); }); }; diff --git a/src/controllers/topics.js b/src/controllers/topics.js index f470cfc6d1..498a3d81db 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -89,17 +89,23 @@ topicsController.get = function(req, res, next) { var postIndex = 0; page = parseInt(req.query.page, 10) || 1; req.params.post_index = parseInt(req.params.post_index, 10) || 0; + if (reverse && req.params.post_index === 1) { + req.params.post_index = 0; + } if (!settings.usePagination) { if (reverse) { - if (req.params.post_index === 1) { - req.params.post_index = 0; - } - postIndex = Math.max(postCount - (req.params.post_index || postCount) - (settings.postsPerPage - 1), 0); + postIndex = Math.max(0, postCount - (req.params.post_index || postCount) - (settings.postsPerPage - 1)); } else { - postIndex = Math.max((req.params.post_index || 1) - (settings.postsPerPage + 1), 0); + postIndex = Math.max(0, (req.params.post_index || 1) - (settings.postsPerPage + 1)); } } else if (!req.query.page) { - var index = Math.max(req.params.post_index - 1, 0) || 0; + var index = 0; + if (reverse) { + index = Math.max(0, postCount - (req.params.post_index || postCount)); + } else { + index = Math.max(0, req.params.post_index - 1) || 0; + } + page = Math.max(1, Math.ceil(index / settings.postsPerPage)); } @@ -116,15 +122,13 @@ topicsController.get = function(req, res, next) { } topicData.pageCount = pageCount; - topicData.currentPage = page; - if(page > 1) { + + if (page > 1) { topicData.posts.splice(0, 1); } - plugins.fireHook('filter:controllers.topic.get', topicData, function(err, topicData) { - next(null, topicData); - }); + plugins.fireHook('filter:controllers.topic.get', topicData, next); }); }, function (topicData, next) { diff --git a/src/controllers/users.js b/src/controllers/users.js index 0a2d4d0d67..81001d0f3a 100644 --- a/src/controllers/users.js +++ b/src/controllers/users.js @@ -14,7 +14,7 @@ usersController.getOnlineUsers = function(req, res, next) { async.parallel({ users: function(next) { - user.getUsersFromSet('users:online', 0, 49, next); + user.getUsersFromSet('users:online', uid, 0, 49, next); }, count: function(next) { var now = Date.now(); @@ -63,7 +63,7 @@ usersController.getUsersSortedByJoinDate = function(req, res, next) { usersController.getUsers = function(set, count, req, res, next) { var uid = req.user ? req.user.uid : 0; - getUsersAndCount(set, count, function(err, data) { + getUsersAndCount(set, uid, count, function(err, data) { if (err) { return next(err); } @@ -78,10 +78,10 @@ usersController.getUsers = function(set, count, req, res, next) { }); }; -function getUsersAndCount(set, count, callback) { +function getUsersAndCount(set, uid, count, callback) { async.parallel({ users: function(next) { - user.getUsersFromSet(set, 0, count - 1, next); + user.getUsersFromSet(set, uid, 0, count - 1, next); }, count: function(next) { db.getObjectField('global', 'userCount', next); @@ -102,7 +102,7 @@ usersController.getUsersForSearch = function(req, res, next) { var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20, uid = req.user ? req.user.uid : 0; - getUsersAndCount('users:joindate', resultsPerPage, function(err, data) { + getUsersAndCount('users:joindate', uid, resultsPerPage, function(err, data) { if (err) { return next(err); } diff --git a/src/database/redis/list.js b/src/database/redis/list.js index 115a56a767..7ebc068d53 100644 --- a/src/database/redis/list.js +++ b/src/database/redis/list.js @@ -2,34 +2,40 @@ module.exports = function(redisClient, module) { module.listPrepend = function(key, value, callback) { + callback = callback || function() {}; redisClient.lpush(key, value, function(err, res) { callback(err); }); }; module.listAppend = function(key, value, callback) { + callback = callback || function() {}; redisClient.rpush(key, value, function(err, res) { callback(err); }); }; module.listRemoveLast = function(key, callback) { + callback = callback || function() {}; redisClient.rpop(key, callback); }; module.listRemoveAll = function(key, value, callback) { + callback = callback || function() {}; redisClient.lrem(key, 0, value, function(err, res) { callback(err); }); }; module.listTrim = function(key, start, stop, callback) { + callback = callback || function() {}; redisClient.ltrim(key, start, stop, function(err, res) { callback(err); }); }; module.getListRange = function(key, start, stop, callback) { + callback = callback || function() {}; redisClient.lrange(key, start, stop, callback); }; }; \ No newline at end of file diff --git a/src/emailer.js b/src/emailer.js index e7c92fa812..557de96f6e 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -64,6 +64,7 @@ var fs = require('fs'), uid: uid, pid: params.pid }); + callback(); } else { winston.warn('[emailer] No active email plugin found!'); callback(); diff --git a/src/favourites.js b/src/favourites.js index 6de70d33f3..fec00fd9cc 100644 --- a/src/favourites.js +++ b/src/favourites.js @@ -253,7 +253,7 @@ var async = require('async'), } if (!isFavouriting && !results.hasFavourited) { - return callback(new Error('[[error:alrady-unfavourited]]')); + return callback(new Error('[[error:already-unfavourited]]')); } async.waterfall([ diff --git a/src/groups.js b/src/groups.js index 54b1332a4b..f82e452b96 100644 --- a/src/groups.js +++ b/src/groups.js @@ -503,7 +503,11 @@ var async = require('async'), 'private': values.private === false ? '0' : '1' }; - db.setObject('group:' + groupName, payload, function(err) { + async.series([ + async.apply(updatePrivacy, groupName, values.private), + async.apply(db.setObject, 'group:' + groupName, payload), + async.apply(renameGroup, groupName, values.name) + ], function(err) { if (err) { return callback(err); } @@ -512,11 +516,37 @@ var async = require('async'), name: groupName, values: values }); - renameGroup(groupName, values.name, callback); + callback(); }); }); }; + function updatePrivacy(groupName, newValue, callback) { + // Grab the group's current privacy value + Groups.getGroupFields(groupName, ['private'], function(err, currentValue) { + currentValue = currentValue.private === '1'; // Now a Boolean + + if (currentValue !== newValue && currentValue === true) { + // Group is now public, so all pending users are automatically considered members + db.getSetMembers('group:' + groupName + ':pending', function(err, uids) { + if (err) { return callback(err); } + else if (!uids) { return callback(); } // No pending users, we're good to go + + var now = Date.now(), + scores = uids.map(function() { return now; }); // There's probably a better way to initialise an Array of size x with the same value... + + winston.verbose('[groups.update] Group is now public, automatically adding ' + uids.length + ' new members, who were pending prior.'); + async.series([ + async.apply(db.sortedSetAdd, 'group:' + groupName + ':members', scores, uids), + async.apply(db.delete, 'group:' + groupName + ':pending') + ], callback); + }); + } else { + callback(); + } + }); + } + function renameGroup(oldName, newName, callback) { if (oldName === newName || !newName || newName.length === 0) { return callback(); @@ -803,8 +833,12 @@ var async = require('async'), groupData = groupData.filter(function(group) { return parseInt(group.hidden, 10) !== 1 && !!group.userTitle; + }).map(function(group) { + group.createtimeISO = utils.toISOString(group.createtime); + return group; }); + var groupSets = groupData.map(function(group) { group.labelColor = group.labelColor || '#000000'; group.createtimeISO = utils.toISOString(group.createtime); diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js index b8b5885424..43e2a2ea86 100644 --- a/src/middleware/middleware.js +++ b/src/middleware/middleware.js @@ -340,6 +340,7 @@ middleware.renderHeader = function(req, res, callback) { return; } results.user.isAdmin = results.isAdmin || false; + results.user.uid = parseInt(results.user.uid, 10); results.user['email:confirmed'] = parseInt(results.user['email:confirmed'], 10) === 1; templateValues.browserTitle = results.title; diff --git a/src/notifications.js b/src/notifications.js index 96502508f7..dc3aae7ea2 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -18,9 +18,7 @@ var async = require('async'), (function(Notifications) { Notifications.init = function() { - if (process.env.NODE_ENV === 'development') { - winston.verbose('[notifications.init] Registering jobs.'); - } + winston.verbose('[notifications.init] Registering jobs.'); new cron('*/30 * * * *', Notifications.prune, null, true); }; @@ -270,12 +268,6 @@ var async = require('async'), }; Notifications.prune = function() { - var start = process.hrtime(); - - if (process.env.NODE_ENV === 'development') { - winston.info('[notifications.prune] Removing expired notifications from the database.'); - } - var week = 604800000, numPruned = 0; @@ -307,10 +299,6 @@ var async = require('async'), if (err) { return winston.error('Encountered error pruning notifications: ' + err.message); } - - if (process.env.NODE_ENV === 'development') { - winston.info('[notifications.prune] Notification pruning completed. ' + numPruned + ' expired notification' + (numPruned !== 1 ? 's' : '') + ' removed.'); - } }); }); }; diff --git a/src/plugins.js b/src/plugins.js index bd00bb8b0a..0c8a4ba394 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -343,16 +343,18 @@ var fs = require('fs'), }).reduce(function(prev, cur) { return prev.concat(cur); }); - next(null, paths); - } - ], function(err, paths) { - for (var x=0,numPaths=paths.length;x p2[fields[0]][fields[1]]) return -1; + if (p1[fields[0]][fields[1]] < p2[fields[0]][fields[1]]) return 1; + return 0; + }); +} + +function sortDescendingAlpha(posts, fields) { + posts.sort(function(p1, p2) { + if (p1[fields[0]][fields[1]] < p2[fields[0]][fields[1]]) return -1; + if (p1[fields[0]][fields[1]] > p2[fields[0]][fields[1]]) return 1; + return 0; }); } @@ -291,8 +456,8 @@ function getChildrenCids(cids, uid, callback) { }); } -function searchInUsers(query, callback) { - user.search({query: query}, function(err, results) { +function searchInUsers(query, uid, callback) { + user.search({query: query, uid: uid}, function(err, results) { if (err) { return callback(err); } @@ -311,12 +476,16 @@ function searchInTags(query, callback) { } function getMainPids(tids, callback) { + if (!Array.isArray(tids) || !tids.length) { + return callback(null, []); + } + topics.getTopicsFields(tids, ['mainPid'], function(err, topics) { if (err) { return callback(err); } topics = topics.map(function(topic) { - return topic && topic.mainPid; + return topic && topic.mainPid && topic.mainPid.toString(); }).filter(Boolean); callback(null, topics); }); diff --git a/src/socket.io/admin/categories.js b/src/socket.io/admin/categories.js index 2ba036d7e0..9a9ef0ea7e 100644 --- a/src/socket.io/admin/categories.js +++ b/src/socket.io/admin/categories.js @@ -36,7 +36,7 @@ Categories.search = function(socket, data, callback) { var username = data.username, cid = data.cid; - user.search({query: username}, function(err, data) { + user.search({query: username, uid: socket.uid}, function(err, data) { if (err) { return callback(err); } diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index 3a194044ea..0fa583d742 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -1,12 +1,13 @@ "use strict"; -var db = require('../../database'), +var async = require('async'), + db = require('../../database'), groups = require('../../groups'), user = require('../../user'), events = require('../../events'), + meta = require('../../meta'), websockets = require('../index'), - async = require('async'), User = {}; @@ -127,6 +128,30 @@ User.validateEmail = function(socket, uids, callback) { }, callback); }; +User.sendValidationEmail = function(socket, uids, callback) { + if (!Array.isArray(uids)) { + return callback(new Error('[[error:invalid-data]]')); + } + + if (parseInt(meta.config.requireEmailConfirmation, 10) !== 1) { + return callback(new Error('[[error:email-confirmations-are-disabled]]')); + } + + user.getMultipleUserFields(uids, ['uid', 'email'], function(err, usersData) { + if (err) { + return callback(err); + } + + async.eachLimit(usersData, 50, function(userData, next) { + if (userData.email && userData.uid) { + user.email.verify(userData.uid, userData.email, next); + } else { + next(); + } + }, callback); + }); +}; + User.sendPasswordResetEmail = function(socket, uids, callback) { if (!Array.isArray(uids)) { return callback(new Error('[[error:invalid-data]]')); @@ -180,7 +205,7 @@ User.deleteUsers = function(socket, uids, callback) { }; User.search = function(socket, data, callback) { - user.search({query: data.query, searchBy: data.searchBy, startsWith: false}, function(err, searchData) { + user.search({query: data.query, searchBy: data.searchBy, startsWith: false, uid: socket.uid}, function(err, searchData) { if (err) { return callback(err); } diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index a99112eded..ba35e128c4 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -102,7 +102,7 @@ SocketGroups.reject = function(socket, data, callback) { }; SocketGroups.update = function(socket, data, callback) { - if(!data) { + if (!data) { return callback(new Error('[[error:invalid-data]]')); } @@ -130,7 +130,7 @@ SocketGroups.create = function(socket, data, callback) { }; SocketGroups.delete = function(socket, data, callback) { - if(!data) { + if (!data) { return callback(new Error('[[error:invalid-data]]')); } @@ -156,6 +156,20 @@ SocketGroups.search = function(socket, data, callback) { groups.search(data.query || '', data.options || {}, callback); }; +SocketGroups.kick = function(socket, data, callback) { + if (!data) { + return callback(new Error('[[error:invalid-data]]')); + } + + groups.ownership.isOwner(socket.uid, data.groupName, function(err, isOwner) { + if (!isOwner) { + return callback(new Error('[[error:no-privileges]]')); + } + + groups.leave(data.groupName, data.uid, callback); + }); +}; + SocketGroups.cover = {}; SocketGroups.cover.get = function(socket, data, callback) { @@ -163,7 +177,7 @@ SocketGroups.cover.get = function(socket, data, callback) { }; SocketGroups.cover.update = function(socket, data, callback) { - if(!data) { + if (!data) { return callback(new Error('[[error:invalid-data]]')); } else if (socket.uid === 0) { return callback(new Error('[[error:no-privileges]]')); diff --git a/src/socket.io/index.js b/src/socket.io/index.js index 8144fbc835..98d1d6e2e8 100644 --- a/src/socket.io/index.js +++ b/src/socket.io/index.js @@ -66,32 +66,19 @@ function onConnect(socket) { socket.join('uid_' + socket.uid); socket.join('online_users'); - async.parallel({ - user: function(next) { - user.getUserFields(socket.uid, ['username', 'userslug', 'picture', 'status', 'email:confirmed'], next); - }, - isAdmin: function(next) { - user.isAdministrator(socket.uid, next); - } - }, function(err, userData) { - if (err || !userData.user) { + user.getUserFields(socket.uid, ['status'], function(err, userData) { + if (err || !userData) { return; } - userData.user.uid = socket.uid; - userData.user.isAdmin = userData.isAdmin; - userData.user['email:confirmed'] = parseInt(userData.user['email:confirmed'], 10) === 1; - socket.emit('event:connect', userData.user); - if (userData.user.status !== 'offline') { - socket.broadcast.emit('event:user_status_change', {uid: socket.uid, status: userData.user.status || 'online'}); + + socket.emit('event:connect'); + if (userData.status !== 'offline') { + socket.broadcast.emit('event:user_status_change', {uid: socket.uid, status: userData.status || 'online'}); } }); } else { socket.join('online_guests'); - socket.emit('event:connect', { - username: '[[global:guest]]', - isAdmin: false, - uid: 0 - }); + socket.emit('event:connect'); } } diff --git a/src/socket.io/user.js b/src/socket.io/user.js index b1e1512526..4df8915994 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -13,6 +13,8 @@ var async = require('async'), websockets = require('./index'), meta = require('../meta'), events = require('../events'), + emailer = require('../emailer'), + db = require('../database'), SocketUser = {}; SocketUser.exists = function(socket, data, callback) { @@ -67,7 +69,8 @@ SocketUser.search = function(socket, data, callback) { page: data.page, searchBy: data.searchBy, sortBy: data.sortBy, - filterBy: data.filterBy + filterBy: data.filterBy, + uid: socket.uid }, callback); }; @@ -80,23 +83,34 @@ SocketUser.reset.send = function(socket, email, callback) { } }; -SocketUser.reset.valid = function(socket, code, callback) { - if (code) { - user.reset.validate(code, callback); - } -}; - SocketUser.reset.commit = function(socket, data, callback) { if(data && data.code && data.password) { - user.reset.commit(data.code, data.password, function(err) { + async.series([ + async.apply(db.getObjectField, 'reset:uid', data.code), + async.apply(user.reset.commit, data.code, data.password) + ], function(err, data) { if (err) { return callback(err); } + + var uid = data[0], + now = new Date(), + parsedDate = now.getFullYear() + '/' + (now.getMonth()+1) + '/' + now.getDate(); + + user.getUserField(uid, 'username', function(err, username) { + emailer.send('reset_notify', uid, { + username: username, + date: parsedDate, + site_title: meta.config.title || 'NodeBB', + subject: '[[email:reset.notify.subject]]' + }); + }); events.log({ type: 'password-reset', uid: socket.uid, ip: socket.ip }); + callback(); }); } }; @@ -393,7 +407,7 @@ SocketUser.loadMore = function(socket, data, callback) { var start = parseInt(data.after, 10), end = start + 19; - user.getUsersFromSet(data.set, start, end, function(err, userData) { + user.getUsersFromSet(data.set, socket.uid, start, end, function(err, userData) { if (err) { return callback(err); } diff --git a/src/topics.js b/src/topics.js index 1e9df9958f..a9514dabba 100644 --- a/src/topics.js +++ b/src/topics.js @@ -215,28 +215,14 @@ var async = require('async'), } async.parallel({ + mainPost: function(next) { + getMainPosts([topicData.mainPid], uid, next); + }, posts: function(next) { - posts.getPidsFromSet(set, start, end, reverse, function(err, pids) { - if (err) { - return next(err); - } - - pids = topicData.mainPid ? [topicData.mainPid].concat(pids) : pids; - - if (!pids.length) { - return next(null, []); - } - posts.getPostsByPids(pids, uid, function(err, posts) { - if (err) { - return next(err); - } - - Topics.addPostData(posts, uid, next); - }); - }); + Topics.getTopicPosts(tid, set, start, end, uid, reverse, next); }, category: async.apply(Topics.getCategoryData, tid), - threadTools: async.apply(plugins.fireHook, 'filter:topic.thread_tools', []), + threadTools: async.apply(plugins.fireHook, 'filter:topic.thread_tools', {topic: topicData, uid: uid, tools: []}), tags: async.apply(Topics.getTopicTagsObjects, tid), isFollowing: async.apply(Topics.isFollowing, [tid], uid) }, function(err, results) { @@ -244,9 +230,9 @@ var async = require('async'), return callback(err); } - topicData.posts = results.posts; + topicData.posts = Array.isArray(results.mainPost) && results.mainPost.length ? [results.mainPost[0]].concat(results.posts) : results.posts; topicData.category = results.category; - topicData.thread_tools = results.threadTools; + topicData.thread_tools = results.threadTools.tools; topicData.tags = results.tags; topicData.isFollowing = results.isFollowing[0]; @@ -255,7 +241,9 @@ var async = require('async'), topicData.locked = parseInt(topicData.locked, 10) === 1; topicData.pinned = parseInt(topicData.pinned, 10) === 1; - plugins.fireHook('filter:topic.get', topicData, callback); + plugins.fireHook('filter:topic.get', {topic: topicData, uid: uid}, function(err, data) { + callback(err, data ? data.topic : null); + }); }); }); }; @@ -276,15 +264,23 @@ var async = require('async'), return topic ? topic.mainPid : null; }); - posts.getPostsByPids(mainPids, uid, function(err, postData) { - if (err) { - return callback(err); - } + getMainPosts(mainPids, uid, callback); + }); + }; - Topics.addPostData(postData, uid, callback); + function getMainPosts(mainPids, uid, callback) { + posts.getPostsByPids(mainPids, uid, function(err, postData) { + if (err) { + return callback(err); + } + postData.forEach(function(post) { + if (post) { + post.index = 0; + } }); + Topics.addPostData(postData, uid, callback); }); - }; + } Topics.getTopicField = function(tid, field, callback) { db.getObjectField('topic:' + tid, field, callback); diff --git a/src/topics/popular.js b/src/topics/popular.js index ce2182cabf..a1149914fc 100644 --- a/src/topics/popular.js +++ b/src/topics/popular.js @@ -34,10 +34,12 @@ module.exports = function(Topics) { function getTopics(tids, uid, count, callback) { async.waterfall([ function(next) { - Topics.getTopicsFields(tids, ['tid', 'postcount'], next); + Topics.getTopicsFields(tids, ['tid', 'postcount', 'deleted'], next); }, function(topics, next) { - tids = topics.sort(function(a, b) { + tids = topics.filter(function(topic) { + return topic && parseInt(topic.deleted, 10) !== 1; + }).sort(function(a, b) { return b.postcount - a.postcount; }).slice(0, count).map(function(topic) { return topic.tid; diff --git a/src/topics/posts.js b/src/topics/posts.js index d4809f2a79..6d4cd9be8f 100644 --- a/src/topics/posts.js +++ b/src/topics/posts.js @@ -29,15 +29,28 @@ module.exports = function(Topics) { ], callback); }; - Topics.getTopicPosts = function(tid, set, start, end, uid, reverse, callback) { callback = callback || function() {}; - posts.getPostsByTid(tid, set, start, end, uid, reverse, function(err, postData) { + async.parallel({ + posts: function(next) { + posts.getPostsByTid(tid, set, start, end, uid, reverse, next); + }, + postCount: function(next) { + Topics.getTopicField(tid, 'postcount', next); + } + }, function(err, results) { if (err) { return callback(err); } - Topics.addPostData(postData, uid, callback); + var indices = Topics.calculatePostIndices(start, end, results.postCount, reverse); + results.posts.forEach(function(post, index) { + if (post) { + post.index = indices[index]; + } + }); + + Topics.addPostData(results.posts, uid, callback); }); }; @@ -103,9 +116,6 @@ module.exports = function(Topics) { }, privileges: function(next) { privileges.posts.get(pids, uid, next); - }, - indices: function(next) { - posts.getPostIndices(postData, uid, next); } }, function(err, results) { if (err) { @@ -114,7 +124,6 @@ module.exports = function(Topics) { postData.forEach(function(postObj, i) { if (postObj) { - postObj.index = results.indices[i]; postObj.deleted = parseInt(postObj.deleted, 10) === 1; postObj.user = parseInt(postObj.uid, 10) ? results.userData[postObj.uid] : _.clone(results.userData[postObj.uid]); postObj.editor = postObj.editor ? results.editors[postObj.editor] : null; @@ -141,6 +150,19 @@ module.exports = function(Topics) { }); }; + Topics.calculatePostIndices = function(start, end, postCount, reverse) { + var indices = []; + var count = end - start + 1; + for(var i=0; i b; }); - - callback(null, matches); + + plugins.fireHook('filter:tags.search', {data: data, matches: matches}, function(err, data) { + callback(err, data ? data.matches : []); + }); }); }; diff --git a/src/upgrade.js b/src/upgrade.js index ed82dcd20a..52347bcb40 100644 --- a/src/upgrade.js +++ b/src/upgrade.js @@ -21,7 +21,7 @@ var db = require('./database'), schemaDate, thisSchemaDate, // IMPORTANT: REMEMBER TO UPDATE VALUE OF latestSchema - latestSchema = Date.UTC(2015, 0, 30); + latestSchema = Date.UTC(2015, 1, 8); Upgrade.check = function(callback) { db.get('schemaDate', function(err, value) { @@ -807,6 +807,26 @@ Upgrade.upgrade = function(callback) { winston.info('[2015/01/30] Adding group member counts skipped'); next(); } + }, + function(next) { + thisSchemaDate = Date.UTC(2015, 1, 8); + if (schemaDate < thisSchemaDate) { + updatesMade = true; + winston.info('[2015/02/08] Clearing reset tokens'); + + db.deleteAll(['reset:expiry', 'reset:uid'], function(err) { + if (err) { + winston.error('[2015/02/08] Error encountered while Clearing reset tokens'); + return next(err); + } + + winston.info('[2015/02/08] Clearing reset tokens done'); + Upgrade.update(thisSchemaDate, next); + }); + } else { + winston.info('[2015/02/08] Clearing reset tokens skipped'); + next(); + } } // Add new schema updates here diff --git a/src/user.js b/src/user.js index b320c3f594..035933154a 100644 --- a/src/user.js +++ b/src/user.js @@ -119,7 +119,7 @@ var async = require('async'), if (user.picture) { if (user.picture === user.uploadedpicture) { - user.picture = user.picture.indexOf('http') === -1 ? nconf.get('relative_path') + user.picture : user.picture; + user.picture = user.uploadedpicture = user.picture.indexOf('http') === -1 ? nconf.get('relative_path') + user.picture : user.picture; } else { user.picture = User.createGravatarURLFromEmail(user.email); } @@ -221,18 +221,18 @@ var async = require('async'), } }; - User.getUsersFromSet = function(set, start, stop, callback) { + User.getUsersFromSet = function(set, uid, start, stop, callback) { async.waterfall([ function(next) { User.getUidsFromSet(set, start, stop, next); }, function(uids, next) { - User.getUsers(uids, next); + User.getUsers(uids, uid, next); } ], callback); }; - User.getUsers = function(uids, callback) { + User.getUsers = function(uids, uid, callback) { var fields = ['uid', 'username', 'userslug', 'picture', 'status', 'banned', 'postcount', 'reputation', 'email:confirmed']; plugins.fireHook('filter:users.addFields', {fields: fields}, function(err, data) { if (err) { @@ -266,11 +266,10 @@ var async = require('async'), user['email:confirmed'] = parseInt(user['email:confirmed'], 10) === 1; }); - plugins.fireHook('filter:userlist.get', {users: results.userData}, function(err, data) { + plugins.fireHook('filter:userlist.get', {users: results.userData, uid: uid}, function(err, data) { if (err) { return callback(err); } - callback(null, data.users); }); }); diff --git a/src/user/email.js b/src/user/email.js index 9a4fd2cd73..74b86c0cfe 100644 --- a/src/user/email.js +++ b/src/user/email.js @@ -27,11 +27,16 @@ var async = require('async'), }); }; - UserEmail.verify = function(uid, email) { + UserEmail.verify = function(uid, email, callback) { + callback = callback || function() {}; var confirm_code = utils.generateUUID(), confirm_link = nconf.get('url') + '/confirm/' + confirm_code; plugins.fireHook('filter:user.verify.code', confirm_code, function(err, confirm_code) { + if (err) { + return callback(err); + } + async.series([ function(next) { db.setObject('confirm:' + confirm_code, { @@ -43,7 +48,9 @@ var async = require('async'), db.expireAt('confirm:' + confirm_code, Math.floor(Date.now() / 1000 + 60 * 60 * 2), next); } ], function(err) { - + if (err) { + return callback(err); + } user.getUserField(uid, 'username', function(err, username) { if (err) { return winston.error(err.stack); @@ -64,10 +71,12 @@ var async = require('async'), if (plugins.hasListeners('action:user.verify')) { plugins.fireHook('action:user.verify', {uid: uid, data: data}); + callback(); } else if (plugins.hasListeners('action:email.send')) { - emailer.send('welcome', uid, data); + emailer.send('welcome', uid, data, callback); } else { winston.warn('No emailer to send verification email!'); + callback(); } }); }); diff --git a/src/user/follow.js b/src/user/follow.js index c3e2cb340c..6b0c0a3973 100644 --- a/src/user/follow.js +++ b/src/user/follow.js @@ -59,7 +59,7 @@ module.exports = function(User) { return callback(err); } - User.getUsers(uids, callback); + User.getUsers(uids, uid, callback); }); } diff --git a/src/user/jobs.js b/src/user/jobs.js index 506f0d388b..16f6bd4ce8 100644 --- a/src/user/jobs.js +++ b/src/user/jobs.js @@ -4,7 +4,6 @@ var winston = require('winston'), cronJob = require('cron').CronJob, - user = require('../user'), meta = require('../meta'); module.exports = function(User) { @@ -23,6 +22,8 @@ module.exports = function(User) { winston.verbose('[user.startJobs] Digest job (monthly) started.'); User.digest.execute('month'); }, null, true); + + new cronJob('0 0 0 * * *', User.reset.clean, null, true); }; }; diff --git a/src/user/reset.js b/src/user/reset.js index c65e77a570..3ce2f86cf8 100644 --- a/src/user/reset.js +++ b/src/user/reset.js @@ -1,8 +1,8 @@ - 'use strict'; var async = require('async'), nconf = require('nconf'), + winston = require('winston'), user = require('../user'), utils = require('../../public/src/utils'), @@ -14,26 +14,19 @@ var async = require('async'), emailer = require('../emailer'); (function(UserReset) { - UserReset.validate = function(code, callback) { db.getObjectField('reset:uid', code, function(err, uid) { if (err || !uid) { return callback(err, false); } - db.getObjectField('reset:expiry', code, function(err, expiry) { + db.sortedSetScore('reset:issueDate', code, function(err, issueDate) { + // db.getObjectField('reset:expiry', code, function(err, expiry) { if (err) { return callback(err); } - if (parseInt(expiry, 10) >= Date.now() / 1000) { - callback(null, true); - } else { - // Expired, delete from db - db.deleteObjectField('reset:uid', code); - db.deleteObjectField('reset:expiry', code); - callback(null, false); - } + callback(null, parseInt(issueDate, 10) > (Date.now() - (1000*60*120))); }); }); }; @@ -46,7 +39,7 @@ var async = require('async'), var reset_code = utils.generateUUID(); db.setObjectField('reset:uid', reset_code, uid); - db.setObjectField('reset:expiry', reset_code, (60 * 60) + Math.floor(Date.now() / 1000)); + db.sortedSetAdd('reset:issueDate', Date.now(), reset_code); var reset_link = nconf.get('url') + '/reset/' + reset_code; @@ -85,7 +78,7 @@ var async = require('async'), user.setUserField(uid, 'password', hash); db.deleteObjectField('reset:uid', code); - db.deleteObjectField('reset:expiry', code); + db.sortedSetRemove('reset:issueDate', code); user.auth.resetLockout(uid, callback); }); @@ -93,4 +86,20 @@ var async = require('async'), }); }; + UserReset.clean = function(callback) { + // Locate all codes that have expired, and remove them from the set/hash + async.waterfall([ + async.apply(db.getSortedSetRangeByScore, 'reset:issueDate', 0, -1, -1, +new Date()-(1000*60*120)), + function(tokens, next) { + if (!tokens.length) { return next(); } + + winston.verbose('[UserReset.clean] Removing ' + tokens.length + ' reset tokens from database'); + async.parallel([ + async.apply(db.deleteObjectField, 'reset:uid', tokens), + async.apply(db.sortedSetRemove, 'reset:issueDate', tokens) + ], next); + } + ], callback); + }; + }(exports)); diff --git a/src/user/search.js b/src/user/search.js index ebfb08551f..20bbec2258 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -14,13 +14,10 @@ module.exports = function(User) { var searchBy = data.searchBy || ['username']; var startsWith = data.hasOwnProperty('startsWith') ? data.startsWith : true; var page = data.page || 1; - - if (!query) { - return callback(null, {timing: 0, users: [], matchCount: 0, pages: []}); - } + var uid = data.uid || 0; if (searchBy.indexOf('ip') !== -1) { - return searchByIP(query, callback); + return searchByIP(query, uid, callback); } var startTime = process.hrtime(); @@ -46,14 +43,11 @@ module.exports = function(User) { matchCount = uids.length; uids = uids.slice(start, end); - User.getUsers(uids, next); + User.getUsers(uids, uid, next); }, function(userData, next) { - - var diff = process.hrtime(startTime); - var timing = (diff[0] * 1e3 + diff[1] / 1e6).toFixed(1); var data = { - timing: timing, + timing: (process.elapsedTimeSince(startTime) / 1000).toFixed(2), users: userData, matchCount: matchCount }; @@ -194,14 +188,14 @@ module.exports = function(User) { } } - function searchByIP(ip, callback) { + function searchByIP(ip, uid, callback) { var start = process.hrtime(); async.waterfall([ function(next) { db.getSortedSetRevRange('ip:' + ip + ':uid', 0, -1, next); }, function(uids, next) { - User.getUsers(uids, next); + User.getUsers(uids, uid, next); }, function(users, next) { var diff = process.hrtime(start); diff --git a/src/views/admin/advanced/events.tpl b/src/views/admin/advanced/events.tpl index eb22fb13db..7aec71b6f2 100644 --- a/src/views/admin/advanced/events.tpl +++ b/src/views/admin/advanced/events.tpl @@ -10,7 +10,7 @@
#{events.eid} {events.type} - {events.user.username} (uid {events.user.uid}) (IP {events.ip}) + {events.user.username} (uid {events.user.uid}) (IP {events.ip}) {events.timestampISO}

{events.jsonString}
diff --git a/src/views/admin/manage/users.tpl b/src/views/admin/manage/users.tpl index e68cef75ee..a4997c49e0 100644 --- a/src/views/admin/manage/users.tpl +++ b/src/views/admin/manage/users.tpl @@ -18,6 +18,7 @@
  • Remove Admin
  • Validate Email
  • +
  • Send Validation Email
  • Send Password Reset Email
  • Ban User
  • diff --git a/src/views/emails/reset_notify.tpl b/src/views/emails/reset_notify.tpl new file mode 100644 index 0000000000..34c26aa481 --- /dev/null +++ b/src/views/emails/reset_notify.tpl @@ -0,0 +1,10 @@ +

    [[email:greeting_with_name, {username}]],

    + +

    [[email:reset.notify.text1, {date}]]

    + +

    [[email:reset.notify.text2]]

    + +

    + [[email:closing]]
    + {site_title} +

    \ No newline at end of file diff --git a/src/views/emails/reset_notify_plaintext.tpl b/src/views/emails/reset_notify_plaintext.tpl new file mode 100644 index 0000000000..788618f9d5 --- /dev/null +++ b/src/views/emails/reset_notify_plaintext.tpl @@ -0,0 +1,8 @@ +[[email:greeting_with_name, {username}]], + +[[email:reset.notify.text1, {date}]] + +[[email:reset.notify.text2]] + +[[email:closing]] +{site_title} \ No newline at end of file