0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "معاينة الوسام",
"details.change_icon": "تغيير الأيقونة",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/ar/notifications.json b/public/language/ar/notifications.json
index 71ae442723..9f349b3895 100644
--- a/public/language/ar/notifications.json
+++ b/public/language/ar/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/ar/register.json b/public/language/ar/register.json
index 7ff3762781..a28ddf9668 100644
--- a/public/language/ar/register.json
+++ b/public/language/ar/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "أوافق على شروط الاستخدام",
"terms_of_use_error": "يجب عليك الموافقة على شروط الاستخدام",
"registration-added-to-queue": "تمت إضافتك في قائمة الإنتضار. ستتلقى رسالة إلكترونية عند الموافقة على تسجيلك من قبل الإدارة.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "نحتاج إلى بعض المعلومات الإضافية قبل أن نتمكن من إنشاء حسابك.",
"interstitial.errors-found": "تعذر علينا إتمام عملية التسجيل:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/ar/topic.json b/public/language/ar/topic.json
index 63fc6a10ff..0871e78c11 100644
--- a/public/language/ar/topic.json
+++ b/public/language/ar/topic.json
@@ -30,6 +30,7 @@
"locked": "مقفل",
"pinned": "مثبت",
"moved": "منقول",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/ar/user.json b/public/language/ar/user.json
index 282be242b3..9970485935 100644
--- a/public/language/ar/user.json
+++ b/public/language/ar/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "فتح الروابط الخارجية في نافدة جديدة",
"enable_topic_searching": "تفعيل خاصية البحث داخل المواضيع",
"topic_search_help": "إذا قمت بتفعيل ميزة البحث في-الموضوع، سيتم تجاوز الخيار الافتراضي للمتصفح مما يؤدي للبحث بكامل الموضوع بدلا عن البحث في الجزء الظاهر في الشاشة.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "بعد اضافة رد على المشاركة, قم بإظهار المشاركة",
"follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد عليها",
"follow_topics_you_create": "متابعة المواضيع التي تقوم بإنشائها",
diff --git a/public/language/ar/users.json b/public/language/ar/users.json
index 45cc5821a1..23e893d228 100644
--- a/public/language/ar/users.json
+++ b/public/language/ar/users.json
@@ -11,6 +11,7 @@
"online-only": "المتصلون فقط",
"invite": "دعوة",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "تم إرسال دعوة بالبريد الإلكتروني إلى %1",
"user_list": "قائمة اﻷعضاء",
"recent_topics": "أحدث المواضيع",
diff --git a/public/language/bg/admin/manage/privileges.json b/public/language/bg/admin/manage/privileges.json
index 7293f61dc0..10f407dcdd 100644
--- a/public/language/bg/admin/manage/privileges.json
+++ b/public/language/bg/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Качване на файлове",
"signature": "Подпис",
"ban": "Блокиране",
+ "invite": "Пращане на покана",
"search-content": "Търсене на съдържание",
"search-users": "Търсене на потребители",
"search-tags": "Търсене на етикети",
diff --git a/public/language/bg/admin/menu.json b/public/language/bg/admin/menu.json
index e56f50657f..76362c2c21 100644
--- a/public/language/bg/admin/menu.json
+++ b/public/language/bg/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Странициране",
"settings/tags": "Етикети",
"settings/notifications": "Известия",
+ "settings/api": "Достъп чрез ППИ",
"settings/sounds": "Звуци",
"settings/social": "Обществени",
"settings/cookies": "Бисквитки",
diff --git a/public/language/bg/admin/settings/email.json b/public/language/bg/admin/settings/email.json
index 3605e93a50..2722d28c0d 100644
--- a/public/language/bg/admin/settings/email.json
+++ b/public/language/bg/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Следният адрес на е-поща е този, който получателят ще види в полетата „От“ и “Отговор до“.",
"from": "Име за полето „От“",
"from-help": "Името на изпращача, което да бъде показано в е-писмото.",
-
+
"smtp-transport": "Транспорт чрез SMTP",
"smtp-transport.enabled": "Използване на външен сървър за е-поща за изпращане на е-писма",
"smtp-transport-help": "Можете да изберете от списък от познати услуги, или да въведете такава ръчно.",
@@ -35,5 +35,7 @@
"subscriptions": "Резюмета по е-поща",
"subscriptions.disable": "Изключване на резюметата по е-пощата",
"subscriptions.hour": "Време за разпращане",
- "subscriptions.hour-help": "Моля, въведете число, представляващо часа, в който да се разпращат е-писма с подготвеното резюме (напр.. 0 за полунощ, 17 за 5 следобед). Имайте предвид, че този час е според часовата зона на сървъра и може да не съвпада с часовника на системата Ви.0 за полунощ, 17 за 5 следобед). Имайте предвид, че този час е според часовата зона на сървъра и може да не съвпада с часовника на системата Ви.CTRL и SHIFT, за да изберете няколко възможности.",
"details.badge_preview": "Преглед на емблемата",
"details.change_icon": "Промяна на иконката",
"details.change_label_colour": "Промяна на цвета на етикета",
diff --git a/public/language/bg/notifications.json b/public/language/bg/notifications.json
index d5818a10a5..f975415a91 100644
--- a/public/language/bg/notifications.json
+++ b/public/language/bg/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Когато бъде редактирана публикация в тема, която следите",
"notificationType_follow": "Когато някой започне да Ви следва",
"notificationType_new-chat": "Когато получите съобщение в разговор",
+ "notificationType_new-group-chat": "Когато получите съобщение в групов разговор",
"notificationType_group-invite": "Когато получите покана за група",
"notificationType_group-request-membership": "Когато някой поиска да се включи в група, на която Вие сте собственик",
"notificationType_new-register": "Когато някой бъде добавен в опашката за регистрация",
diff --git a/public/language/bg/register.json b/public/language/bg/register.json
index f18e04cb9a..a07179e345 100644
--- a/public/language/bg/register.json
+++ b/public/language/bg/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Съгласен съм с условията за ползване",
"terms_of_use_error": "Трябва да се съгласите с условията за ползване",
"registration-added-to-queue": "Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор.",
+ "registration-queue-average-time": "Средното време за одобрение на нови членове е %1 часа и %2 минути.",
+ "registration-queue-auto-approve-time": "Членството Ви в този форум ще бъде напълно активирано след около %1 часа.",
"interstitial.intro": "Нуждаем се от малко допълнителна информация, преди да можем да създадем акаунта Ви.",
"interstitial.errors-found": "Не можем да завършим Вашата регистрация:",
"gdpr_agree_data": "Съгласявам се това личната ми информация да се съхранява и обработва от този уеб сайт.",
diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json
index b173eb2bfa..2c31e0f5d9 100644
--- a/public/language/bg/topic.json
+++ b/public/language/bg/topic.json
@@ -30,6 +30,7 @@
"locked": "Заключена",
"pinned": "Закачена",
"moved": "Преместена",
+ "moved-from": "Преместена от %1",
"copy-ip": "Копиране на IP адреса",
"ban-ip": "Блокиране на IP адреса",
"view-history": "История на редакциите",
diff --git a/public/language/bg/user.json b/public/language/bg/user.json
index 14ee3c0bb8..e2440e37ca 100644
--- a/public/language/bg/user.json
+++ b/public/language/bg/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Отваряне на външните връзки в нов подпрозорец",
"enable_topic_searching": "Включване на търсенето в темите",
"topic_search_help": "Ако е включено, търсенето в темата ще замени стандартното поведение на браузъра при търсене в страницата и ще Ви позволи да претърсвате цялата тема, а не само това, което се вижда на екрана",
+ "update_url_with_post_index": "Обновяване на адресната лента с номера на публикацията по време на разглеждане на темите",
"scroll_to_my_post": "След публикуване на отговор, да се показва новата публикация",
"follow_topics_you_reply_to": "Следене на темите, в които отговаряте",
"follow_topics_you_create": "Следене на темите, които създавате",
diff --git a/public/language/bg/users.json b/public/language/bg/users.json
index 2a6fb90c4b..1d747cd9cb 100644
--- a/public/language/bg/users.json
+++ b/public/language/bg/users.json
@@ -11,6 +11,7 @@
"online-only": "Само тези на линия",
"invite": "Канене",
"prompt-email": "Е-пощи:",
+ "groups-to-join": "Групи, в които да се присъедини след приемане на поканата:",
"invitation-email-sent": "Беше изпратено е-писмо за потвърждение до %1",
"user_list": "Списък от потребители",
"recent_topics": "Скорошни теми",
diff --git a/public/language/bn/admin/manage/privileges.json b/public/language/bn/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/bn/admin/manage/privileges.json
+++ b/public/language/bn/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/bn/admin/menu.json b/public/language/bn/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/bn/admin/menu.json
+++ b/public/language/bn/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/bn/admin/settings/email.json b/public/language/bn/admin/settings/email.json
index 205865077f..18d4209380 100644
--- a/public/language/bn/admin/settings/email.json
+++ b/public/language/bn/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "ইমেইল ডাইজেস্ট",
"subscriptions.disable": "ইমেইল ডাইজেস্ট নিষ্ক্রিয়",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/bn/notifications.json b/public/language/bn/notifications.json
index f17cd098c2..6c99b29edd 100644
--- a/public/language/bn/notifications.json
+++ b/public/language/bn/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/bn/register.json b/public/language/bn/register.json
index 75e8cd31b7..c116f1a313 100644
--- a/public/language/bn/register.json
+++ b/public/language/bn/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "আমি নিয়মাবলী মেনে চলতে সম্মতি জানালাম",
"terms_of_use_error": "আপনাকে অবশ্যই ব্যাবহার নীতিমালায় সম্মত হতে হবে।",
"registration-added-to-queue": "আপনার নিবন্ধনটি এ্যাপ্লুভাল তালিকায় যুক্ত হয়েছে। একজন এডমিনিস্ট্রেটর কর্তৃক নিবন্ধন গৃহীত হলে আপনি একটি মেইল পাবেন। ",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "আপনার একাউন্ট তৈরীর পূর্বে আমাদের আরো কিছু বাড়তি তথ্য জানা প্রয়োজন।",
"interstitial.errors-found": "আপনার নিবন্ধনটি সম্পূর্ণ করা সম্ভব হয় নি।",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/bn/topic.json b/public/language/bn/topic.json
index 702e6d052f..078de5e741 100644
--- a/public/language/bn/topic.json
+++ b/public/language/bn/topic.json
@@ -30,6 +30,7 @@
"locked": "বন্ধ",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/bn/user.json b/public/language/bn/user.json
index d74ed3e2e0..54ca3a3e03 100644
--- a/public/language/bn/user.json
+++ b/public/language/bn/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "আউটগোয়িং লিংকগুলো নতুন ট্যাবে খুলুন",
"enable_topic_searching": "In-Topic সার্চ সক্রীয় করো",
"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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/bn/users.json b/public/language/bn/users.json
index e7ba22f9f6..17b65aab16 100644
--- a/public/language/bn/users.json
+++ b/public/language/bn/users.json
@@ -11,6 +11,7 @@
"online-only": "শুধুমাত্র অনলাইন",
"invite": "ইনভাইট",
"prompt-email": "ইমেইল",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "%1 কে একটি ইনভাইটেশন ইমেইল পাঠানো হয়েছে",
"user_list": "সদস্য তালিকা",
"recent_topics": "সাম্প্রতিক টপিক",
diff --git a/public/language/cs/admin/manage/privileges.json b/public/language/cs/admin/manage/privileges.json
index 721db0ee44..16f257ae6c 100644
--- a/public/language/cs/admin/manage/privileges.json
+++ b/public/language/cs/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Náhrát soubory",
"signature": "Podpis",
"ban": "Blokovat",
+ "invite": "Invite",
"search-content": "Hledat obsah",
"search-users": "Hledat uživatele",
"search-tags": "Hledat označení",
diff --git a/public/language/cs/admin/menu.json b/public/language/cs/admin/menu.json
index 77803af507..9be66690ab 100644
--- a/public/language/cs/admin/menu.json
+++ b/public/language/cs/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Stránkování",
"settings/tags": "Značky",
"settings/notifications": "Oznámení",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/cs/admin/settings/email.json b/public/language/cs/admin/settings/email.json
index 1938eb5702..c545b1a4bf 100644
--- a/public/language/cs/admin/settings/email.json
+++ b/public/language/cs/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Následující e-mailové adresy budou zobrazeny příjemci v políčkách „Od” a „Odpovědět”.",
"from": "Jméno – od",
"from-help": "Zobrazené jméno v e-mailu v – Od",
-
+
"smtp-transport": "Přenos SMTP",
"smtp-transport.enabled": "Pro odesílání e-mailů použít externí e-mailový server ",
"smtp-transport-help": "Ze seznamu můžete vybrat známé služby nebo zadat vlastní.",
@@ -35,5 +35,7 @@
"subscriptions": "E-mailové odběry",
"subscriptions.disable": "Zakázat e-mailové odběry",
"subscriptions.hour": "Hodina přehledu",
- "subscriptions.hour-help": "Zadejte číslo odpovídající hodině, kdy mají být odeslány přehledové e-maily (tj. 0 pro půlnoc, 17 pro 5:00pm). Mějte na paměti, že tato hodina závisí na hodinách samotného serveru a nemusí tak souhlasit se systémovými hodinami. 0 pro půlnoc, 17 pro 5:00pm). Mějte na paměti, že tato hodina závisí na hodinách samotného serveru a nemusí tak souhlasit se systémovými hodinami. ctrl and shift to select multiple options.",
"details.badge_preview": "Náhled symbolu",
"details.change_icon": "Změnit ikonu",
"details.change_label_colour": "Změnit barvu popisu",
diff --git a/public/language/cs/notifications.json b/public/language/cs/notifications.json
index 662cf1541d..6fe457883d 100644
--- a/public/language/cs/notifications.json
+++ b/public/language/cs/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Začne-li vás někdo sledovat",
"notificationType_new-chat": "Obdržíte-li novou konverzační zprávu",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Obdržíte-li pozvání ke skupině",
"notificationType_group-request-membership": "Pokud někdo požaduje připojení se do vaší skupiny",
"notificationType_new-register": "Bude-li někdo přidán do registrační fronty",
diff --git a/public/language/cs/register.json b/public/language/cs/register.json
index 2175d64a13..e979d71181 100644
--- a/public/language/cs/register.json
+++ b/public/language/cs/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Souhlasím s Podmínkami",
"terms_of_use_error": "Musíte souhlasit s podmínkami.",
"registration-added-to-queue": "Vaše registrace byla přidána do fronty. Obdržíte e-mail až ji správce schválí.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Před vytvořením účtu vyžadujeme některé dodatečné informace.",
"interstitial.errors-found": "Nebylo možné dokončit vaší registraci:",
"gdpr_agree_data": "Dávám souhlas se sběrem a zpracováním mých osobních údajů na této webové stránce.",
diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json
index 68f6a57c4d..14cff97bdf 100644
--- a/public/language/cs/topic.json
+++ b/public/language/cs/topic.json
@@ -30,6 +30,7 @@
"locked": "Uzamknuto",
"pinned": "Připnuto",
"moved": "Přesunuto",
+ "moved-from": "Moved from %1",
"copy-ip": "Kopírovat IP",
"ban-ip": "Zakázat IP",
"view-history": "Upravit historii",
diff --git a/public/language/cs/user.json b/public/language/cs/user.json
index 4fcf3f1198..5550e69817 100644
--- a/public/language/cs/user.json
+++ b/public/language/cs/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Otevřít odchozí odkaz v nové záložce",
"enable_topic_searching": "Povolit vyhledávání v tématu",
"topic_search_help": "Je-li povoleno, hledání v tématu přepíše výchozí chování vyhledávání v prohlížeči a umožní vám prohledávat celé téma, namísto pouze toho, co je zobrazeno na obrazovce",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Po odeslání odpovědi, zobrazit nový příspěvek",
"follow_topics_you_reply_to": "Sledovat témata, do kterých přispějete",
"follow_topics_you_create": "Sledovat témata, která vytvoříte",
diff --git a/public/language/cs/users.json b/public/language/cs/users.json
index 8ad78761dc..b70ffdff7b 100644
--- a/public/language/cs/users.json
+++ b/public/language/cs/users.json
@@ -11,6 +11,7 @@
"online-only": "Pouze připojené",
"invite": "Pozvat",
"prompt-email": "E-maily:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "E-mailová pozvánka byla odeslána na adresu %1",
"user_list": "Seznam uživatelů",
"recent_topics": "Poslední témata",
diff --git a/public/language/da/admin/manage/privileges.json b/public/language/da/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/da/admin/manage/privileges.json
+++ b/public/language/da/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/da/admin/menu.json b/public/language/da/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/da/admin/menu.json
+++ b/public/language/da/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/da/admin/settings/email.json b/public/language/da/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/da/admin/settings/email.json
+++ b/public/language/da/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Mærke forhåndsvisning",
"details.change_icon": "Skift ikon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/da/notifications.json b/public/language/da/notifications.json
index e18b411132..daa04bcf68 100644
--- a/public/language/da/notifications.json
+++ b/public/language/da/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/da/register.json b/public/language/da/register.json
index 720d580301..efa248d279 100644
--- a/public/language/da/register.json
+++ b/public/language/da/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Jeg acceptere betingelserne for brug",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Din registrering er blevet tilføjet til godkendelses køen. Du vil mostage en email når du er blevet accepteret af en administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/da/topic.json b/public/language/da/topic.json
index 158dbf0587..7ae6aa1e22 100644
--- a/public/language/da/topic.json
+++ b/public/language/da/topic.json
@@ -30,6 +30,7 @@
"locked": "Låst",
"pinned": "Pinned",
"moved": "Flyttet",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/da/user.json b/public/language/da/user.json
index 950027ff42..2386b1ada9 100644
--- a/public/language/da/user.json
+++ b/public/language/da/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Åben udgående link i en ny tab",
"enable_topic_searching": "Slå In-Topic søgning til",
"topic_search_help": "Hvis slået til, så vil in-topic søgning overskrive browserens almindelige søge function og tillade dig at søge hele emnet, istedet for kun det der er vist på skærmen",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Vis emner du har oprettet",
diff --git a/public/language/da/users.json b/public/language/da/users.json
index 81130f7b08..d9db1f8fcc 100644
--- a/public/language/da/users.json
+++ b/public/language/da/users.json
@@ -11,6 +11,7 @@
"online-only": "Kun online",
"invite": "Invitér",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "En invitations email er blevet sendt til %1",
"user_list": "Bruger Liste",
"recent_topics": "Seneste Tråde",
diff --git a/public/language/de/admin/manage/privileges.json b/public/language/de/admin/manage/privileges.json
index a07501dd3d..010833b7c2 100644
--- a/public/language/de/admin/manage/privileges.json
+++ b/public/language/de/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Dateien hochladen",
"signature": "Signatur",
"ban": "Bannen",
+ "invite": "Invite",
"search-content": "Inhalt durchsuchen",
"search-users": "Benutzersuche",
"search-tags": "Tags suchen",
diff --git a/public/language/de/admin/menu.json b/public/language/de/admin/menu.json
index 9997a0db6f..24b4a61dea 100644
--- a/public/language/de/admin/menu.json
+++ b/public/language/de/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Seitennummerierung",
"settings/tags": "Tags",
"settings/notifications": "Benachrichtigungen",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json
index 8c4a3508cd..89a5bbba80 100644
--- a/public/language/de/admin/settings/email.json
+++ b/public/language/de/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Die folgende E-Mail Adresse ist die E-Mail Adresse, welche dem Empfänger im \"Von\" und \"Antworten\" Bereich sehen wird.",
"from": "Name des Absenders",
"from-help": "Der Name des Absenders, welcher in der E-Mail angezeigt werden soll.",
-
+
"smtp-transport": "SMTP Konfiguration",
"smtp-transport.enabled": "Benutze einen externen Email-Server",
"smtp-transport-help": "Du kannst aus einer Liste bekannter Email-Provider auswählen, oder einen benutzerdefinierten eingeben.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Zusammenfassungen",
"subscriptions.disable": "Deaktivierung der Email Zusammenfassungen",
"subscriptions.hour": "Sende Zeit",
- "subscriptions.hour-help": "Bitte geben Sie eine Nummer ein, welche die Stunde repräsentiert zu welcher geplante Emails versandt werden sollen (z.B. 0 für Mitternacht, 17 für 5 Uhr Nachmittags). Beachten Sie, dass die Zeit auf der Serverzeit basiert und daher nicht umbedingt mit ihrer Systemzeit übereinstimmen muss.0 für Mitternacht, 17 für 5 Uhr Nachmittags). Beachten Sie, dass die Zeit auf der Serverzeit basiert und daher nicht umbedingt mit ihrer Systemzeit übereinstimmen muss.ctrl and shift to select multiple options.",
"details.badge_preview": "Abzeichenvorschau",
"details.change_icon": "Symbol ändern",
"details.change_label_colour": "Label-Farbe ändern",
diff --git a/public/language/de/notifications.json b/public/language/de/notifications.json
index 736cf94e69..53407294d2 100644
--- a/public/language/de/notifications.json
+++ b/public/language/de/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Wenn ein Post bearbeitet wurde, in einem Thema welches du beobachtest",
"notificationType_follow": "Wenn dir jemand neues folgt",
"notificationType_new-chat": "Wenn du eine Chat Nachricht erhältst",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Wenn du eine Gruppeneinladung erhältst",
"notificationType_group-request-membership": "Wenn jemand einer Gruppe beitreten möchte, die dir gehört",
"notificationType_new-register": "Wenn jemand der Registrierungswarteschlange hinzugefügt wird",
diff --git a/public/language/de/register.json b/public/language/de/register.json
index 6e11f0b7a4..bb70e93c89 100644
--- a/public/language/de/register.json
+++ b/public/language/de/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Ich stimme den Nutzungsbedingungen zu",
"terms_of_use_error": "Du musst den Nutzungsbedingungen zustimmen",
"registration-added-to-queue": "Deine Registration wurde abgeschickt. Du wirst eine E-Mail erhalten, sobald sie von einem Administrator akzeptiert wird.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Wir benötigen ein wenig mehr Informationen bevor wir dein Konto erstellen können.",
"interstitial.errors-found": "Wir konnten deinen Registrierungsvorgang nicht abschließen:",
"gdpr_agree_data": "Ich stimme der Sammlung und Verarbeitung meiner Persönlichen Daten auf dieser Website zu.",
diff --git a/public/language/de/topic.json b/public/language/de/topic.json
index 387375fa94..a28cb572dc 100644
--- a/public/language/de/topic.json
+++ b/public/language/de/topic.json
@@ -30,6 +30,7 @@
"locked": "Gesperrt",
"pinned": "Angeheftet",
"moved": "Verschoben",
+ "moved-from": "Moved from %1",
"copy-ip": "IP-Adresse Kopieren",
"ban-ip": "IP-Adresse bannen",
"view-history": "Verlauf bearbeiten",
diff --git a/public/language/de/user.json b/public/language/de/user.json
index d953d61d58..5b219f1078 100644
--- a/public/language/de/user.json
+++ b/public/language/de/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Ausgehende Links in neuem Tab öffnen",
"enable_topic_searching": "Suchen innerhalb von Themen aktivieren",
"topic_search_help": "Wenn aktiviert, ersetzt die im-Thema-Suche die Standardsuche des Browsers. Dadurch kannst du im ganzen Thema suchen, nicht nur im sichtbaren Abschnitt.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Zeige eigene Antwort nach dem Erstellen im Thema an",
"follow_topics_you_reply_to": "Themen folgen, in denen du geantwortet hast",
"follow_topics_you_create": "Themen folgen, die du erstellst",
diff --git a/public/language/de/users.json b/public/language/de/users.json
index 76805692aa..ce02224f2a 100644
--- a/public/language/de/users.json
+++ b/public/language/de/users.json
@@ -11,6 +11,7 @@
"online-only": "Nur Online",
"invite": "Einladen",
"prompt-email": "E-Mails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Eine Einladungsemail wurde an %1 verschickt",
"user_list": "Nutzerliste",
"recent_topics": "Neueste Themen",
diff --git a/public/language/el/admin/manage/privileges.json b/public/language/el/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/el/admin/manage/privileges.json
+++ b/public/language/el/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/el/admin/menu.json b/public/language/el/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/el/admin/menu.json
+++ b/public/language/el/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/el/admin/settings/email.json b/public/language/el/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/el/admin/settings/email.json
+++ b/public/language/el/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/el/notifications.json b/public/language/el/notifications.json
index 85efcdc2ed..248c0a6034 100644
--- a/public/language/el/notifications.json
+++ b/public/language/el/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/el/register.json b/public/language/el/register.json
index e855390b71..9d0d16364b 100644
--- a/public/language/el/register.json
+++ b/public/language/el/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Συμφωνώ με τους Όρους Χρήσης",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/el/topic.json b/public/language/el/topic.json
index b726e77cd3..8128c0a405 100644
--- a/public/language/el/topic.json
+++ b/public/language/el/topic.json
@@ -30,6 +30,7 @@
"locked": "Κλειδωμένο",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/el/user.json b/public/language/el/user.json
index b7583be3c3..9d546c54b8 100644
--- a/public/language/el/user.json
+++ b/public/language/el/user.json
@@ -123,6 +123,7 @@
"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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/el/users.json b/public/language/el/users.json
index 37ef55e248..a9fd6501e5 100644
--- a/public/language/el/users.json
+++ b/public/language/el/users.json
@@ -11,6 +11,7 @@
"online-only": "Μόνο Συνδεδεμένοι",
"invite": "Πρόσκληση",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "Λίστα Χρηστών",
"recent_topics": "Πρόσφατα Θέματα",
diff --git a/public/language/en-GB/admin/manage/privileges.json b/public/language/en-GB/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/en-GB/admin/manage/privileges.json
+++ b/public/language/en-GB/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/en-GB/admin/settings/email.json b/public/language/en-GB/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/en-GB/admin/settings/email.json
+++ b/public/language/en-GB/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/en-GB/notifications.json b/public/language/en-GB/notifications.json
index 3b9e656c0c..17d7a23bdf 100644
--- a/public/language/en-GB/notifications.json
+++ b/public/language/en-GB/notifications.json
@@ -66,6 +66,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/en-GB/register.json b/public/language/en-GB/register.json
index 461295ef5f..c6136b9d0a 100644
--- a/public/language/en-GB/register.json
+++ b/public/language/en-GB/register.json
@@ -1,27 +1,28 @@
{
- "register": "Register",
- "cancel_registration": "Cancel Registration",
- "help.email": "By default, your email will be hidden from the public.",
- "help.username_restrictions": "A unique username between %1 and %2 characters. Others can mention you with @username.",
- "help.minimum_password_length": "Your password's length must be at least %1 characters.",
- "email_address": "Email Address",
- "email_address_placeholder": "Enter Email Address",
- "username": "Username",
- "username_placeholder": "Enter Username",
- "password": "Password",
- "password_placeholder": "Enter Password",
- "confirm_password": "Confirm Password",
- "confirm_password_placeholder": "Confirm Password",
- "register_now_button": "Register Now",
- "alternative_registration": "Alternative Registration",
- "terms_of_use": "Terms of Use",
- "agree_to_terms_of_use": "I agree to the Terms of Use",
- "terms_of_use_error": "You must agree to the Terms of Use",
- "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator.",
- "interstitial.intro": "We require some additional information before we can create your account.",
- "interstitial.errors-found": "We could not complete your registration:",
-
- "gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
- "gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
- "gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
-}
\ No newline at end of file
+ "register": "Register",
+ "cancel_registration": "Cancel Registration",
+ "help.email": "By default, your email will be hidden from the public.",
+ "help.username_restrictions": "A unique username between %1 and %2 characters. Others can mention you with @username.",
+ "help.minimum_password_length": "Your password's length must be at least %1 characters.",
+ "email_address": "Email Address",
+ "email_address_placeholder": "Enter Email Address",
+ "username": "Username",
+ "username_placeholder": "Enter Username",
+ "password": "Password",
+ "password_placeholder": "Enter Password",
+ "confirm_password": "Confirm Password",
+ "confirm_password_placeholder": "Confirm Password",
+ "register_now_button": "Register Now",
+ "alternative_registration": "Alternative Registration",
+ "terms_of_use": "Terms of Use",
+ "agree_to_terms_of_use": "I agree to the Terms of Use",
+ "terms_of_use_error": "You must agree to the Terms of Use",
+ "registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
+ "interstitial.intro": "We require some additional information before we can create your account.",
+ "interstitial.errors-found": "We could not complete your registration:",
+ "gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
+ "gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
+ "gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
+}
diff --git a/public/language/en-GB/topic.json b/public/language/en-GB/topic.json
index e56cefe728..ef7d946bcf 100644
--- a/public/language/en-GB/topic.json
+++ b/public/language/en-GB/topic.json
@@ -33,6 +33,7 @@
"locked": "Locked",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/en-GB/user.json b/public/language/en-GB/user.json
index bbf2f2ba5f..cddce941c6 100644
--- a/public/language/en-GB/user.json
+++ b/public/language/en-GB/user.json
@@ -133,7 +133,7 @@
"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",
-
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
diff --git a/public/language/en-GB/users.json b/public/language/en-GB/users.json
index 18cf03fde3..87c7d1b4fc 100644
--- a/public/language/en-GB/users.json
+++ b/public/language/en-GB/users.json
@@ -11,6 +11,7 @@
"online-only": "Online only",
"invite": "Invite",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
diff --git a/public/language/en-US/admin/manage/privileges.json b/public/language/en-US/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/en-US/admin/manage/privileges.json
+++ b/public/language/en-US/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/en-US/admin/menu.json b/public/language/en-US/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/en-US/admin/menu.json
+++ b/public/language/en-US/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/en-US/admin/settings/email.json b/public/language/en-US/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/en-US/admin/settings/email.json
+++ b/public/language/en-US/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/en-US/notifications.json b/public/language/en-US/notifications.json
index 91600bf79a..c5d367fae2 100644
--- a/public/language/en-US/notifications.json
+++ b/public/language/en-US/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/en-US/register.json b/public/language/en-US/register.json
index 3919985750..0de0ff19c9 100644
--- a/public/language/en-US/register.json
+++ b/public/language/en-US/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "I agree to the Terms of Use",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/en-US/topic.json b/public/language/en-US/topic.json
index 933960757e..16dc2d4b75 100644
--- a/public/language/en-US/topic.json
+++ b/public/language/en-US/topic.json
@@ -30,6 +30,7 @@
"locked": "Locked",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/en-US/user.json b/public/language/en-US/user.json
index 044920c015..48573a2b19 100644
--- a/public/language/en-US/user.json
+++ b/public/language/en-US/user.json
@@ -123,6 +123,7 @@
"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 behavior and allow you to search through the entire topic, instead of what is only shown on screen",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/en-US/users.json b/public/language/en-US/users.json
index 68ee098e47..f5bfcc38ea 100644
--- a/public/language/en-US/users.json
+++ b/public/language/en-US/users.json
@@ -11,6 +11,7 @@
"online-only": "Online only",
"invite": "Invite",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
diff --git a/public/language/en-x-pirate/admin/manage/privileges.json b/public/language/en-x-pirate/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/en-x-pirate/admin/manage/privileges.json
+++ b/public/language/en-x-pirate/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/en-x-pirate/admin/menu.json b/public/language/en-x-pirate/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/en-x-pirate/admin/menu.json
+++ b/public/language/en-x-pirate/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/en-x-pirate/admin/settings/email.json b/public/language/en-x-pirate/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/en-x-pirate/admin/settings/email.json
+++ b/public/language/en-x-pirate/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/en-x-pirate/notifications.json b/public/language/en-x-pirate/notifications.json
index 705fed3063..26adae26f2 100644
--- a/public/language/en-x-pirate/notifications.json
+++ b/public/language/en-x-pirate/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/en-x-pirate/register.json b/public/language/en-x-pirate/register.json
index 474b308078..4758b0bb2f 100644
--- a/public/language/en-x-pirate/register.json
+++ b/public/language/en-x-pirate/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "I agree to the Terms of Use",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/en-x-pirate/topic.json b/public/language/en-x-pirate/topic.json
index 933960757e..16dc2d4b75 100644
--- a/public/language/en-x-pirate/topic.json
+++ b/public/language/en-x-pirate/topic.json
@@ -30,6 +30,7 @@
"locked": "Locked",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/en-x-pirate/user.json b/public/language/en-x-pirate/user.json
index 59ecaba3a3..995ec23a49 100644
--- a/public/language/en-x-pirate/user.json
+++ b/public/language/en-x-pirate/user.json
@@ -123,6 +123,7 @@
"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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/en-x-pirate/users.json b/public/language/en-x-pirate/users.json
index d8b38f8f99..d5b60eaf9a 100644
--- a/public/language/en-x-pirate/users.json
+++ b/public/language/en-x-pirate/users.json
@@ -11,6 +11,7 @@
"online-only": "Online only",
"invite": "Invite",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
diff --git a/public/language/es/admin/manage/privileges.json b/public/language/es/admin/manage/privileges.json
index e589101079..b40262ebb9 100644
--- a/public/language/es/admin/manage/privileges.json
+++ b/public/language/es/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Subir Archivos",
"signature": "Firma",
"ban": "Banear",
+ "invite": "Invite",
"search-content": "Buscar Contenido",
"search-users": "Buscar Usuarios",
"search-tags": "Buscar Tags",
diff --git a/public/language/es/admin/menu.json b/public/language/es/admin/menu.json
index 353e99d25e..4cd3ae3061 100644
--- a/public/language/es/admin/menu.json
+++ b/public/language/es/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Paginación",
"settings/tags": "Etiquetas",
"settings/notifications": "Notificaciones",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/es/admin/settings/email.json b/public/language/es/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/es/admin/settings/email.json
+++ b/public/language/es/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Previsualización de Insignia",
"details.change_icon": "Cambiar Icono",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/es/notifications.json b/public/language/es/notifications.json
index 6dc1c86b19..cd0b726262 100644
--- a/public/language/es/notifications.json
+++ b/public/language/es/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Cuando alguien comienza a seguirte",
"notificationType_new-chat": "Cuando recibes un mensaje de chat",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Cuando recibes una invitación a un grupo",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "Cuando alguien es añadido a una cola de registro",
diff --git a/public/language/es/register.json b/public/language/es/register.json
index 00cf39d22a..cf48df7fb5 100644
--- a/public/language/es/register.json
+++ b/public/language/es/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Acepto los Términos y Condiciones de uso",
"terms_of_use_error": "Debes aceptar los términos de uso",
"registration-added-to-queue": "Tu registro se ha añadido a la cola de aprobación,. Recibirás un correo cuando este sea aceptado por un administrador. ",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Se requiere de información adicional antes de crear tu cuenta.",
"interstitial.errors-found": "No pudimos completar tu registro:",
"gdpr_agree_data": "Consiento la recolección y el procesamiento de mi información personal en este sitio web",
diff --git a/public/language/es/topic.json b/public/language/es/topic.json
index dda4294346..d0073d0a43 100644
--- a/public/language/es/topic.json
+++ b/public/language/es/topic.json
@@ -30,6 +30,7 @@
"locked": "Cerrado",
"pinned": "Fijo",
"moved": "Movido",
+ "moved-from": "Moved from %1",
"copy-ip": "Copiar IP",
"ban-ip": "Banear IP",
"view-history": "Editar Historial",
diff --git a/public/language/es/user.json b/public/language/es/user.json
index 321fab2804..0e05de01f5 100644
--- a/public/language/es/user.json
+++ b/public/language/es/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Abrir los enlaces externos en una nueva pestaña",
"enable_topic_searching": "Activar la búsqueda \"dentro del tema\"",
"topic_search_help": "Si está activada, la búsqueda 'dentro del tema' al usar el buscador de la barra de navegación automáticamente buscaras solo en el tema actual.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Luego de enviar una respuesta, mostrar el nuevo mensaje",
"follow_topics_you_reply_to": "Seguir temas a los que respondes",
"follow_topics_you_create": "Seguir temas creados por ti",
diff --git a/public/language/es/users.json b/public/language/es/users.json
index 9fc683b9c1..e190880bb2 100644
--- a/public/language/es/users.json
+++ b/public/language/es/users.json
@@ -11,6 +11,7 @@
"online-only": "Sólo en línea",
"invite": "Invitar",
"prompt-email": "Correos electrónico:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Un correo de invitación ha sido enviado a %1",
"user_list": "Lista de Usuarios",
"recent_topics": "Temas Recientes",
diff --git a/public/language/et/admin/manage/privileges.json b/public/language/et/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/et/admin/manage/privileges.json
+++ b/public/language/et/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/et/admin/menu.json b/public/language/et/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/et/admin/menu.json
+++ b/public/language/et/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/et/admin/settings/email.json b/public/language/et/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/et/admin/settings/email.json
+++ b/public/language/et/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Embleemi eelvaade",
"details.change_icon": "Vaheta ikooni",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/et/notifications.json b/public/language/et/notifications.json
index 43a8469320..0db60d7e5c 100644
--- a/public/language/et/notifications.json
+++ b/public/language/et/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/et/register.json b/public/language/et/register.json
index 0b7f075e3d..fd7251067a 100644
--- a/public/language/et/register.json
+++ b/public/language/et/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Nõustun foorumi reeglitega",
"terms_of_use_error": "Sa pead nõustuma Tingimustega",
"registration-added-to-queue": "Teie registreerimine vaadatakse üle. Te saate e-kirja kui administraator on aktsepteerinud registreermimise.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Enne kasutaja loomist on meil vaja lisainfot.",
"interstitial.errors-found": "Meil ei õnnestunud registreerimist lõpule viia:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/et/topic.json b/public/language/et/topic.json
index cbeff78e93..415dac6e17 100644
--- a/public/language/et/topic.json
+++ b/public/language/et/topic.json
@@ -30,6 +30,7 @@
"locked": "Lukustatud",
"pinned": "Märgistatud",
"moved": "Liigutatud",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/et/user.json b/public/language/et/user.json
index 2ea578a001..41f1e32fd8 100644
--- a/public/language/et/user.json
+++ b/public/language/et/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Ava väljaminevad lingid uues aknas",
"enable_topic_searching": "Võimalda teemasisene otsing",
"topic_search_help": "Kui see on sisse lükatud, siis teemasisene otsing võtab üle brauseri tavapärase otsingu ning võimaldab otsida ainult ekraanile mahtuva teema asemel terve teema ulatuses.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Pärast vastuse postitamist, näita uut postitust",
"follow_topics_you_reply_to": "Jälgi teemasid, millele vastad",
"follow_topics_you_create": "Jälgi teemasid, mille lood",
diff --git a/public/language/et/users.json b/public/language/et/users.json
index 791d850173..8b602fda9a 100644
--- a/public/language/et/users.json
+++ b/public/language/et/users.json
@@ -11,6 +11,7 @@
"online-only": "Ainult seesolevad",
"invite": "Kutsuge",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Kutse on saadetud e-mailile %1",
"user_list": "Kasutajate list",
"recent_topics": "Viimased teemad",
diff --git a/public/language/fa-IR/admin/manage/privileges.json b/public/language/fa-IR/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/fa-IR/admin/manage/privileges.json
+++ b/public/language/fa-IR/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/fa-IR/admin/menu.json b/public/language/fa-IR/admin/menu.json
index fb1703f728..31a0e96151 100644
--- a/public/language/fa-IR/admin/menu.json
+++ b/public/language/fa-IR/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "برچسب ها",
"settings/notifications": "آگاهسازیها",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "کوکی ها",
diff --git a/public/language/fa-IR/admin/settings/email.json b/public/language/fa-IR/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/fa-IR/admin/settings/email.json
+++ b/public/language/fa-IR/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "پیش نمایشِ نشان",
"details.change_icon": "تغییر آیکن",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/fa-IR/modules.json b/public/language/fa-IR/modules.json
index 5df903c5b2..8f7d873aa9 100644
--- a/public/language/fa-IR/modules.json
+++ b/public/language/fa-IR/modules.json
@@ -59,7 +59,7 @@
"composer.upload-file": "بارگذاری فایل",
"composer.zen_mode": "حالت ذن",
"composer.select_category": "یک دستهبندی انتخاب کنید",
- "composer.textarea.placeholder": "Enter your post content here, drag and drop images",
+ "composer.textarea.placeholder": "محتوای پست خود را اینجا وارد کنید یا تصاویر را به اینجا بکشید و رها کنید",
"bootbox.ok": "باشه",
"bootbox.cancel": "انصراف",
"bootbox.confirm": "تایید",
diff --git a/public/language/fa-IR/notifications.json b/public/language/fa-IR/notifications.json
index aff9a5edb1..86508854c4 100644
--- a/public/language/fa-IR/notifications.json
+++ b/public/language/fa-IR/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "هنگامی که کسی شما را دنبال می کند",
"notificationType_new-chat": "هنگامی که شما پیام چتی دریافت می کنید",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "هنگامی که شما دعوتنامه گروه دریافت می کنید",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "وقتی کسی به صف ثبت نام اضافه می شود",
diff --git a/public/language/fa-IR/register.json b/public/language/fa-IR/register.json
index 5c5eb963d2..7d73efbb3c 100644
--- a/public/language/fa-IR/register.json
+++ b/public/language/fa-IR/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "با شرایط استفاده موافقم",
"terms_of_use_error": "شما باید با شرایط انجمن موافقت کنید",
"registration-added-to-queue": "ثبت نام شما به صف تایید اضافه شد. وقتی توسط یک مدیر تایید شد شما ایمیلی دریافت خواهید کرد.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "ما نیاز به برخی اطلاعات اضافی شما قبل از ایجاد شناسه کاربری داریم.",
"interstitial.errors-found": "شما نمیتوانید ثبت نام خود را تکمیل کنید:",
"gdpr_agree_data": "من با جمع آوری و پرداز اطلاعات شخصی در این وبسایت موافقم.",
diff --git a/public/language/fa-IR/topic.json b/public/language/fa-IR/topic.json
index eebcf522a8..5dd9b7fd32 100644
--- a/public/language/fa-IR/topic.json
+++ b/public/language/fa-IR/topic.json
@@ -22,7 +22,7 @@
"purge": "پاک کردن",
"restore": "برگرداندن",
"move": "جابهجا کردن",
- "change-owner": "Change Owner",
+ "change-owner": "تغییر مالک پست",
"fork": "شاخه ساختن",
"link": "پیوند",
"share": "اشتراکگذاری",
@@ -30,12 +30,13 @@
"locked": "قفل شده است",
"pinned": "سنجاق شده",
"moved": "منتقل شده",
+ "moved-from": "Moved from %1",
"copy-ip": "کپی IP",
"ban-ip": "مسدود کردن IP",
"view-history": "تاریخچه ویرایش",
"bookmark_instructions": "برای بازگشت به آخرین پست در این موضوع اینجا را کلیک کنید.",
- "flag-post": "Flag this post",
- "flag-user": "Flag this user",
+ "flag-post": "گزارش این پست",
+ "flag-user": "گزارش این کاربر",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"merged_message": "This topic has been merged into %2",
@@ -67,7 +68,7 @@
"thread_tools.move": "جابجا کردن موضوع",
"thread_tools.move-posts": "انتقال پست ها",
"thread_tools.move_all": "جابجایی همه",
- "thread_tools.change_owner": "Change Owner",
+ "thread_tools.change_owner": "تغییر مالک پست",
"thread_tools.select_category": "انتخاب دسته",
"thread_tools.fork": "شاخه ساختن از موضوع",
"thread_tools.delete": "پاک کردن موضوع",
@@ -80,7 +81,7 @@
"thread_tools.merge_topics": "ادغام موضوع ها",
"thread_tools.merge": "ادغام",
"topic_move_success": "This topic will be moved to \"%1\" shortly. Click here to undo.",
- "topic_move_multiple_success": "These topics will be moved to \"%1\" shortly. Click here to undo.",
+ "topic_move_multiple_success": "تاپیک به %1 منتقل خواهد شد. برای جلوگیری از منتقل شدن کلیک کنید.",
"topic_move_all_success": "All topics will be moved to \"%1\" shortly. Click here to undo.",
"topic_move_undone": "Topic move undone",
"topic_move_posts_success": "Posts will be moved shortly. Click here to undo.",
@@ -102,18 +103,18 @@
"fork_topic": "شاخه ساختن از موضوع",
"fork_topic_instruction": "پستهایی را که میخواهید به موضوع تازه ببرید، انتخاب کنید",
"fork_no_pids": "هیچ پستی انتخاب نشده!",
- "no-posts-selected": "No posts selected!",
- "x-posts-selected": "%1 post(s) selected",
+ "no-posts-selected": "هیچ پستی انتخاب نشده!",
+ "x-posts-selected": "%1 پست انتخاب شده",
"x-posts-will-be-moved-to-y": "%1 post(s) will be moved to \"%2\"",
- "fork_pid_count": "%1 پست (ها) انتخاب شده اند",
+ "fork_pid_count": "%1 پست انتخاب شده",
"fork_success": "موضوع با موفقیت منشعب شد! برای رفتن به موضوع انشعابی اینجا را کلیک کنید.",
"delete_posts_instruction": "با کلیک بر روی پست شما می خواهید به حذف/پاکسازی",
- "merge_topics_instruction": "Click the topics you want to merge or search for them",
- "merge-topic-list-title": "List of topics to be merged",
- "merge-options": "Merge options",
+ "merge_topics_instruction": "تاپیک های مورد نظر برای ادغام را انتخاب کنید یا آن ها را جستجو کنید",
+ "merge-topic-list-title": "لیست تاپیک هایی که با هم ادغام می شوند",
+ "merge-options": "تنظیمات ادغام",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
- "move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
+ "move_posts_instruction": "پست های مورد نظر را انتخاب کنید سپس به تاپیک مقصد بروید و گزینه جابهجا کردن را بزنید.",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "عنوان موضوعتان را اینجا بنویسید...",
"composer.handle_placeholder": "Enter your name/handle here",
diff --git a/public/language/fa-IR/user.json b/public/language/fa-IR/user.json
index c3735df2d2..54304ef99a 100644
--- a/public/language/fa-IR/user.json
+++ b/public/language/fa-IR/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "پیوندهای به بیرون را در برگ جدید باز کن",
"enable_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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "پس از ارسال پست، اولین پست جدید نشان بده",
"follow_topics_you_reply_to": "موضوعهای که جواب دادید را پیگیری نمائید",
"follow_topics_you_create": "موضوعهای که ایجاد کردید را پیگیری نمائید",
diff --git a/public/language/fa-IR/users.json b/public/language/fa-IR/users.json
index f433d739da..099afc2ebb 100644
--- a/public/language/fa-IR/users.json
+++ b/public/language/fa-IR/users.json
@@ -11,6 +11,7 @@
"online-only": "فقط آنلاین",
"invite": "دعوت",
"prompt-email": "ایمیلها:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "رایانامه دعوتنامه برای %1 ارسال شد",
"user_list": "فهرست کاربران",
"recent_topics": "موضوعهای اخیر",
diff --git a/public/language/fi/admin/manage/privileges.json b/public/language/fi/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/fi/admin/manage/privileges.json
+++ b/public/language/fi/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/fi/admin/menu.json b/public/language/fi/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/fi/admin/menu.json
+++ b/public/language/fi/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/fi/admin/settings/email.json b/public/language/fi/admin/settings/email.json
index 60b7b52e29..ac0b01163a 100644
--- a/public/language/fi/admin/settings/email.json
+++ b/public/language/fi/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Sähköposti koosteet",
"subscriptions.disable": "Poista sähköpostin koosteet käytöstä",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Merkin esikatselu",
"details.change_icon": "Vaihda kuvake",
"details.change_label_colour": "Vaihda merkin väriä",
diff --git a/public/language/fi/notifications.json b/public/language/fi/notifications.json
index be327e7527..733c1a70a2 100644
--- a/public/language/fi/notifications.json
+++ b/public/language/fi/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Kun joku alkaa seurata sinua",
"notificationType_new-chat": "Kun saat viestin keskusteluun",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Kun saat kutsun ryhmään",
"notificationType_group-request-membership": "Kun joku pyytää lupaa liittyä ryhmään, jonka omistaja olet",
"notificationType_new-register": "Kun joku lisätään rekisteröintijonoon",
diff --git a/public/language/fi/register.json b/public/language/fi/register.json
index 4b68b0ad6f..5df5aa7a5d 100644
--- a/public/language/fi/register.json
+++ b/public/language/fi/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Hyväksyn käyttöehdot",
"terms_of_use_error": "Sinun täytyy hyväksyä sopimusehdot",
"registration-added-to-queue": "Rekisteröintisi on lisätty listalle odottamaan hyväksyntää. Saat ilmoituksen sähköpostiisi, kun ylläpitäjä on hyväksynyt rekisteröitymisesin.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Sivusto vaatii lisätietoja ennenkuin voi luoda tunnuksen.",
"interstitial.errors-found": "Rekisteröitymisesi keskeytyi",
"gdpr_agree_data": "Annan hyväksyntäni henkilökohtaisten tietojen keräämiseen ja prosessointiin tälle verkkosivulle.",
diff --git a/public/language/fi/topic.json b/public/language/fi/topic.json
index 664632b470..e27966e041 100644
--- a/public/language/fi/topic.json
+++ b/public/language/fi/topic.json
@@ -30,6 +30,7 @@
"locked": "Lukittu",
"pinned": "Kiinnitetty",
"moved": "Siirretty",
+ "moved-from": "Moved from %1",
"copy-ip": "Kopioi IP",
"ban-ip": "Ban IP",
"view-history": "Muokkaa historiaa",
diff --git a/public/language/fi/user.json b/public/language/fi/user.json
index c1a43ab5ea..8904f76fde 100644
--- a/public/language/fi/user.json
+++ b/public/language/fi/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Avaa palvelunulkopuoliset linkit uuteen ikkunaan",
"enable_topic_searching": "Salli aiheen sisäiset haut",
"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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/fi/users.json b/public/language/fi/users.json
index 219e91403c..882c93c184 100644
--- a/public/language/fi/users.json
+++ b/public/language/fi/users.json
@@ -11,6 +11,7 @@
"online-only": "Vain verkossa olevat",
"invite": "Kutsu",
"prompt-email": "Sähköpostit:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Kutsusähköposti on lähetetty %1",
"user_list": "Käyttäjälista",
"recent_topics": "Viimeisimmät aiheet",
diff --git a/public/language/fr/admin/manage/privileges.json b/public/language/fr/admin/manage/privileges.json
index 296107bc39..b9f4fcb5ef 100644
--- a/public/language/fr/admin/manage/privileges.json
+++ b/public/language/fr/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Fichiers envoyés",
"signature": "Signature",
"ban": "Bannir",
+ "invite": "Inviter",
"search-content": "Rechercher un contenu",
"search-users": "Rechercher des utilisateurs",
"search-tags": "Rechercher les tags",
diff --git a/public/language/fr/admin/menu.json b/public/language/fr/admin/menu.json
index 731e459916..46b6823901 100644
--- a/public/language/fr/admin/menu.json
+++ b/public/language/fr/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Mots-clés",
"settings/notifications": "Notifications",
+ "settings/api": "Gestion API",
"settings/sounds": "Sons",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/fr/admin/settings/email.json b/public/language/fr/admin/settings/email.json
index 09de353ad2..c36b86ea7b 100644
--- a/public/language/fr/admin/settings/email.json
+++ b/public/language/fr/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "L'adresse e-mail suivante fait référence à l'adresse que le destinataire verra dans les champs \"De :\" et \"Répondre à :\". ",
"from": "Nom de l’expéditeur",
"from-help": "Le nom de l’expéditeur à afficher dans l'e-mail",
-
+
"smtp-transport": "Protocole SMTP",
"smtp-transport.enabled": "Utiliser un server extérieur pour envoyer les emails",
"smtp-transport-help": "Vous pouvez sélectionner depuis une liste de services ou entrer un service personnalisé.",
@@ -35,5 +35,7 @@
"subscriptions": "Actualités du forum ",
"subscriptions.disable": "Désactiver les actualités du forum ",
"subscriptions.hour": "Heure d'envoi",
- "subscriptions.hour-help": "Veuillez entrer un nombre représentant l'heure à laquelle envoyer les emails de résumé (c'est à dire 0 pour minuit, 17 pour 5:00 pm). Gardez à l'esprit qu'il s'agit de l'heure du serveur, et peut ne pas correspondre à votre heure locale.0 pour minuit, 17 pour 5:00 pm). Gardez à l'esprit qu'il s'agit de l'heure du serveur, et peut ne pas correspondre à votre heure locale.ctrl et shift pour sélectionner plusieurs options.",
"details.badge_preview": "Aperçu du badge",
"details.change_icon": "Modifier l'icône",
"details.change_label_colour": "Changer la couleur de l'étiquette",
diff --git a/public/language/fr/notifications.json b/public/language/fr/notifications.json
index 913efafb54..ef664344c6 100644
--- a/public/language/fr/notifications.json
+++ b/public/language/fr/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Lorsqu'un article est modifié dans un sujet que vous regardez",
"notificationType_follow": "Lorsque quelqu'un commence à vous suivre",
"notificationType_new-chat": "Lorsque vous recevez un message du chat ",
+ "notificationType_new-group-chat": "Lorsque vous recevez un message de discussion de groupe",
"notificationType_group-invite": "Lorsque vous recevez une invitation d'un groupe",
"notificationType_group-request-membership": "Quand quelqu'un demande à rejoindre un groupe que vous administrez",
"notificationType_new-register": "Lorsque quelqu'un est ajouté à la file d'attente d'inscription",
diff --git a/public/language/fr/register.json b/public/language/fr/register.json
index ed3b0a05e9..efd862dbd2 100644
--- a/public/language/fr/register.json
+++ b/public/language/fr/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "J'accepte les conditions générales d'utilisation",
"terms_of_use_error": "Vous devez accepter les conditions générales d'utilisation",
"registration-added-to-queue": "Votre inscription a été ajoutée à la liste d'approbation. Vous recevrez un email quand celle-ci sera acceptée par un administrateur.",
+ "registration-queue-average-time": "Temps moyen d'approbation des adhésions est de %1 heures %2 minutes.",
+ "registration-queue-auto-approve-time": "Votre adhésion à ce forum sera entièrement activée dans un maximum de %1 heures.",
"interstitial.intro": "Nous avons besoin de quelques informations supplémentaires avant de pouvoir créer votre compte.",
"interstitial.errors-found": "Nous n'avons pas pu compléter votre inscription :",
"gdpr_agree_data": "J'accepte la collecte et le traitement de mes données personnelles sur ce site.",
diff --git a/public/language/fr/topic.json b/public/language/fr/topic.json
index 92f0d48071..4366bc070d 100644
--- a/public/language/fr/topic.json
+++ b/public/language/fr/topic.json
@@ -30,6 +30,7 @@
"locked": "Verrouillé",
"pinned": "Épinglé",
"moved": "Déplacé",
+ "moved-from": "Déplacé de %1",
"copy-ip": "Copier l'IP",
"ban-ip": "Bannir l'IP",
"view-history": "Éditer l'historique",
diff --git a/public/language/fr/user.json b/public/language/fr/user.json
index 07e835cfec..593e9f001d 100644
--- a/public/language/fr/user.json
+++ b/public/language/fr/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Ouvrir les liens externes dans un nouvel onglet",
"enable_topic_searching": "Activer la recherche dans les sujets",
"topic_search_help": "Une fois activé, la recherche dans les sujets va remplacer la recherche de page du navigateur et vous permettra de rechercher dans l'intégralité d'un sujet au lieu des seuls posts affichés à l'écran.",
+ "update_url_with_post_index": "Mettre à jour l'URL avec l'index des articles",
"scroll_to_my_post": "Après avoir répondu, montrer le nouveau message",
"follow_topics_you_reply_to": "S'abonner aux sujets auxquels vous répondez",
"follow_topics_you_create": "S'abonner aux sujets que vous créez",
diff --git a/public/language/fr/users.json b/public/language/fr/users.json
index bc41a561fa..51413e9c93 100644
--- a/public/language/fr/users.json
+++ b/public/language/fr/users.json
@@ -11,6 +11,7 @@
"online-only": "En ligne uniquement",
"invite": "Invitation",
"prompt-email": "Emails:",
+ "groups-to-join": "Groupes à rejoindre lorsque l'invitation est acceptée:",
"invitation-email-sent": "Un email d'invitation a été envoyé à %1",
"user_list": "Liste d'Utilisateurs",
"recent_topics": "Sujets Récents",
diff --git a/public/language/gl/admin/manage/privileges.json b/public/language/gl/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/gl/admin/manage/privileges.json
+++ b/public/language/gl/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/gl/admin/menu.json b/public/language/gl/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/gl/admin/menu.json
+++ b/public/language/gl/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/gl/admin/settings/email.json b/public/language/gl/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/gl/admin/settings/email.json
+++ b/public/language/gl/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Vista Previa da Insignia",
"details.change_icon": "Cambiar Icona",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/gl/notifications.json b/public/language/gl/notifications.json
index 6470a1fd96..059c57d3fb 100644
--- a/public/language/gl/notifications.json
+++ b/public/language/gl/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/gl/register.json b/public/language/gl/register.json
index 058dceced1..427c2f1e16 100644
--- a/public/language/gl/register.json
+++ b/public/language/gl/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Acepto os Termos e Condicións de Uso",
"terms_of_use_error": "Debes acepta-los termos de uso",
"registration-added-to-queue": "O teu rexistro foi engadido á cola de aprobación. Recibirás un correo electrónico cando sexa aceptado por un administrador.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Requírese información adicional antes de crea-la túa conta",
"interstitial.errors-found": "Non puidemos completa-lo teu rexistro:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/gl/topic.json b/public/language/gl/topic.json
index e7637f3561..ef9e356214 100644
--- a/public/language/gl/topic.json
+++ b/public/language/gl/topic.json
@@ -30,6 +30,7 @@
"locked": "Pechado",
"pinned": "Fixo",
"moved": "Movido",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/gl/user.json b/public/language/gl/user.json
index a41e000d89..b3265cee18 100644
--- a/public/language/gl/user.json
+++ b/public/language/gl/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Abrir ligazóns externos nunca nova pestaña",
"enable_topic_searching": "Permitir buscar dentro dun tema",
"topic_search_help": "Se se activa, o buscador do NodeBB superporase ao propio do navegador dentro de cada tema, permitindo buscar en todo o tema e non só naquilo que se presenta na pantalla.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Logo de enviar unha resposta, mostrar a nova mensaxe",
"follow_topics_you_reply_to": "Segui-los temas aos que respondes",
"follow_topics_you_create": "Segui-los temas que creaches ti",
diff --git a/public/language/gl/users.json b/public/language/gl/users.json
index a9f985c23b..5e22c3aa36 100644
--- a/public/language/gl/users.json
+++ b/public/language/gl/users.json
@@ -11,6 +11,7 @@
"online-only": "Só conectados",
"invite": "Convidar",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "A invitación foi enviada a %1",
"user_list": "Lista de Usuarios",
"recent_topics": "Temas recentes",
diff --git a/public/language/he/admin/advanced/database.json b/public/language/he/admin/advanced/database.json
index 50389867f6..356a4cd919 100644
--- a/public/language/he/admin/advanced/database.json
+++ b/public/language/he/admin/advanced/database.json
@@ -22,7 +22,7 @@
"mongo.bytes-out": "ביטים יוצאים",
"mongo.num-requests": "מספר בקשות",
"mongo.raw-info": "מידע לא מעובד מMongoDB",
- "mongo.unauthorized": "NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the "clusterMonitor" role for the "admin" database.",
+ "mongo.unauthorized": "NodeBB לא הצליחה לקבל את המידע הדרוש מMongoDB. אנא בדוק שלמשתמש יש הרשאת clusterMonitor לadmin database.",
"redis": "Redis",
"redis.version": "גרסת Redis",
diff --git a/public/language/he/admin/manage/digest.json b/public/language/he/admin/manage/digest.json
index 8f3661698a..b31b01077a 100644
--- a/public/language/he/admin/manage/digest.json
+++ b/public/language/he/admin/manage/digest.json
@@ -3,7 +3,7 @@
"disclaimer": "Please be advised that email delivery is not guaranteed, due to the nature of email technology. Many variables factor into whether an email sent to the recipient server is ultimately delivered into the user's inbox, including server reputation, blacklisted IP addresses, and whether DKIM/SPF/DMARC is configured.",
"disclaimer-continued": "A successful delivery means the message was sent successfully by NodeBB and acknowledged by the recipient server. It does not mean the email landed in the inbox. For best results, we recommend using a third-party email delivery service such as SendGrid.",
- "user": "User",
+ "user": "משתמש",
"subscription": "Subscription Type",
"last-delivery": "Last successful delivery",
"default": "System default",
diff --git a/public/language/he/admin/manage/privileges.json b/public/language/he/admin/manage/privileges.json
index 789f166d3d..7f32cfafb7 100644
--- a/public/language/he/admin/manage/privileges.json
+++ b/public/language/he/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "העלאת קבצים",
"signature": "חתימה",
"ban": "הרחקה",
+ "invite": "Invite",
"search-content": "חיפוש תוכן",
"search-users": "חיפוש משתמשים",
"search-tags": "חיפוש תגיות",
diff --git a/public/language/he/admin/menu.json b/public/language/he/admin/menu.json
index e4dc2a4bee..cb952484e6 100644
--- a/public/language/he/admin/menu.json
+++ b/public/language/he/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "תגיות",
"settings/notifications": "התראות",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "עוגיות",
@@ -42,7 +43,7 @@
"section-appearance": "Appearance",
"appearance/themes": "Themes",
- "appearance/skins": "Skins",
+ "appearance/skins": "עיצובים",
"appearance/customise": "Custom Content (HTML/JS/CSS)",
"section-extend": "Extend",
diff --git a/public/language/he/admin/settings/email.json b/public/language/he/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/he/admin/settings/email.json
+++ b/public/language/he/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl ו-shift כדי לבחור אפשרויות מרובות.",
"details.badge_preview": "תצוגה מקדימה של הסמל",
"details.change_icon": "שנה אייקון",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/he/ip-blacklist.json b/public/language/he/ip-blacklist.json
index 588fbd62b6..5f1b6a2ffe 100644
--- a/public/language/he/ip-blacklist.json
+++ b/public/language/he/ip-blacklist.json
@@ -1,19 +1,19 @@
{
- "lead": "Configure your IP blacklist here.",
+ "lead": "רשימת IP שחורה",
"description": "Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and they will be prevented from logging in to or registering a new account.",
- "active-rules": "Active Rules",
- "validate": "Validate Blacklist",
- "apply": "Apply Blacklist",
- "hints": "Syntax Hints",
- "hint-1": "Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g. 192.168.100.0/22).",
- "hint-2": "You can add in comments by starting lines with the # symbol.",
+ "active-rules": "כללים פעילים",
+ "validate": "בדיקת רשימה",
+ "apply": "החל רשימה",
+ "hints": "עזרה בתחביר",
+ "hint-1": "כתוב כתובת IP אחת בשורה. ניתן להוסיף טווחי IP בפורמט CIDR (לדוגמא 192.168.100.0/22).",
+ "hint-2": "ניתן להוסיף הערות באמצעות התחלת השורה ב#.",
- "validate.x-valid": "%1 out of %2 rule(s) valid.",
- "validate.x-invalid": "The following %1 rules are invalid:",
+ "validate.x-valid": "%1 מתוך %2 כלל(ים) תקינים.",
+ "validate.x-invalid": "%1 הכללים הבאים לא תקינים: ",
- "alerts.applied-success": "Blacklist Applied",
+ "alerts.applied-success": "הרשימה השחורה נשמרה",
- "analytics.blacklist-hourly": "Figure 1 – Blacklist hits per hour",
+ "analytics.blacklist-hourly": "Figure 1 – כתובות נחסמו ביחס לשעה.",
"analytics.blacklist-daily": "Figure 2 – Blacklist hits per day",
- "ip-banned": "IP banned"
+ "ip-banned": "כתובת הIP הורחקה."
}
\ No newline at end of file
diff --git a/public/language/he/modules.json b/public/language/he/modules.json
index fe73d18039..8b6b19cb55 100644
--- a/public/language/he/modules.json
+++ b/public/language/he/modules.json
@@ -1,7 +1,7 @@
{
"chat.chatting_with": "לשוחח עם",
"chat.placeholder": "הקלד את הודעת הצ'אט כאן, לחץ אנטר לשליחה",
- "chat.scroll-up-alert": "You are looking at older messages, click here to go to most recent message.",
+ "chat.scroll-up-alert": "אתה מסתכל על הודעות ישנות. לחץ כאן למעבר להודעה האחרונה.",
"chat.send": "שלח",
"chat.no_active": "אין לך צ'אטים פעילים",
"chat.user_typing": "%1 מקליד ...",
@@ -13,7 +13,7 @@
"chat.recent-chats": "צ'אטים אחרונים",
"chat.contacts": "אנשי קשר",
"chat.message-history": "היסטוריית הודעות",
- "chat.message-deleted": "Message Deleted",
+ "chat.message-deleted": "ההודעה נמחקה",
"chat.options": "אפשרויות לשיחה",
"chat.pop-out": "הוצא את חלון הצ'אט",
"chat.minimize": "צמצם",
@@ -24,21 +24,21 @@
"chat.delete_message_confirm": "האם אתה בטוח שברצונך למחוק הודעה זו?",
"chat.retrieving-users": "שולף משתמשים",
"chat.manage-room": "נהל חדר צ'אט",
- "chat.add-user-help": "Search for users here. When selected, the user will be added to the chat. The new user will not be able to see chat messages written before they were added to the conversation. Only room owners () may remove users from chat rooms.",
+ "chat.add-user-help": "חפש משתמשים כאן. כאשר משתמש נבחר, הוא יצורף לצ'אט. המשתמש החדש לא יוכל לראות הודעות שנכתבו לפני הצטרפותו. רק מנהלי החדר () יכולים להסיר משתמשים מהצ'אט.",
"chat.confirm-chat-with-dnd-user": "משתמש זה שינה את הסטטוס שלו ל 'לא להפריע'. אתה עדיין מעוניין לשוחח איתו?",
- "chat.rename-room": "Rename Room",
+ "chat.rename-room": "שנה שם של חדר",
"chat.rename-placeholder": "הזן את שם החדר שלך כאן",
"chat.rename-help": "שם החדר המוגדר כאן יהיה זמין לכל המשתתפים בחדר.",
"chat.leave": "עזוב שיחה",
"chat.leave-prompt": "האם אתה בטוח שאתה רוצה לעזוב את השיחה הזו?",
"chat.leave-help": "עזיבת צ'אט זה תסיר אותך מהתכתבות עתידית בצ'אט זה. אם תתווסף מחדש בעתיד, לא תראה כל היסטוריית צ'אט שלפני הצטרפותך מחדש.",
"chat.in-room": "בתוך החדר הזה",
- "chat.kick": "Kick",
- "chat.show-ip": "Show IP",
- "chat.owner": "Room Owner",
- "chat.system.user-join": "%1 has joined the room",
- "chat.system.user-leave": "%1 has left the room",
- "chat.system.room-rename": "%2 has renamed this room: %1",
+ "chat.kick": "גרש",
+ "chat.show-ip": "הצג IP",
+ "chat.owner": "מנהל החדר",
+ "chat.system.user-join": "%1 נרשם לחדר",
+ "chat.system.user-leave": "%1 יצא מהחדר",
+ "chat.system.room-rename": "%2 שינה את שם החדר: %1",
"composer.compose": "צור",
"composer.show_preview": "הצג תצוגה מקדימה",
"composer.hide_preview": "הסתר תצוגה מקדימה",
@@ -52,14 +52,14 @@
"composer.formatting.italic": "נטוי",
"composer.formatting.list": "רשימה",
"composer.formatting.strikethrough": "קו פוסל",
- "composer.formatting.code": "Code",
+ "composer.formatting.code": "קוד",
"composer.formatting.link": "לינק",
"composer.formatting.picture": "תמונה",
"composer.upload-picture": "העלה תמונה",
"composer.upload-file": "העלה קובץ",
"composer.zen_mode": "מצב זן",
"composer.select_category": "בחר קטגוריה",
- "composer.textarea.placeholder": "Enter your post content here, drag and drop images",
+ "composer.textarea.placeholder": "כתוב את תוכן הפוסט כאן. ניתן לגרור לכאן תמונות.",
"bootbox.ok": "אוקיי",
"bootbox.cancel": "בטל",
"bootbox.confirm": "אשר",
diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json
index 58596f5a8a..8d02ec113b 100644
--- a/public/language/he/notifications.json
+++ b/public/language/he/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "כשמישהו מתחיל לעקוב אחריך",
"notificationType_new-chat": "כשאתה מקבל הודעת צאט",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "כשאתה מקבל הזמנה מקבוצה",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "כאשר מישהו מתווסף לתור הרישום",
diff --git a/public/language/he/pages.json b/public/language/he/pages.json
index c4692d99fd..3bd6a50b59 100644
--- a/public/language/he/pages.json
+++ b/public/language/he/pages.json
@@ -6,10 +6,10 @@
"popular-month": "נושאים חמים החודש",
"popular-alltime": "הנושאים החמים בכל הזמנים",
"recent": "נושאים אחרונים",
- "top-day": "Top voted topics today",
- "top-week": "Top voted topics this week",
- "top-month": "Top voted topics this month",
- "top-alltime": "Top Voted Topics",
+ "top-day": "הנושאים הנבחרים ביותר היום",
+ "top-week": "הנושאים הנבחרים ביותר השבוע",
+ "top-month": "הנושאים הנבחרים ביותר החודש",
+ "top-alltime": "הנושאים הנבחרים ביותר",
"moderator-tools": "כלי מודרטור",
"flagged-content": "תוכן מדווח",
"ip-blacklist": "רשימת IP שחורה",
@@ -43,10 +43,10 @@
"account/following": "אנשים ש%1 עוקב אחריהם",
"account/followers": "אנשים שעוקבים אחרי %1",
"account/posts": "הודעות שפורסמו על ידי %1",
- "account/latest-posts": "Latest posts made by %1",
+ "account/latest-posts": "פוסטים אחרונים שנוצרו על ידי %1",
"account/topics": "נושאים שנוצרו על ידי %1",
"account/groups": "הקבוצות של %1",
- "account/watched_categories": "%1's Watched Categories",
+ "account/watched_categories": "הקטגוריות ש-%1 עוקב אחריהם",
"account/bookmarks": "הפוסטים השמורים של %1",
"account/settings": "הגדרות משתמש",
"account/watched": "נושאים שנצפו על ידי %1",
@@ -54,9 +54,9 @@
"account/upvoted": "פוסטים שהוצבעו לטובה על ידי %1",
"account/downvoted": "פוסטים שהוצבעו לרעה על ידי %1",
"account/best": "הפוסטים הטובים ביותר שנוצרו על ידי %1",
- "account/blocks": "Blocked users for %1",
- "account/uploads": "Uploads by %1",
- "account/sessions": "Login Sessions",
+ "account/blocks": "המשתמשים ש-%1 חסם",
+ "account/uploads": "העלאות של %1",
+ "account/sessions": "סשני התחברות",
"confirm": "כתובת המייל אושרה",
"maintenance.text": "%1 כרגע תחת עבודות תחזוקה. אנא חזור בזמן מאוחר יותר.",
"maintenance.messageIntro": "בנוסף, המנהל השאיר את ההודעה הזו:",
diff --git a/public/language/he/post-queue.json b/public/language/he/post-queue.json
index 2742e3a7af..1aef0f967d 100644
--- a/public/language/he/post-queue.json
+++ b/public/language/he/post-queue.json
@@ -1,11 +1,11 @@
{
- "post-queue": "Post Queue",
- "description": "There are no posts in the post queue. 0 za ponoć, 17za 5 popodne).Imajte na umu da to vrijeme predstavlja vrijeme servera te ne mora predstavljati vrijeme na Vašem sistemu. Vrijeme servera je: 0 za ponoć, 17za 5 popodne).Imajte na umu da to vrijeme predstavlja vrijeme servera te ne mora predstavljati vrijeme na Vašem sistemu. Vrijeme servera je: ctrl and shift to select multiple options.",
"details.badge_preview": "Prikaz značke",
"details.change_icon": "Promjeni ikonu",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/hr/notifications.json b/public/language/hr/notifications.json
index 85f031bab3..4e43f28e4d 100644
--- a/public/language/hr/notifications.json
+++ b/public/language/hr/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/hr/register.json b/public/language/hr/register.json
index f9cb4d9790..95119842f8 100644
--- a/public/language/hr/register.json
+++ b/public/language/hr/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Prihvaćam uvjete korištenja",
"terms_of_use_error": "Morate prihvatiti uvjete korištenja",
"registration-added-to-queue": "Vaša registracija je dodana u listu zahtjeva za registraciju. Biti ćete obaviješteni kad Vas administrator prihvati.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Treba nam još par dodatnih informacija prije nego kreirate novi račun.",
"interstitial.errors-found": "Nismo uspijeli dovršiti registraciju:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/hr/topic.json b/public/language/hr/topic.json
index 5a18c836fc..ba109d49a7 100644
--- a/public/language/hr/topic.json
+++ b/public/language/hr/topic.json
@@ -30,6 +30,7 @@
"locked": "Zaključano",
"pinned": "Zakačeno",
"moved": "Premješteno",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/hr/user.json b/public/language/hr/user.json
index faa39b6f92..3d02d57c99 100644
--- a/public/language/hr/user.json
+++ b/public/language/hr/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Otvori odlazne poveznice u novom tabu",
"enable_topic_searching": "Omogući pretragu unutar tema",
"topic_search_help": "Ako uključeno,pretraga unutar tema će zamijeniti pretragu ključnih riječi vašeg pretraživača kojemu je omogućeno pretraživanje samo onoga što je na ekranu,za razliku od ove opcije koja omogućava pretragu na cijeloj temi",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Nakon objavljivanja,prikaži objavu",
"follow_topics_you_reply_to": "Prati teme na koje objavljuješ",
"follow_topics_you_create": "Prati teme koje si napravio",
diff --git a/public/language/hr/users.json b/public/language/hr/users.json
index 00c45c12ac..a6e4dba223 100644
--- a/public/language/hr/users.json
+++ b/public/language/hr/users.json
@@ -11,6 +11,7 @@
"online-only": "Samo na mreži",
"invite": "Pozovi",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Pozivnica poslana %1",
"user_list": "Popis korisnika",
"recent_topics": "Zadnje teme",
diff --git a/public/language/hu/admin/manage/privileges.json b/public/language/hu/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/hu/admin/manage/privileges.json
+++ b/public/language/hu/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/hu/admin/menu.json b/public/language/hu/admin/menu.json
index c09e3f0834..6f72e3c0f5 100644
--- a/public/language/hu/admin/menu.json
+++ b/public/language/hu/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Lapszámozás",
"settings/tags": "Címkék",
"settings/notifications": "Értesítések",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Süti",
diff --git a/public/language/hu/admin/settings/email.json b/public/language/hu/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/hu/admin/settings/email.json
+++ b/public/language/hu/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Jelvény előnézet",
"details.change_icon": "Ikon módosítása",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/hu/notifications.json b/public/language/hu/notifications.json
index 71e4edd6a2..46b386ca38 100644
--- a/public/language/hu/notifications.json
+++ b/public/language/hu/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Mikor valaki elkezd követni téged",
"notificationType_new-chat": "Mikor chat üzenetet kapsz",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Mikor csoportmeghívást kapsz",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "Mikor valaki a regisztrációs várólistára kerül",
diff --git a/public/language/hu/register.json b/public/language/hu/register.json
index 6e7e8d782f..f71cff91ff 100644
--- a/public/language/hu/register.json
+++ b/public/language/hu/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Elfogadom a Használati feltételeket",
"terms_of_use_error": "El kell fogadnod a Használati feltételeket",
"registration-added-to-queue": "A regisztráció jóváhagyásra vár. Kapni fogsz egy e-mailt, amint az adminisztrátor elfogadja.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Szükségünk van még további információkra a profilod létrehozásához.",
"interstitial.errors-found": "Nem tudtuk teljesíteni a regisztrációd:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json
index 4ee0d90804..3825796197 100644
--- a/public/language/hu/topic.json
+++ b/public/language/hu/topic.json
@@ -30,6 +30,7 @@
"locked": "Zárolva",
"pinned": "Rögzített",
"moved": "Áthelyezett",
+ "moved-from": "Moved from %1",
"copy-ip": "IP-cím másolása",
"ban-ip": "IP-cím kitiltása",
"view-history": "Edit History",
diff --git a/public/language/hu/user.json b/public/language/hu/user.json
index 54280225e9..da9b978538 100644
--- a/public/language/hu/user.json
+++ b/public/language/hu/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Kimenő hivatkozások megnyitása új lapon",
"enable_topic_searching": "Témakörön belüli keresés engedélyezése",
"topic_search_help": "Ha engedélyezett, a témakörön belüli keresés felülírja az alapértelmezett keresési viselkedést, és ezáltal az egész témakörben keresel, nem csak a képernyőn megjelenőkben",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Válaszolást követően az új hozzászólás megjelenítése",
"follow_topics_you_reply_to": "Témakör figyelése, melyre válaszolsz",
"follow_topics_you_create": "Témakör figyelése, amit létrehozol",
diff --git a/public/language/hu/users.json b/public/language/hu/users.json
index dd3ba3419c..54f9042055 100644
--- a/public/language/hu/users.json
+++ b/public/language/hu/users.json
@@ -11,6 +11,7 @@
"online-only": "Csak elérhető",
"invite": "Meghívás",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Egy meghívó e-mail el lett küldve %1 részére",
"user_list": "Felhasználói lista",
"recent_topics": "Legutóbbi témakörök",
diff --git a/public/language/id/admin/manage/privileges.json b/public/language/id/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/id/admin/manage/privileges.json
+++ b/public/language/id/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/id/admin/menu.json b/public/language/id/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/id/admin/menu.json
+++ b/public/language/id/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/id/admin/settings/email.json b/public/language/id/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/id/admin/settings/email.json
+++ b/public/language/id/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/id/notifications.json b/public/language/id/notifications.json
index 2192cce6cc..57f60009db 100644
--- a/public/language/id/notifications.json
+++ b/public/language/id/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/id/register.json b/public/language/id/register.json
index 6ba5f4ee42..dd764a505e 100644
--- a/public/language/id/register.json
+++ b/public/language/id/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Saya menyetujui Aturan Penggunaan",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Pendaftaranmu telah ditambahkan dalam daftar persetujuan. Kamu akan menerima email ketika pendaftaranmu disetujui oleh administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/id/topic.json b/public/language/id/topic.json
index 764c8b6639..97fa869ae0 100644
--- a/public/language/id/topic.json
+++ b/public/language/id/topic.json
@@ -30,6 +30,7 @@
"locked": "Terkunci",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/id/user.json b/public/language/id/user.json
index 193f14b54c..33f49fc395 100644
--- a/public/language/id/user.json
+++ b/public/language/id/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "Gunakan Pencarian Di dalam Topik",
"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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/id/users.json b/public/language/id/users.json
index c65fa9c65e..d2965239ab 100644
--- a/public/language/id/users.json
+++ b/public/language/id/users.json
@@ -11,6 +11,7 @@
"online-only": "Online only",
"invite": "Invite",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
diff --git a/public/language/it/admin/manage/privileges.json b/public/language/it/admin/manage/privileges.json
index 6a30efe51c..a9d631e1d8 100644
--- a/public/language/it/admin/manage/privileges.json
+++ b/public/language/it/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Carica file",
"signature": "Firma",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Cerca contenuto",
"search-users": "Cerca utenti",
"search-tags": "Cerca tag",
diff --git a/public/language/it/admin/menu.json b/public/language/it/admin/menu.json
index 82d9e8cc10..0a87a19465 100644
--- a/public/language/it/admin/menu.json
+++ b/public/language/it/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Paginazione",
"settings/tags": "Tabs",
"settings/notifications": "Notifiche",
+ "settings/api": "Accesso API",
"settings/sounds": "Suoni",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/it/admin/settings/email.json b/public/language/it/admin/settings/email.json
index d67e27fcfa..5c7d376804 100644
--- a/public/language/it/admin/settings/email.json
+++ b/public/language/it/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Il seguente indirizzo email si riferisce all'email che il destinatario vedrà nei campi \"Da\" e \"Rispondi a\".",
"from": "Da Nome",
"from-help": "Il nome da visualizzare nell'email.",
-
+
"smtp-transport": "Trasporto SMTP",
"smtp-transport.enabled": "Utilizza un server di posta elettronica esterno per inviare le email",
"smtp-transport-help": "Puoi selezionare da un elenco di servizi noti o inserirne uno personalizzato.",
@@ -35,5 +35,7 @@
"subscriptions": "Email riepilogo",
"subscriptions.disable": "Disabilita email riepilogo",
"subscriptions.hour": "Orario riepilogo",
- "subscriptions.hour-help": "Si prega di inserire un numero che rappresenta l'ora per l'invio dell'email programmate (es. 0per mezzanotte, 17per le 17: 00). Tieni presente che questa è l'ora secondo il server stesso, e potrebbe non combaciare esattamente al tuo orologio di sistema.0per mezzanotte, 17per le 17: 00). Tieni presente che questa è l'ora secondo il server stesso, e potrebbe non combaciare esattamente al tuo orologio di sistema.ctrl e shift per selezionare più opzioni.",
"details.badge_preview": "Anteprima Badge",
"details.change_icon": "Cambia Icona",
"details.change_label_colour": "Cambia colore etichetta",
diff --git a/public/language/it/notifications.json b/public/language/it/notifications.json
index 45bd4df2ec..812cae26d4 100644
--- a/public/language/it/notifications.json
+++ b/public/language/it/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Quando un post viene modificato in un topic che stai guardando",
"notificationType_follow": "Quando qualcuno inizia a seguirti",
"notificationType_new-chat": "Quando ricevi un messaggio in chat",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Quando ricevi un invito ad un gruppo",
"notificationType_group-request-membership": "Quando qualcuno richiede di iscriversi a un gruppo di tua proprietà",
"notificationType_new-register": "Quando qualcuno è in attesa della registrazione",
diff --git a/public/language/it/register.json b/public/language/it/register.json
index b16b6a2758..99dbb37a46 100644
--- a/public/language/it/register.json
+++ b/public/language/it/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Accetto i Termini di Utilizzo",
"terms_of_use_error": "Devi accettare i Termini d'Utilizzo",
"registration-added-to-queue": "La tua registrazione è stata aggiunta alla coda di approvazione. Riceverai un'email quando sarà accettata da un amministratore.",
+ "registration-queue-average-time": "Il nostro tempo medio per l'approvazione delle iscrizioni è di %1 ore %2 minuti.",
+ "registration-queue-auto-approve-time": "La tua iscrizione a questo forum sarà completamente attivata entro un massimo di %1 ore.",
"interstitial.intro": "Abbiamo bisogno di alcune informazioni aggiuntive prima di poter creare il tuo account.",
"interstitial.errors-found": "Non abbiamo potuto completare la tua registrazione:",
"gdpr_agree_data": "Acconsento alla raccolta e al trattamento dei miei dati personali su questo sito web.",
diff --git a/public/language/it/topic.json b/public/language/it/topic.json
index b257dcf8e5..252ac98c60 100644
--- a/public/language/it/topic.json
+++ b/public/language/it/topic.json
@@ -30,6 +30,7 @@
"locked": "Bloccato",
"pinned": "Appeso",
"moved": "Spostato",
+ "moved-from": "Moved from %1",
"copy-ip": "Copia indirizzo IP",
"ban-ip": "Banna indirizzo IP",
"view-history": "Modifica storico",
diff --git a/public/language/it/user.json b/public/language/it/user.json
index 13d9684539..c9335882d2 100644
--- a/public/language/it/user.json
+++ b/public/language/it/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Apri i link web in una nuova pagina",
"enable_topic_searching": "Abilita la ricerca negli argomenti",
"topic_search_help": "Se abilitata, la ricerca negli argomenti ignorerà il comportamento predefinito del browser per consentirti di cercare all'interno delle discussioni, anziché soltanto nel contenuto visibile a schermo",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Dopo aver postato una risposta, mostra il nuovo post",
"follow_topics_you_reply_to": "Segui le discussioni a cui rispondi",
"follow_topics_you_create": "Segui le discussioni che crei",
diff --git a/public/language/it/users.json b/public/language/it/users.json
index b8f5c97130..88220eca07 100644
--- a/public/language/it/users.json
+++ b/public/language/it/users.json
@@ -11,6 +11,7 @@
"online-only": "Solo online",
"invite": "Invita",
"prompt-email": "Email:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Una mail di invito è stata inviata a %1",
"user_list": "Lista Utenti",
"recent_topics": "Discussioni Recenti",
diff --git a/public/language/ja/admin/manage/privileges.json b/public/language/ja/admin/manage/privileges.json
index a044c93450..c747ae74fd 100644
--- a/public/language/ja/admin/manage/privileges.json
+++ b/public/language/ja/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "ファイルをアップロード",
"signature": "署名",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "コンテンツを検索",
"search-users": "ユーザー検索",
"search-tags": "タグ検索",
diff --git a/public/language/ja/admin/menu.json b/public/language/ja/admin/menu.json
index 4c214039b1..9e9be04577 100644
--- a/public/language/ja/admin/menu.json
+++ b/public/language/ja/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "ページ",
"settings/tags": "タグ",
"settings/notifications": "通知",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "クッキー",
diff --git a/public/language/ja/admin/settings/email.json b/public/language/ja/admin/settings/email.json
index 5d638c3af5..c1dd208061 100644
--- a/public/language/ja/admin/settings/email.json
+++ b/public/language/ja/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "次の電子メールアドレスは「送信者」と「返信先」の欄に受信者が表示する電子メールを指します。",
"from": "名前から",
"from-help": "メールからの名前が表示されます。",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "ダイジェストアワー",
- "subscriptions.hour-help": "スケジュールされたメールのダイジェストを送信する時間を表す数字を入力してください(深夜は0 code>、午後5:00は17)これはサーバー自体に基づく時間であり、システムの時計と正確に一致しない場合があります。 span>
次の日のダイジェストは"
+ "subscriptions.hour-help": "スケジュールされたメールのダイジェストを送信する時間を表す数字を入力してください(深夜は0 code>、午後5:00は17)これはサーバー自体に基づく時間であり、システムの時計と正確に一致しない場合があります。 span>
次の日のダイジェストは",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/ja/admin/settings/guest.json b/public/language/ja/admin/settings/guest.json
index 7d9d94db62..629e93d809 100644
--- a/public/language/ja/admin/settings/guest.json
+++ b/public/language/ja/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "ゲストハンドル",
+ "settings": "Settings",
"handles.enabled": "ゲストハンドルを有効にする",
"handles.enabled-help": "このオプションでは新しい投稿が表示される時に、ゲストは自分が投稿する各投稿に関連付ける名前を選択できます。無効にすると、単に「ゲスト」と呼ばれます。",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/ja/admin/settings/user.json b/public/language/ja/admin/settings/user.json
index 9bd19b6e31..0f07c6d471 100644
--- a/public/language/ja/admin/settings/user.json
+++ b/public/language/ja/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "登録なし",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "ユーザーごとの最大招待数",
"max-invites": "ユーザーごとの最大招待数",
"max-invites-help": "無制限の場合は0です。管理者は無限の招待を受ける
「招待のみ」にのみ適用されます",
@@ -62,6 +65,7 @@
"restrict-chat": "フォローしたユーザーからのチャットメッセージだけを許可する",
"outgoing-new-tab": "外部リンクを新しいタブで開く",
"topic-search": "スレッド内検索を有効にする",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "お知らせを購読する",
"digest-freq.off": "オフ",
"digest-freq.daily": "デイリー",
diff --git a/public/language/ja/flags.json b/public/language/ja/flags.json
index 75c66b6681..df5a7713d4 100644
--- a/public/language/ja/flags.json
+++ b/public/language/ja/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "不適切なコンテンツを報告する",
+ "modal-title": "Report Content",
"modal-body": "レビューのために%1 %2 にフラグを付ける理由を指定してください。または必要に応じてクイックレポートボタンの1つを使用します。",
"modal-reason-spam": "スパム",
"modal-reason-offensive": "攻撃",
diff --git a/public/language/ja/groups.json b/public/language/ja/groups.json
index 83821e8072..fea566ad1b 100644
--- a/public/language/ja/groups.json
+++ b/public/language/ja/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "メンバー数",
"details.creation_date": "作成日",
"details.description": "説明",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "バッジプレビュー",
"details.change_icon": "アイコンを変更",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/ja/notifications.json b/public/language/ja/notifications.json
index e3db188cd6..7686ab1f78 100644
--- a/public/language/ja/notifications.json
+++ b/public/language/ja/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "誰かがあなたをフォローしたとき",
"notificationType_new-chat": "チャットメッセージを受信したとき",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "グループ招待を受けたとき",
"notificationType_group-request-membership": "誰かがあなたのグループへの参加を要求したとき",
"notificationType_new-register": "誰かが登録キューに追加されたとき",
diff --git a/public/language/ja/register.json b/public/language/ja/register.json
index cf89f8d830..68cd186748 100644
--- a/public/language/ja/register.json
+++ b/public/language/ja/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "利用規約に同意する",
"terms_of_use_error": "あなたは利用規約に同意する必要があります",
"registration-added-to-queue": "あなたの登録申請は承認キューに追加されました。管理者によって受け入れられた時に、メールを受信します。",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "私たちは、あなたのアカウント作成においていくつかの情報をお訪ねします。",
"interstitial.errors-found": "私達はあなたの登録を完了できませんでした:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/ja/topic.json b/public/language/ja/topic.json
index 2913a57a96..7b37b0d752 100644
--- a/public/language/ja/topic.json
+++ b/public/language/ja/topic.json
@@ -30,6 +30,7 @@
"locked": "ロック",
"pinned": "ピンされた",
"moved": "移動しました",
+ "moved-from": "Moved from %1",
"copy-ip": "IPをコピー",
"ban-ip": "IPをBan",
"view-history": "履歴を編集",
diff --git a/public/language/ja/user.json b/public/language/ja/user.json
index 9de1543db1..52464560c5 100644
--- a/public/language/ja/user.json
+++ b/public/language/ja/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "外部リンクを新しいタブで開く",
"enable_topic_searching": "スレッド内検索を有効にする",
"topic_search_help": "有効にしたら、インースレッドの検索はブラウザの既定機能を無視して、スクリーンに示したよりスレッド内からの全部を検索します",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "返信を投稿した後、新しい投稿を表示する",
"follow_topics_you_reply_to": "あなたが返信したスレッドをウォッチする",
"follow_topics_you_create": "あなたが作成したスレッドをウォッチする",
diff --git a/public/language/ja/users.json b/public/language/ja/users.json
index 358260223c..b3fcb65cdb 100644
--- a/public/language/ja/users.json
+++ b/public/language/ja/users.json
@@ -11,6 +11,7 @@
"online-only": "オンラインのみ",
"invite": "招待",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "招待メールが%1に送られました。",
"user_list": "ユーザー一覧",
"recent_topics": "最新スレッド",
diff --git a/public/language/ko/admin/manage/privileges.json b/public/language/ko/admin/manage/privileges.json
index 85c118d97c..797e19bd85 100644
--- a/public/language/ko/admin/manage/privileges.json
+++ b/public/language/ko/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "파일 업로드",
"signature": "서명",
"ban": "차단",
+ "invite": "Invite",
"search-content": "콘텐츠 검색",
"search-users": "사용자 검색",
"search-tags": "태그 검색",
diff --git a/public/language/ko/admin/menu.json b/public/language/ko/admin/menu.json
index a1ed7c9a36..541713c905 100644
--- a/public/language/ko/admin/menu.json
+++ b/public/language/ko/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "페이지 매기기",
"settings/tags": "태그",
"settings/notifications": "알림",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "쿠키",
diff --git a/public/language/ko/admin/settings/email.json b/public/language/ko/admin/settings/email.json
index cf7255cb1b..dd9ed857a4 100644
--- a/public/language/ko/admin/settings/email.json
+++ b/public/language/ko/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "아래 이메일 주소는 수신인의 \"보낸 사람\"과 \"답장하기\" 항목에서 보이게 됩니다.",
"from": "보낸 사람 이름",
"from-help": "이메일에 표시할 보낸 사람 이름",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "발송 시간",
- "subscriptions.hour-help": "정기 이메일을 보낼 시간을 기입해 주세요(예: 0은 자정, 17은 오후 5시 입니다. 이 시간은 서버기준이며, 귀하의 시스템 시간과 일치하지 않을 수 있습니다.
서버 시간은 입니다.
다음 정기 이메일은 에 발송 예정입니다."
+ "subscriptions.hour-help": "정기 이메일을 보낼 시간을 기입해 주세요(예: 0은 자정, 17은 오후 5시 입니다. 이 시간은 서버기준이며, 귀하의 시스템 시간과 일치하지 않을 수 있습니다.
서버 시간은 입니다.
다음 정기 이메일은 에 발송 예정입니다.",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/ko/admin/settings/guest.json b/public/language/ko/admin/settings/guest.json
index 56603dedc7..935f6c2ad1 100644
--- a/public/language/ko/admin/settings/guest.json
+++ b/public/language/ko/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "게스트 처리",
+ "settings": "Settings",
"handles.enabled": "미가입 사용자 닉네임 설정 허가",
"handles.enabled-help": "이 옵션은 게스트들이 포스트를 작성할 때 이름을 적는 공간을 제공합니다. 이 옵션이 비활성화 돼있다면 \"Guest\" 라고 표시될 것입니다.",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/ko/admin/settings/user.json b/public/language/ko/admin/settings/user.json
index 0c5ea1b415..0c42c390b2 100644
--- a/public/language/ko/admin/settings/user.json
+++ b/public/language/ko/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "신규 가입 불가",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "최대 가능한 초대 수",
"max-invites": "최대 가능한 초대 수",
"max-invites-help": "아무런 제한을 두지 않으려면 0. 관리자는 초대 수 에 제한이 없습니다.
\"사용자 초대\" 설정에서만 반영됩니다.",
@@ -62,6 +65,7 @@
"restrict-chat": "내가 팔로우하는 이용자로부터만 대화를 허용",
"outgoing-new-tab": "외부 링크를 새로운 탭에서 열람",
"topic-search": "토픽 내 검색 허용",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "포럼 이메일 정기구독",
"digest-freq.off": "해제",
"digest-freq.daily": "매일",
diff --git a/public/language/ko/flags.json b/public/language/ko/flags.json
index c164aad462..4e0218d708 100644
--- a/public/language/ko/flags.json
+++ b/public/language/ko/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "부적절한 컨텐츠 신고",
+ "modal-title": "Report Content",
"modal-body": "%1 %2 에 대한 신고 사유를 적어주시거나, 빠른 신고 버튼 중 하나를 사용해 주세요.",
"modal-reason-spam": "스팸",
"modal-reason-offensive": "부적절한 글",
diff --git a/public/language/ko/groups.json b/public/language/ko/groups.json
index 654671f36b..21d56a4f98 100644
--- a/public/language/ko/groups.json
+++ b/public/language/ko/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "구성원 수",
"details.creation_date": "생성일",
"details.description": "설명",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "배지 미리보기",
"details.change_icon": "아이콘 변경",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/ko/notifications.json b/public/language/ko/notifications.json
index 640ce1374a..b0b29021d9 100644
--- a/public/language/ko/notifications.json
+++ b/public/language/ko/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "누군가 사용자님을 팔로우 하면",
"notificationType_new-chat": "채팅 메시지를 받으면",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "그룹 초대를 받으면",
"notificationType_group-request-membership": "누군가가 당신이 소유한 그룹에 참여를 요청했을 때",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/ko/register.json b/public/language/ko/register.json
index dd3f7534ad..a69924499f 100644
--- a/public/language/ko/register.json
+++ b/public/language/ko/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "이용약관에 동의합니다.",
"terms_of_use_error": "이용약관에 동의하셔야 합니다.",
"registration-added-to-queue": "회원가입이 요청되었습니다. 관리자의 승인 후 메일이 발송됩니다.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "계정을 생성하기 전 추가 정보가 더 필요합니다.",
"interstitial.errors-found": "회원가입을 완료하지 못했습니다.",
"gdpr_agree_data": "나는 이 웹 사이트에서 개인 정보를 수집하고 처리하는데 동의합니다.",
diff --git a/public/language/ko/topic.json b/public/language/ko/topic.json
index 437fd01ac1..81aafa2234 100644
--- a/public/language/ko/topic.json
+++ b/public/language/ko/topic.json
@@ -30,6 +30,7 @@
"locked": "잠긴 게시물",
"pinned": "고정된 게시물",
"moved": "이동된 게시물",
+ "moved-from": "Moved from %1",
"copy-ip": "IP 복사",
"ban-ip": "IP 차단",
"view-history": "편집 기록",
diff --git a/public/language/ko/user.json b/public/language/ko/user.json
index ab220377d6..620308b1bf 100644
--- a/public/language/ko/user.json
+++ b/public/language/ko/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "외부 링크를 새로운 탭에서 열람",
"enable_topic_searching": "게시물 내 검색 허용",
"topic_search_help": "만약 활성화된다면, 브라우저의 기본 검색 기능은 무효화되고 게시물 내 검색을 통해 화면에 보여지는 것 뿐만 아니라 게시물 전체의 내용을 검색할 수 있습니다.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "답글 게시 후 새 포스트 보여주기",
"follow_topics_you_reply_to": "내가 답글을 단 게시물을 관심 목록에 추가",
"follow_topics_you_create": "내가 작성한 게시물을 관심 목록에 추가",
diff --git a/public/language/ko/users.json b/public/language/ko/users.json
index 9895d4ee1a..e7e5655a6f 100644
--- a/public/language/ko/users.json
+++ b/public/language/ko/users.json
@@ -11,6 +11,7 @@
"online-only": "접속한 사용자",
"invite": "초대",
"prompt-email": "이메일:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "%1님에게 초대 메일을 보냈습니다.",
"user_list": "사용자 목록",
"recent_topics": "최근 게시물",
diff --git a/public/language/lt/admin/manage/privileges.json b/public/language/lt/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/lt/admin/manage/privileges.json
+++ b/public/language/lt/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/lt/admin/menu.json b/public/language/lt/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/lt/admin/menu.json
+++ b/public/language/lt/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/lt/admin/settings/email.json b/public/language/lt/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/lt/admin/settings/email.json
+++ b/public/language/lt/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/lt/admin/settings/guest.json b/public/language/lt/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/lt/admin/settings/guest.json
+++ b/public/language/lt/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/lt/admin/settings/user.json b/public/language/lt/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/lt/admin/settings/user.json
+++ b/public/language/lt/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/lt/flags.json b/public/language/lt/flags.json
index 556035ffbb..1977059a92 100644
--- a/public/language/lt/flags.json
+++ b/public/language/lt/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Šlamštas",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/lt/groups.json b/public/language/lt/groups.json
index e140b9b84b..b4d5092432 100644
--- a/public/language/lt/groups.json
+++ b/public/language/lt/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Narių skaičiuotuvas",
"details.creation_date": "Sukūrimo Data",
"details.description": "Aprašymas",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Ženklelio Peržiūra",
"details.change_icon": "Pakeisti paveikslėlį",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/lt/notifications.json b/public/language/lt/notifications.json
index 2b09fbc8ff..c7f4446e04 100644
--- a/public/language/lt/notifications.json
+++ b/public/language/lt/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/lt/register.json b/public/language/lt/register.json
index 161dc565ff..62fc8ce8ce 100644
--- a/public/language/lt/register.json
+++ b/public/language/lt/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Aš sutinku su vartojimo sąlygomis",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Jūsų registracijos prašymas buvo pridėtas į laukiančiųjų sąrašą. Jūs gausite el.paštu laišką kada administratorius patvirtins jus",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/lt/topic.json b/public/language/lt/topic.json
index 7f0f281058..7d0b47f37b 100644
--- a/public/language/lt/topic.json
+++ b/public/language/lt/topic.json
@@ -30,6 +30,7 @@
"locked": "Užrakinta",
"pinned": "Pinned",
"moved": "Perkelta",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Blokuoti IP",
"view-history": "Edit History",
diff --git a/public/language/lt/user.json b/public/language/lt/user.json
index f41317858e..3cc4b27ab1 100644
--- a/public/language/lt/user.json
+++ b/public/language/lt/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Atidaryti išeinančias nuorodas naujam skirtuke",
"enable_topic_searching": "Įjungti Temų Ieškojimą ",
"topic_search_help": "Jeigu įjungtas, temų ieškojimas, nepaisys naršyklės puslapio ieškojimo, ir pradės ieškoti tik toje temoje kuri bus rodoma ekrane",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Po parašyto atsakymo, rodyti naują pranešimą",
"follow_topics_you_reply_to": "Peržiūrėti temas, kuriose Jūs atsakėte",
"follow_topics_you_create": "Peržiūrėti temas, kurias Jūs sukūrėte",
diff --git a/public/language/lt/users.json b/public/language/lt/users.json
index 93ad845385..df061c067a 100644
--- a/public/language/lt/users.json
+++ b/public/language/lt/users.json
@@ -11,6 +11,7 @@
"online-only": "Tik prisijunge",
"invite": "Pakviesti",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Pakvietimas el.paštu buvo išsiųstas į %1!",
"user_list": "Vartotojų sąrašas",
"recent_topics": "Paskutinės temos",
diff --git a/public/language/lv/admin/manage/privileges.json b/public/language/lv/admin/manage/privileges.json
index c7e7c852a4..3a030df713 100644
--- a/public/language/lv/admin/manage/privileges.json
+++ b/public/language/lv/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Augšupielādēt failus",
"signature": "Parakstīties",
"ban": "Bloķēt",
+ "invite": "Invite",
"search-content": "Meklēt saturā",
"search-users": "Meklēt lietotājos",
"search-tags": "Meklēt birkās",
diff --git a/public/language/lv/admin/menu.json b/public/language/lv/admin/menu.json
index 74533a7428..9b210ee44e 100644
--- a/public/language/lv/admin/menu.json
+++ b/public/language/lv/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Dalīšana pa lapām",
"settings/tags": "Birkas",
"settings/notifications": "Paziņojumi",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Sīkfaili",
diff --git a/public/language/lv/admin/settings/email.json b/public/language/lv/admin/settings/email.json
index 0d878340e9..084dd5c055 100644
--- a/public/language/lv/admin/settings/email.json
+++ b/public/language/lv/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "E-pasta adrese, ko saņēmējs redzēs laukos \"No:\" un \"Atbildēt:\".",
"from": "Sūtītāja vārds vai nosaukums",
"from-help": "Vārds vai nosaukums, ko saņēmējs redzēs kā sūtītāju.",
-
+
"smtp-transport": "SMTP transports",
"smtp-transport.enabled": "Izmantot atsevišķu e-pasta serveri, lai nosūtītu e-pastus",
"smtp-transport-help": "Izvēlies no labi zināmu pakalpojumu saraksta vai ievadi pielāgotu pakalpojumu.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Kopsavilkumu nosūtīšanas stunda",
- "subscriptions.hour-help": "Ievadīt skaitli, kas norāda stundu, kurā nosūtītu e-pasta rakstu apkopojumu (piemēram, 0 nozīmē pusnakts, 17 nozīmē plkst.1700). Paturēt prātā, ka šī ir stunda servera laikā, un tā var neatbilst Tavam pulkstenim. Aptuvens servera laiks ir:
Nākamais ikdienas apkopojums tiks nosūtīts "
+ "subscriptions.hour-help": "Ievadīt skaitli, kas norāda stundu, kurā nosūtītu e-pasta rakstu apkopojumu (piemēram, 0 nozīmē pusnakts, 17 nozīmē plkst.1700). Paturēt prātā, ka šī ir stunda servera laikā, un tā var neatbilst Tavam pulkstenim. Aptuvens servera laiks ir:
Nākamais ikdienas apkopojums tiks nosūtīts ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/lv/admin/settings/guest.json b/public/language/lv/admin/settings/guest.json
index e355222d3d..394c6b8a25 100644
--- a/public/language/lv/admin/settings/guest.json
+++ b/public/language/lv/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Viesu iesaukas",
+ "settings": "Settings",
"handles.enabled": "Atļaut viesu iesaukas",
"handles.enabled-help": "Parādīt lauku, kas viesiem ļaus izvēlēties savu iesauku, kas saistīts ar katru viņu publicēto rakstu. Ja ir atspējots, viņus vienkārši sauks par \"Viesiem\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/lv/admin/settings/user.json b/public/language/lv/admin/settings/user.json
index 854269611a..748db1fcfd 100644
--- a/public/language/lv/admin/settings/user.json
+++ b/public/language/lv/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Nav",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maksimālais uzaicinājumu skaits katram lietotājam",
"max-invites": "Maksimālais uzaicinājumu skaits katram lietotājam",
"max-invites-help": "Ievadīt 0, lai nebūtu ierobežots. Administratori var vienmēr uzaicināt jaunus lietotājus.
Attiecas tikai uz \"Tikai ar ielūgumu\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Atļaut sarunas tikai no tiem lietotājiem, kurus es sekoju",
"outgoing-new-tab": "Atvērt izejošās saites jaunā cilnē",
"topic-search": "Iespējot meklēšanu tematu saturā",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Sakopojumu abonements",
"digest-freq.off": "Nav",
"digest-freq.daily": "Ik dienu",
diff --git a/public/language/lv/flags.json b/public/language/lv/flags.json
index ec9a8547e7..9132179172 100644
--- a/public/language/lv/flags.json
+++ b/public/language/lv/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Ziņot par nepiemērotu saturu",
+ "modal-title": "Report Content",
"modal-body": "Lūdzu, norādi iemeslu, kāpēc %1 %2 ir atzīmēts pārskatīšanai. Citādi, izmanto vienu no ātrā ziņojuma pogām.",
"modal-reason-spam": "Mēstule",
"modal-reason-offensive": "Aizskarošs",
diff --git a/public/language/lv/groups.json b/public/language/lv/groups.json
index ff1cdeea83..62d2cd8009 100644
--- a/public/language/lv/groups.json
+++ b/public/language/lv/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Pēc biedru skaita",
"details.creation_date": "Pēc datuma",
"details.description": "Apraksts",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Etiķetes priekšskats",
"details.change_icon": "Mainīt ikonu",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/lv/notifications.json b/public/language/lv/notifications.json
index afd3c42343..cced8052fe 100644
--- a/public/language/lv/notifications.json
+++ b/public/language/lv/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Kad kāds sāk Tev sekot",
"notificationType_new-chat": "Kad saņemi sarunu",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Kad saņemi ielūgumu pievienoties grupai",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "Kad kāds tiek ievietots reģistrācijas rindā",
diff --git a/public/language/lv/register.json b/public/language/lv/register.json
index 5981b05554..db70ac919a 100644
--- a/public/language/lv/register.json
+++ b/public/language/lv/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Es piekrītu lietošanas noteikumiem",
"terms_of_use_error": "Tev ir jāpiekrīt lietošanas noteikumiem",
"registration-added-to-queue": "Tavs reģistrācijas pieteikums ir ievietots reģistrācijas rindā. Tu saņemsi e-pastu, kad administrators to apstiprinās.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Pirms varam izveidot Tavu kontu, mums ir nepieciešama papildu informācija.",
"interstitial.errors-found": "Mēs nevarējām pabeigt Tavu reģistrāciju:",
"gdpr_agree_data": "Es piekrītu manas personas informācijas vākšanai un apstrādei šajā vietnē.",
diff --git a/public/language/lv/topic.json b/public/language/lv/topic.json
index 6827595739..dc6f01b54b 100644
--- a/public/language/lv/topic.json
+++ b/public/language/lv/topic.json
@@ -30,6 +30,7 @@
"locked": "Slēgtie",
"pinned": "Piespraustie",
"moved": "Pārvietots",
+ "moved-from": "Moved from %1",
"copy-ip": "Kopēt IP adresi",
"ban-ip": "Bloķēt IP adresi",
"view-history": "Rediģēšanas vēsture",
diff --git a/public/language/lv/user.json b/public/language/lv/user.json
index 56feabb55d..27b818a09e 100644
--- a/public/language/lv/user.json
+++ b/public/language/lv/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Atvērt izejošās saites jaunā cilnē",
"enable_topic_searching": "Iespējot meklēšanu tematu saturā",
"topic_search_help": "Ja ir iespējots, meklēšana tematos ignorē pārlūka noklusējuma lapu meklēšanas uzvedību un meklē visā tematā, ne tikai tā temata daļā, kas tiek rādīta ekrānā",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Rādīt jauno rakstu pēc publicēšanas",
"follow_topics_you_reply_to": "Novērot tematus, kuros esi rakstījis(-jusi)",
"follow_topics_you_create": "Novērot tematus, kurus esi izveidojis(-jusi)",
diff --git a/public/language/lv/users.json b/public/language/lv/users.json
index 1982f303f1..4cee320aba 100644
--- a/public/language/lv/users.json
+++ b/public/language/lv/users.json
@@ -11,6 +11,7 @@
"online-only": "Tikai tiešsaistē",
"invite": "Uzaicināt",
"prompt-email": "E-pasta adreses:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Ielūguma e-pasts ir nosūtīts %1",
"user_list": "Lietotāji",
"recent_topics": "Nesenie temati",
diff --git a/public/language/ms/admin/manage/privileges.json b/public/language/ms/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/ms/admin/manage/privileges.json
+++ b/public/language/ms/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/ms/admin/menu.json b/public/language/ms/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/ms/admin/menu.json
+++ b/public/language/ms/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/ms/admin/settings/email.json b/public/language/ms/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/ms/admin/settings/email.json
+++ b/public/language/ms/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/ms/admin/settings/guest.json b/public/language/ms/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/ms/admin/settings/guest.json
+++ b/public/language/ms/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/ms/admin/settings/user.json b/public/language/ms/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/ms/admin/settings/user.json
+++ b/public/language/ms/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/ms/flags.json b/public/language/ms/flags.json
index 10698842cc..13b3567bc9 100644
--- a/public/language/ms/flags.json
+++ b/public/language/ms/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/ms/groups.json b/public/language/ms/groups.json
index 19d3a57428..ebdc913c22 100644
--- a/public/language/ms/groups.json
+++ b/public/language/ms/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Kiraan Ahli",
"details.creation_date": "Tarikh Dicipta",
"details.description": "Penerangan",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Pra-lihat Lencana",
"details.change_icon": "Tukar Ikon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/ms/notifications.json b/public/language/ms/notifications.json
index 444e49c195..598476cc8b 100644
--- a/public/language/ms/notifications.json
+++ b/public/language/ms/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/ms/register.json b/public/language/ms/register.json
index cad27aa71a..f44395f0a3 100644
--- a/public/language/ms/register.json
+++ b/public/language/ms/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Saya bersetuju dengan Terma Penggunaan",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Pendaftaran anda sedang dimasukkan ke barisan pengesahan. Anda akan menerima emel setelah diterima oleh pentadbir.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/ms/topic.json b/public/language/ms/topic.json
index a53aca52fa..5f7f6257f1 100644
--- a/public/language/ms/topic.json
+++ b/public/language/ms/topic.json
@@ -30,6 +30,7 @@
"locked": "Kunci",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/ms/user.json b/public/language/ms/user.json
index 47e0f97bda..b48641c932 100644
--- a/public/language/ms/user.json
+++ b/public/language/ms/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Buka pautan luar di tab yang baru",
"enable_topic_searching": "Aktifkan Pencarian Dalam-Topik",
"topic_search_help": "Jika diaktifkan, pencarian dalam-topik akan membatalkan fungsi asal pencarian pelayan dan membenarkan anda untuk mencari seluruh topik, daripada menunjukkan apa yang terdapat pada skrin sahaja",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/ms/users.json b/public/language/ms/users.json
index c593f98398..8bf7b1aaaf 100644
--- a/public/language/ms/users.json
+++ b/public/language/ms/users.json
@@ -11,6 +11,7 @@
"online-only": "Atas talian sahaja",
"invite": "Jemput",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Emel jemputan telah dihantar ke %1",
"user_list": "Senarai Pengguna",
"recent_topics": "Topik Terkini",
diff --git a/public/language/nb/admin/manage/privileges.json b/public/language/nb/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/nb/admin/manage/privileges.json
+++ b/public/language/nb/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/nb/admin/menu.json b/public/language/nb/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/nb/admin/menu.json
+++ b/public/language/nb/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/nb/admin/settings/email.json b/public/language/nb/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/nb/admin/settings/email.json
+++ b/public/language/nb/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/nb/admin/settings/guest.json b/public/language/nb/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/nb/admin/settings/guest.json
+++ b/public/language/nb/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/nb/admin/settings/user.json b/public/language/nb/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/nb/admin/settings/user.json
+++ b/public/language/nb/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/nb/flags.json b/public/language/nb/flags.json
index 10698842cc..13b3567bc9 100644
--- a/public/language/nb/flags.json
+++ b/public/language/nb/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/nb/groups.json b/public/language/nb/groups.json
index 82a4af42bb..65fa516bc2 100644
--- a/public/language/nb/groups.json
+++ b/public/language/nb/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Antall medlemmer",
"details.creation_date": "Opprettelsesdato",
"details.description": "Beskrivelse",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Forhåndsvisning av skilt",
"details.change_icon": "Endre ikon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/nb/notifications.json b/public/language/nb/notifications.json
index 470d5d23bb..54f955a650 100644
--- a/public/language/nb/notifications.json
+++ b/public/language/nb/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/nb/register.json b/public/language/nb/register.json
index 668d051098..fc0e5518e3 100644
--- a/public/language/nb/register.json
+++ b/public/language/nb/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Jeg godtar vilkårene for bruk",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Din registrering har blitt lagt til i godkjenningskøen. Du vil motta en e-post når denne blir akseptert av en administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json
index e33bd18b72..c59a5424f4 100644
--- a/public/language/nb/topic.json
+++ b/public/language/nb/topic.json
@@ -30,6 +30,7 @@
"locked": "Låst",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/nb/user.json b/public/language/nb/user.json
index 0ef588add0..7d88d4a908 100644
--- a/public/language/nb/user.json
+++ b/public/language/nb/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Åpne utgående lenker i en ny fane",
"enable_topic_searching": "Aktiver søk-i-emne",
"topic_search_help": "Hvis søk-i-emne er aktivert, overstyres nettleserens standard sidesøk og gir mulighet til å søke gjennom hele emnet, ikke bare det som vises på skjermen",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/nb/users.json b/public/language/nb/users.json
index c49c9f17e9..92ede45840 100644
--- a/public/language/nb/users.json
+++ b/public/language/nb/users.json
@@ -11,6 +11,7 @@
"online-only": "Bare påloggede",
"invite": "Invitér",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "En invitasjons-epost ble sendt til %1",
"user_list": "Brukerliste",
"recent_topics": "Seneste emner",
diff --git a/public/language/nl/admin/manage/privileges.json b/public/language/nl/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/nl/admin/manage/privileges.json
+++ b/public/language/nl/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/nl/admin/menu.json b/public/language/nl/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/nl/admin/menu.json
+++ b/public/language/nl/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/nl/admin/settings/email.json b/public/language/nl/admin/settings/email.json
index 5fdd953ced..e1d062b536 100644
--- a/public/language/nl/admin/settings/email.json
+++ b/public/language/nl/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Het volgende e-mailadres refereert aan de e-mail die ontvanger ziet in de \"From\" en \"Reply To\" velden.",
"from": "From Naam",
"from-help": "De from naam om te tonen in de e-mail.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Gebruik een externe mail server om mails te verzenden",
"smtp-transport-help": "Je kunt een bekende dienst uit de lijst selecteren of vul een aangepaste dienst in.",
@@ -35,5 +35,7 @@
"subscriptions": "E-mail digests",
"subscriptions.disable": "Schakel e-mail digests uit",
"subscriptions.hour": "Uur van Digest",
- "subscriptions.hour-help": "Voer het nummer in dat het uur representeerd waarop scheduled email digests worden verstuurd (bv. 0 voor middernacht, 17 voor 17:00). Neem er s.v.p. notie van dat dit het uur is van de server self, dit hoeft niet exact overeen te komen met de klok van uw systeem.
De tijd op de server is bij benadering:
De volgende dagelijkse digest staat gepland om "
+ "subscriptions.hour-help": "Voer het nummer in dat het uur representeerd waarop scheduled email digests worden verstuurd (bv. 0 voor middernacht, 17 voor 17:00). Neem er s.v.p. notie van dat dit het uur is van de server self, dit hoeft niet exact overeen te komen met de klok van uw systeem.
De tijd op de server is bij benadering:
De volgende dagelijkse digest staat gepland om ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/nl/admin/settings/guest.json b/public/language/nl/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/nl/admin/settings/guest.json
+++ b/public/language/nl/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/nl/admin/settings/user.json b/public/language/nl/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/nl/admin/settings/user.json
+++ b/public/language/nl/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/nl/flags.json b/public/language/nl/flags.json
index c6cce94e4e..5d36245b74 100644
--- a/public/language/nl/flags.json
+++ b/public/language/nl/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Rapporteer ongepaste content",
+ "modal-title": "Report Content",
"modal-body": "Beschrijf de reden voor het markeren van %1 %2 voor review. Of gebruik een van de snelknoppen indien van toepassing.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Aanstootgevend",
diff --git a/public/language/nl/groups.json b/public/language/nl/groups.json
index bcd206b0d7..8b4465899d 100644
--- a/public/language/nl/groups.json
+++ b/public/language/nl/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Ledentelling",
"details.creation_date": "Aangemaakt op",
"details.description": "Beschrijving",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Voorbeeld",
"details.change_icon": "Wijzig icoon",
"details.change_label_colour": "Wijzig labelkleur",
diff --git a/public/language/nl/notifications.json b/public/language/nl/notifications.json
index 6f33e6b37e..6c77277819 100644
--- a/public/language/nl/notifications.json
+++ b/public/language/nl/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Als een bericht wordt aangepast in een onderwerp dat je volgt",
"notificationType_follow": "Als iemand begint met jou te volgen",
"notificationType_new-chat": "Als je een chat-bericht ontvangt",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Als je een uitnodiging voor een groep ontvangt",
"notificationType_group-request-membership": "Als iemand vraagt om lid te worden van een groep waarvan je eigenaar bent",
"notificationType_new-register": "Als iemand wordt toegevoegd aan een registratiewachtrij",
diff --git a/public/language/nl/register.json b/public/language/nl/register.json
index 43a790a4d6..71a2bc0db5 100644
--- a/public/language/nl/register.json
+++ b/public/language/nl/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Ik ga akkoord met de gebruiksvoorwaarden",
"terms_of_use_error": "Je moet akkoord gaan met de service voorwaarden.",
"registration-added-to-queue": "Het registratieverzoek is toegevoegd aan de wachtrij. Een bericht wordt naar het opgegeven emailadres gestuurd wanneer de registratie is goedgekeurd.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Je hebben meer informatie van je nodig voordat we je account kunnen aanmaken.",
"interstitial.errors-found": "Je konden jouw registratie niet afronden.",
"gdpr_agree_data": "Ik geef toestemming voor het verzamelen en verwerken van mijn persoonlijke informatie op deze website.",
diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json
index 205eb899ce..48791248da 100644
--- a/public/language/nl/topic.json
+++ b/public/language/nl/topic.json
@@ -30,6 +30,7 @@
"locked": "Gesloten",
"pinned": "Pinned",
"moved": "Verplaatst",
+ "moved-from": "Moved from %1",
"copy-ip": "Kopieer IP",
"ban-ip": "Verban IP",
"view-history": "Revisie geschiedenis",
diff --git a/public/language/nl/user.json b/public/language/nl/user.json
index 2b21641ef8..e1964d5720 100644
--- a/public/language/nl/user.json
+++ b/public/language/nl/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Open uitgaande links naar een externe site in een nieuw tabblad",
"enable_topic_searching": "Inschakelen mogelijkheid op onderwerp te kunnen zoeken",
"topic_search_help": "Wanneer ingeschakeld zal de standaard zoekfunctie, met een aangepaste methode voor onderwerpen, overschreven worden",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Toon het nieuwe bericht na het plaatsen van een antwoord",
"follow_topics_you_reply_to": "Ontvang meldingen van berichten waar je op hebt gereageerd",
"follow_topics_you_create": "Ontvang meldingen van berichten die je hebt gemaakt",
diff --git a/public/language/nl/users.json b/public/language/nl/users.json
index 4254e637a4..c865741f31 100644
--- a/public/language/nl/users.json
+++ b/public/language/nl/users.json
@@ -11,6 +11,7 @@
"online-only": "Online ",
"invite": "Uitnodigen",
"prompt-email": "E-mails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Een uitnodiging email is verstuurd naar %1 ",
"user_list": "Ledenlijst",
"recent_topics": "Recente onderwerpen",
diff --git a/public/language/pl/admin/extend/plugins.json b/public/language/pl/admin/extend/plugins.json
index 34781b3ee4..a653d06c54 100644
--- a/public/language/pl/admin/extend/plugins.json
+++ b/public/language/pl/admin/extend/plugins.json
@@ -1,5 +1,5 @@
{
- "trending": "Trending",
+ "trending": "O trendzie",
"installed": "Zainstalowane",
"active": "Aktywne",
"inactive": "Nieaktywne",
diff --git a/public/language/pl/admin/manage/privileges.json b/public/language/pl/admin/manage/privileges.json
index f7f207b691..fa3530abac 100644
--- a/public/language/pl/admin/manage/privileges.json
+++ b/public/language/pl/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Przesyłanie plików",
"signature": "Dodanie sygnatury",
"ban": "Banowanie",
+ "invite": "Invite",
"search-content": "Szukanie treści",
"search-users": "Szukanie użytkowników",
"search-tags": "Szukanie tagów",
@@ -49,5 +50,5 @@
"alert.confirm-copyToChildren": "Czy na pewno chcesz zastosować ten zbiór uprawnień dla wszystkich podkategorii?",
"alert.confirm-copyToChildrenGroup": "Czy na pewno chcesz zastosować zbiór uprawnień tej grupy dla wszystkich podkategorii?",
"alert.no-undo": "Tej czynności nie można cofnąć.",
- "alert.admin-warning": "Administrators implicitly get all privileges"
+ "alert.admin-warning": "Administratorzy domyślnie otrzymują wszelkie uprawnienia"
}
\ No newline at end of file
diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json
index ea24368388..0d7bb6006b 100644
--- a/public/language/pl/admin/manage/users.json
+++ b/public/language/pl/admin/manage/users.json
@@ -20,9 +20,9 @@
"add-group": "Dodaj grupę",
"invite": "Zaproś",
"new": "Nowy użytkownik",
- "filter-by": "Filter by",
+ "filter-by": "Filtruj po",
"pills.unvalidated": "Niezweryfikowani",
- "pills.validated": "Validated",
+ "pills.validated": "Zweryfikowano",
"pills.banned": "Zbanowani",
"50-per-page": "50 na stronę",
diff --git a/public/language/pl/admin/menu.json b/public/language/pl/admin/menu.json
index 656f1acb50..df26a3c686 100644
--- a/public/language/pl/admin/menu.json
+++ b/public/language/pl/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Paginacja",
"settings/tags": "Tagi",
"settings/notifications": "Powiadomienia",
+ "settings/api": "Dostęp do API",
"settings/sounds": "Dźwięki",
"settings/social": "Społecznościowe",
"settings/cookies": "Ciasteczka",
@@ -70,7 +71,7 @@
"logout": "Wyloguj się",
"view-forum": "Zobacz forum",
- "search.placeholder": "Press "/" to search for settings",
+ "search.placeholder": "Naciśnij "/" aby wyszukać ustawienia",
"search.no-results": "Brak wyników...",
"search.search-forum": "Szukaj w forum ",
"search.keep-typing": "Wpisz więcej, aby zobaczyć wyniki ...",
diff --git a/public/language/pl/admin/settings/advanced.json b/public/language/pl/admin/settings/advanced.json
index 9035af0e4e..62e71081ec 100644
--- a/public/language/pl/admin/settings/advanced.json
+++ b/public/language/pl/admin/settings/advanced.json
@@ -34,10 +34,10 @@
"sockets.default-placeholder": "Domyślnie: %1",
"sockets.delay": "Opóźnienie ponownego łączenia",
- "analytics.settings": "Analytics Settings",
+ "analytics.settings": "Ustawienia Analityki",
"analytics.max-cache": "Analytics Cache Max Value",
"analytics.max-cache-help": "On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)",
- "compression.settings": "Compression Settings",
- "compression.enable": "Enable Compression",
+ "compression.settings": "Ustawienia Kompresji",
+ "compression.enable": "Włącz Kompresję",
"compression.help": "This setting enables gzip compression. For a high-traffic website in production, the best way to put compression in place is to implement it at a reverse proxy level. You can enable it here for testing purposes."
}
\ No newline at end of file
diff --git a/public/language/pl/admin/settings/api.json b/public/language/pl/admin/settings/api.json
index ba7d964a04..c0c9758870 100644
--- a/public/language/pl/admin/settings/api.json
+++ b/public/language/pl/admin/settings/api.json
@@ -1,12 +1,12 @@
{
- "tokens": "Tokens",
+ "tokens": "Tokeny",
"lead-text": "From this page you can configure access to the Write API in NodeBB.",
"intro": "By default, the Write API authenticates users based on their session cookie, but NodeBB also supports Bearer authentication via tokens generated via this page.",
- "docs": "Click here to access the full API specification",
+ "docs": "Kliknij tutaj, aby zobaczyć pełną specyfikację API",
- "uid": "User ID",
+ "uid": "ID Użytkownika",
"uid-help-text": "Specify a User ID to associate with this token. If the user ID is 0, it will be considered a master token, which can assume the identity of other users based on the _uid parameter",
- "description": "Description",
- "no-description": "No description specified.",
- "token-on-save": "Token will be generated once form is saved"
+ "description": "Opis",
+ "no-description": "Brak opisu.",
+ "token-on-save": "Token zostanie wygenerowany po zapisaniu formularza"
}
\ No newline at end of file
diff --git a/public/language/pl/admin/settings/email.json b/public/language/pl/admin/settings/email.json
index e3774d23a9..0133f3617a 100644
--- a/public/language/pl/admin/settings/email.json
+++ b/public/language/pl/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Ten adres e-mail odbiorca zobaczy w polach „Od” i „Odpowiedz”.",
"from": "Pole „Od”",
"from-help": "Nazwa „Od” widoczna w e-mailach",
-
+
"smtp-transport": "Transport SMTP",
"smtp-transport.enabled": "Używaj zewnętrznego serwera e-mail do wysyłania e-maili.",
"smtp-transport-help": "Możesz wybrać z listy dobrze znanych usług lub wskazać usługę niestandardową.",
@@ -35,5 +35,7 @@
"subscriptions": "Podsumowania e-mail",
"subscriptions.disable": "Wyłącz podsumowania e-maili",
"subscriptions.hour": "Godzina podsumowania",
- "subscriptions.hour-help": "Wprowadź liczbę odpowiadającą godzinie, o której mają być wysyłane regularne e-maile z podsumowaniem (np. 0 dla północy lub 17 dla 17:00). Pamiętaj, że godzina jest godziną serwera i nie musi zgadzać się z czasem lokalnym administratora. Przybliżony czas serwera to:
Wysłanie kolejnego e-maila z podsumowaniem zaplanowano na "
+ "subscriptions.hour-help": "Wprowadź liczbę odpowiadającą godzinie, o której mają być wysyłane regularne e-maile z podsumowaniem (np. 0 dla północy lub 17 dla 17:00). Pamiętaj, że godzina jest godziną serwera i nie musi zgadzać się z czasem lokalnym administratora. Przybliżony czas serwera to:
Wysłanie kolejnego e-maila z podsumowaniem zaplanowano na ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/pl/admin/settings/guest.json b/public/language/pl/admin/settings/guest.json
index 4eb4da8a21..1584969a45 100644
--- a/public/language/pl/admin/settings/guest.json
+++ b/public/language/pl/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Podpisywanie się gości",
+ "settings": "Settings",
"handles.enabled": "Zezwalaj gościom na podpisywanie się",
"handles.enabled-help": "Opcja ta udostępnia gościom nowe pole, w którym mogą wybrać nazwę, pod jaką będą publikować posty. Jeśli opcja jest wyłączona, stosowana będzie po prostu nazwa „Gość”",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/pl/admin/settings/user.json b/public/language/pl/admin/settings/user.json
index e36fb72d5a..1a1e1388e8 100644
--- a/public/language/pl/admin/settings/user.json
+++ b/public/language/pl/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Brak rejestracji",
"registration-type.help": "Standardowa - Użytkownicy mogą się rejestrować na stronie /register.
\nTylko zaproszenia - Użytkownicy mogą zapraszać innych poprzez stronę users.
\nTylko zaproszenia administratora - Tylko administratorzy mogą zapraszać innych poprzez stronę users oraz admin/manage/users.
\nBrak rejestracji - Brak rejestracji użytkowników.
",
"registration-approval-type.help": "Normalny - użytkownicy są rejestrowani natychmiast.
\nZatwierdzenie administratora - rejestracje użytkowników są umieszczane w kolejce zatwierdzania dla administratorów.
\n Kolejka zatwierdzania dla IPs - Normalne dla nowych użytkowników, kolejka zatwierdzania dla adresów IP, które już mają konto.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maksymalnie liczba zaproszeń na użytkownika",
"max-invites": "Maksymalnie liczba zaproszeń na użytkownika",
"max-invites-help": "0 dla braku ograniczeń. Administratorzy otrzymują nieskończoną liczbę zaproszeń
Aplikowane tylko dla \"Tylko zaproszeni\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Przyjmuj wiadomości na czacie tylko od osób, które obserwuję",
"outgoing-new-tab": "Otwieraj odnośniki wychodzące na nowej karcie",
"topic-search": "Włącz wyszukiwanie wewnątrz tematów",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Podsumowania - tryb",
"digest-freq.off": "Wyłączone",
"digest-freq.daily": "Dzienny ",
diff --git a/public/language/pl/flags.json b/public/language/pl/flags.json
index cc69a02ec9..241896eb4d 100644
--- a/public/language/pl/flags.json
+++ b/public/language/pl/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Zgłoś niewłaściwe treści",
+ "modal-title": "Report Content",
"modal-body": "Wskaż powód oflagowania i zgłoszenia %1 %2 do oceny. Jeśli to możliwe, użyj jednego z przycisków szybkiego zgłoszenia.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Treści obraźliwe",
diff --git a/public/language/pl/groups.json b/public/language/pl/groups.json
index e0569382ae..3f0b17db0e 100644
--- a/public/language/pl/groups.json
+++ b/public/language/pl/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Liczba Członków",
"details.creation_date": "Data Utworzenia",
"details.description": "Opis",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Podgląd etykiety",
"details.change_icon": "Zmień ikonę",
"details.change_label_colour": "Zmień kolor etykiety",
diff --git a/public/language/pl/notifications.json b/public/language/pl/notifications.json
index 5ff19a59a7..ae37815cc8 100644
--- a/public/language/pl/notifications.json
+++ b/public/language/pl/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Kiedy post jest edytowany w temacie, który obserwujesz",
"notificationType_follow": "Kiedy ktoś zacznie Cię obserwować",
"notificationType_new-chat": "Kiedy otrzymasz wiadomość na czacie",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Kiedy otrzymasz grupowe zaproszenie",
"notificationType_group-request-membership": "Kiedy ktoś prosi o dołączenie do grupy, którą posiadasz",
"notificationType_new-register": "Kiedy ktoś zostaje dodany do kolejki rejestracyjnej",
diff --git a/public/language/pl/register.json b/public/language/pl/register.json
index 26e505026d..fad5540645 100644
--- a/public/language/pl/register.json
+++ b/public/language/pl/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Zgadzam się na powyższe warunki",
"terms_of_use_error": "Musisz zaakceptować warunki korzystania z serwisu",
"registration-added-to-queue": "Twoja rejestracja została dodana do kolejki oczekujących na akceptację. Otrzymasz e-mail, kiedy zostanie zatwierdzona przez administratora.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Do utworzenia Twojego konta potrzebne są dodatkowe informacje.",
"interstitial.errors-found": "Nie mogliśmy ukończyć procesu rejestracji:",
"gdpr_agree_data": "Wyrażam zgodę na zbieranie i przetwarzanie moich danych przez tę stronę.",
diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json
index 682131652c..57f5ee1a1e 100644
--- a/public/language/pl/topic.json
+++ b/public/language/pl/topic.json
@@ -30,6 +30,7 @@
"locked": "Zablokowany",
"pinned": "Przypięty",
"moved": "Przeniesiony",
+ "moved-from": "Moved from %1",
"copy-ip": "Kopiuj IP",
"ban-ip": "Blokuj IP",
"view-history": "Historia edycji",
diff --git a/public/language/pl/user.json b/public/language/pl/user.json
index 1e715c3070..a985d09d42 100644
--- a/public/language/pl/user.json
+++ b/public/language/pl/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Otwieraj odnośniki wychodzące w nowej karcie",
"enable_topic_searching": "Włącz szukanie w temacie",
"topic_search_help": "Zaznacz, jeśli chcesz, by wyszukiwanie w temacie zastąpiło przeszukiwanie strony poprzez przeglądarkę, a tym samym umożliwiło przeszukiwanie całego tematu, a nie tylko treści aktualnie wyświetlanych na ekranie",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Wyświetl nowy post po zamieszczeniu odpowiedzi",
"follow_topics_you_reply_to": "Obserwuj tematy, w których uczestniczysz",
"follow_topics_you_create": "Obserwuj tematy, które utworzyłeś",
diff --git a/public/language/pl/users.json b/public/language/pl/users.json
index a7d103bcfc..693ba9d3c3 100644
--- a/public/language/pl/users.json
+++ b/public/language/pl/users.json
@@ -11,6 +11,7 @@
"online-only": "Tylko online",
"invite": "Zaproś",
"prompt-email": "Adresy e-mail:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "E-mail z zaproszeniem został wysłany do %1",
"user_list": "Lista użytkowników",
"recent_topics": "Ostatnie tematy",
diff --git a/public/language/pt-BR/admin/manage/privileges.json b/public/language/pt-BR/admin/manage/privileges.json
index 88e21535d6..a54d8b9712 100644
--- a/public/language/pt-BR/admin/manage/privileges.json
+++ b/public/language/pt-BR/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Enviar Arquivos",
"signature": "Assinatura",
"ban": "Banir",
+ "invite": "Invite",
"search-content": "Pesquisar Conteúdo",
"search-users": "Pesquisar Usuários",
"search-tags": "Pesquisar Tags",
diff --git a/public/language/pt-BR/admin/menu.json b/public/language/pt-BR/admin/menu.json
index dce0ca5d23..d5f6d2ef73 100644
--- a/public/language/pt-BR/admin/menu.json
+++ b/public/language/pt-BR/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Paginação",
"settings/tags": "Tags",
"settings/notifications": "Notificações",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/pt-BR/admin/settings/email.json b/public/language/pt-BR/admin/settings/email.json
index edeef89aa4..6d233e6dfd 100644
--- a/public/language/pt-BR/admin/settings/email.json
+++ b/public/language/pt-BR/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "O seguinte endereço de e-mail se refere ao e-mail que o destinatário verá nos campos \"De\" e \"Responder Para\".",
"from": "Por Nome (From)",
"from-help": "O nome que será mostrado em \"De\" no e-mail.",
-
+
"smtp-transport": "Trasporte por SMTP",
"smtp-transport.enabled": "Utilizar um servidor de e-mail externo para enviar e-mails",
"smtp-transport-help": "Você pode escolher entre uma lista de serviços conhecidos ou adicionar um personalizado.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Hora de Envio dos Resumos",
- "subscriptions.hour-help": "Por favor, entre um número representando a hora para enviar os resumos agendados via e-mail (por exemplo: 0 para meia-noite, 17 para 5:00pm). Tenha em mente que esta é a hora de acordo com o servidor e pode não combinar exatamente com o relógio do seu sistema.
O horário aproximado do servidor é:
O próximo resumo diário está agendado para ser enviado "
+ "subscriptions.hour-help": "Por favor, entre um número representando a hora para enviar os resumos agendados via e-mail (por exemplo: 0 para meia-noite, 17 para 5:00pm). Tenha em mente que esta é a hora de acordo com o servidor e pode não combinar exatamente com o relógio do seu sistema.
O horário aproximado do servidor é:
O próximo resumo diário está agendado para ser enviado ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/pt-BR/admin/settings/guest.json b/public/language/pt-BR/admin/settings/guest.json
index 09422d5b18..84e3098de0 100644
--- a/public/language/pt-BR/admin/settings/guest.json
+++ b/public/language/pt-BR/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Nome para Visitantes",
+ "settings": "Settings",
"handles.enabled": "Permitir que visitantes escolham um nome",
"handles.enabled-help": "Esta opção mostra um novo campo que permite visitantes de escolher um nome para associar a cada post que eles fizerem. Se desabilitado, eles serão simplesmente chamados de \"Visitante\".",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/pt-BR/admin/settings/user.json b/public/language/pt-BR/admin/settings/user.json
index 0f68d83c52..5882ca355b 100644
--- a/public/language/pt-BR/admin/settings/user.json
+++ b/public/language/pt-BR/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Desativar registros",
"registration-type.help": "Normal - Usuários podem se registrar pela página /register.
\nApenas Convite - Usuários podem convidar outros da página usuários.
\nApenas Convite do Administrador - Apenas administradores podem convidar das páginas de usuários e administração/administrar/usuários .
\nSem registro - Sem registro de usuários.
",
"registration-approval-type.help": "Normal - Usuários são registrados imediatamente.
\nAprovação do Admin - Registros de usuários são colocados em uma fila de aprovação por administradores.
\nAprovação do Admin por IPs - Normal para novos usuários, Aprovação do Admin por endereços IPs que já têm uma conta.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Máximo de Convites por Usuário",
"max-invites": "Máximo de Convites por Usuário",
"max-invites-help": "0 para nenhuma restrição. Administradores têm convites infinitos.
Apenas aplicável para \"Apenas por Convite\".",
@@ -62,6 +65,7 @@
"restrict-chat": "Permitir apenas mensagens de chat de usuários que eu sigo",
"outgoing-new-tab": "Abrir links externos em nova aba",
"topic-search": "Permitir Busca dentro do Tópico",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Habilitar o recebimento de Resumos",
"digest-freq.off": "Desligado",
"digest-freq.daily": "Diário",
diff --git a/public/language/pt-BR/flags.json b/public/language/pt-BR/flags.json
index 0dff281db8..1bb5fc5a31 100644
--- a/public/language/pt-BR/flags.json
+++ b/public/language/pt-BR/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Reportar Conteúdo Inadequado",
+ "modal-title": "Report Content",
"modal-body": "Por favor, especifique a razão pela qual você está sinalizando %1 %2 para a revisão. Alternativamente, use um dos botões de reporte rápido se for aplicável.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Ofensivo",
diff --git a/public/language/pt-BR/groups.json b/public/language/pt-BR/groups.json
index 14bb379505..107ba7e215 100644
--- a/public/language/pt-BR/groups.json
+++ b/public/language/pt-BR/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Número de Membros",
"details.creation_date": "Data de Criação",
"details.description": "Descrição",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Visualização do Distintivo",
"details.change_icon": "Mudar Ícone",
"details.change_label_colour": "Alterar Cor do Rótulo",
diff --git a/public/language/pt-BR/notifications.json b/public/language/pt-BR/notifications.json
index d9fc33c48a..c06ba4e7ca 100644
--- a/public/language/pt-BR/notifications.json
+++ b/public/language/pt-BR/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Quando alguém começar a seguir você",
"notificationType_new-chat": "Quando você receber uma mensagem de chat",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Quando você receber um convite para um grupo",
"notificationType_group-request-membership": "Quando alguém pede para participar de um grupo que você é dono",
"notificationType_new-register": "Quando alguém for adicionado à fila de registro",
diff --git a/public/language/pt-BR/register.json b/public/language/pt-BR/register.json
index 6363ee283a..40609f5cea 100644
--- a/public/language/pt-BR/register.json
+++ b/public/language/pt-BR/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Eu concordo com os Termos de Uso",
"terms_of_use_error": "Você deve concordar com os Termos de Uso",
"registration-added-to-queue": "O seu cadastro foi adicionado à fila de aprovação. Você receberá um email quando ele for aceito por um administrador.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Precisamos de algumas informações adicionais antes de podermos criar sua conta.",
"interstitial.errors-found": "Não foi possível concluir o seu cadastro:",
"gdpr_agree_data": "Eu concordo com a coleta e o processamento de minhas informações pessoais neste site.",
diff --git a/public/language/pt-BR/topic.json b/public/language/pt-BR/topic.json
index 9e5b448a82..7ae84e2309 100644
--- a/public/language/pt-BR/topic.json
+++ b/public/language/pt-BR/topic.json
@@ -30,6 +30,7 @@
"locked": "Trancado",
"pinned": "Fixado",
"moved": "Movido",
+ "moved-from": "Moved from %1",
"copy-ip": "Copiar IP",
"ban-ip": "Banir IP",
"view-history": "Histórico de Edição",
diff --git a/public/language/pt-BR/user.json b/public/language/pt-BR/user.json
index 049844ab4d..07f4736c03 100644
--- a/public/language/pt-BR/user.json
+++ b/public/language/pt-BR/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Abrir links externos em nova aba",
"enable_topic_searching": "Habilitar Pesquisa dentro de Tópico",
"topic_search_help": "Se habilitado, a pesquisa dentro do tópico irá substituir a pesquisa padrão do seu navegador. Assim, você poderá pesquisar pelo tópico inteiro, e não apenas pelo o que está sendo exibido na tela.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Ao responder um tópico, role a página até a minha postagem",
"follow_topics_you_reply_to": "Acompanhar os tópicos que você responde",
"follow_topics_you_create": "Acompanhar os tópicos que você cria",
diff --git a/public/language/pt-BR/users.json b/public/language/pt-BR/users.json
index b7ff2950b4..ceef5faffa 100644
--- a/public/language/pt-BR/users.json
+++ b/public/language/pt-BR/users.json
@@ -11,6 +11,7 @@
"online-only": "Apenas Online",
"invite": "Convidar",
"prompt-email": "E-mails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Um email de convite foi enviado para %1",
"user_list": "Lista de Usuários",
"recent_topics": "Tópicos Recentes",
diff --git a/public/language/pt-PT/admin/manage/privileges.json b/public/language/pt-PT/admin/manage/privileges.json
index 735b781104..81e7ad9634 100644
--- a/public/language/pt-PT/admin/manage/privileges.json
+++ b/public/language/pt-PT/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Enviar Ficheiros",
"signature": "Assinatura",
"ban": "Banir",
+ "invite": "Invite",
"search-content": "Procurar Conteúdo",
"search-users": "Procurar Utilizadores",
"search-tags": "Procurar Marcadores",
diff --git a/public/language/pt-PT/admin/menu.json b/public/language/pt-PT/admin/menu.json
index c28a621759..f2eaa7e52a 100644
--- a/public/language/pt-PT/admin/menu.json
+++ b/public/language/pt-PT/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Paginação",
"settings/tags": "Marcadores",
"settings/notifications": "Notificações",
+ "settings/api": "API Access",
"settings/sounds": "Sons",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/pt-PT/admin/settings/email.json b/public/language/pt-PT/admin/settings/email.json
index 9a4d43bb02..8917a8ea07 100644
--- a/public/language/pt-PT/admin/settings/email.json
+++ b/public/language/pt-PT/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Resumos por E-mail",
"subscriptions.disable": "Desativar resumos por e-mail",
"subscriptions.hour": "Hora do Resumo",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/pt-PT/admin/settings/guest.json b/public/language/pt-PT/admin/settings/guest.json
index d2e42cbedd..af3d498e80 100644
--- a/public/language/pt-PT/admin/settings/guest.json
+++ b/public/language/pt-PT/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Nomes para visitantes",
+ "settings": "Settings",
"handles.enabled": "Permitir nomes para visitantes",
"handles.enabled-help": "Esta opção expôe um novo campo que permite a visitantes escolher um nome para associar a cada publicação que eles criem. Se desabilitada, eles simplesmente se chamarão \"Visitante\" ",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/pt-PT/admin/settings/user.json b/public/language/pt-PT/admin/settings/user.json
index a380cc51d3..33edff1b13 100644
--- a/public/language/pt-PT/admin/settings/user.json
+++ b/public/language/pt-PT/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Sem registo",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Máximo de Convites por Utilizador",
"max-invites": "Máximo de Convites por Utilizador",
"max-invites-help": "Usa 0 para nenhuma restrição. Administradores têm convites infinitos.
Apenas aplicável quando selecionado \"Apenas por Convite\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Apenas permitir mensagens de utilizadores que eu sigo",
"outgoing-new-tab": "Abrir links externos num novo separador",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscrever o Resumo",
"digest-freq.off": "Desligado",
"digest-freq.daily": "Diariamente ",
diff --git a/public/language/pt-PT/flags.json b/public/language/pt-PT/flags.json
index 87b36c6847..3f22c5b2c2 100644
--- a/public/language/pt-PT/flags.json
+++ b/public/language/pt-PT/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Denunciar Conteúdo Impróprio",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Ofensivo",
diff --git a/public/language/pt-PT/groups.json b/public/language/pt-PT/groups.json
index f506d2837e..77bfbdd44b 100644
--- a/public/language/pt-PT/groups.json
+++ b/public/language/pt-PT/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Quantidade de membros",
"details.creation_date": "Data de criação",
"details.description": "Descrição",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Pré-visualização do crachá",
"details.change_icon": "Alterar o Ícone",
"details.change_label_colour": "Alterar Cor da Etiqueta",
diff --git a/public/language/pt-PT/notifications.json b/public/language/pt-PT/notifications.json
index ed1b911ef8..cda956aa54 100644
--- a/public/language/pt-PT/notifications.json
+++ b/public/language/pt-PT/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Quando uma publicação é editada num tópico que estás a seguir",
"notificationType_follow": "Quando alguém começa a seguir-te",
"notificationType_new-chat": "Quando recebes uma mensagem numa conversa",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Quando recebes um convite para um grupo",
"notificationType_group-request-membership": "Quando alguém pede para entrar num grupo que é teu",
"notificationType_new-register": "Quando alguém é adicionado à fila de espera de registo",
diff --git a/public/language/pt-PT/register.json b/public/language/pt-PT/register.json
index d751416bb0..6ee0d02945 100644
--- a/public/language/pt-PT/register.json
+++ b/public/language/pt-PT/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Eu aceito os Termos de Utilização",
"terms_of_use_error": "Deves aceitar os Termos de Utilização",
"registration-added-to-queue": "O teu registo foi adicionado à fila de aprovação. Receberás um e-mail quando fores aceite por um administrador.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Requeremos informação adicional antes de criarmos a tua conta.",
"interstitial.errors-found": "Não pudemos completar o teu registro:",
"gdpr_agree_data": "Autorizo a recolha e o processamento das minhas informações pessoais neste website.",
diff --git a/public/language/pt-PT/topic.json b/public/language/pt-PT/topic.json
index 8ea32d45f9..7599763939 100644
--- a/public/language/pt-PT/topic.json
+++ b/public/language/pt-PT/topic.json
@@ -30,6 +30,7 @@
"locked": "Bloqueado",
"pinned": "Afixado",
"moved": "Movido",
+ "moved-from": "Moved from %1",
"copy-ip": "Copiar IP",
"ban-ip": "Banir IP",
"view-history": "Histórico de Edição",
diff --git a/public/language/pt-PT/user.json b/public/language/pt-PT/user.json
index 1efd397e68..0ef645e6cf 100644
--- a/public/language/pt-PT/user.json
+++ b/public/language/pt-PT/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Abrir links externos num novo separador",
"enable_topic_searching": "Permitir pesquisa dentro dos tópicos",
"topic_search_help": "Se ativada, a pesquisa dentro de tópicos irá sobrepor-se ao comportamento normal de pesquisa do browser pré-definido e irá permitir-te pesquisar ao longo de todo o tópico, em vez de pesquisar somente no que é mostrado no ecrã",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Depois de publicar uma resposta, mostrar a nova publicação",
"follow_topics_you_reply_to": "Visualizar tópicos aos quais respondeste",
"follow_topics_you_create": "Visualizar tópicos que criaste",
diff --git a/public/language/pt-PT/users.json b/public/language/pt-PT/users.json
index abbbdb59d2..d4dabc760b 100644
--- a/public/language/pt-PT/users.json
+++ b/public/language/pt-PT/users.json
@@ -11,6 +11,7 @@
"online-only": "Só online",
"invite": "Convidar",
"prompt-email": "E-mails",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Foi enviado um e-mail de convite para %1",
"user_list": "Lista de utilizadores",
"recent_topics": "Tópicos recentes",
diff --git a/public/language/ro/admin/manage/privileges.json b/public/language/ro/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/ro/admin/manage/privileges.json
+++ b/public/language/ro/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/ro/admin/menu.json b/public/language/ro/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/ro/admin/menu.json
+++ b/public/language/ro/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/ro/admin/settings/email.json b/public/language/ro/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/ro/admin/settings/email.json
+++ b/public/language/ro/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/ro/admin/settings/guest.json b/public/language/ro/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/ro/admin/settings/guest.json
+++ b/public/language/ro/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/ro/admin/settings/user.json b/public/language/ro/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/ro/admin/settings/user.json
+++ b/public/language/ro/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/ro/flags.json b/public/language/ro/flags.json
index 10698842cc..13b3567bc9 100644
--- a/public/language/ro/flags.json
+++ b/public/language/ro/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/ro/groups.json b/public/language/ro/groups.json
index 245c58160e..7f03bf06da 100644
--- a/public/language/ro/groups.json
+++ b/public/language/ro/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Număr de membrii",
"details.creation_date": "Data creării",
"details.description": "Descriere",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Previzualizarea insignei",
"details.change_icon": "Schimbă icoana",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/ro/notifications.json b/public/language/ro/notifications.json
index 10008327aa..175ee9c7e2 100644
--- a/public/language/ro/notifications.json
+++ b/public/language/ro/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/ro/register.json b/public/language/ro/register.json
index ca1ed4eac4..d7ed0050ed 100644
--- a/public/language/ro/register.json
+++ b/public/language/ro/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Sunt de acord cu termenii de utilizare",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/ro/topic.json b/public/language/ro/topic.json
index c7ecedf806..dd1844b7b4 100644
--- a/public/language/ro/topic.json
+++ b/public/language/ro/topic.json
@@ -30,6 +30,7 @@
"locked": "Închis",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/ro/user.json b/public/language/ro/user.json
index 492b6d8b38..b7c643cad0 100644
--- a/public/language/ro/user.json
+++ b/public/language/ro/user.json
@@ -123,6 +123,7 @@
"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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/ro/users.json b/public/language/ro/users.json
index 39460311e9..cecbe5971e 100644
--- a/public/language/ro/users.json
+++ b/public/language/ro/users.json
@@ -11,6 +11,7 @@
"online-only": "Numai online",
"invite": "Invită",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Un email de invitație s-a trimis la %1",
"user_list": "Listă utilizatori",
"recent_topics": "Subiecte Noi",
diff --git a/public/language/ru/admin/manage/privileges.json b/public/language/ru/admin/manage/privileges.json
index 699bb32ee4..556d5cce86 100644
--- a/public/language/ru/admin/manage/privileges.json
+++ b/public/language/ru/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Загрузка файлов",
"signature": "Подпись",
"ban": "Блокировка пользователей",
+ "invite": "Invite",
"search-content": "Поиск по содержимому",
"search-users": "Поиск пользователей",
"search-tags": "Поиск меток",
diff --git a/public/language/ru/admin/menu.json b/public/language/ru/admin/menu.json
index f08ad053f2..afdb61a8ef 100644
--- a/public/language/ru/admin/menu.json
+++ b/public/language/ru/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Пагинация",
"settings/tags": "Метки",
"settings/notifications": "Уведомления",
+ "settings/api": "API Access",
"settings/sounds": "Звуки",
"settings/social": "Шэринг",
"settings/cookies": "Куки",
diff --git a/public/language/ru/admin/settings/email.json b/public/language/ru/admin/settings/email.json
index 805e300208..acdad4c0ed 100644
--- a/public/language/ru/admin/settings/email.json
+++ b/public/language/ru/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Этот адрес получатели писем увидят в полях «От кого» и «Ответить».",
"from": "От кого",
"from-help": "Имя отправителя письма (или название форума).",
-
+
"smtp-transport": "Сервис SMTP",
"smtp-transport.enabled": "Использовать сторонний сервис для рассылки писем",
"smtp-transport-help": "Выберите один из популярных сервисов или укажите свой почтовый сервер.",
@@ -35,5 +35,7 @@
"subscriptions": "Новостные рассылки",
"subscriptions.disable": "Отключить новостные рассылки",
"subscriptions.hour": "Час отправки",
- "subscriptions.hour-help": "Введите число, соответствующее номеру часа (например, 0 для полуночи, 17 для 17:00). Имейте в виду, что время определяется по часовому поясу сервера.
Текущее время сервера:
Следующая рассылка запланирована на "
+ "subscriptions.hour-help": "Введите число, соответствующее номеру часа (например, 0 для полуночи, 17 для 17:00). Имейте в виду, что время определяется по часовому поясу сервера.
Текущее время сервера:
Следующая рассылка запланирована на ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/ru/admin/settings/guest.json b/public/language/ru/admin/settings/guest.json
index 94d34bf6d6..4245f4eec1 100644
--- a/public/language/ru/admin/settings/guest.json
+++ b/public/language/ru/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Имена гостей",
+ "settings": "Settings",
"handles.enabled": "Разрешить гостям выбирать имена",
"handles.enabled-help": "Эта настройка добавляет поле, в котором гость сможет указать имя, под которым он хочет оставить сообщение. Когда она выключена, вместо имени будет написано просто «Гость».",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/ru/admin/settings/user.json b/public/language/ru/admin/settings/user.json
index 5fb984be8c..11a91f4fd3 100644
--- a/public/language/ru/admin/settings/user.json
+++ b/public/language/ru/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Регистрация отключена",
"registration-type.help": "Обычный – пользователи могут регистрироваться без ограничений.
\nТолько по приглашениям – существующие пользователи могут приглашать других участников
\nТолько по приглашению администратора – только администратор может приглашать пользователей на странице Пользователи или в панели администратора.
\nРегистрация отключена – пользователи не могут регистрироваться.
",
"registration-approval-type.help": "Обычный – регистрация подтверждается автоматически.
\nПодтверждается администратором – заявки на регистрацию помещаются в очередь на одобрение.
\nПодтверждается администратором для известных IP-адресов – новые пользователи регистрируются как обычно, но если заявка поступает с такого же IP, как у существующего пользователя, требуется подтверждение администратора.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Макс. приглашений у пользователя",
"max-invites": "Макс. приглашений у пользователя",
"max-invites-help": "0 – без ограничений. Администраторы в любом случае могут приглашать бесконечно
Эта настройка действует только в режиме регистрации только по приглашениям.",
@@ -62,6 +65,7 @@
"restrict-chat": "Разрешить чат только с теми, на кого подписаны",
"outgoing-new-tab": "Открывать внешние ссылки в новой вкладке",
"topic-search": "Включить поиск по сообщениям внутри тем",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Подписка на дайджест",
"digest-freq.off": "Отключена",
"digest-freq.daily": "Ежедневная",
diff --git a/public/language/ru/flags.json b/public/language/ru/flags.json
index d14a6d21b3..25aa9ffb02 100644
--- a/public/language/ru/flags.json
+++ b/public/language/ru/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Сообщить о недопустимом контенте",
+ "modal-title": "Report Content",
"modal-body": "Укажите причину для жалобы на %1 %2. Вы можете использовать одну из подходящих стандартных причин.",
"modal-reason-spam": "Спам",
"modal-reason-offensive": "Оскорбительное содержимое",
diff --git a/public/language/ru/groups.json b/public/language/ru/groups.json
index e136d830c1..c7ac40be51 100644
--- a/public/language/ru/groups.json
+++ b/public/language/ru/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Количество участников",
"details.creation_date": "Дата создания",
"details.description": "Описание",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Предпросмотр значка",
"details.change_icon": "Сменить иконку",
"details.change_label_colour": "Изменить цвет ярлыка",
diff --git a/public/language/ru/notifications.json b/public/language/ru/notifications.json
index 98be01de19..a8a05f48a9 100644
--- a/public/language/ru/notifications.json
+++ b/public/language/ru/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Когда сообщение было отредактировано в теме, на которую вы подписаны",
"notificationType_follow": "Когда кто-то подписался на вас",
"notificationType_new-chat": "Когда вы получаете сообщение в чат",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Когда вы получаете приглашение в группу",
"notificationType_group-request-membership": "Когда кто-то хочет присоединиться к группе, которой вы управляете",
"notificationType_new-register": "Когда в очереди на регистрацию появляется новый пользователь",
diff --git a/public/language/ru/register.json b/public/language/ru/register.json
index 8e8d3c0ea7..c929e75b68 100644
--- a/public/language/ru/register.json
+++ b/public/language/ru/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Я соглашаюсь с условиями",
"terms_of_use_error": "Для регистрации на нашем сайте необходимо согласиться с условиями",
"registration-added-to-queue": "Ваша регистрация была добавлена в очередь на утверждение. Вы получите уведомление по электронной почте, когда она будет одобрена администратором.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Нам потребуется дополнительная информация, прежде чем мы сможем создать вашу учётную запись.",
"interstitial.errors-found": "Мы не смогли завершить регистрацию:",
"gdpr_agree_data": "Я соглашаюсь на сбор и обработку моей личной информации на этом веб-сайте.",
diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json
index 32c4174e35..40f5bd5934 100644
--- a/public/language/ru/topic.json
+++ b/public/language/ru/topic.json
@@ -30,6 +30,7 @@
"locked": "Закрыта",
"pinned": "Прикреплена",
"moved": "Перенесена",
+ "moved-from": "Moved from %1",
"copy-ip": "Копировать IP",
"ban-ip": "Забанить IP",
"view-history": "История правок",
diff --git a/public/language/ru/user.json b/public/language/ru/user.json
index b23955ba18..920738234f 100644
--- a/public/language/ru/user.json
+++ b/public/language/ru/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Открывать внешние ссылки в новом окне",
"enable_topic_searching": "Включить поиск по сообщениям внутри тем",
"topic_search_help": "Когда эта опция включена, вместо стандартного поиска по странице ваш браузер будет использовать соответствующую функцию форума, которая позволит искать и среди сообщений, которые ещё не загружены.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Пролистывать страницы к вашим новым сообщениям сразу после их отправки",
"follow_topics_you_reply_to": "Включать отслеживание во всех темах, в которых вы отвечаете",
"follow_topics_you_create": "Включать отслеживание всех тем, которые вы создаёте",
diff --git a/public/language/ru/users.json b/public/language/ru/users.json
index 09670a5481..f924e5ac84 100644
--- a/public/language/ru/users.json
+++ b/public/language/ru/users.json
@@ -11,6 +11,7 @@
"online-only": "Только онлайн",
"invite": "Пригласить",
"prompt-email": "Адреса электронной почты:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Письмо с приглашением для %1 отправлено",
"user_list": "Список пользователей",
"recent_topics": "Последние темы",
diff --git a/public/language/rw/admin/manage/privileges.json b/public/language/rw/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/rw/admin/manage/privileges.json
+++ b/public/language/rw/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/rw/admin/menu.json b/public/language/rw/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/rw/admin/menu.json
+++ b/public/language/rw/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/rw/admin/settings/email.json b/public/language/rw/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/rw/admin/settings/email.json
+++ b/public/language/rw/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/rw/admin/settings/guest.json b/public/language/rw/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/rw/admin/settings/guest.json
+++ b/public/language/rw/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/rw/admin/settings/user.json b/public/language/rw/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/rw/admin/settings/user.json
+++ b/public/language/rw/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/rw/flags.json b/public/language/rw/flags.json
index 10698842cc..13b3567bc9 100644
--- a/public/language/rw/flags.json
+++ b/public/language/rw/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/rw/groups.json b/public/language/rw/groups.json
index cd3537025f..eec9571922 100644
--- a/public/language/rw/groups.json
+++ b/public/language/rw/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Umubare w'Abagize Itsinda",
"details.creation_date": "Igihe Ryaremewe",
"details.description": "Ibiriranga",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Ibisobanuro ku Kirango",
"details.change_icon": "Hindura Akarango",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/rw/notifications.json b/public/language/rw/notifications.json
index 466d7cef9d..fc6ea70cf4 100644
--- a/public/language/rw/notifications.json
+++ b/public/language/rw/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/rw/register.json b/public/language/rw/register.json
index f8c4d9aaa8..70a7f949f6 100644
--- a/public/language/rw/register.json
+++ b/public/language/rw/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Nzakurikiza Amategeko n'Amabwiriza",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Icyifuzo cy'iyandikwa ryawe cyakiriwe ariko gitegereje isuzuma. Uzabimenyeshwa biciye muri email niba ubuyobozi bwakwemereye kwandikwa. ",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/rw/topic.json b/public/language/rw/topic.json
index 4459286859..fb15f3a347 100644
--- a/public/language/rw/topic.json
+++ b/public/language/rw/topic.json
@@ -30,6 +30,7 @@
"locked": "Birafungiranye",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/rw/user.json b/public/language/rw/user.json
index 13809638fb..6f406dece7 100644
--- a/public/language/rw/user.json
+++ b/public/language/rw/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Fungurira imirongo ijya hanze mu idirishya rishya",
"enable_topic_searching": "Emerera Ugushakira mu Kiganiro",
"topic_search_help": "Nibyemerwa, ugushakira mu kiganiro bizajya biba ari byo bikorwa maze bitume umuntu abasha gushakira mu kiganiro hose aho gushakira kuri paji igaragarira amaso, imbere yawe gusa",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Nyuma yo gushyiraho igisubizo, hagaragare icyashyizweho gishya",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/rw/users.json b/public/language/rw/users.json
index b6448a0e79..b79a5b75a4 100644
--- a/public/language/rw/users.json
+++ b/public/language/rw/users.json
@@ -11,6 +11,7 @@
"online-only": "Abari ku murongo gusa",
"invite": "Tumira",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Ubutumire bwa email bwohererejwe %1",
"user_list": "Urutonde rw'Abantu",
"recent_topics": "Ibiganiro Biheruka",
diff --git a/public/language/sc/admin/manage/privileges.json b/public/language/sc/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/sc/admin/manage/privileges.json
+++ b/public/language/sc/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/sc/admin/menu.json b/public/language/sc/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/sc/admin/menu.json
+++ b/public/language/sc/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/sc/admin/settings/email.json b/public/language/sc/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/sc/admin/settings/email.json
+++ b/public/language/sc/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/sc/admin/settings/guest.json b/public/language/sc/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/sc/admin/settings/guest.json
+++ b/public/language/sc/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/sc/admin/settings/user.json b/public/language/sc/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/sc/admin/settings/user.json
+++ b/public/language/sc/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/sc/flags.json b/public/language/sc/flags.json
index 10698842cc..13b3567bc9 100644
--- a/public/language/sc/flags.json
+++ b/public/language/sc/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/sc/groups.json b/public/language/sc/groups.json
index 132200d213..ff52b35c08 100644
--- a/public/language/sc/groups.json
+++ b/public/language/sc/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Member Count",
"details.creation_date": "Creation Date",
"details.description": "Description",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/sc/notifications.json b/public/language/sc/notifications.json
index e80a740a95..590e3aeb62 100644
--- a/public/language/sc/notifications.json
+++ b/public/language/sc/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/sc/register.json b/public/language/sc/register.json
index ace93cd271..aae9890c96 100644
--- a/public/language/sc/register.json
+++ b/public/language/sc/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "So de acòrdiu cun is Tèrmines de Impreu",
"terms_of_use_error": "You must agree to the Terms of Use",
"registration-added-to-queue": "Your registration has been added to the approval queue. You will receive an email when it is accepted by an administrator.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "We require some additional information before we can create your account.",
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json
index f362bdf565..9c4fd5ce6d 100644
--- a/public/language/sc/topic.json
+++ b/public/language/sc/topic.json
@@ -30,6 +30,7 @@
"locked": "Locked",
"pinned": "Pinned",
"moved": "Moved",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/sc/user.json b/public/language/sc/user.json
index 6d0aa1eb09..f12f7f0100 100644
--- a/public/language/sc/user.json
+++ b/public/language/sc/user.json
@@ -123,6 +123,7 @@
"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",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to",
"follow_topics_you_create": "Watch topics you create",
diff --git a/public/language/sc/users.json b/public/language/sc/users.json
index 12435abb9c..fc7da3fa35 100644
--- a/public/language/sc/users.json
+++ b/public/language/sc/users.json
@@ -11,6 +11,7 @@
"online-only": "Online only",
"invite": "Invite",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "An invitation email has been sent to %1",
"user_list": "User List",
"recent_topics": "Recent Topics",
diff --git a/public/language/sk/admin/manage/privileges.json b/public/language/sk/admin/manage/privileges.json
index e97715d9ab..45f4974589 100644
--- a/public/language/sk/admin/manage/privileges.json
+++ b/public/language/sk/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Nahrať súbory",
"signature": "Podpis",
"ban": "Zablokovať",
+ "invite": "Invite",
"search-content": "Vyhľadať obsah",
"search-users": "Vyhľadať používateľov",
"search-tags": "Vyhľadať značky",
diff --git a/public/language/sk/admin/menu.json b/public/language/sk/admin/menu.json
index cd6f339da9..563c930e55 100644
--- a/public/language/sk/admin/menu.json
+++ b/public/language/sk/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Stránkovanie",
"settings/tags": "Značky",
"settings/notifications": "Oznámenia",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Coockie",
diff --git a/public/language/sk/admin/settings/email.json b/public/language/sk/admin/settings/email.json
index ed440bb848..35fc262867 100644
--- a/public/language/sk/admin/settings/email.json
+++ b/public/language/sk/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Nasledujúce e-mailové adresy budú zobrazené príjemcovi v políčkach 'Od' a 'Odpovedať'.",
"from": "Meno - od",
"from-help": "Zobrazené meno v e-maily v - Od",
-
+
"smtp-transport": "Prenos SMTP",
"smtp-transport.enabled": "Pre odosielanie e-mailov použiť externý e-mailový server",
"smtp-transport-help": "Zo zoznamu môžete vybrať známe služby alebo zadať vlastné.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/sk/admin/settings/guest.json b/public/language/sk/admin/settings/guest.json
index bd342391fb..760cd59c8b 100644
--- a/public/language/sk/admin/settings/guest.json
+++ b/public/language/sk/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Zaobchádzanie s hosťami",
+ "settings": "Settings",
"handles.enabled": "Povoliť upravovanie zaobchádzania s hosťami",
"handles.enabled-help": "Táto možnosť odkryje nové pole, ktoré umožňuje hosťom vybrať meno, ktoré sa pripojí ku každému príspevku, ktorý vytvorí. Ak bude zakázané, budú jednoducho nazývaní 'Hosť'",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/sk/admin/settings/user.json b/public/language/sk/admin/settings/user.json
index 5450ec2d0d..7c4d0a5c1e 100644
--- a/public/language/sk/admin/settings/user.json
+++ b/public/language/sk/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Bez registrácie",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximálny počet pozvánok na používateľa",
"max-invites": "Maximálny počet pozvánok na používateľa",
"max-invites-help": "0 pre neobmedzené. Správcovia majú neobmedzene pozvánky
Použiteľné iba pre „Iba pozvané“",
@@ -62,6 +65,7 @@
"restrict-chat": "Povoliť správy konverzácie iba od používateľov, ktorých sledujem",
"outgoing-new-tab": "Otvoriť odchádzajúce odkazy v novom liste",
"topic-search": "Povoliť vyhľadávanie v témach",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Prihlásiť k prehľadu",
"digest-freq.off": "Vypnuté",
"digest-freq.daily": "Denne",
diff --git a/public/language/sk/flags.json b/public/language/sk/flags.json
index bf24b2dfa8..f328f60e18 100644
--- a/public/language/sk/flags.json
+++ b/public/language/sk/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Nahlásiť nevhodný obsah",
+ "modal-title": "Report Content",
"modal-body": "Zadajte dôvod, pre ktorý chcete označiť %1 %2 na kontrolu. Prípadne použite jedno z tlačidiel rýchleho hlásenia, ak je to vhodné.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Urážlivý",
diff --git a/public/language/sk/groups.json b/public/language/sk/groups.json
index defc8cdad5..01e407c012 100644
--- a/public/language/sk/groups.json
+++ b/public/language/sk/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Počet členov",
"details.creation_date": "Dátum vytvorenia",
"details.description": "Popis",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Náhľad odznaku",
"details.change_icon": "Zmeniť ikonu",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/sk/notifications.json b/public/language/sk/notifications.json
index 04d86ca116..ef9f509cff 100644
--- a/public/language/sk/notifications.json
+++ b/public/language/sk/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Ak Vás začne niekto sledovať",
"notificationType_new-chat": "Ak obdržíte novú správu konverzácie",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Ak obdržíte pozvanie do skupiny",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "Ak bude niekto pridaný do registračnej fronty",
diff --git a/public/language/sk/register.json b/public/language/sk/register.json
index 037360252c..69d7e7c682 100644
--- a/public/language/sk/register.json
+++ b/public/language/sk/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Súhlasím s podmienkami používania",
"terms_of_use_error": "Musíte súhlasiť s podmienkami použitia",
"registration-added-to-queue": "Vaša registrácia bola pridaná do fronty na schválenie. Obdržíte e-mail, keď Vaša registrácia bude prijatá správcom.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Pred vytvorením účtu požadujeme nejaké dodatočné informácie.",
"interstitial.errors-found": "Nepodarilo sa nám dokončiť Vašu registráciu:",
"gdpr_agree_data": "Dávam súhlas so zberom a spracovaním mojich osobných údajov na tejto webovej stránke.",
diff --git a/public/language/sk/topic.json b/public/language/sk/topic.json
index c4c5ce68c9..d63f25d323 100644
--- a/public/language/sk/topic.json
+++ b/public/language/sk/topic.json
@@ -30,6 +30,7 @@
"locked": "Uzamknuté",
"pinned": "Pripnuté",
"moved": "Presunuté",
+ "moved-from": "Moved from %1",
"copy-ip": "Kopírovať IP adresu",
"ban-ip": "Zablokovať IP adresu",
"view-history": "Upraviť históriu",
diff --git a/public/language/sk/user.json b/public/language/sk/user.json
index dc43964955..25c1bf4629 100644
--- a/public/language/sk/user.json
+++ b/public/language/sk/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Otvárať odchádzajúce odkazy v novom liste",
"enable_topic_searching": "Povoliť vyhľadávanie priamo v téme",
"topic_search_help": "Ak je funkcia povolená, predvolené nastavenia vyhľadávania v prehliadači budú pre nastavené, a umožnia Vám prechádzať cez všetky vstupy, nie iba cez tie, ktoré budú zobrazené na obrazovke",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Po odoslaní odpovede, ukázať nový príspevok",
"follow_topics_you_reply_to": "Sledovať témy na ktoré ste odpovedali",
"follow_topics_you_create": "Sledovať témy ktoré ste vytvorili",
diff --git a/public/language/sk/users.json b/public/language/sk/users.json
index 83c2725c79..e048857532 100644
--- a/public/language/sk/users.json
+++ b/public/language/sk/users.json
@@ -11,6 +11,7 @@
"online-only": "Iba pripojený",
"invite": "Pozvať",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "E-mailová pozvánka bola odoslaná na adresu %1",
"user_list": "Zoznam používateľov",
"recent_topics": "Nedávne témy",
diff --git a/public/language/sl/admin/manage/privileges.json b/public/language/sl/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/sl/admin/manage/privileges.json
+++ b/public/language/sl/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/sl/admin/menu.json b/public/language/sl/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/sl/admin/menu.json
+++ b/public/language/sl/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/sl/admin/settings/email.json b/public/language/sl/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/sl/admin/settings/email.json
+++ b/public/language/sl/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/sl/admin/settings/guest.json b/public/language/sl/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/sl/admin/settings/guest.json
+++ b/public/language/sl/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/sl/admin/settings/user.json b/public/language/sl/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/sl/admin/settings/user.json
+++ b/public/language/sl/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/sl/flags.json b/public/language/sl/flags.json
index 10698842cc..13b3567bc9 100644
--- a/public/language/sl/flags.json
+++ b/public/language/sl/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/sl/groups.json b/public/language/sl/groups.json
index 0e1291951d..c911313994 100644
--- a/public/language/sl/groups.json
+++ b/public/language/sl/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Število članov",
"details.creation_date": "Datum nastanka",
"details.description": "Opis skupine",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Predogled značke",
"details.change_icon": "Zamenjaj ikono",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/sl/notifications.json b/public/language/sl/notifications.json
index 418a4db93e..9cf0a326b4 100644
--- a/public/language/sl/notifications.json
+++ b/public/language/sl/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "When someone starts following you",
"notificationType_new-chat": "When you receive a chat message",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "When you receive a group invite",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "When someone gets added to registration queue",
diff --git a/public/language/sl/register.json b/public/language/sl/register.json
index f0d67e5400..d4e73e470b 100644
--- a/public/language/sl/register.json
+++ b/public/language/sl/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Strinjam se s pogoji uporabe.",
"terms_of_use_error": "S pogoji uporabe se morate strinjati.",
"registration-added-to-queue": "Registracija uporabniškega profila poteka. Ob potrditvi skrbnika boste v svoj e-poštni predal prejeli sporočilo.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Preden ustvarimo vaš račun, potrebujemo nekaj dodatnih informacij.",
"interstitial.errors-found": "Vaše registracije ne moremo dokončati:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/sl/topic.json b/public/language/sl/topic.json
index 494c0e25af..3ed9160fd8 100644
--- a/public/language/sl/topic.json
+++ b/public/language/sl/topic.json
@@ -30,6 +30,7 @@
"locked": "Zaklenjeno",
"pinned": "Pripeto",
"moved": "Premaknjeno",
+ "moved-from": "Moved from %1",
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
diff --git a/public/language/sl/user.json b/public/language/sl/user.json
index 2ebf3ef9a4..4a5002ccad 100644
--- a/public/language/sl/user.json
+++ b/public/language/sl/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Zunanje povezave odpri v novem zavihku",
"enable_topic_searching": "Omogoči iskanje znotraj teme",
"topic_search_help": "Če omogočite, bo iskanje prepisalo brskalnikove prevzete nastavitve in vam omogočilo iskanje skozi celotno temo.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Spremljanj teme, na katere si odgovoril",
"follow_topics_you_create": "Spremljanj teme, ki si jih ustvaril",
diff --git a/public/language/sl/users.json b/public/language/sl/users.json
index baa6f6488a..724ef7edaa 100644
--- a/public/language/sl/users.json
+++ b/public/language/sl/users.json
@@ -11,6 +11,7 @@
"online-only": "Samo dosegljivi",
"invite": "Povabi",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Povabilo je bilo poslano na e-mail naslov %1",
"user_list": "Sezam uporabnikov",
"recent_topics": "Zadnje teme",
diff --git a/public/language/sr/admin/manage/privileges.json b/public/language/sr/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/sr/admin/manage/privileges.json
+++ b/public/language/sr/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/sr/admin/menu.json b/public/language/sr/admin/menu.json
index 31a2835ff5..ad7b1c27bf 100644
--- a/public/language/sr/admin/menu.json
+++ b/public/language/sr/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifikacije",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/sr/admin/settings/email.json b/public/language/sr/admin/settings/email.json
index 31274349b9..d7f907b94f 100644
--- a/public/language/sr/admin/settings/email.json
+++ b/public/language/sr/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Označena email adresa se odnosi na email koga će primalac videti \"Od\" i \"Odgovori\" poljima.",
"from": "Od koga",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Molim unesite broj koji označava satnicu kada da pošalje zakazani sažeti email (nrp. 0 za ponoć, 17 za 5:00 pm). Uzmite u obzir da će se slanje događati po satnici samog servara, i da vrlo verovatno se ne poklapa sa satnicom vašeg sistema.
Trenutno vreme servera je:
Sledeći dnevni sažeti email zakazan je za slanje u "
+ "subscriptions.hour-help": "Molim unesite broj koji označava satnicu kada da pošalje zakazani sažeti email (nrp. 0 za ponoć, 17 za 5:00 pm). Uzmite u obzir da će se slanje događati po satnici samog servara, i da vrlo verovatno se ne poklapa sa satnicom vašeg sistema.
Trenutno vreme servera je:
Sledeći dnevni sažeti email zakazan je za slanje u ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/sr/admin/settings/guest.json b/public/language/sr/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/sr/admin/settings/guest.json
+++ b/public/language/sr/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/sr/admin/settings/user.json b/public/language/sr/admin/settings/user.json
index f6f4be69d3..81383b8a0f 100644
--- a/public/language/sr/admin/settings/user.json
+++ b/public/language/sr/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Nema registracije",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maksimum poziva po korisniku.",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 za bez restrikcija. Administratori dobijaju bezgranično pozivnica
Samo određeni za \"Samo pozivnica\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Samo dozvoli chat poruke korisnika koje ja pratim",
"outgoing-new-tab": "Otvori odlazeće linove u novom tabu",
"topic-search": "Omogući pretraživanje u temi",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Pretplatite se na Digest",
"digest-freq.off": "Isključeno",
"digest-freq.daily": "Dnevno",
diff --git a/public/language/sr/flags.json b/public/language/sr/flags.json
index f1b3b808db..3d9c10a421 100644
--- a/public/language/sr/flags.json
+++ b/public/language/sr/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Пријави неприкладан садржај",
+ "modal-title": "Report Content",
"modal-body": "Наведите разлог за означавање %1 %2 за проверу. Алтернативно, користите један од тастера за брзу пријаву ко је применљиво.",
"modal-reason-spam": "Непожељно",
"modal-reason-offensive": "Увредљиво",
diff --git a/public/language/sr/groups.json b/public/language/sr/groups.json
index b0dc8097cf..94698635ff 100644
--- a/public/language/sr/groups.json
+++ b/public/language/sr/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Број чланова",
"details.creation_date": "Датум настанка",
"details.description": "Опис",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Приказ беџа",
"details.change_icon": "Промени икону",
"details.change_label_colour": "Промени боју ознаке",
diff --git a/public/language/sr/notifications.json b/public/language/sr/notifications.json
index 0f1bbc6527..2431eef20e 100644
--- a/public/language/sr/notifications.json
+++ b/public/language/sr/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Када је порука уређена у теми коју надгледате",
"notificationType_follow": "Када неко почне да вас прати",
"notificationType_new-chat": "Када примите поруку за ћаскање",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Када примите позивницу за групу",
"notificationType_group-request-membership": "Када неко затражи да се придружи групи коју поседујете",
"notificationType_new-register": "Када је неко додат на чекање за регистрацију",
diff --git a/public/language/sr/register.json b/public/language/sr/register.json
index e02ca02353..3097047e98 100644
--- a/public/language/sr/register.json
+++ b/public/language/sr/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Слажем се са условима коришћења",
"terms_of_use_error": "Морате се сложити са условима коришћења",
"registration-added-to-queue": "Ваша регистрација је додата у ред одобравања. Добићете е-пошту када администратор прихвати вашу регистрацију.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Захтевамо неке додатне информације пре него што отворимо ваш налог.",
"interstitial.errors-found": "Нисмо могли комплетирати вашу регистрацију:",
"gdpr_agree_data": "Пристајем на прикупљање и обраду мојих личних података на овој веб страници.",
diff --git a/public/language/sr/topic.json b/public/language/sr/topic.json
index e002fa1f8f..affe0651c4 100644
--- a/public/language/sr/topic.json
+++ b/public/language/sr/topic.json
@@ -30,6 +30,7 @@
"locked": "Закључано",
"pinned": "Закачено",
"moved": "Премештено",
+ "moved-from": "Moved from %1",
"copy-ip": "Копирај IP",
"ban-ip": "Бануј IP",
"view-history": "Уреди историју",
diff --git a/public/language/sr/user.json b/public/language/sr/user.json
index b809883743..04cefc151f 100644
--- a/public/language/sr/user.json
+++ b/public/language/sr/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Отвори одлазне везе у новој картици",
"enable_topic_searching": "Омогући претрагу унутар тема",
"topic_search_help": "Ако је омогућено, претраживање унутар тема ће прегазити подразумевано понашање претраге страница и омогућити претрагу целе теме уместо само оног што је приказано на екрану",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Након објављивања одговора, прикажи нову поруку",
"follow_topics_you_reply_to": "Надгледај теме у којима си одговорио",
"follow_topics_you_create": "Надгледај теме које си креирао",
diff --git a/public/language/sr/users.json b/public/language/sr/users.json
index 08701614e0..0c43f6815e 100644
--- a/public/language/sr/users.json
+++ b/public/language/sr/users.json
@@ -11,6 +11,7 @@
"online-only": "Само корисници на мрежи",
"invite": "Позови",
"prompt-email": "Е-поштe:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Е-пошта са позивом је послата на %1",
"user_list": "Листа корисника",
"recent_topics": "Недавне теме",
diff --git a/public/language/sv/admin/admin.json b/public/language/sv/admin/admin.json
index 7a057d636c..b68973378d 100644
--- a/public/language/sv/admin/admin.json
+++ b/public/language/sv/admin/admin.json
@@ -1,5 +1,5 @@
{
- "alert.confirm-rebuild-and-restart": "Är du säker på att du vill bygga och starta om NodeBB?",
+ "alert.confirm-rebuild-and-restart": "Är du säker på att du vill ombygga och starta om NodeBB?",
"alert.confirm-restart": "Är du säker på att du vill starta om NodeBB?",
"acp-title": "%1 | NodeBB Admin Kontrollpanel",
diff --git a/public/language/sv/admin/advanced/cache.json b/public/language/sv/admin/advanced/cache.json
index 2fd7984883..5be0b1378b 100644
--- a/public/language/sv/admin/advanced/cache.json
+++ b/public/language/sv/admin/advanced/cache.json
@@ -1,6 +1,6 @@
{
- "post-cache": "Post Cache",
+ "post-cache": "Inläggscache",
"percent-full": "%1% Full",
- "post-cache-size": "Post Cache Size",
- "items-in-cache": "Items in Cache"
+ "post-cache-size": "Storlek på inläggscache",
+ "items-in-cache": "Föremål i cache"
}
\ No newline at end of file
diff --git a/public/language/sv/admin/advanced/database.json b/public/language/sv/admin/advanced/database.json
index 9167b381ed..d815e3acef 100644
--- a/public/language/sv/admin/advanced/database.json
+++ b/public/language/sv/admin/advanced/database.json
@@ -2,34 +2,34 @@
"x-b": "%1 b",
"x-mb": "%1 mb",
"x-gb": "%1 gb",
- "uptime-seconds": "Uptime in Seconds",
- "uptime-days": "Uptime in Days",
+ "uptime-seconds": "Driftstid i sekunder",
+ "uptime-days": "Driftstid i dagar",
"mongo": "Mongo",
"mongo.version": "MongoDB Version",
- "mongo.storage-engine": "Storage Engine",
- "mongo.collections": "Collections",
- "mongo.objects": "Objects",
- "mongo.avg-object-size": "Avg. Object Size",
- "mongo.data-size": "Data Size",
- "mongo.storage-size": "Storage Size",
- "mongo.index-size": "Index Size",
- "mongo.file-size": "File Size",
+ "mongo.storage-engine": "Lagringsmotor",
+ "mongo.collections": "Samlingar",
+ "mongo.objects": "Objekt",
+ "mongo.avg-object-size": "Genomsnittlig Objektstorlek",
+ "mongo.data-size": "Datastorlek",
+ "mongo.storage-size": "Förvaringsstorlek",
+ "mongo.index-size": "Indexstorlek",
+ "mongo.file-size": "Filstorlek",
"mongo.resident-memory": "Resident Memory",
- "mongo.virtual-memory": "Virtual Memory",
- "mongo.mapped-memory": "Mapped Memory",
+ "mongo.virtual-memory": "Virtuellt minne",
+ "mongo.mapped-memory": "Mappat minne",
"mongo.bytes-in": "Bytes In",
"mongo.bytes-out": "Bytes Out",
- "mongo.num-requests": "Number of Requests",
+ "mongo.num-requests": "Antal förfrågningar",
"mongo.raw-info": "MongoDB Raw Info",
- "mongo.unauthorized": "NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the "clusterMonitor" role for the "admin" database.",
+ "mongo.unauthorized": "NodeBB kunde inte fråga MongoDB-databasen för relevant statistik. Se till att användaren av NodeBB inkluderar "clusterMonitor" role for the "admin"databas.",
"redis": "Redis",
"redis.version": "Redis Version",
- "redis.keys": "Keys",
- "redis.expires": "Expires",
- "redis.avg-ttl": "Average TTL",
- "redis.connected-clients": "Connected Clients",
+ "redis.keys": "Nycklar",
+ "redis.expires": "Upphör att gälla",
+ "redis.avg-ttl": "Genomsnittlig TTL",
+ "redis.connected-clients": "Anslutna klienter",
"redis.connected-slaves": "Connected Slaves",
"redis.blocked-clients": "Blocked Clients",
"redis.used-memory": "Used Memory",
diff --git a/public/language/sv/admin/manage/privileges.json b/public/language/sv/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/sv/admin/manage/privileges.json
+++ b/public/language/sv/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/sv/admin/menu.json b/public/language/sv/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/sv/admin/menu.json
+++ b/public/language/sv/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/sv/admin/settings/email.json b/public/language/sv/admin/settings/email.json
index d2136c2ef3..8f11cd9449 100644
--- a/public/language/sv/admin/settings/email.json
+++ b/public/language/sv/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Epostsammandrag",
"subscriptions.disable": "Avaktivera epostsammandrag",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/sv/admin/settings/guest.json b/public/language/sv/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/sv/admin/settings/guest.json
+++ b/public/language/sv/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/sv/admin/settings/user.json b/public/language/sv/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/sv/admin/settings/user.json
+++ b/public/language/sv/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/sv/flags.json b/public/language/sv/flags.json
index c4b915ea26..4a617433ad 100644
--- a/public/language/sv/flags.json
+++ b/public/language/sv/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Rapportera opassande innehåll",
+ "modal-title": "Report Content",
"modal-body": "Vänligen ange anledningen till att du flaggar %1 %2 för granskning. Alternativt, använd en av snabbrapporteringsknapparna.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Kränkande",
diff --git a/public/language/sv/groups.json b/public/language/sv/groups.json
index ba34743a8e..338272ecc3 100644
--- a/public/language/sv/groups.json
+++ b/public/language/sv/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Medlemsantal",
"details.creation_date": "Skapardatum",
"details.description": "Beskrivning",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Förhandsgranskning av märke",
"details.change_icon": "Byt ikon",
"details.change_label_colour": "Ändra etikettfärg",
diff --git a/public/language/sv/notifications.json b/public/language/sv/notifications.json
index 500602ade4..14fabefc9a 100644
--- a/public/language/sv/notifications.json
+++ b/public/language/sv/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "När någon börjar följa dig",
"notificationType_new-chat": "När du får ett chattmeddelande",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "När du får en gruppinbjudan",
"notificationType_group-request-membership": "När någon ber om att få gå med i en grupp du äger",
"notificationType_new-register": "När någon läggs till i registreringskön",
diff --git a/public/language/sv/register.json b/public/language/sv/register.json
index 1bca6a1d27..081513e301 100644
--- a/public/language/sv/register.json
+++ b/public/language/sv/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Jag godkänner användarvillkoren",
"terms_of_use_error": "Du måste godkänna användarvillkoren",
"registration-added-to-queue": "Din registrering har lagts till i kön. Du kommer att få ett mail när den accepteras av en administratör.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Vi behöver ytterligare information innan vi kan skapa ditt konto.",
"interstitial.errors-found": "Vi kunde inte slutföra din registrering:",
"gdpr_agree_data": "Jag ger detta forum mitt medgivande att samla in och behandla min personliga information.",
diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json
index 1e876d6a36..197d235d3e 100644
--- a/public/language/sv/topic.json
+++ b/public/language/sv/topic.json
@@ -30,6 +30,7 @@
"locked": "Låst",
"pinned": "Fäst",
"moved": "Flyttad",
+ "moved-from": "Moved from %1",
"copy-ip": "Kopiera IP",
"ban-ip": "Banna IP",
"view-history": "Redigera historik",
diff --git a/public/language/sv/user.json b/public/language/sv/user.json
index 78fa336fab..1de5867af5 100644
--- a/public/language/sv/user.json
+++ b/public/language/sv/user.json
@@ -110,7 +110,7 @@
"topics_per_page": "Ämnen per sida",
"posts_per_page": "Inlägg per sida",
"max_items_per_page": "Maximalt %1",
- "acp_language": "Språk för administratorsida",
+ "acp_language": "Språk för administratörssida",
"notifications": "Notifications",
"upvote-notif-freq": "Notisfrekvens för uppröstningar",
"upvote-notif-freq.all": "Alla uppröstningar",
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Öppna utgående länkar i ny flik",
"enable_topic_searching": "Aktivera sökning inom ämne",
"topic_search_help": "Om aktiverat kommer sökning inom ämne överskrida webbläsarens vanliga funktionen för sökning bland sidor och tillåta dig att söka genom hela ämnet istället för det som endast visas på skärmen.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Visa det nya inlägget när ett svar har postats",
"follow_topics_you_reply_to": "Bevaka ämnen som du svarat på",
"follow_topics_you_create": "Bevaka ämnen som du skapat",
diff --git a/public/language/sv/users.json b/public/language/sv/users.json
index e65496e4d4..f00e585369 100644
--- a/public/language/sv/users.json
+++ b/public/language/sv/users.json
@@ -11,6 +11,7 @@
"online-only": "Endast online",
"invite": "Bjud in",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "En inbjudan har skickats till %1",
"user_list": "Användarlista",
"recent_topics": "Senaste ämnen",
diff --git a/public/language/th/admin/manage/privileges.json b/public/language/th/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/th/admin/manage/privileges.json
+++ b/public/language/th/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/th/admin/menu.json b/public/language/th/admin/menu.json
index b6a38f0d0e..01cc355fa1 100644
--- a/public/language/th/admin/menu.json
+++ b/public/language/th/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/th/admin/settings/email.json b/public/language/th/admin/settings/email.json
index f6ade9cfc9..839fd2b6f6 100644
--- a/public/language/th/admin/settings/email.json
+++ b/public/language/th/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/th/admin/settings/guest.json b/public/language/th/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/th/admin/settings/guest.json
+++ b/public/language/th/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/th/admin/settings/user.json b/public/language/th/admin/settings/user.json
index 9933184b3b..f5c770fe26 100644
--- a/public/language/th/admin/settings/user.json
+++ b/public/language/th/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "ทุกวัน",
diff --git a/public/language/th/flags.json b/public/language/th/flags.json
index eabb76398c..bddef72f81 100644
--- a/public/language/th/flags.json
+++ b/public/language/th/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "รายงานเนื้อหาไม่เหมาะสม",
+ "modal-title": "Report Content",
"modal-body": "กรุณาระเหตุผลสำหรับการปักธง %1 %2 สำหรับการรีวิว หรือไม่ก็ใช้หนึ่งในปุ่มกดรายงานด่วนถ้าเป็นไปได้",
"modal-reason-spam": "สแปม",
"modal-reason-offensive": "น่ารังเกียจ",
diff --git a/public/language/th/groups.json b/public/language/th/groups.json
index 6488e3f794..4ebfe74b71 100644
--- a/public/language/th/groups.json
+++ b/public/language/th/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "จำนวนสมาชิก",
"details.creation_date": "สร้างวันที่",
"details.description": "คำอธิบาย",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "สัญลักษณ์พรีวิว",
"details.change_icon": "เปลี่ยนไอคอน",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/th/notifications.json b/public/language/th/notifications.json
index 5d8b12583e..b076ad1697 100644
--- a/public/language/th/notifications.json
+++ b/public/language/th/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "เมื่อมีคนติดตามคุณ",
"notificationType_new-chat": "เมื่อคุณได้รับข้อความใหม่",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "เมื่อคุณได้รับเชิญเข้ากลุ่ม",
"notificationType_group-request-membership": "When someone requests to join a group you own",
"notificationType_new-register": "เมื่อมีคนถูกเพิ่มในคิวลงทะเบียน",
diff --git a/public/language/th/register.json b/public/language/th/register.json
index 16058d7f7e..7aad308962 100644
--- a/public/language/th/register.json
+++ b/public/language/th/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "ยอมรับข้อตกลงในการใช้งาน",
"terms_of_use_error": "คุณต้องยอมรับเงื่อนไขการใช้งานก่อน",
"registration-added-to-queue": "การสมัครใช้งานของถูกเพิ่มเข้าไปยังระบบเพิ่อรอการอนุมัติแล้ว คุณจะได้รับอีเมล์เมื่อการสมัครใช้งานของคุณถูกยอมรับโดยผู้ดูแลระบบหรือแอดมิน",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "เราต้องการข้อมูลบางอย่างเพิ่มเติมก่อนที่เราจะสร้างบัญชีให้คุณ",
"interstitial.errors-found": "เราไม่สามารถทำให้การสมัครสมาชิกของคุณสำเร็จได้:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
diff --git a/public/language/th/topic.json b/public/language/th/topic.json
index b66c499b54..57c29e9cf0 100644
--- a/public/language/th/topic.json
+++ b/public/language/th/topic.json
@@ -30,6 +30,7 @@
"locked": "ถูกล็อก",
"pinned": "ถูกปักหมุด",
"moved": "ถูกย้าย",
+ "moved-from": "Moved from %1",
"copy-ip": "คัดลอก IP",
"ban-ip": "แบน IP",
"view-history": "แก้ไขประวัติ",
diff --git a/public/language/th/user.json b/public/language/th/user.json
index c5dc1e5a16..e5a2db9b17 100644
--- a/public/language/th/user.json
+++ b/public/language/th/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "เปิดลิงค์ในแท็บใหม่",
"enable_topic_searching": "เปิดใช้การค้นหาแบบ In-Topic",
"topic_search_help": "หากเปิดใช้งาน, \"การค้นหาภายในกระทู้\" จะแทนที่ระบบ \"การค้นหาจากค่าเริ่มต้นของเบราเซอร์\" และจะทำให้คุณค้นหาข้อมูลต่างๆภายในกระทู้ได้ แทนที่จะเป็นการหาแค่สิ่งที่แสดงบนหน้าจอเท่านั้น",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "หลังจากได้ทำการโพสต์ตอบกลับ ให้แสดงโพสต์ใหม่",
"follow_topics_you_reply_to": "ดูกระทู้ที่คุณตอบ",
"follow_topics_you_create": "ดูกระทู้ที่คุณตั้ง",
diff --git a/public/language/th/users.json b/public/language/th/users.json
index 0502bcb49a..3a70f2ca7c 100644
--- a/public/language/th/users.json
+++ b/public/language/th/users.json
@@ -11,6 +11,7 @@
"online-only": "กำลังออนไลน์เท่านั้น",
"invite": "เชิญ",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "อีเมลคำเชิญถูกส่งไปยัง %1 เรียบร้อย",
"user_list": "รายการผู้ใช้",
"recent_topics": "กระทู้ล่าสุด",
diff --git a/public/language/tr/admin/manage/privileges.json b/public/language/tr/admin/manage/privileges.json
index 7f242b6951..821d8607bf 100644
--- a/public/language/tr/admin/manage/privileges.json
+++ b/public/language/tr/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Dosya Yükle",
"signature": "İmza",
"ban": "Ban",
+ "invite": "Davet et",
"search-content": "İçerik Arama",
"search-users": "Kullanıcıları Ara",
"search-tags": "Etiketleri Ara",
diff --git a/public/language/tr/admin/menu.json b/public/language/tr/admin/menu.json
index b6c6293d40..7ead54cb9e 100644
--- a/public/language/tr/admin/menu.json
+++ b/public/language/tr/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Sayfalama",
"settings/tags": "Etiketler",
"settings/notifications": "Bildirimler",
+ "settings/api": "API Erişimi",
"settings/sounds": "Sesler",
"settings/social": "Sosyal",
"settings/cookies": "Çerezler",
@@ -70,7 +71,7 @@
"logout": "Çıkış",
"view-forum": "Forumu Görüntüle",
- "search.placeholder": "Press "/" to search for settings",
+ "search.placeholder": "Ayarları aramak için "/" işaretine tıklayın",
"search.no-results": "Sonuç yok...",
"search.search-forum": "Forumda ara: ",
"search.keep-typing": "Sonuçları görmek için daha fazla yazın...",
diff --git a/public/language/tr/admin/settings/advanced.json b/public/language/tr/admin/settings/advanced.json
index 5067ca06e4..28e2766d79 100644
--- a/public/language/tr/admin/settings/advanced.json
+++ b/public/language/tr/admin/settings/advanced.json
@@ -37,7 +37,7 @@
"analytics.settings": "Analitik Ayarlar",
"analytics.max-cache": "Analytics Cache Max Value",
"analytics.max-cache-help": "On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)",
- "compression.settings": "Compression Settings",
- "compression.enable": "Enable Compression",
+ "compression.settings": "Sıkıştırma Ayarları",
+ "compression.enable": "Sıkıştırmayı Aktifleştir",
"compression.help": "This setting enables gzip compression. For a high-traffic website in production, the best way to put compression in place is to implement it at a reverse proxy level. You can enable it here for testing purposes."
}
\ No newline at end of file
diff --git a/public/language/tr/admin/settings/api.json b/public/language/tr/admin/settings/api.json
index ba7d964a04..ede02cd927 100644
--- a/public/language/tr/admin/settings/api.json
+++ b/public/language/tr/admin/settings/api.json
@@ -2,11 +2,11 @@
"tokens": "Tokens",
"lead-text": "From this page you can configure access to the Write API in NodeBB.",
"intro": "By default, the Write API authenticates users based on their session cookie, but NodeBB also supports Bearer authentication via tokens generated via this page.",
- "docs": "Click here to access the full API specification",
+ "docs": "Tüm API özeliklerine erişmek için buraya tıklayın. ",
- "uid": "User ID",
+ "uid": "Kullanıcı ID",
"uid-help-text": "Specify a User ID to associate with this token. If the user ID is 0, it will be considered a master token, which can assume the identity of other users based on the _uid parameter",
- "description": "Description",
- "no-description": "No description specified.",
+ "description": "Açıklama",
+ "no-description": "Hiçbir açıklama belirtilmemiş.",
"token-on-save": "Token will be generated once form is saved"
}
\ No newline at end of file
diff --git a/public/language/tr/admin/settings/email.json b/public/language/tr/admin/settings/email.json
index 6dc0d4a7b6..73e7f67d21 100644
--- a/public/language/tr/admin/settings/email.json
+++ b/public/language/tr/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Özet E-postaları",
"subscriptions.disable": "Özet e-postalarını kapat",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "E-posta bildirim seçenekleri",
+ "notifications.remove-images": "Görselleri e-posta bildirimlerinden kaldır"
}
\ No newline at end of file
diff --git a/public/language/tr/admin/settings/general.json b/public/language/tr/admin/settings/general.json
index 176df64367..7b8e876149 100644
--- a/public/language/tr/admin/settings/general.json
+++ b/public/language/tr/admin/settings/general.json
@@ -27,12 +27,12 @@
"log.alt-text-placeholder": "Erişilebilirlik için alternatif metin",
"favicon": "Favicon",
"favicon.upload": "Yükle",
- "pwa": "Progressive Web App",
- "touch-icon": "Touch Icon",
+ "pwa": "İleri Web Uygulaması",
+ "touch-icon": "Dokunma Simgesi",
"touch-icon.upload": "Yükle",
- "touch-icon.help": "Recommended size and format: 512x512, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
- "maskable-icon": "Maskable (Homescreen) Icon",
- "maskable-icon.help": "Recommended size and format: 512x512, PNG format only. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.",
+ "touch-icon.help": "Önerilen Boyut: 512x512. Önerilen format: PNG. Simge belirtilmezse varsayılan olarak favicon kullanılır.",
+ "maskable-icon": "Maskelenebilir (Ana Ekran) Simgesi",
+ "maskable-icon.help": "Önerilen boyut ve format: 512x512, PNG formatı. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.",
"outgoing-links": "Harici Bağlantılar",
"outgoing-links.warning-page": "Dışarı giden bağlantılar için uyarı sayfası kullan",
"search-default-sort-by": "Aramada varsayılan sıralama",
diff --git a/public/language/tr/admin/settings/guest.json b/public/language/tr/admin/settings/guest.json
index 5b5a112576..1362b3affb 100644
--- a/public/language/tr/admin/settings/guest.json
+++ b/public/language/tr/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Ziyaretçi Kolları",
+ "settings": "Ayarlar",
"handles.enabled": "Misafir üyelere izin ver",
"handles.enabled-help": "Bu seçenek, misafirlerin yaptıkları her gönderiyle ilişkilendirebilecekleri bir isim alanı sunar. Devre dışı bırakılırsa, gönderenin ismi basitçe \"Misafir\" olarak adlandırılacaktır.",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Ziyaretçilerin konu bakış sayısını arttırmasına izin ver",
+ "reply-notifications.enabled": "Ziyaretçilerin cevap bildirimleri oluşturmasına izin ver"
}
\ No newline at end of file
diff --git a/public/language/tr/admin/settings/post.json b/public/language/tr/admin/settings/post.json
index d91fbc1cb3..3f3b6734d5 100644
--- a/public/language/tr/admin/settings/post.json
+++ b/public/language/tr/admin/settings/post.json
@@ -35,7 +35,7 @@
"timestamp.necro-threshold": "Ardışık iletiler arasında geçen gün sayısı (Necro Sınırı)",
"timestamp.necro-threshold-help": "Eğer iki ardışık ileti arasında geçen süre Necro Sınırı'ndan fazlaysa, geçen süre yazıyla belirtilecek. (Varsayılan: 7, yani bir hafta). Etkinsizleştirmek için 0 yazınız.",
"timestamp.topic-views-interval": "Increment topic views interval (in minutes)",
- "timestamp.topic-views-interval-help": "Topic views will only increment once every X minutes as defined by this setting.",
+ "timestamp.topic-views-interval-help": "Başlıkların bakış sayısı bu ayarların belirttiği her X dakikada bir güncellenecek. ",
"teaser": "Teaser İleti",
"teaser.last-post": "Son – cevap yoksa orijinal gönderi de dahil olmak üzere en son gönderiyi gösterir.",
"teaser.last-reply": "Son – cevap yoksa en son yanıtı veya \"Yanıt yok\" yertutucusunu gösterir.",
diff --git a/public/language/tr/admin/settings/user.json b/public/language/tr/admin/settings/user.json
index 3fc9d65a9c..e3f1c18353 100644
--- a/public/language/tr/admin/settings/user.json
+++ b/public/language/tr/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Kayıt yok",
"registration-type.help": "Normal - Kullanıcılar, kayıt sayfasından kayıt olabililrler
\nDavetiye İle - Kullanıcılar, başkalarını users sayfasından davet edebilirler.
\nYönetici Davetiyesi İle - Sadece yöneticiler başkalarını users sayfasından ve admin/manage/users sayfasından davet edebilir.
\nKayıt Yok - Yeni üye kaydı kapalı
",
"registration-approval-type.help": "Normal - Kullanıcılar hemen kaydolur.
\nYönetici Onayı - Kullanıcı kayıtları, yöneticiler tarafından onaylansın diyeapproval queue sırasına konulur.
\nIP için Yönetici Onayı - Yeni Kullanıcılar için Normal Üyelik; hali hazırda kayıtlı olan IP adresleri için Yönetici Onayı
",
+ "registration-queue-auto-approve-time": "Otomatik onaylanma süresi",
+ "registration-queue-auto-approve-time-help": "Kullanıcıların otomatik onayı için geçecek süre (saat). İptal etmek için 0 yazın.",
+ "registration-queue-show-average-time": "Kullanıcılara ortalama üyelik onaylanma süresini göster",
"registration.max-invites": "Kullanıcı Başına Maksimum Davetiye",
"max-invites": "Kullanıcı Başına Maksimum Davetiye",
"max-invites-help": "Kısıtlama olmaması için 0. Yöneticiler sınırsız davetiyeye sahiptir
\"Yalnızca Davet\" seçeneği için geçerlidir",
@@ -62,6 +65,7 @@
"restrict-chat": "Sadece takip ettiğim kişilerden sohbetleri kabul et",
"outgoing-new-tab": "Dışarı giden bağlantıları yeni sekmede aç",
"topic-search": "Konu içi aramayı etkinleştir",
+ "update-url-with-post-index": "Sayfayı okurken URL bağlantısındaki ileti numarasını güncelle",
"digest-freq": "Özet e-postalarına abone ol",
"digest-freq.off": "Kapalı",
"digest-freq.daily": "Günlük",
diff --git a/public/language/tr/flags.json b/public/language/tr/flags.json
index cbf39d5d52..a7c482eaf2 100644
--- a/public/language/tr/flags.json
+++ b/public/language/tr/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "En çok artılanan",
"sort-replies": "En çok cevap verilen",
- "modal-title": "Uygunsuz İçeriği Rapor Et",
+ "modal-title": "İçeriği Şikayet Et",
"modal-body": "%1 %2 için şikayet nedenini belirtiniz. Alternatif olarak hızlı rapor butonlarından birini kullanabilirsiniz.",
"modal-reason-spam": "Gereksiz",
"modal-reason-offensive": "Saldırgan",
diff --git a/public/language/tr/groups.json b/public/language/tr/groups.json
index 6e9c6e15be..5cdffb2295 100644
--- a/public/language/tr/groups.json
+++ b/public/language/tr/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Üye Sayısı",
"details.creation_date": "Oluşturulma Tarihi",
"details.description": "Tanımlama",
+ "details.member-post-cids": "İletilerin gösterileceği kategoriler",
+ "details.member-post-cids-help": "Not: Hiçbir kategori belirtilmezse, tüm kategoriler dahil edilecek. Birden fazla kategori seçimi için ctrl ve shift tuşlarını kullanın. ",
"details.badge_preview": "Rozet Önizlemesi",
"details.change_icon": "İkonu Değiştir",
"details.change_label_colour": "Etiket Rengini Değiştir",
diff --git a/public/language/tr/notifications.json b/public/language/tr/notifications.json
index 94b065cdf2..83132c1e14 100644
--- a/public/language/tr/notifications.json
+++ b/public/language/tr/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "Takip ettiğiniz bir konudaki bir ileti değiştirildiğinde",
"notificationType_follow": "Biri sizi takip etmeye başlayınca",
"notificationType_new-chat": "Bir sohbet mesajı aldığınızda",
+ "notificationType_new-group-chat": "Grup sohbet mesajı aldığınızda",
"notificationType_group-invite": "Bir gruba katılım davetiyesi aldığınızda",
"notificationType_group-request-membership": "Biri size ait bir gruba üye olmak istediğinde",
"notificationType_new-register": "Biri kayıt kuyruğuna eklendiğinde",
diff --git a/public/language/tr/register.json b/public/language/tr/register.json
index a032e83a39..4bdfe87e1a 100644
--- a/public/language/tr/register.json
+++ b/public/language/tr/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Kullanım Şartlarını Kabul Ediyorum",
"terms_of_use_error": "Kullanım Şartlarını Kabul Etmeniz Gerekiyor",
"registration-added-to-queue": "Kayıt olma isteğiniz kabul listesine eklenmiştir. Yönetici tarafından kabul edildiğinizde e-posta alacaksınız.",
+ "registration-queue-average-time": "Üyelik onayı için bekleyeceğiniz ortalama süre: %1 saat %2 dakika.",
+ "registration-queue-auto-approve-time": "Forum üyeliğiniz %1 saat içerisinde tamamen aktifleştirilecektir. ",
"interstitial.intro": "Hesabınızı yaratmadan önce bazı ekstra bilgiler gerekiyor.",
"interstitial.errors-found": "Kaydınız tamamlanamadı:",
"gdpr_agree_data": "Bu web sitesinde kişisel bilgilerimin toplanmasını ve işlenmesini kabul ediyorum.",
diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json
index 0060b36557..cb7a6e3cff 100644
--- a/public/language/tr/topic.json
+++ b/public/language/tr/topic.json
@@ -30,6 +30,7 @@
"locked": "Kilitli",
"pinned": "Sabitlendi",
"moved": "Taşındı",
+ "moved-from": "Şuradan taşındı: %1",
"copy-ip": "IP Kopyala",
"ban-ip": "IP Yasakla",
"view-history": "Geçmişi Düzenle",
diff --git a/public/language/tr/user.json b/public/language/tr/user.json
index 12de222a48..73cc7d081e 100644
--- a/public/language/tr/user.json
+++ b/public/language/tr/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Dışarı giden bağlantıları yeni sekmede aç",
"enable_topic_searching": "Konu içi aramayı aktive et",
"topic_search_help": "Aktive edilirse, konu içi arama tarayıcının normal arama davranışını değiştirerek tüm konuyu aramanızı sağlar",
+ "update_url_with_post_index": "Sayfayı okurken URL bağlantısındaki ileti numarasını güncelle",
"scroll_to_my_post": "Cevap yazdıktan sonra yeni iletiyi göster",
"follow_topics_you_reply_to": "Cevap verdiğim başlıkları takip et",
"follow_topics_you_create": "Oluşturduğum başlıkları takip et",
diff --git a/public/language/tr/users.json b/public/language/tr/users.json
index 0c53f06001..fb539f9bdf 100644
--- a/public/language/tr/users.json
+++ b/public/language/tr/users.json
@@ -11,6 +11,7 @@
"online-only": "Sadece çevrimiçi",
"invite": "Davet et",
"prompt-email": "Eposta:",
+ "groups-to-join": "Davet kabul edildiğinde katılacağınız gruplar:",
"invitation-email-sent": "%1'e bir davet e-posta'sı gönderildi",
"user_list": "Kullanıcı Listesi",
"recent_topics": "Güncel Konular",
diff --git a/public/language/uk/admin/manage/privileges.json b/public/language/uk/admin/manage/privileges.json
index 0ef6d52b5f..08558a58bd 100644
--- a/public/language/uk/admin/manage/privileges.json
+++ b/public/language/uk/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Завантаження Файлів",
"signature": "Підпис",
"ban": "Бан",
+ "invite": "Invite",
"search-content": "Шукати Зміст",
"search-users": "Шукати Користувачів",
"search-tags": "Шукати Теги",
diff --git a/public/language/uk/admin/menu.json b/public/language/uk/admin/menu.json
index 768cc2cb5e..a35ee7b508 100644
--- a/public/language/uk/admin/menu.json
+++ b/public/language/uk/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Пагінація",
"settings/tags": "Теги",
"settings/notifications": "Сповіщення",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Куки",
diff --git a/public/language/uk/admin/settings/email.json b/public/language/uk/admin/settings/email.json
index bd74d9d519..e8171e17e0 100644
--- a/public/language/uk/admin/settings/email.json
+++ b/public/language/uk/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "Отримувачі будуть бачити цю адресу в полях \"From\" та \"Reply To\".",
"from": "Ім'я відправника",
"from-help": "Ім'я відправника, що буде показано в електронних листах",
-
+
"smtp-transport": "Протокол SMTP",
"smtp-transport.enabled": "Використовувати зовнішній поштовий сервер для відправлення повідомлень",
"smtp-transport-help": "Ви можете обрати поштовий сервіс зі списку або використати ваш власний сервіс.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Година дайджесту",
- "subscriptions.hour-help": "Вкажіть, будь ласка, годину о котрій кожного дня буде надсилатися дайджест (наприклад 0 — це північ, а 17 — п'ята година вечора). Зверніть увагу, що година визначається згідно налаштувань сервера і може не співпадати з часом вашого комп'ютера.
Приблизний час сервера:
Наступний дайджест заплановано до відправки "
+ "subscriptions.hour-help": "Вкажіть, будь ласка, годину о котрій кожного дня буде надсилатися дайджест (наприклад 0 — це північ, а 17 — п'ята година вечора). Зверніть увагу, що година визначається згідно налаштувань сервера і може не співпадати з часом вашого комп'ютера.
Приблизний час сервера:
Наступний дайджест заплановано до відправки ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/uk/admin/settings/guest.json b/public/language/uk/admin/settings/guest.json
index 8d54dcfa67..1e439e53a6 100644
--- a/public/language/uk/admin/settings/guest.json
+++ b/public/language/uk/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Гостьові імена",
+ "settings": "Settings",
"handles.enabled": "Дозволити гостьові імена",
"handles.enabled-help": "Ця опція надає додаткове поле, що дозволяє гостям обрати собі ім'я для кожного посту. Якщо вимкнено, вони будуть просто зватися \"Гість\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/uk/admin/settings/user.json b/public/language/uk/admin/settings/user.json
index a4d69987fd..8d4cca735a 100644
--- a/public/language/uk/admin/settings/user.json
+++ b/public/language/uk/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "Без реєстрації",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Кількість запрошень на користувача",
"max-invites": "Кількість запрошень на користувача",
"max-invites-help": "0 — без обмежень. Адміни отримуют необмежену кількість.
Працює лише з типом реєстрації \"По запрошенню\".",
@@ -62,6 +65,7 @@
"restrict-chat": "Дозволяти чат повідомлення лише від користувачів за якими я стежу",
"outgoing-new-tab": "Відкривати зовнішні посилання у новій вкладці",
"topic-search": "Увімкнути пошук у темах",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Підписатися на дайджест",
"digest-freq.off": "Ніколи",
"digest-freq.daily": "Щоденно",
diff --git a/public/language/uk/groups.json b/public/language/uk/groups.json
index 2254fbac27..9d6a75c26e 100644
--- a/public/language/uk/groups.json
+++ b/public/language/uk/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Кількість учасників",
"details.creation_date": "Дата створення",
"details.description": "Опис",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Попередній перегляд бейджа",
"details.change_icon": "Змінити іконку",
"details.change_label_colour": "Змінити колір позначки",
diff --git a/public/language/uk/notifications.json b/public/language/uk/notifications.json
index eef2ab42a1..7656fcbb5e 100644
--- a/public/language/uk/notifications.json
+++ b/public/language/uk/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Коли хтось починає слідкувати за вами",
"notificationType_new-chat": "Коли ви отримуєте повідомлення чату",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Коли ви отримуєте запрошення до групи",
"notificationType_group-request-membership": "Коли хтось подає запит на приєднання до групи, якою ви володієте",
"notificationType_new-register": "Коли когось додано до черги на реєстрацію",
diff --git a/public/language/uk/register.json b/public/language/uk/register.json
index 14a7b4e355..7f2b443c1d 100644
--- a/public/language/uk/register.json
+++ b/public/language/uk/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Я погоджуюсь з Умовами користування",
"terms_of_use_error": "Ви маєте погодитись з Умовами користування",
"registration-added-to-queue": "Ваша реєстрація була додана в чергу затвердження. Ви отримаєте листа на електронну пошту, коли адміністратор її підтвердить.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Нам потрібна додаткова інформація, перш ніж ми створимо ваш обліковий запис.",
"interstitial.errors-found": "Нам не вдалося вас зареєструвати:",
"gdpr_agree_data": "Я надаю згоду на збір та обробку моїх особистих даних на цьому веб-сайті.",
diff --git a/public/language/uk/topic.json b/public/language/uk/topic.json
index 6176fa87ba..bc5f78287f 100644
--- a/public/language/uk/topic.json
+++ b/public/language/uk/topic.json
@@ -30,6 +30,7 @@
"locked": "Заблокована",
"pinned": "Закріплена",
"moved": "Переміщена",
+ "moved-from": "Moved from %1",
"copy-ip": "Копіювати IP",
"ban-ip": "Заблокувати IP",
"view-history": "Редагувати історію",
diff --git a/public/language/uk/user.json b/public/language/uk/user.json
index 798f299749..9363a6b4a4 100644
--- a/public/language/uk/user.json
+++ b/public/language/uk/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Відкривати зовнішні посилання у новій вкладці",
"enable_topic_searching": "Увімкнути пошук у темах",
"topic_search_help": "Будучи увімкненою, ця функція перевизначає вбудований пошук браузера і дозволяє шукати по всій темі, а не лише по змісту, що показаний на екрані.",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Після відправки відповіді, показувати новий пост",
"follow_topics_you_reply_to": "Підписуватися на теми в котрих ви відповідаєте",
"follow_topics_you_create": "Підписуватися на теми які ви створюєте",
diff --git a/public/language/uk/users.json b/public/language/uk/users.json
index c87acf2d44..01951b7753 100644
--- a/public/language/uk/users.json
+++ b/public/language/uk/users.json
@@ -11,6 +11,7 @@
"online-only": "Лише в мережі",
"invite": "Запросити",
"prompt-email": "Емейли:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Лист із запрошенням відправлено %1",
"user_list": "Список користувачів",
"recent_topics": "Нещодавні теми",
diff --git a/public/language/vi/admin/manage/privileges.json b/public/language/vi/admin/manage/privileges.json
index ac83a28a93..3b24b1cc3e 100644
--- a/public/language/vi/admin/manage/privileges.json
+++ b/public/language/vi/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "Upload Files",
"signature": "Signature",
"ban": "Ban",
+ "invite": "Invite",
"search-content": "Search Content",
"search-users": "Search Users",
"search-tags": "Search Tags",
diff --git a/public/language/vi/admin/menu.json b/public/language/vi/admin/menu.json
index 98aa86175c..09ae2b4cdc 100644
--- a/public/language/vi/admin/menu.json
+++ b/public/language/vi/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "Phân trang",
"settings/tags": "Thẻ",
"settings/notifications": "Thông báo",
+ "settings/api": "API Access",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
diff --git a/public/language/vi/admin/settings/email.json b/public/language/vi/admin/settings/email.json
index 8b127a6afc..26481a209a 100644
--- a/public/language/vi/admin/settings/email.json
+++ b/public/language/vi/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
-
+
"smtp-transport": "SMTP Transport",
"smtp-transport.enabled": "Use an external email server to send emails",
"smtp-transport-help": "You can select from a list of well-known services or enter a custom one.",
@@ -35,5 +35,7 @@
"subscriptions": "Email Digests",
"subscriptions.disable": "Disable email digests",
"subscriptions.hour": "Digest Hour",
- "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent "
+ "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/vi/admin/settings/guest.json b/public/language/vi/admin/settings/guest.json
index 3ba81aa778..75d44f37e4 100644
--- a/public/language/vi/admin/settings/guest.json
+++ b/public/language/vi/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "Guest Handles",
+ "settings": "Settings",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/vi/admin/settings/user.json b/public/language/vi/admin/settings/user.json
index b94dc98870..e05aa5e3ed 100644
--- a/public/language/vi/admin/settings/user.json
+++ b/public/language/vi/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
",
"registration-approval-type.help": "Normal - Users are registered immediately.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"",
@@ -62,6 +65,7 @@
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
diff --git a/public/language/vi/flags.json b/public/language/vi/flags.json
index 10698842cc..13b3567bc9 100644
--- a/public/language/vi/flags.json
+++ b/public/language/vi/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "Report Inappropriate Content",
+ "modal-title": "Report Content",
"modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.",
"modal-reason-spam": "Spam",
"modal-reason-offensive": "Offensive",
diff --git a/public/language/vi/groups.json b/public/language/vi/groups.json
index 8e69824345..88f53aab9c 100644
--- a/public/language/vi/groups.json
+++ b/public/language/vi/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "Số thành viên",
"details.creation_date": "Ngày mở nhóm",
"details.description": "Miêu tả",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "Xem thử huy hiệu",
"details.change_icon": "Đổi icon",
"details.change_label_colour": "Change Label Colour",
diff --git a/public/language/vi/notifications.json b/public/language/vi/notifications.json
index cbc6e98906..2f1a7e6048 100644
--- a/public/language/vi/notifications.json
+++ b/public/language/vi/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "When a post is edited in a topic you are watching",
"notificationType_follow": "Khi ai đó theo dõi bạn",
"notificationType_new-chat": "Khi bạn nhận được thông điệp chat",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "Khi bạn nhận được lời mời gia nhập nhóm",
"notificationType_group-request-membership": "Khi ai đó yêu cầu tham gia một nhóm bạn sở hữu",
"notificationType_new-register": "Khi ai đó được thêm vào lượt chờ đăng ký",
diff --git a/public/language/vi/register.json b/public/language/vi/register.json
index 67bbb6e0e0..9413ed9a4e 100644
--- a/public/language/vi/register.json
+++ b/public/language/vi/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "Tôi đồng ý với các điều khoản sử dụng",
"terms_of_use_error": "Bạn phải đồng ý với các điều khoản sử dụng",
"registration-added-to-queue": "Yêu cầu đăng ký của bạn đang chờ được chấp thuận. Bạn sẽ nhận được email khi tài khoản của bạn đã được chấp thuận bởi quản trị viên.",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "Chúng tôi cần thêm một số thông tin trước khi bạn có thể tạo tài khoản.",
"interstitial.errors-found": "Chúng tôi không thể hoàn thành đăng ký của bạn:",
"gdpr_agree_data": "Tôi đồng ý với việc thu thập và xử lý thông tin cá nhân của tôi trên trang web này.",
diff --git a/public/language/vi/topic.json b/public/language/vi/topic.json
index 0fc45e0e13..65998bedc5 100644
--- a/public/language/vi/topic.json
+++ b/public/language/vi/topic.json
@@ -30,6 +30,7 @@
"locked": "Khóa",
"pinned": "Đã ghim",
"moved": "Chuyển đi",
+ "moved-from": "Moved from %1",
"copy-ip": "Sao chép IP",
"ban-ip": "Cấm IP",
"view-history": "Lịch sử chỉnh sửa",
diff --git a/public/language/vi/user.json b/public/language/vi/user.json
index d09d60108a..17efa58246 100644
--- a/public/language/vi/user.json
+++ b/public/language/vi/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "Mở link trong tab mới.",
"enable_topic_searching": "Bật tìm kiếm trong chủ đề",
"topic_search_help": "Nếu bật, tìm kiếm trong chủ đề sẽ thay thế tính năng tính năng tìm kiếm của trình duyệt và cho phép bạn tìm kiếm trong toàn bộ chủ đề, thay vì chỉ tìm kiếm nội dung đang hiện thị trên màn hình",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "Sau khi đăng một trả lời thì hiển thị bài viết mới",
"follow_topics_you_reply_to": "Những chủ đề bạn quan tâm và từng bình luận",
"follow_topics_you_create": "Theo dõi chủ đề bạn tạo",
diff --git a/public/language/vi/users.json b/public/language/vi/users.json
index 454faefe32..b22a529974 100644
--- a/public/language/vi/users.json
+++ b/public/language/vi/users.json
@@ -11,6 +11,7 @@
"online-only": "Đang online",
"invite": "Mời",
"prompt-email": "Emails:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "Email mời đã được gửi tới %1",
"user_list": "Danh sách thành viên",
"recent_topics": "Chủ đề mới",
diff --git a/public/language/zh-CN/admin/manage/privileges.json b/public/language/zh-CN/admin/manage/privileges.json
index 370fee92f5..d48c61b0e9 100644
--- a/public/language/zh-CN/admin/manage/privileges.json
+++ b/public/language/zh-CN/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "上传文件",
"signature": "签名档",
"ban": "封禁",
+ "invite": "Invite",
"search-content": "搜索内容",
"search-users": "搜索用户",
"search-tags": "搜索话题",
diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json
index f100672a6f..d5c8036246 100644
--- a/public/language/zh-CN/admin/menu.json
+++ b/public/language/zh-CN/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "分页",
"settings/tags": "话题",
"settings/notifications": "通知",
+ "settings/api": "API Access",
"settings/sounds": "铃声",
"settings/social": "社交",
"settings/cookies": "Cookies",
diff --git a/public/language/zh-CN/admin/settings/email.json b/public/language/zh-CN/admin/settings/email.json
index a465b8900c..64b034879c 100644
--- a/public/language/zh-CN/admin/settings/email.json
+++ b/public/language/zh-CN/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "下面的电子邮件地址代表收件人在“发件人”和“回复”中所看到的地址。",
"from": "发送者",
"from-help": "用于邮件中显示的发送者",
-
+
"smtp-transport": "SMTP 通信",
"smtp-transport.enabled": "使用一个外部电子邮箱系统来发送邮件",
"smtp-transport-help": "您可以从列表中选取一个已知的服务或自定义。",
@@ -35,5 +35,7 @@
"subscriptions": "电子邮件摘要",
"subscriptions.disable": "禁用电子邮件摘要",
"subscriptions.hour": "摘要小时",
- "subscriptions.hour-help": "请输入一个代表小时的数字来发送计划的电子邮件摘要 (例如,对于午夜,0,对于下午5:00,17)。 请记住,这是根据服务器本身的时间,可能与您的系统时钟不完全匹配。
服务器的大致时间为: span>
下一个每日摘要被计划在发送"
+ "subscriptions.hour-help": "请输入一个代表小时的数字来发送计划的电子邮件摘要 (例如,对于午夜,0,对于下午5:00,17)。 请记住,这是根据服务器本身的时间,可能与您的系统时钟不完全匹配。
服务器的大致时间为: span>
下一个每日摘要被计划在发送",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/zh-CN/admin/settings/guest.json b/public/language/zh-CN/admin/settings/guest.json
index d4c98c2b26..725beaf2d1 100644
--- a/public/language/zh-CN/admin/settings/guest.json
+++ b/public/language/zh-CN/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "游客用户名",
+ "settings": "Settings",
"handles.enabled": "允许游客用户名",
"handles.enabled-help": "这个选项将允许游客使用一个额外的输入框来设置发帖时的用户名,如果被禁用,仅会统一显示为“游客”",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/zh-CN/admin/settings/user.json b/public/language/zh-CN/admin/settings/user.json
index 018ee60036..a6ead5ef54 100644
--- a/public/language/zh-CN/admin/settings/user.json
+++ b/public/language/zh-CN/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "禁止注册",
"registration-type.help": "通常 - 用户可以通过 /register页面注册
\n管理员批准 - 用户注册请求会被放入 请求队列待管理员批准。
\n邀请制 - 用户可以通过 用户 页面邀请其它用户。\n管理员邀请制 - 只有管理员可以通过 用户 和 admin/manage/users 页面邀请其它用户。
\n无注册 - 不开放用户注册。
",
"registration-approval-type.help": "通常 - 用户可以通过/register页面注册
\n管理员批准 - 用户注册请求会被放入 请求队列 待管理员批准。
\n管理员批准 IP地址 - 新用户不受影响,已存在账号的IP地址注册需要管理员批准。
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "每个用户最大邀请数",
"max-invites": "每个用户最大邀请数",
"max-invites-help": "无限制填 0 。管理员没有邀请限制
仅在邀请制时可用",
@@ -62,6 +65,7 @@
"restrict-chat": "只允许我关注的用户给我发送聊天消息",
"outgoing-new-tab": "在新标签打开外部链接",
"topic-search": "启用主题内搜索",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "订阅摘要",
"digest-freq.off": "关闭",
"digest-freq.daily": "每日",
diff --git a/public/language/zh-CN/flags.json b/public/language/zh-CN/flags.json
index 99cd14b5c7..dbcc5dba94 100644
--- a/public/language/zh-CN/flags.json
+++ b/public/language/zh-CN/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "最多顶",
"sort-replies": "最多回复",
- "modal-title": "举报不适内容",
+ "modal-title": "Report Content",
"modal-body": "请选择或者输入您举报 %1%2 的原因以便版主进行审核。",
"modal-reason-spam": "垃圾信息",
"modal-reason-offensive": "人身攻击",
diff --git a/public/language/zh-CN/groups.json b/public/language/zh-CN/groups.json
index 43d50b8d8b..393ad49d9f 100644
--- a/public/language/zh-CN/groups.json
+++ b/public/language/zh-CN/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "群组成员数",
"details.creation_date": "创建时间",
"details.description": "描述",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "徽章预览",
"details.change_icon": "更改图标",
"details.change_label_colour": "更改标签颜色",
diff --git a/public/language/zh-CN/notifications.json b/public/language/zh-CN/notifications.json
index 59ab9764a2..45bc43c3b2 100644
--- a/public/language/zh-CN/notifications.json
+++ b/public/language/zh-CN/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "当您关注的主题有帖子被编辑时",
"notificationType_follow": "当有人关注您时",
"notificationType_new-chat": "当您收到聊天消息时",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "当您收到群组邀请时",
"notificationType_group-request-membership": "当有人请求加入您拥有的用户组时",
"notificationType_new-register": "当有人被添加到申请队列时",
diff --git a/public/language/zh-CN/register.json b/public/language/zh-CN/register.json
index e3a048661a..45d711f669 100644
--- a/public/language/zh-CN/register.json
+++ b/public/language/zh-CN/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "我同意使用条款",
"terms_of_use_error": "您必须同意使用条款",
"registration-added-to-queue": "您的注册正在等待批准。一旦通过,管理员会发送邮件通知您。",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "在创建您的账户前我们需要一些额外信息。",
"interstitial.errors-found": "我们无法完成您的注册:",
"gdpr_agree_data": "我同意此网站对我个人信息的收集与处理。",
diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json
index 0effe4205f..fccddf200c 100644
--- a/public/language/zh-CN/topic.json
+++ b/public/language/zh-CN/topic.json
@@ -30,6 +30,7 @@
"locked": "已锁定",
"pinned": "已固定",
"moved": "已移动",
+ "moved-from": "Moved from %1",
"copy-ip": "复制IP",
"ban-ip": "封禁IP",
"view-history": "编辑历史",
diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json
index 035ed5ed0e..3a3feea59c 100644
--- a/public/language/zh-CN/user.json
+++ b/public/language/zh-CN/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "在新标签打开外部链接",
"enable_topic_searching": "启用主题内搜索",
"topic_search_help": "如果启用此项,主题内搜索会替代浏览器默认的页面搜索,您将可以在整个主题内搜索,而不仅仅只搜索页面上展现的内容。",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "在提交回复之后显示新回复",
"follow_topics_you_reply_to": "关注您回复过的主题",
"follow_topics_you_create": "关注您创建的主题",
diff --git a/public/language/zh-CN/users.json b/public/language/zh-CN/users.json
index 06fa81bce2..6cdac0c1cc 100644
--- a/public/language/zh-CN/users.json
+++ b/public/language/zh-CN/users.json
@@ -11,6 +11,7 @@
"online-only": "只看在线",
"invite": "邀请注册",
"prompt-email": "邮件:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "已发送邀请给 %1",
"user_list": "用户列表",
"recent_topics": "最新主题",
diff --git a/public/language/zh-TW/admin/manage/privileges.json b/public/language/zh-TW/admin/manage/privileges.json
index 395c26ff81..b80f3bf5f6 100644
--- a/public/language/zh-TW/admin/manage/privileges.json
+++ b/public/language/zh-TW/admin/manage/privileges.json
@@ -9,6 +9,7 @@
"upload-files": "上傳檔案",
"signature": "簽名檔",
"ban": "禁用",
+ "invite": "Invite",
"search-content": "搜尋內容",
"search-users": "搜尋使用者",
"search-tags": "搜尋標籤",
diff --git a/public/language/zh-TW/admin/menu.json b/public/language/zh-TW/admin/menu.json
index fcbdd90b07..2c823e4c85 100644
--- a/public/language/zh-TW/admin/menu.json
+++ b/public/language/zh-TW/admin/menu.json
@@ -31,6 +31,7 @@
"settings/pagination": "分頁",
"settings/tags": "標籤",
"settings/notifications": "通知",
+ "settings/api": "API Access",
"settings/sounds": "聲音",
"settings/social": "社交",
"settings/cookies": "Cookies",
diff --git a/public/language/zh-TW/admin/settings/email.json b/public/language/zh-TW/admin/settings/email.json
index 43eb05afe9..987aef7c09 100644
--- a/public/language/zh-TW/admin/settings/email.json
+++ b/public/language/zh-TW/admin/settings/email.json
@@ -4,7 +4,7 @@
"address-help": "下面的電子郵件地址代表收件人在“發送人”和“回覆”中所看到的地址。",
"from": "發送人",
"from-help": "用於郵件中顯示的發送人",
-
+
"smtp-transport": "SMTP 通信",
"smtp-transport.enabled": "使用一個外部電子郵件系統來發送郵件",
"smtp-transport-help": "您可以從列表中選取一個已知的服務或自訂。",
@@ -35,5 +35,7 @@
"subscriptions": "電子郵件摘要",
"subscriptions.disable": "禁用電子郵件摘要",
"subscriptions.hour": "摘要小時",
- "subscriptions.hour-help": "請輸入一個代表小時的數字來發送排程的電子郵件摘要 (例如,對於午夜,0,對於下午5:00,17)。 請記住,這是根據伺服器本身的時間,可能與您的系統時鐘不完全符合。
伺服器的大致時間為: span>
下一個每日摘要被排程在發送"
+ "subscriptions.hour-help": "請輸入一個代表小時的數字來發送排程的電子郵件摘要 (例如,對於午夜,0,對於下午5:00,17)。 請記住,這是根據伺服器本身的時間,可能與您的系統時鐘不完全符合。
伺服器的大致時間為: span>
下一個每日摘要被排程在發送",
+ "notifications.settings": "Email notification settings",
+ "notifications.remove-images": "Remove images from email notifications"
}
\ No newline at end of file
diff --git a/public/language/zh-TW/admin/settings/guest.json b/public/language/zh-TW/admin/settings/guest.json
index 777b254aaf..a46b34a3f9 100644
--- a/public/language/zh-TW/admin/settings/guest.json
+++ b/public/language/zh-TW/admin/settings/guest.json
@@ -1,7 +1,7 @@
{
- "handles": "訪客使用者名",
+ "settings": "Settings",
"handles.enabled": "允許訪客使用者名",
"handles.enabled-help": "這個選項將允許訪客使用一個額外的輸入框來設置發文時的使用者名,如果被禁用,僅會統一顯示為“訪客”",
- "topic-views": "Topic views",
- "topic-views.enabled": "Allow guests to increase topic view counts"
+ "topic-views.enabled": "Allow guests to increase topic view counts",
+ "reply-notifications.enabled": "Allow guests to generate reply notifications"
}
\ No newline at end of file
diff --git a/public/language/zh-TW/admin/settings/user.json b/public/language/zh-TW/admin/settings/user.json
index 173d7f6e5d..93e87c1fe0 100644
--- a/public/language/zh-TW/admin/settings/user.json
+++ b/public/language/zh-TW/admin/settings/user.json
@@ -43,6 +43,9 @@
"registration-type.disabled": "停用註冊",
"registration-type.help": "一般 - 使用者可以通過 /register頁面註冊
\n管理員批准 - 使用者註冊請求會被放入 請求佇列待管理員批准。
\n邀請制 - 使用者可以通過 使用者 頁面邀請其他使用者。\n管理員邀請制 - 只有管理員可以通過 使用者 和 admin/manage/users 頁面邀請其他使用者。
\n停用註冊 - 不開放用戶註冊。
",
"registration-approval-type.help": "通常 - 用戶可以通過/register頁面註冊
\n管理員批准 - 用戶註冊請求會被放入 請求隊列 待管理員批准。
\n管理員批准 IP地址 - 新用戶不受影響,已存在賬號的IP地址註冊需要管理員批准。
",
+ "registration-queue-auto-approve-time": "Automatic Approval Time",
+ "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.",
+ "registration-queue-show-average-time": "Show users average time it takes to approve a new user",
"registration.max-invites": "每個使用者最大邀請數",
"max-invites": "每個使用者最大邀請數",
"max-invites-help": "無限制填 0 。管理員沒有邀請限制
僅在邀請制時可用",
@@ -62,6 +65,7 @@
"restrict-chat": "只允許我追隨的使用者給我發送聊天訊息",
"outgoing-new-tab": "在新頁籤打開外部連結",
"topic-search": "啟用主題內搜尋",
+ "update-url-with-post-index": "Update url with post index while browsing topics",
"digest-freq": "訂閱摘要",
"digest-freq.off": "關閉",
"digest-freq.daily": "每日",
diff --git a/public/language/zh-TW/flags.json b/public/language/zh-TW/flags.json
index 0b0fa9c3d3..883891eda6 100644
--- a/public/language/zh-TW/flags.json
+++ b/public/language/zh-TW/flags.json
@@ -67,7 +67,7 @@
"sort-upvotes": "Most upvotes",
"sort-replies": "Most replies",
- "modal-title": "舉報不適內容",
+ "modal-title": "Report Content",
"modal-body": "請選擇或者輸入您舉報 %1%2 的原因以便版主進行審核。",
"modal-reason-spam": "垃圾訊息",
"modal-reason-offensive": "人身攻擊",
diff --git a/public/language/zh-TW/groups.json b/public/language/zh-TW/groups.json
index 9681dfeb14..d09a7d1739 100644
--- a/public/language/zh-TW/groups.json
+++ b/public/language/zh-TW/groups.json
@@ -35,6 +35,8 @@
"details.member_count": "群組成員數",
"details.creation_date": "建立時間",
"details.description": "描述",
+ "details.member-post-cids": "Categories to display posts from",
+ "details.member-post-cids-help": "Note: Selecting no categories will assume all categories are included. Use ctrl and shift to select multiple options.",
"details.badge_preview": "徽章預覽",
"details.change_icon": "更改圖示",
"details.change_label_colour": "更改標籤顏色",
diff --git a/public/language/zh-TW/notifications.json b/public/language/zh-TW/notifications.json
index 129454c339..9a982f8970 100644
--- a/public/language/zh-TW/notifications.json
+++ b/public/language/zh-TW/notifications.json
@@ -60,6 +60,7 @@
"notificationType_post-edit": "當您關注中的主題有貼文被編輯時",
"notificationType_follow": "當有人追隨您時",
"notificationType_new-chat": "當您收到聊天訊息時",
+ "notificationType_new-group-chat": "When you receive a group chat message",
"notificationType_group-invite": "當您收到群組邀請時",
"notificationType_group-request-membership": "當有人請求加入您擁有的群組時",
"notificationType_new-register": "當有註冊申請待審核時",
diff --git a/public/language/zh-TW/register.json b/public/language/zh-TW/register.json
index 67d7cd198e..7e1aa8da12 100644
--- a/public/language/zh-TW/register.json
+++ b/public/language/zh-TW/register.json
@@ -18,6 +18,8 @@
"agree_to_terms_of_use": "我同意使用條款",
"terms_of_use_error": "您必須同意使用條款",
"registration-added-to-queue": "您的註冊正在等待批准。一旦通過,管理員會發送郵件通知您。",
+ "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.",
+ "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.",
"interstitial.intro": "在建立您的帳戶前我們需要一些額外資訊。",
"interstitial.errors-found": "我們無法完成您的註冊:",
"gdpr_agree_data": "我同意此網站對我個人資料的收集與處理。",
diff --git a/public/language/zh-TW/topic.json b/public/language/zh-TW/topic.json
index b4defa47a0..b50e287032 100644
--- a/public/language/zh-TW/topic.json
+++ b/public/language/zh-TW/topic.json
@@ -30,6 +30,7 @@
"locked": "已鎖定",
"pinned": "已置頂",
"moved": "已移動",
+ "moved-from": "Moved from %1",
"copy-ip": "複製IP",
"ban-ip": "禁用IP",
"view-history": "編輯歷史",
diff --git a/public/language/zh-TW/user.json b/public/language/zh-TW/user.json
index 47890607a8..409a2342ac 100644
--- a/public/language/zh-TW/user.json
+++ b/public/language/zh-TW/user.json
@@ -123,6 +123,7 @@
"open_links_in_new_tab": "在新頁籤打開外部連結",
"enable_topic_searching": "啟用主題內搜索",
"topic_search_help": "如果啟用此項,主題內搜索會替代瀏覽器預設的頁面搜索,您將可以在整個主題內搜索,而不僅僅只搜索頁面上展現的內容。",
+ "update_url_with_post_index": "Update url with post index while browsing topics",
"scroll_to_my_post": "在提交回覆之後顯示新回覆",
"follow_topics_you_reply_to": "關注您回覆過的主題",
"follow_topics_you_create": "關注您建立的主題",
diff --git a/public/language/zh-TW/users.json b/public/language/zh-TW/users.json
index b150cb7d42..07e076f86c 100644
--- a/public/language/zh-TW/users.json
+++ b/public/language/zh-TW/users.json
@@ -11,6 +11,7 @@
"online-only": "只看在線",
"invite": "邀請註冊",
"prompt-email": "郵件:",
+ "groups-to-join": "Groups to be joined when invite is accepted:",
"invitation-email-sent": "已發送邀請給 %1",
"user_list": "使用者列表",
"recent_topics": "最新主題",
diff --git a/public/openapi/components/schemas/GroupObject.yaml b/public/openapi/components/schemas/GroupObject.yaml
index e9802cdf7e..dbef43abc3 100644
--- a/public/openapi/components/schemas/GroupObject.yaml
+++ b/public/openapi/components/schemas/GroupObject.yaml
@@ -42,6 +42,11 @@ GroupFullObject:
textColor:
type: string
description: A six-character hexadecimal colour code
+ memberPostCids:
+ type: array
+ items:
+ type: number
+ example: [1, 2, 3]
icon:
type: string
description: A FontAwesome icon string
@@ -56,6 +61,32 @@ GroupFullObject:
type: string
descriptionParsed:
type: string
+ categories:
+ type: array
+ items:
+ type: object
+ properties:
+ cid:
+ type: number
+ description: A category identifier
+ name:
+ type: string
+ level:
+ type: string
+ icon:
+ type: string
+ parentCid:
+ type: number
+ description: The category identifier for the category that is the immediate
+ ancestor of the current category
+ color:
+ type: string
+ bgColor:
+ type: string
+ selected:
+ type: boolean
+ imageClass:
+ type: string
members:
type: array
items:
@@ -130,4 +161,9 @@ GroupDataObject:
type: string
description: "`createtime` rendered as an ISO 8601 format"
cover:position:
- type: string
\ No newline at end of file
+ type: string
+ memberPostCids:
+ type: array
+ items:
+ type: number
+ example: [1, 2, 3]
\ No newline at end of file
diff --git a/public/openapi/components/schemas/SettingsObj.yaml b/public/openapi/components/schemas/SettingsObj.yaml
index 3b674996aa..a0d53b5bcb 100644
--- a/public/openapi/components/schemas/SettingsObj.yaml
+++ b/public/openapi/components/schemas/SettingsObj.yaml
@@ -37,6 +37,9 @@ Settings:
topicSearchEnabled:
type: boolean
description: Enable keyword searching within topics
+ updateUrlWithPostIndex:
+ type: boolean
+ description: Update url with post index while browsing topics
categoryTopicSort:
type: string
description: Default sorting strategy of the topics in a category
@@ -55,6 +58,9 @@ Settings:
notificationType_new-chat:
type: string
description: Notification type for new chat messages
+ notificationType_new-group-chat:
+ type: string
+ description: Notification type for new group chat messages
notificationType_new-reply:
type: string
description: Notification type for new topic replies
diff --git a/public/openapi/read/admin/advanced/cache.yaml b/public/openapi/read/admin/advanced/cache.yaml
index e642ed0071..06d7890971 100644
--- a/public/openapi/read/admin/advanced/cache.yaml
+++ b/public/openapi/read/admin/advanced/cache.yaml
@@ -88,28 +88,8 @@ get:
type: string
enabled:
type: boolean
- headerFooterCache:
- type: object
- properties:
- length:
- type: number
- max:
- type: number
- itemCount:
- type: number
- percentFull:
- type: number
- hits:
- type: string
- misses:
- type: string
- hitRatio:
- type: string
- enabled:
- type: boolean
required:
- postCache
- groupCache
- localCache
- - headerFooterCache
- $ref: ../../../components/schemas/CommonProps.yaml#/CommonProps
\ No newline at end of file
diff --git a/public/openapi/read/admin/manage/groups.yaml b/public/openapi/read/admin/manage/groups.yaml
index 649147348c..7b7ae1db46 100644
--- a/public/openapi/read/admin/manage/groups.yaml
+++ b/public/openapi/read/admin/manage/groups.yaml
@@ -64,6 +64,11 @@ get:
type: string
ownerUid:
type: number
+ memberPostCids:
+ type: array
+ items:
+ type: number
+ example: [1, 2, 3]
required:
- name
- description
diff --git a/public/openapi/read/admin/manage/users.yaml b/public/openapi/read/admin/manage/users.yaml
index 4b47e5f112..c3278c007b 100644
--- a/public/openapi/read/admin/manage/users.yaml
+++ b/public/openapi/read/admin/manage/users.yaml
@@ -27,6 +27,8 @@ get:
type: string
sort_lastonline:
type: boolean
+ showInviteButton:
+ type: boolean
inviteOnly:
type: boolean
adminInviteOnly:
diff --git a/public/openapi/read/groups.yaml b/public/openapi/read/groups.yaml
index 90a8c31d1d..a73b29864f 100644
--- a/public/openapi/read/groups.yaml
+++ b/public/openapi/read/groups.yaml
@@ -58,6 +58,11 @@ get:
type: string
cover:position:
type: string
+ memberPostCids:
+ type: array
+ items:
+ type: number
+ example: [1, 2, 3]
members:
type: array
items:
diff --git a/public/openapi/read/topic/topic_id/slug/post_index.yaml b/public/openapi/read/topic/topic_id/slug/post_index.yaml
index 514f3065e5..47e0a60d2e 100644
--- a/public/openapi/read/topic/topic_id/slug/post_index.yaml
+++ b/public/openapi/read/topic/topic_id/slug/post_index.yaml
@@ -388,6 +388,8 @@ get:
type: number
scrollToMyPost:
type: boolean
+ updateUrlWithPostIndex:
+ type: boolean
allowMultipleBadges:
type: boolean
privateUploads:
diff --git a/public/openapi/write.yaml b/public/openapi/write.yaml
index 35fed4b3fe..1739a58880 100644
--- a/public/openapi/write.yaml
+++ b/public/openapi/write.yaml
@@ -32,6 +32,10 @@ paths:
$ref: 'write/users.yaml'
/users/{uid}:
$ref: 'write/users/uid.yaml'
+ /users/{uid}/content:
+ $ref: 'write/users/uid/content.yaml'
+ /users/{uid}/account:
+ $ref: 'write/users/uid/account.yaml'
/users/{uid}/settings:
$ref: 'write/users/uid/settings.yaml'
/users/{uid}/password:
@@ -42,6 +46,12 @@ paths:
$ref: 'write/users/uid/ban.yaml'
/users/{uid}/tokens/{token}:
$ref: 'write/users/uid/tokens/token.yaml'
+ /users/{uid}/sessions/{uuid}:
+ $ref: 'write/users/uid/sessions/uuid.yaml'
+ /users/{uid}/invites:
+ $ref: 'write/users/uid/invites.yaml'
+ /users/{uid}/invites/groups:
+ $ref: 'write/users/uid/invites/groups.yaml'
/categories/:
$ref: 'write/categories.yaml'
/groups/:
diff --git a/public/openapi/write/admin/settings/setting.yaml b/public/openapi/write/admin/settings/setting.yaml
index dcd85aed56..009f478b81 100644
--- a/public/openapi/write/admin/settings/setting.yaml
+++ b/public/openapi/write/admin/settings/setting.yaml
@@ -11,13 +11,6 @@ put:
required: true
description: backend id of the setting to update
example: maximumRelatedTopics
- - in: path
- name: value
- schema:
- type: string
- required: true
- description: the value of the new setting
- example: 2
requestBody:
required: true
content:
diff --git a/public/openapi/write/groups.yaml b/public/openapi/write/groups.yaml
index 8ae4d703f8..8d325c758e 100644
--- a/public/openapi/write/groups.yaml
+++ b/public/openapi/write/groups.yaml
@@ -37,6 +37,11 @@ post:
enum: [0, 1]
createtime:
type: number
+ memberPostCids:
+ type: array
+ items:
+ type: number
+ example: [1, 2, 3]
required:
- name
responses:
diff --git a/public/openapi/write/groups/slug.yaml b/public/openapi/write/groups/slug.yaml
index eb867a6897..28077e290c 100644
--- a/public/openapi/write/groups/slug.yaml
+++ b/public/openapi/write/groups/slug.yaml
@@ -1,3 +1,20 @@
+head:
+ tags:
+ - groups
+ summary: check if a group exists
+ parameters:
+ - in: path
+ name: slug
+ schema:
+ type: string
+ required: true
+ description: group slug (that also acts as its identifier) to check
+ example: my-test-group
+ responses:
+ '200':
+ description: group found
+ '404':
+ description: group not found
delete:
tags:
- groups
diff --git a/public/openapi/write/users/uid.yaml b/public/openapi/write/users/uid.yaml
index f615c105a8..1e2878364a 100644
--- a/public/openapi/write/users/uid.yaml
+++ b/public/openapi/write/users/uid.yaml
@@ -1,3 +1,20 @@
+head:
+ tags:
+ - users
+ summary: check if a user exists
+ parameters:
+ - in: path
+ name: uid
+ schema:
+ type: integer
+ required: true
+ description: uid of the user to check
+ example: 3
+ responses:
+ '200':
+ description: user found
+ '404':
+ description: user not found
delete:
tags:
- users
diff --git a/public/openapi/write/users/uid/account.yaml b/public/openapi/write/users/uid/account.yaml
new file mode 100644
index 0000000000..51c149e5e6
--- /dev/null
+++ b/public/openapi/write/users/uid/account.yaml
@@ -0,0 +1,25 @@
+delete:
+ tags:
+ - users
+ summary: delete a single user account (preserve content)
+ description: This route deletes a single user's account, but preserves the content (posts, bookmarks, etc.)
+ parameters:
+ - in: path
+ name: uid
+ schema:
+ type: integer
+ required: true
+ description: uid of the user to delete
+ example: 7
+ responses:
+ '200':
+ description: user account deleted
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ status:
+ $ref: ../../../components/schemas/Status.yaml#/Status
+ response:
+ type: object
\ No newline at end of file
diff --git a/public/openapi/write/users/uid/content.yaml b/public/openapi/write/users/uid/content.yaml
new file mode 100644
index 0000000000..7b5cd0f641
--- /dev/null
+++ b/public/openapi/write/users/uid/content.yaml
@@ -0,0 +1,25 @@
+delete:
+ tags:
+ - users
+ summary: delete a single user account's content (preserve account)
+ description: This route deletes a single user's account content (posts, bookmarks, etc.) but preserves the account itself
+ parameters:
+ - in: path
+ name: uid
+ schema:
+ type: integer
+ required: true
+ description: uid of the user's content to delete
+ example: 7
+ responses:
+ '200':
+ description: user account content deleted
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ status:
+ $ref: ../../../components/schemas/Status.yaml#/Status
+ response:
+ type: object
\ No newline at end of file
diff --git a/public/openapi/write/users/uid/invites.yaml b/public/openapi/write/users/uid/invites.yaml
new file mode 100644
index 0000000000..9fd3596296
--- /dev/null
+++ b/public/openapi/write/users/uid/invites.yaml
@@ -0,0 +1,48 @@
+post:
+ tags:
+ - users
+ summary: invite users with email by email
+ description: This operation sends an invitation email to the given addresses, with an option to join selected groups on acceptance
+ parameters:
+ - in: path
+ name: uid
+ schema:
+ type: integer
+ required: true
+ description: uid of the user sending invitations
+ example: 1
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ emails:
+ type: string
+ description: A single or list of comma separated email addresses
+ example: friend01@example.com,friend02@example.com
+ groupsToJoin:
+ type: array
+ description: A collection of group names
+ example: ['administrators']
+ required:
+ - emails
+ responses:
+ '200':
+ description: invitation email(s) sent
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ status:
+ $ref: ../../../components/schemas/Status.yaml#/Status
+ response:
+ type: object
+ '400':
+ $ref: ../../../components/responses/400.yaml#/400
+ '401':
+ $ref: ../../../components/responses/401.yaml#/401
+ '403':
+ $ref: ../../../components/responses/403.yaml#/403
\ No newline at end of file
diff --git a/public/openapi/write/users/uid/invites/groups.yaml b/public/openapi/write/users/uid/invites/groups.yaml
new file mode 100644
index 0000000000..5683db658d
--- /dev/null
+++ b/public/openapi/write/users/uid/invites/groups.yaml
@@ -0,0 +1,23 @@
+get:
+ tags:
+ - users
+ summary: Get group names that the user can invite
+ parameters:
+ - in: path
+ name: uid
+ schema:
+ type: integer
+ required: true
+ description: uid of the user to make the query for
+ example: 1
+ responses:
+ '200':
+ description: A collection of group names returned
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: string
+ '401':
+ $ref: ../../../../components/responses/401.yaml#/401
\ No newline at end of file
diff --git a/public/openapi/write/users/uid/sessions/uuid.yaml b/public/openapi/write/users/uid/sessions/uuid.yaml
new file mode 100644
index 0000000000..4b01dee1e0
--- /dev/null
+++ b/public/openapi/write/users/uid/sessions/uuid.yaml
@@ -0,0 +1,31 @@
+delete:
+ tags:
+ - users
+ summary: revoke a user session
+ parameters:
+ - in: path
+ name: uid
+ schema:
+ type: integer
+ required: true
+ description: uid of the user's session
+ example: 3
+ - in: path
+ name: uuid
+ schema:
+ type: string
+ required: true
+ description: uuid of the user's session
+ example: 7c1a66b3-90e1-41f4-9f74-2b2edaebf917
+ responses:
+ '200':
+ description: user session revoked
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ status:
+ $ref: ../../../../components/schemas/Status.yaml#/Status
+ response:
+ type: object
\ No newline at end of file
diff --git a/public/src/admin/manage/group.js b/public/src/admin/manage/group.js
index 0d2ff00403..a64a8d88c5 100644
--- a/public/src/admin/manage/group.js
+++ b/public/src/admin/manage/group.js
@@ -80,6 +80,7 @@ define('admin/manage/group', [
userTitleEnabled: $('#group-userTitleEnabled').is(':checked'),
private: $('#group-private').is(':checked'),
hidden: $('#group-hidden').is(':checked'),
+ memberPostCids: $('#memberPostCids').val(),
disableJoinRequests: $('#group-disableJoinRequests').is(':checked'),
disableLeave: $('#group-disableLeave').is(':checked'),
},
diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js
index fbdd42f846..bba44bf21d 100644
--- a/public/src/admin/manage/users.js
+++ b/public/src/admin/manage/users.js
@@ -1,8 +1,8 @@
'use strict';
define('admin/manage/users', [
- 'translator', 'benchpress', 'autocomplete', 'api', 'slugify',
-], function (translator, Benchpress, autocomplete, api, slugify) {
+ 'translator', 'benchpress', 'autocomplete', 'api', 'slugify', 'bootbox', 'accounts/invite',
+], function (translator, Benchpress, autocomplete, api, slugify, bootbox, AccountInvite) {
var Users = {};
Users.init = function () {
@@ -36,8 +36,12 @@ define('admin/manage/users', [
$('.users-table [component="user/select/all"]').prop('checked', false);
}
- function removeSelected() {
- $('.users-table [component="user/select/single"]:checked').parents('.user-row').remove();
+ function removeRow(uid) {
+ const checkboxEl = document.querySelector(`.users-table [component="user/select/single"][data-uid="${uid}"]`);
+ if (checkboxEl) {
+ const rowEl = checkboxEl.closest('.user-row');
+ rowEl.parentNode.removeChild(rowEl);
+ }
}
// use onSuccess instead
@@ -253,71 +257,46 @@ define('admin/manage/users', [
});
});
- $('.delete-user').on('click', function () {
+ $('.delete-user').on('click', () => {
+ handleDelete('[[admin/manage/users:alerts.confirm-delete]]', '/account');
+ });
+
+ $('.delete-user-content').on('click', () => {
+ handleDelete('[[admin/manage/users:alerts.confirm-delete-content]]', '/content');
+ });
+
+ $('.delete-user-and-content').on('click', () => {
+ handleDelete('[[admin/manage/users:alerts.confirm-purge]]', '');
+ });
+
+ function handleDelete(confirmMsg, path) {
var uids = getSelectedUids();
if (!uids.length) {
return;
}
- bootbox.confirm('[[admin/manage/users:alerts.confirm-delete]]', function (confirm) {
+ bootbox.confirm(confirmMsg, function (confirm) {
if (confirm) {
- socket.emit('admin.user.deleteUsers', uids, function (err) {
- if (err) {
- return app.alertError(err.message);
+ Promise.all(uids.map(uid => api.del(`/users/${uid}${path}`, {})
+ .then(() => {
+ if (path !== '/content') {
+ removeRow(uid);
+ }
+ })
+ )).then(() => {
+ if (path !== '/content') {
+ app.alertSuccess('[[admin/manage/users:alerts.delete-success]]');
+ } else {
+ app.alertSuccess('[[admin/manage/users:alerts.delete-content-success]]');
}
-
- app.alertSuccess('[[admin/manage/users:alerts.delete-success]]');
- removeSelected();
unselectAll();
if (!$('.users-table [component="user/select/single"]').length) {
ajaxify.refresh();
}
- });
+ }).catch(app.alertError);
}
});
- });
-
- $('.delete-user-content').on('click', function () {
- var uids = getSelectedUids();
- if (!uids.length) {
- return;
- }
-
- bootbox.confirm('[[admin/manage/users:alerts.confirm-delete-content]]', function (confirm) {
- if (confirm) {
- socket.emit('admin.user.deleteUsersContent', uids, function (err) {
- if (err) {
- return app.alertError(err.message);
- }
-
- app.alertSuccess('[[admin/manage/users:alerts.delete-content-success]]');
- });
- }
- });
- });
-
- $('.delete-user-and-content').on('click', function () {
- var uids = getSelectedUids();
- if (!uids.length) {
- return;
- }
- bootbox.confirm('[[admin/manage/users:alerts.confirm-purge]]', function (confirm) {
- if (confirm) {
- socket.emit('admin.user.deleteUsersAndContent', uids, function (err) {
- if (err) {
- return app.alertError(err.message);
- }
-
- app.alertSuccess('[[admin/manage/users:alerts.delete-success]]');
- removeSelected();
- unselectAll();
- if (!$('.users-table [component="user/select/single"]').length) {
- ajaxify.refresh();
- }
- });
- }
- });
- });
+ }
function handleUserCreate() {
$('[data-action="create"]').on('click', function () {
@@ -380,13 +359,10 @@ define('admin/manage/users', [
}
handleSearch();
-
handleUserCreate();
-
- handleInvite();
-
handleSort();
handleFilter();
+ AccountInvite.handle();
};
function handleSearch() {
@@ -453,24 +429,6 @@ define('admin/manage/users', [
});
}
- function handleInvite() {
- $('[component="user/invite"]').on('click', function () {
- bootbox.prompt('[[admin/manage/users:alerts.prompt-email]]', function (email) {
- if (!email) {
- return;
- }
-
- socket.emit('user.invite', email, function (err) {
- if (err) {
- return app.alertError(err.message);
- }
- app.alertSuccess('[[admin/manage/users:alerts.email-sent-to, ' + email + ']]');
- });
- });
- return false;
- });
- }
-
function buildSearchQuery(params) {
if ($('#user-search').val()) {
params.query = $('#user-search').val();
diff --git a/public/src/app.js b/public/src/app.js
index b8ae62ac7b..14a3593917 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -244,7 +244,10 @@ app.cacheBuster = null;
$('#main-nav li')
.removeClass('active')
.find('a')
- .filter(function (i, x) { return window.location.pathname.startsWith(x.getAttribute('href')); })
+ .filter(function (i, x) {
+ return window.location.pathname === x.pathname ||
+ window.location.pathname.startsWith(x.pathname + '/');
+ })
.parent()
.addClass('active');
}
diff --git a/public/src/client/topic.js b/public/src/client/topic.js
index b193b8cc9e..c54c631c5a 100644
--- a/public/src/client/topic.js
+++ b/public/src/client/topic.js
@@ -227,7 +227,7 @@ define('forum/topic', [
updateUserBookmark(index);
Topic.replaceURLTimeout = 0;
- if (history.replaceState) {
+ if (ajaxify.data.updateUrlWithPostIndex && history.replaceState) {
var search = window.location.search || '';
if (!config.usePagination) {
search = (search && !/^\?page=\d+$/.test(search) ? search : '');
diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js
index 6db44e7050..bb42e1e026 100644
--- a/public/src/client/topic/events.js
+++ b/public/src/client/topic/events.js
@@ -96,7 +96,7 @@ define('forum/topic/events', [
}
function onPostEdited(data) {
- if (!data || !data.post) {
+ if (!data || !data.post || parseInt(data.post.tid, 10) !== parseInt(ajaxify.data.tid, 10)) {
return;
}
var editedPostEl = components.get('post/content', data.post.pid).filter(function (index, el) {
@@ -174,6 +174,9 @@ define('forum/topic/events', [
}
function onPostPurged(postData) {
+ if (!postData || parseInt(postData.tid, 10) !== parseInt(ajaxify.data.tid, 10)) {
+ return;
+ }
components.get('post', 'pid', postData.pid).fadeOut(500, function () {
$(this).remove();
posts.showBottomPostBar();
diff --git a/public/src/client/users.js b/public/src/client/users.js
index 859d0e686b..50ecab2ac1 100644
--- a/public/src/client/users.js
+++ b/public/src/client/users.js
@@ -2,8 +2,8 @@
define('forum/users', [
- 'translator', 'benchpress', 'api',
-], function (translator, Benchpress, api) {
+ 'translator', 'benchpress', 'api', 'accounts/invite',
+], function (translator, Benchpress, api, AccountInvite) {
var Users = {};
var searchTimeoutID = 0;
@@ -25,7 +25,7 @@ define('forum/users', [
Users.handleSearch();
- handleInvite();
+ AccountInvite.handle();
socket.removeListener('event:user_status_change', onUserStatusChange);
socket.on('event:user_status_change', onUserStatusChange);
@@ -135,22 +135,5 @@ define('forum/users', [
return utils.params().section || '';
}
- function handleInvite() {
- $('[component="user/invite"]').on('click', function () {
- bootbox.prompt('[[users:prompt-email]]', function (email) {
- if (!email) {
- return;
- }
-
- socket.emit('user.invite', email, function (err) {
- if (err) {
- return app.alertError(err.message);
- }
- app.alertSuccess('[[users:invitation-email-sent, ' + email + ']]');
- });
- });
- });
- }
-
return Users;
});
diff --git a/public/src/modules/accounts/delete.js b/public/src/modules/accounts/delete.js
index 06a9003c79..3be11dd4a1 100644
--- a/public/src/modules/accounts/delete.js
+++ b/public/src/modules/accounts/delete.js
@@ -1,13 +1,13 @@
'use strict';
-define('accounts/delete', [], function () {
+define('accounts/delete', ['api', 'bootbox'], function (api) {
var Delete = {};
Delete.account = function (uid, callback) {
executeAction(
uid,
'[[user:delete_this_account_confirm]]',
- 'admin.user.deleteUsers',
+ '/account',
'[[user:account-deleted]]',
callback
);
@@ -17,7 +17,7 @@ define('accounts/delete', [], function () {
executeAction(
uid,
'[[user:delete_account_content_confirm]]',
- 'admin.user.deleteUsersContent',
+ '/content',
'[[user:account-content-deleted]]',
callback
);
@@ -27,22 +27,19 @@ define('accounts/delete', [], function () {
executeAction(
uid,
'[[user:delete_all_confirm]]',
- 'admin.user.deleteUsersAndContent',
+ '',
'[[user:account-deleted]]',
callback
);
};
- function executeAction(uid, confirmText, action, successText, callback) {
+ function executeAction(uid, confirmText, path, successText, callback) {
bootbox.confirm(confirmText, function (confirm) {
if (!confirm) {
return;
}
- socket.emit(action, [uid], function (err) {
- if (err) {
- return app.alertError(err.message);
- }
+ api.del(`/users/${uid}${path}`, {}).then(() => {
app.alertSuccess(successText);
if (typeof callback === 'function') {
diff --git a/public/src/modules/accounts/invite.js b/public/src/modules/accounts/invite.js
new file mode 100644
index 0000000000..621c84bcba
--- /dev/null
+++ b/public/src/modules/accounts/invite.js
@@ -0,0 +1,64 @@
+'use strict';
+
+define('accounts/invite', ['api', 'benchpress', 'bootbox'], function (api, Benchpress, bootbox) {
+ const Invite = {};
+
+ function isACP() {
+ return ajaxify.data.template.name.startsWith('admin/');
+ }
+
+ Invite.handle = function () {
+ $('[component="user/invite"]').on('click', function (e) {
+ e.preventDefault();
+ api.get(`/api/v3/users/${app.user.uid}/invites/groups`, {}).then((groups) => {
+ Benchpress.parse('modals/invite', { groups: groups }, function (html) {
+ bootbox.dialog({
+ message: html,
+ title: `[[${isACP ? 'admin/manage/users:invite' : 'users:invite'}]]`,
+ onEscape: true,
+ buttons: {
+ cancel: {
+ label: `[[${isACP ? 'admin/manage/users:alerts.button-cancel' : 'modules:bootbox.cancel'}]]`,
+ className: 'btn-default',
+ },
+ invite: {
+ label: `[[${isACP ? 'admin/manage/users:invite' : 'users:invite'}]]`,
+ className: 'btn-primary',
+ callback: Invite.send,
+ },
+ },
+ });
+ });
+ }).catch((err) => {
+ app.alertError(err.message);
+ });
+ });
+ };
+
+ Invite.send = function () {
+ var $emails = $('#invite-modal-emails');
+ var $groups = $('#invite-modal-groups');
+
+ var data = {
+ emails: $emails.val()
+ .split(',')
+ .map(m => m.trim())
+ .filter(Boolean)
+ .filter((m, i, arr) => i === arr.indexOf(m))
+ .join(','),
+ groupsToJoin: $groups.val(),
+ };
+
+ if (!data.emails) {
+ return;
+ }
+
+ api.post(`/users/${app.user.uid}/invites`, data).then(() => {
+ app.alertSuccess(`[[${isACP ? 'admin/manage/users:alerts.email-sent-to' : 'users:invitation-email-sent'}, ${data.emails.replace(/,/g, ', ')}]]`);
+ }).catch((err) => {
+ app.alertError(err.message);
+ });
+ };
+
+ return Invite;
+});
diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js
index be9e89fa41..2fd50d5703 100644
--- a/public/src/modules/translator.js
+++ b/public/src/modules/translator.js
@@ -311,7 +311,28 @@
if (key) {
return translation.then(function (x) {
- return x[key];
+ if (typeof x[key] === 'string') return x[key];
+ const keyParts = key.split('.');
+ for (let i = 0; i <= keyParts.length; i++) {
+ if (i === keyParts.length) {
+ // default to trying to find key with the same name as parent or equal to empty string
+ return x[keyParts[i - 1]] !== undefined ? x[keyParts[i - 1]] : x[''];
+ }
+ switch (typeof x[keyParts[i]]) {
+ case 'object':
+ x = x[keyParts[i]];
+ break;
+ case 'string':
+ if (i === keyParts.length - 1) {
+ return x[keyParts[i]];
+ }
+
+ return false;
+
+ default:
+ return false;
+ }
+ }
});
}
return translation;
diff --git a/src/api/users.js b/src/api/users.js
index e9cd6dea2c..d83d740371 100644
--- a/src/api/users.js
+++ b/src/api/users.js
@@ -81,13 +81,21 @@ usersAPI.update = async function (caller, data) {
return userData;
};
-usersAPI.delete = async function (caller, data) {
- processDeletion(data.uid, caller);
+usersAPI.delete = async function (caller, { uid, password }) {
+ processDeletion({ uid: uid, method: 'delete', password, caller });
+};
+
+usersAPI.deleteContent = async function (caller, { uid, password }) {
+ processDeletion({ uid, method: 'deleteContent', password, caller });
+};
+
+usersAPI.deleteAccount = async function (caller, { uid, password }) {
+ processDeletion({ uid, method: 'deleteAccount', password, caller });
};
usersAPI.deleteMany = async function (caller, data) {
if (await canDeleteUids(data.uids)) {
- await Promise.all(data.uids.map(uid => processDeletion(uid, caller)));
+ await Promise.all(data.uids.map(uid => processDeletion({ uid, method: 'delete', caller })));
}
};
@@ -229,22 +237,56 @@ async function isPrivilegedOrSelfAndPasswordMatch(caller, data) {
}
}
-async function processDeletion(uid, caller) {
+async function processDeletion({ uid, method, password, caller }) {
const isTargetAdmin = await user.isAdministrator(uid);
const isSelf = parseInt(uid, 10) === caller.uid;
const isAdmin = await user.isAdministrator(caller.uid);
- if (!isSelf && !isAdmin) {
+ if (meta.config.allowAccountDelete !== 1) {
throw new Error('[[error:no-privileges]]');
- } else if (!isSelf && isTargetAdmin) {
+ } else if (!isSelf && !isAdmin) {
+ throw new Error('[[error:no-privileges]]');
+ } else if (isTargetAdmin) {
throw new Error('[[error:cant-delete-other-admins]]');
}
+ // Privilege checks -- only deleteAccount is available for non-admins
+ const hasAdminPrivilege = await privileges.admin.can('admin:users', caller.uid);
+ if (!hasAdminPrivilege && ['delete', 'deleteContent'].includes(method)) {
+ throw new Error('[[error:no-privileges]]');
+ }
+
+ // Self-deletions require a password
+ const hasPassword = await user.hasPassword(uid);
+ if (isSelf && hasPassword) {
+ const ok = await user.isPasswordCorrect(uid, password, caller.ip);
+ if (!ok) {
+ throw new Error('[[error:invalid-password]]');
+ }
+ }
+
// TODO: clear user tokens for this uid
await flags.resolveFlag('user', uid, caller.uid);
- const userData = await user.delete(caller.uid, uid);
+
+ let userData;
+ if (method === 'deleteAccount') {
+ userData = await user[method](uid);
+ } else {
+ userData = await user[method](caller.uid, uid);
+ }
+ userData = userData || {};
+
+ sockets.server.sockets.emit('event:user_status_change', { uid: caller.uid, status: 'offline' });
+
+ plugins.fireHook('action:user.delete', {
+ callerUid: caller.uid,
+ uid: uid,
+ ip: caller.ip,
+ user: userData,
+ });
+
await events.log({
- type: 'user-delete',
+ type: `user-${method}`,
uid: caller.uid,
targetUid: uid,
ip: caller.ip,
diff --git a/src/controllers/admin/cache.js b/src/controllers/admin/cache.js
index fadec76338..840ff65efa 100644
--- a/src/controllers/admin/cache.js
+++ b/src/controllers/admin/cache.js
@@ -9,7 +9,6 @@ cacheController.get = function (req, res) {
const groupCache = require('../../groups').cache;
const objectCache = require('../../database').objectCache;
const localCache = require('../../cache');
- const headerFooterCache = require('../../middleware').headerFooterCache;
function getInfo(cache) {
return {
@@ -28,7 +27,6 @@ cacheController.get = function (req, res) {
postCache: getInfo(postCache),
groupCache: getInfo(groupCache),
localCache: getInfo(localCache),
- headerFooterCache: getInfo(headerFooterCache),
};
if (objectCache) {
@@ -44,7 +42,6 @@ cacheController.dump = function (req, res, next) {
object: require('../../database').objectCache,
group: require('../../groups').cache,
local: require('../../cache'),
- headerfooter: require('../../middleware').headerFooterCache,
};
if (!caches[req.query.name]) {
return next();
diff --git a/src/controllers/admin/users.js b/src/controllers/admin/users.js
index 3acd0cd808..99f3d4231b 100644
--- a/src/controllers/admin/users.js
+++ b/src/controllers/admin/users.js
@@ -9,6 +9,7 @@ const db = require('../../database');
const pagination = require('../../pagination');
const events = require('../../events');
const plugins = require('../../plugins');
+const privileges = require('../../privileges');
const utils = require('../../utils');
const usersController = module.exports;
@@ -115,7 +116,7 @@ async function getUsers(req, res) {
getUsersWithFields(set),
]);
- render(req, res, {
+ await render(req, res, {
users: users.filter(user => user && parseInt(user.uid, 10)),
page: page,
pageCount: Math.max(1, Math.ceil(count / resultsPerPage)),
@@ -176,7 +177,7 @@ usersController.search = async function (req, res) {
searchData.resultsPerPage = resultsPerPage;
searchData.sortBy = req.query.sortBy;
searchData.reverse = reverse;
- render(req, res, searchData);
+ await render(req, res, searchData);
};
usersController.registrationQueue = async function (req, res) {
@@ -226,7 +227,7 @@ async function getInvites() {
return invitations;
}
-function render(req, res, data) {
+async function render(req, res, data) {
data.pagination = pagination.create(data.page, data.pageCount, req.query);
const registrationType = meta.config.registrationType;
@@ -241,6 +242,13 @@ function render(req, res, data) {
filterBy.forEach(function (filter) {
data['filterBy_' + validator.escape(String(filter))] = true;
});
+
+ if (data.adminInviteOnly) {
+ data.showInviteButton = await privileges.users.isAdministrator(req.uid);
+ } else {
+ data.showInviteButton = await privileges.users.hasInvitePrivilege(req.uid);
+ }
+
res.render('admin/manage/users', data);
}
diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js
index 2b59a835a0..7d52e76082 100644
--- a/src/controllers/authentication.js
+++ b/src/controllers/authentication.js
@@ -55,7 +55,11 @@ async function registerAndLoginUser(req, res, userData) {
await authenticationController.doLogin(req, uid);
}
- user.deleteInvitationKey(userData.email);
+ // Distinguish registrations through invites from direct ones
+ if (userData.token) {
+ await user.joinGroupsFromInvitation(uid, userData.email);
+ }
+ await user.deleteInvitationKey(userData.email);
const referrer = req.body.referrer || req.session.referrer || nconf.get('relative_path') + '/';
const complete = await plugins.fireHook('filter:register.complete', { uid: uid, referrer: referrer });
req.session.returnTo = complete.referrer;
@@ -74,7 +78,7 @@ authenticationController.register = async function (req, res) {
const userData = req.body;
try {
- if (registrationType === 'invite-only' || registrationType === 'admin-invite-only') {
+ if (userData.token || registrationType === 'invite-only' || registrationType === 'admin-invite-only') {
await user.verifyInvitation(userData);
}
@@ -118,7 +122,17 @@ authenticationController.register = async function (req, res) {
async function addToApprovalQueue(req, userData) {
userData.ip = req.ip;
await user.addToApprovalQueue(userData);
- return { message: '[[register:registration-added-to-queue]]' };
+ let message = '[[register:registration-added-to-queue]]';
+ if (meta.config.showAverageApprovalTime) {
+ const average_time = await db.getObjectField('registration:queue:approval:times', 'average');
+ if (average_time > 0) {
+ message += ` [[register:registration-queue-average-time, ${Math.floor(average_time / 60)}, ${average_time % 60}]]`;
+ }
+ }
+ if (meta.config.autoApproveTime > 0) {
+ message += ` [[register:registration-queue-auto-approve-time, ${meta.config.autoApproveTime}]]`;
+ }
+ return { message: message };
}
authenticationController.registerComplete = function (req, res, next) {
diff --git a/src/controllers/composer.js b/src/controllers/composer.js
index 5d9e3a3260..3a30e3dab0 100644
--- a/src/controllers/composer.js
+++ b/src/controllers/composer.js
@@ -77,7 +77,7 @@ exports.post = async function (req, res) {
throw new Error('[[error:invalid-data]]');
}
if (result.queued) {
- return res.redirect((nconf.get('relative_path') || '/'));
+ return res.redirect((nconf.get('relative_path') || '/') + '?noScriptMessage=[[success:post-queued]]');
}
const uid = result.uid ? result.uid : result.topicData.uid;
user.updateOnlineUsers(uid);
diff --git a/src/controllers/helpers.js b/src/controllers/helpers.js
index cf07d469cb..8bbe2ffe1a 100644
--- a/src/controllers/helpers.js
+++ b/src/controllers/helpers.js
@@ -144,7 +144,7 @@ helpers.notAllowed = async function (req, res, error) {
};
helpers.redirect = function (res, url, permanent) {
- if (res.locals.isAPI && !url.startsWith('/api/v3/')) {
+ if (res.locals.isAPI) {
res.set('X-Redirect', encodeURI(url)).status(200).json(url);
} else {
res.redirect(permanent ? 308 : 307, relative_path + encodeURI(url));
diff --git a/src/controllers/index.js b/src/controllers/index.js
index 285ac8d78b..51e866a051 100644
--- a/src/controllers/index.js
+++ b/src/controllers/index.js
@@ -40,7 +40,7 @@ Controllers.composer = require('./composer');
Controllers.write = require('./write');
-Controllers.reset = function (req, res, next) {
+Controllers.reset = async function (req, res) {
if (meta.config['password:disableEdit']) {
return helpers.notAllowed(req, res);
}
@@ -78,14 +78,9 @@ Controllers.reset = function (req, res, next) {
if (req.session.reset_code) {
// Validate and save to local variable before removing from session
- user.reset.validate(req.session.reset_code, function (err, valid) {
- if (err) {
- return next(err);
- }
-
- renderReset(req.session.reset_code, valid);
- delete req.session.reset_code;
- });
+ const valid = await user.reset.validate(req.session.reset_code);
+ renderReset(req.session.reset_code, valid);
+ delete req.session.reset_code;
} else {
res.render('reset', {
code: null,
@@ -97,14 +92,14 @@ Controllers.reset = function (req, res, next) {
}
};
-Controllers.login = function (req, res, next) {
- var data = { loginFormEntry: [] };
- var loginStrategies = require('../routes/authentication').getLoginStrategies();
- var registrationType = meta.config.registrationType || 'normal';
- var allowLoginWith = (meta.config.allowLoginWith || 'username-email');
- var returnTo = (req.headers['x-return-to'] || '').replace(nconf.get('base_url') + nconf.get('relative_path'), '');
+Controllers.login = async function (req, res) {
+ const data = { loginFormEntry: [] };
+ const loginStrategies = require('../routes/authentication').getLoginStrategies();
+ const registrationType = meta.config.registrationType || 'normal';
+ const allowLoginWith = (meta.config.allowLoginWith || 'username-email');
+ const returnTo = (req.headers['x-return-to'] || '').replace(nconf.get('base_url') + nconf.get('relative_path'), '');
- var errorText;
+ let errorText;
if (req.query.error === 'csrf-invalid') {
errorText = '[[error:csrf-invalid]]';
} else if (req.query.error) {
@@ -126,33 +121,24 @@ Controllers.login = function (req, res, next) {
data.title = '[[pages:login]]';
data.allowPasswordReset = !meta.config['password:disableEdit'];
- privileges.global.canGroup('local:login', 'registered-users', function (err, hasLoginPrivilege) {
- if (err) {
- return next(err);
- }
+ const hasLoginPrivilege = await privileges.global.canGroup('local:login', 'registered-users');
+ data.allowLocalLogin = hasLoginPrivilege || parseInt(req.query.local, 10) === 1;
- data.allowLocalLogin = hasLoginPrivilege || parseInt(req.query.local, 10) === 1;
- if (!data.allowLocalLogin && !data.allowRegistration && data.alternate_logins && data.authentication.length === 1) {
- if (res.locals.isAPI) {
- return helpers.redirect(res, {
- external: nconf.get('relative_path') + data.authentication[0].url,
- });
- }
- return res.redirect(nconf.get('relative_path') + data.authentication[0].url);
- }
- if (req.loggedIn) {
- user.getUserFields(req.uid, ['username', 'email'], function (err, user) {
- if (err) {
- return next(err);
- }
- data.username = allowLoginWith === 'email' ? user.email : user.username;
- data.alternate_logins = false;
- res.render('login', data);
+ if (!data.allowLocalLogin && !data.allowRegistration && data.alternate_logins && data.authentication.length === 1) {
+ if (res.locals.isAPI) {
+ return helpers.redirect(res, {
+ external: nconf.get('relative_path') + data.authentication[0].url,
});
- } else {
- res.render('login', data);
}
- });
+ return res.redirect(nconf.get('relative_path') + data.authentication[0].url);
+ }
+
+ if (req.loggedIn) {
+ const userData = await user.getUserFields(req.uid, ['username', 'email']);
+ data.username = allowLoginWith === 'email' ? userData.email : userData.username;
+ data.alternate_logins = false;
+ }
+ res.render('login', data);
};
Controllers.register = async function (req, res, next) {
@@ -246,8 +232,8 @@ Controllers.robots = function (req, res) {
}
};
-Controllers.manifest = function (req, res, next) {
- var manifest = {
+Controllers.manifest = async function (req, res) {
+ const manifest = {
name: meta.config.title || 'NodeBB',
short_name: meta.config['title:short'] || meta.config.title || 'NodeBB',
start_url: nconf.get('url'),
@@ -312,18 +298,21 @@ Controllers.manifest = function (req, res, next) {
});
}
- plugins.fireHook('filter:manifest.build', { req: req, res: res, manifest: manifest }, function (err, data) {
- if (err) {
- return next(err);
- }
- res.status(200).json(data.manifest);
+ const data = await plugins.fireHook('filter:manifest.build', {
+ req: req,
+ res: res,
+ manifest: manifest,
});
+ res.status(200).json(data.manifest);
};
Controllers.outgoing = function (req, res, next) {
- var url = req.query.url || '';
- var allowedProtocols = ['http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp', 'webcal'];
- var parsed = require('url').parse(url);
+ const url = req.query.url || '';
+ const allowedProtocols = [
+ 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher',
+ 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp', 'webcal',
+ ];
+ const parsed = require('url').parse(url);
if (!url || !parsed.protocol || !allowedProtocols.includes(parsed.protocol.slice(0, -1))) {
return next();
diff --git a/src/controllers/topics.js b/src/controllers/topics.js
index 2b40f4595b..5da598ebd2 100644
--- a/src/controllers/topics.js
+++ b/src/controllers/topics.js
@@ -5,6 +5,7 @@ const nconf = require('nconf');
const user = require('../user');
const meta = require('../meta');
const topics = require('../topics');
+const categories = require('../categories');
const posts = require('../posts');
const privileges = require('../privileges');
const helpers = require('./helpers');
@@ -81,6 +82,7 @@ topicsController.get = async function getTopic(req, res, callback) {
topicData.postEditDuration = meta.config.postEditDuration;
topicData.postDeleteDuration = meta.config.postDeleteDuration;
topicData.scrollToMyPost = settings.scrollToMyPost;
+ topicData.updateUrlWithPostIndex = settings.updateUrlWithPostIndex;
topicData.allowMultipleBadges = meta.config.allowMultipleBadges === 1;
topicData.privateUploads = meta.config.privateUploads === 1;
topicData.rssFeedUrl = relative_path + '/topic/' + topicData.tid + '.rss';
@@ -92,6 +94,7 @@ topicsController.get = async function getTopic(req, res, callback) {
await Promise.all([
buildBreadcrumbs(topicData),
+ addOldCategory(topicData, userPrivileges),
addTags(topicData, req, res),
incrementViewCount(req, tid),
markAsRead(req, tid),
@@ -165,6 +168,14 @@ async function buildBreadcrumbs(topicData) {
topicData.breadcrumbs = parentCrumbs.concat(breadcrumbs);
}
+async function addOldCategory(topicData, userPrivileges) {
+ if (userPrivileges.isAdminOrMod && topicData.oldCid) {
+ topicData.oldCategory = await categories.getCategoryFields(
+ topicData.oldCid, ['cid', 'name', 'icon', 'bgColor', 'color', 'slug']
+ );
+ }
+}
+
async function addTags(topicData, req, res) {
const postIndex = parseInt(req.params.post_index, 10) || 0;
const postAtIndex = topicData.posts.find(p => parseInt(p.index, 10) === parseInt(Math.max(0, postIndex - 1), 10));
diff --git a/src/controllers/users.js b/src/controllers/users.js
index eef5b9c0e5..17d10fd517 100644
--- a/src/controllers/users.js
+++ b/src/controllers/users.js
@@ -96,7 +96,7 @@ async function renderIfAdminOrGlobalMod(set, req, res) {
usersController.renderUsersPage = async function (set, req, res) {
const userData = await usersController.getUsers(set, req.uid, req.query);
- render(req, res, userData);
+ await render(req, res, userData);
};
usersController.getUsers = async function (set, uid, query) {
@@ -171,10 +171,15 @@ async function render(req, res, data) {
data.inviteOnly = registrationType === 'invite-only' || registrationType === 'admin-invite-only';
data.adminInviteOnly = registrationType === 'admin-invite-only';
data.invites = await user.getInvitesNumber(req.uid);
- data.showInviteButton = req.loggedIn && (
- (registrationType === 'invite-only' && (data.isAdmin || !data.maximumInvites || data.invites < data.maximumInvites)) ||
- (registrationType === 'admin-invite-only' && data.isAdmin)
- );
+
+ data.showInviteButton = false;
+ if (data.adminInviteOnly) {
+ data.showInviteButton = await privileges.users.isAdministrator(req.uid);
+ } else if (req.loggedIn) {
+ const canInvite = await privileges.users.hasInvitePrivilege(req.uid);
+ data.showInviteButton = canInvite && (!data.maximumInvites || data.invites < data.maximumInvites);
+ }
+
data['reputation:disabled'] = meta.config['reputation:disabled'];
res.append('X-Total-Count', data.userCount);
diff --git a/src/controllers/write/users.js b/src/controllers/write/users.js
index 61bfc8827e..5e3c7acbc5 100644
--- a/src/controllers/write/users.js
+++ b/src/controllers/write/users.js
@@ -1,12 +1,14 @@
'use strict';
const util = require('util');
+const nconf = require('nconf');
const db = require('../../database');
const api = require('../../api');
-const user = require('../../user');
+const groups = require('../../groups');
const meta = require('../../meta');
const privileges = require('../../privileges');
+const user = require('../../user');
const utils = require('../../utils');
const helpers = require('../helpers');
@@ -25,7 +27,7 @@ Users.redirectBySlug = async (req, res) => {
if (uid) {
const path = req.path.split('/').slice(3).join('/');
- helpers.redirect(res, `/api/v3/users/${uid}/${path}`, true);
+ res.redirect(308, nconf.get('relative_path') + encodeURI(`/api/v3/users/${uid}/${path}`));
} else {
helpers.formatApiResponse(404, res);
}
@@ -47,7 +49,17 @@ Users.update = async (req, res) => {
};
Users.delete = async (req, res) => {
- await api.users.delete(req, req.params);
+ await api.users.delete(req, { ...req.params, password: req.body.password });
+ helpers.formatApiResponse(200, res);
+};
+
+Users.deleteContent = async (req, res) => {
+ await api.users.deleteContent(req, { ...req.params, password: req.body.password });
+ helpers.formatApiResponse(200, res);
+};
+
+Users.deleteAccount = async (req, res) => {
+ await api.users.deleteAccount(req, { ...req.params, password: req.body.password });
helpers.formatApiResponse(200, res);
};
@@ -152,3 +164,60 @@ Users.revokeSession = async (req, res) => {
await user.auth.revokeSession(_id, req.params.uid);
helpers.formatApiResponse(200, res);
};
+
+Users.invite = async (req, res) => {
+ const { emails, groupsToJoin = [] } = req.body;
+
+ if (!emails || !Array.isArray(groupsToJoin)) {
+ return helpers.formatApiResponse(400, res, new Error('[[error:invalid-data]]'));
+ }
+
+ // For simplicity, this API route is restricted to self-use only. This can change if needed.
+ if (parseInt(req.user.uid, 10) !== parseInt(req.params.uid, 10)) {
+ return helpers.formatApiResponse(403, res, new Error('[[error:no-privileges]]'));
+ }
+
+ const canInvite = await privileges.users.hasInvitePrivilege(req.uid);
+ if (!canInvite) {
+ return helpers.formatApiResponse(403, res, new Error('[[error:no-privileges]]'));
+ }
+
+ const registrationType = meta.config.registrationType;
+ const isAdmin = await user.isAdministrator(req.uid);
+ if (registrationType === 'admin-invite-only' && !isAdmin) {
+ return helpers.formatApiResponse(403, res, new Error('[[error:no-privileges]]'));
+ }
+
+ const inviteGroups = await groups.getUserInviteGroups(req.uid);
+ const cannotInvite = groupsToJoin.some(group => !inviteGroups.includes(group));
+ if (groupsToJoin.length > 0 && cannotInvite) {
+ return helpers.formatApiResponse(403, res, new Error('[[error:no-privileges]]'));
+ }
+
+ const max = meta.config.maximumInvites;
+ const emailsArr = emails.split(',').map(email => email.trim()).filter(Boolean);
+
+ for (const email of emailsArr) {
+ /* eslint-disable no-await-in-loop */
+ let invites = 0;
+ if (max) {
+ invites = await user.getInvitesNumber(req.uid);
+ }
+ if (!isAdmin && max && invites >= max) {
+ return helpers.formatApiResponse(403, res, new Error('[[error:invite-maximum-met, ' + invites + ', ' + max + ']]'));
+ }
+
+ await user.sendInvitationEmail(req.uid, email, groupsToJoin);
+ }
+
+ return helpers.formatApiResponse(200, res);
+};
+
+Users.getInviteGroups = async function (req, res) {
+ if (parseInt(req.params.uid, 10) !== parseInt(req.user.uid, 10)) {
+ return helpers.formatApiResponse(401, res);
+ }
+
+ const userInviteGroups = await groups.getUserInviteGroups(req.params.uid);
+ return helpers.formatApiResponse(200, res, userInviteGroups);
+};
diff --git a/src/emailer.js b/src/emailer.js
index ac8abc9a14..9a5d67e07d 100644
--- a/src/emailer.js
+++ b/src/emailer.js
@@ -81,9 +81,7 @@ const buildCustomTemplates = async (config) => {
await Promise.all(templatesToBuild.map(async (template) => {
const source = await meta.templates.processImports(paths, template.path, template.text);
- const compiled = await Benchpress.precompile(source, {
- minify: global.env !== 'development',
- });
+ const compiled = await Benchpress.precompile(source, { filename: template.path });
await fs.promises.writeFile(template.fullpath.replace(/\.tpl$/, '.js'), compiled);
}));
diff --git a/src/flags.js b/src/flags.js
index 3292cdd946..98ecfb2251 100644
--- a/src/flags.js
+++ b/src/flags.js
@@ -257,6 +257,9 @@ Flags.validate = async function (payload) {
throw new Error('[[error:not-enough-reputation-to-flag]]');
}
} else if (payload.type === 'user') {
+ if (parseInt(payload.id, 10) === parseInt(payload.uid, 10)) {
+ throw new Error('[[error:cant-flag-self]]');
+ }
const editable = await privileges.users.canEdit(payload.uid, payload.id);
if (!editable && !meta.config['reputation:disabled'] && reporter.reputation < meta.config['min:rep:flag']) {
throw new Error('[[error:not-enough-reputation-to-flag]]');
@@ -395,7 +398,7 @@ Flags.create = async function (type, id, uid, reason, timestamp) {
posts.setPostField(id, 'flagId', flagId)
);
- if (targetUid) {
+ if (targetUid && parseInt(targetUid, 10) !== parseInt(uid, 10)) {
batched.push(user.incrementUserFlagsBy(targetUid, 1));
}
} else if (type === 'user') {
diff --git a/src/groups/data.js b/src/groups/data.js
index c866902b4c..6747fc0078 100644
--- a/src/groups/data.js
+++ b/src/groups/data.js
@@ -75,6 +75,7 @@ function modifyGroup(group, fields) {
group.icon = validator.escape(String(group.icon || ''));
group.createtimeISO = utils.toISOString(group.createtime);
group.private = ([null, undefined].includes(group.private)) ? 1 : group.private;
+ group.memberPostCids = (group.memberPostCids || '').split(',').map(cid => parseInt(cid, 10)).filter(Boolean);
group['cover:thumb:url'] = group['cover:thumb:url'] || group['cover:url'];
diff --git a/src/groups/index.js b/src/groups/index.js
index 4140e558f9..732f415e6b 100644
--- a/src/groups/index.js
+++ b/src/groups/index.js
@@ -1,6 +1,7 @@
'use strict';
const user = require('../user');
+const categories = require('../categories');
const db = require('../database');
const plugins = require('../plugins');
const slugify = require('../slugify');
@@ -119,9 +120,10 @@ Groups.get = async function (groupName, options) {
stop = (parseInt(options.userListCount, 10) || 4) - 1;
}
- const [groupData, members, pending, invited, isMember, isPending, isInvited, isOwner] = await Promise.all([
+ const [groupData, members, selectCategories, pending, invited, isMember, isPending, isInvited, isOwner] = await Promise.all([
Groups.getGroupData(groupName),
Groups.getOwnersAndMembers(groupName, options.uid, 0, stop),
+ categories.buildForSelect(groupName, 'topics:read', []),
Groups.getUsersFromSet('group:' + groupName + ':pending', ['username', 'userslug', 'picture']),
Groups.getUsersFromSet('group:' + groupName + ':invited', ['username', 'userslug', 'picture']),
Groups.isMember(options.uid, groupName),
@@ -135,6 +137,10 @@ Groups.get = async function (groupName, options) {
}
const descriptionParsed = await plugins.fireHook('filter:parse.raw', groupData.description);
groupData.descriptionParsed = descriptionParsed;
+ groupData.categories = selectCategories.map((category) => {
+ category.selected = groupData.memberPostCids.includes(category.cid);
+ return category;
+ });
groupData.members = members;
groupData.membersNextStart = stop + 1;
groupData.pending = pending.filter(Boolean);
diff --git a/src/groups/posts.js b/src/groups/posts.js
index a96cd9e217..465f060b4b 100644
--- a/src/groups/posts.js
+++ b/src/groups/posts.js
@@ -1,6 +1,7 @@
'use strict';
const db = require('../database');
+const groups = require('.');
const privileges = require('../privileges');
const posts = require('../posts');
@@ -13,6 +14,10 @@ module.exports = function (Groups) {
let groupNames = await Groups.getUserGroupMembership('groups:visible:createtime', [postData.uid]);
groupNames = groupNames[0];
+ // Only process those groups that have the cid in its memberPostCids setting (or no setting at all)
+ const groupsCids = await groups.getGroupsFields(groupNames, ['memberPostCids']);
+ groupNames = groupNames.filter((groupName, idx) => !groupsCids[idx].memberPostCids.length || groupsCids[idx].memberPostCids.includes(postData.cid));
+
const keys = groupNames.map(groupName => 'group:' + groupName + ':member:pids');
await db.sortedSetsAdd(keys, postData.timestamp, postData.pid);
await Promise.all(groupNames.map(name => truncateMemberPosts(name)));
diff --git a/src/groups/update.js b/src/groups/update.js
index eb477944c5..50027fc9bd 100644
--- a/src/groups/update.js
+++ b/src/groups/update.js
@@ -2,6 +2,7 @@
const winston = require('winston');
+const categories = require('../categories');
const plugins = require('../plugins');
const slugify = require('../slugify');
const db = require('../database');
@@ -18,11 +19,10 @@ module.exports = function (Groups) {
throw new Error('[[error:no-group]]');
}
- const result = await plugins.fireHook('filter:group.update', {
+ ({ values } = await plugins.fireHook('filter:group.update', {
groupName: groupName,
values: values,
- });
- values = result.values;
+ }));
const payload = {
description: values.description || '',
@@ -66,6 +66,12 @@ module.exports = function (Groups) {
if (values.hasOwnProperty('hidden')) {
await updateVisibility(groupName, values.hidden);
}
+
+ if (values.hasOwnProperty('memberPostCids')) {
+ const validCids = await categories.getCidsByPrivilege('categories:cid', groupName, 'topics:read');
+ payload.memberPostCids = values.memberPostCids.filter(cid => validCids.includes(cid)).join(',') || '';
+ }
+
await db.setObject('group:' + groupName, payload);
await Groups.renameGroup(groupName, values.name);
diff --git a/src/groups/user.js b/src/groups/user.js
index 4cb01ce9e2..5255adff1a 100644
--- a/src/groups/user.js
+++ b/src/groups/user.js
@@ -31,4 +31,34 @@ module.exports = function (Groups) {
const isMembers = await Groups.isMemberOfGroups(uid, groupNames);
return groupNames.filter((name, i) => isMembers[i]);
}
+
+ Groups.getUserInviteGroups = async function (uid) {
+ let allGroups = await Groups.getNonPrivilegeGroups('groups:createtime', 0, -1);
+ allGroups = allGroups.filter(group => !Groups.ephemeralGroups.includes(group.name));
+
+ const publicGroups = allGroups.filter(group => group.hidden === 0 && group.system === 0 && group.private === 0);
+ const adminModGroups = [{ name: 'administrators' }, { name: 'Global Moderators' }];
+ // Private (but not hidden)
+ const privateGroups = allGroups.filter(group => group.hidden === 0 && group.system === 0 && group.private === 1);
+
+ const [ownership, isAdmin, isGlobalMod] = await Promise.all([
+ Promise.all(privateGroups.map(group => Groups.ownership.isOwner(uid, group.name))),
+ user.isAdministrator(uid),
+ user.isGlobalModerator(uid),
+ ]);
+ const ownGroups = privateGroups.filter((group, index) => ownership[index]);
+
+ let inviteGroups = [];
+ if (isAdmin) {
+ inviteGroups = inviteGroups.concat(adminModGroups).concat(privateGroups);
+ } else if (isGlobalMod) {
+ inviteGroups = inviteGroups.concat(privateGroups);
+ } else {
+ inviteGroups = inviteGroups.concat(ownGroups);
+ }
+
+ return inviteGroups
+ .concat(publicGroups)
+ .map(group => group.name);
+ };
};
diff --git a/src/messaging/create.js b/src/messaging/create.js
index 1f8a3b48f0..2d6a10b8e8 100644
--- a/src/messaging/create.js
+++ b/src/messaging/create.js
@@ -22,12 +22,13 @@ module.exports = function (Messaging) {
}
const maximumChatMessageLength = meta.config.maximumChatMessageLength || 1000;
- const data = await plugins.fireHook('filter:messaging.checkContent', { content: content });
- content = String(data.content).trim();
+ content = String(content).trim();
+ let length = String(content.length).trim();
+ ({ content, length } = await plugins.fireHook('filter:messaging.checkContent', { content, length }));
if (!content) {
throw new Error('[[error:invalid-chat-message]]');
}
- if (content.length > maximumChatMessageLength) {
+ if (length > maximumChatMessageLength) {
throw new Error('[[error:chat-message-too-long, ' + maximumChatMessageLength + ']]');
}
};
diff --git a/src/messaging/notifications.js b/src/messaging/notifications.js
index bb735d4e31..7571187190 100644
--- a/src/messaging/notifications.js
+++ b/src/messaging/notifications.js
@@ -57,8 +57,9 @@ module.exports = function (Messaging) {
return;
}
+ const isGroupChat = await Messaging.isGroupChat(roomId);
const notification = await notifications.create({
- type: 'new-chat',
+ type: isGroupChat ? 'new-group-chat' : 'new-chat',
subject: '[[email:notif.chat.subject, ' + messageObj.fromUser.username + ']]',
bodyShort: '[[notifications:new_message_from, ' + messageObj.fromUser.username + ']]',
bodyLong: messageObj.content,
diff --git a/src/messaging/rooms.js b/src/messaging/rooms.js
index 0f99028cfe..87582b77d0 100644
--- a/src/messaging/rooms.js
+++ b/src/messaging/rooms.js
@@ -83,15 +83,7 @@ module.exports = function (Messaging) {
}
await db.sortedSetAdd('chat:room:' + roomId + ':uids', timestamps, uids);
- const [userCount, roomData] = await Promise.all([
- db.sortedSetCard('chat:room:' + roomId + ':uids'),
- db.getObject('chat:room:' + roomId),
- ]);
-
- if (!roomData.hasOwnProperty('groupChat') && userCount > 2) {
- await db.setObjectField('chat:room:' + roomId, 'groupChat', 1);
- }
-
+ await updateGroupChatField([roomId]);
await Promise.all(uids.map(uid => Messaging.addSystemMessage('user-join', uid, roomId)));
};
@@ -111,6 +103,20 @@ module.exports = function (Messaging) {
await Messaging.leaveRoom(uids, roomId);
};
+ Messaging.isGroupChat = async function (roomId) {
+ return (await Messaging.getRoomData(roomId)).groupChat;
+ };
+
+ async function updateGroupChatField(roomIds) {
+ const userCounts = await db.sortedSetsCard(roomIds.map(roomId => 'chat:room:' + roomId + ':uids'));
+ const groupChats = roomIds.filter((roomId, index) => userCounts[index] > 2);
+ const privateChats = roomIds.filter((roomId, index) => userCounts[index] <= 2);
+ await Promise.all([
+ db.setObjectField(groupChats.map(id => 'chat:room:' + id, 'groupChat', 1)),
+ db.setObjectField(privateChats.map(id => 'chat:room:' + id, 'groupChat', 0)),
+ ]);
+ }
+
Messaging.leaveRoom = async (uids, roomId) => {
const isInRoom = await Promise.all(uids.map(uid => Messaging.isUserInRoom(uid, roomId)));
uids = uids.filter((uid, index) => isInRoom[index]);
@@ -126,6 +132,7 @@ module.exports = function (Messaging) {
await Promise.all(uids.map(uid => Messaging.addSystemMessage('user-leave', uid, roomId)));
await updateOwner(roomId);
+ await updateGroupChatField([roomId]);
};
Messaging.leaveRooms = async (uid, roomIds) => {
@@ -145,6 +152,7 @@ module.exports = function (Messaging) {
roomIds.map(roomId => updateOwner(roomId))
.concat(roomIds.map(roomId => Messaging.addSystemMessage('user-leave', uid, roomId)))
);
+ await updateGroupChatField(roomIds);
};
async function updateOwner(roomId) {
diff --git a/src/meta/settings.js b/src/meta/settings.js
index 76db1d41aa..eb8b87890a 100644
--- a/src/meta/settings.js
+++ b/src/meta/settings.js
@@ -85,6 +85,8 @@ Settings.set = async function (hash, values, quiet) {
await db.setObject('settings:' + hash, values);
}
+ cache.del('settings:' + hash);
+
plugins.fireHook('action:settings.set', {
plugin: hash,
settings: values,
@@ -92,7 +94,6 @@ Settings.set = async function (hash, values, quiet) {
pubsub.publish('action:settings.set.' + hash, values);
Meta.reloadRequired = !quiet;
- cache.del('settings:' + hash);
};
Settings.setOne = async function (hash, field, value) {
diff --git a/src/meta/templates.js b/src/meta/templates.js
index 16f7f23119..3ec9e03930 100644
--- a/src/meta/templates.js
+++ b/src/meta/templates.js
@@ -111,9 +111,7 @@ async function compileTemplate(filename, source) {
}));
source = await processImports(paths, filename, source);
- const compiled = await Benchpress.precompile(source, {
- minify: process.env.NODE_ENV !== 'development',
- });
+ const compiled = await Benchpress.precompile(source, { filename });
return await fs.promises.writeFile(path.join(viewsPath, filename.replace(/\.tpl$/, '.js')), compiled);
}
Templates.compileTemplate = compileTemplate;
@@ -136,7 +134,7 @@ async function compile() {
await mkdirp(path.join(viewsPath, path.dirname(name)));
await fs.promises.writeFile(path.join(viewsPath, name), imported);
- const compiled = await Benchpress.precompile(imported, { minify: process.env.NODE_ENV !== 'development' });
+ const compiled = await Benchpress.precompile(imported, { filename: name });
await fs.promises.writeFile(path.join(viewsPath, name.replace(/\.tpl$/, '.js')), compiled);
}));
diff --git a/src/middleware/header.js b/src/middleware/header.js
index deb9cbce61..a5e041bc8e 100644
--- a/src/middleware/header.js
+++ b/src/middleware/header.js
@@ -157,6 +157,9 @@ middleware.renderHeader = async function renderHeader(req, res, data) {
templateValues.defaultLang = meta.config.defaultLang || 'en-GB';
templateValues.userLang = res.locals.config.userLang;
templateValues.languageDirection = results.languageDirection;
+ if (req.query.noScriptMessage) {
+ templateValues.noScriptMessage = validator.escape(String(req.query.noScriptMessage));
+ }
templateValues.template = { name: res.locals.template };
templateValues.template[res.locals.template] = true;
diff --git a/src/middleware/render.js b/src/middleware/render.js
index 05950e13c0..44a0689c0b 100644
--- a/src/middleware/render.js
+++ b/src/middleware/render.js
@@ -10,19 +10,10 @@ const translator = require('../translator');
const widgets = require('../widgets');
const utils = require('../utils');
const slugify = require('../slugify');
-const cacheCreate = require('../cacheCreate');
-const cache = cacheCreate({
- name: 'header-footer',
- max: 1000,
- maxAge: 0,
- enabled: global.env === 'production',
-});
const relative_path = nconf.get('relative_path');
module.exports = function (middleware) {
- middleware.headerFooterCache = cache;
-
middleware.processRender = function processRender(req, res, next) {
// res.render post-processing, modified from here: https://gist.github.com/mrlannigan/5051687
const render = res.render;
@@ -104,34 +95,14 @@ module.exports = function (middleware) {
async function renderHeaderFooter(method, req, res, options) {
let str = '';
- const lang = getLang(req, res);
- function getCacheKey() {
- return [lang, method]
- .concat(req.path.split('/').slice(0, 4))
- .join('/');
+ if (res.locals.renderHeader) {
+ str = await middleware[method](req, res, options);
+ } else if (res.locals.renderAdminHeader) {
+ str = await middleware.admin[method](req, res, options);
+ } else {
+ str = '';
}
- let cacheKey;
- if (req.uid === 0 && res.locals.renderHeader) {
- cacheKey = getCacheKey();
- str = cache.get(cacheKey);
- if (str) {
- return str;
- }
- }
- if (!str) {
- if (res.locals.renderHeader) {
- str = await middleware[method](req, res, options);
- } else if (res.locals.renderAdminHeader) {
- str = await middleware.admin[method](req, res, options);
- } else {
- str = '';
- }
- }
- const translated = await translate(str, lang);
- if (req.uid === 0 && res.locals.renderHeader) {
- cache.set(cacheKey, translated, 300000);
- }
- return translated;
+ return await translate(str, getLang(req, res));
}
function getLang(req, res) {
diff --git a/src/notifications.js b/src/notifications.js
index d3bcaa1ce0..72e6e7ee07 100644
--- a/src/notifications.js
+++ b/src/notifications.js
@@ -25,6 +25,7 @@ Notifications.baseTypes = [
'notificationType_post-edit',
'notificationType_follow',
'notificationType_new-chat',
+ 'notificationType_new-group-chat',
'notificationType_group-invite',
'notificationType_group-request-membership',
];
@@ -174,6 +175,9 @@ async function pushToUids(uids, notification) {
notification['cta-type'] = notification.type;
}
let body = notification.bodyLong || '';
+ if (meta.config.removeEmailNotificationImages) {
+ body = body.replace(/
]*>/, '');
+ }
body = posts.relativeToAbsolute(body, posts.urlRegex);
body = posts.relativeToAbsolute(body, posts.imgRegex);
await async.eachLimit(uids, 3, function (uid, next) {
diff --git a/src/plugins/hooks.js b/src/plugins/hooks.js
index 529cc8059d..6ce56fd988 100644
--- a/src/plugins/hooks.js
+++ b/src/plugins/hooks.js
@@ -6,7 +6,7 @@ const utils = require('../utils');
module.exports = function (Plugins) {
Plugins.deprecatedHooks = {
-
+ 'filter:privileges:isUserAllowedTo': 'filter:privileges:isAllowedTo',
};
Plugins.internals = {
diff --git a/src/privileges/admin.js b/src/privileges/admin.js
index dc8ad7e343..305ea98fde 100644
--- a/src/privileges/admin.js
+++ b/src/privileges/admin.js
@@ -144,7 +144,7 @@ module.exports = function (privileges) {
privileges.admin.get = async function (uid) {
const [userPrivileges, isAdministrator] = await Promise.all([
- helpers.isUserAllowedTo(privileges.admin.userPrivilegeList, uid, 0),
+ helpers.isAllowedTo(privileges.admin.userPrivilegeList, uid, 0),
user.isAdministrator(uid),
]);
@@ -157,7 +157,7 @@ module.exports = function (privileges) {
privileges.admin.can = async function (privilege, uid) {
const [isUserAllowedTo, isAdministrator] = await Promise.all([
- helpers.isUserAllowedTo(privilege, uid, [0]),
+ helpers.isAllowedTo(privilege, uid, [0]),
user.isAdministrator(uid),
]);
return isAdministrator || isUserAllowedTo[0];
diff --git a/src/privileges/categories.js b/src/privileges/categories.js
index d1c867e27e..b915f289da 100644
--- a/src/privileges/categories.js
+++ b/src/privileges/categories.js
@@ -46,7 +46,7 @@ module.exports = function (privileges) {
const privs = ['topics:create', 'topics:read', 'topics:tag', 'read'];
const [userPrivileges, isAdministrator, isModerator] = await Promise.all([
- helpers.isUserAllowedTo(privs, uid, cid),
+ helpers.isAllowedTo(privs, uid, cid),
user.isAdministrator(uid),
user.isModerator(uid, cid),
]);
@@ -80,7 +80,7 @@ module.exports = function (privileges) {
if (!cid) {
return false;
}
- const results = await helpers.isUserAllowedTo(privilege, uid, Array.isArray(cid) ? cid : [cid]);
+ const results = await helpers.isAllowedTo(privilege, uid, Array.isArray(cid) ? cid : [cid]);
if (Array.isArray(results) && results.length) {
return Array.isArray(cid) ? results : results[0];
@@ -113,8 +113,8 @@ module.exports = function (privileges) {
privileges.categories.getBase = async function (privilege, cids, uid) {
return await utils.promiseParallel({
categories: categories.getCategoriesFields(cids, ['disabled']),
- allowedTo: helpers.isUserAllowedTo(privilege, uid, cids),
- view_deleted: helpers.isUserAllowedTo('posts:view_deleted', uid, cids),
+ allowedTo: helpers.isAllowedTo(privilege, uid, cids),
+ view_deleted: helpers.isAllowedTo('posts:view_deleted', uid, cids),
isAdmin: user.isAdministrator(uid),
});
};
diff --git a/src/privileges/global.js b/src/privileges/global.js
index 7c1f3f7dcd..3585a432cc 100644
--- a/src/privileges/global.js
+++ b/src/privileges/global.js
@@ -18,6 +18,7 @@ module.exports = function (privileges) {
{ name: '[[admin/manage/privileges:upload-files]]' },
{ name: '[[admin/manage/privileges:signature]]' },
{ name: '[[admin/manage/privileges:ban]]' },
+ { name: '[[admin/manage/privileges:invite]]' },
{ name: '[[admin/manage/privileges:search-content]]' },
{ name: '[[admin/manage/privileges:search-users]]' },
{ name: '[[admin/manage/privileges:search-tags]]' },
@@ -35,6 +36,7 @@ module.exports = function (privileges) {
'upload:post:file',
'signature',
'ban',
+ 'invite',
'search:content',
'search:users',
'search:tags',
@@ -75,7 +77,7 @@ module.exports = function (privileges) {
privileges.global.get = async function (uid) {
const [userPrivileges, isAdministrator] = await Promise.all([
- helpers.isUserAllowedTo(privileges.global.userPrivilegeList, uid, 0),
+ helpers.isAllowedTo(privileges.global.userPrivilegeList, uid, 0),
user.isAdministrator(uid),
]);
@@ -88,7 +90,7 @@ module.exports = function (privileges) {
privileges.global.can = async function (privilege, uid) {
const [isAdministrator, isUserAllowedTo] = await Promise.all([
user.isAdministrator(uid),
- helpers.isUserAllowedTo(privilege, uid, [0]),
+ helpers.isAllowedTo(privilege, uid, [0]),
]);
return isAdministrator || isUserAllowedTo[0];
};
diff --git a/src/privileges/helpers.js b/src/privileges/helpers.js
index 9d1fb78e61..cda8eca5b9 100644
--- a/src/privileges/helpers.js
+++ b/src/privileges/helpers.js
@@ -26,54 +26,59 @@ helpers.isUsersAllowedTo = async function (privilege, uids, cid) {
return result.allowed;
};
-helpers.isUserAllowedTo = async function (privilege, uid, cid) {
+helpers.isAllowedTo = async function (privilege, uidOrGroupName, cid) {
let allowed;
if (Array.isArray(privilege) && !Array.isArray(cid)) {
- allowed = await isUserAllowedToPrivileges(privilege, uid, cid);
+ allowed = await isAllowedToPrivileges(privilege, uidOrGroupName, cid);
} else if (Array.isArray(cid) && !Array.isArray(privilege)) {
- allowed = await isUserAllowedToCids(privilege, uid, cid);
+ allowed = await isAllowedToCids(privilege, uidOrGroupName, cid);
}
if (allowed) {
- const result = await plugins.fireHook('filter:privileges:isUserAllowedTo', { allowed: allowed, privilege: privilege, uid: uid, cid: cid });
- return result.allowed;
+ ({ allowed } = await plugins.fireHook('filter:privileges:isUserAllowedTo', { allowed: allowed, privilege: privilege, uid: uidOrGroupName, cid: cid }));
+ ({ allowed } = await plugins.fireHook('filter:privileges:isAllowedTo', { allowed: allowed, privilege: privilege, uid: uidOrGroupName, cid: cid }));
+ return allowed;
}
throw new Error('[[error:invalid-data]]');
};
-async function isUserAllowedToCids(privilege, uid, cids) {
+async function isAllowedToCids(privilege, uidOrGroupName, cids) {
if (!privilege) {
return cids.map(() => false);
}
- if (parseInt(uid, 10) <= 0) {
- return await isSystemGroupAllowedToCids(privilege, uid, cids);
+
+ const groupKeys = cids.map(cid => 'cid:' + cid + ':privileges:groups:' + privilege);
+
+ // Group handling
+ if (isNaN(parseInt(uidOrGroupName, 10)) && (uidOrGroupName || '').length) {
+ return await checkIfAllowedGroup(uidOrGroupName, groupKeys);
}
- const userKeys = [];
- const groupKeys = [];
- cids.forEach(function (cid) {
- userKeys.push('cid:' + cid + ':privileges:' + privilege);
- groupKeys.push('cid:' + cid + ':privileges:groups:' + privilege);
- });
-
- return await checkIfAllowed(uid, userKeys, groupKeys);
-}
-
-async function isUserAllowedToPrivileges(privileges, uid, cid) {
- if (parseInt(uid, 10) <= 0) {
- return await isSystemGroupAllowedToPrivileges(privileges, uid, cid);
+ // User handling
+ if (parseInt(uidOrGroupName, 10) <= 0) {
+ return await isSystemGroupAllowedToCids(privilege, uidOrGroupName, cids);
}
- const userKeys = [];
- const groupKeys = [];
- privileges.forEach(function (privilege) {
- userKeys.push('cid:' + cid + ':privileges:' + privilege);
- groupKeys.push('cid:' + cid + ':privileges:groups:' + privilege);
- });
-
- return await checkIfAllowed(uid, userKeys, groupKeys);
+ const userKeys = cids.map(cid => 'cid:' + cid + ':privileges:' + privilege);
+ return await checkIfAllowedUser(uidOrGroupName, userKeys, groupKeys);
}
-async function checkIfAllowed(uid, userKeys, groupKeys) {
+async function isAllowedToPrivileges(privileges, uidOrGroupName, cid) {
+ const groupKeys = privileges.map(privilege => 'cid:' + cid + ':privileges:groups:' + privilege);
+ // Group handling
+ if (isNaN(parseInt(uidOrGroupName, 10)) && (uidOrGroupName || '').length) {
+ return await checkIfAllowedGroup(uidOrGroupName, groupKeys);
+ }
+
+ // User handling
+ if (parseInt(uidOrGroupName, 10) <= 0) {
+ return await isSystemGroupAllowedToPrivileges(privileges, uidOrGroupName, cid);
+ }
+
+ const userKeys = privileges.map(privilege => 'cid:' + cid + ':privileges:' + privilege);
+ return await checkIfAllowedUser(uidOrGroupName, userKeys, groupKeys);
+}
+
+async function checkIfAllowedUser(uid, userKeys, groupKeys) {
const [hasUserPrivilege, hasGroupPrivilege] = await Promise.all([
groups.isMemberOfGroups(uid, userKeys),
groups.isMemberOfGroupsList(uid, groupKeys),
@@ -81,6 +86,14 @@ async function checkIfAllowed(uid, userKeys, groupKeys) {
return userKeys.map((key, index) => hasUserPrivilege[index] || hasGroupPrivilege[index]);
}
+async function checkIfAllowedGroup(groupName, groupKeys) {
+ const sets = await Promise.all([
+ groups.isMemberOfGroups(groupName, groupKeys),
+ groups.isMemberOfGroups('registered-users', groupKeys),
+ ]);
+ return groupKeys.map((key, index) => sets[0][index] || sets[1][index]);
+}
+
async function isSystemGroupAllowedToCids(privilege, uid, cids) {
const groupKeys = cids.map(cid => 'cid:' + cid + ':privileges:groups:' + privilege);
return await groups.isMemberOfGroups(uidToSystemGroup[uid], groupKeys);
diff --git a/src/privileges/posts.js b/src/privileges/posts.js
index ac595c0c31..f1274b892e 100644
--- a/src/privileges/posts.js
+++ b/src/privileges/posts.js
@@ -25,11 +25,11 @@ module.exports = function (privileges) {
isAdmin: user.isAdministrator(uid),
isModerator: user.isModerator(uid, uniqueCids),
isOwner: posts.isOwner(pids, uid),
- 'topics:read': helpers.isUserAllowedTo('topics:read', uid, uniqueCids),
- read: helpers.isUserAllowedTo('read', uid, uniqueCids),
- 'posts:edit': helpers.isUserAllowedTo('posts:edit', uid, uniqueCids),
- 'posts:history': helpers.isUserAllowedTo('posts:history', uid, uniqueCids),
- 'posts:view_deleted': helpers.isUserAllowedTo('posts:view_deleted', uid, uniqueCids),
+ 'topics:read': helpers.isAllowedTo('topics:read', uid, uniqueCids),
+ read: helpers.isAllowedTo('read', uid, uniqueCids),
+ 'posts:edit': helpers.isAllowedTo('posts:edit', uid, uniqueCids),
+ 'posts:history': helpers.isAllowedTo('posts:history', uid, uniqueCids),
+ 'posts:view_deleted': helpers.isAllowedTo('posts:view_deleted', uid, uniqueCids),
});
const isModerator = _.zipObject(uniqueCids, results.isModerator);
diff --git a/src/privileges/topics.js b/src/privileges/topics.js
index d4b34194ff..75a3e01fb3 100644
--- a/src/privileges/topics.js
+++ b/src/privileges/topics.js
@@ -23,7 +23,7 @@ module.exports = function (privileges) {
];
const topicData = await topics.getTopicFields(tid, ['cid', 'uid', 'locked', 'deleted']);
const [userPrivileges, isAdministrator, isModerator, disabled] = await Promise.all([
- helpers.isUserAllowedTo(privs, uid, topicData.cid),
+ helpers.isAllowedTo(privs, uid, topicData.cid),
user.isAdministrator(uid),
user.isModerator(uid, topicData.cid),
categories.getCategoryField(topicData.cid, 'disabled'),
@@ -121,7 +121,7 @@ module.exports = function (privileges) {
user.isModerator(uid, topicData.cid),
user.isAdministrator(uid),
topics.isOwner(tid, uid),
- helpers.isUserAllowedTo('topics:delete', uid, [topicData.cid]),
+ helpers.isAllowedTo('topics:delete', uid, [topicData.cid]),
]);
if (isAdministrator) {
diff --git a/src/privileges/users.js b/src/privileges/users.js
index 1cf9441aee..9a391f2f13 100644
--- a/src/privileges/users.js
+++ b/src/privileges/users.js
@@ -41,7 +41,7 @@ module.exports = function (privileges) {
return await filterIsModerator(cids, uid, cids.map(() => true));
}
const uniqueCids = _.uniq(cids);
- const isAllowed = await helpers.isUserAllowedTo('moderate', uid, uniqueCids);
+ const isAllowed = await helpers.isAllowedTo('moderate', uid, uniqueCids);
const cidToIsAllowed = _.zipObject(uniqueCids, isAllowed);
const isModerator = cids.map(cid => cidToIsAllowed[cid]);
@@ -107,12 +107,14 @@ module.exports = function (privileges) {
return data.canBan;
};
- privileges.users.hasBanPrivilege = async function (uid) {
- const canBan = await privileges.global.can('ban', uid);
- const data = await plugins.fireHook('filter:user.hasBanPrivilege', {
- uid: uid,
- canBan: canBan,
- });
- return data.canBan;
- };
+ privileges.users.hasBanPrivilege = async uid => await hasGlobalPrivilege('ban', uid);
+ privileges.users.hasInvitePrivilege = async uid => await hasGlobalPrivilege('invite', uid);
+
+ async function hasGlobalPrivilege(privilege, uid) {
+ const privilegeName = privilege.split('-').map(word => word.slice(0, 1).toUpperCase() + word.slice(1)).join('');
+ let payload = { uid };
+ payload[`can${privilegeName}`] = await privileges.global.can(privilege, uid);
+ payload = await plugins.fireHook(`filter:user.has${privilegeName}Privilege`, payload);
+ return payload[`can${privilegeName}`];
+ }
};
diff --git a/src/routes/feeds.js b/src/routes/feeds.js
index be23cafed6..0c12af5334 100644
--- a/src/routes/feeds.js
+++ b/src/routes/feeds.js
@@ -53,7 +53,7 @@ async function validateTokenIfRequiresLogin(requiresLogin, cid, req, res) {
await user.auth.logAttempt(uid, req.ip);
return helpers.notAllowed(req, res);
}
- const userPrivileges = privileges.categories.get(cid, uid);
+ const userPrivileges = await privileges.categories.get(cid, uid);
if (!userPrivileges.read) {
return helpers.notAllowed(req, res);
}
@@ -77,7 +77,7 @@ async function generateForTopic(req, res) {
}
if (await validateTokenIfRequiresLogin(!userPrivileges['topics:read'], topic.cid, req, res)) {
- const topicData = await topics.getTopicWithPosts(topic, 'tid:' + tid + ':posts', req.uid || req.query.uid || 0, 0, 25, false);
+ const topicData = await topics.getTopicWithPosts(topic, 'tid:' + tid + ':posts', req.uid || req.query.uid || 0, 0, 24, true);
topics.modifyPostsByPrivilege(topicData, userPrivileges);
@@ -94,8 +94,8 @@ async function generateForTopic(req, res) {
if (topicData.posts.length > 0) {
feed.pubDate = new Date(parseInt(topicData.posts[0].timestamp, 10)).toUTCString();
}
-
- topicData.posts.forEach(function (postData) {
+ const replies = topicData.posts.slice(1);
+ replies.forEach(function (postData) {
if (!postData.deleted) {
const dateStamp = new Date(parseInt(parseInt(postData.edited, 10) === 0 ? postData.timestamp : postData.edited, 10)).toUTCString();
diff --git a/src/routes/write/groups.js b/src/routes/write/groups.js
index 1f78447170..64af35bf70 100644
--- a/src/routes/write/groups.js
+++ b/src/routes/write/groups.js
@@ -10,8 +10,8 @@ const setupApiRoute = routeHelpers.setupApiRoute;
module.exports = function () {
const middlewares = [middleware.authenticate];
- setupApiRoute(router, 'head', '/:slug', [middleware.assert.group], controllers.write.groups.exists);
setupApiRoute(router, 'post', '/', [...middlewares, middleware.checkRequired.bind(null, ['name'])], controllers.write.groups.create);
+ setupApiRoute(router, 'head', '/:slug', [middleware.assert.group], controllers.write.groups.exists);
setupApiRoute(router, 'delete', '/:slug', [...middlewares, middleware.assert.group], controllers.write.groups.delete);
setupApiRoute(router, 'put', '/:slug/membership/:uid', [...middlewares, middleware.assert.group], controllers.write.groups.join);
setupApiRoute(router, 'delete', '/:slug/membership/:uid', [...middlewares, middleware.assert.group], controllers.write.groups.leave);
diff --git a/src/routes/write/users.js b/src/routes/write/users.js
index 4edca5d4a6..94345a65ff 100644
--- a/src/routes/write/users.js
+++ b/src/routes/write/users.js
@@ -20,7 +20,9 @@ function authenticatedRoutes() {
setupApiRoute(router, 'head', '/:uid', [middleware.assert.user], controllers.write.users.exists);
setupApiRoute(router, 'put', '/:uid', [...middlewares, middleware.assert.user], controllers.write.users.update);
- setupApiRoute(router, 'delete', '/:uid', [...middlewares, middleware.assert.user, middleware.exposePrivileges], controllers.write.users.delete);
+ setupApiRoute(router, 'delete', '/:uid', [...middlewares, middleware.assert.user], controllers.write.users.delete);
+ setupApiRoute(router, 'delete', '/:uid/content', [...middlewares, middleware.assert.user], controllers.write.users.deleteContent);
+ setupApiRoute(router, 'delete', '/:uid/account', [...middlewares, middleware.assert.user], controllers.write.users.deleteAccount);
setupApiRoute(router, 'put', '/:uid/settings', [...middlewares, middleware.checkRequired.bind(null, ['settings'])], controllers.write.users.updateSettings);
@@ -39,6 +41,9 @@ function authenticatedRoutes() {
// Shorthand route to access user routes by userslug
router.all('/+bySlug/:userslug*?', [], controllers.write.users.redirectBySlug);
+
+ setupApiRoute(router, 'post', '/:uid/invites', middlewares, controllers.write.users.invite);
+ setupApiRoute(router, 'get', '/:uid/invites/groups', [...middlewares, middleware.assert.user], controllers.write.users.getInviteGroups);
}
module.exports = function () {
diff --git a/src/socket.io/admin/cache.js b/src/socket.io/admin/cache.js
index de16f8faaf..534cefeac8 100644
--- a/src/socket.io/admin/cache.js
+++ b/src/socket.io/admin/cache.js
@@ -11,8 +11,6 @@ SocketCache.clear = async function (socket, data) {
require('../../groups').cache.reset();
} else if (data.name === 'local') {
require('../../cache').reset();
- } else if (data.name === 'headerfooter') {
- require('../../middleware').headerFooterCache.reset();
}
};
@@ -22,7 +20,6 @@ SocketCache.toggle = async function (socket, data) {
object: require('../../database').objectCache,
group: require('../../groups').cache,
local: require('../../cache'),
- headerfooter: require('../../middleware').headerFooterCache,
};
if (!caches[data.name]) {
return;
diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js
index 266e739db6..91dfb49646 100644
--- a/src/socket.io/admin/user.js
+++ b/src/socket.io/admin/user.js
@@ -1,7 +1,6 @@
'use strict';
const async = require('async');
-const winston = require('winston');
const db = require('../../database');
const api = require('../../api');
@@ -9,9 +8,7 @@ const groups = require('../../groups');
const user = require('../../user');
const events = require('../../events');
const meta = require('../../meta');
-const plugins = require('../../plugins');
const translator = require('../../translator');
-const flags = require('../../flags');
const sockets = require('..');
const User = module.exports;
@@ -125,16 +122,16 @@ User.forcePasswordReset = async function (socket, uids) {
};
User.deleteUsers = async function (socket, uids) {
- await canDeleteUids(uids);
- deleteUsers(socket, uids, async function (uid) {
- return await user.deleteAccount(uid);
- });
+ sockets.warnDeprecated(socket, 'DELETE /api/v3/users/:uid/account');
+ await Promise.all(uids.map(async (uid) => {
+ await api.users.deleteAccount(socket, { uid });
+ }));
};
User.deleteUsersContent = async function (socket, uids) {
- await canDeleteUids(uids);
+ sockets.warnDeprecated(socket, 'DELETE /api/v3/users/:uid/content');
await Promise.all(uids.map(async (uid) => {
- await user.deleteContent(socket.uid, uid);
+ await api.users.deleteContent(socket, { uid });
}));
};
@@ -143,42 +140,6 @@ User.deleteUsersAndContent = async function (socket, uids) {
await api.users.deleteMany(socket, { uids });
};
-async function canDeleteUids(uids) {
- if (!Array.isArray(uids)) {
- throw new Error('[[error:invalid-data]]');
- }
- const isMembers = await groups.isMembers(uids, 'administrators');
- if (isMembers.includes(true)) {
- throw new Error('[[error:cant-delete-other-admins]]');
- }
-}
-
-async function deleteUsers(socket, uids, method) {
- async function doDelete(uid) {
- await flags.resolveFlag('user', uid, socket.uid);
- const userData = await method(uid);
- await events.log({
- type: 'user-delete',
- uid: socket.uid,
- targetUid: uid,
- ip: socket.ip,
- username: userData.username,
- email: userData.email,
- });
- plugins.fireHook('action:user.delete', {
- callerUid: socket.uid,
- uid: uid,
- ip: socket.ip,
- user: userData,
- });
- }
- try {
- await Promise.all(uids.map(uid => doDelete(uid)));
- } catch (err) {
- winston.error(err.stack);
- }
-}
-
User.restartJobs = async function () {
user.startJobs();
};
diff --git a/src/socket.io/posts/tools.js b/src/socket.io/posts/tools.js
index a0e4ae4715..b62f651e7a 100644
--- a/src/socket.io/posts/tools.js
+++ b/src/socket.io/posts/tools.js
@@ -42,7 +42,7 @@ module.exports = function (SocketPosts) {
postData.display_edit_tools = results.canEdit.flag;
postData.display_delete_tools = results.canDelete.flag;
postData.display_purge_tools = results.canPurge;
- postData.display_flag_tools = socket.uid && !postData.selfPost && results.canFlag.flag;
+ postData.display_flag_tools = socket.uid && results.canFlag.flag;
postData.display_moderator_tools = postData.display_edit_tools || postData.display_delete_tools;
postData.display_move_tools = results.isAdmin || results.isModerator;
postData.display_change_owner_tools = results.isAdmin || results.isModerator;
diff --git a/src/socket.io/user.js b/src/socket.io/user.js
index cc39126d8a..bac1a08266 100644
--- a/src/socket.io/user.js
+++ b/src/socket.io/user.js
@@ -1,7 +1,5 @@
'use strict';
-const async = require('async');
-
const util = require('util');
const sleep = util.promisify(setTimeout);
@@ -17,7 +15,6 @@ const db = require('../database');
const userController = require('../controllers/user');
const privileges = require('../privileges');
const utils = require('../utils');
-const flags = require('../flags');
const sockets = require('.');
const SocketUser = module.exports;
@@ -39,37 +36,8 @@ SocketUser.exists = async function (socket, data) {
};
SocketUser.deleteAccount = async function (socket, data) {
- if (!socket.uid) {
- throw new Error('[[error:no-privileges]]');
- }
- const hasPassword = await user.hasPassword(socket.uid);
- if (hasPassword) {
- const ok = await user.isPasswordCorrect(socket.uid, data.password, socket.ip);
- if (!ok) {
- throw new Error('[[error:invalid-password]]');
- }
- }
- const isAdmin = await user.isAdministrator(socket.uid);
- if (isAdmin) {
- throw new Error('[[error:cant-delete-admin]]');
- }
- if (meta.config.allowAccountDelete !== 1) {
- throw new Error('[[error:no-privileges]]');
- }
-
- await flags.resolveFlag('user', socket.uid, socket.uid);
- const userData = await user.deleteAccount(socket.uid);
-
- require('./index').server.sockets.emit('event:user_status_change', { uid: socket.uid, status: 'offline' });
-
- await events.log({
- type: 'user-delete',
- uid: socket.uid,
- targetUid: socket.uid,
- ip: socket.ip,
- username: userData.username,
- email: userData.email,
- });
+ sockets.warnDeprecated(socket, 'DELETE /api/v3/users/:uid/account');
+ await api.users.deleteAccount(socket, data);
};
SocketUser.emailExists = async function (socket, data) {
@@ -223,37 +191,6 @@ SocketUser.getUnreadCounts = async function (socket) {
return results;
};
-SocketUser.invite = async function (socket, email) {
- if (!email || !socket.uid) {
- throw new Error('[[error:invalid-data]]');
- }
-
- const registrationType = meta.config.registrationType;
- if (registrationType !== 'invite-only' && registrationType !== 'admin-invite-only') {
- throw new Error('[[error:forum-not-invite-only]]');
- }
-
- const isAdmin = await user.isAdministrator(socket.uid);
- if (registrationType === 'admin-invite-only' && !isAdmin) {
- throw new Error('[[error:no-privileges]]');
- }
-
- const max = meta.config.maximumInvites;
- email = email.split(',').map(email => email.trim()).filter(Boolean);
-
- await async.eachSeries(email, async function (email) {
- let invites = 0;
- if (max) {
- invites = await user.getInvitesNumber(socket.uid);
- }
- if (!isAdmin && max && invites >= max) {
- throw new Error('[[error:invite-maximum-met, ' + invites + ', ' + max + ']]');
- }
-
- await user.sendInvitationEmail(socket.uid, email);
- });
-};
-
SocketUser.getUserByUID = async function (socket, uid) {
return await userController.getUserDataByField(socket.uid, 'uid', uid);
};
diff --git a/src/topics/create.js b/src/topics/create.js
index afa8498b72..ca55a8066e 100644
--- a/src/topics/create.js
+++ b/src/topics/create.js
@@ -187,12 +187,14 @@ module.exports = function (Topics) {
user.setUserField(uid, 'lastonline', Date.now());
}
- Topics.notifyFollowers(postData, uid, {
- type: 'new-reply',
- bodyShort: translator.compile('notifications:user_posted_to', postData.user.username, postData.topic.title),
- nid: 'new_post:tid:' + postData.topic.tid + ':pid:' + postData.pid + ':uid:' + uid,
- mergeId: 'notifications:user_posted_to|' + postData.topic.tid,
- });
+ if (parseInt(uid, 10) || meta.config.allowGuestReplyNotifications) {
+ Topics.notifyFollowers(postData, uid, {
+ type: 'new-reply',
+ bodyShort: translator.compile('notifications:user_posted_to', postData.user.username, postData.topic.title),
+ nid: 'new_post:tid:' + postData.topic.tid + ':pid:' + postData.pid + ':uid:' + uid,
+ mergeId: 'notifications:user_posted_to|' + postData.topic.tid,
+ });
+ }
analytics.increment(['posts', 'posts:byCid:' + data.cid]);
plugins.fireHook('action:topic.reply', { post: _.clone(postData), data: data });
diff --git a/src/topics/index.js b/src/topics/index.js
index 943930e375..372141dda5 100644
--- a/src/topics/index.js
+++ b/src/topics/index.js
@@ -189,18 +189,20 @@ Topics.getTopicWithPosts = async function (topicData, set, uid, start, stop, rev
};
async function getMainPostAndReplies(topic, set, uid, start, stop, reverse) {
+ let repliesStart = start;
+ let repliesStop = stop;
if (stop > 0) {
- stop -= 1;
+ repliesStop -= 1;
if (start > 0) {
- start -= 1;
+ repliesStart -= 1;
}
}
- const pids = await posts.getPidsFromSet(set, start, stop, reverse);
+ const pids = await posts.getPidsFromSet(set, repliesStart, repliesStop, reverse);
if (!pids.length && !topic.mainPid) {
return [];
}
- if (parseInt(topic.mainPid, 10) && start === 0) {
+ if (topic.mainPid && start === 0) {
pids.unshift(topic.mainPid);
}
const postData = await posts.getPostsByPids(pids, uid);
@@ -213,7 +215,7 @@ async function getMainPostAndReplies(topic, set, uid, start, stop, reverse) {
replies = postData.slice(1);
}
- Topics.calculatePostIndices(replies, start);
+ Topics.calculatePostIndices(replies, repliesStart);
return await Topics.addPostData(postData, uid);
}
diff --git a/src/user/approval.js b/src/user/approval.js
index 797ef9045f..0a2c200d7c 100644
--- a/src/user/approval.js
+++ b/src/user/approval.js
@@ -1,6 +1,7 @@
'use strict';
const validator = require('validator');
+const cronJob = require('cron').CronJob;
const db = require('../database');
const meta = require('../meta');
@@ -12,6 +13,10 @@ const slugify = require('../slugify');
const plugins = require('../plugins');
module.exports = function (User) {
+ new cronJob('0 * * * *', function () {
+ User.autoApprove();
+ }, null, true);
+
User.addToApprovalQueue = async function (userData) {
userData.username = userData.username.trim();
userData.userslug = slugify(userData.username);
@@ -59,7 +64,7 @@ module.exports = function (User) {
if (!userData) {
throw new Error('[[error:invalid-data]]');
}
-
+ const creation_time = await db.sortedSetScore('registration:queue', username);
const uid = await User.create(userData);
await User.setUserField(uid, 'password', userData.hashedPassword);
await removeFromQueue(username);
@@ -71,6 +76,9 @@ module.exports = function (User) {
template: 'registration_accepted',
uid: uid,
});
+ const total = await db.incrObjectField('registration:queue:approval:times', 'totalTime', Math.floor((Date.now() - creation_time) / 60000));
+ const counter = await db.incrObjectField('registration:queue:approval:times', 'counter', 1);
+ await db.setObjectField('registration:queue:approval:times', 'average', total / counter);
return uid;
};
@@ -140,4 +148,16 @@ module.exports = function (User) {
const uids = await User.getUidsFromSet('ip:' + user.ip + ':uid', 0, -1);
user.ipMatch = await User.getUsersFields(uids, ['uid', 'username', 'picture']);
}
+
+ User.autoApprove = async function () {
+ if (meta.config.autoApproveTime <= 0) {
+ return;
+ }
+ const users = await db.getSortedSetRevRangeWithScores('registration:queue', 0, -1);
+ const now = Date.now();
+ for (const user of users.filter(user => now - user.score >= meta.config.autoApproveTime * 3600000)) {
+ // eslint-disable-next-line no-await-in-loop
+ await User.acceptRegistration(user.value);
+ }
+ };
};
diff --git a/src/user/delete.js b/src/user/delete.js
index 96dd6029c8..ee58a72026 100644
--- a/src/user/delete.js
+++ b/src/user/delete.js
@@ -7,6 +7,7 @@ const nconf = require('nconf');
const db = require('../database');
const posts = require('../posts');
+const flags = require('../flags');
const topics = require('../topics');
const groups = require('../groups');
const messaging = require('../messaging');
@@ -149,6 +150,7 @@ module.exports = function (User) {
deleteUserFromFollowers(uid),
deleteImages(uid),
groups.leaveAllGroups(uid),
+ flags.resolveFlag('user', uid, uid),
]);
await db.deleteAll(['followers:' + uid, 'following:' + uid, 'user:' + uid]);
delete deletesInProgress[uid];
diff --git a/src/user/invite.js b/src/user/invite.js
index 82471d8b28..4c20eab70a 100644
--- a/src/user/invite.js
+++ b/src/user/invite.js
@@ -8,6 +8,7 @@ var validator = require('validator');
var db = require('../database');
var meta = require('../meta');
var emailer = require('../emailer');
+var groups = require('../groups');
var translator = require('../translator');
var utils = require('../utils');
@@ -36,13 +37,7 @@ module.exports = function (User) {
});
};
- User.sendInvitationEmail = async function (uid, email) {
- const token = utils.generateUUID();
- const registerLink = nconf.get('url') + '/register?token=' + token + '&email=' + encodeURIComponent(email);
-
- const expireDays = meta.config.inviteExpiration;
- const expireIn = expireDays * 86400000;
-
+ User.sendInvitationEmail = async function (uid, email, groupsToJoin) {
const email_exists = await User.getUidByEmail(email);
if (email_exists) {
throw new Error('[[error:email-taken]]');
@@ -53,24 +48,7 @@ module.exports = function (User) {
throw new Error('[[error:email-invited]]');
}
- await db.setAdd('invitation:uid:' + uid, email);
- await db.setAdd('invitation:uids', uid);
- await db.set('invitation:email:' + email, token);
- await db.pexpireAt('invitation:email:' + email, Date.now() + expireIn);
- const username = await User.getUserField(uid, 'username');
- const title = meta.config.title || meta.config.browserTitle || 'NodeBB';
- const subject = await translator.translate('[[email:invite, ' + title + ']]', meta.config.defaultLang);
- let data = {
- site_title: title,
- registerLink: registerLink,
- subject: subject,
- username: username,
- template: 'invitation',
- expireDays: expireDays,
- };
-
- // Append default data to this email payload
- data = { ...emailer._defaultPayload, ...data };
+ const data = await prepareInvitation(uid, email, groupsToJoin);
await emailer.sendToEmail('invitation', email, meta.config.defaultLang, data);
};
@@ -79,12 +57,28 @@ module.exports = function (User) {
if (!query.token || !query.email) {
throw new Error('[[error:invalid-data]]');
}
- const token = await db.get('invitation:email:' + query.email);
+ const token = await db.getObjectField('invitation:email:' + query.email, 'token');
if (!token || token !== query.token) {
throw new Error('[[error:invalid-token]]');
}
};
+ User.joinGroupsFromInvitation = async function (uid, email) {
+ let groupsToJoin = await db.getObjectField('invitation:email:' + email, 'groupsToJoin');
+
+ try {
+ groupsToJoin = JSON.parse(groupsToJoin);
+ } catch (e) {
+ return;
+ }
+
+ if (!groupsToJoin || groupsToJoin.length < 1) {
+ return;
+ }
+
+ await groups.join(groupsToJoin, uid);
+ };
+
User.deleteInvitation = async function (invitedBy, email) {
const invitedByUid = await User.getUidByUsername(invitedBy);
if (!invitedByUid) {
@@ -109,4 +103,34 @@ module.exports = function (User) {
await db.setRemove('invitation:uids', uid);
}
}
+
+ async function prepareInvitation(uid, email, groupsToJoin) {
+ const token = utils.generateUUID();
+ const registerLink = nconf.get('url') + '/register?token=' + token + '&email=' + encodeURIComponent(email);
+
+ const expireDays = meta.config.inviteExpiration;
+ const expireIn = expireDays * 86400000;
+
+ await db.setAdd('invitation:uid:' + uid, email);
+ await db.setAdd('invitation:uids', uid);
+ await db.setObject('invitation:email:' + email, {
+ token,
+ groupsToJoin: JSON.stringify(groupsToJoin),
+ });
+ await db.pexpireAt('invitation:email:' + email, Date.now() + expireIn);
+
+ const username = await User.getUserField(uid, 'username');
+ const title = meta.config.title || meta.config.browserTitle || 'NodeBB';
+ const subject = await translator.translate('[[email:invite, ' + title + ']]', meta.config.defaultLang);
+
+ return {
+ ...emailer._defaultPayload, // Append default data to this email payload
+ site_title: title,
+ registerLink: registerLink,
+ subject: subject,
+ username: username,
+ template: 'invitation',
+ expireDays: expireDays,
+ };
+ }
};
diff --git a/src/user/settings.js b/src/user/settings.js
index 0f9494a1ce..ebb153852f 100644
--- a/src/user/settings.js
+++ b/src/user/settings.js
@@ -58,6 +58,7 @@ module.exports = function (User) {
settings.upvoteNotifFreq = getSetting(settings, 'upvoteNotifFreq', 'all');
settings.restrictChat = parseInt(getSetting(settings, 'restrictChat', 0), 10) === 1;
settings.topicSearchEnabled = parseInt(getSetting(settings, 'topicSearchEnabled', 0), 10) === 1;
+ settings.updateUrlWithPostIndex = parseInt(getSetting(settings, 'updateUrlWithPostIndex', 1), 10) === 1;
settings.bootswatchSkin = validator.escape(String(settings.bootswatchSkin || ''));
settings.homePageRoute = validator.escape(String(settings.homePageRoute || '')).replace(///g, '/');
settings.scrollToMyPost = parseInt(getSetting(settings, 'scrollToMyPost', 1), 10) === 1;
@@ -116,6 +117,7 @@ module.exports = function (User) {
followTopicsOnReply: data.followTopicsOnReply,
restrictChat: data.restrictChat,
topicSearchEnabled: data.topicSearchEnabled,
+ updateUrlWithPostIndex: data.updateUrlWithPostIndex,
homePageRoute: ((data.homePageRoute === 'custom' ? data.homePageCustom : data.homePageRoute) || '').replace(/^\//, ''),
scrollToMyPost: data.scrollToMyPost,
upvoteNotifFreq: data.upvoteNotifFreq,
diff --git a/src/views/admin/advanced/cache.tpl b/src/views/admin/advanced/cache.tpl
index 32b7371fdb..46205e5fef 100644
--- a/src/views/admin/advanced/cache.tpl
+++ b/src/views/admin/advanced/cache.tpl
@@ -2,7 +2,7 @@
-
+
[[admin/advanced/cache:post-cache]]
@@ -37,7 +37,7 @@
-
+
Object Cache
@@ -63,7 +63,7 @@
-
+
diff --git a/src/views/admin/advanced/hooks.tpl b/src/views/admin/advanced/hooks.tpl
index c948c37e3b..b9b2493b88 100644
--- a/src/views/admin/advanced/hooks.tpl
+++ b/src/views/admin/advanced/hooks.tpl
@@ -1,5 +1,5 @@
-
+ {{{ each hooks }}}
@@ -11,7 +11,7 @@
-
+ {{{ each hooks.methods }}}
{hooks.methods.id}
Priority: {hooks.methods.priority}
@@ -23,9 +23,9 @@
{hooks.methods.method}
-
+ {{{ end }}}
-
+ {{{ end }}}
\ No newline at end of file
diff --git a/src/views/admin/extend/rewards.tpl b/src/views/admin/extend/rewards.tpl
index 9df8ac01d0..bd226cc39d 100644
--- a/src/views/admin/extend/rewards.tpl
+++ b/src/views/admin/extend/rewards.tpl
@@ -4,23 +4,23 @@
[[admin/extend/rewards:rewards]]
-
+ {{{ each active }}}
-
-
+ {{{ end }}}
diff --git a/src/views/admin/extend/widgets.tpl b/src/views/admin/extend/widgets.tpl
index 2331001c1c..25d03f9829 100644
--- a/src/views/admin/extend/widgets.tpl
+++ b/src/views/admin/extend/widgets.tpl
@@ -1,26 +1,26 @@
-
+ {{{ each templates }}}
-
+ {{{ each templates.areas }}}
{../name} {templates.template} / {../location}
-
+ {{{ end }}}
-
+ {{{ end }}}
diff --git a/src/views/admin/manage/admins-mods.tpl b/src/views/admin/manage/admins-mods.tpl
index 4db42dc6e4..9e0ac321c1 100644
--- a/src/views/admin/manage/admins-mods.tpl
+++ b/src/views/admin/manage/admins-mods.tpl
@@ -38,11 +38,11 @@
-
+ {{{ each categories }}}
[[admin/manage/admins-mods:moderators-of-category, {categories.name}]]{{{if categories.disabled}}}[[admin/manage/admins-mods:disabled]]{{{end}}}
-
+ {{{ each categories.moderators }}}
@@ -52,7 +52,7 @@
{categories.moderators.username}
-
+ {{{ end }}}
[[admin/manage/admins-mods:no-moderators]]
@@ -60,5 +60,5 @@
-
+ {{{ end }}}
diff --git a/src/views/admin/manage/group.tpl b/src/views/admin/manage/group.tpl
index 382a26cf8e..282d864b06 100644
--- a/src/views/admin/manage/group.tpl
+++ b/src/views/admin/manage/group.tpl
@@ -95,6 +95,22 @@
+
+
+
+
+
+ [[groups:details.member-post-cids-help]]
+
+
+
+