diff --git a/.gitignore b/.gitignore index 2ae33250b36b..72399b5f92bd 100644 --- a/.gitignore +++ b/.gitignore @@ -61,7 +61,6 @@ tx.exe coverage .nyc_output -build *.log test/files/normalise.jpg.png test/files/normalise-resized.jpg diff --git a/build/.gitignore b/build/.gitignore new file mode 100644 index 000000000000..9addbff7ebbe --- /dev/null +++ b/build/.gitignore @@ -0,0 +1,4 @@ +* +*/ +!export +!.gitignore diff --git a/build/export/.gitignore b/build/export/.gitignore new file mode 100644 index 000000000000..f8d55e0e3f06 --- /dev/null +++ b/build/export/.gitignore @@ -0,0 +1,3 @@ +. +!.gitignore +!README \ No newline at end of file diff --git a/build/export/README b/build/export/README new file mode 100644 index 000000000000..a9015033f4c6 --- /dev/null +++ b/build/export/README @@ -0,0 +1,5 @@ +This directory contains archives of user uploads that are prepared on-demand +when a user wants to retrieve a copy of their uploaded content. + +You can delete the files in here at will. They will just be regenerated if +requested again. \ No newline at end of file diff --git a/install/package.json b/install/package.json index 9f9458c7e7f7..8b2ac2d842d2 100644 --- a/install/package.json +++ b/install/package.json @@ -1,146 +1,170 @@ { - "name": "nodebb", - "license": "GPL-3.0", - "description": "NodeBB Forum", - "version": "1.8.2", - "homepage": "http://www.nodebb.org", - "repository": { - "type": "git", - "url": "https://github.com/NodeBB/NodeBB/" + "name": "nodebb", + "license": "GPL-3.0", + "description": "NodeBB Forum", + "version": "1.9.1", + "homepage": "http://www.nodebb.org", + "repository": { + "type": "git", + "url": "https://github.com/NodeBB/NodeBB/" + }, + "main": "app.js", + "scripts": { + "start": "node loader.js", + "lint": "eslint --cache ./nodebb .", + "pretest": "npm run lint", + "test": "nyc --reporter=html --reporter=text-summary mocha", + "coveralls": "nyc report --reporter=text-lcov | coveralls && rm -r coverage" + }, + "dependencies": { + "ace-builds": "^1.2.9", + "archiver": "^2.1.1", + "async": "2.6.0", + "autoprefixer": "7.2.4", + "bcryptjs": "2.4.3", + "benchpressjs": "^1.2.1", + "body-parser": "^1.18.2", + "bootstrap": "^3.3.7", + "chart.js": "^2.7.1", + "clipboard": "1.7.1", + "colors": "^1.1.2", + "commander": "^2.12.2", + "compression": "^1.7.1", + "connect-ensure-login": "^0.1.1", + "connect-flash": "^0.1.1", + "connect-mongo": "2.0.1", + "connect-multiparty": "^2.1.0", + "connect-redis": "3.3.3", + "cookie-parser": "^1.4.3", + "cron": "^1.3.0", + "cropperjs": "^1.2.2", + "csurf": "^1.9.0", + "daemon": "^1.1.0", + "diff": "^3.4.0", + "express": "^4.16.2", + "express-session": "^1.15.6", + "express-useragent": "1.0.8", + "graceful-fs": "^4.1.11", + "helmet": "^3.11.0", + "html-to-text": "3.3.0", + "ipaddr.js": "^1.5.4", + "jimp": "0.2.28", + "jquery": "^3.2.1", + "jsesc": "2.5.1", + "json-2-csv": "^2.1.2", + "less": "^2.7.3", + "lodash": "^4.17.4", + "logrotate-stream": "^0.2.5", + "lru-cache": "4.1.1", + "material-design-lite": "^1.3.0", + "mime": "^2.2.0", + "mkdirp": "^0.5.1", + "mongodb": "2.2.33", + "morgan": "^1.9.0", + "mousetrap": "^1.6.1", + "mubsub": "^1.4.0", + "nconf": "^0.9.1", + "nodebb-plugin-calendar": "^1.0.0-alpha.41", + "nodebb-plugin-cards2": "^0.2.4", + "nodebb-plugin-carton": "^1.0.2", + "nodebb-plugin-composer-default": "6.0.22", + "nodebb-plugin-dbsearch": "2.0.13", + "nodebb-plugin-desktop-notifications": "^0.3.2", + "nodebb-plugin-emoji": "^2.2.3", + "nodebb-plugin-emoji-android": "2.0.0", + "nodebb-plugin-emoji-apple": "^2.0.0", + "nodebb-plugin-emoji-extended": "^1.1.1", + "nodebb-plugin-gravatar": "^2.2.0", + "nodebb-plugin-html5videoplayer": "^0.2.5", + "nodebb-plugin-iframely": "^0.7.8", + "nodebb-plugin-imagemagick": "^2.0.5", + "nodebb-plugin-lightbox": "PaciakPL/nodebb-plugin-lightbox", + "nodebb-plugin-markdown": "8.4.2", + "nodebb-plugin-mentions": "2.2.6", + "nodebb-plugin-ns-custom-fields": "PaciakPL/nodebb-plugin-ns-custom-fields", + "nodebb-plugin-ns-embed": "^2.1.1", + "nodebb-plugin-ns-spoiler": "^4.1.0", + "nodebb-plugin-poll": "^0.2.17", + "nodebb-plugin-reactions": "0.0.3", + "nodebb-plugin-shoutbox": "^0.3.4", + "nodebb-plugin-soundpack-default": "1.0.0", + "nodebb-plugin-spam-be-gone": "0.5.3", + "nodebb-plugin-sso-facebook": "^3.3.0", + "nodebb-plugin-sso-google": "^2.2.2", + "nodebb-plugin-write-api": "^5.1.3", + "nodebb-plugin-youtube-embed": "^0.6.7", + "nodebb-rewards-essentials": "0.0.11", + "nodebb-theme-lavender": "5.0.4", + "nodebb-theme-persona": "PaciakPL/nodebb-theme-persona", + "nodebb-theme-slick": "1.2.1", + "nodebb-theme-vanilla": "9.0.7", + "nodebb-widget-essentials": "4.0.2", + "nodebb-widget-ns-birthdays": "^2.0.0", + "nodebb-widget-search-bar": "^1.1.2", + "nodemailer": "4.4.1", + "passport": "^0.4.0", + "passport-local": "1.0.0", + "postcss": "6.0.15", + "postcss-clean": "1.1.0", + "promise-polyfill": "^7.0.0", + "prompt": "^1.0.0", + "redis": "2.8.0", + "request": "2.83.0", + "rimraf": "2.6.2", + "rss": "^1.2.2", + "sanitize-html": "^1.16.3", + "semver": "^5.4.1", + "serve-favicon": "^2.4.5", + "sitemap": "^1.13.0", + "socket.io": "2.0.4", + "socket.io-adapter-mongo": "^2.0.1", + "socket.io-client": "2.0.4", + "socket.io-redis": "5.2.0", + "socketio-wildcard": "2.0.0", + "spdx-license-list": "^3.0.1", + "spider-detector": "1.0.18", + "toobusy-js": "^0.5.1", + "uglify-es": "^3.3.9", + "validator": "9.2.0", + "winston": "^2.4.0", + "xml": "^1.0.1", + "xregexp": "3.2.0", + "zxcvbn": "^4.4.2" + }, + "devDependencies": { + "coveralls": "^3.0.0", + "eslint": "^4.14.0", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-plugin-import": "^2.8.0", + "grunt": "^1.0.1", + "grunt-contrib-watch": "^1.0.0", + "jsdom": "^11.5.1", + "mocha": "^4.1.0", + "mocha-lcov-reporter": "^1.3.0", + "nyc": "^11.4.1", + "smtp-server": "^3.4.1" + }, + "bugs": { + "url": "https://github.com/NodeBB/NodeBB/issues" + }, + "engines": { + "node": ">=6" + }, + "maintainers": [ + { + "name": "Andrew Rodrigues", + "email": "andrew@nodebb.org", + "url": "https://github.com/psychobunny" }, - "main": "app.js", - "scripts": { - "start": "node loader.js", - "lint": "eslint --cache ./nodebb .", - "pretest": "npm run lint", - "test": "nyc --reporter=html --reporter=text-summary mocha", - "coveralls": "nyc report --reporter=text-lcov | coveralls && rm -r coverage" + { + "name": "Julian Lam", + "email": "julian@nodebb.org", + "url": "https://github.com/julianlam" }, - "dependencies": { - "ace-builds": "^1.2.9", - "async": "2.6.0", - "autoprefixer": "7.2.4", - "bcryptjs": "2.4.3", - "benchpressjs": "^1.2.1", - "body-parser": "^1.18.2", - "bootstrap": "^3.3.7", - "chart.js": "^2.7.1", - "clipboard": "1.7.1", - "colors": "^1.1.2", - "compression": "^1.7.1", - "commander": "^2.12.2", - "connect-ensure-login": "^0.1.1", - "connect-flash": "^0.1.1", - "connect-mongo": "2.0.1", - "connect-multiparty": "^2.1.0", - "connect-redis": "3.3.3", - "cookie-parser": "^1.4.3", - "cron": "^1.3.0", - "cropperjs": "^1.2.2", - "csurf": "^1.9.0", - "daemon": "^1.1.0", - "diff": "^3.4.0", - "express": "^4.16.2", - "express-session": "^1.15.6", - "express-useragent": "1.0.8", - "graceful-fs": "^4.1.11", - "helmet": "^3.11.0", - "html-to-text": "3.3.0", - "ipaddr.js": "^1.5.4", - "jimp": "0.2.28", - "jquery": "^3.2.1", - "jsesc": "2.5.1", - "json-2-csv": "^2.1.2", - "less": "^2.7.3", - "lodash": "^4.17.4", - "logrotate-stream": "^0.2.5", - "lru-cache": "4.1.1", - "material-design-lite": "^1.3.0", - "mime": "^2.2.0", - "mkdirp": "^0.5.1", - "mongodb": "2.2.33", - "morgan": "^1.9.0", - "mousetrap": "^1.6.1", - "mubsub": "^1.4.0", - "nconf": "^0.9.1", - "nodebb-plugin-composer-default": "6.0.21", - "nodebb-plugin-dbsearch": "2.0.16", - "nodebb-plugin-emoji": "^2.2.0", - "nodebb-plugin-emoji-android": "2.0.0", - "nodebb-plugin-markdown": "8.4.2", - "nodebb-plugin-mentions": "2.2.6", - "nodebb-plugin-soundpack-default": "1.0.0", - "nodebb-plugin-spam-be-gone": "0.5.3", - "nodebb-rewards-essentials": "0.0.11", - "nodebb-theme-lavender": "5.0.4", - "nodebb-theme-persona": "8.0.10", - "nodebb-theme-slick": "1.2.1", - "nodebb-theme-vanilla": "9.0.7", - "nodebb-widget-essentials": "4.0.2", - "nodemailer": "4.4.1", - "passport": "^0.4.0", - "passport-local": "1.0.0", - "postcss": "6.0.15", - "postcss-clean": "1.1.0", - "promise-polyfill": "^7.0.0", - "prompt": "^1.0.0", - "redis": "2.8.0", - "request": "2.83.0", - "rimraf": "2.6.2", - "rss": "^1.2.2", - "sanitize-html": "^1.16.3", - "semver": "^5.4.1", - "serve-favicon": "^2.4.5", - "sitemap": "^1.13.0", - "socket.io": "2.0.4", - "socket.io-adapter-mongo": "^2.0.1", - "socket.io-client": "2.0.4", - "socket.io-redis": "5.2.0", - "socketio-wildcard": "2.0.0", - "spdx-license-list": "^3.0.1", - "spider-detector": "1.0.18", - "toobusy-js": "^0.5.1", - "uglify-es": "^3.3.9", - "validator": "9.2.0", - "winston": "^2.4.0", - "xml": "^1.0.1", - "xregexp": "3.2.0", - "zxcvbn": "^4.4.2" - }, - "devDependencies": { - "coveralls": "^3.0.0", - "eslint": "^4.14.0", - "eslint-config-airbnb-base": "^12.1.0", - "eslint-plugin-import": "^2.8.0", - "grunt": "^1.0.1", - "grunt-contrib-watch": "^1.0.0", - "jsdom": "^11.5.1", - "mocha": "^4.1.0", - "mocha-lcov-reporter": "^1.3.0", - "nyc": "^11.4.1", - "smtp-server": "^3.4.1" - }, - "bugs": { - "url": "https://github.com/NodeBB/NodeBB/issues" - }, - "engines": { - "node": ">=6" - }, - "maintainers": [ - { - "name": "Andrew Rodrigues", - "email": "andrew@nodebb.org", - "url": "https://github.com/psychobunny" - }, - { - "name": "Julian Lam", - "email": "julian@nodebb.org", - "url": "https://github.com/julianlam" - }, - { - "name": "Barış Soner Uşaklı", - "email": "baris@nodebb.org", - "url": "https://github.com/barisusakli" - } - ] + { + "name": "Barış Soner Uşaklı", + "email": "baris@nodebb.org", + "url": "https://github.com/barisusakli" + } + ] } diff --git a/public/language/ar/admin/extend/plugins.json b/public/language/ar/admin/extend/plugins.json index aafae6e2f42d..81a3350c662d 100644 --- a/public/language/ar/admin/extend/plugins.json +++ b/public/language/ar/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "معلومات ترخيص الإضافة", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/ar/admin/general/dashboard.json b/public/language/ar/admin/general/dashboard.json index 04f01d1a0ded..ce874de81376 100644 --- a/public/language/ar/admin/general/dashboard.json +++ b/public/language/ar/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "مشاهدات الصفحة", "graphs.unique-visitors": "زوار فريدين", "graphs.registered-users": "مستخدمين مسجلين", - "graphs.anonymous-users": "مستخدمين مجهولين" + "graphs.anonymous-users": "مستخدمين مجهولين", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/ar/admin/settings/group.json b/public/language/ar/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/ar/admin/settings/group.json +++ b/public/language/ar/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/ar/admin/settings/notifications.json b/public/language/ar/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/ar/admin/settings/notifications.json +++ b/public/language/ar/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/ar/error.json b/public/language/ar/error.json index 9927e38efd2c..1d9ce1dbf463 100644 --- a/public/language/ar/error.json +++ b/public/language/ar/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "المرجود تحديد اسم مستخدم و كلمة مرور", "invalid-search-term": "كلمة البحث غير صحيحة", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "لم تتمكن من تسجيل الدخول. هنالك أحتمال ان جلستك انتهت. رجاءًا حاول مرة اخرى.", "invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .", "username-taken": "اسم المستخدم مأخوذ", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "يبدو أن فترة التسجيل لم تعد قائمة او هي غير مطابقة مع الخادم. يرجى إعادة تحميل هذه الصفحة.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/ar/flags.json b/public/language/ar/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/ar/flags.json +++ b/public/language/ar/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/ar/global.json b/public/language/ar/global.json index b3583b8718c2..9fde8785f907 100644 --- a/public/language/ar/global.json +++ b/public/language/ar/global.json @@ -97,6 +97,7 @@ "enter_page_number": "ادخل رقم الصفحة", "upload_file": "ارفع ملف", "upload": "ارفع", + "uploads": "Uploads", "allowed-file-types": "صيغ الملفات المدعومة هي 1%", "unsaved-changes": "لديك تغييرات لم تحفظ. هل أنت متأكد من رغبتك بمغادرة الصفحة؟", "reconnecting-message": "يبدو أن اتصالك لـ %1 قد فقد. رجاءًا أنتظر ثم حاول الإتصال مرة اخرى.", diff --git a/public/language/ar/modules.json b/public/language/ar/modules.json index 10f6399287b7..92b1fdc00115 100644 --- a/public/language/ar/modules.json +++ b/public/language/ar/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 يومًا", "chat.three_months": "3 أشهر", "chat.delete_message_confirm": "هل أنت متأكد من أنك تريد حذف هذه الرسالة؟", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "اكتب", "composer.show_preview": "عرض المعاينة", "composer.hide_preview": "إخفاء المعاينة", diff --git a/public/language/ar/pages.json b/public/language/ar/pages.json index ce00bd25158a..79e5323f010e 100644 --- a/public/language/ar/pages.json +++ b/public/language/ar/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "تم التحقق من عنوان البريد الإلكتروني", "maintenance.text": "جاري صيانة %1. المرجو العودة لاحقًا.", "maintenance.messageIntro": "بالإضافة إلى ذلك، قام مدبر النظام بترك هذه الرسالة:", diff --git a/public/language/ar/register.json b/public/language/ar/register.json index 9fe1af535c2c..7ff37627813c 100644 --- a/public/language/ar/register.json +++ b/public/language/ar/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "يجب عليك الموافقة على شروط الاستخدام", "registration-added-to-queue": "تمت إضافتك في قائمة الإنتضار. ستتلقى رسالة إلكترونية عند الموافقة على تسجيلك من قبل الإدارة.", "interstitial.intro": "نحتاج إلى بعض المعلومات الإضافية قبل أن نتمكن من إنشاء حسابك.", - "interstitial.errors-found": "تعذر علينا إتمام عملية التسجيل:" + "interstitial.errors-found": "تعذر علينا إتمام عملية التسجيل:", + "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 diff --git a/public/language/ar/topic.json b/public/language/ar/topic.json index 1d9423d9be69..ae7fe458239c 100644 --- a/public/language/ar/topic.json +++ b/public/language/ar/topic.json @@ -118,8 +118,8 @@ "sort_by": "ترتيب حسب", "oldest_to_newest": "من الأقدم إلى الأحدث", "newest_to_oldest": "من الأحدث إلى الأقدم", - "most_votes": "الأكثر تصويتًا", - "most_posts": "اﻷكثر رداً", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "موضوع جديد", @@ -127,5 +127,7 @@ "link_back": "رد: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/ar/uploads.json b/public/language/ar/uploads.json index 2002597f725c..5c0734ec55b6 100644 --- a/public/language/ar/uploads.json +++ b/public/language/ar/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "جاري رفع الملف...", "select-file-to-upload": "إختر ملف لرفعه!", "upload-success": "تم رفع الملف بنجاح!", - "maximum-file-size": "الحجم الأقصى %1 كيلوبت" + "maximum-file-size": "الحجم الأقصى %1 كيلوبت", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/ar/user.json b/public/language/ar/user.json index cde9d1635ad2..99e7d1562853 100644 --- a/public/language/ar/user.json +++ b/public/language/ar/user.json @@ -29,6 +29,8 @@ "ignored": "تم تجاهله", "followers": "المتابعون", "following": "يتابع", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "معلومة عنك او السيرة الذاتية", "signature": "توقيع", "birthday": "عيد ميلاد", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "هذا المستخدم لم يقم بالتصويت للأعلى لأي مشاركة حتى الآن.", "has_no_downvoted_posts": "هذا المستخدم لم يقم بالتصويت للأسفل لأي مشاركة حتى الآن.", "has_no_voted_posts": "هذا المستخدم لا يمتلك اية مشاركات تم التصويت عليها", + "has_no_blocks": "You have blocked no users.", "email_hidden": "البريد الإلكتروني مخفي", "hidden": "مخفي", "paginate_description": "عرض المواضيع والردود موزعة على صفحات عوضاً عن التمرير اللانهائي.", @@ -142,5 +145,25 @@ "info.email-history": "سجل البريد الإلكتروني", "info.moderation-note": "ملاحظة الإشراف", "info.moderation-note.success": "تم حفظ ملاحظة الإشراف", - "info.moderation-note.add": "إضافة ملاحظة" + "info.moderation-note.add": "إضافة ملاحظة", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/bg/admin/extend/plugins.json b/public/language/bg/admin/extend/plugins.json index 10ef94bf7eac..1f336697ae41 100644 --- a/public/language/bg/admin/extend/plugins.json +++ b/public/language/bg/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB не може да се свърже с пакетния мениджър. Не се препоръчва обновяване в момента.

", "alert.incompatible": "

Вашата версия на NodeBB (версия %1) може да използва най-много версия %2 на тази добавка. Моля, обновете NodeBB, ако искате да инсталирате по-нова версия на тази добавка.

", "alert.possibly-incompatible": "

Няма информация за съвместимостта

Тази добавка не е посочила конкретна версия за инсталация, съвместима с Вашата версия на NodeBB. Не можем да гарантираме пълна съвместимост и има възможност Вашият NodeBB да не може да стартира правилно.

Ако NodeBB не може да стартира, използвайте следната команда:

$ ./nodebb reset plugin=\"%1\"

Искате ли да продължите с инсталацията на най-новата версия на тази добавка?

", + "alert.reorder": "Добавките са пренаредени", + "alert.reorder-success": "Моля, изградете повторно и рестартирайте NodeBB, за да завърши този процес напълно.", "license.title": "Информация за лиценза на добавката", "license.intro": "Добавката „%1“ използва лиценза „%2“. Моля, прочетете условията на лиценза и се уверете, че ги разбирате, преди да включите добавката.", diff --git a/public/language/bg/admin/general/dashboard.json b/public/language/bg/admin/general/dashboard.json index 579de3fbb569..862aa260a45d 100644 --- a/public/language/bg/admin/general/dashboard.json +++ b/public/language/bg/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Преглеждания на страниците", "graphs.unique-visitors": "Уникални посетители", "graphs.registered-users": "Регистрирани потребители", - "graphs.anonymous-users": "Анонимни потребители" + "graphs.anonymous-users": "Анонимни потребители", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/bg/admin/settings/group.json b/public/language/bg/admin/settings/group.json index 880ed650cd30..d5edd3607fdd 100644 --- a/public/language/bg/admin/settings/group.json +++ b/public/language/bg/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Внимание! Ако това е изключено и имате частни групи, те автоматично ще станат публични.", "allow-creation": "Позволяване на създаването на групи", "allow-creation-help": "Ако е включено, потребителите ще могат да създават групи. (По подразбиране: изключено)", + "allow-multiple-badges-help": "Това може да се използва, за да позволи на потребителите да избират множество значки за групите. Изисква поддържа на теми.", "max-name-length": "Минимална дължина на името на група", "cover-image": "Изображение на корицата за групата", "default-cover": "Стандартни изображения на корицата", diff --git a/public/language/bg/admin/settings/notifications.json b/public/language/bg/admin/settings/notifications.json index d32a55604018..2b4787806a28 100644 --- a/public/language/bg/admin/settings/notifications.json +++ b/public/language/bg/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Известия", "welcome-notification": "Приветствено известие", "welcome-notification-link": "Връзка за приветственото известие", - "welcome-notification-uid": "Потр. ид. за приветственото известие" + "welcome-notification-uid": "Потр. ид. за приветственото известие", + "notification-alert-timeout": "Време за изчакване преди премахване на уведомяването за известие" } \ No newline at end of file diff --git a/public/language/bg/error.json b/public/language/bg/error.json index 3a9958333c10..9080d7ac4bf8 100644 --- a/public/language/bg/error.json +++ b/public/language/bg/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Моля, въведете потребителско име и парола", "invalid-search-term": "Грешен текст за търсене", "invalid-url": "Грешен адрес", + "local-login-disabled": "Системата за местно вписване е изключена за непривилегированите акаунти.", "csrf-invalid": "Не успяхме да Ви впишем, най-вероятно защото сесията Ви е изтекла. Моля, опитайте отново", "invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2", "username-taken": "Потребителското име е заето", @@ -145,5 +146,7 @@ "invalid-session": "Несъответствие в сесията", "invalid-session-text": "Изглежда сесията Ви на вписване вече е изтекла или не съответства на сървъра. Моля, опреснете страницата.", "no-topics-selected": "Няма избрани теми!", - "cant-move-to-same-topic": "Публикацията не може да бъде преместена в същата тема!" + "cant-move-to-same-topic": "Публикацията не може да бъде преместена в същата тема!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/bg/flags.json b/public/language/bg/flags.json index c509fd338ba4..f649220a5caf 100644 --- a/public/language/bg/flags.json +++ b/public/language/bg/flags.json @@ -18,6 +18,7 @@ "filter-type": "Вид на доклада", "filter-type-all": "Всичко", "filter-type-post": "Публикация", + "filter-type-user": "Потребител", "filter-state": "Състояние", "filter-assignee": "Потр. ид. на назначения", "filter-cid": "Категория", diff --git a/public/language/bg/global.json b/public/language/bg/global.json index ff4d151c0131..9c05d99ce9b0 100644 --- a/public/language/bg/global.json +++ b/public/language/bg/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Въведете номер на страница", "upload_file": "Качване на файл", "upload": "Качване", + "uploads": "Качвания", "allowed-file-types": "Разрешените файлови типове са: %1", "unsaved-changes": "Имате незапазени промени. Наистина ли искате да напуснете тази страница?", "reconnecting-message": "Изглежда връзката Ви към %1 беше прекъсната. Моля, изчакайте докато се опитаме да Ви свържем отново.", diff --git a/public/language/bg/modules.json b/public/language/bg/modules.json index ebfe40de7cda..70e5bed2836c 100644 --- a/public/language/bg/modules.json +++ b/public/language/bg/modules.json @@ -20,10 +20,9 @@ "chat.thirty_days": "30 дни", "chat.three_months": "3 месеца", "chat.delete_message_confirm": "Наистина ли искате да изтриете това съобщение?", - "chat.add-users-to-room": "Добавяне на потребители към стаята", "chat.retrieving-users": "Получаване на потребителите…", "chat.manage-room": "Управление на стаята за разговори", - "chat.add-user-help": "Тук можете да потърсите потребители. Когато някой потребител бъде избран, той ще бъде добавен в разговора. Новият потребител няма да може да вижда съобщенията, написани преди включването му в разговора.", + "chat.add-user-help": "Тук можете да потърсите потребители. Когато някой потребител бъде избран, той ще бъде добавен в разговора. Новият потребител няма да може да вижда съобщенията, написани преди включването му в разговора. Само собствениците на стаята могат да премахват потребители от нея.", "chat.confirm-chat-with-dnd-user": "Този потребител е в състояние „не ме безпокойте“. Наистина ли искате да разговаряте с него?", "chat.rename-room": "Преименуване на стаята", "chat.rename-placeholder": "Въведете името на стаята си тук", @@ -32,6 +31,7 @@ "chat.leave-prompt": "Наистина ли искате да напуснете този разговор?", "chat.leave-help": "Ако напуснете този разговор, няма да виждате следващите съобщения в него. Ако бъдете добавен(а) отново, няма да виждате историята на разговора отпреди добавянето Ви.", "chat.in-room": "В тази стая", + "chat.kick": "Изгонване", "composer.compose": "Писане", "composer.show_preview": "Показване на прегледа", "composer.hide_preview": "Скриване на прегледа", diff --git a/public/language/bg/pages.json b/public/language/bg/pages.json index 1a1fcae72c12..059ae11e5256 100644 --- a/public/language/bg/pages.json +++ b/public/language/bg/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Публикации, получили положителен глас от %1", "account/downvoted": "Публикации, получили отрицателен глас от %1", "account/best": "Най-добрите публикации от %1", + "account/blocks": "Блокирани потребители за %1", + "account/uploads": "Качвания от %1", "confirm": "Е-пощата е потвърдена", "maintenance.text": "%1 в момента е в профилактика. Моля, върнете се по-късно.", "maintenance.messageIntro": "В допълнение, администраторът е оставил това съобщение:", diff --git a/public/language/bg/register.json b/public/language/bg/register.json index b0f6d2f9c15c..f18e04cb9a48 100644 --- a/public/language/bg/register.json +++ b/public/language/bg/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "Трябва да се съгласите с условията за ползване", "registration-added-to-queue": "Вашата регистрация беше добавена в опашката за одобрение. Ще получите е-писмо, когато тя бъде одобрена от администратор.", "interstitial.intro": "Нуждаем се от малко допълнителна информация, преди да можем да създадем акаунта Ви.", - "interstitial.errors-found": "Не можем да завършим Вашата регистрация:" + "interstitial.errors-found": "Не можем да завършим Вашата регистрация:", + "gdpr_agree_data": "Съгласявам се това личната ми информация да се съхранява и обработва от този уеб сайт.", + "gdpr_agree_email": "Съгласявам се да получавам е-писма с резюмета и известия от този уеб сайт.", + "gdpr_consent_denied": "Трябва да се съгласите с това уеб сайтът да събира/обработва информацията Ви, и да Ви изпраща е-писма." } \ No newline at end of file diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json index 44866353c1f8..ade12623653b 100644 --- a/public/language/bg/topic.json +++ b/public/language/bg/topic.json @@ -118,8 +118,8 @@ "sort_by": "Подреждане по", "oldest_to_newest": "Първо най-старите", "newest_to_oldest": "Първо най-новите", - "most_votes": "Най-много гласове", - "most_posts": "Най-много публикации", + "most_votes": "Първо тези с най-много гласове", + "most_posts": "Първо тези с най-много публикации", "stale.title": "Създаване на нова тема вместо това?", "stale.warning": "Темата, в която отговаряте, е доста стара. Искате ли вместо това да създадете нова и да направите препратка към тази в отговора си?", "stale.create": "Създаване на нова тема", @@ -127,5 +127,7 @@ "link_back": "Отговор: [%1](%2)", "diffs.title": "История на редакциите", "diffs.description": "Тази публикация има %1 варианта. Щракнете върху някоя от версиите по-долу, за да видите съдържанието ѝ в съответния момент.", - "diffs.no-revisions-description": "Тази публикация има %1 варианта." + "diffs.no-revisions-description": "Тази публикация има %1 варианта.", + "diffs.current-revision": "текуща версия", + "diffs.original-revision": "оригинална версия" } \ No newline at end of file diff --git a/public/language/bg/uploads.json b/public/language/bg/uploads.json index e262a56d6c20..f7d513e9d6e8 100644 --- a/public/language/bg/uploads.json +++ b/public/language/bg/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Качване на файла…", "select-file-to-upload": "Изберете файл за качване!", "upload-success": "Файлът е качен успешно!", - "maximum-file-size": "Най-много %1 КБ" + "maximum-file-size": "Най-много %1 КБ", + "no-uploads-found": "Няма качвания", + "public-uploads-info": "Качванията са публични – всички посетители могат да ги видят.", + "private-uploads-info": "Качванията са частни – само вписаните потребители могат да ги видят" } \ No newline at end of file diff --git a/public/language/bg/user.json b/public/language/bg/user.json index aaded58ed73b..d909036a7527 100644 --- a/public/language/bg/user.json +++ b/public/language/bg/user.json @@ -29,6 +29,8 @@ "ignored": "Пренебрегвани", "followers": "Последователи", "following": "Следва", + "blocks": "Блокира", + "block_toggle": "Превключване на блокирането", "aboutme": "За мен", "signature": "Подпис", "birthday": "Рождена дата", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Този потребител не е гласувал положително досега.", "has_no_downvoted_posts": "Този потребител не е гласувал отрицателно досега.", "has_no_voted_posts": "Този потребител не е гласувал досега.", + "has_no_blocks": "Не сте блокирали никого.", "email_hidden": "Е-пощата е скрита", "hidden": "скрито", "paginate_description": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно", @@ -142,5 +145,25 @@ "info.email-history": "Историята на е-пощите", "info.moderation-note": "Модераторска бележка", "info.moderation-note.success": "Модераторската бележка е запазена", - "info.moderation-note.add": "Добавяне на бележка" + "info.moderation-note.add": "Добавяне на бележка", + "consent.title": "Вашите права и съгласие", + "consent.lead": "Този обществен форум събира и обработва лична информация.", + "consent.intro": "Използваме тази информация, само за да персонализираме взаимодействието Ви с форума, както и за да свържем публикациите Ви с Вашия потребителски акаунт. По време на регистрацията ще трябва да въведете потребителско име и е-поща, но ако искате, можете да предоставите и допълнителна информация, за да завършите потребителския си профил в уеб сайта.

Ние съхраняваме тази информация докато съществува потребителският Ви акаунт. Във всеки един момент можете да оттеглите съгласието си за това, като изтриете акаунта си. Във всеки един момент можете да изискате копие на въведеното от Вас в уеб сайт, чрез страницата за „Права и съгласие“.

Ако имате въпроси или притеснения, можете да се свържете с екипа от администратори на форума.", + "consent.email_intro": "Понякога може да изпращаме е-писма на регистрираната Ви е-поща, за да Ви кажем какво се случва, или да Ви уведомим, че има нещо ново, което Ви засяга. Можете да персонализирате честотата на резюметата (както и да ги изключите), както и да изберете какви известия да получавате по е-поща, чрез страницата с потребителските настройки.", + "consent.digest_frequency": "По подразбиране резюмета се изпращат по е-поща на всеки %1.", + "consent.digest_off": "В момента не се изпращат е-писма с резюмета", + "consent.received": "Вие сте се съгласили с това уеб сайтът да събира и обработва личната Ви информация. Не се изискват допълнителни действия.", + "consent.not_received": "Вие не сте се съгласили със събирането и обработването на Ваши данни. Администрацията на уеб сайта може по всяко време да изтрие акаунта Ви, за да спази изискванията за защита на данните.", + "consent.give": "Даване на съгласие", + "consent.right_of_access": "Имате право на достъп", + "consent.right_of_access_description": "Имате право на достъп до всички данни, събирани от този уеб сайт, при заявяване. Можете да получите копие от данните, като натиснете бутона по-долу.", + "consent.right_to_rectification": "Имате право на поправка", + "consent.right_to_rectification_description": "Имате право да промените или поправите всички неточни данни, които сте ни предоставили. Профилът Ви може да бъде променен като го редактирате, а съдържанието на публикациите може да бъде редактирано по всяко време. Ако имате по-различно изискване, моля, свържете се с администраторския екип", + "consent.right_to_erasure": "Имате право на изтриване", + "consent.right_to_erasure_description": "Във всеки един момент можете да оттеглите съгласието си за събиране и/или обработка на данни, като изтриете акаунта си. Вашият профил може да бъде изтрит, но публикуваното от Вас съдържание ще остане. Ако искате да изтриете както акаунта, така и съдържанието, публикувано от Вас, моля, свържете се с администрационния екип на уеб сайта.", + "consent.right_to_data_portability": "Имате право на пренос на данни", + "consent.right_to_data_portability_description": "Можете да изискате от нас всички събрани за Вас и акаунта Ви данни в машинен формат. Можете да направите това като натиснете съответния бутон по-долу.", + "consent.export_profile": "Изнасяне на профила (.csv)", + "consent.export_uploads": "Изнасяне на каченото съдържание (.zip)", + "consent.export_posts": "Изнасяне на публикациите (.csv)" } \ No newline at end of file diff --git a/public/language/bn/admin/extend/plugins.json b/public/language/bn/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/bn/admin/extend/plugins.json +++ b/public/language/bn/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/bn/admin/general/dashboard.json b/public/language/bn/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/bn/admin/general/dashboard.json +++ b/public/language/bn/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/bn/admin/settings/group.json b/public/language/bn/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/bn/admin/settings/group.json +++ b/public/language/bn/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/bn/admin/settings/notifications.json b/public/language/bn/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/bn/admin/settings/notifications.json +++ b/public/language/bn/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/bn/error.json b/public/language/bn/error.json index fc7a9bf7e59c..72439f797b32 100644 --- a/public/language/bn/error.json +++ b/public/language/bn/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "অনুগ্রহ পূর্বক ইউজারনেম এবং পাসওয়ার্ড উভয়ই প্রদান করুন", "invalid-search-term": "অগ্রহনযোগ্য সার্চ টার্ম", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "ইউজারনেম আগেই ব্যবহৃত", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/bn/flags.json b/public/language/bn/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/bn/flags.json +++ b/public/language/bn/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/bn/global.json b/public/language/bn/global.json index 3683b52c736c..252e87f3860c 100644 --- a/public/language/bn/global.json +++ b/public/language/bn/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/bn/modules.json b/public/language/bn/modules.json index ba26a01fce9f..fd83bb11a6c6 100644 --- a/public/language/bn/modules.json +++ b/public/language/bn/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "৩০ দিন", "chat.three_months": "৩ মাস", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/bn/pages.json b/public/language/bn/pages.json index e8e9e8b1dcc0..f09d1f177474 100644 --- a/public/language/bn/pages.json +++ b/public/language/bn/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/public/language/bn/register.json b/public/language/bn/register.json index 7576e7143a8b..75e8cd31b731 100644 --- a/public/language/bn/register.json +++ b/public/language/bn/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "আপনাকে অবশ্যই ব্যাবহার নীতিমালায় সম্মত হতে হবে।", "registration-added-to-queue": "আপনার নিবন্ধনটি এ্যাপ্লুভাল তালিকায় যুক্ত হয়েছে। একজন এডমিনিস্ট্রেটর কর্তৃক নিবন্ধন গৃহীত হলে আপনি একটি মেইল পাবেন। ", "interstitial.intro": "আপনার একাউন্ট তৈরীর পূর্বে আমাদের আরো কিছু বাড়তি তথ্য জানা প্রয়োজন।", - "interstitial.errors-found": "আপনার নিবন্ধনটি সম্পূর্ণ করা সম্ভব হয় নি।" + "interstitial.errors-found": "আপনার নিবন্ধনটি সম্পূর্ণ করা সম্ভব হয় নি।", + "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 diff --git a/public/language/bn/topic.json b/public/language/bn/topic.json index 495aaf647a82..d265b57fac82 100644 --- a/public/language/bn/topic.json +++ b/public/language/bn/topic.json @@ -118,8 +118,8 @@ "sort_by": "সাজানোর ভিত্তি:", "oldest_to_newest": "পুরাতন থেকে নতুন", "newest_to_oldest": "নতুন থেকে পুরাতন", - "most_votes": "সর্বোচ্চ ভোট", - "most_posts": "Most posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/bn/uploads.json b/public/language/bn/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/bn/uploads.json +++ b/public/language/bn/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/bn/user.json b/public/language/bn/user.json index f8f738d43bd0..e3cdfec80137 100644 --- a/public/language/bn/user.json +++ b/public/language/bn/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "যাদের অনুসরণ করছেন", "following": "যারা আপনাকে অনুসরণ করছে", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "আমার সম্পর্কে: ", "signature": "স্বাক্ষর", "birthday": "জন্মদিন", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "ইমেইল গোপন রাখা হয়েছে", "hidden": "গোপন করা হয়েছে", "paginate_description": "ইনফাইনাইট স্ক্রলের বদলে টপিক ও পোস্টের জন্য পেজিনেশন ব্যাবহার করা হোক", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/cs/admin/extend/plugins.json b/public/language/cs/admin/extend/plugins.json index c347e5c18377..b4d99027877e 100644 --- a/public/language/cs/admin/extend/plugins.json +++ b/public/language/cs/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB se nemohl připojit ke správci balíčku, aktualizace není doporučena.

", "alert.incompatible": "

Vaše verze NodeBB (v%1) umožňuje jen aktualizovat toto rozšíření na v%2. Aktualizujte prosím NodeBB, chcete-li nainstalovat nejnovější verzi tohoto rozšíření.

", "alert.possibly-incompatible": "

Nebyla nalezena žádná informace o kompatibilitě

Toto rozšíření nemá nastavenou požadovanou verzi NodeBB. Plná kompatibilita nemůže být garantována a může způsobit, že se vám již NodeBB nespustí.

Nespustí-li se správně NodeBB:

$ ./nodebb reset plugin=\"%1\"

Pokračovat v instalaci této aktuální verze rozšíření?

", + "alert.reorder": "Rozšíření byly seřazeny", + "alert.reorder-success": "Pro úplné dokončení úkonu, prosím znovu sestavte a restartujte Vaše NodeBB.", "license.title": "Licenční informace o rozšíření", "license.intro": "Rozšíření %1 je licencováno pod %2. Pro aktivování tohoto rozšíření si přečtěte licenční podmínky.", diff --git a/public/language/cs/admin/general/dashboard.json b/public/language/cs/admin/general/dashboard.json index bf8f52538a92..98161f5a07e9 100644 --- a/public/language/cs/admin/general/dashboard.json +++ b/public/language/cs/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Zobrazení stránky", "graphs.unique-visitors": "Jedineční návštěvníci", "graphs.registered-users": "Registrovaní uživatelé", - "graphs.anonymous-users": "Anonymní uživatelé" + "graphs.anonymous-users": "Anonymní uživatelé", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/cs/admin/settings/group.json b/public/language/cs/admin/settings/group.json index d74f9a8db297..4c7adee0f705 100644 --- a/public/language/cs/admin/settings/group.json +++ b/public/language/cs/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Ale pozor, je-li tato možnost zakázána a vy máte soukromé skupiny, stanou se automaticky veřejnými.", "allow-creation": "Povolit vytvoření skupin", "allow-creation-help": "Je-li povoleno, uživatelé mohou vytvořit skupiny (výchozí: zakázáno)", + "allow-multiple-badges-help": "Toto označení může být použito, aby uživatelé mohly vybrat několik skupinových symbolů, vyžaduje podporu motivu.", "max-name-length": "Maximální délka názvu skupiny", "cover-image": "Obrázek skupiny", "default-cover": "Výchozí obrázek", diff --git a/public/language/cs/admin/settings/notifications.json b/public/language/cs/admin/settings/notifications.json index 39bc83bdcb23..d215485e46da 100644 --- a/public/language/cs/admin/settings/notifications.json +++ b/public/language/cs/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Oznámení", "welcome-notification": "Uvítání", "welcome-notification-link": "Odkaz na uvítání", - "welcome-notification-uid": "Uvítání uživatele (UID)" + "welcome-notification-uid": "Uvítání uživatele (UID)", + "notification-alert-timeout": "Čas pro zobrazení oznámení" } \ No newline at end of file diff --git a/public/language/cs/error.json b/public/language/cs/error.json index 93c309c88d60..817260b1a132 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Zadejte prosím uživatelské jméno a i heslo", "invalid-search-term": "Neplatný výraz pro vyhledávání", "invalid-url": "Neplatné URL", + "local-login-disabled": "Systém přihlášení pro místní účty byl zakázán pro neoprávněné účty.", "csrf-invalid": "Není možné vás přihlásit, díky vypršení relace. Zkuste to prosím znovu.", "invalid-pagination-value": "Neplatná hodnota stránkování, musí být alespoň %1 a nejvýše %2", "username-taken": "Uživatelské jméno je již použito", @@ -145,5 +146,7 @@ "invalid-session": "Nesoulad v relacích", "invalid-session-text": "Zdá se, že vše relace s přihlášením již není aktivní nebo již neodpovídá s relací na serveru. Obnovte prosím tuto stránku.", "no-topics-selected": "Žádná vybraná témata.", - "cant-move-to-same-topic": "Není možné přesunout příspěvek do stejného tématu!" + "cant-move-to-same-topic": "Není možné přesunout příspěvek do stejného tématu!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/cs/flags.json b/public/language/cs/flags.json index eb37572f8adc..aaca99cf95a6 100644 --- a/public/language/cs/flags.json +++ b/public/language/cs/flags.json @@ -18,6 +18,7 @@ "filter-type": "Typ označení", "filter-type-all": "Všechen obsah", "filter-type-post": "Příspěvek", + "filter-type-user": "Uživatel", "filter-state": "Stav", "filter-assignee": "UID nabyvatele", "filter-cid": "Kategorie", diff --git a/public/language/cs/global.json b/public/language/cs/global.json index 2cbc654fd0ae..a4d10565734a 100644 --- a/public/language/cs/global.json +++ b/public/language/cs/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Zadejte číslo stránky", "upload_file": "Nahrár soubor", "upload": "Nahrát", + "uploads": "Náhráno", "allowed-file-types": "Povolené typy souborů jsou %1", "unsaved-changes": "Některé změny nebyly uloženy. Jste si jist, že chcete jít jinam?", "reconnecting-message": "Vypadá to, že vaše připojení k %1 bylo ukončeno. Vyčkejte prosím, než obnovíme připojení.", diff --git a/public/language/cs/modules.json b/public/language/cs/modules.json index 8d7d26e2c16a..c7a756dacbee 100644 --- a/public/language/cs/modules.json +++ b/public/language/cs/modules.json @@ -20,10 +20,9 @@ "chat.thirty_days": "30 dní", "chat.three_months": "3 měsíce", "chat.delete_message_confirm": "Jste si jist/a, že chcete odstranit tuto zprávu?", - "chat.add-users-to-room": "Přidat uživatele do místnosti", "chat.retrieving-users": "Získávání seznamu uživatelů...", "chat.manage-room": "Spravovat konverzační místnosti", - "chat.add-user-help": "Zde vyhledávejte uživatele. Při výběru, bude uživatel přidán do konverzace. Nový uživatel nebude moci vidět napsané zprávy před jeho přípojením do konverzace.", + "chat.add-user-help": "Zde můžete vyhledat uživatele. Při výběru bude daný uživatel přidán do konverzace. Nový uživatelé nebudou mít zobrazeny zprávy napsané před jejich připojení ke konverzaci. Jen vlastníci místnosti mohou mazat uživatele ze svých konverzačních místností.", "chat.confirm-chat-with-dnd-user": "Tento uživatel nastavil svůj stav na NERUŠIT. Opravdu chcete začít s ním konverzaci.", "chat.rename-room": "Přejmenovat místnost", "chat.rename-placeholder": "Zde zadejte název místnosti", @@ -32,6 +31,7 @@ "chat.leave-prompt": "Jste si jist/a, že chcete ukončit tuto konverzaci?", "chat.leave-help": "Ukončením této konverzace budete vyjmuti z budoucí možné komunikace v této konverzaci. Následně budete-li znovu přidán/a, neuvidíte historii komunikace od Vašeho odchodu.", "chat.in-room": "V této místnosti", + "chat.kick": "Vykopnout", "composer.compose": "Napsat", "composer.show_preview": "Ukázat náhled", "composer.hide_preview": "Skrýt náhled", diff --git a/public/language/cs/pages.json b/public/language/cs/pages.json index 31267947adac..036087ba7ad5 100644 --- a/public/language/cs/pages.json +++ b/public/language/cs/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Souhlasí s příspěvkem %1", "account/downvoted": "Nesouhlasí s příspěvkem %1", "account/best": "Nejlepší příspěvky od %1", + "account/blocks": "Zablokovaní uživatelé z %1", + "account/uploads": "Nahráno od %1", "confirm": "E-mail potvrzen", "maintenance.text": "%1 momentálně prochází údržbou. Vraťte se později.", "maintenance.messageIntro": "Správce zanechal tuto zprávu:", diff --git a/public/language/cs/register.json b/public/language/cs/register.json index 2d4c449794e7..2175d64a1385 100644 --- a/public/language/cs/register.json +++ b/public/language/cs/register.json @@ -19,5 +19,8 @@ "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í.", "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:" + "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.", + "gdpr_agree_email": "Dávám souhlas k dostávání e-mailových přehledů a oznámení z týkající se této webové stránky.", + "gdpr_consent_denied": "Musíte dát souhlas této stránce sbírat/zpracovávat informace o vaší činnosti a odesílat vám e-maily." } \ No newline at end of file diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json index 65a4197a0f83..1c8782bec86a 100644 --- a/public/language/cs/topic.json +++ b/public/language/cs/topic.json @@ -118,8 +118,8 @@ "sort_by": "Seřadit dle", "oldest_to_newest": "Od nejstarších po nejnovější", "newest_to_oldest": "Od nejnovějších po nejstarší", - "most_votes": "Nejvíce hlasů", - "most_posts": "Nejvíce příspěvků", + "most_votes": "S nejvíce hlasy", + "most_posts": "S nejvíce příspěvky", "stale.title": "Raději vytvořit nové téma?", "stale.warning": "Reagujete na starší téma. Nechcete raději vytvořit nové téma a na původní v něm odkázat?", "stale.create": "Vytvořit nové téma", @@ -127,5 +127,7 @@ "link_back": "Odpověď: [%1](%2)", "diffs.title": "Historie úpravy příspěvku", "diffs.description": "Tento příspěvek má %1 změn. Pro zobrazení obsahu příspěvku platného v daný čas, klikněte níže na jednu ze změn.", - "diffs.no-revisions-description": "Tento příspěvek má %1 změn." + "diffs.no-revisions-description": "Tento příspěvek má %1 změn.", + "diffs.current-revision": "aktuální revize", + "diffs.original-revision": "originální revize" } \ No newline at end of file diff --git a/public/language/cs/uploads.json b/public/language/cs/uploads.json index d998aaa65e9f..373b44b70a83 100644 --- a/public/language/cs/uploads.json +++ b/public/language/cs/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Nahrávání souboru…", "select-file-to-upload": "Vyberte soubor pro nahrání.", "upload-success": "Soubor byl úspěšně nahrán.", - "maximum-file-size": "Maximálně %1 kb" + "maximum-file-size": "Maximálně %1 kb", + "no-uploads-found": "Nebyly nalezeny žádné nahrávání", + "public-uploads-info": "Nahrávání jsou veřejná, všichni návštěvníci je mohou vidět.", + "private-uploads-info": "Nahrávání jsou soukromá, jen přihlášení uživatelé je mohou vidět." } \ No newline at end of file diff --git a/public/language/cs/user.json b/public/language/cs/user.json index 549c984c49ca..a5ab77110d4d 100644 --- a/public/language/cs/user.json +++ b/public/language/cs/user.json @@ -29,6 +29,8 @@ "ignored": "Ignorován", "followers": "Sledují ho", "following": "Sleduje", + "blocks": "Zablokováni", + "block_toggle": "Přepnout zablokování", "aboutme": "O mně", "signature": "Podpis", "birthday": "Datum narození", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Tento uživatel zatím nevyjádřil souhlas u žádného příspěvku.", "has_no_downvoted_posts": "Tento uživatel zatím nevyjádřil nesouhlas u žádného příspěvku.", "has_no_voted_posts": "Tento uživatel nemá žádné hlasovací příspěvky", + "has_no_blocks": "Nezablokoval/a jste žádné uživatele.", "email_hidden": "E-mail je skryt", "hidden": "skrytý", "paginate_description": "Stránkovat témata a příspěvky místo použití nekonečného posunování", @@ -142,5 +145,25 @@ "info.email-history": "E-mailová historie", "info.moderation-note": "Poznámka moderace", "info.moderation-note.success": "Poznámka moderace byla uložena", - "info.moderation-note.add": "Přidat poznámku" + "info.moderation-note.add": "Přidat poznámku", + "consent.title": "Váš právní souhlas", + "consent.lead": "Toto komunitní fórum sbírá zpracovává vaše osobní údaje.", + "consent.intro": "Tyto informace používáme pouze pro peronizaci vašich zkušeností v této komunitě, stejně tak k rozpoznání příspěvků, které jste pod uživatelským účtem vytvořil. Během jednotlivých registračních kroků budete požádán/a o zadání Vašeho uživatelského jména a e-mailové adresy. Můžete také dobrovolně poskytnout některé dodatečné informace do vašeho profilu na webové stránce.Tyto informace uchováváme po dobu životnosti vašeho uživatelského účtu a Vy můžete kdykoliv zrušit tento svůj souhlas smazáním vašeho účtu. Kdykoli můžete požadovat kopii svých příspěvků na této webové stránce pomocí stránky „Práva a souhlas”

Máte-li nějaké otázky nebo obavy, obraťte se na tým správců fóra.", + "consent.email_intro": "Občas Vám zašleme zprávu na vaši registrovanou e-mailovou schránku za účelem poskytnutí přehledu novinek a/nebo Vám oznámíme o nových příspěvcích, které jsou pro vás relevantní. Časový přehled novinek si můžete kdykoliv upravit (popřípadě ho zakázat), stejně tak vybrat, které typy oznámení chcete dostávat na e-mail. Docílíte toho v uživatelském nastavení.", + "consent.digest_frequency": "Standardně tato komunita odesílá e-mailové přehledy každý %1.", + "consent.digest_off": "Momentálně tato komunita nerozesílá e-mailové přehledy.", + "consent.received": "Souhlasil/a jste, že tato stránka může shromažďovat a zpracovávat informace o Vás. Žádný dodatečný úkon není třeba.", + "consent.not_received": "Neposkytl/a jste souhlas se sběrem a zpracováním dat. V tuto chvíly tato webová stránka a její tým správců může smazat váš účet za účelem naplnění zákona „Obecné nařízení o ochraně osobních údajů (GDPR)”.", + "consent.give": "Dát souhlas", + "consent.right_of_access": "Můžete se k nám přidat", + "consent.right_of_access_description": "Máte právo ověřit si data sesbírané touto stránkou. Takovouto kopii dat získáte kliknutím na vhodné tlačítko níže.", + "consent.right_to_rectification": "Máte právo zrušit svůj souhlas", + "consent.right_to_rectification_description": "Máte právo změnit nebo aktualizovat nepřesná data, která jste nám poskytl/a. Váš profil může být aktualizován, pouhou jeho editací a obsah příspěvků může být kdykoliv upraven. Pokud Vám v tuto chvíli jde o něco jiného, kontaktujte tým správců této stránky.", + "consent.right_to_erasure": "Máte právo být smazán", + "consent.right_to_erasure_description": "Kdykoliv můžete změnit svůj souhlas se shromažďováním dat a/nebo zpracování odstraněním vašeho účtu. Váš profil bude odstraněn, ačkoliv vaše příspěvky budou zachovány. Pokud si přejete odstranění jak účtu tak i obsahu, prosím kontaktujte správce této stránky.", + "consent.right_to_data_portability": "Máte právo na přenositelnost dat", + "consent.right_to_data_portability_description": "Můžete od nás požadovat strojně čitelné data, která byla sesbírána o Vás a vašem účtu. Učiníte tak kliknutím na tlačítka zobrazená níže.", + "consent.export_profile": "Exportovat profil (*.csv)", + "consent.export_uploads": "Exportovat nahraný obsah (*.zip)", + "consent.export_posts": "Exportovat příspěvky (*.csv)" } \ No newline at end of file diff --git a/public/language/da/admin/extend/plugins.json b/public/language/da/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/da/admin/extend/plugins.json +++ b/public/language/da/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/da/admin/general/dashboard.json b/public/language/da/admin/general/dashboard.json index ea37a73ac263..a73d93dbcbcd 100644 --- a/public/language/da/admin/general/dashboard.json +++ b/public/language/da/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/da/admin/settings/group.json b/public/language/da/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/da/admin/settings/group.json +++ b/public/language/da/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/da/admin/settings/notifications.json b/public/language/da/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/da/admin/settings/notifications.json +++ b/public/language/da/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/da/error.json b/public/language/da/error.json index a7b04d9a8f8c..60688b4c1d9b 100644 --- a/public/language/da/error.json +++ b/public/language/da/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode", "invalid-search-term": "Ugyldig søgeterm", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Ugyldig side værdi, skal mindst være %1 og maks. %2", "username-taken": "Brugernavn optaget", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/da/flags.json b/public/language/da/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/da/flags.json +++ b/public/language/da/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/da/global.json b/public/language/da/global.json index 8548bf7fa488..ef7779dba7c1 100644 --- a/public/language/da/global.json +++ b/public/language/da/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Indsæt sideantal", "upload_file": "Upload fil", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Tilladte filtyper er %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/da/modules.json b/public/language/da/modules.json index 411091bd9878..e3f85a87d06d 100644 --- a/public/language/da/modules.json +++ b/public/language/da/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dage", "chat.three_months": "3 måneder", "chat.delete_message_confirm": "Er du sikker på at du vil slette denne besked?", - "chat.add-users-to-room": "Tilføj brugere til chatrum", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Skriv", "composer.show_preview": "Vis forhåndsvisning", "composer.hide_preview": "Fjern forhåndsvisning", diff --git a/public/language/da/pages.json b/public/language/da/pages.json index 769ca2a36389..ae8dfe53be5c 100644 --- a/public/language/da/pages.json +++ b/public/language/da/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Indlæg syntes godt om af %1", "account/downvoted": "Indlæg syntes ikke godt om af %1", "account/best": "Bedste indlæg skrevet af %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Bekræftet", "maintenance.text": "%1 er under vedligeholdelse. Kom venligst tilbage senere.", "maintenance.messageIntro": "Administratoren har yderligere vedlagt denne besked:", diff --git a/public/language/da/register.json b/public/language/da/register.json index a63dae03aabd..720d58030128 100644 --- a/public/language/da/register.json +++ b/public/language/da/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "We require some additional information before we can create your account.", - "interstitial.errors-found": "We could not complete your registration:" + "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 diff --git a/public/language/da/topic.json b/public/language/da/topic.json index 78602def4b51..66bb3dfe8f04 100644 --- a/public/language/da/topic.json +++ b/public/language/da/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sorter efter", "oldest_to_newest": "Ældste til nyeste", "newest_to_oldest": "Nyeste til ældste", - "most_votes": "Flest stemmer", - "most_posts": "Flest indlæg", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Opret nyt emne istedet?", "stale.warning": "Emnet du svarer på er ret gammelt. Vil du oprette et nyt emne istedet og referere dette indlæg i dit svar?", "stale.create": "Opret nyt emne", @@ -127,5 +127,7 @@ "link_back": "Svar: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/da/uploads.json b/public/language/da/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/da/uploads.json +++ b/public/language/da/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/da/user.json b/public/language/da/user.json index 0dfc584c2afe..53aa2282299c 100644 --- a/public/language/da/user.json +++ b/public/language/da/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Followers", "following": "Følger", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Om mig", "signature": "Signatur", "birthday": "Fødselsdag", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Denne bruger har ikke syntes godt om nogle indlæg endnu.", "has_no_downvoted_posts": "Denne bruger har ikke, syntes ikke godt om nogle indlæg endnu.", "has_no_voted_posts": "Denne bruger har ingen stemte indlæg", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Skjult", "hidden": "skjult", "paginate_description": "Sideinddel emner og indlæg istedet for uendeligt rul", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/de/admin/admin.json b/public/language/de/admin/admin.json index 5669a4fae2d8..6e51d91fc072 100644 --- a/public/language/de/admin/admin.json +++ b/public/language/de/admin/admin.json @@ -1,5 +1,5 @@ { - "alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?", + "alert.confirm-rebuild-and-restart": "Bist du sicher, dass du NodeBB neu bauen und neu starten möchtest?", "alert.confirm-restart": "Bist du sicher, dass du NodeBB neu starten möchtest?", "acp-title": "%1 | NodeBB Admin Systemsteuerung", diff --git a/public/language/de/admin/appearance/themes.json b/public/language/de/admin/appearance/themes.json index dc43a0032531..09019b588b11 100644 --- a/public/language/de/admin/appearance/themes.json +++ b/public/language/de/admin/appearance/themes.json @@ -7,5 +7,5 @@ "revert-confirm": "Bist du dir sicher, dass du das standard NodeBB Theme wieder herstellen willst?", "theme-changed": "Theme geändert", "revert-success": "Du hast dein NodeBB erfolgreich wieder auf das Standard-Theme zurückgesetzt.", - "restart-to-activate": "Please rebuild and restart your NodeBB to fully activate this theme." + "restart-to-activate": "Bitte baue und starte NodeBB neu um das Theme zu aktivieren." } \ No newline at end of file diff --git a/public/language/de/admin/extend/plugins.json b/public/language/de/admin/extend/plugins.json index 3e4c92cc866c..1c26d1f8cae5 100644 --- a/public/language/de/admin/extend/plugins.json +++ b/public/language/de/admin/extend/plugins.json @@ -37,13 +37,15 @@ "alert.uninstalled": "Plugin deinstalliert", "alert.activate-success": "Bitte starte NodeBB neu, um dieses Plugin vollständig zu aktivieren", "alert.deactivate-success": "Plugin erfolgreich deaktiviert", - "alert.upgrade-success": "Please rebuild and restart your NodeBB to fully upgrade this plugin.", + "alert.upgrade-success": "Bitte Starte dein NodeBB neu um dieses Plugin völlständig zu upgraden.", "alert.install-success": "Plugin erfolgreich installiert. Bitte aktiviere das Plugin", "alert.uninstall-success": "Das Plugin wurde erfolgreich deaktiviert und deinstalliert.", "alert.suggest-error": "

NodeBB konnte den Paket-Manager nicht erreichen. Willst Du mit der Installation der neuesten Version fortfahren

Der Server meldete (%1): %2
", "alert.package-manager-unreachable": "

NodeBB konnte den Paket-Manager nicht erreichen, eine Aktualisierung wird momentan nicht empfohlen.

", "alert.incompatible": "

NodeBB Version (v%1) ist nur für Aktualisierungen bis v%2 dieses Plugins bestimmt. Bitte aktualisiere NodeBB, wenn eine neuere Version dieses Plugins installiert werden soll.

", "alert.possibly-incompatible": "

Keine Kompatibilitätsinformationen gefunden

Dieses Plugin legte keine spezifische NodeBB version fest, welche für die Installation benötigt wird. Volle Kompatibilität kann nicht gewährleistet werden, was dazu führen könnte, dass ihr NodeBB nicht mehr korrekt startet.

Für den Fall, dass NodeBB nicht mehr ordnungsgemäß startet:

$ ./nodebb reset plugin=\"%1\"

Soll mit der installation der neuesten Version dieses Plugins fortgefahren werden?

", + "alert.reorder": "Plugins Neusortiert", + "alert.reorder-success": "Bitte Starte dein NodeBB neu um diesen Prozess vollständig abzuschließen.", "license.title": "Plugin-Lizenzinformation", "license.intro": "Das Plugin %1is unter der %2 lizenziert. Bitte ließ dir diese durch bevor du dieses Plugin aktivierst.", diff --git a/public/language/de/admin/general/dashboard.json b/public/language/de/admin/general/dashboard.json index 4bb8b66a380e..623741dacdaf 100644 --- a/public/language/de/admin/general/dashboard.json +++ b/public/language/de/admin/general/dashboard.json @@ -37,8 +37,8 @@ "search-plugin-tooltip": "Installiere ein Such-Plugin auf der Plugin-Seite um die Such-Funktionalität zu aktivieren", "control-panel": "Systemsteuerung", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "Restart", + "rebuild-and-restart": "Regenerieren & Neustarten", + "restart": "Neustarten", "restart-warning": "NodeBB zu regenerieren oder neuzustarten wird alle existierenden Verbindungen für ein paar Sekunden trennen.", "restart-disabled": "Das Regenerieren und Neustarten von NodeBB wurde deaktiviert, da es nicht so aussieht als ob es über einem kompatiblem daemon läuft.", "maintenance-mode": "Wartungsmodus", @@ -67,5 +67,6 @@ "graphs.page-views": "Seitenaufrufe", "graphs.unique-visitors": "Verschiedene Besucher", "graphs.registered-users": "Registrierte Benutzer", - "graphs.anonymous-users": "Anonyme Benutzer" + "graphs.anonymous-users": "Anonyme Benutzer", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/de/admin/menu.json b/public/language/de/admin/menu.json index 4709058796f2..4acbad365507 100644 --- a/public/language/de/admin/menu.json +++ b/public/language/de/admin/menu.json @@ -63,7 +63,7 @@ "development/logger": "Logger", "development/info": "Info", - "rebuild-and-restart-forum": "Rebuild & Restart Forum", + "rebuild-and-restart-forum": "Forum regenerieren & neustarten", "restart-forum": "Forum neu starten", "logout": "Abmelden", "view-forum": "Forum anzeigen", diff --git a/public/language/de/admin/settings/group.json b/public/language/de/admin/settings/group.json index 99f4b5ea313e..8b13a8ed7ba4 100644 --- a/public/language/de/admin/settings/group.json +++ b/public/language/de/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Vorsicht! Wenn diese Option deaktiviert ist, und es private Gruppen gibt, werden diese automatisch öffentlich.", "allow-creation": "Erstellung von Gruppen erlauben", "allow-creation-help": "Wenn aktiviert können Nutzer Gruppen erstellen (Standard: deaktiviert)", + "allow-multiple-badges-help": "Diese Eintellung kann verwendet werden um Benutzern zu erlauben mehrere Gruppen abzeichen auszuwählen, benötigt Theme unterstützung.", "max-name-length": "Maximale Länge von Gruppennamen", "cover-image": "Gruppen-Deckbild", "default-cover": "Standard-Deckbild", diff --git a/public/language/de/admin/settings/notifications.json b/public/language/de/admin/settings/notifications.json index e66499b0819f..626b3c493536 100644 --- a/public/language/de/admin/settings/notifications.json +++ b/public/language/de/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Benachrichtigungen", "welcome-notification": "Wilkommensnachricht", "welcome-notification-link": "Wilkommensnachricht-Link", - "welcome-notification-uid": "Wilkommensbenachrichtigung Benutzer (UID)" + "welcome-notification-uid": "Wilkommensbenachrichtigung Benutzer (UID)", + "notification-alert-timeout": "Benachrichtigungs Timeout" } \ No newline at end of file diff --git a/public/language/de/admin/settings/post.json b/public/language/de/admin/settings/post.json index 706cea1b92df..591a942db837 100644 --- a/public/language/de/admin/settings/post.json +++ b/public/language/de/admin/settings/post.json @@ -50,5 +50,5 @@ "composer.custom-help": "Benutzerdefinierter Hilfe-Text", "ip-tracking": "IP-Verfolgung", "ip-tracking.each-post": "IP-Adresse für jeden Beitrag speichern", - "enable-post-history": "Enable Post History" + "enable-post-history": "Aktiviere Beitrags-Änderungsgeschichte" } \ No newline at end of file diff --git a/public/language/de/error.json b/public/language/de/error.json index 5a0b0cebdd89..e20dd74c6ebb 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Bitte gib sowohl einen Benutzernamen als auch ein Passwort an", "invalid-search-term": "Ungültige Suchanfrage", "invalid-url": "Ungültige URL", + "local-login-disabled": "Lokales Login System wurde für nicht-priviligierte Accounts deaktiviert.", "csrf-invalid": "Dein Login war nicht erfolgreich da wahrscheinlich deine Sitzung abgelaufen ist. Bitte versuche es noch einmal", "invalid-pagination-value": "Ungültige Seitennummerierung, muss mindestens %1 und maximal %2 sein", "username-taken": "Der Benutzername ist bereits vergeben", @@ -145,5 +146,7 @@ "invalid-session": "Sitzungsdiskrepanz", "invalid-session-text": "Es scheint als wäre deine Login-Sitzung nicht mehr aktiv oder sie passt nicht mehr mit der des Servers. Bitte aktualisiere diese Seite.", "no-topics-selected": "Keine Beiträge ausgewählt!", - "cant-move-to-same-topic": "Du kannst den Beitrag nicht in das selbe Thema schieben!" + "cant-move-to-same-topic": "Du kannst den Beitrag nicht in das selbe Thema schieben!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/de/flags.json b/public/language/de/flags.json index 9ef54211e34b..e61187737dfb 100644 --- a/public/language/de/flags.json +++ b/public/language/de/flags.json @@ -18,6 +18,7 @@ "filter-type": "Meldungstyp", "filter-type-all": "Gesamter Inhalt", "filter-type-post": "Beitrag", + "filter-type-user": "Benutzer", "filter-state": "Status", "filter-assignee": "UID des Zugewiesenen", "filter-cid": "Kategorie", diff --git a/public/language/de/global.json b/public/language/de/global.json index 32bbdf6dbbb3..b4c6c71e8312 100644 --- a/public/language/de/global.json +++ b/public/language/de/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Seitennummer eingeben", "upload_file": "Datei hochladen", "upload": "Hochladen", + "uploads": "Uploads", "allowed-file-types": "Erlaubte Dateitypen sind %1", "unsaved-changes": "Es gibt ungespeicherte Änderungen. Bist du dir sicher, dass du die Seite verlassen willst?", "reconnecting-message": "Es scheint als hättest du die Verbindung zu %1 verloren, bitte warte während wir versuchen sie wieder aufzubauen.", diff --git a/public/language/de/modules.json b/public/language/de/modules.json index 4c88151d1d5a..6723fd9c595c 100644 --- a/public/language/de/modules.json +++ b/public/language/de/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Tage", "chat.three_months": "3 Monate", "chat.delete_message_confirm": "Bist du sicher, dass du diese Nachricht löschen möchtest?", - "chat.add-users-to-room": "Benutzer zum Raum hinzufügen", "chat.retrieving-users": "Rufe Benutzer ab", "chat.manage-room": "Chat-Room managen", - "chat.add-user-help": "Suche hier nach Benutzern. Wenn du einen ausgewählt hast, wird dieser zum Chat hinzugefügt. Der neue Benutzer wird keine Chatnachrichten sehen können die geschrieben wurden, bevor er zu der Konversation hinzugefügt wurde.", + "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.confirm-chat-with-dnd-user": "Dieser Benutzer hat seinen Status auf DnD (Bitte nicht stören) gesetzt. Möchtest du dennoch mit ihm chatten?", - "chat.rename-room": "Chat-Room umbenennen", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Gib deinen Chatraumnamen hier ein", "chat.rename-help": "Den Namen des Chatraums den du hier setzt, wird für alle Teilnehmer sichtbar sein.", "chat.leave": "Chat verlassen", "chat.leave-prompt": "Bist du sicher, dass du diesen Chat verlassen willst?", "chat.leave-help": "Den Chat zu verlassen wird dich von weiterem Schriftverkehr in diesem Chat entfernen. Solltest du in der Zukunft wieder hinzugefügt werden, würdest du keinen Chatverlauf sehen können, der in der Zwischenzeit geschrieben wurde.", "chat.in-room": "In diesem Chat-Room", + "chat.kick": "Kick", "composer.compose": "Verfassen", "composer.show_preview": "Vorschau zeigen", "composer.hide_preview": "Vorschau ausblenden", diff --git a/public/language/de/pages.json b/public/language/de/pages.json index a24ada37f9b5..96e04e927c64 100644 --- a/public/language/de/pages.json +++ b/public/language/de/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Von %1 positiv bewertete Beiträge", "account/downvoted": "Von %1 negativ bewertete Beiträge", "account/best": "Bestbewertete Beiträge von %1", + "account/blocks": "Für %1 geblockte Benutzer", + "account/uploads": "Uploads von %1", "confirm": "E-Mail bestätigt", "maintenance.text": "%1 befindet sich derzeit in der Wartung. Bitte komm später wieder.", "maintenance.messageIntro": "Zusätzlich hat der Administrator diese Nachricht hinterlassen:", diff --git a/public/language/de/register.json b/public/language/de/register.json index 9d1b7ca049ed..6fe1f29e8064 100644 --- a/public/language/de/register.json +++ b/public/language/de/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Wir benötigen ein wenig mehr Informationen bevor wir deinen Account erstellen können.", - "interstitial.errors-found": "Wir konnten deinen Registrierungsvorgang nicht abschließen:" + "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.", + "gdpr_agree_email": "Ich bin damit einverstanden, dass ich Informations und Benachrichtigungs-EMails von dieser Website erhalte.", + "gdpr_consent_denied": "Du musst zustimmen, dass diese Seite deine Daten sammeln und verarbeiten darf, und dir Emails senden darf." } \ No newline at end of file diff --git a/public/language/de/reset_password.json b/public/language/de/reset_password.json index e7abff5da7a8..96b70352d44a 100644 --- a/public/language/de/reset_password.json +++ b/public/language/de/reset_password.json @@ -9,7 +9,7 @@ "repeat_password": "Wiederhole das Passwort", "enter_email": "Bitte gib Deine E-Mail Adresse ein und wir senden Dir eine Anleitung, wie Du Dein Passwort zurücksetzen kannst.", "enter_email_address": "E-Mail Adresse eingeben", - "password_reset_sent": "A password reset email has been sent to the specified address. Please note that only one email will be sent per minute.", + "password_reset_sent": "Eine Passwort-Reset-Email wurde an die angegebene Adresse gesendet. Bitte beachte, dass nur eine Email pro Minute versandt wird.", "invalid_email": "Ungültige E-Mail / Adresse existiert nicht!", "password_too_short": "Das eingegebene Passwort ist zu kurz, bitte wähle ein anderes Passwort.", "passwords_do_not_match": "Die eingegebenen Passwörter stimmen nicht überein.", diff --git a/public/language/de/search.json b/public/language/de/search.json index bc779b9579c4..da1b087482b7 100644 --- a/public/language/de/search.json +++ b/public/language/de/search.json @@ -5,9 +5,9 @@ "in": "In", "titles": "Titel", "titles-posts": "Titel und Beiträge", - "match-words": "Match words", - "all": "All", - "any": "Any", + "match-words": "Übereinstimmende Worte", + "all": "Alle", + "any": "Alles", "posted-by": "Geschrieben von", "in-categories": "In Kategorien", "search-child-categories": "Suche in Unterkategorien", diff --git a/public/language/de/topic.json b/public/language/de/topic.json index 4b0774508c61..12e8c60498c7 100644 --- a/public/language/de/topic.json +++ b/public/language/de/topic.json @@ -62,7 +62,7 @@ "thread_tools.lock": "Thema schließen", "thread_tools.unlock": "Thema öffnen", "thread_tools.move": "Thema verschieben", - "thread_tools.move-posts": "Move Posts", + "thread_tools.move-posts": "Beiträge verschieben", "thread_tools.move_all": "Alle verschieben", "thread_tools.select_category": "Kategorie auswählen", "thread_tools.fork": "Thema aufspalten", @@ -97,7 +97,7 @@ "fork_success": "Thema erfolgreich aufgespalten! Klicke hier, um zum abgespaltenen Thema zu gelangen.", "delete_posts_instruction": "Wähle die zu löschenden Beiträge aus", "merge_topics_instruction": "Wähle die Themen aus, die du vereinen möchtest", - "move_posts_instruction": "Click the posts you want to move", + "move_posts_instruction": "Klicke auf die Beiträge, die du verschieben möchstest.", "composer.title_placeholder": "Hier den Titel des Themas eingeben...", "composer.handle_placeholder": "Name", "composer.discard": "Verwerfen", @@ -118,8 +118,8 @@ "sort_by": "Sortieren nach", "oldest_to_newest": "Älteste zuerst", "newest_to_oldest": "Neuste zuerst", - "most_votes": "Die meisten Stimmen", - "most_posts": "Die meisten Beiträge", + "most_votes": "Meiste Stimmen", + "most_posts": "Meiste Beiträge", "stale.title": "Stattdessen ein neues Thema erstellen?", "stale.warning": "Das Thema auf das du antworten willst ist ziemlich alt. Möchtest du stattdessen ein neues Thema erstellen und auf dieses in deiner Antwort hinweisen?", "stale.create": "Ein neues Thema erstellen", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Beitragsänderungsverlauf", "diffs.description": "Dieser Beitrag hat %1 Revisionen. Klicke unten auf eine dieser Revisionen um den Inhalt zu diesem Zeitpunkt zu sehen.", - "diffs.no-revisions-description": "Dieser Beitrag ha %1 Revisionen." + "diffs.no-revisions-description": "Dieser Beitrag ha %1 Revisionen.", + "diffs.current-revision": "Aktuelle Revision", + "diffs.original-revision": "Ursprüngliche Revision" } \ No newline at end of file diff --git a/public/language/de/uploads.json b/public/language/de/uploads.json index 2e0c183386ab..89ece109916a 100644 --- a/public/language/de/uploads.json +++ b/public/language/de/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Lade Datei hoch...", "select-file-to-upload": "Wähle eine Datei zum Hochladen aus!", "upload-success": "Datei erfolgreich hochgeladen!", - "maximum-file-size": "Maximal %1 kb" + "maximum-file-size": "Maximal %1 kb", + "no-uploads-found": "Keine Uploads gefunden", + "public-uploads-info": "Uploads sind öffentlich, alle Besucher können diese sehen.", + "private-uploads-info": "Uploads sind privat, nur eingeloggte Benutzer können diese sehen." } \ No newline at end of file diff --git a/public/language/de/user.json b/public/language/de/user.json index efe4bdf7bf43..3ec35c8c811e 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -12,7 +12,7 @@ "ban_account_confirm": "Bist du sicher, dass du diesen Benutzer sperren möchtest?", "unban_account": "Konto entsperren", "delete_account": "Konto löschen", - "delete_account_confirm": "Are you sure you want to delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your password to confirm that you wish to destroy this account.", + "delete_account_confirm": "Bist du sicher, dass du deinen Account löschen willst?
Dies kann nicht rückgängig gemacht werden und du wirst deine Daten nicht wiederherstellen können.

Gib dein Passwort ein um zu bestätigen, dass du diesen Account wirklich löschen willst.", "delete_this_account_confirm": "Bist du sicher, dass du dieses Konto löschen möchtest?
Diese Aktion kann nicht rückgangig gemacht werden und du kannst die Daten nicht wiederherstellen

", "account-deleted": "Account gelöscht", "fullname": "Kompletter Name", @@ -29,6 +29,8 @@ "ignored": "Ignoriert", "followers": "Follower", "following": "Folge ich", + "blocks": "Blockiert", + "block_toggle": "Ent-/Blocken", "aboutme": "Über mich", "signature": "Signatur", "birthday": "Geburtstag", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Dieser Benutzer hat bisher keine Beiträge positiv bewertet.", "has_no_downvoted_posts": "Dieser Benutzer hat bisher keine Beiträge negativ bewertet.", "has_no_voted_posts": "Dieser Benutzer hat keine bewerteten Beiträge.", + "has_no_blocks": "Du hast keine Benutzer geblockt", "email_hidden": "E-Mail Adresse versteckt", "hidden": "versteckt", "paginate_description": "Themen und Beiträge in Seiten aufteilen, anstatt unendlich zu scrollen", @@ -142,5 +145,25 @@ "info.email-history": "E-Mail Verlauf", "info.moderation-note": "Moderationsnotiz", "info.moderation-note.success": "Moderationsnotiz gespeichert", - "info.moderation-note.add": "Notitz hinzufügen" + "info.moderation-note.add": "Notitz hinzufügen", + "consent.title": "Deine Rechte & Zustimmungen", + "consent.lead": "Dieses Community-Forum sammelt und verarbeitet deine persönlichen Daten.", + "consent.intro": "Wir nutzen diese Daten ausschließlich um dein Erlebnis in dieser Community persönlicher zu gestalten, sowie um deine Beiträge mit deinem Account zu verknüpfen. Während der Registration wurdes du nach einem Benutzernamen und einer EMail-Adresse gefragt. Optional kannst du weitere Informationen bereitstellen um dein Profil auf dieser Website zu vervollständigen.

Wir behalten diese Informationen für die Lebensdauer deines Accounts, womit du jederzeit in der Lage bist deine Zustimmung durch löschen deines Accounts zu widerrufen. Du kannst jederzeit eine Kopie deiner Daten über deine Rechte & Zustimmungen-Seite anfordern.

Solltest du Fragen oder Bedenken haben, melde dich gerne bei den Administratoren dieses Forums.", + "consent.email_intro": "Gelegentlich werden wir EMails zu deiner registrierten EMail Adresse senden um dich über generelles oder dich direkt betreffendes auf dem Laufenden zu halten. Auf deiner Benutzer-Einstellungen-Seite kannst du die häufigkeit dieser Benachrichtigungen Einstellen (sogar komplett deaktivieren), sowie auswählen, welche Art von Benachrichtigungen du erhalten möchtest.", + "consent.digest_frequency": "Standardmäßig werden Emails alle %1 versandt.", + "consent.digest_off": "Momentan werden keine Emails versandt.", + "consent.received": "Du hast zugestimmt, dass diese Website deine Persönlichen Daten sammeln und verarbeiten darf. Es ist keine weitere Aktion erforderlich.", + "consent.not_received": "Du hast der Sammlung und Verarbeitung von Daten nicht zugestimmt. Diese Website-Administration behält sich vor deinen Account jederzeit zu löschen um die GDPR einzuhalten.", + "consent.give": "Zustimmen", + "consent.right_of_access": "Du hast das Recht auf Zugriff", + "consent.right_of_access_description": "Du hast das Recht deine Daten die von dieser Website gesammelt wurden auf anfrage einsehen zu können. Du kannst eine kopie bekommen, indem du unten auf den entsprechenden Knopf drückst.", + "consent.right_to_rectification": "Du hast das Recht auf Korrektur", + "consent.right_to_rectification_description": "Du hast das Recht ungenaue Daten die an uns übermittelt wurden zu ändern oder zu aktualisieren. Dein Profil kann aktualisiert werden, in dem du dein Profil bearbeitest, Beiträge können immer bearbeitet werden. Sollte dies nicht der Fall sein, melde dich bitte bei den Administratoren dieser Website.", + "consent.right_to_erasure": "Du hast das Recht auf Löschung", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "Du hast das Recht auf Datenportabilität", + "consent.right_to_data_portability_description": "Du kannst von uns eine Maschinen-Lesbare Datei von jeglichen gesammelten Daten von dir und deinem Account anfordern, indem du untern auf den entsprechenden Knopf drückst. ", + "consent.export_profile": "Profil exportieren (.csv)", + "consent.export_uploads": "Hochgeladene Dateien exportieren (.zip)", + "consent.export_posts": "Beiträge exportieren (.csv)" } \ No newline at end of file diff --git a/public/language/el/admin/extend/plugins.json b/public/language/el/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/el/admin/extend/plugins.json +++ b/public/language/el/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/el/admin/general/dashboard.json b/public/language/el/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/el/admin/general/dashboard.json +++ b/public/language/el/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/el/admin/settings/group.json b/public/language/el/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/el/admin/settings/group.json +++ b/public/language/el/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/el/admin/settings/notifications.json b/public/language/el/admin/settings/notifications.json index e2d596723962..ec2cf3d8b26a 100644 --- a/public/language/el/admin/settings/notifications.json +++ b/public/language/el/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Ειδοποιήσεις", "welcome-notification": "Ειδοποίηση καλωσορίσματος", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/el/error.json b/public/language/el/error.json index 4f7a7d4ee53f..fbcf2bf82714 100644 --- a/public/language/el/error.json +++ b/public/language/el/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Παρακαλώ γράψε το όνομα χρήστη και τον κωδικό", "invalid-search-term": "Άκυρος όρος αναζήτησης", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Το όνομα χρήστη είναι πιασμένο", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/el/flags.json b/public/language/el/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/el/flags.json +++ b/public/language/el/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/el/global.json b/public/language/el/global.json index 60a0747ec677..ca95be03345f 100644 --- a/public/language/el/global.json +++ b/public/language/el/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Ανέβασμα αρχείου", "upload": "Ανέβασμα", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/el/modules.json b/public/language/el/modules.json index a3000924be49..0823efd4a4f5 100644 --- a/public/language/el/modules.json +++ b/public/language/el/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Days", "chat.three_months": "3 Months", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/el/pages.json b/public/language/el/pages.json index ba3375416d82..cedd9a064a8c 100644 --- a/public/language/el/pages.json +++ b/public/language/el/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "Το %1 αυτή την στιγμή συντηρείται. Παρακαλώ έλα αργότερα.", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/public/language/el/register.json b/public/language/el/register.json index 9de3dacaaadc..e855390b71a6 100644 --- a/public/language/el/register.json +++ b/public/language/el/register.json @@ -19,5 +19,8 @@ "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:" + "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 diff --git a/public/language/el/topic.json b/public/language/el/topic.json index 8e85ee79cdad..8664f2eb0bb1 100644 --- a/public/language/el/topic.json +++ b/public/language/el/topic.json @@ -118,8 +118,8 @@ "sort_by": "Ταξινόμηση κατά", "oldest_to_newest": "Παλαιότερο προς Νεότερο", "newest_to_oldest": "Νεότερο προς Παλαιότερο", - "most_votes": "Περισσότερες ψήφοι", - "most_posts": "Most posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/el/uploads.json b/public/language/el/uploads.json index 08a9da99dd65..b814a0626889 100644 --- a/public/language/el/uploads.json +++ b/public/language/el/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Το αρχείο ανεβαίνει...", "select-file-to-upload": "Επίλεξε αρχείο για ανέβασμα!", "upload-success": "Το αρχείο ανέβηκε επιτυχώς!", - "maximum-file-size": "Μέγιστο %1 kb" + "maximum-file-size": "Μέγιστο %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/el/user.json b/public/language/el/user.json index 05560c18bd86..f387e25f1274 100644 --- a/public/language/el/user.json +++ b/public/language/el/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Ακόλουθοι", "following": "Ακολουθά", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Υπογραφή", "birthday": "Γενέθλια", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Κρυμμένο Emai", "hidden": "κρυμμένο", "paginate_description": "Paginate topics and posts instead of using infinite scroll", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/en-GB/admin/extend/plugins.json b/public/language/en-GB/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/en-GB/admin/extend/plugins.json +++ b/public/language/en-GB/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/en-GB/admin/general/dashboard.json b/public/language/en-GB/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/en-GB/admin/general/dashboard.json +++ b/public/language/en-GB/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/en-GB/admin/manage/uploads.json b/public/language/en-GB/admin/manage/uploads.json index 13e69cafa72b..21bc8201fc5c 100644 --- a/public/language/en-GB/admin/manage/uploads.json +++ b/public/language/en-GB/admin/manage/uploads.json @@ -1,6 +1,8 @@ { "upload-file": "Upload File", "filename": "Filename", + "usage": "Post Usage", + "orphaned": "Orphaned", "size/filecount": "Size / Filecount", "confirm-delete": "Do you really want to delete this file?", "filecount": "%1 files" diff --git a/public/language/en-GB/admin/settings/group.json b/public/language/en-GB/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/en-GB/admin/settings/group.json +++ b/public/language/en-GB/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/en-GB/admin/settings/notifications.json b/public/language/en-GB/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/en-GB/admin/settings/notifications.json +++ b/public/language/en-GB/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/en-GB/error.json b/public/language/en-GB/error.json index 260c397de693..cb4ed098ac21 100644 --- a/public/language/en-GB/error.json +++ b/public/language/en-GB/error.json @@ -21,6 +21,7 @@ "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", @@ -176,5 +177,8 @@ "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } diff --git a/public/language/en-GB/flags.json b/public/language/en-GB/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/en-GB/flags.json +++ b/public/language/en-GB/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/en-GB/global.json b/public/language/en-GB/global.json index 1195d792a097..14d9b13421fd 100644 --- a/public/language/en-GB/global.json +++ b/public/language/en-GB/global.json @@ -122,6 +122,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", diff --git a/public/language/en-GB/modules.json b/public/language/en-GB/modules.json index 51045494573f..b88bf9e865c4 100644 --- a/public/language/en-GB/modules.json +++ b/public/language/en-GB/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Days", "chat.three_months": "3 Months", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", diff --git a/public/language/en-GB/pages.json b/public/language/en-GB/pages.json index 70f6cc24a3b5..6780f5cf5dc4 100644 --- a/public/language/en-GB/pages.json +++ b/public/language/en-GB/pages.json @@ -55,6 +55,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", diff --git a/public/language/en-GB/register.json b/public/language/en-GB/register.json index 81b20421d407..461295ef5f20 100644 --- a/public/language/en-GB/register.json +++ b/public/language/en-GB/register.json @@ -19,5 +19,9 @@ "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:" + "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 diff --git a/public/language/en-GB/topic.json b/public/language/en-GB/topic.json index 6e5fec66c6db..7ba1291135cb 100644 --- a/public/language/en-GB/topic.json +++ b/public/language/en-GB/topic.json @@ -150,5 +150,7 @@ "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } diff --git a/public/language/en-GB/uploads.json b/public/language/en-GB/uploads.json index 8cf9487901a2..4aca2bce1e6a 100644 --- a/public/language/en-GB/uploads.json +++ b/public/language/en-GB/uploads.json @@ -2,5 +2,8 @@ "uploading-file" : "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/en-GB/user.json b/public/language/en-GB/user.json index 3dcf2521b493..0fea2bba488a 100644 --- a/public/language/en-GB/user.json +++ b/public/language/en-GB/user.json @@ -31,6 +31,8 @@ "ignored": "Ignored", "followers": "Followers", "following": "Following", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Signature", "birthday": "Birthday", @@ -95,6 +97,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Hidden", "hidden": "hidden", @@ -160,5 +163,28 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } diff --git a/public/language/en-US/admin/extend/plugins.json b/public/language/en-US/admin/extend/plugins.json index 4e5d0176af22..87ace5d922d4 100644 --- a/public/language/en-US/admin/extend/plugins.json +++ b/public/language/en-US/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/en-US/admin/general/dashboard.json b/public/language/en-US/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/en-US/admin/general/dashboard.json +++ b/public/language/en-US/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/en-US/admin/settings/group.json b/public/language/en-US/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/en-US/admin/settings/group.json +++ b/public/language/en-US/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/en-US/admin/settings/notifications.json b/public/language/en-US/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/en-US/admin/settings/notifications.json +++ b/public/language/en-US/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/en-US/error.json b/public/language/en-US/error.json index c2c5f521b6e2..be08aa503300 100644 --- a/public/language/en-US/error.json +++ b/public/language/en-US/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username taken", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/en-US/flags.json b/public/language/en-US/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/en-US/flags.json +++ b/public/language/en-US/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/en-US/global.json b/public/language/en-US/global.json index 3b74c68343b8..77e78eac4523 100644 --- a/public/language/en-US/global.json +++ b/public/language/en-US/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/en-US/modules.json b/public/language/en-US/modules.json index a3000924be49..0823efd4a4f5 100644 --- a/public/language/en-US/modules.json +++ b/public/language/en-US/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Days", "chat.three_months": "3 Months", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/en-US/pages.json b/public/language/en-US/pages.json index c41cb6afbb74..c05cc250aaa1 100644 --- a/public/language/en-US/pages.json +++ b/public/language/en-US/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/public/language/en-US/register.json b/public/language/en-US/register.json index e58d572e5cd2..3919985750d6 100644 --- a/public/language/en-US/register.json +++ b/public/language/en-US/register.json @@ -19,5 +19,8 @@ "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:" + "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 diff --git a/public/language/en-US/topic.json b/public/language/en-US/topic.json index 6f363becd16b..f6271d41bf7b 100644 --- a/public/language/en-US/topic.json +++ b/public/language/en-US/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sort by", "oldest_to_newest": "Oldest to Newest", "newest_to_oldest": "Newest to Oldest", - "most_votes": "Most votes", - "most_posts": "Most posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/en-US/uploads.json b/public/language/en-US/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/en-US/uploads.json +++ b/public/language/en-US/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/en-US/user.json b/public/language/en-US/user.json index 6aa600efc7ce..bb70c26dbfa1 100644 --- a/public/language/en-US/user.json +++ b/public/language/en-US/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Followers", "following": "Following", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Signature", "birthday": "Birthday", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Hidden", "hidden": "hidden", "paginate_description": "Paginate topics and posts instead of using infinite scroll", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/extend/plugins.json b/public/language/en-x-pirate/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/en-x-pirate/admin/extend/plugins.json +++ b/public/language/en-x-pirate/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/en-x-pirate/admin/general/dashboard.json b/public/language/en-x-pirate/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/en-x-pirate/admin/general/dashboard.json +++ b/public/language/en-x-pirate/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/en-x-pirate/admin/settings/group.json b/public/language/en-x-pirate/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/en-x-pirate/admin/settings/group.json +++ b/public/language/en-x-pirate/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/en-x-pirate/admin/settings/notifications.json b/public/language/en-x-pirate/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/en-x-pirate/admin/settings/notifications.json +++ b/public/language/en-x-pirate/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/en-x-pirate/error.json b/public/language/en-x-pirate/error.json index c2c5f521b6e2..be08aa503300 100644 --- a/public/language/en-x-pirate/error.json +++ b/public/language/en-x-pirate/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username taken", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/en-x-pirate/flags.json b/public/language/en-x-pirate/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/en-x-pirate/flags.json +++ b/public/language/en-x-pirate/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/en-x-pirate/global.json b/public/language/en-x-pirate/global.json index 38a3b90d52c8..8bcba80e2e5c 100644 --- a/public/language/en-x-pirate/global.json +++ b/public/language/en-x-pirate/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/en-x-pirate/modules.json b/public/language/en-x-pirate/modules.json index bad536226adc..bdae97ffd37e 100644 --- a/public/language/en-x-pirate/modules.json +++ b/public/language/en-x-pirate/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Days", "chat.three_months": "3 Months", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/en-x-pirate/pages.json b/public/language/en-x-pirate/pages.json index c41cb6afbb74..c05cc250aaa1 100644 --- a/public/language/en-x-pirate/pages.json +++ b/public/language/en-x-pirate/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/public/language/en-x-pirate/register.json b/public/language/en-x-pirate/register.json index 45217b265cdd..474b308078cc 100644 --- a/public/language/en-x-pirate/register.json +++ b/public/language/en-x-pirate/register.json @@ -19,5 +19,8 @@ "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:" + "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 diff --git a/public/language/en-x-pirate/topic.json b/public/language/en-x-pirate/topic.json index 6f363becd16b..f6271d41bf7b 100644 --- a/public/language/en-x-pirate/topic.json +++ b/public/language/en-x-pirate/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sort by", "oldest_to_newest": "Oldest to Newest", "newest_to_oldest": "Newest to Oldest", - "most_votes": "Most votes", - "most_posts": "Most posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/en-x-pirate/uploads.json b/public/language/en-x-pirate/uploads.json index f124670d4ed3..3638aeb2d5ea 100644 --- a/public/language/en-x-pirate/uploads.json +++ b/public/language/en-x-pirate/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "Ye file be uploaded!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/en-x-pirate/user.json b/public/language/en-x-pirate/user.json index c852835eb619..7b755e10dee1 100644 --- a/public/language/en-x-pirate/user.json +++ b/public/language/en-x-pirate/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Followers", "following": "Following", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Signature", "birthday": "Birthday", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Hidden", "hidden": "hidden", "paginate_description": "Paginate topics and posts instead of using infinite scroll", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/es/admin/admin.json b/public/language/es/admin/admin.json index 91f326ad4041..9d70b10d06cb 100644 --- a/public/language/es/admin/admin.json +++ b/public/language/es/admin/admin.json @@ -1,5 +1,5 @@ { - "alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?", + "alert.confirm-rebuild-and-restart": "¿Está seguro que desea reconstruir y reiniciar NodeBB?", "alert.confirm-restart": "¿Está seguro que desea reiniciar NodeBB?", "acp-title": "%1 | Panel de control de administrador NodeBB", diff --git a/public/language/es/admin/appearance/customise.json b/public/language/es/admin/appearance/customise.json index b928b915237e..c0b9f0cf49db 100644 --- a/public/language/es/admin/appearance/customise.json +++ b/public/language/es/admin/appearance/customise.json @@ -1,14 +1,14 @@ { - "custom-css": "Custom CSS/LESS", + "custom-css": "CSS/LESS personalizado", "custom-css.description": "Ingrese sus propias declaraciones de CSS/LESS aquí, las cuales serán aplicadas después de todos los demás estilos.", - "custom-css.enable": "Enable Custom CSS/LESS", + "custom-css.enable": "Activar CSS/LESS personalizado", - "custom-js": "Custom Javascript", - "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", + "custom-js": "Javascript personalizado", + "custom-js.description": "Introduzca su propio javascript aquí. Este será ejecutado cuando la página haya cargado por completo.", "custom-js.enable": "Activar Javascript personalizado", "custom-header": "Cabezera personalizada", - "custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <head> section of your forum's markup. Script tags are allowed, but are discouraged, as the Custom Javascript tab is available.", + "custom-header.description": "Introduzca su HTML personalizado aquí (ej. Meta Etiquetas, etc.), el cual se adjuntará a la sección <head> del código de su foro.", "custom-header.enable": "Activar cabecera personalizada", "custom-css.livereload": "Activar Recargar en Vivo", diff --git a/public/language/es/admin/extend/plugins.json b/public/language/es/admin/extend/plugins.json index 2d63d1fdbaa0..460f14ebcf25 100644 --- a/public/language/es/admin/extend/plugins.json +++ b/public/language/es/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/es/admin/extend/rewards.json b/public/language/es/admin/extend/rewards.json index 27560eee285c..3147e54b9325 100644 --- a/public/language/es/admin/extend/rewards.json +++ b/public/language/es/admin/extend/rewards.json @@ -1,8 +1,8 @@ { "rewards": "Recompensas", "condition-if-users": "If User's", - "condition-is": "Is:", - "condition-then": "Then:", + "condition-is": "Es:", + "condition-then": "Entonces:", "max-claims": "Amount of times reward is claimable", "zero-infinite": "Enter 0 for infinite", "delete": "Delete", diff --git a/public/language/es/admin/general/dashboard.json b/public/language/es/admin/general/dashboard.json index 4dae4d93166f..134f606e179a 100644 --- a/public/language/es/admin/general/dashboard.json +++ b/public/language/es/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Vista de la Pagina", "graphs.unique-visitors": "Visitantes Unicos", "graphs.registered-users": "Usuarios Registrados", - "graphs.anonymous-users": "Usuarios Anónimos" + "graphs.anonymous-users": "Usuarios Anónimos", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/es/admin/manage/post-queue.json b/public/language/es/admin/manage/post-queue.json index 4de24c991b9c..7503ce5906ce 100644 --- a/public/language/es/admin/manage/post-queue.json +++ b/public/language/es/admin/manage/post-queue.json @@ -2,10 +2,10 @@ "post-queue": "Post Queue", "description": "There are no posts in the post queue.
To enable this feature, go to Settings → Post → Posting Restrictions and enable Post Queue.", "user": "User", - "category": "Category", - "title": "Title", - "content": "Content", - "posted": "Posted", - "reply-to": "Reply to \"%1\"", + "category": "Categoría", + "title": "Título", + "content": "Contenido", + "posted": "Publicado", + "reply-to": "Responder a %1", "content-editable": "You can click on individual content to edit before posting." } \ No newline at end of file diff --git a/public/language/es/admin/manage/users.json b/public/language/es/admin/manage/users.json index 9b7784debc6c..e72059337539 100644 --- a/public/language/es/admin/manage/users.json +++ b/public/language/es/admin/manage/users.json @@ -1,99 +1,99 @@ { "users": "Usuarios", - "edit": "Edit", - "make-admin": "Make Admin", - "remove-admin": "Remove Admin", - "validate-email": "Validate Email", - "send-validation-email": "Send Validation Email", - "password-reset-email": "Send Password Reset Email", - "ban": "Ban User(s)", - "temp-ban": "Ban User(s) Temporarily", - "unban": "Unban User(s)", - "reset-lockout": "Reset Lockout", - "reset-flags": "Reset Flags", - "delete": "Delete User(s)", - "purge": "Delete User(s) and Content", - "download-csv": "Download CSV", - "invite": "Invite", - "new": "New User", + "edit": "Editar", + "make-admin": "Hacer Administrador", + "remove-admin": "Eliminar Administrador", + "validate-email": "Validar Email", + "send-validation-email": "Enviar Email de Validación", + "password-reset-email": "Enviar Email para Recuperar la Contraseña", + "ban": "Expulsar Usuario(s)", + "temp-ban": "Expulsar Usuario(s) Temporalmente", + "unban": "Eliminar Expulsión del Usuario(s)", + "reset-lockout": "Reiniciar Bloqueo", + "reset-flags": "Reiniciar Reportes", + "delete": "Borrar Usuario(s)", + "purge": "Borrar Usuario(s) y Contenido", + "download-csv": "Descargar CSV", + "invite": "Invitar", + "new": "Nuevo Usuario", - "pills.latest": "Latest Users", - "pills.unvalidated": "Not Validated", - "pills.no-posts": "No Posts", - "pills.top-posters": "Top Posters", - "pills.top-rep": "Most Reputation", - "pills.inactive": "Inactive", - "pills.flagged": "Most Flagged", - "pills.banned": "Banned", - "pills.search": "User Search", + "pills.latest": "Últimos Usuarios", + "pills.unvalidated": "No Validado", + "pills.no-posts": "Sin Posts", + "pills.top-posters": "Top Posteadores", + "pills.top-rep": "Mayor Reputación", + "pills.inactive": "Inactivo", + "pills.flagged": "Más Reportado", + "pills.banned": "Baneado", + "pills.search": "Buscar Usuario", - "search.uid": "By User ID", - "search.uid-placeholder": "Enter a user ID to search", - "search.username": "By User Name", - "search.username-placeholder": "Enter a username to search", - "search.email": "By Email", - "search.email-placeholder": "Enter a email to search", - "search.ip": "By IP Address", - "search.ip-placeholder": "Enter an IP Address to search", - "search.not-found": "User not found!", + "search.uid": "Por ID de Usuario", + "search.uid-placeholder": "Introduce el ID del usuario a buscar", + "search.username": "Por Nombre de Usuario", + "search.username-placeholder": "Introduzca el nombre de usuario que quiere buscar", + "search.email": "Por Email", + "search.email-placeholder": "Introduzca el email a buscar", + "search.ip": "Por Dirección IP", + "search.ip-placeholder": "Introduzca la Dirección IP a buscar", + "search.not-found": "¡Usuario no encontrado!", - "inactive.3-months": "3 months", - "inactive.6-months": "6 months", - "inactive.12-months": "12 months", + "inactive.3-months": "3 meses", + "inactive.6-months": "6 meses", + "inactive.12-months": "12 meses", "users.uid": "uid", - "users.username": "username", + "users.username": "nombre de usuario", "users.email": "email", - "users.postcount": "postcount", - "users.reputation": "reputation", - "users.flags": "flags", - "users.joined": "joined", - "users.last-online": "last online", - "users.banned": "banned", + "users.postcount": "cantidad de posts", + "users.reputation": "reputación", + "users.flags": "reportes", + "users.joined": "registrado", + "users.last-online": "última vez online", + "users.banned": "baneado", - "create.username": "User Name", + "create.username": "Nombre de Usuario", "create.email": "Email", - "create.email-placeholder": "Email of this user", - "create.password": "Password", - "create.password-confirm": "Confirm Password", + "create.email-placeholder": "Email de este usuario", + "create.password": "Contraseña", + "create.password-confirm": "Confirmar Contraseña", - "temp-ban.length": "Ban Length", - "temp-ban.reason": "Reason (Optional)", - "temp-ban.hours": "Hours", - "temp-ban.days": "Days", - "temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.", + "temp-ban.length": "Duración de la Expulsión", + "temp-ban.reason": "Razón (Opcional)", + "temp-ban.hours": "Horas", + "temp-ban.days": "Días", + "temp-ban.explanation": "Introduzca la duración de esta expulsión. Ten en cuenta que 0 se considera una expulsión permanente.", - "alerts.confirm-ban": "Do you really want to ban this user permanently?", - "alerts.confirm-ban-multi": "Do you really want to ban these users permanently?", - "alerts.ban-success": "User(s) banned!", - "alerts.button-ban-x": "Ban %1 user(s)", - "alerts.unban-success": "User(s) unbanned!", - "alerts.lockout-reset-success": "Lockout(s) reset!", - "alerts.flag-reset-success": "Flags(s) reset!", - "alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", - "alerts.make-admin-success": "User is now administrator.", - "alerts.confirm-remove-admin": "Do you really want to remove this administrator?", - "alerts.remove-admin-success": "User is no longer administrator.", - "alerts.make-global-mod-success": "User is now global moderator.", - "alerts.confirm-remove-global-mod": "Do you really want to remove this global moderator?", - "alerts.remove-global-mod-success": "User is no longer global moderator.", - "alerts.make-moderator-success": "User is now moderator.", - "alerts.confirm-remove-moderator": "Do you really want to remove this moderator?", - "alerts.remove-moderator-success": "User is no longer moderator.", - "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", - "alerts.validate-email-success": "Emails validated", - "alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?", - "alerts.confirm-delete": "Warning!
Do you really want to delete user(s)?
This action is not reversable! Only the user account will be deleted, their posts and topics will remain.", + "alerts.confirm-ban": "¿Quiere realmente expulsar a este usuario permanentemente?", + "alerts.confirm-ban-multi": "¿Quiere realmente expulsar a estos usuarios permanentemente?", + "alerts.ban-success": "¡Usuario(s) expulsado(s)!", + "alerts.button-ban-x": "Expulsar %1 usuario(s)", + "alerts.unban-success": "¡Usuario(s) desbaneados!", + "alerts.lockout-reset-success": "¡Bloqueo(s) reseteado(s)!", + "alerts.flag-reset-success": "¡Reporte(s) reseteado(s)!", + "alerts.no-remove-yourself-admin": "¡No puedes eliminarte a ti mismo como Administrador!", + "alerts.make-admin-success": "El usuario es ahora administrador.", + "alerts.confirm-remove-admin": "¿Quiere realmente eliminar este administrador?", + "alerts.remove-admin-success": "El usuario ya no es administrador.", + "alerts.make-global-mod-success": "El usuario es ahora moderador global.", + "alerts.confirm-remove-global-mod": "¿Quiere realmente eliminar este moderador global?", + "alerts.remove-global-mod-success": "El usuario ya no es moderador global.", + "alerts.make-moderator-success": "El usuario es ahora moderador.", + "alerts.confirm-remove-moderator": "¿Quiere realmente eliminar este moderador?", + "alerts.remove-moderator-success": "El usuario ya no es moderador.", + "alerts.confirm-validate-email": "¿Quiere validar el/los email(s) de este/estos usuario(s)?", + "alerts.validate-email-success": "Emails validados", + "alerts.password-reset-confirm": "¿Quiere restablecer la contraseña del/los email(s) de este/estos usuario(s)?", + "alerts.confirm-delete": "¡Atención!
¿Quiere realmente eliminar este/estos usuario(s)?
¡Esta acción es irreversible! Solo se eliminará la cuenta del usuario, sus posts y comentarios permanecerán.", "alerts.delete-success": "¡Usuario(s) Borrado(s)!", - "alerts.confirm-purge": "Warning!
Do you really want to delete user(s) and their content?
This action is not reversable! All user data and content will be erased!", + "alerts.confirm-purge": "¡Atención!
¿Quieres realmente eliminar este/estos usuario(s) y su contenido?
¡Esta acción es irreversible! ¡Toda la información del usuario será borrada!", "alerts.create": "Crear Usuario", "alerts.button-create": "Crear", "alerts.button-cancel": "Cancelar", - "alerts.error-passwords-different": "Passwords must match!", + "alerts.error-passwords-different": "¡Las contraseñas deben coincidir!", "alerts.error-x": "Error

%1

", "alerts.create-success": "¡Usuario creado!", - "alerts.prompt-email": "Email: ", - "alerts.email-sent-to": "An invitation email has been sent to %1", - "alerts.x-users-found": "%1 user(s) found! Search took %2 ms." + "alerts.prompt-email": "Email:", + "alerts.email-sent-to": "Un email de invitación ha sido enviado a %1", + "alerts.x-users-found": "¡%1 usuario(s) encontrado(s)! La búsqueda tardó %2 ms." } \ No newline at end of file diff --git a/public/language/es/admin/settings/group.json b/public/language/es/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/es/admin/settings/group.json +++ b/public/language/es/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/es/admin/settings/notifications.json b/public/language/es/admin/settings/notifications.json index ab07a6971708..c4a6067545ea 100644 --- a/public/language/es/admin/settings/notifications.json +++ b/public/language/es/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notificaciones", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/es/error.json b/public/language/es/error.json index 78eac03dcba3..108ff10c7583 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Por favor especifica tanto un usuario como contraseña", "invalid-search-term": "Término de búsqueda inválido", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "El acceso ha fallado porque tu sesión ha expirado. Por favor prueba otra vez.", "invalid-pagination-value": "Número de página inválido, debe estar entre %1 y %2", "username-taken": "Nombre de usuario ocupado", @@ -145,5 +146,7 @@ "invalid-session": "No concuerdan los datos de sesión", "invalid-session-text": "Parece que su sesión ha expirado o no concuerda con el servidor. Por favor vuelva a cargar la página.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/es/flags.json b/public/language/es/flags.json index 9a6e3e97b211..d4e5fe81425b 100644 --- a/public/language/es/flags.json +++ b/public/language/es/flags.json @@ -18,6 +18,7 @@ "filter-type": "Tipo de indicador", "filter-type-all": "Todo el contenido", "filter-type-post": "Mensaje", + "filter-type-user": "User", "filter-state": "estado", "filter-assignee": "UID asignado", "filter-cid": "Categoria", diff --git a/public/language/es/global.json b/public/language/es/global.json index 718734ce6c32..f8da86390187 100644 --- a/public/language/es/global.json +++ b/public/language/es/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Escribe el número de página", "upload_file": "Subir archivo", "upload": "Subir", + "uploads": "Uploads", "allowed-file-types": "Los tipos de archivos permitidos son: %1", "unsaved-changes": "Tienes cambios sin guardar. Seguro que quieres salir?", "reconnecting-message": "Has perdido la conexión. Reconectando a %1.", diff --git a/public/language/es/modules.json b/public/language/es/modules.json index 41bfd133de82..0df0a03a7638 100644 --- a/public/language/es/modules.json +++ b/public/language/es/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 días", "chat.three_months": "3 meses", "chat.delete_message_confirm": "¿Estás seguro de que deseas eliminar este mensaje?", - "chat.add-users-to-room": "Añadir usuarios a la sala", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "Este usuario está en modo No molestar. ¿ Estás seguro de que quieres chatear con él ?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Crear", "composer.show_preview": "Ver Previsualización", "composer.hide_preview": "Ocultar Previsualización", diff --git a/public/language/es/pages.json b/public/language/es/pages.json index 05d414a6d77a..b5deac346832 100644 --- a/public/language/es/pages.json +++ b/public/language/es/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Publicaciones votadas positivamente %1", "account/downvoted": "Publicaciones votadas negativamente %1", "account/best": "Mejores publicaciones hechas por %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Correo electrónico confirmado", "maintenance.text": "%1 está en mantenimiento actualmente. Por favor vuelva en otro momento.", "maintenance.messageIntro": "Además, la administración ha dejado este mensaje:", diff --git a/public/language/es/register.json b/public/language/es/register.json index a6e2d4bc76d1..422481ff45b0 100644 --- a/public/language/es/register.json +++ b/public/language/es/register.json @@ -19,5 +19,8 @@ "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. ", "interstitial.intro": "Se requiere de información adicional antes de crear tu cuenta.", - "interstitial.errors-found": "No pudimos completar tu registro:" + "interstitial.errors-found": "No pudimos completar tu registro:", + "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 diff --git a/public/language/es/success.json b/public/language/es/success.json index 9219799e7d64..aad794e5a238 100644 --- a/public/language/es/success.json +++ b/public/language/es/success.json @@ -1,7 +1,7 @@ { "success": "¡Éxito!", "topic-post": "Mensaje publicado satisfactoriamente.", - "post-queued": "Your post is queued for approval.", + "post-queued": "Tu post está en cola para su aprobación.", "authentication-successful": "Identificado satisfactoriamente", "settings-saved": "¡Ajustes guardados satisfactoriamente!" } \ No newline at end of file diff --git a/public/language/es/topic.json b/public/language/es/topic.json index c1a44600add0..43487df3d21d 100644 --- a/public/language/es/topic.json +++ b/public/language/es/topic.json @@ -62,7 +62,7 @@ "thread_tools.lock": "Cerrar tema", "thread_tools.unlock": "Reabrir tema", "thread_tools.move": "Mover tema", - "thread_tools.move-posts": "Move Posts", + "thread_tools.move-posts": "Mover Posts", "thread_tools.move_all": "Mover todo", "thread_tools.select_category": "Seleccionar categoría", "thread_tools.fork": "Dividir tema", @@ -97,7 +97,7 @@ "fork_success": "¡Se ha creado un nuevo tema a partir del original! Haz click aquí para ir al nuevo tema.", "delete_posts_instruction": "Haz click en los mensajes que quieres eliminar/limpiar", "merge_topics_instruction": "Selecciona los temas que quieres fusionar", - "move_posts_instruction": "Click the posts you want to move", + "move_posts_instruction": "Pulsa en los posts que quieras mover", "composer.title_placeholder": "Ingresa el título de tu tema...", "composer.handle_placeholder": "Nombre", "composer.discard": "Descartar", @@ -118,14 +118,16 @@ "sort_by": "Ordenar", "oldest_to_newest": "Más antiguo a más nuevo", "newest_to_oldest": "Más nuevo a más antiguo", - "most_votes": "Mayor número de votos", - "most_posts": "Mayor número de mensajes", + "most_votes": "Mayor número de Votos", + "most_posts": "Mayor número de Posts", "stale.title": "¿Crear un nuevo hilo en su lugar?", "stale.warning": "El hilo al que estás respondiendo es muy antiguo. ¿Quieres crear un nuevo hilo en su lugar y añadir una referencia a este en tu mensaje?", "stale.create": "Crear un nuevo hilo", "stale.reply_anyway": "Publicar este hilo de todos modos.", "link_back": "Re: [%1](%2)", - "diffs.title": "Post Edit History", - "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.title": "Historial de Edición del Post", + "diffs.description": "Este post ha tenido %1 revisión(es). Pulsa una de ellas para ver el contenido del post en ese momento.", + "diffs.no-revisions-description": "Este post ha tenido %1 revisión(es).", + "diffs.current-revision": "revisión actual", + "diffs.original-revision": "revisión original" } \ No newline at end of file diff --git a/public/language/es/uploads.json b/public/language/es/uploads.json index 9dac95419427..49ec25b8ce74 100644 --- a/public/language/es/uploads.json +++ b/public/language/es/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Subiendo el archivo...", "select-file-to-upload": "¡Selecciona un archivo para subir!", "upload-success": "¡Archivo subido correctamente!", - "maximum-file-size": "Máximo %1 kb" + "maximum-file-size": "Máximo %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/es/user.json b/public/language/es/user.json index 5d0c474b1f4b..cb05174e03e3 100644 --- a/public/language/es/user.json +++ b/public/language/es/user.json @@ -29,6 +29,8 @@ "ignored": "Ignorado", "followers": "Seguidores", "following": "Siguiendo", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Sobre mí", "signature": "Firma", "birthday": "Cumpleaños", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Este usuario todavía no ha votado ninguna publicación positivamente.", "has_no_downvoted_posts": "Este usuario todavía no ha votado ninguna publicación negativamente.", "has_no_voted_posts": "Este usuario no ha votado ninguna publicación", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Correo electrónico oculto", "hidden": "oculto", "paginate_description": "Paginar hilos y mensajes en lugar de usar desplazamiento infinito", @@ -142,5 +145,25 @@ "info.email-history": "HIstórico de Email", "info.moderation-note": "Nota de Moderación", "info.moderation-note.success": "Nota de moderación guardada", - "info.moderation-note.add": "Añadir nota" + "info.moderation-note.add": "Añadir nota", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/et/admin/extend/plugins.json b/public/language/et/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/et/admin/extend/plugins.json +++ b/public/language/et/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/et/admin/general/dashboard.json b/public/language/et/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/et/admin/general/dashboard.json +++ b/public/language/et/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/et/admin/settings/group.json b/public/language/et/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/et/admin/settings/group.json +++ b/public/language/et/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/et/admin/settings/notifications.json b/public/language/et/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/et/admin/settings/notifications.json +++ b/public/language/et/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/et/error.json b/public/language/et/error.json index bd336244e10e..989097557b65 100644 --- a/public/language/et/error.json +++ b/public/language/et/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Palun täpsusta kasutajanime ja parooli", "invalid-search-term": "Vigane otsingusõna", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Me ei saanud Sind sisse logida, võimalik, et tänu aegunud sessioonile, palun proovi uuesti", "invalid-pagination-value": "Väär lehekülje numeratsioon, peab olema vähemalt %1 ja kõige rohkem %2", "username-taken": "Kasutajanimi on juba võetud", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/et/flags.json b/public/language/et/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/et/flags.json +++ b/public/language/et/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/et/global.json b/public/language/et/global.json index 1542708bcd64..76668a3d6204 100644 --- a/public/language/et/global.json +++ b/public/language/et/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Sisesta lehekülje number", "upload_file": "Lae fail üles", "upload": "Lae üles", + "uploads": "Uploads", "allowed-file-types": "Lubatud faili formaadid on %1", "unsaved-changes": "Sul on salvestamata muudatusi. Oled kindel, et soovid lahkuda?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/et/modules.json b/public/language/et/modules.json index 60adcac045c0..86de1f98459c 100644 --- a/public/language/et/modules.json +++ b/public/language/et/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Päeva", "chat.three_months": "3 Kuud", "chat.delete_message_confirm": "Oled kindel, et soovid selle sõnumi kustutada?", - "chat.add-users-to-room": "Lisa kasutajaid ruumi", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Koosta", "composer.show_preview": "Kuva eelvaadet", "composer.hide_preview": "Peida eelvaade", diff --git a/public/language/et/pages.json b/public/language/et/pages.json index 4fa659639873..da6beadad8c0 100644 --- a/public/language/et/pages.json +++ b/public/language/et/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Postitused %1 poolt heaks kiidetud", "account/downvoted": "Postitused %1 poolt vastu hääletatud", "account/best": "Parimad postitused %1 poolt", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Emaili aadress kinnitatud", "maintenance.text": "%1 foorumil on käimas hooldustööd. Palun külastage meid mõne aja pärast uuesti.", "maintenance.messageIntro": "Administraator on jätnud ka omaltpoolt sõnumi:", diff --git a/public/language/et/register.json b/public/language/et/register.json index 11c8c1e2d02c..0b7f075e3d51 100644 --- a/public/language/et/register.json +++ b/public/language/et/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Enne kasutaja loomist on meil vaja lisainfot.", - "interstitial.errors-found": "Meil ei õnnestunud registreerimist lõpule viia:" + "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.", + "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 diff --git a/public/language/et/topic.json b/public/language/et/topic.json index 6b0e8ec0aa5b..c0e97a9156ee 100644 --- a/public/language/et/topic.json +++ b/public/language/et/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sorteeri", "oldest_to_newest": "Vanematest uuemateni", "newest_to_oldest": "Uuematest vanemateni", - "most_votes": "Kõige rohkem hääli", - "most_posts": "Kõige rohkem postitusi", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Loo uus teema selle asemel?", "stale.warning": "Teema, millele vastad on küllaltki vana. Kas sooviksid hoopiski uue teema luua ning viidata sellele sinu vastuses?", "stale.create": "Loo uus teema/alapealkiri", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/et/uploads.json b/public/language/et/uploads.json index feee146ab843..d4f7bbcca430 100644 --- a/public/language/et/uploads.json +++ b/public/language/et/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Laen faili üles...", "select-file-to-upload": "Vali fail mida üles laadida!", "upload-success": "Fail üles laetud edukalt!", - "maximum-file-size": "Maksimaalselt %1 kb" + "maximum-file-size": "Maksimaalselt %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/et/user.json b/public/language/et/user.json index 1fbb0a537c43..e2910b869de9 100644 --- a/public/language/et/user.json +++ b/public/language/et/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Jälgijad", "following": "Jälgimised", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Minust", "signature": "Allkiri", "birthday": "Sünnipäev", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Antud kasutaja pole veel ühtegi postitust kiitnud.", "has_no_downvoted_posts": "Antud kasutaja pole veel ühtegi postitust laitnud.", "has_no_voted_posts": "Antud kasutaja pole veel ühtegi postitust hinnanud.", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Peidetud email", "hidden": "peidetud", "paginate_description": "Nummerda leheküljed ja postitused ning ära kasuta lõputut kerimist", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/fa-IR/admin/extend/plugins.json b/public/language/fa-IR/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/fa-IR/admin/extend/plugins.json +++ b/public/language/fa-IR/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/fa-IR/admin/general/dashboard.json b/public/language/fa-IR/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/fa-IR/admin/general/dashboard.json +++ b/public/language/fa-IR/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/fa-IR/admin/settings/group.json b/public/language/fa-IR/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/fa-IR/admin/settings/group.json +++ b/public/language/fa-IR/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/fa-IR/admin/settings/notifications.json b/public/language/fa-IR/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/fa-IR/admin/settings/notifications.json +++ b/public/language/fa-IR/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/fa-IR/error.json b/public/language/fa-IR/error.json index 7bc49bbf50f8..aa1cb1e1b9f6 100644 --- a/public/language/fa-IR/error.json +++ b/public/language/fa-IR/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "لطفا هم نام کاربری و هم کلمه عبور را مشخص کنید", "invalid-search-term": "کلمه جستجو نامعتبر است", "invalid-url": "URL نامعتبر", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "اجازه ورود شما تمام شده است، لطفا دوباره وارد شوید.", "invalid-pagination-value": "ارزش گذاری صفحه نامعتبر است، کمترین مقدار %1 و بیشترین مقدار %2 باید باشد", "username-taken": "این نام کاربری گرفته شده است.", @@ -145,5 +146,7 @@ "invalid-session": "عدم تطابق جلسه", "invalid-session-text": "به نظر می‌رسد این جلسه برای ورود دیگر فعال نیست و یا با سرور هماهنگ نیست. لطفا این صفحه را رفرش کنید.", "no-topics-selected": "هیچ موضوعی انتخاب نشده است !", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/fa-IR/flags.json b/public/language/fa-IR/flags.json index 2a25fd56c8b6..96dcba03579f 100644 --- a/public/language/fa-IR/flags.json +++ b/public/language/fa-IR/flags.json @@ -18,6 +18,7 @@ "filter-type": "نوع گزارش", "filter-type-all": "تمام محتوا", "filter-type-post": "پست", + "filter-type-user": "User", "filter-state": "وضعیت", "filter-assignee": "UID رسیدگی کننده", "filter-cid": "دسته بندی", diff --git a/public/language/fa-IR/global.json b/public/language/fa-IR/global.json index 8e3107ebd6d3..52454658a678 100644 --- a/public/language/fa-IR/global.json +++ b/public/language/fa-IR/global.json @@ -97,6 +97,7 @@ "enter_page_number": "شماره صفحه را وارد کنید", "upload_file": "بارگذاری فایل", "upload": "بارگذاری", + "uploads": "Uploads", "allowed-file-types": "فایل قابل قبول اینها هستند %1", "unsaved-changes": "تغییرات شما ذخیره نشده. شما مطمئن هستید که میخواهید از اینجا دور شوید؟", "reconnecting-message": "اتصال شما به %1 به نظر می‌رسد از دست رفته. لطفا صبر کنید ما سعی می‌کنیم که دوباره شما را متصل کنیم.", diff --git a/public/language/fa-IR/modules.json b/public/language/fa-IR/modules.json index d18bc2dc126e..e57935a3a0a3 100644 --- a/public/language/fa-IR/modules.json +++ b/public/language/fa-IR/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 روز", "chat.three_months": "3 ماه", "chat.delete_message_confirm": "آیا مطمئن هستید که می خواهید این پیام را حذف کنید؟", - "chat.add-users-to-room": "اضافه کردن کاربر به این گفتگو", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "این کاربر وضعیت خود را روی حالت مزاحم نشوید قرار داده است. آیا همچنان می خواهید با او چت کنید؟", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "ارسال", "composer.show_preview": "نمایش پیش‌نمایش", "composer.hide_preview": "مخفی کردن پیش‌نمایش", diff --git a/public/language/fa-IR/pages.json b/public/language/fa-IR/pages.json index d674e78a07d8..2465faa7baab 100644 --- a/public/language/fa-IR/pages.json +++ b/public/language/fa-IR/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "رای مثبت داده شده به پست ها توسط %1", "account/downvoted": "رای منفی داده شده به پست ها توسط %1", "account/best": "بهترین پست های ارسال شده توسط %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "ایمیل تایید شد", "maintenance.text": "%1 در حال حاضر تحت تعمیر و نگهدارییست. لطفا زمان دیگری مراجعه کنید.", "maintenance.messageIntro": "علاوه بر این، مدیر این پیام را گذاشته است:", diff --git a/public/language/fa-IR/register.json b/public/language/fa-IR/register.json index 15af9f66cb2e..92b570e017b5 100644 --- a/public/language/fa-IR/register.json +++ b/public/language/fa-IR/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "شما باید با شرایط انجمن موافقت کنید", "registration-added-to-queue": "ثبت نام شما به صف تایید اضافه شد. وقتی توسط یک مدیر تایید شد شما ایمیلی دریافت خواهید کرد.", "interstitial.intro": "ما نیاز به برخی اطلاعات اضافی شما قبل از ایجاد شناسه کاربری داریم.", - "interstitial.errors-found": "شما نمی‌توانید ثبت نام خود را تکمیل کنید:" + "interstitial.errors-found": "شما نمی‌توانید ثبت نام خود را تکمیل کنید:", + "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 diff --git a/public/language/fa-IR/topic.json b/public/language/fa-IR/topic.json index 78aa14ed7f5a..2c344cf1a831 100644 --- a/public/language/fa-IR/topic.json +++ b/public/language/fa-IR/topic.json @@ -118,8 +118,8 @@ "sort_by": "مرتب‌سازی بر اساس", "oldest_to_newest": "قدیمی‌ترین به جدید‌ترین", "newest_to_oldest": "جدید‌ترین به قدیمی‌ترین", - "most_votes": "بیشترین رأی‌ها", - "most_posts": "بیشتر پست ها", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "آیا مایلید به جای آن یک موضوع جدید ایجاد کنید؟", "stale.warning": "موضوعی که شما در حال پاسخگویی به آن هستید قدیمی می باشد. آیا میلید به جای آن یک موضوع جدید ایجاد کنید و در آن به این موضوع ارجاع دهید؟", "stale.create": "ایجاد یک موضوع جدید", @@ -127,5 +127,7 @@ "link_back": "پاسخ: [%1](%2)", "diffs.title": "تاریخچه ویرایش پست", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/fa-IR/uploads.json b/public/language/fa-IR/uploads.json index 8cf6622f5b3a..e1740137b2ea 100644 --- a/public/language/fa-IR/uploads.json +++ b/public/language/fa-IR/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "در حال بارگذاری فایل...", "select-file-to-upload": "فایل مورد نظر را برای بارگذاری انتخاب کنید!", "upload-success": "فایل با موفقیت بارگذاری شد!", - "maximum-file-size": "حداکثر %1 کیلوبایت" + "maximum-file-size": "حداکثر %1 کیلوبایت", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/fa-IR/user.json b/public/language/fa-IR/user.json index f885bd9eee3f..a778cf532cd0 100644 --- a/public/language/fa-IR/user.json +++ b/public/language/fa-IR/user.json @@ -29,6 +29,8 @@ "ignored": "نادیده گرفته شده", "followers": "دنبال‌کننده‌ها", "following": "دنبال‌شونده‌ها", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "درباره ی من", "signature": "امضا", "birthday": "روز تولد", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "این کاربر به هیچ پستی امتیاز نداده است.", "has_no_downvoted_posts": "این کاربر به هیچ پستی رای منفی نداده است.", "has_no_voted_posts": "این کاربر به پست رای نداده است", + "has_no_blocks": "You have blocked no users.", "email_hidden": "ایمیل پنهان شده", "hidden": "پنهان", "paginate_description": "صفحه بندی و نمایش موضوع ها و پست‌ها به جای نمایش بر اساس اسکرول موس", @@ -142,5 +145,25 @@ "info.email-history": "تاریخچه رایانامه", "info.moderation-note": "یادداشت مدیر", "info.moderation-note.success": "یادداشت مدیر ذخیره شد", - "info.moderation-note.add": "افزودن یادداشت" + "info.moderation-note.add": "افزودن یادداشت", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/fi/admin/extend/plugins.json b/public/language/fi/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/fi/admin/extend/plugins.json +++ b/public/language/fi/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/fi/admin/general/dashboard.json b/public/language/fi/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/fi/admin/general/dashboard.json +++ b/public/language/fi/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/fi/admin/settings/group.json b/public/language/fi/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/fi/admin/settings/group.json +++ b/public/language/fi/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/fi/admin/settings/notifications.json b/public/language/fi/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/fi/admin/settings/notifications.json +++ b/public/language/fi/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/fi/error.json b/public/language/fi/error.json index fe27f305ae74..9742e03bd767 100644 --- a/public/language/fi/error.json +++ b/public/language/fi/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Ole hyvä ja anna sekä käyttäjänimi että salasana", "invalid-search-term": "Virheellinen hakutermi", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Käyttäjänimi varattu", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/fi/flags.json b/public/language/fi/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/fi/flags.json +++ b/public/language/fi/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/fi/global.json b/public/language/fi/global.json index cca31761d1b3..8e4371de7652 100644 --- a/public/language/fi/global.json +++ b/public/language/fi/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/fi/modules.json b/public/language/fi/modules.json index 1b1dd00cee2f..23080a09b7bf 100644 --- a/public/language/fi/modules.json +++ b/public/language/fi/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 päivää", "chat.three_months": "3 kuukautta", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/fi/pages.json b/public/language/fi/pages.json index 5344d3cbaba9..d68b4aa497a2 100644 --- a/public/language/fi/pages.json +++ b/public/language/fi/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/public/language/fi/register.json b/public/language/fi/register.json index f0b78c94a1de..60019c0c9886 100644 --- a/public/language/fi/register.json +++ b/public/language/fi/register.json @@ -19,5 +19,8 @@ "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:" + "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 diff --git a/public/language/fi/topic.json b/public/language/fi/topic.json index a40250e1429a..5de4ffca4f1d 100644 --- a/public/language/fi/topic.json +++ b/public/language/fi/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sort by", "oldest_to_newest": "Oldest to Newest", "newest_to_oldest": "Newest to Oldest", - "most_votes": "Most votes", - "most_posts": "Most posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/fi/uploads.json b/public/language/fi/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/fi/uploads.json +++ b/public/language/fi/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/fi/user.json b/public/language/fi/user.json index be0676fa8d3a..eab021ba69ff 100644 --- a/public/language/fi/user.json +++ b/public/language/fi/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Seuraajat", "following": "Seuratut", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Allekirjoitus", "birthday": "Syntymäpäivä", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Sähköposti piilotettu", "hidden": "piilotettu", "paginate_description": "Paginate topics and posts instead of using infinite scroll", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/fr/admin/extend/plugins.json b/public/language/fr/admin/extend/plugins.json index 96c77dabba3b..56eef46293f6 100644 --- a/public/language/fr/admin/extend/plugins.json +++ b/public/language/fr/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB n'a pas pu joindre le gestionnaire de paquets, une mise à jour n'est pas suggérée pour le moment.

", "alert.incompatible": "

Votre version de NodeBB (v%1) ne peut mettre à jour que vers la version v%2 de ce plugin. Veuillez mettre à jour NodeBB si vous souhaitez installer une version plus récente de ce plugin.

", "alert.possibly-incompatible": "

Aucune information de compatibilité trouvée

Ce plugin n'a pas spécifié de version pour une installation sur votre version de NodeBB. Aucune compatibilité ne peut être garantie et ce plugin pourrait empêcher NodeBB de démarrer correctement.

Dans l'éventualité où NodeBB ne pourrait pas démarrer proprement :

$ ./nodebb reset plugin=\"%1\"

Voulez-vous continuer l'installation de ce plugin ?

", + "alert.reorder": "Réorganiser les plugins", + "alert.reorder-success": "Veuillez régénérer et redémarrer votre NodeBB pour finaliser le processus.", "license.title": "Information sur la licence du plugin", "license.intro": "Le plugin %1 est sous licence %2. Veuillez lire et comprendre les termes de la licence avant d’activer ce plugin.", diff --git a/public/language/fr/admin/general/dashboard.json b/public/language/fr/admin/general/dashboard.json index bd435b2f7125..c22326d2b831 100644 --- a/public/language/fr/admin/general/dashboard.json +++ b/public/language/fr/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Pages vues", "graphs.unique-visitors": "Visiteurs uniques", "graphs.registered-users": "Utilisateurs enregistrés", - "graphs.anonymous-users": "Utilisateurs anonymes" + "graphs.anonymous-users": "Utilisateurs anonymes", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/fr/admin/menu.json b/public/language/fr/admin/menu.json index c4e9b8aa9a01..006f03eb91f0 100644 --- a/public/language/fr/admin/menu.json +++ b/public/language/fr/admin/menu.json @@ -77,5 +77,5 @@ "connection-lost": "La connexion à %1 a été perdue, tentative de reconnexion…", "alerts.version": "Version actuelle NodeBB v%1", - "alerts.upgrade": "Mettre à jour en v% 1" + "alerts.upgrade": "Mettre à jour en v%1" } \ No newline at end of file diff --git a/public/language/fr/admin/settings/group.json b/public/language/fr/admin/settings/group.json index 03a7f86952bb..147eb40a2f22 100644 --- a/public/language/fr/admin/settings/group.json +++ b/public/language/fr/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Attention ! Si cette option est désactivée et que vous avez des groupes privés, ils deviendront automatiquement publics.", "allow-creation": "Autoriser la création de groupes", "allow-creation-help": "Si activé, les utilisateurs peuvent créer des groupes (Par défaut : Désactivé)", + "allow-multiple-badges-help": "Cet affichage peut être utilisé pour permettre aux utilisateurs de sélectionner plusieurs badges de groupe, nécessite que votre thème le supporte.", "max-name-length": "Longueur maximum des noms de groupes", "cover-image": "Image de couverture du groupe", "default-cover": "Images de couverture par défaut", diff --git a/public/language/fr/admin/settings/notifications.json b/public/language/fr/admin/settings/notifications.json index 87ee6b31e079..0c4e9bfe0fd5 100644 --- a/public/language/fr/admin/settings/notifications.json +++ b/public/language/fr/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Notification de bienvenue", "welcome-notification-link": "Lien de notification de bienvenue", - "welcome-notification-uid": "Notification de bienvenue de l'utilisateur (UID)" + "welcome-notification-uid": "Notification de bienvenue de l'utilisateur (UID)", + "notification-alert-timeout": "Délai d'alerte de notification" } \ No newline at end of file diff --git a/public/language/fr/error.json b/public/language/fr/error.json index ff73d4f7e34a..1d1aa0794d99 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Veuillez entrer un nom d'utilisateur et un mot de passe", "invalid-search-term": "Données de recherche invalides", "invalid-url": "URL invalide", + "local-login-disabled": "Le système de connexion local a été désactivé pour les comptes sans privilèges.", "csrf-invalid": "Nous ne pouvons pas vous connectez, probablement car votre session a expiré. Merci de réessayer.", "invalid-pagination-value": "Valeur de pagination invalide. Celle-ci doit être comprise entre %1 et %2.", "username-taken": "Nom d’utilisateur déjà utilisé", @@ -145,5 +146,7 @@ "invalid-session": "Session interrompue", "invalid-session-text": "Il semble que votre session ne soit plus active, ou que le serveur ne la reconnaisse plus. Merci de rafraichir cette page.", "no-topics-selected": "Aucun sujet sélectionné !", - "cant-move-to-same-topic": "Impossible de déplacer le message dans le même sujet !" + "cant-move-to-same-topic": "Impossible de déplacer le message dans le même sujet !", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/fr/flags.json b/public/language/fr/flags.json index 92f11b8fd9ac..ef8740f72efe 100644 --- a/public/language/fr/flags.json +++ b/public/language/fr/flags.json @@ -18,6 +18,7 @@ "filter-type": "Type de signalement", "filter-type-all": "Tout le contenu", "filter-type-post": "Message", + "filter-type-user": "Utilisateur", "filter-state": "Etat", "filter-assignee": "UID assigné", "filter-cid": "Catégorie", diff --git a/public/language/fr/global.json b/public/language/fr/global.json index a10dac68b08d..dd584772b65b 100644 --- a/public/language/fr/global.json +++ b/public/language/fr/global.json @@ -52,12 +52,12 @@ "users": "Utilisateurs", "topics": "Sujets", "posts": "Messages", - "best": "Meilleurs", + "best": "Meilleur sujets", "votes": "Votes", "upvoters": "Votes positifs", - "upvoted": "Votes positifs", + "upvoted": "Vote(s) positif(s)", "downvoters": "Votes contre", - "downvoted": "Vote négatif", + "downvoted": "Vote(s) négatif(s)", "views": "Vues", "reputation": "Réputation", "read_more": "En lire plus", @@ -97,6 +97,7 @@ "enter_page_number": "Entrer un numéro de page", "upload_file": "Envoyer un fichier", "upload": "Envoyer", + "uploads": "Téléversements", "allowed-file-types": "Les types de fichiers autorisés sont : %1", "unsaved-changes": "Vous avez des modifications non sauvegardées. Êtes-vous sûr de vouloir naviguer tout de même ?", "reconnecting-message": "Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.", diff --git a/public/language/fr/modules.json b/public/language/fr/modules.json index cde5f5bc8286..cd3f0decffa7 100644 --- a/public/language/fr/modules.json +++ b/public/language/fr/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Jours", "chat.three_months": "3 Mois", "chat.delete_message_confirm": "Êtes-vous sûr de vouloir supprimer ce message ?", - "chat.add-users-to-room": "Ajouter des participants", "chat.retrieving-users": "Ajouter des utilisateurs ...", "chat.manage-room": "Gérer l'espace de discussion", - "chat.add-user-help": "Rechercher des utilisateurs ici. Lorsque cette option est sélectionnée, l'utilisateur sera ajouté au chat. Le nouvel utilisateur ne pourra pas voir les messages de écrits avant d'avoir été ajouté à la dicussion.", + "chat.add-user-help": "Rechercher des utilisateurs ici. Lorsque cette option est sélectionnée, l'utilisateur sera ajouté au chat. Le nouvel utilisateur ne pourra pas voir les messages de chat écrits avant d'être ajoutés à la conversation. Seuls les propriétaires de salle peuvent supprimer des utilisateurs des salles de conversation.", "chat.confirm-chat-with-dnd-user": "Cet utilisateur a son statut en mode \"Ne pas déranger\". Voulez-vous quand même discuter avec lui ?", - "chat.rename-room": "Renommer l'espace de discussion", + "chat.rename-room": "Renommer l'espace de discussion ", "chat.rename-placeholder": "Entrer le nom ici ", "chat.rename-help": "Le nom de l'espace de discussion défini ici sera visible par tous les participants à la discussion.", "chat.leave": "Quitter la discussion", "chat.leave-prompt": "Êtes-vous sûr de vouloir quitter la discussion ?", "chat.leave-help": "Si vous quittez vous ne pourrez plus suivre la discussion. Si vous êtes de nouveau ajouté, vous ne verrez aucun historique de la discussion avant votre réintégration.", "chat.in-room": "Dans cet espace de discussion", + "chat.kick": "Exclure", "composer.compose": "Écrire", "composer.show_preview": "Afficher l'aperçu", "composer.hide_preview": "Masquer l'aperçu", diff --git a/public/language/fr/pages.json b/public/language/fr/pages.json index a0558fed993b..70af1102aefc 100644 --- a/public/language/fr/pages.json +++ b/public/language/fr/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Avis positifs de %1", "account/downvoted": "Avis négatifs de %1", "account/best": "Meilleurs messages postés par %1", + "account/blocks": "Utilisateurs bloqués pour %1", + "account/uploads": "Envoyé par %1", "confirm": "Email vérifié", "maintenance.text": "%1 est en maintenance. Veuillez revenir un peu plus tard.", "maintenance.messageIntro": "De plus, l'administrateur a laissé ce message :", diff --git a/public/language/fr/register.json b/public/language/fr/register.json index c0fe685e98e6..50e783735a75 100644 --- a/public/language/fr/register.json +++ b/public/language/fr/register.json @@ -19,5 +19,8 @@ "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.", "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 :" + "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.", + "gdpr_agree_email": "J'accepte de recevoir des courriels et des notifications de ce site Web.", + "gdpr_consent_denied": "Vous devez accepter que ce site puisse collecter et traiter vos données, et pour vous envoyer des courriels." } \ No newline at end of file diff --git a/public/language/fr/topic.json b/public/language/fr/topic.json index 632405660c52..633f1617f755 100644 --- a/public/language/fr/topic.json +++ b/public/language/fr/topic.json @@ -118,8 +118,8 @@ "sort_by": "Trier", "oldest_to_newest": "Du plus ancien au plus récent", "newest_to_oldest": "Du plus récent au plus ancien", - "most_votes": "Les mieux notés", - "most_posts": "Nombre de messages", + "most_votes": "Les plus votés", + "most_posts": "Meilleurs messages", "stale.title": "Créer un nouveau sujet à la place ?", "stale.warning": "Le sujet auquel vous répondez est assez ancien. Ne voudriez-vous pas créer un nouveau sujet à la place et placer une référence vers celui-ci dans votre réponse ?", "stale.create": "Créer un nouveau sujet", @@ -127,5 +127,7 @@ "link_back": "Re : [%1](%2)", "diffs.title": "Historique", "diffs.description": "Cet article a % 1 révisions. Cliquez sur l'une des révisions ci-dessous pour voir le contenu du message.", - "diffs.no-revisions-description": "Cet article a % 1 révisions." + "diffs.no-revisions-description": "Cet article a % 1 révisions.", + "diffs.current-revision": "Révision en cours", + "diffs.original-revision": "Révision originale" } \ No newline at end of file diff --git a/public/language/fr/uploads.json b/public/language/fr/uploads.json index 7cc22992daa5..3b7ca024b36b 100644 --- a/public/language/fr/uploads.json +++ b/public/language/fr/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Envoi du fichier…", "select-file-to-upload": "Sélectionnez un ficher à envoyer", "upload-success": "Fichier envoyé", - "maximum-file-size": "%1 Ko maximum" + "maximum-file-size": "%1 Ko maximum", + "no-uploads-found": "Aucun fichiers envoyés", + "public-uploads-info": "Les téléchargements sont publics, tous les visiteurs peuvent les voir.", + "private-uploads-info": "Les téléchargements sont privés, seuls les utilisateurs connectés peuvent les voir." } \ No newline at end of file diff --git a/public/language/fr/user.json b/public/language/fr/user.json index b7ba14f45032..440d072eeb0b 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -29,6 +29,8 @@ "ignored": "Ignorés", "followers": "Abonnés", "following": "Abonnements", + "blocks": "Bloqués", + "block_toggle": "Débloquer", "aboutme": "À propos de moi", "signature": "Signature", "birthday": "Anniversaire", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Cet utilisateur n'a donné d'avis positifs", "has_no_downvoted_posts": "Cet utilisateur n'a pas donné d'avis négatifs", "has_no_voted_posts": "Personne n'a voté pour des messages de cet utilisateur", + "has_no_blocks": "Vous n'avez bloqué aucun utilisateur.", "email_hidden": "Email masqué", "hidden": "masqué", "paginate_description": "Utiliser la pagination des sujets et des messages à la place du défilement infini", @@ -142,5 +145,25 @@ "info.email-history": "Historique des adresses email", "info.moderation-note": "Note de modération", "info.moderation-note.success": "Note de modération enregistrée", - "info.moderation-note.add": "Ajouter une note" + "info.moderation-note.add": "Ajouter une note", + "consent.title": "Vos données personnelles", + "consent.lead": "Ce forum collecte et traite vos informations personnelles.", + "consent.intro": "Nous utilisons ces informations strictement pour personnaliser votre expérience dans cette communauté, ainsi que pour associer les messages que vous publiez à votre compte utilisateur. Lors de l'étape d'enregistrement, vous avez été invité à fournir un nom d'utilisateur et une adresse e-mail. Vous pouvez également fournir des informations supplémentaires pour compléter votre profil.

Nous conservons ces informations durant la durée de vie de votre compte utilisateur. À tout moment vous pouvez supprimer votre compte. À tout moment, vous pouvez demander une copie de vos contribution, via la page de vos données personnelles.

Si vous avez des questions ou préoccupations, nous vous encourageons à contacter l'équipe d'administration de ce forum.", + "consent.email_intro": "Occasionnellement, nous pouvons envoyer des courriels afin de fournir des mises à jour et / ou de vous informer de toute nouvelle activité qui vous concerne. Vous pouvez personnaliser la fréquence d'envoi (y compris la désactiver), ainsi que sélectionner les types de notifications à recevoir, via vos paramètres utilisateur.", + "consent.digest_frequency": "Par défaut, ce forum délivre des résumés par courriels tous les %1.", + "consent.digest_off": "Actuellement, ce forum n'envoie pas de résumés par courriel", + "consent.received": "Vous avez donné votre accord pour que ce site collecte et traite vos informations. Aucune action supplémentaire n'est requise.", + "consent.not_received": "Vous n'avez pas donné votre accord pour la collecte et le traitement des données. A tout moment, l'équipe d'administration de ce site peut choisir de supprimer votre compte afin de se conformer au règlement général sur la protection des données.", + "consent.give": "Donner son accord", + "consent.right_of_access": "Vous avez le droit d'accès", + "consent.right_of_access_description": "Vous avez la possibilité d'accéder à toutes les données collectées par ce site sur demande. Vous pouvez récupérer une copie de ces données en cliquant sur le bouton ci-dessous.", + "consent.right_to_rectification": "Vous avez le droit de rectification", + "consent.right_to_rectification_description": "Vous avez la possibilité de modifier ou de mettre à jour les données inexactes qui nous sont fournies. Votre profil peut être mis à jour en modifiant votre profil, et le contenu de l'article peut toujours être modifié. Si ce n'est pas le cas, veuillez contacter l'équipe d'administration.", + "consent.right_to_erasure": "Vous avez le droit d'effacer", + "consent.right_to_erasure_description": "Vous pouvez à tout moment révoquer votre accord à la collecte et/ou aux traitements de données en supprimant votre compte. Votre profil individuel peut être supprimé, bien que le contenu que vous avez publié restera affiché. Si vous souhaitez supprimer à la fois votre compte et votre contenu, veuillez contacter l'équipe administrative pour ce site.", + "consent.right_to_data_portability": "Vous avez la possibilité de portabilité des données.", + "consent.right_to_data_portability_description": "Vous pouvez exporter de toutes vos données collectées. Vous pouvez le faire en cliquant sur le bouton ci-dessous.", + "consent.export_profile": "Exporter votre profile (.csv)", + "consent.export_uploads": "Exporter le contenu de vos fichiers envoyés (.zip)", + "consent.export_posts": "Exporter vos messages (.csv)" } \ No newline at end of file diff --git a/public/language/gl/admin/extend/plugins.json b/public/language/gl/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/gl/admin/extend/plugins.json +++ b/public/language/gl/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/gl/admin/general/dashboard.json b/public/language/gl/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/gl/admin/general/dashboard.json +++ b/public/language/gl/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/gl/admin/settings/group.json b/public/language/gl/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/gl/admin/settings/group.json +++ b/public/language/gl/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/gl/admin/settings/notifications.json b/public/language/gl/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/gl/admin/settings/notifications.json +++ b/public/language/gl/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/gl/error.json b/public/language/gl/error.json index b94be634e676..82f2b1667074 100644 --- a/public/language/gl/error.json +++ b/public/language/gl/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Especifica ámbolos dous por favor, nome de usuario e contrasinal", "invalid-search-term": "Termo de búsqueda inválido", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Non fomos capaces de entrar, probablemente porque a que a sesión expirou. Por favor, téntao de novo", "invalid-pagination-value": "Valor de paxinación incorreto, ten que estar entre %1 e %2", "username-taken": "Nome de usuario en uso", @@ -145,5 +146,7 @@ "invalid-session": "Non concordan os datos da sesión", "invalid-session-text": "Parece que a súa sesión expirou ou non concorda co servidor. Por favor, recarge a páxina.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/gl/flags.json b/public/language/gl/flags.json index fb3bb17a3907..0fe7f027ea14 100644 --- a/public/language/gl/flags.json +++ b/public/language/gl/flags.json @@ -18,6 +18,7 @@ "filter-type": "Tipo de aviso", "filter-type-all": "Todo o contido", "filter-type-post": "Publicar", + "filter-type-user": "User", "filter-state": "Estado", "filter-assignee": "UID do encargado", "filter-cid": "Categoría", diff --git a/public/language/gl/global.json b/public/language/gl/global.json index d3df0ab550bd..344475d12b19 100644 --- a/public/language/gl/global.json +++ b/public/language/gl/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Escribe o número da páxina", "upload_file": "Subir arquivo ", "upload": "Subir", + "uploads": "Uploads", "allowed-file-types": "Os tipos de arquivos permitidos son: %1", "unsaved-changes": "Non gardaches tódolos cambios. Queres continuar e saír da páxina?", "reconnecting-message": "Conexión perdida. Reconectando a %1.", diff --git a/public/language/gl/modules.json b/public/language/gl/modules.json index 067342bb0028..22d26fb7b6c5 100644 --- a/public/language/gl/modules.json +++ b/public/language/gl/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Días", "chat.three_months": "3 Meses", "chat.delete_message_confirm": "Estás seguro de que desexas eliminar esta mensaxe?", - "chat.add-users-to-room": "Engadir usuarios á sala", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Elaborar", "composer.show_preview": "Amosar vista previa", "composer.hide_preview": "Agochar vista previa", diff --git a/public/language/gl/pages.json b/public/language/gl/pages.json index 492d5f9a68aa..d960a950aeb2 100644 --- a/public/language/gl/pages.json +++ b/public/language/gl/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Mensaxes votadas positivamente por %1", "account/downvoted": "Mensaxes votadas negativamente por %1", "account/best": "Mellores mensaxes escritas por %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Enderezo electrónico confirmado", "maintenance.text": "%1 está baixo mantemento. Por favor, volve máis tarde.", "maintenance.messageIntro": "A máis, o administrador deixou esta mensaxe: ", diff --git a/public/language/gl/register.json b/public/language/gl/register.json index 62129c9cee6c..058dceced1b3 100644 --- a/public/language/gl/register.json +++ b/public/language/gl/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Requírese información adicional antes de crea-la túa conta", - "interstitial.errors-found": "Non puidemos completa-lo teu rexistro:" + "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.", + "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 diff --git a/public/language/gl/topic.json b/public/language/gl/topic.json index 4610db760fd0..30897c215059 100644 --- a/public/language/gl/topic.json +++ b/public/language/gl/topic.json @@ -118,8 +118,8 @@ "sort_by": "Ordenar por", "oldest_to_newest": "Máis antigo a máis novo", "newest_to_oldest": "Máis novo a máis antigo", - "most_votes": "Maior número de votos", - "most_posts": "Maior número de respostas", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Crear un novo tema no seu lugar?", "stale.warning": "O tema no que queres publicar é bastante vello. Queres crear un novo tema no seu lugar e incluir unha referencia a este na túa mensaxe?", "stale.create": "Crear un novo tema", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/gl/uploads.json b/public/language/gl/uploads.json index 223d022e87d6..50f44d04bdaa 100644 --- a/public/language/gl/uploads.json +++ b/public/language/gl/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Subindo o arquivo...", "select-file-to-upload": "Selecciona un arquivo para subir!", "upload-success": "Arquivo subido correctamente!", - "maximum-file-size": "Máximo %1 kb" + "maximum-file-size": "Máximo %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/gl/user.json b/public/language/gl/user.json index f04929712f9c..7e236e3bfde5 100644 --- a/public/language/gl/user.json +++ b/public/language/gl/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Seguidores", "following": "Seguindo", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Sobre min", "signature": "Firma", "birthday": "Aniversario", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Este usuario aínda non votou positivamente ningunha mensaxe.", "has_no_downvoted_posts": "Este usuario aínda non votou negativamente ninguna mensaxe.", "has_no_voted_posts": "Este usuario non votou ninguna mensaxe", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Correo Agochado", "hidden": "Agochado", "paginate_description": "Paxinar temas e publicacións no canto de usar scroll infinito", @@ -142,5 +145,25 @@ "info.email-history": "Histórico de Correo Electrónico", "info.moderation-note": "Nota do Moderador", "info.moderation-note.success": "Nota do moderador gardada", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/he/admin/extend/plugins.json b/public/language/he/admin/extend/plugins.json index 4200e66c10d2..9b4819db2f36 100644 --- a/public/language/he/admin/extend/plugins.json +++ b/public/language/he/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "מידע רישיון התוסף", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/he/admin/general/dashboard.json b/public/language/he/admin/general/dashboard.json index 220e21b2753a..1f69619b3085 100644 --- a/public/language/he/admin/general/dashboard.json +++ b/public/language/he/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/he/admin/manage/tags.json b/public/language/he/admin/manage/tags.json index df597a616675..3898490cc5ab 100644 --- a/public/language/he/admin/manage/tags.json +++ b/public/language/he/admin/manage/tags.json @@ -1,14 +1,14 @@ { - "none": "Your forum does not have any topics with tags yet.", - "bg-color": "Background Colour", - "text-color": "Text Colour", - "create-modify": "Create & Modify Tags", - "description": "Select tags via clicking and/or dragging, use shift to select multiple.", - "create": "Create Tag", - "modify": "Modify Tags", - "rename": "Rename Tags", - "delete": "Delete Selected Tags", - "search": "Search for tags...", + "none": "בפורום שלך אין עדיין נושאים עם תגים.\n", + "bg-color": "צבע רקע\n", + "text-color": "צבע טקסט\n", + "create-modify": "צור ושנה תגים", + "description": "בחר תגים באמצעות לחיצה ו/או גרירה, השתמש ב shift על מנת לבחור במספר תגים", + "create": "צור תג", + "modify": "שנה תג", + "rename": "שנה שם של תג", + "delete": "מחק תגים שנבחרו", + "search": "חפש תג...", "settings": "Click here to visit the tag settings page.", "name": "Tag Name", diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index 2e4cfa2a5c34..fce8006eda33 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -1,15 +1,15 @@ { - "users": "Users", - "edit": "Edit", - "make-admin": "Make Admin", - "remove-admin": "Remove Admin", - "validate-email": "Validate Email", - "send-validation-email": "Send Validation Email", - "password-reset-email": "Send Password Reset Email", - "ban": "Ban User(s)", - "temp-ban": "Ban User(s) Temporarily", - "unban": "Unban User(s)", - "reset-lockout": "Reset Lockout", + "users": "משתמשים", + "edit": "ערוך", + "make-admin": "הפוך למנהל", + "remove-admin": "הסר הרשאת מנהל", + "validate-email": "סמן את דוא\"ל המשתמש/ים כמאומת", + "send-validation-email": "שלח בקשת אימות דוא\"ל למשתמש/ים", + "password-reset-email": "שלח דוא\"ל לאיפוס סיסמה", + "ban": "הרחק משתמש(ים)", + "temp-ban": "הרחק משתמש(ים) באופן זמני", + "unban": "בטל הרחקת משתמש(ים)", + "reset-lockout": "שחרר נעילת חשבון", "reset-flags": "Reset Flags", "delete": "Delete User(s)", "purge": "Delete User(s) and Content", @@ -17,25 +17,25 @@ "invite": "Invite", "new": "New User", - "pills.latest": "Latest Users", - "pills.unvalidated": "Not Validated", - "pills.no-posts": "No Posts", - "pills.top-posters": "Top Posters", - "pills.top-rep": "Most Reputation", - "pills.inactive": "Inactive", + "pills.latest": "משתמשים אחרונים", + "pills.unvalidated": "לא מאומת", + "pills.no-posts": "אין פוסטים", + "pills.top-posters": "מפרסמים הכי הרבה", + "pills.top-rep": "מוניטין הכי גבוה", + "pills.inactive": "לא-פעיל", "pills.flagged": "Most Flagged", "pills.banned": "Banned", "pills.search": "User Search", - "search.uid": "By User ID", - "search.uid-placeholder": "Enter a user ID to search", - "search.username": "By User Name", - "search.username-placeholder": "Enter a username to search", - "search.email": "By Email", - "search.email-placeholder": "Enter a email to search", - "search.ip": "By IP Address", - "search.ip-placeholder": "Enter an IP Address to search", - "search.not-found": "User not found!", + "search.uid": "על פי זהות משתמש", + "search.uid-placeholder": "הזן מספר משתמש לחיפוש", + "search.username": "על פי שם משתמש", + "search.username-placeholder": "הזן שם משתמש לחיפוש", + "search.email": "על פי דוא\"ל", + "search.email-placeholder": "הזן דואל לחיפוש", + "search.ip": "על פי כתובת IP", + "search.ip-placeholder": "הזן כתובת IP לחיפוש", + "search.not-found": "משתמש לא נמצא!", "inactive.3-months": "3 months", "inactive.6-months": "6 months", @@ -46,10 +46,10 @@ "users.email": "email", "users.postcount": "postcount", "users.reputation": "reputation", - "users.flags": "flags", - "users.joined": "joined", - "users.last-online": "last online", - "users.banned": "banned", + "users.flags": "דגלים", + "users.joined": "הצטרף", + "users.last-online": "נראה לאחרונה", + "users.banned": "מורחק", "create.username": "User Name", "create.email": "Email", @@ -57,41 +57,41 @@ "create.password": "Password", "create.password-confirm": "Confirm Password", - "temp-ban.length": "Ban Length", - "temp-ban.reason": "Reason (Optional)", - "temp-ban.hours": "Hours", - "temp-ban.days": "Days", - "temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.", + "temp-ban.length": "זמן הרחקה", + "temp-ban.reason": "סיבה (אופציונאלי)", + "temp-ban.hours": "שעות", + "temp-ban.days": "ימים", + "temp-ban.explanation": "הזן את זמן ההרחקה. שים לב כי הזנת זמן 0 יחשב כהרחקה לצמיתות.", - "alerts.confirm-ban": "Do you really want to ban this user permanently?", - "alerts.confirm-ban-multi": "Do you really want to ban these users permanently?", - "alerts.ban-success": "User(s) banned!", - "alerts.button-ban-x": "Ban %1 user(s)", - "alerts.unban-success": "User(s) unbanned!", + "alerts.confirm-ban": "האם אתה רוצה להרחיק משתמש זה לצמיתות?", + "alerts.confirm-ban-multi": "האם אתה באמת רוצה להרחיק את המשתמשים לצמיתות?", + "alerts.ban-success": "משתמש(ים) הורחק/ו!", + "alerts.button-ban-x": "אזהרה, %1 משתמש(ים) יפגעו", + "alerts.unban-success": "משתמש(ים) הורחק/ו!", "alerts.lockout-reset-success": "Lockout(s) reset!", "alerts.flag-reset-success": "Flags(s) reset!", - "alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", - "alerts.make-admin-success": "User is now administrator.", - "alerts.confirm-remove-admin": "Do you really want to remove this administrator?", - "alerts.remove-admin-success": "User is no longer administrator.", - "alerts.make-global-mod-success": "User is now global moderator.", + "alerts.no-remove-yourself-admin": "אינך יכול להרחיק את עצמך כמנהל!", + "alerts.make-admin-success": "המשתמש הנו מנהל עכשיו", + "alerts.confirm-remove-admin": "האם אתה בטוח רוצה להסיר את המנהל הזה?", + "alerts.remove-admin-success": "בוטלה הרשאת מנהל למשתמש", + "alerts.make-global-mod-success": "מעתה המשתמש הנו מנהל קבוצות כללי", "alerts.confirm-remove-global-mod": "Do you really want to remove this global moderator?", "alerts.remove-global-mod-success": "User is no longer global moderator.", - "alerts.make-moderator-success": "User is now moderator.", + "alerts.make-moderator-success": "המשתמש מנהל קבוצה כעת.", "alerts.confirm-remove-moderator": "Do you really want to remove this moderator?", "alerts.remove-moderator-success": "User is no longer moderator.", - "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", - "alerts.validate-email-success": "Emails validated", - "alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?", - "alerts.confirm-delete": "Warning!
Do you really want to delete user(s)?
This action is not reversable! Only the user account will be deleted, their posts and topics will remain.", - "alerts.delete-success": "User(s) Deleted!", - "alerts.confirm-purge": "Warning!
Do you really want to delete user(s) and their content?
This action is not reversable! All user data and content will be erased!", - "alerts.create": "Create User", - "alerts.button-create": "Create", - "alerts.button-cancel": "Cancel", - "alerts.error-passwords-different": "Passwords must match!", - "alerts.error-x": "Error

%1

", - "alerts.create-success": "User created!", + "alerts.confirm-validate-email": "האם אתה רוצה לאמת דואל(ים) למשתמש(ים) הללו?", + "alerts.validate-email-success": "דואלים אומתו.", + "alerts.password-reset-confirm": "האם אתה רוצה לשלוח איפוס סיסמת דואל(ים) למשתמש(ים) האלה?", + "alerts.confirm-delete": "אזהרה!
האם אתה רוצה למחוק משתמש(ים)?
פעולה זו אינה הפיכה! רק חשבון המשתמש יימחק, הפוסטים והנושאים שלו ישארו.", + "alerts.delete-success": "משתמש(ים) נמחק!", + "alerts.confirm-purge": "אזהרה!
האם אתה באמת רוצה למחוק משתמש(ים) ואת התוכן שיצרו? פעולה זו בלתי הפיכה! כל המידע והתכנים של המשתמש ימחקו!", + "alerts.create": "צור משתמש", + "alerts.button-create": "צור", + "alerts.button-cancel": "בטל", + "alerts.error-passwords-different": "סיסמאות חייבות להיות שווה!", + "alerts.error-x": "טעות

%1

", + "alerts.create-success": "נוצר משתמש!", "alerts.prompt-email": "Email: ", "alerts.email-sent-to": "An invitation email has been sent to %1", diff --git a/public/language/he/admin/settings/general.json b/public/language/he/admin/settings/general.json index 4dd212aefb6a..42ea725ff365 100644 --- a/public/language/he/admin/settings/general.json +++ b/public/language/he/admin/settings/general.json @@ -1,8 +1,8 @@ { - "site-settings": "Site Settings", - "title": "Site Title", - "title.url": "URL", - "title.url-placeholder": "The URL of the site title", + "site-settings": "הגדרות האתר", + "title": "כותרת האתר", + "title.url": "כתובת האתר", + "title.url-placeholder": "כתובת אתר זה", "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", diff --git a/public/language/he/admin/settings/group.json b/public/language/he/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/he/admin/settings/group.json +++ b/public/language/he/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/he/admin/settings/notifications.json b/public/language/he/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/he/admin/settings/notifications.json +++ b/public/language/he/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/he/email.json b/public/language/he/email.json index 1e38f92855e8..bab1b0ead024 100644 --- a/public/language/he/email.json +++ b/public/language/he/email.json @@ -9,7 +9,7 @@ "welcome.text3": "מנהל אישר את ההרשמה שלך.\nאתה יכול להתחבר עם השם משתמש והסיסמא שלך מעכשיו.", "welcome.cta": "לחץ כאן על מנת לאשר את כתובת המייל שלך.", "invitation.text1": "%1 הזמין אותך להצתרף ל%2", - "invitation.text2": "Your invitation will expire in %1 days.", + "invitation.text2": "ההזמנה של תפוג ב %1 ימים", "invitation.ctr": "לחץ כאן כדי ליצור את החשבון שלך.", "reset.text1": "קיבלנו בקשה לאפס את הסיסמה לחשבון שלך, כנראה מפני ששכחת אותה. אם לא ביקשת לאפס את הסיסמה, אנא התעלם ממייל זה.", "reset.text2": "על מנת להמשיך עם תהליך איפוס הסיסמה, אנא לחץ על הלינק הבא:", diff --git a/public/language/he/error.json b/public/language/he/error.json index 2fc9f201cebb..29ebc26bd2c5 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "אנא הגדר שם משתמש וסיסמה", "invalid-search-term": "מילת חיפוש לא תקינה", "invalid-url": "שגיאה בכתובת URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "אין באפשרותנו לחבר אותך למערכת, מכיוון שעבר זמן רב מידי. אנא נסה שנית.", "invalid-pagination-value": "ערך דף לא חוקי, חייב להיות לפחות %1 ולא מעל %2", "username-taken": "שם משתמש תפוס", @@ -145,5 +146,7 @@ "invalid-session": "מושב לא תואם", "invalid-session-text": "נראה שסשן ההתחברות שלך כבר לא פעיל. אנא טען מחדש את העמוד.", "no-topics-selected": "לא נבחרו נושאים!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/he/flags.json b/public/language/he/flags.json index 35030e2a199e..74f731603491 100644 --- a/public/language/he/flags.json +++ b/public/language/he/flags.json @@ -18,6 +18,7 @@ "filter-type": "סוג סימון", "filter-type-all": "כל התוכן", "filter-type-post": "פרסום", + "filter-type-user": "User", "filter-state": "מצב", "filter-assignee": "UID של הממונה", "filter-cid": "קטגוריה", diff --git a/public/language/he/global.json b/public/language/he/global.json index 0868fee8be0a..01db853e25bd 100644 --- a/public/language/he/global.json +++ b/public/language/he/global.json @@ -53,7 +53,7 @@ "topics": "נושאים", "posts": "פוסטים", "best": "הגבוה ביותר", - "votes": "Votes", + "votes": "הצבעות", "upvoters": "מצביעי בעד", "upvoted": "הוצבע בעד", "downvoters": "מצביעי נגד", @@ -97,6 +97,7 @@ "enter_page_number": "הכנס מספר עמוד", "upload_file": "העלה קובץ", "upload": "העלה", + "uploads": "Uploads", "allowed-file-types": "פורמטי הקבצים המורשים הם %1", "unsaved-changes": "יש לך שינויים שאינם נשמרו. האם הנך בטוח שברצונך להמשיך?", "reconnecting-message": "נראה שההתחברות שלך אל %1 אבדה, אנא המתן בזמן שהמערכת מנסה לחבר אותך מחדש", @@ -107,5 +108,5 @@ "edited": "נערך", "disabled": "לא מאופשר", "select": "בחר", - "user-search-prompt": "Type something here to find users..." + "user-search-prompt": "נסה כאן למציאת משתמשים" } \ No newline at end of file diff --git a/public/language/he/modules.json b/public/language/he/modules.json index 667fdbe9dda3..e3c594996e28 100644 --- a/public/language/he/modules.json +++ b/public/language/he/modules.json @@ -1,5 +1,5 @@ { - "chat.chatting_with": "Chat with", + "chat.chatting_with": "לשוחח עם", "chat.placeholder": "הקלד את הודעת הצ'אט כאן, לחץ אנטר לשליחה", "chat.send": "שלח", "chat.no_active": "אין לך צ'אטים פעילים", @@ -12,7 +12,7 @@ "chat.recent-chats": "צ'אטים אחרונים", "chat.contacts": "אנשי קשר", "chat.message-history": "היסטוריית הודעות", - "chat.options": "Chat options", + "chat.options": "אפשרויות לשיחה", "chat.pop-out": "הוצא את חלון הצ'אט", "chat.minimize": "צמצם", "chat.maximize": "הרחב", @@ -20,18 +20,18 @@ "chat.thirty_days": "30 ימים", "chat.three_months": "3 חודשים", "chat.delete_message_confirm": "האם אתה בטוח שברצונך למחוק הודעה זו?", - "chat.add-users-to-room": "הוסף משתמשים לצ'אט", - "chat.retrieving-users": "Retrieving users...", - "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "משתמש זה שינה את הסטטוס שלו ל 'לא להפריע'. אתה עדיין מעוניין לשוחח איתו?", - "chat.rename-room": "Rename room", - "chat.rename-placeholder": "Enter your room name here", - "chat.rename-help": "The room name set here will be viewable by all participants in the room.", - "chat.leave": "Leave Chat", - "chat.leave-prompt": "Are you sure you wish to leave this chat?", - "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", - "chat.in-room": "In this room", + "chat.rename-room": "Rename Room", + "chat.rename-placeholder": "הזן את שם החדר שלך כאן", + "chat.rename-help": "שם החדר המוגדר כאן יהיה זמין לכל המשתתפים בחדר.", + "chat.leave": "עזוב שיחה", + "chat.leave-prompt": "האם אתה בטוח שאתה רוצה לעזוב את השיחה הזו?", + "chat.leave-help": "עזיבת צ'אט זה תסיר אותך מהתכתבות עתידית בצ'אט זה. אם תתווסף מחדש בעתיד, לא תראה כל היסטוריית צ'אט שלפני הצטרפותך מחדש.", + "chat.in-room": "בתוך החדר הזה", + "chat.kick": "Kick", "composer.compose": "צור", "composer.show_preview": "הצג תצוגה מקדימה", "composer.hide_preview": "הסתר תצוגה מקדימה", diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index 0634c4b13d96..0b9d8d47441b 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/notifications.json @@ -9,7 +9,7 @@ "continue_to": "המשך ל %1", "return_to": "חזור ל %1", "new_notification": "התראה חדשה", - "new_notification_from": "You have a new Notification from %1", + "new_notification_from": "יש לך התראה חדשה מ %1", "you_have_unread_notifications": "יש לך התראות שלא נקראו.", "all": "הכל", "topics": "נושאים", @@ -47,18 +47,18 @@ "email-confirmed-message": "תודה שאישרת את כתובת המייל שלך. החשבון שלך פעיל כעת.", "email-confirm-error-message": "אירעה שגיאה בעת אישור המייל שלך. ייתכן כי הקוד היה שגוי או פג תוקף.", "email-confirm-sent": "מייל אישור נשלח.", - "none": "None", - "notification_only": "Notification Only", - "email_only": "Email Only", - "notification_and_email": "Notification & Email", - "notificationType_upvote": "When someone upvotes your post", - "notificationType_new-topic": "When someone you follow posts a topic", - "notificationType_new-reply": "When a new reply is posted in a topic you are watching", - "notificationType_follow": "When someone starts following you", - "notificationType_new-chat": "When you receive a chat message", - "notificationType_group-invite": "When you receive a group invite", - "notificationType_new-register": "When someone gets added to registration queue", - "notificationType_post-queue": "When a new post is queued", - "notificationType_new-post-flag": "When a post is flagged", - "notificationType_new-user-flag": "When a user is flagged" + "none": "אף אחד", + "notification_only": "התראות בלבד", + "email_only": "דוא\"ל בלבד", + "notification_and_email": "התראות & דוא\"ל", + "notificationType_upvote": "כאשר מישהו מצביע בעד הפוסט שלך", + "notificationType_new-topic": "כשמישהו שאתה עוקב אחריו פרסם נושא", + "notificationType_new-reply": "כשתגובה חדשה מפורסמת בנושא שאתה צופה בו", + "notificationType_follow": "כשמישהו מתחיל לעקוב אחריך", + "notificationType_new-chat": "כשאתה מקבל הודעת צאט", + "notificationType_group-invite": "כשאתה מקבל הזמנה מקבוצה", + "notificationType_new-register": "כאשר מישהו מתווסף לתור הרישום", + "notificationType_post-queue": "כשהודעה חדשה נכנסת לתור", + "notificationType_new-post-flag": "כאשר פוסט מסומן", + "notificationType_new-user-flag": "כאשר משתמש מסומן" } \ No newline at end of file diff --git a/public/language/he/pages.json b/public/language/he/pages.json index 180bccd40709..ce5b25e36616 100644 --- a/public/language/he/pages.json +++ b/public/language/he/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "פוסטים שהוצבעו לטובה על ידי %1", "account/downvoted": "פוסטים שהוצבעו לרעה על ידי %1", "account/best": "הפוסטים הטובים ביותר שנוצרו על ידי %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "כתובת המייל אושרה", "maintenance.text": "%1 כרגע תחת עבודות תחזוקה. אנא חזור בזמן מאוחר יותר.", "maintenance.messageIntro": "בנוסף, המנהל השאיר את ההודעה הזו:", diff --git a/public/language/he/register.json b/public/language/he/register.json index 7ab0d02b8484..d0bb3ed8919c 100644 --- a/public/language/he/register.json +++ b/public/language/he/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "אתה מוכרח להסכים לתנאי השימוש", "registration-added-to-queue": "הבקשה שלך להרשמה נשלחה. תקבל בקרוב מייל אישור לכתובת האימייל שהכנסת כשמנהל יאשר את הבקשה.", "interstitial.intro": "אנו דורשים מידע נוסף לפני שנוכל ליצור עבורך את החשבון.", - "interstitial.errors-found": "לא הצלחנו להשלים את הרישום שלך:" + "interstitial.errors-found": "לא הצלחנו להשלים את הרישום שלך:", + "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 diff --git a/public/language/he/topic.json b/public/language/he/topic.json index f602e9b045ab..2d7aeb68f3c1 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -35,11 +35,11 @@ "view-history": "Edit History", "bookmark_instructions": "לחץ כאן לחזור לפוסט האחרון שקראת בנושא הזה.", "flag_title": "דווח על פוסט זה למנהל", - "merged_message": "This topic has been merged into %2", + "merged_message": "נושא זה מוזג עם %2", "deleted_message": "נושא זה נמחק. רק משתמשים עם ההרשאות המתאימות יכולים לצפות בו.", "following_topic.message": "מעתה, תקבל הודעות כאשר מישהו יעלה פוסט לנושא זה.", - "not_following_topic.message": "You will see this topic in the unread topics list, but you will not receive notifications when somebody posts to this topic.", - "ignoring_topic.message": "You will no longer see this topic in the unread topics list. You will be notified when you are mentioned or your post is up voted.", + "not_following_topic.message": "תוכל לראות נושא זה ברשימת הנושאים שלא נקראו, אולם לא תוכל לקבל התראות כשמישהו יעלה פוסט על נושא זה.", + "ignoring_topic.message": "לא תוכל לראות עוד נושא זה ברשימת הנושאים של נקראו. תקבל הודעה כשאתה תוזכר או כשהפוסט שלך יקבל הצבעה חיובית", "login_to_subscribe": "אנא הרשם או התחבר על-מנת לעקוב אחר נושא זה.", "markAsUnreadForAll.success": "נושא זה סומן כלא נקרא לכולם.", "mark_unread": "סמן כלא נקרא", @@ -52,8 +52,8 @@ "watching": "עוקב", "not-watching": "לא עוקב", "ignoring": "מתעלם", - "watching.description": "Notify me of new replies.
Show topic in unread.", - "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", + "watching.description": "הודע לי על תגובות חדשות.
הצג נושא חדש ברשימת הלא נקראו.", + "not-watching.description": "אל תיידע אותי על תגובות חדשות.
הצג נושא חדש ברשימת הלא נקראו במידה ובחרתי לא להתעלם מקבוצת הדיון", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "כלי נושא", "thread_tools.markAsUnreadForAll": "Mark Unread For All", @@ -118,8 +118,8 @@ "sort_by": "סדר על-פי", "oldest_to_newest": "מהישן לחדש", "newest_to_oldest": "מהחדש לישן", - "most_votes": "הכי הרבה הצבעות", - "most_posts": "הכי הרבה פוסטים", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "פתח נושא חדש במקום?", "stale.warning": "הנושא בו אתה מגיב הוא דיי ישן. האם ברצונך לפתוח נושא חדש, ולהזכיר את הנושא הזה בתגובתך?", "stale.create": "צור נושא חדש", @@ -127,5 +127,7 @@ "link_back": "תגובה: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "לפוסט זה יש %1גרסאות", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/he/uploads.json b/public/language/he/uploads.json index 887d8277625d..656acb518171 100644 --- a/public/language/he/uploads.json +++ b/public/language/he/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "מעלה את הקובץ...", "select-file-to-upload": "בחר קובץ להעלאה!", "upload-success": "הקובץ הועלה בהצלחה!", - "maximum-file-size": "מקסימום %1 קילובייט" + "maximum-file-size": "מקסימום %1 קילובייט", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/he/user.json b/public/language/he/user.json index f27098509a66..d76ac3b2a559 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -12,7 +12,7 @@ "ban_account_confirm": "אתה בטוח שברצונך להרחיק את המשתמש הזה?", "unban_account": "בטל את הרחקת החשבון", "delete_account": "מחק חשבון", - "delete_account_confirm": "Are you sure you want to delete your account?
This action is irreversible and you will not be able to recover any of your data

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

הזן את הסיסמה שלך לאשר שאתה רוצה למחוק חשבון זה.", "delete_this_account_confirm": "האם אתה בטוח שברצונך למחוק חשבון זה?
אפשרות זו לא ניתנת לביטול ולא תוכל לשחזר אף מידע

", "account-deleted": "החשבון נמחק", "fullname": "שם מלא", @@ -29,7 +29,9 @@ "ignored": "התעלם", "followers": "עוקבים", "following": "עוקב אחרי", - "aboutme": "עליי", + "blocks": "Blocks", + "block_toggle": "Toggle Block", + "aboutme": "אודותי", "signature": "חתימה", "birthday": "יום הולדת", "chat": "צ'אט", @@ -66,7 +68,7 @@ "upload_a_picture": "העלה תמונה", "remove_uploaded_picture": "מחק את התמונה שהועלתה", "upload_cover_picture": "העלה תמונת נושא", - "remove_cover_picture_confirm": "האם אתה בטוח שאתה רוצה למחוק את תמונת הקאבר?", + "remove_cover_picture_confirm": "האם אתה בטוח שאתה רוצה למחוק את תמונת הרקע?", "crop_picture": "חתוך תמונה", "upload_cropped_picture": "חתוך והעלה", "settings": "הגדרות", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "המשתמש טרם הצביע בעד פוסטים כלשהם.", "has_no_downvoted_posts": "המשתמש טרם הצביע נגד פוסטים כלשהם.", "has_no_voted_posts": "למשתמש אין פוסטים שהוצבעו", + "has_no_blocks": "You have blocked no users.", "email_hidden": "כתובת אימייל מוסתרת", "hidden": "מוסתר", "paginate_description": "הצג נושאים ופוסטים כדפים במקום כרשימת גלילה אין-סופית", @@ -142,5 +145,25 @@ "info.email-history": "היסטוריית אימייל", "info.moderation-note": "הערת מודרטור", "info.moderation-note.success": "הערת מודרטור נשמרה", - "info.moderation-note.add": "הוסף הערה" + "info.moderation-note.add": "הוסף הערה", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/hr/admin/extend/plugins.json b/public/language/hr/admin/extend/plugins.json index bdbbb3a11d5d..b7e10ef17fe9 100644 --- a/public/language/hr/admin/extend/plugins.json +++ b/public/language/hr/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB nemože uspostaviti komunikaciju sa upraviteljem paketa, nadogradnja se ne preporučuje u ovom trenutku.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/hr/admin/general/dashboard.json b/public/language/hr/admin/general/dashboard.json index 5ba33f2584b0..975eae976579 100644 --- a/public/language/hr/admin/general/dashboard.json +++ b/public/language/hr/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Pregled stranica", "graphs.unique-visitors": "Jedninstveni posjetitelji", "graphs.registered-users": "Registrirani korisnici", - "graphs.anonymous-users": "Anonimni korisnici" + "graphs.anonymous-users": "Anonimni korisnici", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/hr/admin/settings/group.json b/public/language/hr/admin/settings/group.json index c621da8cb12d..de93d6622726 100644 --- a/public/language/hr/admin/settings/group.json +++ b/public/language/hr/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Pazi! Ako je ova opcija isključena,a imate privatne grupe,automatski će postati javne.", "allow-creation": "Dozvoli kreiranje grupe", "allow-creation-help": "Ako je uključeno,korisnicima će biti omogućeno stvaranje grupa (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maksimalna dužina imena grupe", "cover-image": "Slika grupe", "default-cover": " ", diff --git a/public/language/hr/admin/settings/notifications.json b/public/language/hr/admin/settings/notifications.json index d70a8007a480..ac7de29c808f 100644 --- a/public/language/hr/admin/settings/notifications.json +++ b/public/language/hr/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Obavijesti", "welcome-notification": "Obavijest dobrodošlice", "welcome-notification-link": "Poveznica objave dobrodošlice", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/hr/error.json b/public/language/hr/error.json index ccadc9a3a68e..3df32e37f301 100644 --- a/public/language/hr/error.json +++ b/public/language/hr/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Upišite oboje, korisničko ime i lozinku", "invalid-search-term": "Netočan upit pretraživanja", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Nismo Vas uspijeli prijaviti, najvjerovatnije zbog istekle sesije. Molimo pokušajte ponovno", "invalid-pagination-value": "Netočno numeriranje stranica, mora biti %1 ili %2", "username-taken": "Korisničko ime je zauzeto", @@ -145,5 +146,7 @@ "invalid-session": "Pogreška sesije", "invalid-session-text": "Vaša sesija nije više aktivna ili se više ne poklapa sa serverom. Molimo osvježite stranicu.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/hr/flags.json b/public/language/hr/flags.json index 7087bc6d648e..34f0ef61c95c 100644 --- a/public/language/hr/flags.json +++ b/public/language/hr/flags.json @@ -18,6 +18,7 @@ "filter-type": "Vrsta zastave", "filter-type-all": "Sav sadržaj", "filter-type-post": "Objave", + "filter-type-user": "User", "filter-state": "Stanje", "filter-assignee": "Asignee UID", "filter-cid": "Kategorija", diff --git a/public/language/hr/global.json b/public/language/hr/global.json index 30ef7338a518..8e62cb8e8d9b 100644 --- a/public/language/hr/global.json +++ b/public/language/hr/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Unesi broj stranice", "upload_file": "Učitaj datoteku", "upload": "Učitavanje", + "uploads": "Uploads", "allowed-file-types": "Dozvoljeni tipovi datoteke su %1", "unsaved-changes": "Imate nespremljenih promjena. Jeste li sigurni da želite napustiti stranicu?", "reconnecting-message": "Izgleda da je veza na %1 prekinuta, molimo pričekajte dok se pokušamo ponovo spojiti.", diff --git a/public/language/hr/modules.json b/public/language/hr/modules.json index 5ddeaef2f752..329a52eb4349 100644 --- a/public/language/hr/modules.json +++ b/public/language/hr/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Dana", "chat.three_months": "3 Mjeseca", "chat.delete_message_confirm": "Sigurni ste da želite izbrisati ovu poruku?", - "chat.add-users-to-room": "Dodaj korisnike u sobu", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "Korisnik ne želi biti ometan. Jeste li sigurno da mu želite poslati poruku?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Sastavi", "composer.show_preview": "Prikaz", "composer.hide_preview": "Sakrij prikaz", diff --git a/public/language/hr/pages.json b/public/language/hr/pages.json index 240df3bf7401..13ff8dbe54fa 100644 --- a/public/language/hr/pages.json +++ b/public/language/hr/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "%1 glasao za", "account/downvoted": "%1 glasao protiv", "account/best": "Najbolje objave od %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email potvrđen!", "maintenance.text": "%1 Održavanje u toku. Posjetite nas uskoro.", "maintenance.messageIntro": "Poruka administratora:", diff --git a/public/language/hr/register.json b/public/language/hr/register.json index a518352cf3f4..f9cb4d97901a 100644 --- a/public/language/hr/register.json +++ b/public/language/hr/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Treba nam još par dodatnih informacija prije nego kreirate novi račun.", - "interstitial.errors-found": "Nismo uspijeli dovršiti registraciju:" + "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.", + "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 diff --git a/public/language/hr/topic.json b/public/language/hr/topic.json index b6ac933e2479..a8575c0ae261 100644 --- a/public/language/hr/topic.json +++ b/public/language/hr/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sortitaj po", "oldest_to_newest": "Starije prema Novom", "newest_to_oldest": "Novije prema Starom", - "most_votes": "Najviše glasova", - "most_posts": "Najviše objava", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Otvori novu temu?", "stale.warning": "Tema na koju odgovarate je stara. Želite li otvoriti novu temu i postaviti referencu u vašem odgovoru?", "stale.create": "Otvori novu temu", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/hr/uploads.json b/public/language/hr/uploads.json index 6a3655ad9b52..68cc3cd936cc 100644 --- a/public/language/hr/uploads.json +++ b/public/language/hr/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Učitavam datoteku ...", "select-file-to-upload": "Izaberite datoteku!", "upload-success": "Prijenos datoteka uspješan!", - "maximum-file-size": "Maksimum %1 kb" + "maximum-file-size": "Maksimum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/hr/user.json b/public/language/hr/user.json index 05e81b69faf1..0f3a1dd6eef8 100644 --- a/public/language/hr/user.json +++ b/public/language/hr/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Pratitelji", "following": "Prati", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "O meni", "signature": "Potpis", "birthday": "Rođendan", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Ovaj korisnik nije glasao za na objavama.", "has_no_downvoted_posts": "Ovaj korisnik nije glasao protiv na objavama.", "has_no_voted_posts": "Ovaj korisnik nema glasanih objava", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email sakriven", "hidden": "Sakriven", "paginate_description": "Numeriraj teme i objave umjesto scrollanja", @@ -142,5 +145,25 @@ "info.email-history": "Povijest emaila", "info.moderation-note": "Poruka moderiranja", "info.moderation-note.success": "Poruka moderiranja spremljena", - "info.moderation-note.add": "Dodaj bilješku" + "info.moderation-note.add": "Dodaj bilješku", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/hu/admin/extend/plugins.json b/public/language/hu/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/hu/admin/extend/plugins.json +++ b/public/language/hu/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/hu/admin/general/dashboard.json b/public/language/hu/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/hu/admin/general/dashboard.json +++ b/public/language/hu/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/hu/admin/settings/group.json b/public/language/hu/admin/settings/group.json index 7fa254e5085d..e68d64c3b374 100644 --- a/public/language/hu/admin/settings/group.json +++ b/public/language/hu/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Vigyázat! Ha ez a lehetőség le van tiltva, és vannak privát csoportjaid, azok automatikusan nyilvánosak lesznek.", "allow-creation": "Csoport Létrehozás Engedélyezése", "allow-creation-help": "Ha engedélyezve van, a felhasználók létrehozhatnak csoportokat (Alapértelmezett: letiltva)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximális Csoportnév Hossz", "cover-image": "Csoport borítókép", "default-cover": "Alapértelmezett borítóképek", diff --git a/public/language/hu/admin/settings/notifications.json b/public/language/hu/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/hu/admin/settings/notifications.json +++ b/public/language/hu/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/hu/email.json b/public/language/hu/email.json index 96ea9c847c5c..00ea6dd210ec 100644 --- a/public/language/hu/email.json +++ b/public/language/hu/email.json @@ -9,7 +9,7 @@ "welcome.text3": "Egy adminisztrátor elfogadta a regisztrációdat. Mostantól a felhasználónév/jelszó párosoddal be tudsz lépni.", "welcome.cta": "Kattints ide az e-mail címed megerősítéséhez", "invitation.text1": "%1 meghívott ide: %2", - "invitation.text2": "Your invitation will expire in %1 days.", + "invitation.text2": "A meghívó %1 napon belül lejár.", "invitation.ctr": "Kattints ide a fiókod létrehozásához.", "reset.text1": "Kaptunk egy kérést jelszavad visszaállítására, valószínűleg azért, mert elfelejtetted azt. Ha ez nem így van, hagyd figyelmen kívül ezt a levelet.", "reset.text2": "A jelszó visszaállításának folytatásához kattints az alábbi linkre:", diff --git a/public/language/hu/error.json b/public/language/hu/error.json index a888b30d50cc..c2f8f3f582f9 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Kérlek, adj meg egy felhasználónevet és egy jelszót", "invalid-search-term": "Érvénytelen keresési feltétel", "invalid-url": "Érvénytelen URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Foglalt felhasználónév", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/hu/flags.json b/public/language/hu/flags.json index 5f70893b62fb..c662f608bca3 100644 --- a/public/language/hu/flags.json +++ b/public/language/hu/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Hozzászólás", + "filter-type-user": "User", "filter-state": "Állapot", "filter-assignee": "Assignee UID", "filter-cid": "Kategória", diff --git a/public/language/hu/global.json b/public/language/hu/global.json index 7c502015e2a7..f859ae73b477 100644 --- a/public/language/hu/global.json +++ b/public/language/hu/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Oldalszám megadása", "upload_file": "Fájl feltöltése", "upload": "Feltöltés", + "uploads": "Feltöltések", "allowed-file-types": "Támogatott fájltípusok: %1", "unsaved-changes": "Mentetlen módosításaid vannak. Biztos el akarsz innen menni?", "reconnecting-message": "Úgy látszik, a(z) %1 csatlakozásod megszakadt, várj, míg megpróbáljuk helyreállítani.", diff --git a/public/language/hu/modules.json b/public/language/hu/modules.json index 21ffa3a56119..91fa577362eb 100644 --- a/public/language/hu/modules.json +++ b/public/language/hu/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 nap", "chat.three_months": "3 hónap", "chat.delete_message_confirm": "Biztos törölni akarod az üzenetet?", - "chat.add-users-to-room": "Felhasználó adása a szobához", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "A felhasználó \"ne zavarj\"-ra állította az állapotukat. Még így is csevegni akarsz velük?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Üzenetírás", "composer.show_preview": "Előnézet megjelenítése", "composer.hide_preview": "Előnézet elrejtése", diff --git a/public/language/hu/pages.json b/public/language/hu/pages.json index c4565ff19a58..eb78a2414c4e 100644 --- a/public/language/hu/pages.json +++ b/public/language/hu/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "%1 által kedvelt témakörök", "account/downvoted": "%1 által utált témakörök", "account/best": "%1 által írt legjobb hozzászólások", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "E-mail megerősítve", "maintenance.text": "%1 jelenleg karbantartás alatt van. Kérlek, nézz vissza később!", "maintenance.messageIntro": "Ezenkívúl, az adminisztrátor ezt az üzenetet hagyta:", diff --git a/public/language/hu/register.json b/public/language/hu/register.json index 72f6a6381dd9..6e7e8d782f58 100644 --- a/public/language/hu/register.json +++ b/public/language/hu/register.json @@ -19,5 +19,8 @@ "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.", "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:" + "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.", + "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 diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json index ce82e636ebfa..e0efb2d86558 100644 --- a/public/language/hu/topic.json +++ b/public/language/hu/topic.json @@ -118,8 +118,8 @@ "sort_by": "Rendezés", "oldest_to_newest": "Régebbiek elől", "newest_to_oldest": "Újabbak elől", - "most_votes": "Legtöbb szavazat", - "most_posts": "Legtöbb hozzászólás", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Inkább új témakör létrehozása?", "stale.warning": "A témakör, melyre válaszolsz, elég régi. Szeretnél helyette inkább új témakört létrehozni, és erre hivatkozni a válaszodban?", "stale.create": "Új témakör létrehozása", @@ -127,5 +127,7 @@ "link_back": "Válasz: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/hu/uploads.json b/public/language/hu/uploads.json index 2609719c808d..4ff4fd9b501a 100644 --- a/public/language/hu/uploads.json +++ b/public/language/hu/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Fájl feltöltése...", "select-file-to-upload": "Válassz feltöltendő fájlt!", "upload-success": "Fájl feltöltése sikeres!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/hu/user.json b/public/language/hu/user.json index 34844f85cafc..2663b874f3df 100644 --- a/public/language/hu/user.json +++ b/public/language/hu/user.json @@ -29,6 +29,8 @@ "ignored": "Mellőzve", "followers": "Követők", "following": "Követve", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Rólam", "signature": "Aláírás", "birthday": "Születésnap", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "A felhasználó még egy hozzászólást sem kedvelt.", "has_no_downvoted_posts": "A felhasználó még egy hozzászólást sem utált.", "has_no_voted_posts": "A felhasználó még nem szavazott hozzászólásra.", + "has_no_blocks": "You have blocked no users.", "email_hidden": "E-mail rejtett", "hidden": "rejtett", "paginate_description": "Témakörök és hosszászólasok lapozása a végtelen görgetés helyett.", @@ -142,5 +145,25 @@ "info.email-history": "E-mail előzmény", "info.moderation-note": "Moderálási megjegyzés", "info.moderation-note.success": "Moderálási megjegyzés elmentve", - "info.moderation-note.add": "Megjegyzés hozzáadása" + "info.moderation-note.add": "Megjegyzés hozzáadása", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/id/admin/extend/plugins.json b/public/language/id/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/id/admin/extend/plugins.json +++ b/public/language/id/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/id/admin/general/dashboard.json b/public/language/id/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/id/admin/general/dashboard.json +++ b/public/language/id/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/id/admin/settings/group.json b/public/language/id/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/id/admin/settings/group.json +++ b/public/language/id/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/id/admin/settings/notifications.json b/public/language/id/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/id/admin/settings/notifications.json +++ b/public/language/id/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/id/error.json b/public/language/id/error.json index b44d7293ac2b..912cc9052b4d 100644 --- a/public/language/id/error.json +++ b/public/language/id/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Mohon spesifikasikan username dan password", "invalid-search-term": "Kata pencarian salah", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username sudah terdaftar", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/id/flags.json b/public/language/id/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/id/flags.json +++ b/public/language/id/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/id/global.json b/public/language/id/global.json index 018973103f43..1bc50bd977dc 100644 --- a/public/language/id/global.json +++ b/public/language/id/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/id/modules.json b/public/language/id/modules.json index e16391cff769..d34c8521b780 100644 --- a/public/language/id/modules.json +++ b/public/language/id/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Hari", "chat.three_months": "3 Bulan", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/id/pages.json b/public/language/id/pages.json index abcc62274941..a8dd34f65bce 100644 --- a/public/language/id/pages.json +++ b/public/language/id/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 saat ini sedang dalam masa pemeliharaan. Silahkan kembali lain waktu.", "maintenance.messageIntro": "Tambahan, Administrator meninggalkan pesan ini:", diff --git a/public/language/id/register.json b/public/language/id/register.json index 62a5a15ee2e7..6ba5f4ee42d3 100644 --- a/public/language/id/register.json +++ b/public/language/id/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "We require some additional information before we can create your account.", - "interstitial.errors-found": "We could not complete your registration:" + "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 diff --git a/public/language/id/topic.json b/public/language/id/topic.json index 1d6bd8d57aeb..fe0a801a925a 100644 --- a/public/language/id/topic.json +++ b/public/language/id/topic.json @@ -118,8 +118,8 @@ "sort_by": "Urutkan berdasakan", "oldest_to_newest": "Terlama ke Terbaru", "newest_to_oldest": "Terbaru ke Terlama", - "most_votes": "Vote terbanyak", - "most_posts": "Postingan terbanyak", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/id/uploads.json b/public/language/id/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/id/uploads.json +++ b/public/language/id/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/id/user.json b/public/language/id/user.json index d0e32b0594af..e99732afa0dd 100644 --- a/public/language/id/user.json +++ b/public/language/id/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Pengikut", "following": "Mengikuti", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Tanda Pengenal", "birthday": "Hari Lahir", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Disembunyikan", "hidden": "disembunyikan", "paginate_description": "Paginate topics and posts instead of using infinite scroll", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/it/admin/extend/plugins.json b/public/language/it/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/it/admin/extend/plugins.json +++ b/public/language/it/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/it/admin/general/dashboard.json b/public/language/it/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/it/admin/general/dashboard.json +++ b/public/language/it/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/it/admin/settings/group.json b/public/language/it/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/it/admin/settings/group.json +++ b/public/language/it/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/it/admin/settings/notifications.json b/public/language/it/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/it/admin/settings/notifications.json +++ b/public/language/it/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/it/error.json b/public/language/it/error.json index be96894a6a95..69c88b10f5c3 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Si prega di specificare sia un nome utente che una password", "invalid-search-term": "Termine di ricerca non valido", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Non siamo riusciti a farti connettere, probabilmente perché la sessione è scaduta. Per favore riprova.", "invalid-pagination-value": "Valore di paginazione non valido, deve essere almeno %1 ed al massimo %2", "username-taken": "Nome utente già preso", @@ -145,5 +146,7 @@ "invalid-session": "Discrepanza della sessione", "invalid-session-text": "Sembra che la tua sessione non sia più attiva, oppure non corrisponde con il server. Per favore ricarica la pagina.", "no-topics-selected": "Nessuna discussione selezionata!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/it/flags.json b/public/language/it/flags.json index e6b7a013d5e0..1ffc0c486ae9 100644 --- a/public/language/it/flags.json +++ b/public/language/it/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "Tutto il contenuto", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Categoria", diff --git a/public/language/it/global.json b/public/language/it/global.json index 3b023001ac4f..fabbb2b9fb93 100644 --- a/public/language/it/global.json +++ b/public/language/it/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Inserisci il numero della pagina", "upload_file": "Carica file", "upload": "Carica", + "uploads": "Uploads", "allowed-file-types": "Le estensioni permesse dei file sono %1", "unsaved-changes": "Hai delle modifiche non salvate. Sei sicuro che vuoi lasciare la pagina?", "reconnecting-message": "Sembra che la tua connessione a %1 sia stata persa, per favore attendi mentre proviamo a riconnetterti.", diff --git a/public/language/it/modules.json b/public/language/it/modules.json index 84edee1910bb..00fe4feb8c3a 100644 --- a/public/language/it/modules.json +++ b/public/language/it/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Giorni", "chat.three_months": "3 Mesi", "chat.delete_message_confirm": "Sei sicuro di voler eliminare questo messaggio?", - "chat.add-users-to-room": "Aggiungi utenti alla stanza", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "Questo utente ha impostato il suo stato su Non Disturbare. Sei sicuro di voler iniziare una conversazione?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Componi", "composer.show_preview": "Visualizza Anteprima", "composer.hide_preview": "Nascondi Anteprima", diff --git a/public/language/it/pages.json b/public/language/it/pages.json index 1e7676ffdf53..0787658c2cf1 100644 --- a/public/language/it/pages.json +++ b/public/language/it/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Post apprezzati da %1", "account/downvoted": "Post votati negativamente da %1", "account/best": "I migliori post di %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confermata", "maintenance.text": "%1 è attualmente in manutenzione. Per favore ritorna più tardi.", "maintenance.messageIntro": "Inoltre, l'amministratore ha lasciato questo messaggio:", diff --git a/public/language/it/register.json b/public/language/it/register.json index 49de769d430b..4e21839105dd 100644 --- a/public/language/it/register.json +++ b/public/language/it/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "Devi accettare i Termini d'Utilizzo", "registration-added-to-queue": "La tua registrazione è stata aggiunta alla coda di moderazione. Riceverai una mail quando verrà accettata da un amministratore.", "interstitial.intro": "Abbiamo bisogno di qualche informazione in più prima di poter creare il tuo account.", - "interstitial.errors-found": "Non abbiamo potuto completare la tua registrazione:" + "interstitial.errors-found": "Non abbiamo potuto completare la tua registrazione:", + "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 diff --git a/public/language/it/topic.json b/public/language/it/topic.json index 0a020fd26d59..7279bb7d6aa2 100644 --- a/public/language/it/topic.json +++ b/public/language/it/topic.json @@ -118,8 +118,8 @@ "sort_by": "Ordina per", "oldest_to_newest": "Da Vecchi a Nuovi", "newest_to_oldest": "Da Nuovi a Vecchi", - "most_votes": "Più votati", - "most_posts": "Ulteriori post", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Preferisci creare una nuova discussione?", "stale.warning": "Il topic al quale stai rispondendo è abbastanza vecchio. Vorresti piuttosto creare un nuovo topic in riferimento a questo nella tua risposta?", "stale.create": "Crea una nuova discussione", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/it/uploads.json b/public/language/it/uploads.json index fcc163f5c74f..daaff5bda283 100644 --- a/public/language/it/uploads.json +++ b/public/language/it/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Sto caricando il file...", "select-file-to-upload": "Seleziona un file da caricare!", "upload-success": "File caricato con successo!", - "maximum-file-size": "Massimo %1 kb" + "maximum-file-size": "Massimo %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/it/user.json b/public/language/it/user.json index bf1f499f9c15..0472832a0283 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -29,6 +29,8 @@ "ignored": "Ignorati", "followers": "Da chi è seguito", "following": "Chi segue", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Su di me", "signature": "Firma", "birthday": "Data di nascita", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Questo utente non ha ancora apprezzato nessun post.", "has_no_downvoted_posts": "Questo utente non ha ancora votato negativamente alcun post", "has_no_voted_posts": "Questo utente non ha post votati", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Nascosta", "hidden": "nascosta", "paginate_description": "Non utilizzare lo scroll infinito per discussioni e messaggi", @@ -142,5 +145,25 @@ "info.email-history": "Storico dell'Email", "info.moderation-note": "Nota di moderazione", "info.moderation-note.success": "Nota di moderazione salvata", - "info.moderation-note.add": "Aggiungi nota" + "info.moderation-note.add": "Aggiungi nota", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/ja/admin/extend/plugins.json b/public/language/ja/admin/extend/plugins.json index 623471ad1e36..cb3f56ad5fa3 100644 --- a/public/language/ja/admin/extend/plugins.json +++ b/public/language/ja/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBBはパッケージマネージャに到達できませんでした。今アップグレードすることはおすすめしません。

", "alert.incompatible": "

NodeBBのバージョン(v%1)を v%2 にアップデートする必要があります。このプラグインの新しいバージョンをインストールするにはNodeBBをアップデートしてください。

", "alert.possibly-incompatible": "

No Compatibility Information Found

このプラグインはインストールに必要なNodeBBのバージョンの指定がされていませんでした。完全な互換性は保証されず、NodeBBが正常に起動しなくなる可能性があります。

NodeBBが正常に起動できない場合:

$ ./nodebb reset plugin=\"%1\"

このプラグインの最新バージョンのインストールを続行しますか?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "プラグインライセンス情報", "license.intro": "%1のプラグインは%2の下でライセンスされています。このプラグインを有効にする前にライセンス条項を熟読してください。", diff --git a/public/language/ja/admin/general/dashboard.json b/public/language/ja/admin/general/dashboard.json index 6d25cda79eb9..263c6f3e3d7a 100644 --- a/public/language/ja/admin/general/dashboard.json +++ b/public/language/ja/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "ページビュー", "graphs.unique-visitors": "ユニークな訪問者", "graphs.registered-users": "登録したユーザー", - "graphs.anonymous-users": "匿名ユーザー" + "graphs.anonymous-users": "匿名ユーザー", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/ja/admin/settings/group.json b/public/language/ja/admin/settings/group.json index e25882871dd6..a983f07e9f76 100644 --- a/public/language/ja/admin/settings/group.json +++ b/public/language/ja/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "注意!このオプションが無効で、プライベートグループがある場合、自動的に公開されます。", "allow-creation": "グループの作成を有効にする", "allow-creation-help": "有効にすると、ユーザーはグループを作成できます(デフォルト:無効)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "グループ名の最大文字数", "cover-image": "グループ表紙イメージ", "default-cover": "デフォルトのカバー画像", diff --git a/public/language/ja/admin/settings/notifications.json b/public/language/ja/admin/settings/notifications.json index d69a16d6297e..42cd4746203a 100644 --- a/public/language/ja/admin/settings/notifications.json +++ b/public/language/ja/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "通知", "welcome-notification": "ウェルカム通知", "welcome-notification-link": "ウェルカム通知のリンク", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/ja/error.json b/public/language/ja/error.json index 0ebbf58a109f..2da4a52ea64c 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "ユーザー名とパスワードの両方を指定してください", "invalid-search-term": "無効な検索ワード", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "セッションの期限切れと思われるため、私達はあなたのログイン状態を確認できませんでした。もう一度お試しください。", "invalid-pagination-value": "無効なページネーション値です。%1 から%2の値でなければありません。", "username-taken": "ユーザー名は既に使われています", @@ -145,5 +146,7 @@ "invalid-session": "セッションの不一致", "invalid-session-text": "ログインセッションの期限切れ、またはサーバーとの未接続が長すぎると思われます。このページを更新してみてください。", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/ja/flags.json b/public/language/ja/flags.json index 97c4936ece8d..d464cf6ef6ff 100644 --- a/public/language/ja/flags.json +++ b/public/language/ja/flags.json @@ -18,6 +18,7 @@ "filter-type": "フラグの種類", "filter-type-all": "すべてのコンテンツ", "filter-type-post": "投稿", + "filter-type-user": "User", "filter-state": "状態", "filter-assignee": "譲受人のユーザーID", "filter-cid": "カテゴリ", diff --git a/public/language/ja/global.json b/public/language/ja/global.json index 9a8be0a06249..63a57e2bb262 100644 --- a/public/language/ja/global.json +++ b/public/language/ja/global.json @@ -97,6 +97,7 @@ "enter_page_number": "ページ番号を入力", "upload_file": "ファイルをアップロード", "upload": "アップロード", + "uploads": "Uploads", "allowed-file-types": "有効なファイル形式は %1 です。", "unsaved-changes": "変更はまだ保存されていません。本当にこのページから離れますか?", "reconnecting-message": "%1への接続が失われたと思われます。再接続されるまでしばらくお待ちください。", diff --git a/public/language/ja/modules.json b/public/language/ja/modules.json index d65fa2227316..3d6b36351f2b 100644 --- a/public/language/ja/modules.json +++ b/public/language/ja/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30日間", "chat.three_months": "3ヶ月", "chat.delete_message_confirm": "本当にこのメッセージを削除しますか?", - "chat.add-users-to-room": "部屋にユーザーを追加", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "このユーザーのステータスはDnD(Do not disturb:取り込み中)に設定されています。あなたはまだチャットしたいですか?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "構成", "composer.show_preview": "プレビュー表示", "composer.hide_preview": "プレビュー非表示", diff --git a/public/language/ja/pages.json b/public/language/ja/pages.json index 39a573b6cd23..0bec7b5bf412 100644 --- a/public/language/ja/pages.json +++ b/public/language/ja/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "%1が投稿を高評価しました", "account/downvoted": "%1が投稿を低評価しました", "account/best": "%1のベストな投稿", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Eメールが確認されました", "maintenance.text": "%1 は現在メンテナンスを実行中です。お手数ですが、時間をずらしてお越しください。", "maintenance.messageIntro": "さらに、管理者はこちらのメッセージを残しました:", diff --git a/public/language/ja/register.json b/public/language/ja/register.json index 9f25bc8cba71..cf89f8d830fa 100644 --- a/public/language/ja/register.json +++ b/public/language/ja/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "あなたは利用規約に同意する必要があります", "registration-added-to-queue": "あなたの登録申請は承認キューに追加されました。管理者によって受け入れられた時に、メールを受信します。", "interstitial.intro": "私たちは、あなたのアカウント作成においていくつかの情報をお訪ねします。", - "interstitial.errors-found": "私達はあなたの登録を完了できませんでした:" + "interstitial.errors-found": "私達はあなたの登録を完了できませんでした:", + "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 diff --git a/public/language/ja/topic.json b/public/language/ja/topic.json index ed9dc843a5d2..da4404a52699 100644 --- a/public/language/ja/topic.json +++ b/public/language/ja/topic.json @@ -118,8 +118,8 @@ "sort_by": "並び替え", "oldest_to_newest": "古いものから新しい順", "newest_to_oldest": "新しいものから古い順", - "most_votes": "最も投票された順", - "most_posts": "最も投稿された順", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "新しいスレッドを作りますか?", "stale.warning": "あなたが返信しようとしてるスレッドが古いスレッドです。新しいスレッドを作って、そしてこのスレッドが参考として入れた方を勧めます。そうしますか?", "stale.create": "新しいスレッドを作ります。", @@ -127,5 +127,7 @@ "link_back": "返信: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/ja/uploads.json b/public/language/ja/uploads.json index 9d1d330ec966..6540439e65ef 100644 --- a/public/language/ja/uploads.json +++ b/public/language/ja/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "ファイルをアップロード中...", "select-file-to-upload": "アップロードするファイルを選択してください!", "upload-success": "ファイルのアップロードに成功しました!", - "maximum-file-size": "最大 %1 kb" + "maximum-file-size": "最大 %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/ja/user.json b/public/language/ja/user.json index 5b79785ce88f..add3489a1c5c 100644 --- a/public/language/ja/user.json +++ b/public/language/ja/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "フォロワー", "following": "フォロー中", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "署名", "birthday": "誕生日", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "このユーザーはまだ一つも投稿に高評価を付けていません。", "has_no_downvoted_posts": "このユーザーはまだ一つも投稿に低評価を付けていません。", "has_no_voted_posts": "このユーザーは投稿を評価していません。", + "has_no_blocks": "You have blocked no users.", "email_hidden": "メールアドレスを非表示", "hidden": "非表示", "paginate_description": "無限スクロールの代わりに、投稿やスレッドをページ別で切り替える。", @@ -142,5 +145,25 @@ "info.email-history": "Eメール履歴", "info.moderation-note": "モデレーションノート", "info.moderation-note.success": "モデレーションは保存されませんでした", - "info.moderation-note.add": "ノートに追加" + "info.moderation-note.add": "ノートに追加", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/ko/admin/extend/plugins.json b/public/language/ko/admin/extend/plugins.json index e656687cc900..096d29c7bfea 100644 --- a/public/language/ko/admin/extend/plugins.json +++ b/public/language/ko/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB가 페키지 매니저 접근에 실패했습니다. 지금 업그레이드 하는 것을 추천하지 않습니다.

", "alert.incompatible": "

지금 사용하시는 NodeBB 버젼(v%1)에서는 이 플러그인을 v%2 버젼까지만 업그레이드 할 수 있습니다. 이 플러그인의 최신 버젼을 설치하고 싶으시다면 먼저 NodeBB를 업그레이드 해주십시오.

", "alert.possibly-incompatible": "

호환성 관련 정보를 찾지 못했습니다.

이 플러그인은 현재 사용 중이신 NodeBB 버젼에 적합한 버젼을 명시하지 않았습니다. 따라서 완전한 호환성을 보장할 수 없고, 결과적으로 지금 사용중이신 NodeBB에 오류를 일으킬 수도 있습니다.

만약 NodeBB가 제대로 시작되지 않는다면:

$ ./nodebb reset plugin=\"%1\"

이 플러그인의 최신 버젼을 설치를 계속 하시겠습니까?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/ko/admin/general/dashboard.json b/public/language/ko/admin/general/dashboard.json index 826e8f808b98..2b503eaedd9f 100644 --- a/public/language/ko/admin/general/dashboard.json +++ b/public/language/ko/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "페이지 뷰", "graphs.unique-visitors": "고유 방문자", "graphs.registered-users": "등록된 사용자", - "graphs.anonymous-users": "익명의 사용자" + "graphs.anonymous-users": "익명의 사용자", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/ko/admin/settings/group.json b/public/language/ko/admin/settings/group.json index 75a4e8efe106..fff7c623b0cc 100644 --- a/public/language/ko/admin/settings/group.json +++ b/public/language/ko/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "주의 이 옵션이 비활성화 돼있고 당신에게 비공개 그룹이 있다면 그 그룹들은 모두 공개로 전환될 것입니다.", "allow-creation": "그룹 생성 허용", "allow-creation-help": "활성화 돼있다면 유저가 그룹을 생성할 수 있습니다. (기본: 비활성화)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "그룹 명 최대 길이", "cover-image": "그룹 커버 사진", "default-cover": "기본 커버 사진", diff --git a/public/language/ko/admin/settings/notifications.json b/public/language/ko/admin/settings/notifications.json index 4d0874915479..feb20a621225 100644 --- a/public/language/ko/admin/settings/notifications.json +++ b/public/language/ko/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "알림", "welcome-notification": "환영 알림", "welcome-notification-link": "환영 알림 링크", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 2a6640bba828..b13695b0622c 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "사용자명과 패스워드를 모두 설정해주세요.", "invalid-search-term": "올바르지 않은 검색어입니다.", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "세션이 만료되어 로그인에 실패하였습니다. 다시 시도해 주세요.", "invalid-pagination-value": "올바르지 않은 페이지 값입니다. 최소 1% 에서 최대 2% 사이로 설정해야 합니다.", "username-taken": "이미 사용 중인 사용자명 입니다.", @@ -145,5 +146,7 @@ "invalid-session": "일치하지 않는 세션입니다.", "invalid-session-text": "로그인 세션이 비활성화 되었거나 서버와 일치하지 않습니다. 페이지를 새로 고쳐주세요.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/ko/flags.json b/public/language/ko/flags.json index eabf86033eac..af87ffe045d7 100644 --- a/public/language/ko/flags.json +++ b/public/language/ko/flags.json @@ -18,6 +18,7 @@ "filter-type": "신고 유형", "filter-type-all": "모든 컨텐츠", "filter-type-post": "포스트", + "filter-type-user": "User", "filter-state": "처리 상태", "filter-assignee": "담당자 ID", "filter-cid": "게시판", diff --git a/public/language/ko/global.json b/public/language/ko/global.json index 90ef0e1d903c..715a6dfba9e1 100644 --- a/public/language/ko/global.json +++ b/public/language/ko/global.json @@ -97,6 +97,7 @@ "enter_page_number": "페이지 번호를 입력하세요", "upload_file": "파일 업로드", "upload": "업로드", + "uploads": "Uploads", "allowed-file-types": "사용가능한 파일 유형: %1", "unsaved-changes": "저장되지 않은 변경사항이 있습니다. 저장하지 않고 페이지를 떠나시겠습니까?", "reconnecting-message": "%1 사이트로의 연결이 끊어졌습니다. 다시 연결을 시도하는동안 잠시만 기다려 주십시오.", diff --git a/public/language/ko/modules.json b/public/language/ko/modules.json index 66440e540038..074a5f629373 100644 --- a/public/language/ko/modules.json +++ b/public/language/ko/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30일", "chat.three_months": "3개월", "chat.delete_message_confirm": "이 메세지를 삭제 하시겠습니까?", - "chat.add-users-to-room": "사용자 추가하기", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "이 사용자의 상태는 \"방해금지\" 입니다. 그래도 대화를 요청 하시겠습니까?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "작성", "composer.show_preview": "미리보기", "composer.hide_preview": "미리보기 숨김", diff --git a/public/language/ko/pages.json b/public/language/ko/pages.json index 2185d9af8f0e..f7367e3e649a 100644 --- a/public/language/ko/pages.json +++ b/public/language/ko/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "%1 님이 추천한 포스트", "account/downvoted": "%1 님에 비추천한 포스트", "account/best": "%1 님 최고의 포스트", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "이메일 인증 되었습니다", "maintenance.text": "%1 사이트는 현재 점검 중입니다. 나중에 다시 방문해주세요.", "maintenance.messageIntro": "다음은 관리자가 전하는 메시지입니다.", diff --git a/public/language/ko/register.json b/public/language/ko/register.json index 6f2d19f5b246..873c2e36b3af 100644 --- a/public/language/ko/register.json +++ b/public/language/ko/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "이용약관에 동의하셔야 합니다.", "registration-added-to-queue": "회원가입이 요청되었습니다. 관리자의 승인 후 메일이 발송됩니다.", "interstitial.intro": "계정을 생성하기 전 추가 정보가 더 필요합니다.", - "interstitial.errors-found": "회원가입을 완료하지 못했습니다." + "interstitial.errors-found": "회원가입을 완료하지 못했습니다.", + "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 diff --git a/public/language/ko/topic.json b/public/language/ko/topic.json index 8da7b61d19d9..1e6528c8e164 100644 --- a/public/language/ko/topic.json +++ b/public/language/ko/topic.json @@ -118,8 +118,8 @@ "sort_by": "정렬 기준", "oldest_to_newest": "오래된 순으로 정렬", "newest_to_oldest": "최신 순으로 정렬", - "most_votes": "추천수 순으로 정렬", - "most_posts": "포스트 많은 순으로 정렬", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "새로운 게시물을 생성 하시겠습니까?", "stale.warning": "현재 답글을 작성중인 게시물은 오래전에 작성 되었습니다. 새로 게시물을 생성하시고 이 게시물을 인용 하시겠습니까?", "stale.create": "새로운 게시물 작성", @@ -127,5 +127,7 @@ "link_back": "답글: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/ko/uploads.json b/public/language/ko/uploads.json index 3438b2ca03c5..c43a90c59e8e 100644 --- a/public/language/ko/uploads.json +++ b/public/language/ko/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "파일 업로드 중...", "select-file-to-upload": "업로드할 파일을 선택해 주세요!", "upload-success": "파일이 성공적으로 업로드 되었습니다!", - "maximum-file-size": "최대 %1 kb" + "maximum-file-size": "최대 %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/ko/user.json b/public/language/ko/user.json index e2de0544e59f..16c9a339d24c 100644 --- a/public/language/ko/user.json +++ b/public/language/ko/user.json @@ -29,6 +29,8 @@ "ignored": "무시됨", "followers": "팔로워", "following": "팔로잉", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "자기소개", "signature": "서명", "birthday": "생일", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "이 사용자가 추천한 포스트가 없습니다.", "has_no_downvoted_posts": "이 사용자가 비추천한 포스트가 없습니다.", "has_no_voted_posts": "평가받은 게시물이 없습니다.", + "has_no_blocks": "You have blocked no users.", "email_hidden": "이메일 비공개", "hidden": "비공개", "paginate_description": "주제와 게시물을 페이지로 정리", @@ -142,5 +145,25 @@ "info.email-history": "이메일 히스토리", "info.moderation-note": "관리자 노트", "info.moderation-note.success": "관리자 노트 저장완료", - "info.moderation-note.add": "노트 추가" + "info.moderation-note.add": "노트 추가", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/lt/admin/extend/plugins.json b/public/language/lt/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/lt/admin/extend/plugins.json +++ b/public/language/lt/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/lt/admin/general/dashboard.json b/public/language/lt/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/lt/admin/general/dashboard.json +++ b/public/language/lt/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/lt/admin/settings/group.json b/public/language/lt/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/lt/admin/settings/group.json +++ b/public/language/lt/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/lt/admin/settings/notifications.json b/public/language/lt/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/lt/admin/settings/notifications.json +++ b/public/language/lt/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/lt/error.json b/public/language/lt/error.json index 2ecded1078ce..3ea8b69a1cae 100644 --- a/public/language/lt/error.json +++ b/public/language/lt/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Prašome nurodyti tiek vartotojo vardą, tiek ir slaptažodį", "invalid-search-term": "Neteisingas paieškos terminas", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Vartotojo vardas jau užimtas", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/lt/flags.json b/public/language/lt/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/lt/flags.json +++ b/public/language/lt/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/lt/global.json b/public/language/lt/global.json index 629b49a561be..37e9817f4b25 100644 --- a/public/language/lt/global.json +++ b/public/language/lt/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/lt/modules.json b/public/language/lt/modules.json index d48189e09ab4..fdf96a237183 100644 --- a/public/language/lt/modules.json +++ b/public/language/lt/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dienų", "chat.three_months": "3 mėnesiai", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Sukomponuoti", "composer.show_preview": "Rodyti pavyzdį", "composer.hide_preview": "Slėpti pavyzdį", diff --git a/public/language/lt/pages.json b/public/language/lt/pages.json index 17d6e79b1ec8..6c9f421ee6c3 100644 --- a/public/language/lt/pages.json +++ b/public/language/lt/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 dabar atnaujinimo darbuose. Prašome grįžti vėliau", "maintenance.messageIntro": "Be to, administratorius paliko šį pranešimą:", diff --git a/public/language/lt/register.json b/public/language/lt/register.json index 193d74531812..161dc565ff18 100644 --- a/public/language/lt/register.json +++ b/public/language/lt/register.json @@ -19,5 +19,8 @@ "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", "interstitial.intro": "We require some additional information before we can create your account.", - "interstitial.errors-found": "We could not complete your registration:" + "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 diff --git a/public/language/lt/topic.json b/public/language/lt/topic.json index c54eac27919a..45b57d89923f 100644 --- a/public/language/lt/topic.json +++ b/public/language/lt/topic.json @@ -118,8 +118,8 @@ "sort_by": "Rūšiuoti pagal", "oldest_to_newest": "Nuo seniausių iki naujausių", "newest_to_oldest": "Nuo naujausių iki seniausių", - "most_votes": "Daugiausiai balsų", - "most_posts": "Daugiausia įrašų", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/lt/uploads.json b/public/language/lt/uploads.json index a838cdf68dc6..56b31c57a451 100644 --- a/public/language/lt/uploads.json +++ b/public/language/lt/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "įkeliama...", "select-file-to-upload": "Pasirinkite failą, kurį norite įkelti.", "upload-success": "Failas įkeltas sėkmingai!", - "maximum-file-size": "Daugiausiai %1 kb" + "maximum-file-size": "Daugiausiai %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/lt/user.json b/public/language/lt/user.json index bd65908005b1..5f17c2f5a2a7 100644 --- a/public/language/lt/user.json +++ b/public/language/lt/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Sekėjai", "following": "Seka", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Apie mane", "signature": "Parašas", "birthday": "Gimimo diena", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Šis narys dar neturi teigiamai įvertintų pranešimų.", "has_no_downvoted_posts": "Šis narys dar neturi neigiamai įvertintų pranešimų.", "has_no_voted_posts": "Šis narys dar neturi įvertintų pranešimų.", + "has_no_blocks": "You have blocked no users.", "email_hidden": "El. paštas paslėptas", "hidden": "paslėptas", "paginate_description": "Puslapiavimas temų ir pranešimų, vietoj kad naudoti judėjimą su pelytė į viršų ir į apačia", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/ms/admin/extend/plugins.json b/public/language/ms/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/ms/admin/extend/plugins.json +++ b/public/language/ms/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/ms/admin/general/dashboard.json b/public/language/ms/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/ms/admin/general/dashboard.json +++ b/public/language/ms/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/ms/admin/settings/group.json b/public/language/ms/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/ms/admin/settings/group.json +++ b/public/language/ms/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/ms/admin/settings/notifications.json b/public/language/ms/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/ms/admin/settings/notifications.json +++ b/public/language/ms/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/ms/error.json b/public/language/ms/error.json index 284ec75b33c9..37d555017f2e 100644 --- a/public/language/ms/error.json +++ b/public/language/ms/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Sila tentukan kedua-dua nama pengguna dan kata laluan", "invalid-search-term": "Terma pencarian tak sah", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Nombor halaman tidak sah, mesti tidak kurang dari %1 dan tidak lebih dari %2", "username-taken": "Nama pengguna telah digunakan", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/ms/flags.json b/public/language/ms/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/ms/flags.json +++ b/public/language/ms/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/ms/global.json b/public/language/ms/global.json index b855d2e939d5..f81cedc7442f 100644 --- a/public/language/ms/global.json +++ b/public/language/ms/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/ms/modules.json b/public/language/ms/modules.json index 83300904c21e..c355af268d32 100644 --- a/public/language/ms/modules.json +++ b/public/language/ms/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Hari", "chat.three_months": "3 Bulan", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Tulis", "composer.show_preview": "Pra-lihat", "composer.hide_preview": "Sorok pra-lihat", diff --git a/public/language/ms/pages.json b/public/language/ms/pages.json index 46ee974c6a8d..68eac3d365f9 100644 --- a/public/language/ms/pages.json +++ b/public/language/ms/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Kiriman diundi naik oleh %1", "account/downvoted": "Kiriman dibuang undi oleh %1", "account/best": "Kiriman Terbaik Oleh %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Emel Telah Disahkan", "maintenance.text": "%1 sedang berada dalam mod pembaikpulihan. Sila cuba lagi nanti.", "maintenance.messageIntro": "Tambahan, admin meninggalkan mesej ini :", diff --git a/public/language/ms/register.json b/public/language/ms/register.json index 9079daca416c..cad27aa71af0 100644 --- a/public/language/ms/register.json +++ b/public/language/ms/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "We require some additional information before we can create your account.", - "interstitial.errors-found": "We could not complete your registration:" + "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 diff --git a/public/language/ms/topic.json b/public/language/ms/topic.json index 20dd15bb0de0..8a14a6a96e86 100644 --- a/public/language/ms/topic.json +++ b/public/language/ms/topic.json @@ -118,8 +118,8 @@ "sort_by": "Susun ikut", "oldest_to_newest": "Lama ke Baru", "newest_to_oldest": "Baru ke Lama", - "most_votes": "Terbanyak Undi", - "most_posts": "Terbanyak Kiriman", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Bukan topik baru?", "stale.warning": "Topik yang anda nak balas agak lapuk. Adakah anda ingin buka topik baru dan rujukkan topik ini dalam balasan anda?", "stale.create": "Buka topik baru", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/ms/uploads.json b/public/language/ms/uploads.json index c637c43fad81..6a1928940439 100644 --- a/public/language/ms/uploads.json +++ b/public/language/ms/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Sedang memuatnaik fail...", "select-file-to-upload": "Pilih fail yang hendak dimuatnaik!", "upload-success": "Muatnaik fail berjaya!", - "maximum-file-size": "Maksima %1 kb" + "maximum-file-size": "Maksima %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/ms/user.json b/public/language/ms/user.json index 9dd8aad85165..610b1a432b15 100644 --- a/public/language/ms/user.json +++ b/public/language/ms/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Pengikut", "following": "Mengikuti", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Tentang saya", "signature": "Tandatangan", "birthday": "Tarikh lahir", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Emel disembunyikan", "hidden": "disembunyikan", "paginate_description": "Gunakan muka surat untuk topik dan kiriman daripada penggunaan skroll infiniti", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/nb/admin/extend/plugins.json b/public/language/nb/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/nb/admin/extend/plugins.json +++ b/public/language/nb/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/nb/admin/general/dashboard.json b/public/language/nb/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/nb/admin/general/dashboard.json +++ b/public/language/nb/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/nb/admin/settings/group.json b/public/language/nb/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/nb/admin/settings/group.json +++ b/public/language/nb/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/nb/admin/settings/notifications.json b/public/language/nb/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/nb/admin/settings/notifications.json +++ b/public/language/nb/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/nb/error.json b/public/language/nb/error.json index 19ae30481e84..1d6055edfe7d 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Vennligst spesifiser både et brukernavn og passord", "invalid-search-term": "Ugyldig søkeord", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Brukernavn opptatt", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/nb/flags.json b/public/language/nb/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/nb/flags.json +++ b/public/language/nb/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/nb/global.json b/public/language/nb/global.json index a67b1c8ac36d..4c52bc32d05e 100644 --- a/public/language/nb/global.json +++ b/public/language/nb/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/nb/modules.json b/public/language/nb/modules.json index e9d74f51bf23..e3150d18e105 100644 --- a/public/language/nb/modules.json +++ b/public/language/nb/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dager", "chat.three_months": "3 måneder", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Komponer", "composer.show_preview": "Vis forhåndsvisning", "composer.hide_preview": "Skjul forhåndsvisning", diff --git a/public/language/nb/pages.json b/public/language/nb/pages.json index 3355803d114c..0a8597820c7c 100644 --- a/public/language/nb/pages.json +++ b/public/language/nb/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 er for tiden under vedlikehold. Kom tilbake en annen gang.", "maintenance.messageIntro": "I tillegg har administratoren skrevet denne meldingen:", diff --git a/public/language/nb/register.json b/public/language/nb/register.json index 56735e0762be..668d051098f5 100644 --- a/public/language/nb/register.json +++ b/public/language/nb/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "We require some additional information before we can create your account.", - "interstitial.errors-found": "We could not complete your registration:" + "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 diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json index 679312c3c4c7..051dcc84f1aa 100644 --- a/public/language/nb/topic.json +++ b/public/language/nb/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sorter etter", "oldest_to_newest": "Eldste til nyeste", "newest_to_oldest": "Nyeste til eldste", - "most_votes": "Flest stemmer", - "most_posts": "Flest innlegg", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/nb/uploads.json b/public/language/nb/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/nb/uploads.json +++ b/public/language/nb/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/nb/user.json b/public/language/nb/user.json index a2ba42248a6e..653fe29d1574 100644 --- a/public/language/nb/user.json +++ b/public/language/nb/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Følgere", "following": "Følger", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Om meg", "signature": "Signatur", "birthday": "Bursdag", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "E-post skjult", "hidden": "skjult", "paginate_description": "Bruk sidevelger for emner og innlegg istedet for uendelig scrolling", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/nl/admin/admin.json b/public/language/nl/admin/admin.json index 2f59978661f7..39ddd5643092 100644 --- a/public/language/nl/admin/admin.json +++ b/public/language/nl/admin/admin.json @@ -1,7 +1,7 @@ { - "alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?", + "alert.confirm-rebuild-and-restart": "Weet u zeker dat u de NodeBB bestanden wilt hergenereren en NodeBB opnieuw wilt opstarten?", "alert.confirm-restart": "Weet u zeker dat u NodeBB opnieuw wilt opstarten?", - "acp-title": "%1 | NodeBB Administratiepaneel", + "acp-title": "%1 | NodeBB Administrator Controle Paneel", "settings-header-contents": "Inhoud" } \ No newline at end of file diff --git a/public/language/nl/admin/extend/plugins.json b/public/language/nl/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/nl/admin/extend/plugins.json +++ b/public/language/nl/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/nl/admin/general/dashboard.json b/public/language/nl/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/nl/admin/general/dashboard.json +++ b/public/language/nl/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/nl/admin/manage/users.json b/public/language/nl/admin/manage/users.json index 2b11bcf109a1..7a7bebaddce3 100644 --- a/public/language/nl/admin/manage/users.json +++ b/public/language/nl/admin/manage/users.json @@ -1,21 +1,21 @@ { - "users": "Users", - "edit": "Edit", - "make-admin": "Make Admin", - "remove-admin": "Remove Admin", - "validate-email": "Validate Email", - "send-validation-email": "Send Validation Email", - "password-reset-email": "Send Password Reset Email", - "ban": "Ban User(s)", - "temp-ban": "Ban User(s) Temporarily", + "users": "Gebruikers", + "edit": "Aanpassen", + "make-admin": "Maak administrator", + "remove-admin": "Verwijder administrator", + "validate-email": "Bevestig Email", + "send-validation-email": "Verstuur Email bevestiging", + "password-reset-email": "Verstuur wachtwoord herstel email", + "ban": "Verban gebruiker(s)", + "temp-ban": "Verban gebruiker(s) tijdelijk", "unban": "Unban User(s)", "reset-lockout": "Reset Lockout", "reset-flags": "Reset Flags", - "delete": "Delete User(s)", - "purge": "Delete User(s) and Content", + "delete": "Verwijder gebruiker(s)", + "purge": "Verwijder gebruiker(s) en inhoud", "download-csv": "Download CSV", - "invite": "Invite", - "new": "New User", + "invite": "Uitnodigen", + "new": "Nieuwe gebruiker", "pills.latest": "Latest Users", "pills.unvalidated": "Not Validated", diff --git a/public/language/nl/admin/settings/group.json b/public/language/nl/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/nl/admin/settings/group.json +++ b/public/language/nl/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/nl/admin/settings/notifications.json b/public/language/nl/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/nl/admin/settings/notifications.json +++ b/public/language/nl/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/nl/error.json b/public/language/nl/error.json index 762d3e3de7f0..aa00e8d42a02 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Geef zowel een gebruikersnaam als wachtwoord op", "invalid-search-term": "Ongeldig zoekterm", "invalid-url": "Ongeldig web adres", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We konden u niet aanmelden, waarschijnlijk door een verlopen sessie. Probeer het a.u.b. nogmaals.", "invalid-pagination-value": "Invalide paginering waarde. De waarde moet op z'n minst %1 zijn en niet hoger dan %2 zijn.", "username-taken": "Gebruikersnaam is al in gebruik ", @@ -145,5 +146,7 @@ "invalid-session": "Verkeerde sessie combinatie", "invalid-session-text": "Het lijkt erop dat je login sessie niet meer actief is of niet langer synchroon is met de server. Ververs de pagina.", "no-topics-selected": "Geen onderwerpen geselecteerd!", - "cant-move-to-same-topic": "Een bericht kan niet naar hetzelfde onderwerp worden verplaatst!" + "cant-move-to-same-topic": "Een bericht kan niet naar hetzelfde onderwerp worden verplaatst!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/nl/flags.json b/public/language/nl/flags.json index 2a020154400e..eaf8d7702a23 100644 --- a/public/language/nl/flags.json +++ b/public/language/nl/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "Alle inhoud", "filter-type-post": "Bericht", + "filter-type-user": "User", "filter-state": "Status", "filter-assignee": "UID van toewijzer", "filter-cid": "Categorie", diff --git a/public/language/nl/global.json b/public/language/nl/global.json index 81742a4e0a2f..73d051b5a138 100644 --- a/public/language/nl/global.json +++ b/public/language/nl/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Voer paginanummer in", "upload_file": "Upload bestand", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Toegestane bestandstypen zijn %1", "unsaved-changes": "Je hebt niet opgeslagen wijzigingen aangebracht. Weet je zeker dat je de pagina wilt verlaten?", "reconnecting-message": "Het lijkt erop dat je verbinding naar %1 verloren is gegaan, wacht even terwijl we de verbinding proberen te herstellen.", diff --git a/public/language/nl/modules.json b/public/language/nl/modules.json index cd13416ea193..06fb21092747 100644 --- a/public/language/nl/modules.json +++ b/public/language/nl/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dagen", "chat.three_months": "3 maanden", "chat.delete_message_confirm": "Weet je zeker dat je dit bericht wilt verwijderen?", - "chat.add-users-to-room": "Voeg gebruikers toe aan deze chat room", "chat.retrieving-users": "Gebruikers ophalen...", "chat.manage-room": "Chat Room beheren", - "chat.add-user-help": "Zoek hier naar gebruikers. Indien geselecteerd word de gebruiker toegevoegd aan de chat. De nieuwe gebruiker kan geen chat berichten zien die geschreven zijn voordat de gebruiker was toegevoegd aan de conversatie.", + "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.confirm-chat-with-dnd-user": "Deze gebruiker heeft de status op Niet Storen (DnD, Do not disturb) gezet. Wil je nog steeds een chat starten met deze persoon?", - "chat.rename-room": "Verander chat room van naam", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Voer hier de naam van je chat room in", "chat.rename-help": "De naam van de chat room die je hier zet is zichtbaar voor alle deelnemers aan de chat.", "chat.leave": "Verlaat Chat", "chat.leave-prompt": "Weet je zeker dat je deze chat wilt verlaten?", "chat.leave-help": "Als je de chat verlaat zul je toekomstige correspondentie in de chat niet meer zien. Als je later weer wordt toegevoegd, dan kun je de chat geschiedenis tot de hertoevoeging niet zien.", "chat.in-room": "In deze chat room", + "chat.kick": "Kick", "composer.compose": "Samenstellen", "composer.show_preview": "Voorbeeldweergave", "composer.hide_preview": "Verberg voorbeeld", diff --git a/public/language/nl/pages.json b/public/language/nl/pages.json index 10e31e47def4..d4175ef628e7 100644 --- a/public/language/nl/pages.json +++ b/public/language/nl/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Berichten omhoog gestemd door %1", "account/downvoted": "Berichten omlaag gestemd door %1", "account/best": "Beste berichten geplaast door %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Bevestigd", "maintenance.text": "%1 is momenteel in onderhoud. Excuses voor het ongemak en probeer het later nog eens.", "maintenance.messageIntro": "Daarnaast heeft de beheerder het volgende bericht achtergelaten:", diff --git a/public/language/nl/register.json b/public/language/nl/register.json index 8083d2b79cde..bfab74af428c 100644 --- a/public/language/nl/register.json +++ b/public/language/nl/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Je hebben meer informatie van je nodig voordat we je account kunnen aanmaken.", - "interstitial.errors-found": "Je konden jouw registratie niet afronden." + "interstitial.errors-found": "Je konden jouw registratie niet afronden.", + "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 diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json index 2dbe7745b393..f1f53a78a141 100644 --- a/public/language/nl/topic.json +++ b/public/language/nl/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sorteer op", "oldest_to_newest": "Oudste berichten bovenaan", "newest_to_oldest": "Meest recente berichten bovenaan", - "most_votes": "Meeste aantal stemmen", - "most_posts": "Meeste aantal reacties", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Een nieuw onderwerp maken in de plaats?", "stale.warning": "Het onderwerp waar je op antwoord is vrij oud. Zou je graag een nieuw onderwerp maken met een referentie naar dit onderwerp in je antwoord?", "stale.create": "Maak een nieuw onderwerp", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Bericht revisie geschiedenis", "diffs.description": "Dit bericht heeft %1 revisies. Klik op een revisie hieronder om het bericht te zien op dat punt in de tijd.", - "diffs.no-revisions-description": "Dit bericht heeft %1 revisies." + "diffs.no-revisions-description": "Dit bericht heeft %1 revisies.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/nl/uploads.json b/public/language/nl/uploads.json index c59223164d6b..d8acc94d0dd1 100644 --- a/public/language/nl/uploads.json +++ b/public/language/nl/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Bestand word geüpload...", "select-file-to-upload": "Selecteer een bestand om te uploaden!", "upload-success": "Bestand succesvol geüpload!", - "maximum-file-size": "Maximaal %1 kb" + "maximum-file-size": "Maximaal %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/nl/user.json b/public/language/nl/user.json index b20787831bf1..8292efa3d150 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -29,6 +29,8 @@ "ignored": "Genegeerd", "followers": "Volgers", "following": "Volgend", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Over mij", "signature": "Handtekening", "birthday": "Verjaardag", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Deze gebruiker heeft nog geen berichten omhoog gestemd.", "has_no_downvoted_posts": "Deze gebruiker heeft nog geen berichten omlaag gestemd.", "has_no_voted_posts": "Deze gebruiker heeft nog niet op berichten gestemd", + "has_no_blocks": "You have blocked no users.", "email_hidden": "E-mail niet beschikbaar", "hidden": "verborgen", "paginate_description": "Blader door onderwerpen en berichten in plaats van oneindig scrollen.", @@ -142,5 +145,25 @@ "info.email-history": "Email geschiedenis", "info.moderation-note": "Moderatie notitie", "info.moderation-note.success": "Moderatie notitie opgeslagen", - "info.moderation-note.add": "Notitie toevoegen" + "info.moderation-note.add": "Notitie toevoegen", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/pl/admin/extend/plugins.json b/public/language/pl/admin/extend/plugins.json index dfd99be11438..c46b26ba4e5d 100644 --- a/public/language/pl/admin/extend/plugins.json +++ b/public/language/pl/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB nie może dostać się do menedżera pakietów, aktualizacja nie jest sugerowana w tym momencie.

", "alert.incompatible": "

Twoja wersja NodeBB (v%1) umożliwia uaktualnienie jedynie do v%2 tej wtyczki. Proszę zaktualizuj twoje NodeBB, jeżeli chcesz zainstalować nowszą wersję tej wtyczki.

", "alert.possibly-incompatible": "

Nie znaleziono informacji o kompatybilności

Ta wtyczka nie specyfikuje konkretnej wersji NodeBB. Pełna zgodność nie może być zagwarantowana oraz może się zdarzyć, że NodeBB nie będzie uruchamiać się prawidłowo.

W przypadku, gdy NodeBB nie możne się poprawnie uruchomić:

$ ./nodebb reset plugin=\"%1\"

Kontynuować instalacje ostatniej wersji tej wtyczki?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Informacje o licencji wtyczki", "license.intro": "Wtyczka %1 jest licencjonowana według %2. Proszę zapoznać się z warunkami licencji przed aktywacją tej wtyczki.", diff --git a/public/language/pl/admin/general/dashboard.json b/public/language/pl/admin/general/dashboard.json index 6aab4d963bc1..dffccea801db 100644 --- a/public/language/pl/admin/general/dashboard.json +++ b/public/language/pl/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Wyświetlenia strony", "graphs.unique-visitors": "Unikalni użytkownicy", "graphs.registered-users": "Zarejestrowani użytkownicy", - "graphs.anonymous-users": "Anonimowi użytkownicy" + "graphs.anonymous-users": "Anonimowi użytkownicy", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/pl/admin/settings/group.json b/public/language/pl/admin/settings/group.json index 0390e1012623..fb69810cbf75 100644 --- a/public/language/pl/admin/settings/group.json +++ b/public/language/pl/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Uwaga! Jeśli ta opcja jest wyłączona i masz prywatne grupy, automatycznie stają się one publiczne.", "allow-creation": "Zezwalaj na tworzeni grup", "allow-creation-help": "Jeśli włączone, użytkownicy mogą tworzyć grupy (domyślnie: wyłączone)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maksymalna długość nazwy grupy", "cover-image": "Obraz profilowy grupy", "default-cover": "Domyślne obrazy profilowe", diff --git a/public/language/pl/admin/settings/notifications.json b/public/language/pl/admin/settings/notifications.json index 8fbdeab844d4..a1a03243e735 100644 --- a/public/language/pl/admin/settings/notifications.json +++ b/public/language/pl/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Powiadomienia", "welcome-notification": "Powiadomienie na przywitanie", "welcome-notification-link": "Odnośnik powiadomienia powitalnego", - "welcome-notification-uid": "Komunikat powitalny użytkownika (UID)" + "welcome-notification-uid": "Komunikat powitalny użytkownika (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ 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 cdd8c101db24..7b4b71f13995 100644 --- a/public/language/pl/admin/settings/user.json +++ b/public/language/pl/admin/settings/user.json @@ -2,7 +2,7 @@ "authentication": "Uwierzytelnianie", "allow-local-login": "Zezwalaj na lokalne logowanie", "require-email-confirmation": "Wymagaj potwierdzenia adresu email", - "email-confirm-interval": "Użytkownik nie może ponownie wysłać email z potwierdzeniem, dopóki nie minie", + "email-confirm-interval": "Użytkownik nie może ponownie wysłać e-maila z potwierdzeniem, dopóki nie minie", "email-confirm-email2": "minut", "allow-login-with": "Zezwalaj na logowanie przy użyciu", "allow-login-with.username-email": "Nazwy użytkownika lub adresu email", diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 5cc17e02c821..2503a4e8e28c 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -18,7 +18,8 @@ "invalid-username-or-password": "Podaj nazwę użytkownika i hasło", "invalid-search-term": "Błędne wyszukiwane wyrażenie", "invalid-url": "Błąd w adresie URL.", - "csrf-invalid": "Logowanie nie powiodło się. Przyczyną jest zapewne wygaśnięcie sesji. Spróbój ponownie.", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", + "csrf-invalid": "Logowanie nie powiodło się, zapewne na skutek wygaśnięcia sesji. Spróbuj ponownie.", "invalid-pagination-value": "Błędna wartość paginacji, zakres od %1 do %2", "username-taken": "Login zajęty", "email-taken": "Email zajęty", @@ -63,10 +64,10 @@ "post-delete-duration-expired-days-hours": "Możesz kasować posty przez %1 dni i %2 godzin(-y) po napisaniu", "cant-delete-topic-has-reply": "Nie możesz usunąć tematu zawierającego odpowiedź", "cant-delete-topic-has-replies": "Nie możesz usunąć tematu zawierającego %1 odpowiedzi", - "content-too-short": "Prosimy wpisać dłuższy post. Posty powinny zawierać co najmniej %1 znaków.", - "content-too-long": "Prosimy wpisać krótszy post. Posty nie mogą zawierać więcej niż %1 znaków.", - "title-too-short": "Prosimy podać dłuższy tytuł. Tytuły powinny zawierać co najmniej %1 znaków.", - "title-too-long": "Prosimy podać krótszy tytuł. Tytuły nie mogą być dłuższe niż %1 znaków.", + "content-too-short": "Wpisz dłuższy post. Posty powinny zawierać co najmniej %1 znaków.", + "content-too-long": "Wpisz krótszy post. Posty nie mogą zawierać więcej niż %1 znaków.", + "title-too-short": "Wpisz dłuższy tytuł. Tytuły powinny liczyć co najmniej %1 znaków.", + "title-too-long": "Wpisz krótszy tytuł. Tytuły nie mogą zawierać więcej niż %1 znaków.", "category-not-selected": "Nie wybrano kategorii.", "too-many-posts": "Możesz publikować posty raz na %1 sekund – poczekaj, zanim dodasz kolejny post", "too-many-posts-newbie": "Jako nowy użytkownik możesz publikować posty raz na %1 sekund, dopóki nie zdobędziesz reputacji na poziomie %2 – poczekaj, zanim dodasz kolejny post", @@ -75,7 +76,7 @@ "not-enough-tags": "Zbyt mało tagów. Tematy muszą posiadać przynajmniej %1 tag(ów)", "too-many-tags": "Zbyt wiele tagów. Tematy nie mogą posiadać więcej niż %1 tag(ów)", "still-uploading": "Poczekaj na zakończenie przesyłania", - "file-too-big": "Maksymalny dopuszczalny rozmiar pliku to %1kB - prosimy przesłać mniejszy plik", + "file-too-big": "Maksymalny dopuszczalny rozmiar pliku to %1 kB – prześlij mniejszy plik", "guest-upload-disabled": "Przesyłanie plików przez gości zostało wyłączone", "already-bookmarked": "Już dodałeś ten post do zakładek", "already-unbookmarked": "Już usunąłeś ten post z zakładek", @@ -145,5 +146,7 @@ "invalid-session": "Niewłaściwa sesja", "invalid-session-text": "Wygląda na to, że twoja sesja jest nieaktywna lub nie zgadza się z serwerem. Proszę odświeżyć tę stronę.", "no-topics-selected": "Nie wybrano tematów.", - "cant-move-to-same-topic": "Nie można przenieść wpisu do tego samego tematu!" + "cant-move-to-same-topic": "Nie można przenieść wpisu do tego samego tematu!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/pl/flags.json b/public/language/pl/flags.json index 1fa79a4fa247..b5d7c0021ba5 100644 --- a/public/language/pl/flags.json +++ b/public/language/pl/flags.json @@ -18,6 +18,7 @@ "filter-type": "Typ flagi", "filter-type-all": "Cała zawartość", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "Stan", "filter-assignee": "UID Przypisanego(-ej)", "filter-cid": "Kategoria", diff --git a/public/language/pl/global.json b/public/language/pl/global.json index d1302630d8aa..951d62b0b8d3 100644 --- a/public/language/pl/global.json +++ b/public/language/pl/global.json @@ -16,7 +16,7 @@ "please_log_in": "Proszę się zalogować", "logout": "Wyloguj się", "posting_restriction_info": "Posty mogą pisać tylko zarejestrowani użytkownicy forum. Kliknij tutaj, aby się zalogować.", - "welcome_back": "Witamy ponownie!", + "welcome_back": "Witaj ponownie,", "you_have_successfully_logged_in": "Logowanie powiodło się.", "save_changes": "Zapisz zmiany", "save": "Zapisz", @@ -97,6 +97,7 @@ "enter_page_number": "Wpisz numer strony", "upload_file": "Prześlij plik", "upload": "Prześlij", + "uploads": "Uploads", "allowed-file-types": "Dozwolone typy plików %1", "unsaved-changes": "Twoje zmiany nie zostały zapisane. Czy na pewno chcesz opuścić stronę?", "reconnecting-message": "Zdaje się, że Twoje połączenie z %1 zostało przerwane. Zaczekaj na ponowne nawiązanie połączenia.", diff --git a/public/language/pl/modules.json b/public/language/pl/modules.json index c7306bbc2851..3f1972f988bf 100644 --- a/public/language/pl/modules.json +++ b/public/language/pl/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dni", "chat.three_months": "3 miesiące", "chat.delete_message_confirm": "Jesteś pewny, że chcesz usunąć tą wiadomość?", - "chat.add-users-to-room": "Dodaj użytkownika do pokoju czatu", "chat.retrieving-users": "Pobieram użytkowników...", "chat.manage-room": "Zarządzaj pokojami czatu", - "chat.add-user-help": "Tu można szukać użytkowników. Wybrany użytkownik będzie dodany do czatu. Nowy użytkownik nie będzie widzieć komunikatów sprzed dołączenia do konwersacji.", + "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.confirm-chat-with-dnd-user": "Ten użytkownik ustawił swój status na \"nie przeszkadzać\". Czy wciąż chcesz z nim rozmawiać?", - "chat.rename-room": "Zmień nazwę pokoju", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Podaj swoją nazwę pokoju", "chat.rename-help": "Nazwa, która tutaj została ustawiona będzie widoczna przez wszystkich członków tego pokoju.", "chat.leave": "Opuść czat", "chat.leave-prompt": "Czy jesteś pewnien, że chcesz opuścić ten czat?", "chat.leave-help": "Opuszczenie czatu usunie cię z przyszłej korespondencji na czacie. Jeśli zostaniesz w przyszłości znów dodany nie będziesz widzieć historii czatu sprzed dodania.", "chat.in-room": "W tym pokoju", + "chat.kick": "Kick", "composer.compose": "Napisz", "composer.show_preview": "Pokazuj podgląd", "composer.hide_preview": "Ukryj Podgląd", diff --git a/public/language/pl/notifications.json b/public/language/pl/notifications.json index 6b2152e1a1e9..78b928895704 100644 --- a/public/language/pl/notifications.json +++ b/public/language/pl/notifications.json @@ -26,7 +26,7 @@ "upvoted_your_post_in_multiple": "%1 oraz %2 innych zagłosowali na Twój post w %3.", "moved_your_post": "%1 przeniósł Twój post do %2", "moved_your_topic": "%1 przeniósł %2", - "user_flagged_post_in": "%1 oflagował post w %2", + "user_flagged_post_in": "%1 oflagował post w %2", "user_flagged_post_in_dual": "%1 oraz %2 oflagowali post w %3", "user_flagged_post_in_multiple": "%1 oraz %2 innych oflagowali post w %3", "user_flagged_user": "%1 oflagował profil użytkownika (%2)", diff --git a/public/language/pl/pages.json b/public/language/pl/pages.json index dc38ed53f73f..360fb92454ad 100644 --- a/public/language/pl/pages.json +++ b/public/language/pl/pages.json @@ -8,7 +8,7 @@ "recent": "Ostatnie tematy", "top": "Tematy z najwyższą liczbą głosów", "moderator-tools": "Narzędzia dla moderatorów", - "flagged-content": "Treść oflagowanego posta", + "flagged-content": "Flagi", "ip-blacklist": "Czarna lista adresów IP", "post-queue": "Kolejka postów", "users/online": "Dostępni użytkownicy", @@ -49,6 +49,8 @@ "account/upvoted": "Posty, na które zagłosował %1", "account/downvoted": "Posty, przeciwko którym zagłosował %1", "account/best": "Najlepsze posty od %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "E-mail potwierdzony", "maintenance.text": "Obecnie trwają prace konserwacyjne nad %1. Wróć później.", "maintenance.messageIntro": "Dodatkowo administrator zostawił wiadomość:", diff --git a/public/language/pl/register.json b/public/language/pl/register.json index 4600d151ce40..713231f8a738 100644 --- a/public/language/pl/register.json +++ b/public/language/pl/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Do utworzenia Twojego konta potrzebne są dodatkowe informacje.", - "interstitial.errors-found": "Nie mogliśmy ukończyć procesu rejestracji:" + "interstitial.errors-found": "Nie mogliśmy ukończyć procesu rejestracji:", + "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 diff --git a/public/language/pl/reset_password.json b/public/language/pl/reset_password.json index e19e25c8d27f..87b121a0f3d5 100644 --- a/public/language/pl/reset_password.json +++ b/public/language/pl/reset_password.json @@ -2,7 +2,7 @@ "reset_password": "Zresetuj hasło", "update_password": "Zmień hasło", "password_changed.title": "Hasło zmienione", - "password_changed.message": "

Hasło zostało zmienione pomyślnie. Zaloguj się ponownie.", + "password_changed.message": "

Hasło zostało zmienione. Zaloguj się ponownie.", "wrong_reset_code.title": "Nieprawidłowy kod resetujący", "wrong_reset_code.message": "Wprowadzony kod resetujący jest nieprawidłowy. Spróbuj ponownie lub uzyskaj nowy kod.", "new_password": "Nowe hasło", diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json index e24c81a3714f..cc6b5e4a5aa5 100644 --- a/public/language/pl/topic.json +++ b/public/language/pl/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sortuj według", "oldest_to_newest": "Najpierw najstarsze", "newest_to_oldest": "Najpierw najnowsze", - "most_votes": "Najwięcej głosów", - "most_posts": "Najwięcej postów", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Stworzyć nowy temat?", "stale.warning": "Temat, na który chcesz udzielić odpowiedzi, jest dość stary. Czy nie wolisz utworzyć nowego tematu i jedynie odnieść się do tego?", "stale.create": "Stwórz nowy temat", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Historia edycji posta", "diffs.description": "Ten post zawiera %1 zmian. Kliknij w którąś ze zmian poniżej, aby zobaczyć treść posta w momencie jej dokonania.", - "diffs.no-revisions-description": "Ten post zawiera %1 zmian." + "diffs.no-revisions-description": "Ten post zawiera %1 zmian.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/pl/uploads.json b/public/language/pl/uploads.json index 67074d6402f3..9c42ae4f4f41 100644 --- a/public/language/pl/uploads.json +++ b/public/language/pl/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Wysyłanie pliku...", "select-file-to-upload": "Zaznacz plik do wysłania!", "upload-success": "Plik został wysłany!", - "maximum-file-size": "Maksymalnie %1 kb" + "maximum-file-size": "Maksymalnie %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/pl/user.json b/public/language/pl/user.json index fb3b3b96e566..05399fc7e7cc 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -29,6 +29,8 @@ "ignored": "Pominięte", "followers": "Obserwujący", "following": "Obserwowani", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "O mnie", "signature": "Sygnatura", "birthday": "Urodziny", @@ -59,8 +61,8 @@ "confirm_password": "Potwierdź hasło", "password": "Hasło", "username_taken_workaround": "Wybrany login jest już zajęty, więc zmieniliśmy go trochę. Proponujemy %1", - "password_same_as_username": "Twoje hasło jest takie samo jak nazwa użytkownika, prosimy wybrać inne hasło.", - "password_same_as_email": "Twoje hasło jest takie samo jak adres e-mail, prosimy wybrać inne hasło.", + "password_same_as_username": "Twoje hasło jest takie samo jak nazwa użytkownika. Wybierz inne hasło.", + "password_same_as_email": "Twoje hasło jest takie samo jak adres e-mail, wybierz inne hasło.", "weak_password": "Słabe hasło.", "upload_picture": "Prześlij zdjęcie", "upload_a_picture": "Prześlij zdjęcie", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Ten użytkownik jeszcze nie głosował za w żadnym temacie", "has_no_downvoted_posts": "Ten użytkownik jeszcze nie głosował przeciw w żadnym temacie.", "has_no_voted_posts": "Ten użytkownik nie ma jeszcze ocenionych postów", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Adres e-mail ukryty", "hidden": "ukryty", "paginate_description": "Dziel tematy i posty na strony zamiast używać nieskończonego przewijania", @@ -142,5 +145,25 @@ "info.email-history": "Historia adresu email", "info.moderation-note": "Notatka moderatora", "info.moderation-note.success": "Notatka została zapisana", - "info.moderation-note.add": "Dodaj notatkę" + "info.moderation-note.add": "Dodaj notatkę", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/pt-BR/admin/extend/plugins.json b/public/language/pt-BR/admin/extend/plugins.json index 5551818369ec..a325be6b91d5 100644 --- a/public/language/pt-BR/admin/extend/plugins.json +++ b/public/language/pt-BR/admin/extend/plugins.json @@ -37,13 +37,15 @@ "alert.uninstalled": "Plugin Desinstalado", "alert.activate-success": "Por favor reinicie o seu NodeBB para ativar completamente este plugin", "alert.deactivate-success": "Plugin desativado com sucesso", - "alert.upgrade-success": "Please rebuild and restart your NodeBB to fully upgrade this plugin.", + "alert.upgrade-success": "Por favor, recompile e reinicie seu NodeBB para atualizar totalmente este plugin.", "alert.install-success": "Plugin instalado com sucesso, por favor ative o plugin.", "alert.uninstall-success": "O plugin foi desativado com sucesso e desinstalado.", "alert.suggest-error": "

O NodeBB não pôde encontrar o administrador de pacotes, proceder com a instalação da última versão?

O servidor retornou (%1): %2
", "alert.package-manager-unreachable": "

O NodeBB não pôde encontrar o administrador de pacotes, um upgrade não é sugerível agora.

", "alert.incompatible": "Na

sua versão do NodeBB (v%1) o plugin pode ser atualizado até a sua v%2. Por favor atualize o seu NodeBB se você quiser instalar uma versão mais recente deste plugin.

", "alert.possibly-incompatible": "

Nenhuma Informação de Compatibilidade Encontrada

Este plugin não especificou uma versão específica para instalação dada a sua versão do NodeBB. A compatibilidade completa não pode ser garantid, e pode causar o seu NodeBB de não mais iniciar adequadamente.

Se ocorrer que o NodeBB não se inicie adequadamente:

$ ./nodebb reset plugin=\"%1\"

Continuar a instalação da última versão deste plugin?

", + "alert.reorder": "Plugins reordenados", + "alert.reorder-success": "Por favor, recompile e reinicie o NodeBB para completar o processo.", "license.title": "Informação de Licença do Plugin", "license.intro": "O plugin %1 está licenciado sob a %2. Por gentileza leia e entenda a licença antes de ativar este plugin.", diff --git a/public/language/pt-BR/admin/extend/widgets.json b/public/language/pt-BR/admin/extend/widgets.json index e7e2bba29790..d21f3f40c1f6 100644 --- a/public/language/pt-BR/admin/extend/widgets.json +++ b/public/language/pt-BR/admin/extend/widgets.json @@ -2,7 +2,7 @@ "available": "Widgets Disponíveis", "explanation": "Escolha um widget do menu de dropdown e então arraste e solte numa área de widget do template à esquerda.", "none-installed": "Nenhum widget encontrado! Ative o plugin de widgets padrão no painel de controle de plugins. ", - "clone-from": "Clone widgets from", + "clone-from": "Copiar widgets de", "containers.available": "Contâineres Disponíveis", "containers.explanation": "Arrastar e soltar em cima de qualquer widget ativo", "containers.none": "Nenhum", @@ -16,7 +16,7 @@ "alert.confirm-delete": "Tem certeza que deseja excluir este widget?", "alert.updated": "Widgets Atualizados", "alert.update-success": "Widgets atualizados com sucesso", - "alert.clone-success": "Successfully cloned widgets", + "alert.clone-success": "Widgets copiados com sucesso!", - "error.select-clone": "Please select a page to clone from" + "error.select-clone": "Por favor, seleciona a página a ser copiada" } \ No newline at end of file diff --git a/public/language/pt-BR/admin/general/dashboard.json b/public/language/pt-BR/admin/general/dashboard.json index 193bee8c8275..991dd6d3e939 100644 --- a/public/language/pt-BR/admin/general/dashboard.json +++ b/public/language/pt-BR/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Visualizações de Página", "graphs.unique-visitors": "Visitantes Únicos", "graphs.registered-users": "Usuários Registrados", - "graphs.anonymous-users": "Usuários Anônimos" + "graphs.anonymous-users": "Usuários Anônimos", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/pt-BR/admin/settings/group.json b/public/language/pt-BR/admin/settings/group.json index 691104c415c1..8fef4d61d71b 100644 --- a/public/language/pt-BR/admin/settings/group.json +++ b/public/language/pt-BR/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Atenção! Se esta opção estiver desabilitada e você tiver grupos privados, eles automaticamente se tornarão públicos.", "allow-creation": "Permitir Criação de Grupo", "allow-creation-help": "Se habilitado, usuários podem criar grupos (Padrão: desligado)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Tamanho Máximo do Nome de Grupos", "cover-image": "Imagem de Capa do Grupo", "default-cover": "Imagens de Capa Padrão", diff --git a/public/language/pt-BR/admin/settings/notifications.json b/public/language/pt-BR/admin/settings/notifications.json index 9f2a9a9fac9a..d832b3429a25 100644 --- a/public/language/pt-BR/admin/settings/notifications.json +++ b/public/language/pt-BR/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notificações", "welcome-notification": "Notificação de Boas-vindas", "welcome-notification-link": "Link da Notificação de Boas-vindas", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/pt-BR/error.json b/public/language/pt-BR/error.json index 28dff1caf00b..9a50de7928b1 100644 --- a/public/language/pt-BR/error.json +++ b/public/language/pt-BR/error.json @@ -17,7 +17,8 @@ "invalid-login-credentials": "Credenciais de login inválidas", "invalid-username-or-password": "Por favor especifique ambos nome de usuário e senha", "invalid-search-term": "Termo de pesquisa inválido", - "invalid-url": "Invalid URL", + "invalid-url": "URL Inválido", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Nós não fomos capazes de logá-lo, provavelmente devido à uma sessão expirada. Por favor tente novamente.", "invalid-pagination-value": "Valor de paginação inválido, precisa ser entre no mínimo %1 e no máximo %2", "username-taken": "Nome de usuário já existe", @@ -144,6 +145,8 @@ "invalid-home-page-route": "Rota de página inicial inválida", "invalid-session": "Erro de Sessão", "invalid-session-text": "Parece que sua sessão de login não está mais ativa, ou não combina mais com a do servidor. Por gentileza, recarregue esta página.", - "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "no-topics-selected": "Nenhum tópico selecionado!", + "cant-move-to-same-topic": "Não é possível mover um post para o mesmo tópico!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/pt-BR/flags.json b/public/language/pt-BR/flags.json index 407f6958ad69..699abd999f82 100644 --- a/public/language/pt-BR/flags.json +++ b/public/language/pt-BR/flags.json @@ -18,6 +18,7 @@ "filter-type": "Tipo de Sinalização", "filter-type-all": "Todo o Conteúdo", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "Estado", "filter-assignee": "UID do Cessionário", "filter-cid": "Categoria", diff --git a/public/language/pt-BR/global.json b/public/language/pt-BR/global.json index 68f79274ad48..3bc6250c9148 100644 --- a/public/language/pt-BR/global.json +++ b/public/language/pt-BR/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Digite o número da página", "upload_file": "Fazer upload de arquivo", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Os tipos de arquivo permitidos são %1", "unsaved-changes": "Você tem alterações não salvas. Tem certeza que você deseja sair da página?", "reconnecting-message": "Parece que sua conexão com %1 caiu, por favor aguarde enquanto tentamos reconectar.", diff --git a/public/language/pt-BR/modules.json b/public/language/pt-BR/modules.json index 7226e7640e80..433bd604da31 100644 --- a/public/language/pt-BR/modules.json +++ b/public/language/pt-BR/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Dias", "chat.three_months": "3 Meses", "chat.delete_message_confirm": "Tem certeza que deseja excluir esta mensagem?", - "chat.add-users-to-room": "Adicionar usuários à sala", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "Este usuário definiu seu estado como DnD(Do not disturb─Não perturbe). Você ainda assim quer conversar com ele?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compor", "composer.show_preview": "Exibir Pré-visualização", "composer.hide_preview": "Esconder Pré-visualização", diff --git a/public/language/pt-BR/pages.json b/public/language/pt-BR/pages.json index 79decd6e4f13..e72bb2afbe3a 100644 --- a/public/language/pt-BR/pages.json +++ b/public/language/pt-BR/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts votados positivamente por %1", "account/downvoted": "Posts votados negativamente por %1", "account/best": "Melhores posts de %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmado", "maintenance.text": "%1 está atualmente sob manutenção. Por favor retorne em outro momento.", "maintenance.messageIntro": "Adicionalmente, o administrador deixou esta mensagem:", diff --git a/public/language/pt-BR/register.json b/public/language/pt-BR/register.json index 1070dce7ec1f..118fdf1e647d 100644 --- a/public/language/pt-BR/register.json +++ b/public/language/pt-BR/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Nós pedimos alguma informação adicional antes que você possa criar a sua conta.", - "interstitial.errors-found": "Nós não pudemos completar o seu cadastro:" + "interstitial.errors-found": "Nós não pudemos completar o seu cadastro:", + "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 diff --git a/public/language/pt-BR/topic.json b/public/language/pt-BR/topic.json index d219642af71e..35db2ab2f305 100644 --- a/public/language/pt-BR/topic.json +++ b/public/language/pt-BR/topic.json @@ -118,8 +118,8 @@ "sort_by": "Ordenar por", "oldest_to_newest": "Mais Antigo para Mais Recente", "newest_to_oldest": "Mais Recente para Mais Antigo", - "most_votes": "Mais votados", - "most_posts": "Mais posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Criar um novo tópico ao invés disso?", "stale.warning": "O tópico que você está respondendo é bem antigo. Você gostaria de criar um novo tópico ao invés disso, e referenciá-lo em sua resposta?", "stale.create": "Criar um novo tópico", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/pt-BR/uploads.json b/public/language/pt-BR/uploads.json index 232e568e92c6..68fc458d2041 100644 --- a/public/language/pt-BR/uploads.json +++ b/public/language/pt-BR/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Fazendo upload do arquivo...", "select-file-to-upload": "Escolha um arquivo para fazer upload!", "upload-success": "Upload realizado com sucesso!", - "maximum-file-size": "No máximo %1 kb" + "maximum-file-size": "No máximo %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/pt-BR/user.json b/public/language/pt-BR/user.json index 824abb079cc8..0cc39c139f25 100644 --- a/public/language/pt-BR/user.json +++ b/public/language/pt-BR/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Seguidores", "following": "Seguindo", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Sobre mim", "signature": "Assinatura", "birthday": "Aniversário", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Este usuário ainda não votou quaisquer posts positivamente.", "has_no_downvoted_posts": "Este usuário ainda não votou quaisquer posts negativamente.", "has_no_voted_posts": "Este usuário não tem posts votados", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Escondido", "hidden": "escondido", "paginate_description": "Paginar tópicos ao invés de utilizar em vez de usar rolagem infinita.", @@ -142,5 +145,25 @@ "info.email-history": "Histórico do Email", "info.moderation-note": "Nota da Moderação", "info.moderation-note.success": "Nota da moderação salva", - "info.moderation-note.add": "Adicionar nota" + "info.moderation-note.add": "Adicionar nota", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/pt-PT/admin/extend/plugins.json b/public/language/pt-PT/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/pt-PT/admin/extend/plugins.json +++ b/public/language/pt-PT/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/pt-PT/admin/general/dashboard.json b/public/language/pt-PT/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/pt-PT/admin/general/dashboard.json +++ b/public/language/pt-PT/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/pt-PT/admin/settings/group.json b/public/language/pt-PT/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/pt-PT/admin/settings/group.json +++ b/public/language/pt-PT/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/pt-PT/admin/settings/notifications.json b/public/language/pt-PT/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/pt-PT/admin/settings/notifications.json +++ b/public/language/pt-PT/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/pt-PT/error.json b/public/language/pt-PT/error.json index ef4d41ecf674..30971ba5dea1 100644 --- a/public/language/pt-PT/error.json +++ b/public/language/pt-PT/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Por favor especificar um nome de utilizador e senha", "invalid-search-term": "Termo de pesquisa inválido", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Não conseguimos efetuar o teu login, provavelmente devido a uma sessão que já expirou. Por favor, tenta novamente", "invalid-pagination-value": "Valor de paginação errado, deve ser no mínimo %1 e no máximo %2", "username-taken": "Nome de utilizar já utilizado", @@ -145,5 +146,7 @@ "invalid-session": "Sessão incompatível", "invalid-session-text": "Parece que a sua sessão de login não se encontra mais ativa ou não tem correspondência com o servidor. por favor recarregue esta página.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/pt-PT/flags.json b/public/language/pt-PT/flags.json index d32ae53f561a..3941102145bf 100644 --- a/public/language/pt-PT/flags.json +++ b/public/language/pt-PT/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "Todo o Conteúdo", "filter-type-post": "Publicação", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Categoria", diff --git a/public/language/pt-PT/global.json b/public/language/pt-PT/global.json index a1f6b5707fda..5ee650691f03 100644 --- a/public/language/pt-PT/global.json +++ b/public/language/pt-PT/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Introduzir número da página", "upload_file": "Carregar ficheiro", "upload": "Carregar", + "uploads": "Uploads", "allowed-file-types": "Os tipos de ficheiro permitidos são %1", "unsaved-changes": "Tens alterações por salvar. Tens a certeza que pretendes mudar de página?", "reconnecting-message": "Parece que a tua conexão com %1 foi perdida. Por favor, espera enquanto tentamos reconectar-te.", diff --git a/public/language/pt-PT/modules.json b/public/language/pt-PT/modules.json index 4b85f976a9cf..40e5968fbe41 100644 --- a/public/language/pt-PT/modules.json +++ b/public/language/pt-PT/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dias", "chat.three_months": "3 meses", "chat.delete_message_confirm": "Tens a certeza que desejas apagar esta mensagem?", - "chat.add-users-to-room": "Adicionar utilizadores à sala", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compor", "composer.show_preview": "Mostrar pré-visualização", "composer.hide_preview": "Ocultar pré-visualização", diff --git a/public/language/pt-PT/pages.json b/public/language/pt-PT/pages.json index 635a2c7eb1e0..51b3ddba0472 100644 --- a/public/language/pt-PT/pages.json +++ b/public/language/pt-PT/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Publicações votadas favoravelmente por %1", "account/downvoted": "Publicações votadas negativamente por %1", "account/best": "Melhores publicações feitas por %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "E-mail confirmado", "maintenance.text": "%1 está atualmente sobre manutenção. Por favor, volta noutra altura.", "maintenance.messageIntro": "Adicionalmente, o administrador deixou esta mensagem:", diff --git a/public/language/pt-PT/register.json b/public/language/pt-PT/register.json index 5ec6fa8f923e..d7fc8a24708d 100644 --- a/public/language/pt-PT/register.json +++ b/public/language/pt-PT/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "Deves aceitar os Termos de Utilização", "registration-added-to-queue": "O teu registro foi adicionado à fila de aprovação. Receberás um e-mail quando for aceite pelo administrador.", "interstitial.intro": "Requeremos informação adicional antes de criarmos a tua conta.", - "interstitial.errors-found": "Não pudemos completar o teu registro:" + "interstitial.errors-found": "Não pudemos completar o teu registro:", + "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 diff --git a/public/language/pt-PT/topic.json b/public/language/pt-PT/topic.json index f2828520b35a..864530093ed9 100644 --- a/public/language/pt-PT/topic.json +++ b/public/language/pt-PT/topic.json @@ -118,8 +118,8 @@ "sort_by": "Dispor por", "oldest_to_newest": "Do mais antigo para o mais recente", "newest_to_oldest": "Mais recente para mais antigo", - "most_votes": "Mais votos", - "most_posts": "Mais publicções", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Em vez disso, criar novo tópico?", "stale.warning": "O tópico ao qual estás a responder é bastante antigo. Gostarias antes de criar um novo tópico e referir este na tua resposta?", "stale.create": "Criar um novo tópico", @@ -127,5 +127,7 @@ "link_back": "Referindo: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/pt-PT/uploads.json b/public/language/pt-PT/uploads.json index b730ff4fe844..312ae191dae4 100644 --- a/public/language/pt-PT/uploads.json +++ b/public/language/pt-PT/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Carregando o ficheiro...", "select-file-to-upload": "Seleciona um ficheiro para carregar!", "upload-success": "Ficheiro carregador com sucesso!", - "maximum-file-size": "Máximo de %1 kb" + "maximum-file-size": "Máximo de %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/pt-PT/user.json b/public/language/pt-PT/user.json index f5e96926ee04..4917d923e9cc 100644 --- a/public/language/pt-PT/user.json +++ b/public/language/pt-PT/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Seguidores", "following": "Seguindo", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Sobre mim", "signature": "Assinatura", "birthday": "Data de nascimento", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Este utilizador ainda não votou favoravelmente em nenhuma publicação.", "has_no_downvoted_posts": "Este utilizador ainda não votou negativamente em nenhuma publicação.", "has_no_voted_posts": "Este utilizador ainda não tem nenhuma publicação com votos", + "has_no_blocks": "You have blocked no users.", "email_hidden": "E-mail escondido", "hidden": "Escondido", "paginate_description": "Paginar os tópicos e publicações em vez de usar o scroll infinito", @@ -142,5 +145,25 @@ "info.email-history": "Histórico de e-mail", "info.moderation-note": "Nota de moderação", "info.moderation-note.success": "Nota de moderação gravada", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/ro/admin/extend/plugins.json b/public/language/ro/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/ro/admin/extend/plugins.json +++ b/public/language/ro/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/ro/admin/general/dashboard.json b/public/language/ro/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/ro/admin/general/dashboard.json +++ b/public/language/ro/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/ro/admin/settings/group.json b/public/language/ro/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/ro/admin/settings/group.json +++ b/public/language/ro/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/ro/admin/settings/notifications.json b/public/language/ro/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/ro/admin/settings/notifications.json +++ b/public/language/ro/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/ro/error.json b/public/language/ro/error.json index 40be6a680d99..3e4355427791 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Te rugăm să specifici atât un nume de utilizator cât si o parolă", "invalid-search-term": "Cuvânt de căutare invalid", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Numele de utilizator este deja folosit", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/ro/flags.json b/public/language/ro/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/ro/flags.json +++ b/public/language/ro/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/ro/global.json b/public/language/ro/global.json index d74a7eebac9a..edfcbb875a56 100644 --- a/public/language/ro/global.json +++ b/public/language/ro/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Introdu numărul paginei", "upload_file": "Încărcați fișierul", "upload": "Încărcați", + "uploads": "Uploads", "allowed-file-types": "Tipuri de fișiere permise sunt %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/ro/groups.json b/public/language/ro/groups.json index 611738c13b69..96648ce53aff 100644 --- a/public/language/ro/groups.json +++ b/public/language/ro/groups.json @@ -12,7 +12,7 @@ "invited.none": "Momentan nu există membrii invitați", "invited.uninvite": "Anulează invitația", "invited.search": "Search for a user to invite to this group", - "invited.notification_title": "Ai fost invitat să te alături %1", + "invited.notification_title": "Ai fost invitat să te alături %1", "request.notification_title": "Group Membership Request from %1", "request.notification_text": "%1 has requested to become a member of %2", "cover-save": "Salvează", diff --git a/public/language/ro/modules.json b/public/language/ro/modules.json index 6c7dbaaf607f..f66c75ad06d1 100644 --- a/public/language/ro/modules.json +++ b/public/language/ro/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 de zile", "chat.three_months": "3 Luni", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Scrie", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/ro/pages.json b/public/language/ro/pages.json index 7324e850c5bd..51f4031bb157 100644 --- a/public/language/ro/pages.json +++ b/public/language/ro/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 este momentan în mentenanță. Întoarce-te în curând!", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/public/language/ro/register.json b/public/language/ro/register.json index 60ad1513bf79..ca1ed4eac441 100644 --- a/public/language/ro/register.json +++ b/public/language/ro/register.json @@ -19,5 +19,8 @@ "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:" + "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 diff --git a/public/language/ro/topic.json b/public/language/ro/topic.json index 8318e03c518d..767ac1938045 100644 --- a/public/language/ro/topic.json +++ b/public/language/ro/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sortează de la", "oldest_to_newest": "Vechi la Noi", "newest_to_oldest": "Noi la Vechi", - "most_votes": "Cele mai votate", - "most_posts": "Most posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/ro/uploads.json b/public/language/ro/uploads.json index aa633f773e2f..89095c4dc9de 100644 --- a/public/language/ro/uploads.json +++ b/public/language/ro/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Selectează un fișier pentru încărcare!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maxim %1 kB" + "maximum-file-size": "Maxim %1 kB", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/ro/user.json b/public/language/ro/user.json index da13335e90b6..f59c4279bfa2 100644 --- a/public/language/ro/user.json +++ b/public/language/ro/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Urmărit de", "following": "Îi urmărește pe", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Semnătură", "birthday": "Zi de naștere", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Adresă de email ascunsă", "hidden": "ascuns", "paginate_description": "Paginate topics and posts instead of using infinite scroll", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/ru/admin/extend/plugins.json b/public/language/ru/admin/extend/plugins.json index 4b2e04b805dc..fd56a6989160 100644 --- a/public/language/ru/admin/extend/plugins.json +++ b/public/language/ru/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/ru/admin/general/dashboard.json b/public/language/ru/admin/general/dashboard.json index b8dbff3a40d9..7e673ca1b8e2 100644 --- a/public/language/ru/admin/general/dashboard.json +++ b/public/language/ru/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Просмотров", "graphs.unique-visitors": "Уникальных пользователей", "graphs.registered-users": "Зарегистрированных пользователей", - "graphs.anonymous-users": "Анонимных пользователей" + "graphs.anonymous-users": "Анонимных пользователей", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/ru/admin/settings/group.json b/public/language/ru/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/ru/admin/settings/group.json +++ b/public/language/ru/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/ru/admin/settings/notifications.json b/public/language/ru/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/ru/admin/settings/notifications.json +++ b/public/language/ru/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/ru/error.json b/public/language/ru/error.json index a757a5f6307d..48a8d5393c1d 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Пожалуйста, укажите имя пользователя и пароль", "invalid-search-term": "Неверный поисковой запрос", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Нам не удалось вас найти из-за просроченной сессии. Попробуйте ещё раз.", "invalid-pagination-value": "Неверно указан номер страницы. Значение должно быть в диапазоне от %1 до %2", "username-taken": "Участник с таким именем пользователя уже зарегистрирован. Пожалуйста, выберите другое имя пользователя.", @@ -145,5 +146,7 @@ "invalid-session": "Сессия не существует", "invalid-session-text": "Похоже, что ваша сессия больше не активна или она не совпадает с сессией на сервере. Пожалуйста, обновите эту страницу.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/ru/flags.json b/public/language/ru/flags.json index bb3372deb594..dfa8572a9b10 100644 --- a/public/language/ru/flags.json +++ b/public/language/ru/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "Весь контент", "filter-type-post": "Сообщение", + "filter-type-user": "User", "filter-state": "Состояние", "filter-assignee": "Assignee UID", "filter-cid": "Категория", diff --git a/public/language/ru/global.json b/public/language/ru/global.json index c63d04cb870a..5b21463e3dca 100644 --- a/public/language/ru/global.json +++ b/public/language/ru/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Введите номер страницы", "upload_file": "Загрузить файл", "upload": "Загрузить", + "uploads": "Uploads", "allowed-file-types": "Разрешённые форматы файлов %1", "unsaved-changes": "У вас есть несохранённые изменения. Вы уверены, что хотите уйти?", "reconnecting-message": "Похоже, подключение к %1 было разорвано, подождите, пока мы пытаемся восстановить соединение.", diff --git a/public/language/ru/modules.json b/public/language/ru/modules.json index 0bd452bdc321..45197c647d07 100644 --- a/public/language/ru/modules.json +++ b/public/language/ru/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 дней", "chat.three_months": "3 месяца", "chat.delete_message_confirm": "Вы уверены, что хотите удалить это сообщение?", - "chat.add-users-to-room": "Добавить участников в комнату", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "Этот пользователь установил статус \"Не беспокоить\". Вы все еще хотите написать ему?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", - "chat.leave": "Leave Chat", - "chat.leave-prompt": "Are you sure you wish to leave this chat?", + "chat.leave": "Покинуть Чат", + "chat.leave-prompt": "Вы действительно хотите покинуть чат?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Редактор сообщений", "composer.show_preview": "Показать предпросмотр сообщения", "composer.hide_preview": "Скрыть предпросмотр", diff --git a/public/language/ru/pages.json b/public/language/ru/pages.json index ede173f40ade..a9699f7e6f83 100644 --- a/public/language/ru/pages.json +++ b/public/language/ru/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Рейтинг записей поднят %1", "account/downvoted": "Рейтинг записей снижен %1", "account/best": "Лучшие записи участника %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Электронная почта подтверждена", "maintenance.text": "Приносим наши извинения, %1 в настоящее время на обслуживании. Пожалуйста, приходите позже.", "maintenance.messageIntro": "Администратор оставил сообщение:", diff --git a/public/language/ru/register.json b/public/language/ru/register.json index 10c088857090..a2cb53e05790 100644 --- a/public/language/ru/register.json +++ b/public/language/ru/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "Для регистрации на нашем сайте необходимо согласиться с условиями", "registration-added-to-queue": "Ваша регистрация была добавлена в очередь на утверждение. Вы получите уведомление по электронной почте, когда она будет одобрена администратором.", "interstitial.intro": "Нам потребуется дополнительная информация, прежде чем мы сможем создать вашу учётную запись.", - "interstitial.errors-found": "Мы не смогли завершить регистрацию:" + "interstitial.errors-found": "Мы не смогли завершить регистрацию:", + "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 diff --git a/public/language/ru/search.json b/public/language/ru/search.json index f685b6f9c084..3c2d5ec9b818 100644 --- a/public/language/ru/search.json +++ b/public/language/ru/search.json @@ -6,8 +6,8 @@ "titles": "Названия", "titles-posts": "Названия и записи", "match-words": "Match words", - "all": "All", - "any": "Any", + "all": "Все", + "any": "Любые", "posted-by": "В именах авторов записей", "in-categories": "В сообществах", "search-child-categories": "Искать в рубриках", diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json index 6fef30267d33..4986cf468881 100644 --- a/public/language/ru/topic.json +++ b/public/language/ru/topic.json @@ -118,8 +118,8 @@ "sort_by": "Сортировка", "oldest_to_newest": "Начиная со старых записей", "newest_to_oldest": "Начиная с новых записей", - "most_votes": "По голосам", - "most_posts": "По количеству ответов", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Создать новую тему вместо этой?", "stale.warning": "Тема, в которую вы пишите, очень старая. Вы хотите создать новую тему?", "stale.create": "Создать новую тему", @@ -127,5 +127,7 @@ "link_back": "Ответ: [%1](%2)", "diffs.title": "История Редактирования Сообщения", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/ru/uploads.json b/public/language/ru/uploads.json index dedc27456d25..9b0fe57f2057 100644 --- a/public/language/ru/uploads.json +++ b/public/language/ru/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Загрузка файла...", "select-file-to-upload": "Укажите файл для загрузки!", "upload-success": "Файл успешно загружен!", - "maximum-file-size": "Максимум %1 kb" + "maximum-file-size": "Максимум %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/ru/user.json b/public/language/ru/user.json index b27478afcc61..70699217ee5b 100644 --- a/public/language/ru/user.json +++ b/public/language/ru/user.json @@ -29,6 +29,8 @@ "ignored": "Игнорировать", "followers": "Подписчиков", "following": "Подписок", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Обо мне", "signature": "Подпись", "birthday": "День рождения", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Участник пока не голосовал положительно ни за одну запись", "has_no_downvoted_posts": "Участник пока не голосовал против ни одной записи", "has_no_voted_posts": "Участник пока не голосовал ни за одну запись", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Электронная почта скрыта", "hidden": "скрыто", "paginate_description": "Разбить на страницы, а не выводить бесконечным списком", @@ -142,5 +145,25 @@ "info.email-history": "История изменения электронной почты", "info.moderation-note": "Примечание модератора", "info.moderation-note.success": "Примечание модератора сохранено", - "info.moderation-note.add": "Добавить примечание" + "info.moderation-note.add": "Добавить примечание", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/rw/admin/extend/plugins.json b/public/language/rw/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/rw/admin/extend/plugins.json +++ b/public/language/rw/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/rw/admin/general/dashboard.json b/public/language/rw/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/rw/admin/general/dashboard.json +++ b/public/language/rw/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/rw/admin/settings/group.json b/public/language/rw/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/rw/admin/settings/group.json +++ b/public/language/rw/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/rw/admin/settings/notifications.json b/public/language/rw/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/rw/admin/settings/notifications.json +++ b/public/language/rw/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/rw/error.json b/public/language/rw/error.json index 6b1768f99bb2..1fc954da84c4 100644 --- a/public/language/rw/error.json +++ b/public/language/rw/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Tanga izina ukoresha n'ijambobanga", "invalid-search-term": "Icyashatswe nticyemewe", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Izina ryarafashwe mbere", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/rw/flags.json b/public/language/rw/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/rw/flags.json +++ b/public/language/rw/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/rw/global.json b/public/language/rw/global.json index 6be1ded2b05f..843702bf7186 100644 --- a/public/language/rw/global.json +++ b/public/language/rw/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Shyiramo nimero ya paji", "upload_file": "Pakira ifayilo", "upload": "Pakira", + "uploads": "Uploads", "allowed-file-types": "Ubwoko bw'amafayilo bwemewe ni %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/rw/modules.json b/public/language/rw/modules.json index 06120a2887a9..0ee19fd23d39 100644 --- a/public/language/rw/modules.json +++ b/public/language/rw/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "Iminsi 30", "chat.three_months": "Amezi 3", "chat.delete_message_confirm": "Wiringiye neza ko ushaka gusiba ubu butumwa?", - "chat.add-users-to-room": "Ongera abantu mu gikari", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Andika", "composer.show_preview": "Bona Uko Biza Gusa", "composer.hide_preview": "Hisha Uko Biza Gusa", diff --git a/public/language/rw/pages.json b/public/language/rw/pages.json index 06c69fe27a6f..c5f80d16afc9 100644 --- a/public/language/rw/pages.json +++ b/public/language/rw/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Ibiganiro byakunzwe na %1", "account/downvoted": "Ibiganiro byanzwe na %1", "account/best": "Ibihebuje byashyizweho na %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Yemejwe", "maintenance.text": "%1 ntiboneka kuko ubu iri gutunganywa. Muze kongera kugaruka. ", "maintenance.messageIntro": "Byongeye, kandi, umuyobozi yasize ubu butumwa: ", diff --git a/public/language/rw/register.json b/public/language/rw/register.json index aaf97ccaa467..f8c4d9aaa8e8 100644 --- a/public/language/rw/register.json +++ b/public/language/rw/register.json @@ -19,5 +19,8 @@ "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. ", "interstitial.intro": "We require some additional information before we can create your account.", - "interstitial.errors-found": "We could not complete your registration:" + "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 diff --git a/public/language/rw/topic.json b/public/language/rw/topic.json index 784113dabc62..762d5590883e 100644 --- a/public/language/rw/topic.json +++ b/public/language/rw/topic.json @@ -118,8 +118,8 @@ "sort_by": "Ubigaragaze Ukurikije", "oldest_to_newest": "Ibya Kera Ujya ku bya Vuba", "newest_to_oldest": "Ibya Vuba Ujya ku bya Kera", - "most_votes": "Amajwi yiganje", - "most_posts": "Ibyashyizweho byiganje", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Urashaka gutangiza ahubwo ikiganiro gishya?", "stale.warning": "Ikiganiro ushaka kuvugaho cyarashaje. Wahitamo gutangiza ikiganiro gishya ariko wenda ukagaragaza kino mu gisubizo uza gushyiraho?", "stale.create": "Tangiza ikiganiro gishya", @@ -127,5 +127,7 @@ "link_back": "Igisubizo: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/rw/uploads.json b/public/language/rw/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/rw/uploads.json +++ b/public/language/rw/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/rw/user.json b/public/language/rw/user.json index f4512ea4552c..02746c282c68 100644 --- a/public/language/rw/user.json +++ b/public/language/rw/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Abamukurikira", "following": "Akurikira", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Inshamake y'Ubuzima", "signature": "Intero", "birthday": "Itariki y'Amavuko", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Uyu muntu ntabwo arashima icyashyizweho na kimwe.", "has_no_downvoted_posts": "Uyu muntu ntabwo aragaya icyashizweho na kimwe. ", "has_no_voted_posts": "Uyu muntu ntabwo aragira ikintu yashimiwe gushyiraho", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Yahishwe", "hidden": "byahishwe", "paginate_description": "Gabanya ibiganiro n'ibyashyizweho mu ma paji aho kugirango umuntu ajye amanuka ubudahagarara ", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/sc/admin/extend/plugins.json b/public/language/sc/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/sc/admin/extend/plugins.json +++ b/public/language/sc/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/sc/admin/general/dashboard.json b/public/language/sc/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/sc/admin/general/dashboard.json +++ b/public/language/sc/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/sc/admin/settings/group.json b/public/language/sc/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/sc/admin/settings/group.json +++ b/public/language/sc/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/sc/admin/settings/notifications.json b/public/language/sc/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/sc/admin/settings/notifications.json +++ b/public/language/sc/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/sc/error.json b/public/language/sc/error.json index c2c5f521b6e2..be08aa503300 100644 --- a/public/language/sc/error.json +++ b/public/language/sc/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", "username-taken": "Username taken", @@ -145,5 +146,7 @@ "invalid-session": "Session Mismatch", "invalid-session-text": "It looks like your login session is no longer active, or no longer matches with the server. Please refresh this page.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/sc/flags.json b/public/language/sc/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/sc/flags.json +++ b/public/language/sc/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/sc/global.json b/public/language/sc/global.json index 8b1f0369e353..ad3f9dfc4391 100644 --- a/public/language/sc/global.json +++ b/public/language/sc/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Enter page number", "upload_file": "Upload file", "upload": "Upload", + "uploads": "Uploads", "allowed-file-types": "Allowed file types are %1", "unsaved-changes": "You have unsaved changes. Are you sure you wish to navigate away?", "reconnecting-message": "Looks like your connection to %1 was lost, please wait while we try to reconnect.", diff --git a/public/language/sc/modules.json b/public/language/sc/modules.json index cf615343f36a..75a41a031743 100644 --- a/public/language/sc/modules.json +++ b/public/language/sc/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 Days", "chat.three_months": "3 Months", "chat.delete_message_confirm": "Are you sure you wish to delete this message?", - "chat.add-users-to-room": "Add users to room", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Compose", "composer.show_preview": "Show Preview", "composer.hide_preview": "Hide Preview", diff --git a/public/language/sc/pages.json b/public/language/sc/pages.json index 52ce7479f661..cbc86cce3aff 100644 --- a/public/language/sc/pages.json +++ b/public/language/sc/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Posts upvoted by %1", "account/downvoted": "Posts downvoted by %1", "account/best": "Best posts made by %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Email Confirmed", "maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.", "maintenance.messageIntro": "Additionally, the administrator has left this message:", diff --git a/public/language/sc/register.json b/public/language/sc/register.json index 1588a83ad509..ace93cd27116 100644 --- a/public/language/sc/register.json +++ b/public/language/sc/register.json @@ -19,5 +19,8 @@ "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:" + "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 diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json index b02d644384f1..3200edddf7b6 100644 --- a/public/language/sc/topic.json +++ b/public/language/sc/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sort by", "oldest_to_newest": "Oldest to Newest", "newest_to_oldest": "Newest to Oldest", - "most_votes": "Most votes", - "most_posts": "Most posts", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Create new topic instead?", "stale.warning": "The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?", "stale.create": "Create a new topic", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/sc/uploads.json b/public/language/sc/uploads.json index 1622cb5693f4..651a83987697 100644 --- a/public/language/sc/uploads.json +++ b/public/language/sc/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Uploading the file...", "select-file-to-upload": "Select a file to upload!", "upload-success": "File uploaded successfully!", - "maximum-file-size": "Maximum %1 kb" + "maximum-file-size": "Maximum %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/sc/user.json b/public/language/sc/user.json index ed4a8b81e878..e622a3c341dc 100644 --- a/public/language/sc/user.json +++ b/public/language/sc/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Sighidores", "following": "Sighende", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "About me", "signature": "Firma", "birthday": "Cumpleannu", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "has_no_downvoted_posts": "This user hasn't downvoted any posts yet.", "has_no_voted_posts": "This user has no voted posts", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Email Cuada", "hidden": "cuadu", "paginate_description": "Paginate topics and posts instead of using infinite scroll", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/sk/admin/extend/plugins.json b/public/language/sk/admin/extend/plugins.json index 2b67320a7d29..cd8eb9e320ee 100644 --- a/public/language/sk/admin/extend/plugins.json +++ b/public/language/sk/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

Nebola nájdená žiadna informácia o kompatibilite

Toto rozšírenie nemá nastavenú požadovanú verziu NodeBB. Plná kompatibilita nemôže byť garantovaná a môže spôsobiť, že sa Vám už NodeBB nespustí.

Nespustí ak sa správne NodeBB:

 $ ./nodebb reset plugin = '% 1\"

Pokračovať v inštalácii tejto aktuálnej verzie rozšírenie?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/sk/admin/general/dashboard.json b/public/language/sk/admin/general/dashboard.json index cce872f7df84..bdb4b0218bc3 100644 --- a/public/language/sk/admin/general/dashboard.json +++ b/public/language/sk/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Zobrazenia stránok", "graphs.unique-visitors": "Unikátny navštevníci", "graphs.registered-users": "Zarestrovaný užívatelia", - "graphs.anonymous-users": "Neznámy užívatelia" + "graphs.anonymous-users": "Neznámy užívatelia", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/sk/admin/settings/group.json b/public/language/sk/admin/settings/group.json index 9b5c328f6b7d..e8f0ab485746 100644 --- a/public/language/sk/admin/settings/group.json +++ b/public/language/sk/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Ale pozor, ak je táto možnosť zakázaná a vy máte súkromné ​​skupiny, stanú sa automaticky verejnými.", "allow-creation": "Povoliť vytvorenie skupín", "allow-creation-help": "Ak je povolené, používatelia môžu vytvoriť skupiny (Predvolené: zakázané)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximálna dĺžka názvu skupiny", "cover-image": "Obrázok skupiny", "default-cover": "Predvolený obrázok", diff --git a/public/language/sk/admin/settings/notifications.json b/public/language/sk/admin/settings/notifications.json index 188130c1855c..4075053aa086 100644 --- a/public/language/sk/admin/settings/notifications.json +++ b/public/language/sk/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Oznámenia", "welcome-notification": "Uvítacie oznámenie", "welcome-notification-link": "Odkaz na uvítanie", - "welcome-notification-uid": "Uvítanie používateľa (UID)" + "welcome-notification-uid": "Uvítanie používateľa (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/sk/error.json b/public/language/sk/error.json index 5b67bd0081d7..b8bb938403f3 100644 --- a/public/language/sk/error.json +++ b/public/language/sk/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Prosím upresnite používateľské meno a heslo", "invalid-search-term": "Neplatný výraz pre vyhľadávanie", "invalid-url": "Neplatná URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Nie sme schopný Vás znova prihlásiť, pravdepodobne kvôli uplynutiu relácie. Zopakujte to neskôr prosím.", "invalid-pagination-value": "Neplatná stránkovania hodnota, musí byť najmenej %1 a najviac %2", "username-taken": "Užívateľské meno je už obsadené", @@ -145,5 +146,7 @@ "invalid-session": "Relácia neodpovedá", "invalid-session-text": "Vyzerá to, že Vaše prihlasovacia relácia už nie je aktívna, alebo sa už nezhoduje so serverom. Aktualizujte túto stránku.", "no-topics-selected": "Žiadne vybrané témy.", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/sk/flags.json b/public/language/sk/flags.json index 5d056ae58828..2b25f3f8ebe9 100644 --- a/public/language/sk/flags.json +++ b/public/language/sk/flags.json @@ -18,6 +18,7 @@ "filter-type": "Typ označenia", "filter-type-all": "Všetok obsah", "filter-type-post": "Príspevok", + "filter-type-user": "User", "filter-state": "Stav", "filter-assignee": "UID nadobúdateľa", "filter-cid": "Kategória", diff --git a/public/language/sk/global.json b/public/language/sk/global.json index b0a4376ab9ec..44391d381de9 100644 --- a/public/language/sk/global.json +++ b/public/language/sk/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Zadajte číslo stránky", "upload_file": "Nahrať súbor", "upload": "Nahrať", + "uploads": "Uploads", "allowed-file-types": "Povolené typy súborov sú %1", "unsaved-changes": "Máte neuložené zmeny. Ste si istý, že chcete opustiť stránku?", "reconnecting-message": "Vyzerá to tak, že pripojenie k %1 bolo stratené. Prosím chvíľku počkajte, snažíme sa pripojiť znovu.", diff --git a/public/language/sk/modules.json b/public/language/sk/modules.json index 38c20f865210..0c11f2189ddf 100644 --- a/public/language/sk/modules.json +++ b/public/language/sk/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dní", "chat.three_months": "3 mesiace", "chat.delete_message_confirm": "Ste si istý, že chcete odstrániť túto správu?", - "chat.add-users-to-room": "Pridať používateľa do miestnosti", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "Tento používateľ nastavil svoj stav na NERUŠIŤ. Naozaj chcete s ním začať konverzáciu?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Napísať", "composer.show_preview": "Zobraziť náhľad", "composer.hide_preview": "Skryť náhľad", diff --git a/public/language/sk/pages.json b/public/language/sk/pages.json index 3c78e60607a2..6b1bc60c8d06 100644 --- a/public/language/sk/pages.json +++ b/public/language/sk/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Príspevky, ktorým používateľ %1 dal hlas", "account/downvoted": "Nesúhlasí s príspevkom %1", "account/best": "Najlepšie príspevky vytvorené užívateľom %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "E-mail potvrdený", "maintenance.text": "%1 v súčasnej dobe prebieha údržba. Prosíme, vráťte sa neskôr.", "maintenance.messageIntro": "Správca, dodatočne zanechal túto správu:", diff --git a/public/language/sk/register.json b/public/language/sk/register.json index 5e9de07ddad4..529495e859ef 100644 --- a/public/language/sk/register.json +++ b/public/language/sk/register.json @@ -19,5 +19,8 @@ "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.", "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:" + "interstitial.errors-found": "Nepodarilo sa nám dokončiť Vašu registráciu:", + "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 diff --git a/public/language/sk/topic.json b/public/language/sk/topic.json index 7b585a9d8b2e..a310ce739e84 100644 --- a/public/language/sk/topic.json +++ b/public/language/sk/topic.json @@ -118,8 +118,8 @@ "sort_by": "Zoradiť podľa", "oldest_to_newest": "Od najstarších po najnovšie", "newest_to_oldest": "Od najnovších po najstaršie", - "most_votes": "Najviac hlasov", - "most_posts": "Najviac príspevkov", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Vytvoriť novú tému namiesto?", "stale.warning": "Téma na ktorú odpovedáte je pomerne stará. Chceli by ste vytvoriť novú tému namiesto tejto, a odkazovať na ňu vo Vašej odpovedi?", "stale.create": "Vytvoriť novú tému", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/sk/uploads.json b/public/language/sk/uploads.json index c77fcf346cd6..da5f71b39963 100644 --- a/public/language/sk/uploads.json +++ b/public/language/sk/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Nahrávanie súboru...", "select-file-to-upload": "Vyberte súbor, ktorý chcete nahrať.", "upload-success": "Súbor bol úspešne nahraný!", - "maximum-file-size": "Maximálne %1 kb" + "maximum-file-size": "Maximálne %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/sk/user.json b/public/language/sk/user.json index 58e3ef94a799..bbf0af80c4ac 100644 --- a/public/language/sk/user.json +++ b/public/language/sk/user.json @@ -29,6 +29,8 @@ "ignored": "Ignorovaný", "followers": "Nasledovatelia", "following": "Nasleduje", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "O mne", "signature": "Podpis", "birthday": "Dátum narodenia", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Tento užívateľ doteraz nedal hlas žiadnemu príspevku.", "has_no_downvoted_posts": "Tento užívateľ doteraz neodobral hlas žiadnemu príspevku.", "has_no_voted_posts": "Tento užívateľ nemá žiadne príspevky s hlasmi", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Skrytý e-mail", "hidden": "skrytý", "paginate_description": "Očíslovať témy a príspevky namiesto používania nekonečného rolovania", @@ -142,5 +145,25 @@ "info.email-history": "Hitória e-mailu", "info.moderation-note": "Zmierňujúca poznámka", "info.moderation-note.success": "Zmierňujúca poznámka nebola uložená", - "info.moderation-note.add": "Pridať poznámku" + "info.moderation-note.add": "Pridať poznámku", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/sl/admin/extend/plugins.json b/public/language/sl/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/sl/admin/extend/plugins.json +++ b/public/language/sl/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/sl/admin/general/dashboard.json b/public/language/sl/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/sl/admin/general/dashboard.json +++ b/public/language/sl/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/sl/admin/settings/group.json b/public/language/sl/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/sl/admin/settings/group.json +++ b/public/language/sl/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/sl/admin/settings/notifications.json b/public/language/sl/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/sl/admin/settings/notifications.json +++ b/public/language/sl/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/sl/error.json b/public/language/sl/error.json index 7b4f713a334b..a4be6374e4b8 100644 --- a/public/language/sl/error.json +++ b/public/language/sl/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Prosimo, vpišite uporabniško ime in geslo.", "invalid-search-term": "Napačen iskalni izraz", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Prijava ni mogoča, verjetno zaradi potekle seje. Poskusite znova.", "invalid-pagination-value": "Napačna vrednost za številčenje strani. Vrednost mora biti najmanj %1 in največ %2.", "username-taken": "Uporabniško ime je že zasedeno.", @@ -145,5 +146,7 @@ "invalid-session": "Seje se ne ujemajo.", "invalid-session-text": "Kaže, da vaša prijavna seja ni več aktiva. Prosimo, osvežite to stran.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/sl/flags.json b/public/language/sl/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/sl/flags.json +++ b/public/language/sl/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/sl/global.json b/public/language/sl/global.json index 330695e9c3f6..3782be52ca0a 100644 --- a/public/language/sl/global.json +++ b/public/language/sl/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Vnesi številko strani", "upload_file": "Prenesi datoteko", "upload": "Prenos", + "uploads": "Uploads", "allowed-file-types": "Dovoljene vrste datotek: %1", "unsaved-changes": "Nekatere spremembe niso shranjene. A res želite zapustiti stran?", "reconnecting-message": "Kaže, da je bila povezava s/z %1 prekinjena. Prosimo, počakajte, ponovno poskušamo vzpostaviti povezavo.", diff --git a/public/language/sl/modules.json b/public/language/sl/modules.json index 7ae7d493c09f..ffeac0323a38 100644 --- a/public/language/sl/modules.json +++ b/public/language/sl/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dni", "chat.three_months": "3 meseci", "chat.delete_message_confirm": "Ali ste prepričani, da želite izbrisati to sporočilo?", - "chat.add-users-to-room": "Dodaj uporabnike v sobo.", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Sestavljanje", "composer.show_preview": "Pokaži predogled", "composer.hide_preview": "Skrij predogled", diff --git a/public/language/sl/pages.json b/public/language/sl/pages.json index 718c0c13dc06..4bc485f5cf3b 100644 --- a/public/language/sl/pages.json +++ b/public/language/sl/pages.json @@ -49,6 +49,8 @@ "account/upvoted": " Objave uporabnika %1 z glasovi za", "account/downvoted": "Objave uporabnika %1 z glasovi proti", "account/best": "Najboljše objave uporabnika %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "E-pošta potrjena", "maintenance.text": "%1 je trenutno v vzdrževanju.", "maintenance.messageIntro": "Dodatno vam je skrbnik pustil tole sporočilo:", diff --git a/public/language/sl/register.json b/public/language/sl/register.json index 9f595a5de4ee..f0d67e54002b 100644 --- a/public/language/sl/register.json +++ b/public/language/sl/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Preden ustvarimo vaš račun, potrebujemo nekaj dodatnih informacij.", - "interstitial.errors-found": "Vaše registracije ne moremo dokončati:" + "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.", + "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 diff --git a/public/language/sl/topic.json b/public/language/sl/topic.json index c472561b4cb5..466ed446d37f 100644 --- a/public/language/sl/topic.json +++ b/public/language/sl/topic.json @@ -118,8 +118,8 @@ "sort_by": "Razvrsti po", "oldest_to_newest": "Od starejšega do novejšega", "newest_to_oldest": "Od novejšega do starejšega", - "most_votes": "Največ glasov", - "most_posts": "Največ objav", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Raje ustvari novo temo?", "stale.warning": "Tema na katero odgovarjaš je precej stara. A ne bi raje ustvaril novo temo namesto te, z sklicem na to v tvojem odgovoru?", "stale.create": "Ustvari novo temo", @@ -127,5 +127,7 @@ "link_back": "Odg: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/sl/uploads.json b/public/language/sl/uploads.json index 85ee20d0c2b4..06b722a95f95 100644 --- a/public/language/sl/uploads.json +++ b/public/language/sl/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Prenašanje datoteke ...", "select-file-to-upload": "Izberete datoteko, ki jo želite prenesti!", "upload-success": "Datoteka je bila uspešno prenesena!", - "maximum-file-size": "Največ %1 kb " + "maximum-file-size": "Največ %1 kb ", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/sl/user.json b/public/language/sl/user.json index f130e974800a..c4ce961d7e04 100644 --- a/public/language/sl/user.json +++ b/public/language/sl/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Spremljevalci", "following": "Spremljano", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "O meni", "signature": "Podpis", "birthday": "Rojstni datum", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Uporabnik še ni glasoval za nobeno objavo.", "has_no_downvoted_posts": "Uporabnik še ni glasoval proti nobeni objavi.", "has_no_voted_posts": "Uporabnik nima glasovanih objav", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Skrit e-poštni naslov", "hidden": "skrit", "paginate_description": "Uporabi oštevilčenje strani namesto neskončnega drsenja", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/sr/admin/extend/plugins.json b/public/language/sr/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/sr/admin/extend/plugins.json +++ b/public/language/sr/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/sr/admin/general/dashboard.json b/public/language/sr/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/sr/admin/general/dashboard.json +++ b/public/language/sr/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/sr/admin/settings/group.json b/public/language/sr/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/sr/admin/settings/group.json +++ b/public/language/sr/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/sr/admin/settings/notifications.json b/public/language/sr/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/sr/admin/settings/notifications.json +++ b/public/language/sr/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/sr/error.json b/public/language/sr/error.json index 6cd9e2f0b00c..b6328166a63c 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Молимо наведите и корисничко име и лозинку", "invalid-search-term": "Неисправан упит за претрагу", "invalid-url": "Неважећа адреса", + "local-login-disabled": "Локални систем за пријављивање је онемогућен за непривилеговане налоге.", "csrf-invalid": "Нисмо успели да вас пријавимо, вероватно због истека сесије. Молимо покушајте поново", "invalid-pagination-value": "Неважећа вредност приликом нумерисања страница, мора бити најмање %1 а највише %2 ", "username-taken": "Корисничко име је заузето", @@ -145,5 +146,7 @@ "invalid-session": "Неподударање сесија", "invalid-session-text": "Изгледа да ваша сесија пријављивања није више активна или се више не подудара са сервером. Поново учитајте ову страницу.", "no-topics-selected": "Нема одабраних тема!", - "cant-move-to-same-topic": "Није могуће преместити поруку у исту тему!" + "cant-move-to-same-topic": "Није могуће преместити поруку у исту тему!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/sr/flags.json b/public/language/sr/flags.json index 4832d028406b..f071885b4ba3 100644 --- a/public/language/sr/flags.json +++ b/public/language/sr/flags.json @@ -18,6 +18,7 @@ "filter-type": "Тип заставице", "filter-type-all": "Сав садржај", "filter-type-post": "Порука", + "filter-type-user": "Корисник", "filter-state": "Стање", "filter-assignee": "UID заступника", "filter-cid": "Категорија", diff --git a/public/language/sr/global.json b/public/language/sr/global.json index 67af5df92932..be71c2e2f392 100644 --- a/public/language/sr/global.json +++ b/public/language/sr/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Унесите број странице", "upload_file": "Отпреми датотеку", "upload": "Отпреми", + "uploads": "Отпремања", "allowed-file-types": "Дозвољени типови датотека су %1", "unsaved-changes": "Имате несачуване промене. Да ли сте сигурни да желите да наставите?", "reconnecting-message": "Изгледа да је ваша веза ка %1 изгубљена, сачекајте док поново не успоставимо везу.", diff --git a/public/language/sr/modules.json b/public/language/sr/modules.json index 9788089afc58..7eb784c3dd0e 100644 --- a/public/language/sr/modules.json +++ b/public/language/sr/modules.json @@ -20,10 +20,9 @@ "chat.thirty_days": "30 дана", "chat.three_months": "3 месеца", "chat.delete_message_confirm": "Да ли сте сигурни да желите да избришете ову поруку?", - "chat.add-users-to-room": "Додајте кориснике у собу", "chat.retrieving-users": "Преузимање корисника...", "chat.manage-room": "Управљај собама за ћаскање", - "chat.add-user-help": "Потражите кориснике овде. Када буде изабран, корисник ће бити додан у ћаскање. Нови корисник неће бити у могућности да види поруке написане пре него што је додан у преписку.", + "chat.add-user-help": "Потражите кориснике овде. Када буде изабран, корисник ће бити додан у ћаскање. Нови корисник неће бити у могућности да види поруке написане пре него што је додан у преписку. Само власници соба могу уклонити кориснике из соба за ћаскање.", "chat.confirm-chat-with-dnd-user": "Овај корисник је поставио свој статус на \"Не узнемиравај\". Да ли и даље желите да ћаскате са њим?", "chat.rename-room": "Преименуј собу", "chat.rename-placeholder": "Унесите назив собе овде", @@ -32,6 +31,7 @@ "chat.leave-prompt": "Да ли сте сигурни да желите да напустите ово ћаскање?", "chat.leave-help": "Напуштање овог ћаскања ће вас уклонити из будућих преписки у овом ћаскању. Ако будете поново додани у будућности, нећете видети историју ћаскања од пре вашег поновног придруживања.", "chat.in-room": "У овој соби", + "chat.kick": "Избаци", "composer.compose": "Писање поруке", "composer.show_preview": "Прикажи преглед", "composer.hide_preview": "Сакриј преглед", diff --git a/public/language/sr/pages.json b/public/language/sr/pages.json index 9b902290aa29..820e9bba11c8 100644 --- a/public/language/sr/pages.json +++ b/public/language/sr/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Поруке које је позитивно гласао %1", "account/downvoted": "Поруке које је негативно гласао %1", "account/best": "Најбоље поруке од %1", + "account/blocks": "Корисници које је блокирао %1", + "account/uploads": "Отпремио %1", "confirm": "Е-пошта је потврђена.", "maintenance.text": "%1 је тренутно у фази одржавања. Молимо, навратите касније.", "maintenance.messageIntro": "Додатно, администратор је оставио ову поруку:", diff --git a/public/language/sr/register.json b/public/language/sr/register.json index d955cfe0209e..e02ca0235352 100644 --- a/public/language/sr/register.json +++ b/public/language/sr/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "Морате се сложити са условима коришћења", "registration-added-to-queue": "Ваша регистрација је додата у ред одобравања. Добићете е-пошту када администратор прихвати вашу регистрацију.", "interstitial.intro": "Захтевамо неке додатне информације пре него што отворимо ваш налог.", - "interstitial.errors-found": "Нисмо могли комплетирати вашу регистрацију:" + "interstitial.errors-found": "Нисмо могли комплетирати вашу регистрацију:", + "gdpr_agree_data": "Пристајем на прикупљање и обраду мојих личних података на овој веб страници.", + "gdpr_agree_email": "Пристајем на примање сажетака и обавештења путем е-поште са ове веб странице.", + "gdpr_consent_denied": "Морате дати пристанак овом сајту да прикупља/обрађује ваше информације и да вам шаље е-пошту." } \ No newline at end of file diff --git a/public/language/sr/topic.json b/public/language/sr/topic.json index 2d0e568291f2..a20283f4f0d7 100644 --- a/public/language/sr/topic.json +++ b/public/language/sr/topic.json @@ -118,8 +118,8 @@ "sort_by": "Поређај", "oldest_to_newest": "Од старијих ка новијим", "newest_to_oldest": "Од новијих ка старијим", - "most_votes": "По броју гласова", - "most_posts": "По броју порука", + "most_votes": "Највише гласова", + "most_posts": "Највише порука", "stale.title": "Креирати нову тему уместо тога?", "stale.warning": "Тема у којој желите да одговорите је сувише стара. Да ли желите да уместо тога креирате нову тему и упутите на ову у вашем одговору?", "stale.create": "Креирај нову тему", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Историја уређивања поруке", "diffs.description": "Ова порука има %1 корекција. Кликните на једну од корекција да бисте видели садржај поруке у том тренутку.", - "diffs.no-revisions-description": "Ова порука има %1 корекција." + "diffs.no-revisions-description": "Ова порука има %1 корекција.", + "diffs.current-revision": "тренутна корекција", + "diffs.original-revision": "оригинална корекција" } \ No newline at end of file diff --git a/public/language/sr/uploads.json b/public/language/sr/uploads.json index 5949e1c503dd..5619438c377b 100644 --- a/public/language/sr/uploads.json +++ b/public/language/sr/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Отпремање датотеке...", "select-file-to-upload": "Изаберите датотеку за отпремање!", "upload-success": "Датотека је успешно отпремљена!", - "maximum-file-size": "Највише %1 kb" + "maximum-file-size": "Највише %1 kb", + "no-uploads-found": "Нема пронађених отпремања", + "public-uploads-info": "Отпремања су јавна, сви посетиоци их могу видети.", + "private-uploads-info": "Отпремања си приватна, само пријављени корисници их могу видети." } \ No newline at end of file diff --git a/public/language/sr/user.json b/public/language/sr/user.json index f6432ba99021..22b9351b4df5 100644 --- a/public/language/sr/user.json +++ b/public/language/sr/user.json @@ -29,6 +29,8 @@ "ignored": "Игнорисано", "followers": "Пратиоци", "following": "Праћења", + "blocks": "Блокирања", + "block_toggle": "Блокирај/одблокирај", "aboutme": "О мени", "signature": "Потпис", "birthday": "Рођендан", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Овај корисник још увек није позитивно гласао за неку поруку.", "has_no_downvoted_posts": "Овај корисник још увек није негативно гласао за неку поруку.", "has_no_voted_posts": "Овај корисник нема објаве за које се гласало.", + "has_no_blocks": "Нисте блокирали ниједног корисника", "email_hidden": "Скривена е-пошта", "hidden": "скривена", "paginate_description": "Нумериши теме и странице уместо бесконачног скроловања", @@ -142,5 +145,25 @@ "info.email-history": "Историја е-поште", "info.moderation-note": "Белешка модерације", "info.moderation-note.success": "Белешка модерације је сачувана", - "info.moderation-note.add": "Додај белешку" + "info.moderation-note.add": "Додај белешку", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Извези профил (.csv)", + "consent.export_uploads": "Извези отпремљени садржај (.zip)", + "consent.export_posts": "Извези поруке (.csv)" } \ No newline at end of file diff --git a/public/language/sv/admin/extend/plugins.json b/public/language/sv/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/sv/admin/extend/plugins.json +++ b/public/language/sv/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/sv/admin/general/dashboard.json b/public/language/sv/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/sv/admin/general/dashboard.json +++ b/public/language/sv/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/sv/admin/settings/group.json b/public/language/sv/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/sv/admin/settings/group.json +++ b/public/language/sv/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/sv/admin/settings/notifications.json b/public/language/sv/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/sv/admin/settings/notifications.json +++ b/public/language/sv/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/sv/error.json b/public/language/sv/error.json index 7e5f55e81796..beb842652358 100644 --- a/public/language/sv/error.json +++ b/public/language/sv/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Specificera både användarnamn och lösenord", "invalid-search-term": "Ogiltig sökterm", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Det gick inte att logga in dig, sannolikt på grund av en utgången session. Var god försök igen", "invalid-pagination-value": "Ogiltigt värde för siduppdelning. Värdet måste vara mellan %1 och %2", "username-taken": "Användarnamn upptaget", @@ -145,5 +146,7 @@ "invalid-session": "Session fel", "invalid-session-text": "Det ser ut som din inloggningssession inte längre är aktiv eller inte längre överensstämmer med servern. Uppdatera denna sida.", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/sv/flags.json b/public/language/sv/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/sv/flags.json +++ b/public/language/sv/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/sv/global.json b/public/language/sv/global.json index 1840003b1126..a66a996b3497 100644 --- a/public/language/sv/global.json +++ b/public/language/sv/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Skriv in sidnummer", "upload_file": "Ladda upp en fil", "upload": "Ladda upp", + "uploads": "Uploads", "allowed-file-types": "Tillåtna filtyper är %1", "unsaved-changes": "Du har ändringar som inte sparats. Är du säker på att du vill navigera bort?", "reconnecting-message": "Ser ut som din anslutning till %1 gick förlorad, vänta medan vi försöker att återansluta.", diff --git a/public/language/sv/modules.json b/public/language/sv/modules.json index 33df5c183c6b..d35b13cb7ca7 100644 --- a/public/language/sv/modules.json +++ b/public/language/sv/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 dagar", "chat.three_months": "3 månader", "chat.delete_message_confirm": "Är du säker på att du vill radera det här meddelandet?", - "chat.add-users-to-room": "Addera användare till rum", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Komponera", "composer.show_preview": "Visa förhandsgranskning", "composer.hide_preview": "Dölj förhandsgranskning", diff --git a/public/language/sv/pages.json b/public/language/sv/pages.json index 22c215fe946e..a6f1fdf6026b 100644 --- a/public/language/sv/pages.json +++ b/public/language/sv/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Inlägg som röstats upp av %1", "account/downvoted": "Inlägg som röstats ned av %1", "account/best": "Bästa inläggen skapade av %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "E-postadress bekräftad", "maintenance.text": "%1 genomgår underhåll just nu. Vänligen kom tillbaka lite senare.", "maintenance.messageIntro": "Utöver det så lämnade administratören följande meddelande:", diff --git a/public/language/sv/register.json b/public/language/sv/register.json index b10cc3551f63..1d8c40430700 100644 --- a/public/language/sv/register.json +++ b/public/language/sv/register.json @@ -19,5 +19,8 @@ "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.", "interstitial.intro": "Vi kräver ytterligare information innan vi kan skapa ditt konto.", - "interstitial.errors-found": "Vi kunde inte slutföra din registrering:" + "interstitial.errors-found": "Vi kunde inte slutföra din registrering:", + "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 diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json index 709495b9ded1..be85289882d7 100644 --- a/public/language/sv/topic.json +++ b/public/language/sv/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sortera på", "oldest_to_newest": "Äldst till nyaste", "newest_to_oldest": "Nyaste till äldst", - "most_votes": "Flest röster", - "most_posts": "Flest inlägg", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Skapa nytt ämne istället?", "stale.warning": "Ämnet du svarar på är ganska gammalt. Vill du skapa ett nytt ämne istället och inkludera en referens till det här ämnet i ditt inlägg?", "stale.create": "Skapa nytt ämne", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/sv/uploads.json b/public/language/sv/uploads.json index 4546acd888e0..f94d1acf0c19 100644 --- a/public/language/sv/uploads.json +++ b/public/language/sv/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Laddar upp filen...", "select-file-to-upload": "Välj en fil att ladda upp!", "upload-success": "Filen laddades upp!", - "maximum-file-size": "Maximalt %1 kb" + "maximum-file-size": "Maximalt %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/sv/user.json b/public/language/sv/user.json index be267a7c812f..864e04e45b30 100644 --- a/public/language/sv/user.json +++ b/public/language/sv/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "Följare", "following": "Följer", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Om mig", "signature": "Signatur", "birthday": "Födelsedag", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Den här användaren har inte röstat upp några inlägg än.", "has_no_downvoted_posts": "Den här användaren har inte röstat ned några inlägg än.", "has_no_voted_posts": "Den här användaren har inga inlägg med röster", + "has_no_blocks": "You have blocked no users.", "email_hidden": "E-post dold", "hidden": "dold", "paginate_description": "Gör så att ämnen och inlägg visas som sidor istället för oändlig skroll", @@ -142,5 +145,25 @@ "info.email-history": "Epost historik", "info.moderation-note": "Moderations anteckning", "info.moderation-note.success": "Moderations anteckning sparad", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/th/admin/extend/plugins.json b/public/language/th/admin/extend/plugins.json index 1f0ade6cd793..fbfbc28df107 100644 --- a/public/language/th/admin/extend/plugins.json +++ b/public/language/th/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB ไม่สามารถติดต่อตัวจัดการแพคเกจได้ในขณะนี้เราไม่แนะนำให้อัปเกรด

", "alert.incompatible": "เวอร์ชันของ NodeBB (v%1) จะถูกล้างเพื่อให้มีการอัพเกรดไป v%2 ของปลั๊กอินนี้ โปรดอัปเดต NodeBB ของคุณหากคุณต้องการติดตั้งปลั๊กอินเวอร์ชันใหม่นี้

", "alert.possibly-incompatible": "

ไม่พบข้อมูลความเข้ากันได้

ปลั๊กอินนี้ไม่ได้ระบุเวอร์ชันเฉพาะสำหรับการติดตั้งที่ให้เวอร์ชัน NodeBB ของคุณ ไม่สามารถรับประกันความสามารถในการใช้งานร่วมกันได้เต็มรูปแบบและอาจทำให้ NodeBB ของคุณทำงานไม่ได้อย่างถูกต้องอีกต่อไป

ในกรณีที่ NodeBB ไม่สามารถบูตได้อย่างถูกต้อง:

$ ./nodebb reset plugin=\"%1\"

ติดตั้งปลั๊กอินนี้เวอร์ชันล่าสุดต่อหรือไม่?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "ข้อมูลลิขสิทธิ์ปลั๊กอิน", "license.intro": "ปลั๊กอิน %1ได้รับอนุญาตภายใต้ %2 โปรดอ่านและทำความเข้าใจข้อกำหนดสิทธิ์การใช้งานก่อนเปิดใช้งานปลั๊กอินนี้", diff --git a/public/language/th/admin/general/dashboard.json b/public/language/th/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/th/admin/general/dashboard.json +++ b/public/language/th/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/th/admin/settings/group.json b/public/language/th/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/th/admin/settings/group.json +++ b/public/language/th/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/th/admin/settings/notifications.json b/public/language/th/admin/settings/notifications.json index c2f5b8b9b9d4..1a9d5ddf8803 100644 --- a/public/language/th/admin/settings/notifications.json +++ b/public/language/th/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "การแจ้งเตือน", "welcome-notification": "การยินดีต้อนรับแจ้งเตือน", "welcome-notification-link": "ลิงค์การยินดีต้อนรับแจ้งเตือน", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/th/error.json b/public/language/th/error.json index b48eaeae5824..6415329a2cce 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "กรุณาระบุชื่อผู้ใช้และรหัสผ่าน", "invalid-search-term": "ข้อความค้นหาไม่ถูกต้อง", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "เราไม่สามารถนำท่านเข้าสู่ระบบได้ เหมือนกับว่าเซสชั่นหมดอายุแล้ว กรุณาลองใหม่อีกครั้ง", "invalid-pagination-value": "หมายเลขหน้าไม่ถูกต้อง จำเป็นต้องเป็นตัวเลขอย่างน้อย %1 และอย่างมาก %2", "username-taken": "ชื่อผู้ใช้นี้มีการใช้แล้ว", @@ -145,5 +146,7 @@ "invalid-session": "เซสชั่นไม่ถูกต้อง", "invalid-session-text": "เหมือนกับว่าการเข้าสู่ระบบของคุณไม่ได้มีอยู่ในระบบ หรือไม่ก็ไม่ได้รับการตอบกลับจากเซิร์ฟเวอร์ กรุณารีเฟรชหน้าเว็บนี้", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/th/flags.json b/public/language/th/flags.json index cc2f58947b6a..d2acc0069738 100644 --- a/public/language/th/flags.json +++ b/public/language/th/flags.json @@ -18,6 +18,7 @@ "filter-type": "ประเภทการปักธง", "filter-type-all": "เนื้อหาทั้งหมด", "filter-type-post": "โพสต์", + "filter-type-user": "User", "filter-state": "สถานะ", "filter-assignee": "ผู้ได้รับมอบหมาย", "filter-cid": "หมวดหมู่", diff --git a/public/language/th/global.json b/public/language/th/global.json index 86a59087d461..e37a98ad1107 100644 --- a/public/language/th/global.json +++ b/public/language/th/global.json @@ -97,6 +97,7 @@ "enter_page_number": "กรอกหมายเลขหน้า", "upload_file": "อัพโหลดไฟล์", "upload": "อัพโหลด", + "uploads": "Uploads", "allowed-file-types": "ประเภทไฟล์ที่ได้รับการอนุญาติคือ %1", "unsaved-changes": "การเปลี่ยนแปลงของคุณจะไม่ได้รับการบันทึก คุณแน่ใจหรือว่าต้องการออกจากที่นี่?", "reconnecting-message": "เหมือนกับว่าการเชื่อมต่อของคุณเพื่อไปยัง %1 นั้นขาดหาย กรุณารอสักครู่ เรากำลังพยายามเชื่อมต่อใหม่", diff --git a/public/language/th/modules.json b/public/language/th/modules.json index 6bbfa9637480..2d27e02e5fce 100644 --- a/public/language/th/modules.json +++ b/public/language/th/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 วัน", "chat.three_months": "3 เดือน", "chat.delete_message_confirm": "คุณแน่ใจแล้วใช่ไหมว่าต้องการจะลบข้อความนี้?", - "chat.add-users-to-room": "เพิ่มผู้ใช้เข้ามาในห้องแชท", "chat.retrieving-users": "กำลังเรียกข้อมูลผู้ใช้", "chat.manage-room": "จัดการห้องแชท", - "chat.add-user-help": "ค้นหาผู้ใช้ที่นี่ เมื่อเลือกผู้ใช้จะถูกเพิ่มลงในการแชท ผู้ใช้ใหม่จะไม่สามารถเห็นข้อความแชทที่เขียนขึ้นก่อนที่จะถูกเพิ่มเข้าไปในการสนทนา", + "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.confirm-chat-with-dnd-user": "ผู้ใช้นี้ได้ตั้งค่าสถานะเป็น (ห้ามรบกวน) คุณยังอยากจะคุยกับเขาอยู่ไหม?", - "chat.rename-room": "เปลี่ยนชื่อห้อง", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "ใส่ชื่อห้องของคุณที่นี่", "chat.rename-help": "ชื่อห้องจะสามารถดูได้โดยผู้เข้าร่วมทั้งหมดในห้อง", "chat.leave": "ออกแชท", "chat.leave-prompt": "คุณแน่ใจหรือไม่ว่าต้องการออกจากการแชทนี้", "chat.leave-help": "การออกจากการแชทนี้จะเป็นการลบคุณออกจากการติดต่อในอนาคตในการแชทนี้ หากคุณถูกเพิ่มเข้ามาใหม่ในอนาคตคุณจะไม่เห็นประวัติการแชทก่อนที่จะเข้าร่วมใหม่", "chat.in-room": "ในห้องนี้", + "chat.kick": "Kick", "composer.compose": "เขียน", "composer.show_preview": "แสดงพรีวิว", "composer.hide_preview": "ซ่อนพรีวิว", diff --git a/public/language/th/pages.json b/public/language/th/pages.json index f3d1333009a6..c1e89da7180d 100644 --- a/public/language/th/pages.json +++ b/public/language/th/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "โพสต์ที่ถูกโหวตขึ้นโดย %1", "account/downvoted": "โพสต์ที่โหวตลงโดย %1", "account/best": "โพสต์ดีที่สุดที่ถูกสร้างโดย %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "อีเมล์ได้รับการยืนยันแล้ว", "maintenance.text": "%1 กำลังอยู่ระหว่างการปิดปรับปรุงชั่วคราว กรุณาลองใหม่อีกครั้งในภายหลัง", "maintenance.messageIntro": "ผู้ดูแลระบบได้ฝากข้อความต่อไปนี้เอาไว้", diff --git a/public/language/th/register.json b/public/language/th/register.json index bf51eefb19c2..b2aa037eb587 100644 --- a/public/language/th/register.json +++ b/public/language/th/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "คุณต้องยอมรับเงื่อนไขการใช้งานก่อน", "registration-added-to-queue": "การสมัครใช้งานของถูกเพิ่มเข้าไปยังระบบเพิ่อรอการอนุมัติแล้ว คุณจะได้รับอีเมล์เมื่อการสมัครใช้งานของคุณถูกยอมรับโดยผู้ดูแลระบบหรือแอดมิน", "interstitial.intro": "เราต้องการข้อมูลบางอย่างเพิ่มเติมก่อนที่เราจะสร้างบัญชีให้คุณ", - "interstitial.errors-found": "เราไม่สามารถทำให้การสมัครสมาชิกของคุณสำเร็จได้:" + "interstitial.errors-found": "เราไม่สามารถทำให้การสมัครสมาชิกของคุณสำเร็จได้:", + "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 diff --git a/public/language/th/topic.json b/public/language/th/topic.json index c20c123771cc..cb442efbb124 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -118,8 +118,8 @@ "sort_by": "เรียงตาม", "oldest_to_newest": "เก่าสุดไปยังใหม่สุด", "newest_to_oldest": "ใหม่สุดไปยังเก่าสุด", - "most_votes": "โหวตมากสุด", - "most_posts": "โพสต์มากสุด", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "ตั้งกระทู้ใหม่แทนไหม?", "stale.warning": "กระทู้ที่คุณกำลังตอบเก่าไปหน่อยนะ อยากจะลองตั้งกระทู้ใหม่แทนไหมล่ะ? แล้วก็อ้างอิงกระทู้นี้ไปยังคำตอบของคุณ", "stale.create": "ตั้งกระทู้ใหม่", @@ -127,5 +127,7 @@ "link_back": "ตอบกลับ: [%1](%2)", "diffs.title": "แก้ไขประวัติโพสต์", "diffs.description": "โพสนี้มี %1 การแก้ไข คลิกที่การแก้ไขด้านล่างเพื่อดูเนื้อหาโพสต์ตามเวลาที่เลือก", - "diffs.no-revisions-description": "โพสนี้มี %1การแก้ไข" + "diffs.no-revisions-description": "โพสนี้มี %1การแก้ไข", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/th/uploads.json b/public/language/th/uploads.json index b43c5bcae6de..8b189723fb86 100644 --- a/public/language/th/uploads.json +++ b/public/language/th/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "กำลังอัพโหลดไฟล์ ...", "select-file-to-upload": "กรุณาเลือกไฟล์ที่จะอัพโหลด", "upload-success": "อัพโหลดไฟล์เรียบร้อยแล้ว", - "maximum-file-size": "มากที่สุดได้ %1 kb" + "maximum-file-size": "มากที่สุดได้ %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/th/user.json b/public/language/th/user.json index c9c64ec5b8f0..878afe0a5ace 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -29,6 +29,8 @@ "ignored": "ยกเว้นแล้ว", "followers": "คนติดตาม", "following": "ติดตาม", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "เกี่ยวกับฉัน", "signature": "ลายเซ็น", "birthday": "วันเกิด", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "ผู้ใช้นี้ไม่ได้โหวตขึ้นให้ข้อความใดๆ", "has_no_downvoted_posts": "ผู้ใช้นี้ไม่ได้โหวตลงให้ข้อความใดๆ", "has_no_voted_posts": "ผู้ใช้นี้ไม่เคยโหวตข้อความ", + "has_no_blocks": "You have blocked no users.", "email_hidden": "ซ่อนอีเมล", "hidden": "ซ่อน", "paginate_description": "ใช้การแบ่งหน้ากระทู้และข้อความแทนการเลื่อนต่อเรื่อยๆ", @@ -142,5 +145,25 @@ "info.email-history": "ประวัติอีเมล์", "info.moderation-note": "โน๊ตของ Moderation", "info.moderation-note.success": "โน้ตของ Moderation ถูกบันทึกแล้ว", - "info.moderation-note.add": "เพิ่มโน้ต" + "info.moderation-note.add": "เพิ่มโน้ต", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/tr/admin/appearance/customise.json b/public/language/tr/admin/appearance/customise.json index a561e586415b..a09fe5dc5e41 100644 --- a/public/language/tr/admin/appearance/customise.json +++ b/public/language/tr/admin/appearance/customise.json @@ -1,14 +1,14 @@ { "custom-css": "Özel CSS/LESS", - "custom-css.description": "Enter your own CSS/LESS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS/LESS", + "custom-css.description": "Diğer tüm stillerden sonra uygulanacak kendi CSS/LESS kodlarınızı buraya girin.", + "custom-css.enable": "Özelleştirilmiş CSS/LESS kullan", "custom-js": "Özel Javascript", - "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", - "custom-js.enable": "Enable Custom Javascript", + "custom-js.description": "Buraya kendi javascript'inizi girin. Sayfa tamamen yüklendikten sonra çalışır.", + "custom-js.enable": "Özelleştirilmiş Javascript'i etkinleştir", "custom-header": "Özel Header", - "custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <head> section of your forum's markup. Script tags are allowed, but are discouraged, as the Custom Javascript tab is available.", + "custom-header.description": "Forumunuzun <head> bölümüne eklenecek özel HTML'yi buraya girin (örn. Meta Etiketler, vb.). Komut dosyası etiketlerine bu alanda izin verilse de, önerilmez Özelleştirilmiş Javascript bu iş için daha uygundur.", "custom-header.enable": "Özel Header'ı Etkinleştir", "custom-css.livereload": "Canlı Yenilemeyi Etkinleştir", diff --git a/public/language/tr/admin/appearance/themes.json b/public/language/tr/admin/appearance/themes.json index 51f0e7b969d6..4701ba323533 100644 --- a/public/language/tr/admin/appearance/themes.json +++ b/public/language/tr/admin/appearance/themes.json @@ -7,5 +7,5 @@ "revert-confirm": "Varsayılan NodeBB temasını geri yüklemek istediğinizden emin misiniz?", "theme-changed": "Tema Değiştirildi", "revert-success": "NodeBB'nin varsayılan temasına başarıyla geri dönüş yaptınız.", - "restart-to-activate": "Please rebuild and restart your NodeBB to fully activate this theme." + "restart-to-activate": "68/5000\nBu temayı tamamen etkinleştirmek için NodeBB'nizi lütfen yeniden oluşturun ve yeniden başlatın." } \ No newline at end of file diff --git a/public/language/tr/admin/extend/plugins.json b/public/language/tr/admin/extend/plugins.json index 95e98bbad668..f9865adf47b2 100644 --- a/public/language/tr/admin/extend/plugins.json +++ b/public/language/tr/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB paket yöneticisine ulaşamadı, şu anda bir yükseltme önerilmedi.

", "alert.incompatible": "

NodeBB sürümünüz (v%1) bu eklentinin v%2 sürümüne yükseltilmesi için temizlendi. Bu eklentinin yeni versiyonunu yüklemek için lütfen NodeBB'yi güncelleyin.", "alert.possibly-incompatible": "

Uyumluluk Bilgisi Bulunamadı.

Bu eklenti, NodeBB sürümünüze göre kurulum için belirli bir sürümü belirtmedi. Tam uyumluluk garanti edilemez ve NodeBB'nizin artık düzgün çalışmamasına neden olabilir.

NodeBB düzgün şekilde önyükleme yapamıyorsa: $ ./nodebb reset plugin = \"%1\"

 

Bu eklentinin en yeni sürümünü yüklemeye devam et?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Eklenti Lisans Bilgisi", "license.intro": "% 1 eklentisi,% 2 altında lisanslanmıştır. Lütfen bu eklentiyi etkinleştirmeden önce lisans koşullarını okuyun ve anlayın.", diff --git a/public/language/tr/admin/extend/widgets.json b/public/language/tr/admin/extend/widgets.json index a18bb803ce88..7f94f3d8c36f 100644 --- a/public/language/tr/admin/extend/widgets.json +++ b/public/language/tr/admin/extend/widgets.json @@ -2,12 +2,12 @@ "available": "Kullanılabilir Bileşenler", "explanation": "Açılır menüden bir bileşen seçin ve sol taraftaki bir şablonun bileşen alanına sürükleyip bırakın.", "none-installed": "Bileşen bulunamadı! Gerekli bileşenleri eklentiler kontrol panelinden aktifleştirin.", - "clone-from": "Clone widgets from", + "clone-from": "Bileşenleri klonla", "containers.available": "Kullanılabilir Konteynırlar", "containers.explanation": "Aktif olan herhangi bir bileşenin üzerine sürükleyin ve bırakın", "containers.none": "Hiçbiri", - "container.well": "Well", - "container.jumbotron": "Jumbotron", + "container.well": "Kaynak", + "container.jumbotron": "Büyük Gösterim", "container.panel": "Panel", "container.panel-header": "Panel Başlığı", "container.panel-body": "Panel Gövdesi", @@ -16,7 +16,7 @@ "alert.confirm-delete": "Bu bileşeni silmek istediğinizden emin misiniz?", "alert.updated": "Bileşenler Güncellendi", "alert.update-success": "Bileşenler başarıyla güncellendi", - "alert.clone-success": "Successfully cloned widgets", + "alert.clone-success": "Bileşenler başarıyla klonlandı", - "error.select-clone": "Please select a page to clone from" + "error.select-clone": "Lütfen klonlanacak bir sayfa seçin" } \ No newline at end of file diff --git a/public/language/tr/admin/general/dashboard.json b/public/language/tr/admin/general/dashboard.json index 1e615be4ab85..527a9fee581c 100644 --- a/public/language/tr/admin/general/dashboard.json +++ b/public/language/tr/admin/general/dashboard.json @@ -23,7 +23,7 @@ "running-version": "NodeBB v%1 çalışıyor.", "keep-updated": "En son güvenlik değişiklikleri ve hata düzeltmeleri için NodeBB'nin güncel olduğundan emin olun.", "up-to-date": "

Güncel

", - "upgrade-available": "

A new version (v%1) has been released. Consider upgrading your NodeBB.

", + "upgrade-available": "

Yeni bir sürüm (v% 1) yayınlandı. NodeBB yükseltmeyi gözden geçirin.

", "prerelease-upgrade-available": "

This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider upgrading your NodeBB.

", "prerelease-warning": "

Bu, NodeBB'nin bir önsürüm versiyonudur. İstenmeyen hatalar oluşabilir.

", "running-in-development": "Forum, geliştirici modunda çalışıyor. Forum, potansiyel güvenlik açıklarına açık olabilir; lütfen sistem yöneticinize başvurun.", @@ -38,7 +38,7 @@ "control-panel": "Sistem Kontrol", "rebuild-and-restart": "Rebuild & Restart", - "restart": "Restart", + "restart": "Yeniden Başlat", "restart-warning": "Rebuilding or Restarting your NodeBB will drop all existing connections for a few seconds.", "restart-disabled": "Rebuilding and Restarting your NodeBB has been disabled as you do not seem to be running it via the appropriate daemon.", "maintenance-mode": "Bakım Modu", @@ -67,5 +67,6 @@ "graphs.page-views": "Sayfa Gösterimi", "graphs.unique-visitors": "Benzersiz Ziyaretçiler", "graphs.registered-users": "Kayıtlı Kullanıcılar", - "graphs.anonymous-users": "Anonim Kullanıcılar" + "graphs.anonymous-users": "Anonim Kullanıcılar", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/tr/admin/general/homepage.json b/public/language/tr/admin/general/homepage.json index f9bc3bba5421..f12dddfefc1b 100644 --- a/public/language/tr/admin/general/homepage.json +++ b/public/language/tr/admin/general/homepage.json @@ -4,5 +4,5 @@ "home-page-route": "Anasayfa Yolu", "custom-route": "Özel Yol", "allow-user-home-pages": "Kullanıcılara anasayfayı özelleştirmeye izin ver", - "home-page-title": "Title of the home page (default \"Home\")" + "home-page-title": "Ana sayfanın başlığı (varsayılan \"Ana Sayfa\")" } \ No newline at end of file diff --git a/public/language/tr/admin/manage/categories.json b/public/language/tr/admin/manage/categories.json index b1884332f58a..dd0e06c4c10a 100644 --- a/public/language/tr/admin/manage/categories.json +++ b/public/language/tr/admin/manage/categories.json @@ -8,9 +8,9 @@ "text-color": "Yazı Rengi", "bg-image-size": "Arkaplan Görseli Boyutu", "custom-class": "Özel Sınıf", - "num-recent-replies": "# of Recent Replies", + "num-recent-replies": "Son Yanıtların # Tanesi", "ext-link": "Harici Bağlantı", - "is-section": "Treat this category as a section", + "is-section": "Bu kategoriyi bir bölüm olarak değerlendir", "upload-image": "Görsel Yükle", "delete-image": "Sil", "category-image": "Kategori Görseli", @@ -18,7 +18,7 @@ "optional-parent-category": "(Opsiyonel) Ana Kategori", "parent-category-none": "(Hiçbiri)", "copy-settings": "Ayarları Başka Bir Yerden Kopyala", - "optional-clone-settings": "(Optional) Clone Settings From Category", + "optional-clone-settings": "(İsteğe Bağlı) Kategoriden Ayarları Klonla", "purge": "Kategoriyi Temizle", "enable": "Etkinleştir", @@ -30,17 +30,17 @@ "privileges.description": "Bu kategorideki erişim denetimi ayrıcalıklarını bu bölümde yapılandırabilirsiniz. Ayrıcalıklar kullanıcıya veya gruba göre verilebilir. Bu tabloda, aşağıdaki formdan arama yapabilir, yeni bir kullanıcı ekleyebilirsiniz.", "privileges.warning": "Note: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.", - "privileges.section-viewing": "Viewing Privileges", - "privileges.section-posting": "Posting Privileges", + "privileges.section-viewing": "Ayrıcalıkları Görüntüle", + "privileges.section-posting": "Gönderme Ayrıcalıkları", "privileges.section-moderation": "Moderatörlük Ayrıcalıkları", "privileges.section-user": "Kullanıcı", "privileges.search-user": "Kullanıcı Ekle", - "privileges.no-users": "No user-specific privileges in this category.", + "privileges.no-users": "Bu kategoride kullanıcıya-özel ayrıcalıklar yok.", "privileges.section-group": "Grup", "privileges.group-private": "Bu grup gizlidir", "privileges.search-group": "Grup Ekle", "privileges.copy-to-children": "Copy to Children", - "privileges.copy-from-category": "Copy from Category", + "privileges.copy-from-category": "Kategoriden Kopyala", "privileges.inherit": "If the registered-users group is granted a specific privilege, all other groups receive an implicit privilege, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the registered-users user group, and so, privileges for additional groups need not be explicitly granted.", "analytics.back": "Kategori listesine geri dön", @@ -66,6 +66,6 @@ "alert.user-search": "Search for a user here...", "alert.find-group": "Bir Grup Ara", "alert.group-search": "Search for a group here...", - "collapse-all": "Collapse All", - "expand-all": "Expand All" + "collapse-all": "Hepsini Kapat", + "expand-all": "Hepsini Genişlet" } \ No newline at end of file diff --git a/public/language/tr/admin/manage/ip-blacklist.json b/public/language/tr/admin/manage/ip-blacklist.json index f003c194eeee..5f2dd3851202 100644 --- a/public/language/tr/admin/manage/ip-blacklist.json +++ b/public/language/tr/admin/manage/ip-blacklist.json @@ -8,12 +8,12 @@ "hint-1": "Her satır için tek bir IP adresi tanımlayın. CIDR formatını izledikleri sürece IP blokları ekleyebilirsiniz (Örn: 192.168.100.0/22).", "hint-2": "Yorumlara # sembolüyle başlayan satırları ekleyebilirsiniz.", - "validate.x-valid": "%1 out of %2 rule(s) valid.", - "validate.x-invalid": "The following %1 rules are invalid:", + "validate.x-valid": "%2 geçerli kuraldan %1 tanesi.", + "validate.x-invalid": "Şu %1 kural geçersiz:", "alerts.applied-success": "Kara Liste Uygulandı", "analytics.blacklist-hourly": "Şekil 1 Saatlik kara liste isabeti", "analytics.blacklist-daily": "Şekil 2 Günlük kara liste isabeti", - "ip-banned": "IP banned" + "ip-banned": "IP yasaklandı" } \ No newline at end of file diff --git a/public/language/tr/admin/manage/post-queue.json b/public/language/tr/admin/manage/post-queue.json index af2fc9b9b148..037f3e97d94d 100644 --- a/public/language/tr/admin/manage/post-queue.json +++ b/public/language/tr/admin/manage/post-queue.json @@ -7,5 +7,5 @@ "content": "İçerik", "posted": "Gönderildi", "reply-to": "\"%1\"'e Cevap Ver", - "content-editable": "You can click on individual content to edit before posting." + "content-editable": "Göndermeden önce her bir içeriğe tıklayıp düzenleyebilirsiniz." } \ No newline at end of file diff --git a/public/language/tr/admin/manage/registration.json b/public/language/tr/admin/manage/registration.json index 85865bae620f..bdda078492b2 100644 --- a/public/language/tr/admin/manage/registration.json +++ b/public/language/tr/admin/manage/registration.json @@ -6,9 +6,9 @@ "list.email": "E-posta", "list.ip": "IP", "list.time": "Zaman", - "list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3", - "list.email-spam": "Frequency: %1 Appears: %2", - "list.ip-spam": "Frequency: %1 Appears: %2", + "list.username-spam": "Sıklık:% 1 Görüntülenme:% 2 Güvenirlilik:% 3", + "list.email-spam": "Sıklık:% 1 Görüntülenme:% 2", + "list.ip-spam": "Sıklık:% 1 Görüntülenme:% 2", "invitations": "Davetiyeler", "invitations.description": "Aşağıda, gönderilen davetiyelerin tam listesi bulunmaktadır. E-posta veya kullanıcı adı ile listede arama yapmak için ctrl-f kısayolunu kullanın.

Davetiyelerini kullanan kullanıcıların e-postalarının sağında kullanıcı adı görüntülenir.", @@ -16,5 +16,5 @@ "invitations.invitee-email": "Davetli E-postası", "invitations.invitee-username": "(Eğer kaydolmuşsa) Davetlinin Kullanıcı Adı", - "invitations.confirm-delete": "Are you sure you wish to delete this invitation?" + "invitations.confirm-delete": "Bu daveti silmek istediğinizden emin misiniz?" } \ No newline at end of file diff --git a/public/language/tr/admin/manage/tags.json b/public/language/tr/admin/manage/tags.json index 401e0e7ffc41..a01a7535d1cd 100644 --- a/public/language/tr/admin/manage/tags.json +++ b/public/language/tr/admin/manage/tags.json @@ -6,14 +6,14 @@ "description": "Tıklayarak ve/veya sürükleyerek etiketleri seçin, birden çok seçmek için kaydırın.", "create": "Etiket Oluştur", "modify": "Etiketleri Düzenle", - "rename": "Rename Tags", + "rename": "Etiketleri Yeniden Adlandır", "delete": "Seçili Etiketleri Sil", "search": "Etiketleri ara...", "settings": "Etiket yönetim sayfasını ziyaret etmek için buraya tıklayın.", "name": "Etiket Adı", "alerts.editing-multiple": "Birden çok etiketi düzenle", - "alerts.editing-x": "Editing \"%1\" tag", + "alerts.editing-x": "\"% 1\" etiketi düzenleniyor", "alerts.confirm-delete": "Seçilen etiketleri gerçekten silmek istiyor musunuz?", - "alerts.update-success": "Tag Updated!" + "alerts.update-success": "Etiket Güncellendi!" } \ No newline at end of file diff --git a/public/language/tr/admin/manage/users.json b/public/language/tr/admin/manage/users.json index 735d97bef817..7292583ff648 100644 --- a/public/language/tr/admin/manage/users.json +++ b/public/language/tr/admin/manage/users.json @@ -7,34 +7,34 @@ "send-validation-email": "Onay E-postası Gönder", "password-reset-email": "E-posta Sıfırlaması için Parola Gönder", "ban": "Yasaklı Kullanıcı(lar)", - "temp-ban": "Ban User(s) Temporarily", - "unban": "Unban User(s)", - "reset-lockout": "Reset Lockout", + "temp-ban": "Kullanıcı(ları) Geçici Olarak Yasakla", + "unban": "Kullanıcı(n/lar)ın Yasağını Kaldır", + "reset-lockout": "Kilitlemeyi Sıfırla", "reset-flags": "Bayrakları Sıfırla", "delete": "Kullanıcı(ları) Sil", "purge": "Kullanıcıyı(ları) ve İçeriği Sil", "download-csv": "CSV İndir", - "invite": "Invite", + "invite": "Davet et", "new": "Yeni Kullanıcı", "pills.latest": "En Yeni Kullanıcılar", "pills.unvalidated": "Onaylanmamış", "pills.no-posts": "İleti Yok", - "pills.top-posters": "Top Posters", + "pills.top-posters": "En Çok Gönderim Yapanlar", "pills.top-rep": "En Saygın", "pills.inactive": "Etkin değil", - "pills.flagged": "Most Flagged", + "pills.flagged": "En Çok İşaretlenenler", "pills.banned": "Yasaklandı", "pills.search": "Kullanıcı Ara", - "search.uid": "By User ID", - "search.uid-placeholder": "Enter a user ID to search", + "search.uid": "Kullanıcı Kimliğiyle", + "search.uid-placeholder": "Aramak için bir kullanıcı kimliği girin", "search.username": "Kullanıcı Adına Göre", "search.username-placeholder": "Aramak için bir kullanıcı adı girin", "search.email": "E-posta'ya göre", "search.email-placeholder": "Aramak için bir e-posta adresi girin", - "search.ip": "By IP Address", - "search.ip-placeholder": "Enter an IP Address to search", + "search.ip": "IP Adresiyle", + "search.ip-placeholder": "Aramak için bir IP adresi girin", "search.not-found": "Kullanıcı bulunamadı!", "inactive.3-months": "3 ay", @@ -93,7 +93,7 @@ "alerts.error-x": "Error

%1

", "alerts.create-success": "Kullanıcı oluşturuldu!", - "alerts.prompt-email": "Email: ", + "alerts.prompt-email": "Eposta:", "alerts.email-sent-to": "%1'e bir davet e-postası gönderildi", "alerts.x-users-found": "%1 user(s) found! Search took %2 ms." } \ No newline at end of file diff --git a/public/language/tr/admin/menu.json b/public/language/tr/admin/menu.json index c2aaae413c9f..33218682b85c 100644 --- a/public/language/tr/admin/menu.json +++ b/public/language/tr/admin/menu.json @@ -9,18 +9,18 @@ "section-manage": "Yönet", "manage/categories": "Kategoriler", - "manage/privileges": "Privileges", + "manage/privileges": "Yetkiler", "manage/tags": "Etiketler", "manage/users": "Kullanıcılar", - "manage/admins-mods": "Admins & Mods", + "manage/admins-mods": "Yöneticiler ve Modlar", "manage/registration": "Kayıt Kuyruğu", "manage/post-queue": "İleti Kuyruğu", "manage/groups": "Gruplar", "manage/ip-blacklist": "IP Kara Listesi", - "manage/uploads": "Uploads", + "manage/uploads": "Yüklemeler", "section-settings": "Ayarlar", - "settings/general": "General", + "settings/general": "Genel", "settings/reputation": "İtibar", "settings/email": "E-posta", "settings/user": "Kullanıcı", @@ -37,7 +37,7 @@ "settings/sockets": "Soketler", "settings/advanced": "Gelişmiş", - "settings.page-title": "%1 Settings", + "settings.page-title": "%1 Ayar", "section-appearance": "Görünüm", "appearance/themes": "Temalar", @@ -61,7 +61,7 @@ "advanced/errors": "Hatalar", "advanced/cache": "Önbellek", "development/logger": "Logger", - "development/info": "Info", + "development/info": "bilgi", "rebuild-and-restart-forum": "Rebuild & Restart Forum", "restart-forum": "Forumu Yeniden Başlat", @@ -69,7 +69,7 @@ "view-forum": "Forumu Görüntüle", "search.placeholder": "Search for settings", - "search.no-results": "No results...", + "search.no-results": "Sonuç yok...", "search.search-forum": "Search the forum for ", "search.keep-typing": "Type more to see results...", "search.start-typing": "Start typing to see results...", diff --git a/public/language/tr/admin/settings/advanced.json b/public/language/tr/admin/settings/advanced.json index 5ba13da2e8c9..5bbce7045aa2 100644 --- a/public/language/tr/admin/settings/advanced.json +++ b/public/language/tr/admin/settings/advanced.json @@ -2,19 +2,19 @@ "maintenance-mode": "Bakım Modu", "maintenance-mode.help": "Forum bakım modundayken, tüm istekler statik bir bekletme sayfasına yönlendirilir. Yöneticiler bu yönlendirmeden muaftır ve siteye normal olarak erişebilirler.", "maintenance-mode.message": "Bakım Mesajı", - "headers": "Headers", - "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", - "headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB", - "headers.acao": "Access-Control-Allow-Origin", - "headers.acao-help": "To deny access to all sites, leave empty", - "headers.acac": "Access-Control-Allow-Credentials", - "headers.acam": "Access-Control-Allow-Methods", - "headers.acah": "Access-Control-Allow-Headers", + "headers": "Başlıklar", + "headers.allow-from": "NodeBB'yi bir iFrame'e yerleştirmek için ALLOW-FROM'u ayarla", + "headers.powered-by": "NodeBB tarafından gönderilen \"Powered By\" başlığını özelleştirin", + "headers.acao": "Erişim-Kontrolü-Kaynak-İzni", + "headers.acao-help": "Tüm sitelere erişimi engellemek için boş bırakın", + "headers.acac": "Erişim-Kontrolü-KimlikBilgileri-İzni", + "headers.acam": "Erişim-Kontrolü-Yöntem-İzni", + "headers.acah": "Erişim-Kontrolü-Başlık-İzni", "traffic-management": "Trafik Yönetimi", - "traffic.help": "NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.", + "traffic.help": "NodeBB, yoğun trafik isteklerini otomatik olarak reddeden bir modül ile donatılmıştır. Varsayıla ayarlar başlangıç için yeterli olsa da, bu ayarları buradan düzenleyebilirsiniz.", "traffic.enable": "Trafik Yönetimini Etkinleştir", - "traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)", - "traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)", - "traffic.lag-check-interval": "Check Interval (in milliseconds)", - "traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)" + "traffic.event-lag": "Olay Döngüsü Gecikme Eşiği (milisaniye cinsinden)", + "traffic.event-lag-help": "Bu değeri düşürmek, sayfa yüklemeleri için bekleme sürelerini azaltır, ancak daha fazla kullanıcıya \"aşırı yükleme\" mesajını da gösterir. (Yeniden başlatmak gerekir)", + "traffic.lag-check-interval": "Kontrol Aralığı (milisaniye cinsinden)", + "traffic.lag-check-interval-help": "Bu değerin düşürülmesi, NodeBB'nin yükteki ani artışlara daha duyarlı olmasına neden olur, ancak ayrıca kontrolün çok hassas hale gelmesine de neden olabilir. (Yeniden başlatmak gerekir)" } \ No newline at end of file diff --git a/public/language/tr/admin/settings/chat.json b/public/language/tr/admin/settings/chat.json index dbba535c0351..c77275642dcd 100644 --- a/public/language/tr/admin/settings/chat.json +++ b/public/language/tr/admin/settings/chat.json @@ -6,6 +6,6 @@ "max-length": "Maksimum sohbet mesajı uzunluğu", "max-room-size": "Sohbet odalarındaki maksimum kullanıcı sayısı", "delay": "Sohbet mesajları arasındaki süre (milisaniye)", - "restrictions.seconds-edit-after": "Number of seconds before users are allowed to edit chat messages after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds before users are allowed to delete chat messages after posting. (0 disabled)" + "restrictions.seconds-edit-after": "Kullanıcıların sohbet iletilerini yayınladıktan sonra iletilerini değiştirmelerine izin verilen saniye cinsinden süre. (0 devre dışı)", + "restrictions.seconds-delete-after": "Kullanıcıların sohbet iletilerini yayınladıktan sonra iletilerini silmelerine izin verilen saniye cinsinden süre. (0 devre dışı)" } \ 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 d876543e4283..bd1ba026cf79 100644 --- a/public/language/tr/admin/settings/general.json +++ b/public/language/tr/admin/settings/general.json @@ -2,34 +2,34 @@ "site-settings": "Site Ayarları", "title": "Site Başlığı", "title.url": "Bağlantı", - "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-placeholder": "Site başlığının URL adresi", + "title.url-help": "Başlık tıklandığında, kullanıcıları bu adrese gönder. Boş bırakılırsa, kullanıcı forum dizinine gönderilir.", "title.name": "Topluluk İsmi", - "title.show-in-header": "Show Site Title in Header", + "title.show-in-header": "Site Konusunu Başlık'ta Göster", "browser-title": "Tarayıcı Başlığı", - "browser-title-help": "If no browser title is specified, the site title will be used", - "title-layout": "Title Layout", - "title-layout-help": "Define how the browser title will be structured ie. {pageTitle} | {browserTitle}", + "browser-title-help": "Hiçbir tarayıcı başlığı belirtilmemişse, site başlığı kullanılır", + "title-layout": "Başlık Düzeni", + "title-layout-help": "Tarayıcı başlığının nasıl yapılandırılacağını tanımlayın örn. {pageTitle} | {browserTitle}", "description.placeholder": "Topluluk hakkında kısa bir açıklama yazın", "description": "Site Açıklaması", "keywords": "Site Anahtar Kelimeler", - "keywords-placeholder": "Keywords describing your community, comma-separated", + "keywords-placeholder": "Topluluğunuzu tanımlayan anahtar kelimeler, virgülle-ayrılmış", "logo": "Site Logosu", "logo.image": "Görsel", - "logo.image-placeholder": "Path to a logo to display on forum header", + "logo.image-placeholder": "Forum başlığında görüntülenecek bir logo yolu", "logo.upload": "Yükle", "logo.url": "URL", "logo.url-placeholder": "Site Logo URL'si", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "Logo tıklandığında, kullanıcıları bu adrese gönder. Boş bırakılırsa, kullanıcı forum dizinine gönderilir.", "logo.alt-text": "Alt Yazı", - "log.alt-text-placeholder": "Alternative text for accessibility", + "log.alt-text-placeholder": "Erişilebilirlik için alternatif metin", "favicon": "Favicon", "favicon.upload": "Yükle", "touch-icon": "Ana Ekran/Dokunmatik Simge", "touch-icon.upload": "Yükle", "touch-icon.help": "Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.", "outgoing-links": "Harici Bağlantılar", - "outgoing-links.warning-page": "Use Outgoing Links Warning Page", + "outgoing-links.warning-page": "Dışarı giden bağlantılar için uyarı sayfası kullan", "search-default-sort-by": "Aramada varsayılan sıralama", - "outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page" + "outgoing-links.whitelist": "Uyarı sayfasını atlamak için beyaz listeye eklenecek alan-adları" } \ No newline at end of file diff --git a/public/language/tr/admin/settings/group.json b/public/language/tr/admin/settings/group.json index c9f09a88a2cb..feb7c8ebb4fb 100644 --- a/public/language/tr/admin/settings/group.json +++ b/public/language/tr/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Dikkat! Eğer bu opsiyon devre dışıysa ve özel gruplarınız varsa, onlar otomatik olarak genele dönüşecektir.", "allow-creation": "Grup Oluşturmaya İzin Ver", "allow-creation-help": "Eğer etkinse kullanıcılar grup oluşturabilir (Varsayılan: Pasif)", + "allow-multiple-badges-help": "Bu bayrak, kullanıcıların birden fazla grup rozetini seçmelerine izin vermek için kullanılabilir, tema desteği gerektirir.", "max-name-length": "Maksimum Grup Adı Uzunluğu", "cover-image": "Grup Kapak Resmi", "default-cover": "Varsayılan Kapak Resmi", diff --git a/public/language/tr/admin/settings/guest.json b/public/language/tr/admin/settings/guest.json index 51a686af08a9..c58905db4bcb 100644 --- a/public/language/tr/admin/settings/guest.json +++ b/public/language/tr/admin/settings/guest.json @@ -1,8 +1,8 @@ { "handles": "Ziyaretçi Kolları", - "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\"", - "privileges": "Guest Privileges", - "privileges.can-search": "Allow guests to search without logging in", - "privileges.can-search-users": "Allow guests to search users without logging in" + "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.", + "privileges": "Misafir Kullanıcı Yetkileri", + "privileges.can-search": "Misafirlerin giriş yapmadan arama yapmasına izin ver", + "privileges.can-search-users": "Misafirlerin giriş yapmadan kullanıcıları aramalarına izin ver" } \ No newline at end of file diff --git a/public/language/tr/admin/settings/notifications.json b/public/language/tr/admin/settings/notifications.json index 9c7badb19403..c25de454292d 100644 --- a/public/language/tr/admin/settings/notifications.json +++ b/public/language/tr/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Bildirimler", "welcome-notification": "Hoş Geldin Bildirimi", "welcome-notification-link": "Hoş Geldin Bildirimi Bağlantısı", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Kullanıcı Hoş Geldiniz Bildirimi (UID)", + "notification-alert-timeout": "Bildirim Uyarısı Zaman Aşımı" } \ No newline at end of file diff --git a/public/language/tr/admin/settings/pagination.json b/public/language/tr/admin/settings/pagination.json index 60547cf4be78..6423804396a2 100644 --- a/public/language/tr/admin/settings/pagination.json +++ b/public/language/tr/admin/settings/pagination.json @@ -1,11 +1,11 @@ { "pagination": "Sayfalama Ayarları", - "enable": "Paginate topics and posts instead of using infinite scroll.", + "enable": "Sonsuz kaydırma yerine konu ve gönderileri sayfalandır.", "topics": "Başlık Sayfalama", "posts-per-page": "Sayfa başına İletiler", - "max-posts-per-page": "Maximum posts per page", + "max-posts-per-page": "Sayfa başına azami gönderi sayısı", "categories": "Kategori Sayfalama", "topics-per-page": "Sayfa başına Konular", - "max-topics-per-page": "Maximum topics per page", - "initial-num-load": "Initial Number of Topics to Load on Unread, Recent, and Popular" + "max-topics-per-page": "Sayfa başına azami konu", + "initial-num-load": "Okunmamış, Son ve Popülere Başlangıçta Yüklenecek Konu Sayısı" } \ 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 abf2eab63881..0e48e995b483 100644 --- a/public/language/tr/admin/settings/post.json +++ b/public/language/tr/admin/settings/post.json @@ -4,29 +4,29 @@ "sorting.oldest-to-newest": "En Eskiden En Yeniye", "sorting.newest-to-oldest": "En Yeniden En Eskiye", "sorting.most-votes": "En Çok Oylanan", - "sorting.most-posts": "Most Posts", + "sorting.most-posts": "En çok yazılanlar", "sorting.topic-default": "Varsayılan Konu Sıralaması", - "length": "Post Length", + "length": "İleti Uzunluğu", "restrictions": "İleti Kısıtlamaları", - "restrictions-new": "New User Restrictions", + "restrictions-new": "Yeni Kullanıcı Kısıtlamaları", "restrictions.post-queue": "İleti kuyruğunu etkinleştir", - "restrictions-new.post-queue": "Enable new user restrictions", + "restrictions-new.post-queue": "Yeni kullanıcı kısıtlamalarını etkinleştir", "restrictions.post-queue-help": "İleti kuyruğunu etkinleştirmek, yeni kullanıcıların gönderilerini onay için bir sıraya koyacaktır.", - "restrictions-new.post-queue-help": "Enabling new user restrictions will set restrictions on posts created by new users.", - "restrictions.seconds-between": "Seconds between posts", - "restrictions.seconds-between-new": "Seconds between posts for new users", - "restrictions.rep-threshold": "Reputation threshold before these restrictions are lifted", - "restrictions.seconds-defore-new": "Seconds before new user can post", - "restrictions.seconds-edit-after": "Number of seconds before users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds before users are allowed to delete posts after posting. (0 disabled)", - "restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)", + "restrictions-new.post-queue-help": "Yeni kullanıcı kısıtlamalarını etkinleştirmek, yeni kullanıcılar tarafından oluşturulmuş yayınlara kısıtlamalar getirecektir.", + "restrictions.seconds-between": "Gönderiler arası saniye cinsinden süre", + "restrictions.seconds-between-new": "Yeni kullanıcılar için gönderimler arasındaki saniye cinsinden süre", + "restrictions.rep-threshold": "Bu kısıtlamalardan önceki itibar eşiği kaldırıldı", + "restrictions.seconds-defore-new": "Yeni kullanıcı gönderim yapmadan önce geçen süre saniye cinsinden", + "restrictions.seconds-edit-after": "Kullanıcılar yayınlarını gönderdikten sonra düzenlemeye izin verilen süre saniye cinsinden. (0 devre dışı)", + "restrictions.seconds-delete-after": "Kullanıcılar yayınlarını gönderdikten sonra silmeye izin verilen süre saniye cinsinden. (0 devre dışı)", + "restrictions.replies-no-delete": " Kullanıcıların kendi konularını silmelerini engelleyecek yanıt sayısı. (0 devre dışı)", "restrictions.min-title-length": "Minimum Başlık Uzunluğu", "restrictions.max-title-length": "Maksimum Başlık Uzunluğu", "restrictions.min-post-length": "Minimum İleti Uzunluğu", "restrictions.max-post-length": "Maksimum İleti Uzunluğu", "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "If a topic is considered \"stale\", then a warning will be shown to users who attempt to reply to that topic.", - "timestamp": "Timestamp", + "timestamp": "Zaman Damgası", "timestamp.cut-off": "Date cut-off (in days)", "timestamp.cut-off-help": "Dates & times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).
(Default: 30, or one month). Set to 0 to always display dates, leave blank to always display relative times.", "teaser": "Teaser Post", @@ -36,7 +36,7 @@ "unread": "Okunmamış Ayarları", "unread.cutoff": "Unread cutoff days", "unread.min-track-last": "Minimum posts in topic before tracking last read", - "recent": "Recent Settings", + "recent": "Güncel Ayarlar", "recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page", "signature": "İmza Ayarları", "signature.disable": "İmzaları devre dışı bırak", diff --git a/public/language/tr/admin/settings/reputation.json b/public/language/tr/admin/settings/reputation.json index 6af829a0c034..e7246efa902c 100644 --- a/public/language/tr/admin/settings/reputation.json +++ b/public/language/tr/admin/settings/reputation.json @@ -3,10 +3,10 @@ "disable": "İtibar Sistemini Devre Dışı Bırak", "disable-down-voting": "Eksi Oyu Devre Dışı Bırak", "votes-are-public": "Tüm Oylar Herkese Açık", - "thresholds": "Activity Thresholds", + "thresholds": "Etkinlik Eşikleri", "min-rep-downvote": "Eksilenen iletiler için minimum itibar", "min-rep-flag": "Bayraklı iletiler için minimum itibar", - "min-rep-website": "Minimum reputation to add \"Website\" to user profile", - "min-rep-aboutme": "Minimum reputation to add \"About me\" to user profile", - "min-rep-signature": "Minimum reputation to add \"Signature\" to user profile" + "min-rep-website": "Kullanıcı profiline \"Web Sitesi\" eklemek için gerekli asgari itibar", + "min-rep-aboutme": "Kullanıcı profiline \"Hakkımda\" eklemek için gereken asgari itibar", + "min-rep-signature": "Kullanıcı profiline \"İmza\" eklemek için gerekli asgari itibar" } \ No newline at end of file diff --git a/public/language/tr/admin/settings/uploads.json b/public/language/tr/admin/settings/uploads.json index 50990f140314..2bdbe5f7cbbc 100644 --- a/public/language/tr/admin/settings/uploads.json +++ b/public/language/tr/admin/settings/uploads.json @@ -4,8 +4,8 @@ "private": "Yüklenen dosyaları gizli yap", "max-image-width": "Görüntüleri belirtilen genişliğe (piksel cinsinden) yeniden boyutlandır", "max-image-width-help": "(Piksel, varsayılan: 128 piksel, devre dışı bırakmak için 0'a ayarlayın)", - "resize-image-quality": "Quality to use when resizing images", - "resize-image-quality-help": "Use a lower quality setting to reduce the file size of resized images.", + "resize-image-quality": "Resimleri yeniden boyutlandırırken kullanılacak kalite", + "resize-image-quality-help": "Yeniden boyutlandırılan görüntülerin dosya boyutunu azaltmak için daha düşük bir kalite ayarı kullan.", "max-file-size": "Maksimum Dosya Boyutu (KiB)", "max-file-size-help": "(Kilobayt, varsayılan: 2,048 KiB)", "allow-topic-thumbnails": "Kullanıcıların konulara küçük resim yüklemesine izin ver", diff --git a/public/language/tr/admin/settings/user.json b/public/language/tr/admin/settings/user.json index df586d120227..a3a95605cff1 100644 --- a/public/language/tr/admin/settings/user.json +++ b/public/language/tr/admin/settings/user.json @@ -19,8 +19,8 @@ "themes": "Temalar", "disable-user-skins": "Kullanıcıların özel bir deri seçmesini engelle", "account-protection": "Hesap Koruma", - "admin-relogin-duration": "Admin relogin duration (minutes)", - "admin-relogin-duration-help": "After a set amount of time accessing the admin section will require re-login, set to 0 to disable", + "admin-relogin-duration": "Yönetici yeniden giriş süresi (dakika)", + "admin-relogin-duration-help": "Beliril bir süreden sonra yönetici bölümüne erişmek için yeniden giriş yapılması gerekir, devre dışı bırakmak için 0 olarak ayarlayın", "login-attempts": "Saatlik giriş deneme sayısı", "login-attempts-help": "Bir kullanıcının hesabına giriş denemesi bu sınırı aşarsa, bu hesap önceden belirlenmiş olan bir süre için kilitlenir.", "lockout-duration": "Hesap Kilitleme Süresi (dakika)", diff --git a/public/language/tr/error.json b/public/language/tr/error.json index c87207c05d4a..34dff3dd50ab 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Lütfen kullanıcı ismi ve parola girin.", "invalid-search-term": "Geçersiz arama", "invalid-url": "Geçersiz bağlantı", + "local-login-disabled": "Ayrıcalıklı-olmayan hesaplar için yerel giriş sistemi devre dışı bırakıldı.", "csrf-invalid": "Büyük olasılıkla süresi dolmuş oturum nedeniyle girişinizi geçersiz kıldık. Lütfen tekrar deneyiniz.", "invalid-pagination-value": "Geçersiz sayfalama değeri, en az %1 ve en fazla %2 olabilir", "username-taken": "Kullanıcı İsmi Alınmış", @@ -145,5 +146,7 @@ "invalid-session": "Oturum Uyuşmazlığı", "invalid-session-text": "Senin giriş oturumun pek aktif gözükmüyor, ya da sunucu ile eşleşmiyor. Lütfen sayfayı yenileyiniz.", "no-topics-selected": "Hiçbir başlık seçilmedi!", - "cant-move-to-same-topic": "İletiyi aynı başlığa taşıyamazsın!" + "cant-move-to-same-topic": "İletiyi aynı başlığa taşıyamazsın!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/tr/flags.json b/public/language/tr/flags.json index f399f686360f..be282c9e9f24 100644 --- a/public/language/tr/flags.json +++ b/public/language/tr/flags.json @@ -18,6 +18,7 @@ "filter-type": "Bayrak Tipi", "filter-type-all": "Bütün İçerik", "filter-type-post": "İleti", + "filter-type-user": "Kullanıcı", "filter-state": "Bildiri", "filter-assignee": "Vekil UID", "filter-cid": "Kategori", diff --git a/public/language/tr/global.json b/public/language/tr/global.json index 53434b2403c7..a5e968f47c1f 100644 --- a/public/language/tr/global.json +++ b/public/language/tr/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Sayfa numarasını girin", "upload_file": "Dosya yükle", "upload": "Yükle", + "uploads": "Yüklemeler", "allowed-file-types": "İzin verilen dosya tipleri %1", "unsaved-changes": "Kaydedilmemiş değişiklikler var. Çıkmak istediğinize emin misiniz?", "reconnecting-message": "%1 ile bağlantınız koptu, yeniden bağlanmak için lütfen bekleyiniz.", diff --git a/public/language/tr/modules.json b/public/language/tr/modules.json index b13c7ea4ca16..15593b7dffd0 100644 --- a/public/language/tr/modules.json +++ b/public/language/tr/modules.json @@ -20,10 +20,9 @@ "chat.thirty_days": "30 Gün", "chat.three_months": "3 Ay", "chat.delete_message_confirm": "Bu mesajı silmek istediğinden emin misin?", - "chat.add-users-to-room": "Odaya Kullanıcı Ekle", "chat.retrieving-users": "Kullanıcılar alınıyor ...", "chat.manage-room": "Sohbet Odasını Yönet", - "chat.add-user-help": "Kullanıcılar için arama yapın. Seçildiğinde, kullanıcı sohbete eklenecektir. Yeni kullanıcı, sohbete eklenmeden önce yazılı sohbet mesajlarını göremeyecektir.", + "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.confirm-chat-with-dnd-user": "Bu kullanıcı durumunu rahatsız etmeyin olarak ayarladı. Hala onunla sohbet etmek istiyor musun?", "chat.rename-room": "Odanın adını değiştir", "chat.rename-placeholder": "Oda isminizi buraya girin", @@ -32,6 +31,7 @@ "chat.leave-prompt": "Sohbetten ayrılmak istediğinden emin misin?", "chat.leave-help": "Bu sohbetten ayrılmak, bu sohbetteki gelecekteki yazışmalardan sizi silecektir. Gelecekte tekrar eklendiyseniz, yeniden katılmadan önce herhangi bir sohbet geçmişi görmezsiniz.", "chat.in-room": "Bu odada", + "chat.kick": "Dışarı At", "composer.compose": "Yaz", "composer.show_preview": "Önizleme Göster", "composer.hide_preview": "Önizleme Sakla", diff --git a/public/language/tr/pages.json b/public/language/tr/pages.json index 19fcfd2fa79d..45a87556ca58 100644 --- a/public/language/tr/pages.json +++ b/public/language/tr/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "%1 tarafından artılanan gönderiler", "account/downvoted": "%1 tarafından eksilenen gönderiler", "account/best": "%1 tarafından en iyi gönderiler", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "E-posta Onaylandı", "maintenance.text": "%1 şu anda bakımda. Lütfen bir süre sonra tekrar deneyin.", "maintenance.messageIntro": "Ayrıca, yönetici şu mesaji bıraktı:", diff --git a/public/language/tr/register.json b/public/language/tr/register.json index 53af554870f0..89984e8573c7 100644 --- a/public/language/tr/register.json +++ b/public/language/tr/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "Kullanım şartlarını kabul etmen 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.", "interstitial.intro": "Hesabınızı yaratmadan önce bazı ekstra bilgiler gerekiyor.", - "interstitial.errors-found": "Kaydınınız tamamlanmadı:" + "interstitial.errors-found": "Kaydınınız tamamlanmadı:", + "gdpr_agree_data": "Bu web sitesinde kişisel bilgilerimin toplanmasını ve işlenmesini kabul ediyorum.", + "gdpr_agree_email": "Bu web sitesinden özet ve bildirim e-posta almaya izin veriyorum.", + "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 diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json index 1b93a65f3012..e268defad683 100644 --- a/public/language/tr/topic.json +++ b/public/language/tr/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sırala", "oldest_to_newest": "En eskiden en yeniye", "newest_to_oldest": "En yeniden en eskiye", - "most_votes": "En çok oy", - "most_posts": "En sık yayın", + "most_votes": "En Çok Oylanan", + "most_posts": "En Çok Yazılan", "stale.title": "Bunun yerine yeni bir başlık oluşturun?", "stale.warning": "Yanıtlamak istediğin konu oldukca eskidir. Bu konuya referans oluşturacak yeni bir konu oluşturmak ister misin?", "stale.create": "Yeni bir başlık yarat", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "İleti Geçmiş Düzenle", "diffs.description": "Bu iletinin %1revizyonu var. Zaman içerisinde ileti içeriğinin tamamını görmek için aşağıdaki düzeltmelerden birine tıklayın.", - "diffs.no-revisions-description": "Bu iletinin %1 revizyonu var." + "diffs.no-revisions-description": "Bu iletinin %1 revizyonu var.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/tr/uploads.json b/public/language/tr/uploads.json index 255eb420d760..95232df30e70 100644 --- a/public/language/tr/uploads.json +++ b/public/language/tr/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Dosya yükleniyor...", "select-file-to-upload": "Bir dosya seç!", "upload-success": "Dosya yüklenmesi tamamlandı!", - "maximum-file-size": "Maksimum %1 kb" + "maximum-file-size": "Maksimum %1 kb", + "no-uploads-found": "Hiçbir yükleme bulunamadı", + "public-uploads-info": "Yüklemeler herkese açık, tüm ziyaretçiler onları görebilir.", + "private-uploads-info": "Yüklemeler gizlidir, sadece giriş yapan kullanıcılar görebilir." } \ No newline at end of file diff --git a/public/language/tr/user.json b/public/language/tr/user.json index d3b2787d8605..3e1c0295f784 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -12,7 +12,7 @@ "ban_account_confirm": "Hesabı dondurmak istediğinizden emin misiniz!", "unban_account": "Hesabı Kullanıma Aç", "delete_account": "Hesabı Sil", - "delete_account_confirm": "Are you sure you want to delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your password to confirm that you wish to destroy this account.", + "delete_account_confirm": "Hesabınızı silmek istediğinize emin misiniz?
Bu işlem geri döndürülemez ve verilerinizin herhangi bir bölümünü kurtaramazsınız

Bu hesabı yoketme isteğinizi onaylamak için şifrenizi girin.", "delete_this_account_confirm": "Bu hesabı silmek istediğinizden emin misiniz?
Bu işlem geri döndürülemez ve hiç bir veriyi kurtaramazsınız

", "account-deleted": "Hesap silindi", "fullname": "Tam Ad", @@ -29,6 +29,8 @@ "ignored": "Susturuldu", "followers": "Takipçiler", "following": "Takip Ediyor", + "blocks": "Blok", + "block_toggle": "Blokta Geçiş Yap", "aboutme": "Hakkımda", "signature": "İmza", "birthday": "Doğum Tarihi", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Bu kullanıcı henüz hiç bir gönderiyi artılamamış.", "has_no_downvoted_posts": "Bu kullanıcı henüz hiç bir gönderiyi eksilememiş.", "has_no_voted_posts": "Bu kullanıcının hiç oylanmış gönderisi yok.", + "has_no_blocks": "You have blocked no users.", "email_hidden": "E-posta gizli", "hidden": "gizli", "paginate_description": "Sonsuz yükleme yerine konu ve iletileri sayfalara böl", @@ -142,5 +145,25 @@ "info.email-history": "E-posta Geçmişi", "info.moderation-note": "Moderasyon Notu", "info.moderation-note.success": "Moderasyon notu kaydedildi", - "info.moderation-note.add": "Not ekle" + "info.moderation-note.add": "Not ekle", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "İzin ver", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Profili Dışarı Çıkar (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/uk/admin/extend/plugins.json b/public/language/uk/admin/extend/plugins.json index 0315d8af6440..abdd577a70ad 100644 --- a/public/language/uk/admin/extend/plugins.json +++ b/public/language/uk/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB не вдалося зв'язатися з менеджером пакетів, оновлення наразі не рекомендується.

", "alert.incompatible": "

Ваша версія NodeBB (v%1) дозволяє оновлення цього плагіну лише до v%2. Будь ласка, оновіть NodeBB, щоб встановити новішу версію цього плагіну.

", "alert.possibly-incompatible": "

Інформацію про сумісність не знайдено

У цьому плагіні не вказано сумісну версію NodeBB. Коректна робота не гарантується.

Якщо NodeBB перестане коректно стартувати, виконайте:

$ ./nodebb reset plugin=\"%1\"

Продовжити встановлення останньої версії цього плагіну?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Інформація про ліцензію плагіну", "license.intro": "Цей плагін %1 ліцензований відповідно до %2. Будь-ласка прочитайте та зрозумійте умови ліцензії перед активацією цього плагіну.", diff --git a/public/language/uk/admin/general/dashboard.json b/public/language/uk/admin/general/dashboard.json index b9f985639417..5c04827959f1 100644 --- a/public/language/uk/admin/general/dashboard.json +++ b/public/language/uk/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Перегляди сторінок", "graphs.unique-visitors": "Унікальні відвідувачі", "graphs.registered-users": "Зареєстровані користувачі", - "graphs.anonymous-users": "Анонімні користувачі" + "graphs.anonymous-users": "Анонімні користувачі", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/uk/admin/settings/group.json b/public/language/uk/admin/settings/group.json index 25aa9f71517a..ce54bcb089d3 100644 --- a/public/language/uk/admin/settings/group.json +++ b/public/language/uk/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Увага! Якщо ця опція вимикається і у вас є приватні групи, вони автоматично стають публічними.", "allow-creation": "Дозволити створення груп", "allow-creation-help": "Якщо увімкнено, користувачі можуть створювати групи (По замовчуванню: вимкнено)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Максимальна довжина імені групи", "cover-image": "Зображення обкладинки групи", "default-cover": "Зображення обкладинки по замовчуванню", diff --git a/public/language/uk/admin/settings/notifications.json b/public/language/uk/admin/settings/notifications.json index 55f71dae6342..219c859cc846 100644 --- a/public/language/uk/admin/settings/notifications.json +++ b/public/language/uk/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Сповіщення", "welcome-notification": "Сповіщення \"Ласкаво просимо\"", "welcome-notification-link": "Посилання для сповіщення \"Ласкаво просимо\"", - "welcome-notification-uid": "Сповіщення \"Ласкаво просимо\" для користувача (UID)" + "welcome-notification-uid": "Сповіщення \"Ласкаво просимо\" для користувача (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/uk/error.json b/public/language/uk/error.json index 2c6156bad0ee..94a8873c5df6 100644 --- a/public/language/uk/error.json +++ b/public/language/uk/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Вкажіть, будь ласка, ім'я користувача та пароль", "invalid-search-term": "Невірний пошуковий запит", "invalid-url": "Недійсна URL-адреса", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Нам не вдалося вас пустити, ймовірно, через прострочену сесію. Будь ласка, спробуйте ще раз", "invalid-pagination-value": "Невірне значення сторінки, має бути щонайменше %1 та щонайбільше %2", "username-taken": "Це ім'я зайняте", @@ -145,5 +146,7 @@ "invalid-session": "Сесія не існує", "invalid-session-text": "Здається, що ваша сесія більше неактивна або розійшлася з серверною. Оновіть, будь ласка, цю сторінку.", "no-topics-selected": "Не вибрано жодної теми!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/uk/global.json b/public/language/uk/global.json index 0b495a261a4b..3a40011ff78e 100644 --- a/public/language/uk/global.json +++ b/public/language/uk/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Уведіть номер сторінки", "upload_file": "Завантажити файл", "upload": "Завантажити", + "uploads": "Uploads", "allowed-file-types": "Дозволені типи файлів %1", "unsaved-changes": "У вас є незбережені зміни. Ви точно хочете піти звідси?", "reconnecting-message": "Схоже, що з'єднання з %1 було втрачено, зачекайте поки ми спробуємо приєднатися знов.", diff --git a/public/language/uk/modules.json b/public/language/uk/modules.json index 80abccb68e9d..6ca40cf30750 100644 --- a/public/language/uk/modules.json +++ b/public/language/uk/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 днів", "chat.three_months": "3 місяці", "chat.delete_message_confirm": "Ви впевнені, що хочете видалити це повідомлення?", - "chat.add-users-to-room": "Додати користувачів до кімнати", "chat.retrieving-users": "Отримання користувачів...", "chat.manage-room": "Управління чат кімнатами", - "chat.add-user-help": "Шукайте користувачів тут. Коли вибрано, користувач буде доданий до чату. Новий користувач не зможе переглядати повідомлення чату, перш ніж вони будуть додані до бесіди.", + "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.confirm-chat-with-dnd-user": "Користувач змінив свій статус на DnD (Не турбувати). Ви дійсно бажаєте надіслати йому повідомлення в чат?", - "chat.rename-room": "Перейменувати кімнату", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Введіть назву своєї кімнати тут", "chat.rename-help": "Назва кімнати, яку буде встановлено тут, буде доступна для перегляду всіма учасниками в кімнаті.", "chat.leave": "Залишити чат", "chat.leave-prompt": "Ви впевнені, що хочете залишити цей чат?", "chat.leave-help": "Залишивши цей чат, ви видалите вас із майбутньої кореспонденції у цьому чаті. Якщо ви знову будете додані в майбутньому, ви не побачите жодної історії чату перед тим, як знову приєднатися.", "chat.in-room": "У цій кімнаті", + "chat.kick": "Kick", "composer.compose": "Редактор повідомлень", "composer.show_preview": "Показати попередній перегляд", "composer.hide_preview": "Сховати попередній перегляд", diff --git a/public/language/uk/pages.json b/public/language/uk/pages.json index c91612f3521c..c7a9465a59ac 100644 --- a/public/language/uk/pages.json +++ b/public/language/uk/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Пости за які проголосував %1", "account/downvoted": "Пости проти яких проголосував %1", "account/best": "Найкращі пости %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Електронну пошту підтверджено", "maintenance.text": "%1 в данний час на технічному обслуговувані. Завітайте, будь ласка, пізніше.", "maintenance.messageIntro": "Крім того, адміністратор залишив це повідомлення:", diff --git a/public/language/uk/register.json b/public/language/uk/register.json index 907316b9e929..d6fd4ee745a2 100644 --- a/public/language/uk/register.json +++ b/public/language/uk/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "Ви маєте погодитись з Умовами користування", "registration-added-to-queue": "Ваша реєстрація була додана в чергу затвердження. Ви отримаєте листа на електронну пошту, коли адміністратор її підтвердить.", "interstitial.intro": "Нам потрібна додаткова інформація, перш ніж ми створимо ваш обліковий запис.", - "interstitial.errors-found": "Нам не вдалося вас зареєструвати:" + "interstitial.errors-found": "Нам не вдалося вас зареєструвати:", + "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 diff --git a/public/language/uk/topic.json b/public/language/uk/topic.json index aa42e4ba7d47..48e4e04fd4b0 100644 --- a/public/language/uk/topic.json +++ b/public/language/uk/topic.json @@ -118,8 +118,8 @@ "sort_by": "Сортувати за", "oldest_to_newest": "Старі > Нові", "newest_to_oldest": "Нові > Старі", - "most_votes": "Кількість голосів", - "most_posts": "Кількість постів", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Створити натомість нову тему?", "stale.warning": "Тема на котру ви відповідаєте досить стара. Не бажаєте натомість створити новую тему і зіслатися на цю у вашій відповіді?", "stale.create": "Так, створити нову тему", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Історія редагування посту", "diffs.description": "Цей пост має %1 версій. Натисніть одну з наведених нижче змін, щоб переглянути вміст публікації в той момент часу.", - "diffs.no-revisions-description": "Цей пост має %1 версій." + "diffs.no-revisions-description": "Цей пост має %1 версій.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/uk/uploads.json b/public/language/uk/uploads.json index 9e5b5b75d522..68563298cc7a 100644 --- a/public/language/uk/uploads.json +++ b/public/language/uk/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Завантаження файлу...", "select-file-to-upload": "Оберіть файл для завантаження!", "upload-success": "Файл успішно завантажено!", - "maximum-file-size": "Максимально %1 кб" + "maximum-file-size": "Максимально %1 кб", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/uk/user.json b/public/language/uk/user.json index 1eb4a2a1bbda..8d024de710d6 100644 --- a/public/language/uk/user.json +++ b/public/language/uk/user.json @@ -29,6 +29,8 @@ "ignored": "Ігнорується", "followers": "Відстежувачі", "following": "Відстежувані", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Про мене", "signature": "Підпис", "birthday": "День народження", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Цей користувач ще не голосував за жоден з постів.", "has_no_downvoted_posts": "Цей користувач ще не голосував проти жодного поста.", "has_no_voted_posts": "У цього користувача немає постів за котрі хтось голосував", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Електронна адреса прихована", "hidden": "прихований", "paginate_description": "Розбивати список тем та постів на сторінки замість нескінченної прокрутки", @@ -142,5 +145,25 @@ "info.email-history": "Історія електронної пошти", "info.moderation-note": "Коментар модератора", "info.moderation-note.success": "Коментар модератора збережено", - "info.moderation-note.add": "Додати коментар" + "info.moderation-note.add": "Додати коментар", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/vi/admin/extend/plugins.json b/public/language/vi/admin/extend/plugins.json index 05f7df4ecbad..005d9044ae8d 100644 --- a/public/language/vi/admin/extend/plugins.json +++ b/public/language/vi/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/vi/admin/general/dashboard.json b/public/language/vi/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/vi/admin/general/dashboard.json +++ b/public/language/vi/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/vi/admin/settings/group.json b/public/language/vi/admin/settings/group.json index 1ae88c9cf531..fe3e39915b3c 100644 --- a/public/language/vi/admin/settings/group.json +++ b/public/language/vi/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "Allow Group Creation", "allow-creation-help": "If enabled, users can create groups (Default: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "Maximum Group Name Length", "cover-image": "Group Cover Image", "default-cover": "Default Cover Images", diff --git a/public/language/vi/admin/settings/notifications.json b/public/language/vi/admin/settings/notifications.json index da6c9680a3db..03fa0ac66a91 100644 --- a/public/language/vi/admin/settings/notifications.json +++ b/public/language/vi/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "Notifications", "welcome-notification": "Welcome Notification", "welcome-notification-link": "Welcome Notification Link", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/vi/error.json b/public/language/vi/error.json index 5a4cfc321f1d..d57107ead1fa 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "Xin hãy nhập cả tên đăng nhập và mật khẩu", "invalid-search-term": "Từ khóa không hợp lệ", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "Hệ thống không cho phép bạn đăng nhập, có vẻ như phiên đăng nhập cũ đã hết hạn. Hãy thử đăng nhập lại", "invalid-pagination-value": "Giá trị trang không hợp lệ, tối thiểu phải là %1 và tối đa là %2", "username-taken": "Tên đăng nhập đã tồn tại", @@ -145,5 +146,7 @@ "invalid-session": "Không đúng session", "invalid-session-text": "Có vẻ như phiên đăng nhập của bạn đã không còn hoạt động nữa, hoặc không còn đúng với thông tin trên máy chủ. Vui lòng tải lại trang này", "no-topics-selected": "Không có chủ đề nào đang được chọn!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/vi/flags.json b/public/language/vi/flags.json index d05a5b25a878..35fc87011a91 100644 --- a/public/language/vi/flags.json +++ b/public/language/vi/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "Post", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "Category", diff --git a/public/language/vi/global.json b/public/language/vi/global.json index ffb7325aff0e..759d9f45559d 100644 --- a/public/language/vi/global.json +++ b/public/language/vi/global.json @@ -97,6 +97,7 @@ "enter_page_number": "Nhập vào số trang", "upload_file": "Tải file lên", "upload": "Tải lên", + "uploads": "Uploads", "allowed-file-types": "Các định dạng file được cho phép là %1", "unsaved-changes": "Có một vài thay đổi chưa được lưu. Bạn muốn rời đi ngay?", "reconnecting-message": "Có vẻ như bạn đã mất kết nối tới %1, vui lòng đợi một lúc để chúng tôi thử kết nối lại.", diff --git a/public/language/vi/modules.json b/public/language/vi/modules.json index 7f9062857132..2556db742e1c 100644 --- a/public/language/vi/modules.json +++ b/public/language/vi/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30 ngày", "chat.three_months": "3 tháng", "chat.delete_message_confirm": "Bạn có chắc chắn bạn muốn xoá tin nhắn này chứ?", - "chat.add-users-to-room": "Thêm người vào phòng", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "Soạn thảo", "composer.show_preview": "Hiện Xem trước", "composer.hide_preview": "Ẩn Xem trước", diff --git a/public/language/vi/pages.json b/public/language/vi/pages.json index aaaf1fa196c5..d4417e1d009b 100644 --- a/public/language/vi/pages.json +++ b/public/language/vi/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "Bài viết %1 tán thành", "account/downvoted": "Bài viết %1 phản đối", "account/best": "Bài viết hay nhất của %1", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "Đã xác nhận email", "maintenance.text": "%1 đang được bảo trì. Xin vui lòng quay lại sau.", "maintenance.messageIntro": "Ban quản lí để lại lời nhắn sau:", diff --git a/public/language/vi/register.json b/public/language/vi/register.json index 07a70bebe73c..64d46ace6047 100644 --- a/public/language/vi/register.json +++ b/public/language/vi/register.json @@ -19,5 +19,8 @@ "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.", "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:" + "interstitial.errors-found": "Chúng tôi không thể hoàn thành đăng ký của bạn:", + "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 diff --git a/public/language/vi/topic.json b/public/language/vi/topic.json index 130a93af9774..253298281570 100644 --- a/public/language/vi/topic.json +++ b/public/language/vi/topic.json @@ -118,8 +118,8 @@ "sort_by": "Sắp xếp theo", "oldest_to_newest": "Cũ đến mới", "newest_to_oldest": "Mới đến cũ", - "most_votes": "Bình chọn nhiều nhất", - "most_posts": "Có nhiều bài viết nhất", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "Tạo chủ đề mới?", "stale.warning": "Chủ đề bạn đang trả lời đã khá cũ. Bạn có muốn tạo chủ đề mới, và liên kết với chủ đề hiện tại trong bài viết trả lời của bạn?", "stale.create": "Tạo chủ đề mới", @@ -127,5 +127,7 @@ "link_back": "Re: [%1](%2)", "diffs.title": "Lịch sử chỉnh sửa bài viết", "diffs.description": "Bài viết này có %1 sửa đổi. Chọn một trong các thời điểm dưới đây để xem nội dung bài viết", - "diffs.no-revisions-description": "Bài viết này có %1 sửa đổi" + "diffs.no-revisions-description": "Bài viết này có %1 sửa đổi", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/vi/uploads.json b/public/language/vi/uploads.json index 8ab633f25f4b..e326f0383459 100644 --- a/public/language/vi/uploads.json +++ b/public/language/vi/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "Đang tải file lên...", "select-file-to-upload": "Chọn một file để tải lên!", "upload-success": "Tải file lên thành công!", - "maximum-file-size": "Tối đa %1 kb" + "maximum-file-size": "Tối đa %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/vi/user.json b/public/language/vi/user.json index 4a532e4f52a1..29f6b80e6208 100644 --- a/public/language/vi/user.json +++ b/public/language/vi/user.json @@ -29,6 +29,8 @@ "ignored": "Phớt lờ", "followers": "Số người theo dõi", "following": "Đang theo dõi", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "Giới thiệu bản thân", "signature": "Chữ ký", "birthday": "Ngày sinh ", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "Thành viên này chưa tán thành bài viết nào cả.", "has_no_downvoted_posts": "Thành viên này chưa phản đối bài viết nào cả.", "has_no_voted_posts": "Thành viên này không có bài viết nào được tán thành.", + "has_no_blocks": "You have blocked no users.", "email_hidden": "Ẩn Email", "hidden": "Đã ẩn", "paginate_description": "Phân trang chủ đề và bài viết thay vì sử dụng cuộn vô hạn", @@ -142,5 +145,25 @@ "info.email-history": "Lịch sử email", "info.moderation-note": "Ghi chú quản lí", "info.moderation-note.success": "Đã lưu ghi chú quản l", - "info.moderation-note.add": "Thêm ghi chú" + "info.moderation-note.add": "Thêm ghi chú", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/admin.json b/public/language/zh-CN/admin/admin.json index 6dd2b9489028..b513bdbba349 100644 --- a/public/language/zh-CN/admin/admin.json +++ b/public/language/zh-CN/admin/admin.json @@ -1,5 +1,5 @@ { - "alert.confirm-rebuild-and-restart": "Are you sure you wish to rebuild and restart NodeBB?", + "alert.confirm-rebuild-and-restart": "你确定要部署并重启 NodeBB 吗?", "alert.confirm-restart": "你确定要重启 NodeBB 吗?", "acp-title": "%1 | NodeBB 管理员控制面板", diff --git a/public/language/zh-CN/admin/extend/plugins.json b/public/language/zh-CN/admin/extend/plugins.json index 4cfbc3787562..88abc8452b59 100644 --- a/public/language/zh-CN/admin/extend/plugins.json +++ b/public/language/zh-CN/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB 联系不到包管理器,暂时不建议升级。

", "alert.incompatible": "

NodeBB 版本(v%1) 只支持到此插件的v%2版本。如需要此插件更加新的版本请先升级 NodeBB。

", "alert.possibly-incompatible": "

未找到兼容性信息

此插件未注明对应的 NodeBB 版本。可能会产生兼容问题,导致 NodeBB 无法正常启动。

NodeBB 无法正常启动时请运行以下命令:

$ ./nodebb reset plugin=\"%1\"

是否继续安装此插件的最新版本?

", + "alert.reorder": "排序后插件", + "alert.reorder-success": "请部署并重启你的 NodeBB 以便完成此流程。", "license.title": "插件许可证信息", "license.intro": "插件 %1 在 %2 下获得许可。请在激活此插件之前阅读和理解许可条款。", diff --git a/public/language/zh-CN/admin/general/dashboard.json b/public/language/zh-CN/admin/general/dashboard.json index b74de7583255..f47d17f38f9b 100644 --- a/public/language/zh-CN/admin/general/dashboard.json +++ b/public/language/zh-CN/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "页面察看", "graphs.unique-visitors": "单一访客", "graphs.registered-users": "已注册用户", - "graphs.anonymous-users": "匿名用户" + "graphs.anonymous-users": "匿名用户", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/zh-CN/admin/manage/categories.json b/public/language/zh-CN/admin/manage/categories.json index 3264a552bb83..74c3fd4d3795 100644 --- a/public/language/zh-CN/admin/manage/categories.json +++ b/public/language/zh-CN/admin/manage/categories.json @@ -5,7 +5,7 @@ "name": "版块名", "description": "版块描述", "bg-color": "背景颜色", - "text-color": "文字颜色", + "text-color": "图标颜色", "bg-image-size": "背景图片大小", "custom-class": "自定义 Class", "num-recent-replies": "最近回复数", diff --git a/public/language/zh-CN/admin/settings/group.json b/public/language/zh-CN/admin/settings/group.json index bd1771dd5708..c5b06a2b109f 100644 --- a/public/language/zh-CN/admin/settings/group.json +++ b/public/language/zh-CN/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "注意!如果这个选项未启用并且你有私有群组,那么你的群组将变为公共的。", "allow-creation": "允许创建群组", "allow-creation-help": "如果启用,用户就可以创建群组(默认:不启用)", + "allow-multiple-badges-help": "启用此选项后,用户可以选择显示多个群组徽章,需要主题支持。", "max-name-length": "群组名字的最大长度", "cover-image": "群组封面图片", "default-cover": "默认封面图片", diff --git a/public/language/zh-CN/admin/settings/notifications.json b/public/language/zh-CN/admin/settings/notifications.json index bd4ee2967f1d..544d4153825b 100644 --- a/public/language/zh-CN/admin/settings/notifications.json +++ b/public/language/zh-CN/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "通知", "welcome-notification": "欢迎通知", "welcome-notification-link": "欢迎通知链接", - "welcome-notification-uid": "用户欢迎通知 (UID)" + "welcome-notification-uid": "用户欢迎通知 (UID)", + "notification-alert-timeout": "通知与警报超时时间" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/settings/post.json b/public/language/zh-CN/admin/settings/post.json index 290fb1d07786..f23213190d7d 100644 --- a/public/language/zh-CN/admin/settings/post.json +++ b/public/language/zh-CN/admin/settings/post.json @@ -3,7 +3,7 @@ "sorting.post-default": "默认帖子排序", "sorting.oldest-to-newest": "从旧到新", "sorting.newest-to-oldest": "从新到旧", - "sorting.most-votes": "最多投票", + "sorting.most-votes": "最多赞同", "sorting.most-posts": "最多回复", "sorting.topic-default": "默认主题排序", "length": "帖子长度", diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json index d073d91f9089..761f967837a8 100644 --- a/public/language/zh-CN/error.json +++ b/public/language/zh-CN/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "请确认用户名和密码", "invalid-search-term": "无效的搜索关键字", "invalid-url": "无效的 URL", + "local-login-disabled": "已禁用非管理账户的本地登录。", "csrf-invalid": "可能是由于会话过期,登录失败。请重试。", "invalid-pagination-value": "无效的分页数值,必须介于 %1 和 %2 之间", "username-taken": "此用户名已被占用", @@ -145,5 +146,7 @@ "invalid-session": "Session 无法匹配", "invalid-session-text": "您的登入状态已经失效,或者是与服务器信息不匹配。请刷新此页面。", "no-topics-selected": "没有主题被选中!", - "cant-move-to-same-topic": "无法将帖子移动到相同的主题中!" + "cant-move-to-same-topic": "无法将帖子移动到相同的主题中!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/zh-CN/flags.json b/public/language/zh-CN/flags.json index f36901a230ef..81364046ff56 100644 --- a/public/language/zh-CN/flags.json +++ b/public/language/zh-CN/flags.json @@ -18,6 +18,7 @@ "filter-type": "举报类型", "filter-type-all": "所有内容", "filter-type-post": "帖子", + "filter-type-user": "用户", "filter-state": "状态", "filter-assignee": "受委托人 UID", "filter-cid": "版块", diff --git a/public/language/zh-CN/global.json b/public/language/zh-CN/global.json index bdb63f67483d..bcd98fb155a4 100644 --- a/public/language/zh-CN/global.json +++ b/public/language/zh-CN/global.json @@ -53,7 +53,7 @@ "topics": "主题", "posts": "帖子", "best": "最佳", - "votes": "投票", + "votes": "赞同", "upvoters": "顶的人", "upvoted": "顶", "downvoters": "踩的人", @@ -97,6 +97,7 @@ "enter_page_number": "输入页码", "upload_file": "上传文件", "upload": "上传", + "uploads": "上传", "allowed-file-types": "允许的文件类型有 %1", "unsaved-changes": "您有未保存的更改,您确定您要离开么?", "reconnecting-message": "与 %1 的连接断开,我们正在尝试重连,请耐心等待", diff --git a/public/language/zh-CN/modules.json b/public/language/zh-CN/modules.json index 0dee3dbb386c..97d48c2d53ce 100644 --- a/public/language/zh-CN/modules.json +++ b/public/language/zh-CN/modules.json @@ -20,10 +20,9 @@ "chat.thirty_days": "30天", "chat.three_months": "3个月", "chat.delete_message_confirm": "您确定删除此消息吗?", - "chat.add-users-to-room": "向此聊天室中添加成员", "chat.retrieving-users": "查找用户", "chat.manage-room": "管理聊天室", - "chat.add-user-help": "在这里查找更多用户。选中之后添加到聊天中,新用户在加入聊天之前看不到聊天消息。", + "chat.add-user-help": "在这里查找更多用户。选中之后添加到聊天中,新用户在加入聊天之前看不到聊天消息。只有聊天室所有者可以从聊天室中移除用户。", "chat.confirm-chat-with-dnd-user": "该用户将其状态设置为DnD(请勿打扰)。 你还想和他们聊天吗?", "chat.rename-room": "重命名房间", "chat.rename-placeholder": "在这里输入房间名字", @@ -32,6 +31,7 @@ "chat.leave-prompt": "您确定要离开聊天室?", "chat.leave-help": "离开此聊天会将您在聊天中的未接收的消息移除。您在重新加入之后不会看到任何聊天记录", "chat.in-room": "在此房间", + "chat.kick": "踢出", "composer.compose": "编写帮助", "composer.show_preview": "显示预览", "composer.hide_preview": "隐藏预览", diff --git a/public/language/zh-CN/pages.json b/public/language/zh-CN/pages.json index 2b0c8e73e2fa..6bb793e6e987 100644 --- a/public/language/zh-CN/pages.json +++ b/public/language/zh-CN/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "帖子被 %1 顶过", "account/downvoted": "帖子被 %1 踩过", "account/best": "%1 发布的最佳帖子", + "account/blocks": "%1 屏蔽的用户", + "account/uploads": "%1 上传的文件", "confirm": "电子邮箱已确认", "maintenance.text": "%1 正在进行维护。请稍后再来。", "maintenance.messageIntro": "此外,管理员留下的消息:", diff --git a/public/language/zh-CN/register.json b/public/language/zh-CN/register.json index af02bf10dd40..e3a048661ab3 100644 --- a/public/language/zh-CN/register.json +++ b/public/language/zh-CN/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "您必须同意使用条款", "registration-added-to-queue": "您的注册正在等待批准。一旦通过,管理员会发送邮件通知您。", "interstitial.intro": "在创建您的账户前我们需要一些额外信息。", - "interstitial.errors-found": "我们无法完成您的注册:" + "interstitial.errors-found": "我们无法完成您的注册:", + "gdpr_agree_data": "我同意此网站对我个人信息的收集与处理。", + "gdpr_agree_email": "我同意此网站向我发送摘要和通知邮件。", + "gdpr_consent_denied": "您需要同意此网站收集与处理您的个人信息,以及向您发送电子邮件。" } \ No newline at end of file diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json index bc5d88da2a1b..9db2a8a15249 100644 --- a/public/language/zh-CN/topic.json +++ b/public/language/zh-CN/topic.json @@ -118,7 +118,7 @@ "sort_by": "排序", "oldest_to_newest": "从旧到新", "newest_to_oldest": "从新到旧", - "most_votes": "最多投票", + "most_votes": "最多赞同", "most_posts": "最多回复", "stale.title": "接受建议并创建新主题?", "stale.warning": "您回复的主题已经很古老了,是否发布新主题并引用此主题的内容?", @@ -127,5 +127,7 @@ "link_back": "回复: [%1](%2)", "diffs.title": "历史发布记录", "diffs.description": "此主题已经重新发布并修订。点击某个时间点查看修订的内容。", - "diffs.no-revisions-description": "该贴已重新修改" + "diffs.no-revisions-description": "该贴已重新修改", + "diffs.current-revision": "当前版本", + "diffs.original-revision": "原始版本" } \ No newline at end of file diff --git a/public/language/zh-CN/uploads.json b/public/language/zh-CN/uploads.json index 9c86a896054e..d2ed82870602 100644 --- a/public/language/zh-CN/uploads.json +++ b/public/language/zh-CN/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "正在上传文件...", "select-file-to-upload": "请选择需要上传的文件!", "upload-success": "文件上传成功!", - "maximum-file-size": "最大 %1 kb" + "maximum-file-size": "最大 %1 kb", + "no-uploads-found": "没有找到上传文件", + "public-uploads-info": "上传文件是公开的,所有访客均可见。", + "private-uploads-info": "上传文件是私有的,仅登陆用户可见。" } \ No newline at end of file diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json index 33930bc67ac7..f85f03735a77 100644 --- a/public/language/zh-CN/user.json +++ b/public/language/zh-CN/user.json @@ -29,6 +29,8 @@ "ignored": "忽略", "followers": "粉丝", "following": "关注", + "blocks": "屏蔽", + "block_toggle": "屏蔽该用户", "aboutme": "关于我", "signature": "签名档", "birthday": "生日", @@ -85,10 +87,11 @@ "has_no_posts": "此用户从未发言。", "has_no_topics": "此用户还未发布任何主题。", "has_no_watched_topics": "此用户还未关注任何主题。", - "has_no_ignored_topics": " 此用户/会员此用户尚未忽略任何主题。", + "has_no_ignored_topics": "此用户/会员此用户尚未忽略任何主题。", "has_no_upvoted_posts": "此用户还未顶过任何帖子。", "has_no_downvoted_posts": "此用户还未踩过任何帖子。", "has_no_voted_posts": "这个用户还未评价任何帖子", + "has_no_blocks": "您没有屏蔽其他用户。", "email_hidden": "电子邮箱已隐藏", "hidden": "隐藏", "paginate_description": "使用分页式版块浏览", @@ -142,5 +145,25 @@ "info.email-history": "历史邮箱", "info.moderation-note": "版主备注", "info.moderation-note.success": "版主备注已保存", - "info.moderation-note.add": "添加备注" + "info.moderation-note.add": "添加备注", + "consent.title": "您的权利与许可", + "consent.lead": "本论坛将会收集与处理您的个人信息。", + "consent.intro": "我们收集这些信息将仅用于个性化您于本社区的体验,和关联您的账户与所发表的帖子。在注册过程中您需要提供一个用户名和电子邮件地址,您也可以选择是否提供额外的个人信息,以完善您的用户资料。

在您的用户账户有效期内,我们将保留您的信息。您可以在任何时候通过删除您的账号,以撤回您的许可。您可以在任何时候通过您的权力与许可页面,获取一份您对本论坛的贡献的副本。

如果您有任何疑问,我们鼓励您与本论坛管理团队联系。", + "consent.email_intro": "我们有时可能会向您的注册邮箱发送电子邮件,以向您提供有关于您的新动态和/或新活动。您可以通过您的用户设置页面自定义(包括直接禁用)社区摘要的发送频率,以及选择性地接收哪些类型的通知。", + "consent.digest_frequency": "本社区默认每 %1 天发送一封摘要邮件。", + "consent.digest_off": "本社区目前不发送摘要邮件。", + "consent.received": "您已许可本网站收集与处理您的个人数据。无需其他额外操作。", + "consent.not_received": "您未许可本网站收集与处理您的个人数据。本网站的管理团队可能于任何时候删除您的账户,以符合通用数据保护条例的要求。", + "consent.give": "授予许可", + "consent.right_of_access": "您拥有数据访问权", + "consent.right_of_access_description": "您有权访问本网站根据需求收集的您的任何数据。您可以点击下方相应按钮,获取这些数据的副本。", + "consent.right_to_rectification": "您拥有纠正权", + "consent.right_to_rectification_description": "您拥有修改或更新提供给我们的任何不准确的个人数据的权力。您可以通过编辑以更新个人资料,并可以修改您发表的内容。若非如此,请联系本网站的管理团队。", + "consent.right_to_erasure": "您拥有被遗忘权", + "consent.right_to_erasure_description": "您随时都可以通过删除帐号,来撤销数据收集和处理的许可。您的个人资料可以被删除,但是您发表的内容仍然会保留。如果您想要同时删除您的帐号内容,请联系此网站的管理团队。", + "consent.right_to_data_portability": "您拥有数据转移权", + "consent.right_to_data_portability_description": "您可以要求我们导出所收集的您和您的账户的任何数据的机器可读副本。您可以点击下方的按钮以获取。", + "consent.export_profile": "导出个人资料 (.csv)", + "consent.export_uploads": "导出上传文件 (.zip)", + "consent.export_posts": "导出帖子 (.csv)" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/extend/plugins.json b/public/language/zh-TW/admin/extend/plugins.json index 4e9747438095..7160b895f264 100644 --- a/public/language/zh-TW/admin/extend/plugins.json +++ b/public/language/zh-TW/admin/extend/plugins.json @@ -44,6 +44,8 @@ "alert.package-manager-unreachable": "

NodeBB could not reach the package manager, an upgrade is not suggested at this time.

", "alert.incompatible": "

Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.

", "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.reorder": "Plugins Re-ordered", + "alert.reorder-success": "Please rebuild and restart your NodeBB to fully complete the process.", "license.title": "Plugin License Information", "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", diff --git a/public/language/zh-TW/admin/general/dashboard.json b/public/language/zh-TW/admin/general/dashboard.json index 56049387eb74..ed74742f325a 100644 --- a/public/language/zh-TW/admin/general/dashboard.json +++ b/public/language/zh-TW/admin/general/dashboard.json @@ -67,5 +67,6 @@ "graphs.page-views": "Page Views", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users" + "graphs.anonymous-users": "Anonymous Users", + "last-restarted-by": "Last restarted by" } diff --git a/public/language/zh-TW/admin/settings/group.json b/public/language/zh-TW/admin/settings/group.json index acec8abd7c56..82a1f941d5db 100644 --- a/public/language/zh-TW/admin/settings/group.json +++ b/public/language/zh-TW/admin/settings/group.json @@ -5,6 +5,7 @@ "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", "allow-creation": "允許建立群組", "allow-creation-help": "如果開啟,使用者可自行建立群組 (預設: disabled)", + "allow-multiple-badges-help": "This flag can be used to allow users to select multiple group badges, requires theme support.", "max-name-length": "群組最大名稱長度", "cover-image": "群組封面圖像", "default-cover": "預設封面圖像", diff --git a/public/language/zh-TW/admin/settings/notifications.json b/public/language/zh-TW/admin/settings/notifications.json index ad5bf1c7d042..5e525a668932 100644 --- a/public/language/zh-TW/admin/settings/notifications.json +++ b/public/language/zh-TW/admin/settings/notifications.json @@ -2,5 +2,6 @@ "notifications": "告示", "welcome-notification": "歡迎告示", "welcome-notification-link": "歡迎告示連結", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Welcome Notification User (UID)", + "notification-alert-timeout": "Notification Alert Timeout" } \ No newline at end of file diff --git a/public/language/zh-TW/error.json b/public/language/zh-TW/error.json index 7792a7d7af93..0fc0b4fee295 100644 --- a/public/language/zh-TW/error.json +++ b/public/language/zh-TW/error.json @@ -18,6 +18,7 @@ "invalid-username-or-password": "請指定帳號和密碼", "invalid-search-term": "無效的搜索字詞", "invalid-url": "Invalid URL", + "local-login-disabled": "Local login system has been disabled for non-privileged accounts.", "csrf-invalid": "我們無法讓你登入,似乎是因為連線階段已到期。請再重試一次。", "invalid-pagination-value": "無效的分頁數值, 必需是至少 %1 與最多 %2", "username-taken": "該使用者名稱已被使用", @@ -145,5 +146,7 @@ "invalid-session": "會話階段錯誤", "invalid-session-text": "看起來你的登入會話階段已經無效,或是不符合於伺服器。請重新整理這個頁面。", "no-topics-selected": "No topics selected!", - "cant-move-to-same-topic": "Can't move post to same topic!" + "cant-move-to-same-topic": "Can't move post to same topic!", + "cannot-block-self": "You cannot block yourself!", + "cannot-block-privileged": "You cannot block administrators or global moderators" } \ No newline at end of file diff --git a/public/language/zh-TW/flags.json b/public/language/zh-TW/flags.json index a4d08944b7d0..5d8e09a48aa3 100644 --- a/public/language/zh-TW/flags.json +++ b/public/language/zh-TW/flags.json @@ -18,6 +18,7 @@ "filter-type": "Flag Type", "filter-type-all": "All Content", "filter-type-post": "文章", + "filter-type-user": "User", "filter-state": "State", "filter-assignee": "Assignee UID", "filter-cid": "分類", diff --git a/public/language/zh-TW/global.json b/public/language/zh-TW/global.json index af5689896b1b..abb6ef0ab502 100644 --- a/public/language/zh-TW/global.json +++ b/public/language/zh-TW/global.json @@ -97,6 +97,7 @@ "enter_page_number": "輸入頁碼", "upload_file": "上傳檔案", "upload": "上傳", + "uploads": "Uploads", "allowed-file-types": "允許的檔案類型是 %1", "unsaved-changes": "你還沒有儲存更動。你確定想要離開這個頁面?", "reconnecting-message": "看起來你的連線到 %1 已經遺失,請稍等一下我們嘗試重新連線。", diff --git a/public/language/zh-TW/modules.json b/public/language/zh-TW/modules.json index f71d06242c96..2f21de608efa 100644 --- a/public/language/zh-TW/modules.json +++ b/public/language/zh-TW/modules.json @@ -20,18 +20,18 @@ "chat.thirty_days": "30日", "chat.three_months": "3個月", "chat.delete_message_confirm": "你確定要刪除這個訊息?", - "chat.add-users-to-room": "將使用者加入聊天室中", "chat.retrieving-users": "Retrieving users...", "chat.manage-room": "Manage Chat 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.", + "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.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", - "chat.rename-room": "Rename room", + "chat.rename-room": "Rename Room", "chat.rename-placeholder": "Enter your room name here", "chat.rename-help": "The room name set here will be viewable by all participants in the room.", "chat.leave": "Leave Chat", "chat.leave-prompt": "Are you sure you wish to leave this chat?", "chat.leave-help": "Leaving this chat will remove you from future correspondence in this chat. If you are re-added in the future, you will not see any chat history from prior to your re-joining.", "chat.in-room": "In this room", + "chat.kick": "Kick", "composer.compose": "撰寫", "composer.show_preview": "顯示預覽", "composer.hide_preview": "隱藏預覽", diff --git a/public/language/zh-TW/pages.json b/public/language/zh-TW/pages.json index 43749be35d5e..79ad34726dc9 100644 --- a/public/language/zh-TW/pages.json +++ b/public/language/zh-TW/pages.json @@ -49,6 +49,8 @@ "account/upvoted": "%1 所正向投票的張貼", "account/downvoted": "%1 所負向投票的張貼", "account/best": "由 %1 建立的最佳張貼文", + "account/blocks": "Blocked users for %1", + "account/uploads": "Uploads by %1", "confirm": "已確認電子郵件", "maintenance.text": "目前 %1 正在進行維修。請稍後再來。", "maintenance.messageIntro": "此外,管理員有以下訊息:", diff --git a/public/language/zh-TW/register.json b/public/language/zh-TW/register.json index 9369d59865fe..74a92da00127 100644 --- a/public/language/zh-TW/register.json +++ b/public/language/zh-TW/register.json @@ -19,5 +19,8 @@ "terms_of_use_error": "你需要同意使用條款", "registration-added-to-queue": "你的註冊已經被加入到審核序列中。你將會在管理者批準後收到一封電子郵件。", "interstitial.intro": "我們要求一些額外的資訊,在我們建立你的帳戶之前。", - "interstitial.errors-found": "我們無法完成你的註冊" + "interstitial.errors-found": "我們無法完成你的註冊", + "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 diff --git a/public/language/zh-TW/topic.json b/public/language/zh-TW/topic.json index a965cce19b5d..3f7b884991ad 100644 --- a/public/language/zh-TW/topic.json +++ b/public/language/zh-TW/topic.json @@ -118,8 +118,8 @@ "sort_by": "排序方式", "oldest_to_newest": "從舊到新", "newest_to_oldest": "從新到舊", - "most_votes": "得票最多", - "most_posts": "最多張貼", + "most_votes": "Most Votes", + "most_posts": "Most Posts", "stale.title": "改為建立新的主題?", "stale.warning": "你正回覆的主題是非常舊的一篇。你想要改為建立一個新主題,然後參考到這篇你回覆的?", "stale.create": "建立新主題", @@ -127,5 +127,7 @@ "link_back": "回覆: [%1](%2)", "diffs.title": "Post Edit History", "diffs.description": "This post has %1 revisions. Click one of the revisions below to see the post content at that point in time.", - "diffs.no-revisions-description": "This post has %1 revisions." + "diffs.no-revisions-description": "This post has %1 revisions.", + "diffs.current-revision": "current revision", + "diffs.original-revision": "original revision" } \ No newline at end of file diff --git a/public/language/zh-TW/uploads.json b/public/language/zh-TW/uploads.json index aaef40f16c05..be45bfd4bd4e 100644 --- a/public/language/zh-TW/uploads.json +++ b/public/language/zh-TW/uploads.json @@ -2,5 +2,8 @@ "uploading-file": "檔案上傳中...", "select-file-to-upload": "選擇要上傳的檔案!", "upload-success": "檔案已成功上傳!", - "maximum-file-size": "最大大小 %1 kb" + "maximum-file-size": "最大大小 %1 kb", + "no-uploads-found": "No uploads found", + "public-uploads-info": "Uploads are public, all visitors can see them.", + "private-uploads-info": "Uploads are private, only logged in users can see them." } \ No newline at end of file diff --git a/public/language/zh-TW/user.json b/public/language/zh-TW/user.json index 5cccec7321c9..5a08d0bf217f 100644 --- a/public/language/zh-TW/user.json +++ b/public/language/zh-TW/user.json @@ -29,6 +29,8 @@ "ignored": "Ignored", "followers": "跟隨者", "following": "正在關注", + "blocks": "Blocks", + "block_toggle": "Toggle Block", "aboutme": "關於我", "signature": "簽名", "birthday": "生日", @@ -89,6 +91,7 @@ "has_no_upvoted_posts": "使用者還沒有對任何主題投正向票", "has_no_downvoted_posts": "使用者還沒有對任何主題投負向票", "has_no_voted_posts": "這個使用者沒有投票的張貼", + "has_no_blocks": "You have blocked no users.", "email_hidden": "電子郵件地址被隱藏", "hidden": "隱藏", "paginate_description": "將主題與張貼用分頁來顯示,取代使用無盡的捲動方式。", @@ -142,5 +145,25 @@ "info.email-history": "Email History", "info.moderation-note": "Moderation Note", "info.moderation-note.success": "Moderation note saved", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Add note", + "consent.title": "Your Rights & Consent", + "consent.lead": "This community forum collects and processes your personal information.", + "consent.intro": "We use this information strictly to personalise your experience in this community, as well as to associate the posts you make to your user account. During the registration step you were asked to provide a username and email address, you can also optionally provide additional information to complete your user profile on this website.

We retain this information for the life of your user account, and you are able to withdraw consent at any time by deleting your account. At any time you may request a copy of your contribution to this website, via your Rights & Consent page.

If you have any questions or concerns, we encourage you to reach out to this forum's administrative team.", + "consent.email_intro": "Occasionally, we may send emails to your registered email address in order to provide updates and/or to notify you of new activity that is pertinent to you. You can customise the frequency of the community digest (including disabling it outright), as well as select which types of notifications to receive via email, via your user settings page.", + "consent.digest_frequency": "By default, this community delivers email digests every %1.", + "consent.digest_off": "Currently, this community does not send out email digests", + "consent.received": "You have provided consent for this website to collect and process your information. No additional action is required.", + "consent.not_received": "You have not provided consent for data collection and processing. At any time this website's administration may elect to delete your account in order to become compliant with the General Data Protection Regulation.", + "consent.give": "Give consent", + "consent.right_of_access": "You have the Right of Access", + "consent.right_of_access_description": "You have the right to access any data collected by this website upon request. You can retrieve a copy of this data by clicking the appropriate button below.", + "consent.right_to_rectification": "You have the Right to Rectification", + "consent.right_to_rectification_description": "You have the right to change or update any inaccurate data provided to us. Your profile can be updated by editing your profile, and post content can always be edited. If this is not the case, please contact this site's administrative team.", + "consent.right_to_erasure": "You have the Right to Erasure", + "consent.right_to_erasure_description": "At any time, you are able to revoke your consent to data collection and/or processing by deleting your account. Your individual profile can be deleted, although your posted content will remain. If you wish to delete both your account and your content, please contact the administrative team for this website.", + "consent.right_to_data_portability": "You have the Right to Data Portability", + "consent.right_to_data_portability_description": "You may request from us a machine-readable export of any collected data about you and your account. You can do so by clicking the appropriate button below.", + "consent.export_profile": "Export Profile (.csv)", + "consent.export_uploads": "Export Uploaded Content (.zip)", + "consent.export_posts": "Export Posts (.csv)" } \ No newline at end of file diff --git a/public/src/admin/extend/plugins.js b/public/src/admin/extend/plugins.js index aa0bac657b87..a7dd240e0414 100644 --- a/public/src/admin/extend/plugins.js +++ b/public/src/admin/extend/plugins.js @@ -182,6 +182,19 @@ define('admin/extend/plugins', ['jqueryui', 'translator', 'benchpress'], functio return app.alertError(err.message); } $('#order-active-plugins-modal').modal('hide'); + + app.alert({ + alert_id: 'plugin_reordered', + title: '[[admin/extend/plugins:alert.reorder]]', + message: '[[admin/extend/plugins:alert.reorder-success]]', + type: 'success', + timeout: 5000, + clickfn: function () { + require(['admin/modules/instance'], function (instance) { + instance.rebuildAndRestart(); + }); + }, + }); }); }); diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 39cbb48c4886..291856d1752c 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -109,9 +109,8 @@ $(document).ready(function () { url = ajaxify.removeRelativePath(url.replace(/^\/|\/$/g, '')).toLowerCase(); var isClientToAdmin = url.startsWith('admin') && window.location.pathname.indexOf(RELATIVE_PATH + '/admin') !== 0; var isAdminToClient = !url.startsWith('admin') && window.location.pathname.indexOf(RELATIVE_PATH + '/admin') === 0; - var uploadsOrApi = url.startsWith('assets/') || url.startsWith('uploads') || url.startsWith('api'); - if (isClientToAdmin || isAdminToClient || uploadsOrApi) { + if (isClientToAdmin || isAdminToClient) { window.open(RELATIVE_PATH + '/' + url, '_top'); return true; } @@ -183,7 +182,7 @@ $(document).ready(function () { $(window).trigger('action:ajaxify.loadingTemplates', {}); Benchpress.parse(tpl_url, data, function (template) { - translator.translate(template, function (translatedTemplate) { + translator.translate(template, app.inAdmin ? config.acpLang : config.userLang, function (translatedTemplate) { translatedTemplate = translator.unescape(translatedTemplate); $('body').removeClass(previousBodyClass).addClass(data.bodyClass); $('#content').html(translatedTemplate); @@ -390,6 +389,13 @@ $(document).ready(function () { return; } + // Default behaviour for uploads and direct links to API urls + if (internalLink && ['/uploads', '/assets/uploads/', '/api/'].some(function (prefix) { + return String(_self.pathname).startsWith(config.relative_path + prefix); + })) { + return; + } + if (hrefEmpty(this.href) || this.protocol === 'javascript:' || $(this).attr('href') === '#') { return e.preventDefault(); } diff --git a/public/src/client/account/blocks.js b/public/src/client/account/blocks.js new file mode 100644 index 000000000000..f6ef1154d07b --- /dev/null +++ b/public/src/client/account/blocks.js @@ -0,0 +1,43 @@ +'use strict'; + +define('forum/account/blocks', ['forum/account/header', 'autocomplete'], function (header, autocomplete) { + var Blocks = {}; + + Blocks.init = function () { + header.init(); + + autocomplete.user($('#user-search'), function (ev, ui) { + app.parseAndTranslate('account/blocks', 'edit', { + edit: [ui.item.user], + }, function (html) { + $('.block-edit').html(html); + }); + }); + + $('.block-edit').on('click', '[data-action="toggle"]', function () { + var uid = parseInt(this.getAttribute('data-uid'), 10); + socket.emit('user.toggleBlock', { + uid: uid, + }, Blocks.refreshList); + }); + }; + + Blocks.refreshList = function (err) { + if (err) { + return app.alertError(err.message); + } + + $.get(config.relative_path + '/api/' + ajaxify.currentPage) + .done(function (payload) { + app.parseAndTranslate('account/blocks', 'users', payload, function (html) { + $('#users-container').html(html); + $('#users-container').siblings('div.alert')[html.length ? 'hide' : 'show'](); + }); + }) + .fail(function () { + ajaxify.go(ajaxify.currentPage); + }); + }; + + return Blocks; +}); diff --git a/public/src/client/account/consent.js b/public/src/client/account/consent.js new file mode 100644 index 000000000000..f038c7acea15 --- /dev/null +++ b/public/src/client/account/consent.js @@ -0,0 +1,22 @@ +'use strict'; + + +define('forum/account/consent', ['forum/account/header'], function (header) { + var Consent = {}; + + Consent.init = function () { + header.init(); + + $('[data-action="consent"]').on('click', function () { + socket.emit('user.gdpr.consent', {}, function (err) { + if (err) { + return app.alertError(err.message); + } + + ajaxify.refresh(); + }); + }); + }; + + return Consent; +}); diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js index 8b270a8fd26c..9956c659c6d7 100644 --- a/public/src/client/account/edit.js +++ b/public/src/client/account/edit.js @@ -37,6 +37,8 @@ define('forum/account/edit', ['forum/account/header', 'translator', 'components' aboutme: $('#inputAboutMe').val(), }; + userData.groupTitle = JSON.stringify(Array.isArray(userData.groupTitle) ? userData.groupTitle : [userData.groupTitle]); + $(window).trigger('action:profile.update', userData); socket.emit('user.updateProfile', userData, function (err, data) { diff --git a/public/src/client/account/uploads.js b/public/src/client/account/uploads.js new file mode 100644 index 000000000000..222e30e9a0b1 --- /dev/null +++ b/public/src/client/account/uploads.js @@ -0,0 +1,24 @@ +'use strict'; + +define('forum/account/uploads', ['forum/account/header'], function (header) { + var AccountUploads = {}; + + AccountUploads.init = function () { + header.init(); + + $('[data-action="delete"]').on('click', function () { + var el = $(this).parents('[data-name]'); + var name = el.attr('data-name'); + + socket.emit('user.deleteUpload', { name: name, uid: ajaxify.data.uid }, function (err) { + if (err) { + return app.alertError(err.message); + } + el.remove(); + }); + return false; + }); + }; + + return AccountUploads; +}); diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 4b1e3b0fd59a..51651853b9ae 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -189,6 +189,7 @@ define('forum/chats', [ modal.attr('component', 'chat/manage-modal'); Chats.refreshParticipantsList(roomId, modal); + Chats.addKickHandler(roomId, modal); var searchInput = modal.find('input'); var errorEl = modal.find('.text-danger'); @@ -215,6 +216,23 @@ define('forum/chats', [ }); }; + Chats.addKickHandler = function (roomId, modal) { + modal.on('click', '[data-action="kick"]', function () { + var uid = parseInt(this.getAttribute('data-uid'), 10); + + socket.emit('modules.chats.removeUserFromRoom', { + roomId: roomId, + uid: uid, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + + Chats.refreshParticipantsList(roomId, modal); + }); + }); + }; + Chats.addLeaveHandler = function (roomId, buttonEl) { buttonEl.on('click', function () { bootbox.confirm({ @@ -254,7 +272,7 @@ define('forum/chats', [ }); } - Benchpress.parse('partials/modals/manage_room_users', { + app.parseAndTranslate('partials/modals/manage_room_users', { users: users, }, function (html) { listEl.html(html); diff --git a/public/src/client/topic/diffs.js b/public/src/client/topic/diffs.js index be7b5b07310b..6d25d1d4e3c4 100644 --- a/public/src/client/topic/diffs.js +++ b/public/src/client/topic/diffs.js @@ -15,6 +15,8 @@ define('forum/topic/diffs', ['forum/topic/images', 'benchpress', 'translator'], return app.alertError(err.message); } + timestamps.unshift(Date.now()); + Benchpress.parse('partials/modals/post_history', { diffs: timestamps.map(function (timestamp) { timestamp = parseInt(timestamp, 10); diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 72a416d04f0c..f8f44b15cdb0 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -18,6 +18,7 @@ define('chat', [ module.prepareDOM = function () { var chatsToggleEl = components.get('chat/dropdown'); var chatsListEl = components.get('chat/list'); + var chatsDropdownWrapper = chatsToggleEl.parents('.dropdown'); chatsToggleEl.on('click', function () { if (chatsToggleEl.parent().hasClass('open')) { @@ -27,6 +28,10 @@ define('chat', [ module.loadChatsDropdown(chatsListEl); }); + if (chatsDropdownWrapper.hasClass('open')) { + module.loadChatsDropdown(chatsListEl); + } + chatsListEl.on('click', '[data-roomid]', function (ev) { if ($(ev.target).parents('.user-link').length) { return; diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js index 92574f3eb14e..4a5f86c6258e 100644 --- a/public/src/modules/notifications.js +++ b/public/src/modules/notifications.js @@ -10,6 +10,7 @@ define('notifications', ['sounds', 'translator', 'components', 'navigator', 'ben var notifContainer = components.get('notifications'); var notifTrigger = notifContainer.children('a'); var notifList = components.get('notifications/list'); + var notifDropdownWrapper = notifTrigger.parents('.dropdown'); notifTrigger.on('click', function (e) { e.preventDefault(); @@ -20,6 +21,10 @@ define('notifications', ['sounds', 'translator', 'components', 'navigator', 'ben Notifications.loadNotifications(notifList); }); + if (notifDropdownWrapper.hasClass('open')) { + Notifications.loadNotifications(notifList); + } + notifList.on('click', '[data-nid]', function (ev) { var notifEl = $(this); if (scrollToPostIndexIfOnPage(notifEl)) { @@ -70,7 +75,7 @@ define('notifications', ['sounds', 'translator', 'components', 'navigator', 'ben var payload = { alert_id: 'new_notif', title: '[[notifications:new_notification]]', - timeout: 2000, + timeout: parseInt(config.notificationAlertTimeout, 10) || 5000, }; if (notifData.path) { diff --git a/public/src/sockets.js b/public/src/sockets.js index 1aaf02ca5377..0a0c295217a6 100644 --- a/public/src/sockets.js +++ b/public/src/sockets.js @@ -17,30 +17,36 @@ app.isConnected = false; socket = io(config.websocketAddress, ioParams); - socket.on('connect', onConnect); + if (parseInt(app.user.uid, 10) >= 0) { + addHandlers(); + } - socket.on('reconnecting', onReconnecting); + function addHandlers() { + socket.on('connect', onConnect); - socket.on('disconnect', onDisconnect); + socket.on('reconnecting', onReconnecting); - socket.on('reconnect_failed', function () { - // Wait ten times the reconnection delay and then start over - setTimeout(socket.connect.bind(socket), parseInt(config.reconnectionDelay, 10) * 10); - }); + socket.on('disconnect', onDisconnect); - socket.on('checkSession', function (uid) { - if (parseInt(uid, 10) !== parseInt(app.user.uid, 10)) { - app.handleInvalidSession(); - } - }); + socket.on('reconnect_failed', function () { + // Wait ten times the reconnection delay and then start over + setTimeout(socket.connect.bind(socket), parseInt(config.reconnectionDelay, 10) * 10); + }); - socket.on('setHostname', function (hostname) { - app.upstreamHost = hostname; - }); + socket.on('checkSession', function (uid) { + if (parseInt(uid, 10) !== parseInt(app.user.uid, 10)) { + app.handleInvalidSession(); + } + }); - socket.on('event:banned', onEventBanned); + socket.on('setHostname', function (hostname) { + app.upstreamHost = hostname; + }); + + socket.on('event:banned', onEventBanned); - socket.on('event:alert', app.alert); + socket.on('event:alert', app.alert); + } function onConnect() { app.isConnected = true; diff --git a/src/categories/create.js b/src/categories/create.js index a766ea020486..7af9e5c5c37e 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -79,6 +79,7 @@ module.exports = function (Categories) { async.apply(privileges.categories.give, defaultPrivileges, category.cid, 'administrators'), async.apply(privileges.categories.give, defaultPrivileges, category.cid, 'registered-users'), async.apply(privileges.categories.give, ['find', 'read', 'topics:read'], category.cid, 'guests'), + async.apply(privileges.categories.give, ['find', 'read', 'topics:read'], category.cid, 'spiders'), ], next); }, function (results, next) { diff --git a/src/categories/topics.js b/src/categories/topics.js index 32022b7a967e..a56545cfa960 100644 --- a/src/categories/topics.js +++ b/src/categories/topics.js @@ -7,6 +7,7 @@ var db = require('../database'); var topics = require('../topics'); var plugins = require('../plugins'); var meta = require('../meta'); +var user = require('../user'); module.exports = function (Categories) { Categories.getCategoryTopics = function (data, callback) { @@ -20,6 +21,7 @@ module.exports = function (Categories) { function (tids, next) { topics.getTopicsByTids(tids, data.uid, next); }, + async.apply(user.blocks.filter, data.uid), function (topics, next) { if (!topics.length) { return next(null, { topics: [], uid: data.uid }); diff --git a/src/controllers/accounts.js b/src/controllers/accounts.js index a7aa1716b4ee..0f31595ef442 100644 --- a/src/controllers/accounts.js +++ b/src/controllers/accounts.js @@ -11,6 +11,9 @@ var accountsController = { notifications: require('./accounts/notifications'), chats: require('./accounts/chats'), session: require('./accounts/session'), + blocks: require('./accounts/blocks'), + uploads: require('./accounts/uploads'), + consent: require('./accounts/consent'), }; module.exports = accountsController; diff --git a/src/controllers/accounts/blocks.js b/src/controllers/accounts/blocks.js new file mode 100644 index 000000000000..f37590ca5374 --- /dev/null +++ b/src/controllers/accounts/blocks.js @@ -0,0 +1,60 @@ +'use strict'; + +var async = require('async'); + +var helpers = require('../helpers'); +var accountHelpers = require('./helpers'); +var pagination = require('../../pagination'); +var user = require('../../user'); +var plugins = require('../../plugins'); + +var blocksController = {}; + +blocksController.getBlocks = function (req, res, callback) { + var userData; + + var page = parseInt(req.query.page, 10) || 1; + var resultsPerPage = 50; + var start = Math.max(0, page - 1) * resultsPerPage; + var stop = start + resultsPerPage - 1; + + async.waterfall([ + function (next) { + accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); + }, + function (_userData, next) { + userData = _userData; + if (!userData) { + return callback(); + } + + user.blocks.list(res.locals.uid, next); + }, + function (uids, next) { + plugins.fireHook('filter:user.getBlocks', { + uids: uids, + uid: res.locals.uid, + start: start, + stop: stop, + }, next); + }, + function (data, next) { + user.getUsers(data.uids, res.locals.uid, next); + }, + ], function (err, users) { + if (err) { + return callback(err); + } + + userData.users = users; + userData.title = '[[pages:account/blocks, ' + userData.username + ']]'; + var count = userData.blocksCount; + var pageCount = Math.ceil(count / resultsPerPage); + userData.pagination = pagination.create(page, pageCount); + userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:blocks]]' }]); + + res.render('account/blocks', userData); + }); +}; + +module.exports = blocksController; diff --git a/src/controllers/accounts/consent.js b/src/controllers/accounts/consent.js new file mode 100644 index 000000000000..e5204ce448bc --- /dev/null +++ b/src/controllers/accounts/consent.js @@ -0,0 +1,53 @@ +'use strict'; + +var async = require('async'); + +var db = require('../../database'); +var meta = require('../../meta'); +var helpers = require('../helpers'); +var accountHelpers = require('./helpers'); + +var consentController = {}; + +consentController.get = function (req, res, next) { + var userData; + + async.waterfall([ + function (next) { + accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); + }, + function (_userData, next) { + userData = _userData; + if (!userData) { + return next(); + } + + // Direct database call is used here because `gdpr_consent` is a protected user field and is automatically scrubbed from standard user data retrieval calls + db.getObjectField('user:' + userData.uid, 'gdpr_consent', function (err, consented) { + if (err) { + return next(err); + } + + userData.gdpr_consent = !!parseInt(consented, 10); + + next(null, userData); + }); + }, + ], function (err, userData) { + if (err) { + return next(err); + } + + userData.digest = { + frequency: meta.config.dailyDigestFreq, + enabled: meta.config.dailyDigestFreq !== 'off', + }; + + userData.title = '[[user:consent.title]]'; + userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:consent.title]]' }]); + + res.render('account/consent', userData); + }); +}; + +module.exports = consentController; diff --git a/src/controllers/accounts/edit.js b/src/controllers/accounts/edit.js index 08f5edfaf313..af92cdc7bcd1 100644 --- a/src/controllers/accounts/edit.js +++ b/src/controllers/accounts/edit.js @@ -17,9 +17,17 @@ var editController = module.exports; editController.get = function (req, res, callback) { async.waterfall([ function (next) { - accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); + async.parallel({ + userData: function (next) { + accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); + }, + canUseSignature: function (next) { + privileges.global.can('signature', req.uid, next); + }, + }, next); }, - function (userData, next) { + function (results, next) { + var userData = results.userData; if (!userData) { return callback(); } @@ -27,18 +35,23 @@ editController.get = function (req, res, callback) { userData.maximumAboutMeLength = parseInt(meta.config.maximumAboutMeLength, 10) || 1000; userData.maximumProfileImageSize = parseInt(meta.config.maximumProfileImageSize, 10); userData.allowProfileImageUploads = parseInt(meta.config.allowProfileImageUploads, 10) === 1; + userData.allowMultipleBadges = parseInt(meta.config.allowMultipleBadges, 10) === 1; userData.allowAccountDelete = parseInt(meta.config.allowAccountDelete, 10) === 1; userData.allowWebsite = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:website'], 10) || 0); userData.allowAboutMe = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:aboutme'], 10) || 0); - userData.allowSignature = !userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:signature'], 10) || 0); + userData.allowSignature = results.canUseSignature && (!userData.isSelf || parseInt(userData.reputation, 10) >= (parseInt(meta.config['min:rep:signature'], 10) || 0)); userData.profileImageDimension = parseInt(meta.config.profileImageDimension, 10) || 200; userData.defaultAvatar = user.getDefaultAvatar(); userData.groups = userData.groups.filter(function (group) { return group && group.userTitleEnabled && !groups.isPrivilegeGroup(group.name) && group.name !== 'registered-users'; }); + + if (!userData.allowMultipleBadges) { + userData.groupTitle = userData.groupTitleArray[0]; + } userData.groups.forEach(function (group) { - group.selected = group.name === userData.groupTitle; + group.selected = userData.groupTitleArray.includes(group.name); }); userData.title = '[[pages:account/edit, ' + userData.username + ']]'; diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js index bc43213de050..4dfc7855b839 100644 --- a/src/controllers/accounts/helpers.js +++ b/src/controllers/accounts/helpers.js @@ -68,6 +68,17 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { globalMod: true, admin: true, }, + }, { + id: 'consent', + route: 'consent', + name: '[[user:consent.title]]', + visibility: { + self: true, + other: false, + moderator: false, + globalMod: false, + admin: false, + }, }], }, next); }, @@ -157,6 +168,7 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { userData.websiteName = userData.website.replace(validator.escape('http://'), '').replace(validator.escape('https://'), ''); userData.followingCount = parseInt(userData.followingCount, 10) || 0; userData.followerCount = parseInt(userData.followerCount, 10) || 0; + userData.blocksCount = parseInt(userData.blocksCount, 10) || 0; userData.email = validator.escape(String(userData.email || '')); userData.fullname = validator.escape(String(userData.fullname || '')); diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js index fc9f9cb5b42a..5d33e198fc4c 100644 --- a/src/controllers/accounts/profile.js +++ b/src/controllers/accounts/profile.js @@ -122,8 +122,9 @@ profileController.get = function (req, res, callback) { } ); } - userData.selectedGroup = userData.groups.find(function (group) { - return group && group.name === userData.groupTitle; + + userData.selectedGroup = userData.groups.filter(function (group) { + return group && userData.groupTitleArray.includes(group.name); }); plugins.fireHook('filter:user.account', { userData: userData, uid: req.uid }, next); diff --git a/src/controllers/accounts/settings.js b/src/controllers/accounts/settings.js index 5166222706f9..5f5bb57aa7d5 100644 --- a/src/controllers/accounts/settings.js +++ b/src/controllers/accounts/settings.js @@ -9,6 +9,7 @@ var meta = require('../../meta'); var plugins = require('../../plugins'); var privileges = require('../../privileges'); var categories = require('../../categories'); +var notifications = require('../../notifications'); var db = require('../../database'); var helpers = require('../helpers'); var accountHelpers = require('./helpers'); @@ -180,15 +181,6 @@ settingsController.get = function (req, res, callback) { }; function getNotificationSettings(userData, callback) { - var types = [ - 'notificationType_upvote', - 'notificationType_new-topic', - 'notificationType_new-reply', - 'notificationType_follow', - 'notificationType_new-chat', - 'notificationType_group-invite', - ]; - var privilegedTypes = []; async.waterfall([ @@ -206,8 +198,7 @@ function getNotificationSettings(userData, callback) { privilegedTypes.push('notificationType_new-user-flag'); } plugins.fireHook('filter:user.notificationTypes', { - userData: userData, - types: types, + types: notifications.baseTypes.slice(), privilegedTypes: privilegedTypes, }, next); }, diff --git a/src/controllers/accounts/uploads.js b/src/controllers/accounts/uploads.js new file mode 100644 index 000000000000..21a52875508a --- /dev/null +++ b/src/controllers/accounts/uploads.js @@ -0,0 +1,57 @@ +'use strict'; + + +var async = require('async'); +var nconf = require('nconf'); + +var db = require('../../database'); +var helpers = require('../helpers'); +var meta = require('../../meta'); +var pagination = require('../../pagination'); +var accountHelpers = require('./helpers'); + +var uploadsController = module.exports; + +uploadsController.get = function (req, res, callback) { + var userData; + + var page = Math.max(1, parseInt(req.query.page, 10) || 1); + var itemsPerPage = 25; + + async.waterfall([ + function (next) { + accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); + }, + function (_userData, next) { + userData = _userData; + if (!userData) { + return callback(); + } + + var start = (page - 1) * itemsPerPage; + var stop = start + itemsPerPage - 1; + async.parallel({ + itemCount: function (next) { + db.sortedSetCard('uid:' + userData.uid + ':uploads', next); + }, + uploadNames: function (next) { + db.getSortedSetRevRange('uid:' + userData.uid + ':uploads', start, stop, next); + }, + }, next); + }, + function (results) { + userData.uploads = results.uploadNames.map(function (uploadName) { + return { + name: uploadName, + url: nconf.get('upload_url') + uploadName, + }; + }); + var pageCount = Math.ceil(results.itemCount / itemsPerPage); + userData.pagination = pagination.create(page, pageCount, req.query); + userData.privateUploads = parseInt(meta.config.privateUploads, 10) === 1; + userData.title = '[[pages:account/uploads, ' + userData.username + ']]'; + userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[global:uploads]]' }]); + res.render('account/uploads', userData); + }, + ], callback); +}; diff --git a/src/controllers/admin/dashboard.js b/src/controllers/admin/dashboard.js index 6d804faf4720..58aa633e6954 100644 --- a/src/controllers/admin/dashboard.js +++ b/src/controllers/admin/dashboard.js @@ -9,6 +9,8 @@ var versions = require('../../admin/versions'); var db = require('../../database'); var meta = require('../../meta'); var plugins = require('../../plugins'); +var user = require('../../user'); +var utils = require('../../utils'); var dashboardController = module.exports; @@ -51,6 +53,9 @@ dashboardController.get = function (req, res, next) { next(null, err ? null : result); }); }, + lastrestart: function (next) { + getLastRestart(next); + }, }, next); }, function (results) { @@ -65,6 +70,7 @@ dashboardController.get = function (req, res, next) { notices: results.notices, stats: results.stats, canRestart: !!process.send, + lastrestart: results.lastrestart, }); }, ], next); @@ -128,3 +134,24 @@ function getGlobalField(field, callback) { callback(err, parseInt(count, 10) || 0); }); } + +function getLastRestart(callback) { + var lastrestart; + async.waterfall([ + function (next) { + db.getObject('lastrestart', next); + }, + function (_lastrestart, next) { + lastrestart = _lastrestart; + if (!lastrestart) { + return callback(); + } + user.getUserData(lastrestart.uid, next); + }, + function (userData, next) { + lastrestart.user = userData; + lastrestart.timestampISO = utils.toISOString(lastrestart.timestamp); + next(null, lastrestart); + }, + ], callback); +} diff --git a/src/controllers/admin/settings.js b/src/controllers/admin/settings.js index 678a9e4e8cdd..d711e7cdcc91 100644 --- a/src/controllers/admin/settings.js +++ b/src/controllers/admin/settings.js @@ -4,7 +4,7 @@ var async = require('async'); var meta = require('../../meta'); var emailer = require('../../emailer'); -var plugins = require('../../plugins'); +var notifications = require('../../notifications'); var settingsController = module.exports; @@ -45,32 +45,12 @@ function renderEmail(req, res, next) { } function renderUser(req, res, next) { - var types = [ - 'notificationType_upvote', - 'notificationType_new-topic', - 'notificationType_new-reply', - 'notificationType_follow', - 'notificationType_new-chat', - 'notificationType_group-invite', - ]; - - var privilegedTypes = [ - 'notificationType_new-register', - 'notificationType_post-queue', - 'notificationType_new-post-flag', - 'notificationType_new-user-flag', - ]; - async.waterfall([ function (next) { - plugins.fireHook('filter:user.notificationTypes', { - userData: {}, - types: types, - privilegedTypes: privilegedTypes, - }, next); + notifications.getAllNotificationTypes(next); }, - function (results) { - var notificationSettings = results.types.concat(results.privilegedTypes).map(function (type) { + function (notificationTypes) { + var notificationSettings = notificationTypes.map(function (type) { return { name: type, label: '[[notifications:' + type + ']]', diff --git a/src/controllers/admin/uploads.js b/src/controllers/admin/uploads.js index 61d98960c61a..6913c1c78373 100644 --- a/src/controllers/admin/uploads.js +++ b/src/controllers/admin/uploads.js @@ -8,6 +8,7 @@ var fs = require('fs'); var jimp = require('jimp'); var meta = require('../../meta'); +var posts = require('../../posts'); var file = require('../../file'); var image = require('../../image'); var plugins = require('../../plugins'); @@ -41,23 +42,46 @@ uploadsController.get = function (req, res, next) { filesToData(currentFolder, files, next); }, - function (files) { + function (files, next) { + // Float directories to the top files.sort(function (a, b) { if (a.isDirectory && !b.isDirectory) { return -1; } else if (!a.isDirectory && b.isDirectory) { return 1; + } else if (!a.isDirectory && !b.isDirectory) { + return a.mtime < b.mtime ? -1 : 1; } + return 0; }); - res.render('admin/manage/uploads', { - currentFolder: currentFolder.replace(nconf.get('upload_path'), ''), - files: files, - breadcrumbs: buildBreadcrumbs(currentFolder), - pagination: pagination.create(page, Math.ceil(itemCount / itemsPerPage), req.query), - }); + + // Add post usage info if in /files + if (req.query.dir === '/files') { + posts.uploads.getUsage(files, function (err, usage) { + files.forEach(function (file, idx) { + file.inPids = usage[idx].map(pid => parseInt(pid, 10)); + }); + + next(err, files); + }); + } else { + setImmediate(next, null, files); + } }, - ], next); + ], function (err, files) { + if (err) { + return next(err); + } + + res.render('admin/manage/uploads', { + currentFolder: currentFolder.replace(nconf.get('upload_path'), ''), + showPids: files[0].hasOwnProperty('inPids'), + files: files, + breadcrumbs: buildBreadcrumbs(currentFolder), + pagination: pagination.create(page, Math.ceil(itemCount / itemsPerPage), req.query), + }); + }); }; function buildBreadcrumbs(currentFolder) { @@ -68,7 +92,9 @@ function buildBreadcrumbs(currentFolder) { var dir = path.join(currentPath, part); crumbs.push({ text: part || 'Uploads', - url: part ? '/admin/manage/uploads?dir=' + dir : '/admin/manage/uploads', + url: part + ? (nconf.get('relative_path') + '/admin/manage/uploads?dir=' + dir) + : nconf.get('relative_path') + '/admin/manage/uploads', }); currentPath = dir; }); @@ -102,6 +128,7 @@ function filesToData(currentDir, files, callback) { sizeHumanReadable: (stat.size / 1024).toFixed(1) + 'KiB', isDirectory: stat.isDirectory(), isFile: stat.isFile(), + mtime: stat.mtimeMs, }); }, ], next); diff --git a/src/controllers/api.js b/src/controllers/api.js index ed8ad6470053..5e3cb279425a 100644 --- a/src/controllers/api.js +++ b/src/controllers/api.js @@ -53,6 +53,7 @@ apiController.loadConfig = function (req, callback) { config.defaultLang = meta.config.defaultLang || 'en-GB'; config.userLang = req.query.lang ? validator.escape(String(req.query.lang)) : config.defaultLang; config.loggedIn = !!req.user; + config.uid = req.uid; config['cache-buster'] = meta.config['cache-buster'] || ''; config.requireEmailConfirmation = parseInt(meta.config.requireEmailConfirmation, 10) === 1; config.topicPostSort = meta.config.topicPostSort || 'oldest_to_newest'; @@ -62,6 +63,7 @@ apiController.loadConfig = function (req, callback) { config.bootswatchSkin = meta.config.bootswatchSkin || 'noskin'; config.defaultBootswatchSkin = meta.config.bootswatchSkin || 'noskin'; config.enablePostHistory = parseInt(meta.config.enablePostHistory || 1, 10) === 1; + config.notificationAlertTimeout = parseInt(meta.config.notificationAlertTimeout, 10) || 5000; if (config.useOutgoingLinksPage) { config.outgoingLinksWhitelist = meta.config['outgoingLinks:whitelist']; diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js index 88d0ec5b49eb..643b898843b6 100644 --- a/src/controllers/authentication.js +++ b/src/controllers/authentication.js @@ -152,7 +152,12 @@ authenticationController.registerComplete = function (req, res, next) { var callbacks = data.interstitials.reduce(function (memo, cur) { if (cur.hasOwnProperty('callback') && typeof cur.callback === 'function') { - memo.push(async.apply(cur.callback, req.session.registration, req.body)); + memo.push(function (next) { + cur.callback(req.session.registration, req.body, function (err) { + // Pass error as second argument so all callbacks are executed + next(null, err); + }); + }); } return memo; @@ -170,9 +175,15 @@ authenticationController.registerComplete = function (req, res, next) { } }; - async.parallel(callbacks, function (err) { - if (err) { - req.flash('error', err.message); + async.parallel(callbacks, function (_blank, err) { + if (err.length) { + err = err.filter(Boolean).map(function (err) { + return err.message; + }); + } + + if (err.length) { + req.flash('errors', err); return res.redirect(nconf.get('relative_path') + '/register/complete'); } @@ -180,8 +191,18 @@ authenticationController.registerComplete = function (req, res, next) { res.locals.processLogin = true; registerAndLoginUser(req, res, req.session.registration, done); } else { - // Clear registration data in session - done(); + // Update user hash, clear registration data in session + const payload = req.session.registration; + const uid = payload.uid; + delete payload.uid; + + Object.keys(payload).forEach((prop) => { + if (typeof payload[prop] === 'boolean') { + payload[prop] = payload[prop] ? 1 : 0; + } + }); + + user.setUserFields(uid, payload, done); } }); }); @@ -380,8 +401,8 @@ authenticationController.localLogin = function (req, username, password, next) { userData: function (next) { db.getObjectFields('user:' + uid, ['password', 'passwordExpiry'], next); }, - isAdmin: function (next) { - user.isAdministrator(uid, next); + isAdminOrGlobalMod: function (next) { + user.isAdminOrGlobalMod(uid, next); }, banned: function (next) { user.isBanned(uid, next); @@ -391,9 +412,9 @@ authenticationController.localLogin = function (req, username, password, next) { function (result, next) { userData = result.userData; userData.uid = uid; - userData.isAdmin = result.isAdmin; + userData.isAdminOrGlobalMod = result.isAdminOrGlobalMod; - if (!result.isAdmin && parseInt(meta.config.allowLocalLogin, 10) === 0) { + if (!result.isAdminOrGlobalMod && parseInt(meta.config.allowLocalLogin, 10) === 0) { return next(new Error('[[error:local-login-disabled]]')); } diff --git a/src/controllers/index.js b/src/controllers/index.js index 550130ce920c..052995c60bf1 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -197,7 +197,7 @@ Controllers.registerInterstitial = function (req, res, next) { if (!data.interstitials.length) { // No interstitials, redirect to home delete req.session.registration; - return res.redirect('/'); + return res.redirect(nconf.get('relative_path') + '/'); } var renders = data.interstitials.map(function (interstitial) { return async.apply(req.app.render.bind(req.app), interstitial.template, interstitial.data || {}); @@ -207,7 +207,7 @@ Controllers.registerInterstitial = function (req, res, next) { async.parallel(renders, next); }, function (sections) { - var errors = req.flash('error'); + var errors = req.flash('errors'); res.render('registerComplete', { title: '[[pages:registration-complete]]', errors: errors, diff --git a/src/controllers/mods.js b/src/controllers/mods.js index 69bfd7fbbfcb..52403a595032 100644 --- a/src/controllers/mods.js +++ b/src/controllers/mods.js @@ -7,15 +7,17 @@ var categories = require('../categories'); var flags = require('../flags'); var analytics = require('../analytics'); var plugins = require('../plugins'); -var adminPostQueueController = require('./admin/postqueue'); +var pagination = require('../pagination'); +var adminPostQueueController = require('./admin/postqueue'); var modsController = module.exports; modsController.flags = {}; modsController.flags.list = function (req, res, next) { var filters; var hasFilter; - var validFilters = ['assignee', 'state', 'reporterId', 'type', 'targetUid', 'cid', 'quick']; + var validFilters = ['assignee', 'state', 'reporterId', 'type', 'targetUid', 'cid', 'quick', 'page', 'perPage']; + async.waterfall([ function (next) { async.parallel({ @@ -62,6 +64,11 @@ modsController.flags.list = function (req, res, next) { } } + // Pagination doesn't count as a filter + if (Object.keys(filters).length === 2 && filters.hasOwnProperty('page') && filters.hasOwnProperty('perPage')) { + hasFilter = false; + } + async.parallel({ flags: async.apply(flags.list, filters, req.uid), analytics: async.apply(analytics.getDailyStatsForSet, 'analytics:flags', Date.now(), 30), @@ -92,12 +99,13 @@ modsController.flags.list = function (req, res, next) { }, {}); res.render('flags/list', { - flags: data.flags, + flags: data.flags.flags, analytics: data.analytics, categories: data.categories, hasFilter: hasFilter, filters: filters, title: '[[pages:flags]]', + pagination: pagination.create(data.flags.page, data.flags.pageCount, req.query), }); }, ], next); diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 9e89a1e92936..40299ceb9b43 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -145,6 +145,7 @@ topicsController.get = function (req, res, callback) { topicData.postEditDuration = parseInt(meta.config.postEditDuration, 10) || 0; topicData.postDeleteDuration = parseInt(meta.config.postDeleteDuration, 10) || 0; topicData.scrollToMyPost = settings.scrollToMyPost; + topicData.allowMultipleBadges = parseInt(meta.config.allowMultipleBadges, 10) === 1; topicData.rssFeedUrl = nconf.get('relative_path') + '/topic/' + topicData.tid + '.rss'; if (req.loggedIn) { topicData.rssFeedUrl += '?uid=' + req.uid + '&token=' + rssToken; diff --git a/src/controllers/unread.js b/src/controllers/unread.js index b4b8e23f382f..d7de3d8e9163 100644 --- a/src/controllers/unread.js +++ b/src/controllers/unread.js @@ -54,6 +54,12 @@ unreadController.get = function (req, res, next) { cutoff: cutoff, }, next); }, + function (data, next) { + user.blocks.filter(req.uid, data.topics, function (err, filtered) { + data.topics = filtered; + next(err, data); + }); + }, function (data) { data.title = meta.config.homePageTitle || '[[pages:home]]'; data.pageCount = Math.max(1, Math.ceil(data.topicCount / settings.topicsPerPage)); diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js index 167f023a3df4..4c013c3cf32b 100644 --- a/src/controllers/uploads.js +++ b/src/controllers/uploads.js @@ -5,13 +5,14 @@ var async = require('async'); var nconf = require('nconf'); var validator = require('validator'); +var db = require('../database'); var meta = require('../meta'); var file = require('../file'); var plugins = require('../plugins'); var image = require('../image'); var privileges = require('../privileges'); -var uploadsController = {}; +var uploadsController = module.exports; uploadsController.upload = function (req, res, filesIterator) { var files = req.files.files; @@ -94,7 +95,10 @@ function uploadAsFile(req, uploadedFile, callback) { uploadsController.uploadFile(req.uid, uploadedFile, next); }, function (fileObj, next) { - next(null, { url: fileObj.url }); + next(null, { + url: fileObj.url, + name: fileObj.name, + }); }, ], callback); } @@ -211,7 +215,7 @@ uploadsController.uploadGroupCover = function (uid, uploadedFile, callback) { file.isFileTypeAllowed(uploadedFile.path, next); }, function (next) { - saveFileToLocal(uploadedFile, next); + saveFileToLocal(uid, uploadedFile, next); }, ], callback); }; @@ -239,27 +243,31 @@ uploadsController.uploadFile = function (uid, uploadedFile, callback) { return callback(new Error('[[error:invalid-file-type, ' + allowed.join(', ') + ']]')); } - saveFileToLocal(uploadedFile, callback); + saveFileToLocal(uid, uploadedFile, callback); }; -function saveFileToLocal(uploadedFile, callback) { +function saveFileToLocal(uid, uploadedFile, callback) { var filename = uploadedFile.name || 'upload'; var extension = path.extname(filename) || ''; filename = Date.now() + '-' + validator.escape(filename.substr(0, filename.length - extension.length)).substr(0, 255) + extension; - + var storedFile; async.waterfall([ function (next) { file.saveFileToLocal(filename, 'files', uploadedFile.path, next); }, function (upload, next) { - var storedFile = { + storedFile = { url: nconf.get('relative_path') + upload.url, path: upload.path, name: uploadedFile.name, }; - plugins.fireHook('filter:uploadStored', { uploadedFile: uploadedFile, storedFile: storedFile }, next); + var fileKey = upload.url.replace(nconf.get('upload_url'), ''); + db.sortedSetAdd('uid:' + uid + ':uploads', Date.now(), fileKey, next); + }, + function (next) { + plugins.fireHook('filter:uploadStored', { uid: uid, uploadedFile: uploadedFile, storedFile: storedFile }, next); }, function (data, next) { next(null, data.storedFile); @@ -273,5 +281,3 @@ function deleteTempFiles(files) { next(); }); } - -module.exports = uploadsController; diff --git a/src/controllers/user.js b/src/controllers/user.js index 3405c1ea1d61..f72eef27d3db 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -1,9 +1,18 @@ 'use strict'; var async = require('async'); +var path = require('path'); +var fs = require('fs'); +var winston = require('winston'); +var converter = require('json-2-csv'); +var archiver = require('archiver'); +var db = require('../database'); var user = require('../user'); var meta = require('../meta'); +var posts = require('../posts'); +var batch = require('../batch'); +var events = require('../events'); var accountHelpers = require('./accounts/helpers'); var userController = module.exports; @@ -97,3 +106,140 @@ userController.getUserDataByUID = function (callerUid, uid, callback) { callback(null, results.userData); }); }; + +userController.exportPosts = function (req, res, next) { + async.waterfall([ + function (next) { + var payload = []; + batch.processSortedSet('uid:' + req.params.uid + ':posts', function (pids, next) { + async.map(pids, posts.getPostData, function (err, posts) { + if (err) { + return next(err); + } + + // Convert newlines in content + posts = posts.map(function (post) { + post.content = '"' + post.content.replace(/\n/g, '\\n').replace(/"/g, '\\"') + '"'; + return post; + }); + + payload = payload.concat(posts); + next(); + }); + }, function (err) { + next(err, payload); + }); + }, + function (payload, next) { + converter.json2csv(payload, next, { + checkSchemaDifferences: false, + emptyFieldValue: '', + }); + }, + ], function (err, csv) { + if (err) { + return next(err); + } + + res.set('Content-Type', 'text/csv').set('Content-Disposition', 'attachment; filename="' + req.params.uid + '_posts.csv"').send(csv); + }); +}; + +userController.exportUploads = function (req, res, next) { + const archivePath = path.join(__dirname, '../../build/export', req.params.uid + '_uploads.zip'); + const archive = archiver('zip', { + zlib: { level: 9 }, // Sets the compression level. + }); + const maxAge = 1000 * 60 * 60 * 24; // 1 day + + const rootDirectory = path.join(__dirname, '../../public/uploads/'); + const trimPath = function (path) { + return path.replace(rootDirectory, ''); + }; + let isFresh = false; + const sendFile = function () { + events.log({ + type: 'export:uploads', + uid: req.uid, + targetUid: req.params.uid, + ip: req.ip, + fresh: isFresh, + }); + + res.sendFile(req.params.uid + '_uploads.zip', { + root: path.join(__dirname, '../../build/export'), + headers: { + 'Content-Disposition': 'attachment; filename=' + req.params.uid + '_uploads.zip', + maxAge: maxAge, + }, + }); + }; + + // Check for existing file, if exists and is < 1 day in age, send this instead + try { + fs.accessSync(archivePath, fs.constants.F_OK | fs.constants.R_OK); + isFresh = (Date.now() - fs.statSync(archivePath).mtimeMs) < maxAge; + if (isFresh) { + return sendFile(); + } + } catch (err) { + // File doesn't exist, continue + } + + const output = fs.createWriteStream(archivePath); + output.on('close', sendFile); + + archive.on('warning', function (err) { + switch (err.code) { + case 'ENOENT': + winston.warn('[user/export/uploads] File not found: ' + trimPath(err.path)); + break; + + default: + winston.warn('[user/export/uploads] Unexpected warning: ' + err.message); + break; + } + }); + + archive.on('error', function (err) { + switch (err.code) { + case 'EACCES': + winston.error('[user/export/uploads] File inaccessible: ' + trimPath(err.path)); + break; + + default: + winston.error('[user/export/uploads] Unable to construct archive: ' + err.message); + break; + } + + res.sendStatus(500); + }); + + archive.pipe(output); + winston.info('[user/export/uploads] Collating uploads for uid ' + req.params.uid); + user.collateUploads(req.params.uid, archive, function (err) { + if (err) { + return next(err); + } + + archive.finalize(); + }); +}; + +userController.exportProfile = function (req, res, next) { + async.waterfall([ + async.apply(db.getObjects.bind(db), ['user:' + req.params.uid, 'user:' + req.params.uid + ':settings']), + function (objects, next) { + Object.assign(objects[0], objects[1]); + delete objects[0].password; + + converter.json2csv(objects[0], next); + }, + ], function (err, csv) { + if (err) { + return next(err); + } + + res.set('Content-Type', 'text/csv').set('Content-Disposition', 'attachment; filename="' + req.params.uid + '_profile.csv"').send(csv); + }); +}; diff --git a/src/emailer.js b/src/emailer.js index db49bdf0f83d..184eb5d95b07 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -212,12 +212,23 @@ Emailer.sendToEmail = function (template, email, language, params, callback) { async.waterfall([ function (next) { + Plugins.fireHook('filter:email.params', { + template: template, + email: email, + language: lang, + params: params, + }, next); + }, + function (result, next) { + template = result.template; + email = result.email; + params = result.params; async.parallel({ html: function (next) { - Emailer.renderAndTranslate(template, params, lang, next); + Emailer.renderAndTranslate(template, params, result.language, next); }, subject: function (next) { - translator.translate(params.subject, lang, function (translated) { + translator.translate(params.subject, result.language, function (translated) { next(null, translated); }); }, diff --git a/src/events.js b/src/events.js index c19a9485797c..cb8798ed7050 100644 --- a/src/events.js +++ b/src/events.js @@ -12,6 +12,10 @@ var utils = require('./utils'); var events = module.exports; +/** + * Useful options in data: type, uid, ip, targetUid + * Everything else gets stringified and shown as pretty JSON string + */ events.log = function (data, callback) { callback = callback || function () {}; diff --git a/src/file.js b/src/file.js index e31ae183990f..2fbd15dbdf4d 100644 --- a/src/file.js +++ b/src/file.js @@ -141,8 +141,9 @@ file.exists = function (path, callback) { if (err.code === 'ENOENT') { return callback(null, false); } + return callback(err); } - callback(err, true); + callback(null, true); }); }; @@ -159,14 +160,17 @@ file.existsSync = function (path) { return true; }; -file.delete = function (path) { - if (path) { - fs.unlink(path, function (err) { - if (err) { - winston.error(err); - } - }); +file.delete = function (path, callback) { + callback = callback || function () {}; + if (!path) { + return callback(); } + fs.unlink(path, function (err) { + if (err) { + winston.error(err); + } + callback(); + }); }; file.link = function link(filePath, destPath, relative, callback) { diff --git a/src/flags.js b/src/flags.js index 6a3c51e7070e..ee5c5fa97f2d 100644 --- a/src/flags.js +++ b/src/flags.js @@ -51,6 +51,8 @@ Flags.init = function (callback) { cid: function (sets, orSets, key) { prepareSets(sets, orSets, 'flags:byCid:', key); }, + page: function () { /* noop */ }, + perPage: function () { /* noop */ }, quick: function (sets, orSets, key, uid) { switch (key) { case 'mine': @@ -121,14 +123,16 @@ Flags.list = function (filters, uid, callback) { var sets = []; var orSets = []; - if (Object.keys(filters).length > 0) { - for (var type in filters) { - if (filters.hasOwnProperty(type)) { - if (Flags._filters.hasOwnProperty(type)) { - Flags._filters[type](sets, orSets, filters[type], uid); - } else { - winston.warn('[flags/list] No flag filter type found: ' + type); - } + // Default filter + filters.page = filters.hasOwnProperty('page') ? Math.abs(parseInt(filters.page, 10) || 1) : 1; + filters.perPage = filters.hasOwnProperty('perPage') ? Math.abs(parseInt(filters.perPage, 10) || 20) : 20; + + for (var type in filters) { + if (filters.hasOwnProperty(type)) { + if (Flags._filters.hasOwnProperty(type)) { + Flags._filters[type](sets, orSets, filters[type], uid); + } else { + winston.warn('[flags/list] No flag filter type found: ' + type); } } } @@ -165,6 +169,11 @@ Flags.list = function (filters, uid, callback) { } }, function (flagIds, next) { + // Create subset for parsing based on page number (n=20) + const flagsPerPage = Math.abs(parseInt(filters.perPage, 10) || 1); + const pageCount = Math.ceil(flagIds.length / flagsPerPage); + flagIds = flagIds.slice((filters.page - 1) * flagsPerPage, filters.page * flagsPerPage); + async.map(flagIds, function (flagId, next) { async.waterfall([ async.apply(db.getObject, 'flag:' + flagId), @@ -206,13 +215,20 @@ Flags.list = function (filters, uid, callback) { datetimeISO: utils.toISOString(flagObj.datetime), })); }); - }, next); + }, function (err, flags) { + next(err, flags, pageCount); + }); }, - function (flags, next) { + function (flags, pageCount, next) { plugins.fireHook('filter:flags.list', { flags: flags, + page: filters.page, }, function (err, data) { - next(err, data.flags); + next(err, { + flags: data.flags, + page: data.page, + pageCount: pageCount, + }); }); }, ], callback); diff --git a/src/groups/create.js b/src/groups/create.js index 9e0678a36f3f..46e8baff9d87 100644 --- a/src/groups/create.js +++ b/src/groups/create.js @@ -91,7 +91,7 @@ module.exports = function (Groups) { return callback(new Error('[[error:group-name-too-long]]')); } - if (!Groups.isPrivilegeGroup(name) && name.includes(':')) { + if (name === 'guests' || (!Groups.isPrivilegeGroup(name) && name.includes(':'))) { return callback(new Error('[[error:invalid-group-name]]')); } diff --git a/src/groups/update.js b/src/groups/update.js index e2fc4772e4ce..b9319736ca8c 100644 --- a/src/groups/update.js +++ b/src/groups/update.js @@ -168,7 +168,7 @@ module.exports = function (Groups) { function (next) { async.parallel({ group: function (next) { - db.getObject('group:' + currentName, next); + Groups.getGroupData(currentName, next); }, exists: function (next) { Groups.existsBySlug(newSlug, next); @@ -180,7 +180,11 @@ module.exports = function (Groups) { return next(new Error('[[error:group-already-exists]]')); } - if (parseInt(results.group.system, 10) === 1) { + if (!results.group) { + return next(new Error('[[error:no-group]]')); + } + + if (results.group.system) { return next(new Error('[[error:not-allowed-to-rename-system-group]]')); } diff --git a/src/install.js b/src/install.js index 2e86d26e627b..8534ef6529a3 100644 --- a/src/install.js +++ b/src/install.js @@ -361,7 +361,7 @@ function createGlobalModeratorsGroup(next) { function giveGlobalPrivileges(next) { var privileges = require('./privileges'); - privileges.global.give(['chat', 'upload:post:image'], 'registered-users', next); + privileges.global.give(['chat', 'upload:post:image', 'signature'], 'registered-users', next); } function createCategories(next) { diff --git a/src/messaging.js b/src/messaging.js index 6b0462eb0e28..c9cf356c7bc7 100644 --- a/src/messaging.js +++ b/src/messaging.js @@ -219,6 +219,18 @@ Messaging.getTeaser = function (uid, roomId, callback) { } Messaging.getMessageFields(mids[0], ['fromuid', 'content', 'timestamp'], next); }, + function (teaser, next) { + if (!teaser) { + return callback(); + } + user.blocks.is(teaser.fromuid, uid, function (err, blocked) { + if (err || blocked) { + return callback(err); + } + + next(null, teaser); + }); + }, function (_teaser, next) { teaser = _teaser; if (!teaser) { diff --git a/src/messaging/data.js b/src/messaging/data.js index bae9c6deaca1..aa269d19c90d 100644 --- a/src/messaging/data.js +++ b/src/messaging/data.js @@ -39,6 +39,7 @@ module.exports = function (Messaging) { db.getObjects(keys, next); }, + async.apply(user.blocks.filter, uid, 'fromuid'), function (_messages, next) { messages = _messages.map(function (msg, idx) { if (msg) { diff --git a/src/messaging/notifications.js b/src/messaging/notifications.js index 6e5d6a2ce878..8dd01a14fef3 100644 --- a/src/messaging/notifications.js +++ b/src/messaging/notifications.js @@ -17,6 +17,13 @@ module.exports = function (Messaging) { function (next) { Messaging.getUidsInRoom(roomId, 0, -1, next); }, + function (uids, next) { + async.filter(uids, function (uid, next) { + user.blocks.is(fromUid, uid, function (err, blocked) { + next(err, !blocked); + }); + }, next); + }, function (uids, next) { var data = { roomId: roomId, diff --git a/src/meta/templates.js b/src/meta/templates.js index f8b63d41fa42..b2d14801aec7 100644 --- a/src/meta/templates.js +++ b/src/meta/templates.js @@ -11,6 +11,7 @@ var _ = require('lodash'); var plugins = require('../plugins'); var file = require('../file'); +var db = require('../database'); var viewsPath = nconf.get('views_dir'); @@ -44,20 +45,22 @@ function processImports(paths, templatePath, source, callback) { } Templates.processImports = processImports; -function getTemplateDirs(callback) { - var pluginTemplates = _.values(plugins.pluginsData) - .filter(function (pluginData) { - return !pluginData.id.startsWith('nodebb-theme-'); - }) - .map(function (pluginData) { - return path.join(__dirname, '../../node_modules/', pluginData.id, pluginData.templates || 'templates'); - }); +function getTemplateDirs(activePlugins, callback) { + var pluginTemplates = activePlugins.map(function (id) { + if (id.startsWith('nodebb-theme-')) { + return nconf.get('theme_templates_path'); + } + if (!plugins.pluginsData[id]) { + return ''; + } + return path.join(__dirname, '../../node_modules/', id, plugins.pluginsData[id].templates || 'templates'); + }).filter(Boolean); var themeConfig = require(nconf.get('theme_config')); var theme = themeConfig.baseTheme; var themePath; - var themeTemplates = [nconf.get('theme_templates_path')]; + var themeTemplates = []; while (theme) { themePath = path.join(nconf.get('themes_path'), theme); themeConfig = require(path.join(themePath, 'theme.json')); @@ -118,6 +121,9 @@ function compile(callback) { function (next) { mkdirp(viewsPath, function (err) { next(err); }); }, + function (next) { + db.getSortedSetRange('plugins:active', 0, -1, next); + }, getTemplateDirs, getTemplateFiles, function (files, next) { diff --git a/src/middleware/header.js b/src/middleware/header.js index 0a325460e40a..f845d8b4bb11 100644 --- a/src/middleware/header.js +++ b/src/middleware/header.js @@ -251,7 +251,7 @@ module.exports = function (middleware) { data.templateValues.useCustomJS = parseInt(meta.config.useCustomJS, 10) === 1; data.templateValues.customJS = data.templateValues.useCustomJS ? meta.config.customJS : ''; - + data.templateValues.isSpider = req.isSpider(); req.app.render('footer', data.templateValues, next); }, ], callback); diff --git a/src/middleware/user.js b/src/middleware/user.js index 9ddbbf086d2b..e7c6c7ef36ae 100644 --- a/src/middleware/user.js +++ b/src/middleware/user.js @@ -215,9 +215,24 @@ module.exports = function (middleware) { return next(); } if (!req.path.endsWith('/register/complete')) { + // Append user data if present + req.session.registration.uid = req.uid; + controllers.helpers.redirect(res, '/register/complete'); } else { return next(); } }; + + middleware.handleBlocking = function (req, res, next) { + user.blocks.is(res.locals.uid, req.uid, function (err, blocked) { + if (err) { + return next(err); + } else if (blocked) { + res.status(404).render('404', { title: '[[global:404.title]]' }); + } else { + return next(); + } + }); + }; }; diff --git a/src/notifications.js b/src/notifications.js index 8a91c445098c..30089a2d1d09 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -17,6 +17,36 @@ var emailer = require('./emailer'); var Notifications = module.exports; +Notifications.baseTypes = [ + 'notificationType_upvote', + 'notificationType_new-topic', + 'notificationType_new-reply', + 'notificationType_follow', + 'notificationType_new-chat', + 'notificationType_group-invite', +]; + +Notifications.privilegedTypes = [ + 'notificationType_new-register', + 'notificationType_post-queue', + 'notificationType_new-post-flag', + 'notificationType_new-user-flag', +]; + +Notifications.getAllNotificationTypes = function (callback) { + async.waterfall([ + function (next) { + plugins.fireHook('filter:user.notificationTypes', { + types: Notifications.baseTypes.slice(), + privilegedTypes: Notifications.privilegedTypes.slice(), + }, next); + }, + function (results, next) { + next(null, results.types.concat(results.privilegedTypes)); + }, + ], callback); +}; + Notifications.startJobs = function () { winston.verbose('[notifications.init] Registering jobs.'); new cron('*/30 * * * *', Notifications.prune, null, true); @@ -254,6 +284,17 @@ function pushToUids(uids, notification, callback) { } async.waterfall([ + function (next) { + // Remove uid from recipients list if they have blocked the user triggering the notification + async.filter(uids, function (uid, next) { + User.blocks.is(notification.from, uid, function (err, blocked) { + next(err, !blocked); + }); + }, function (err, _uids) { + uids = _uids; + next(err); + }); + }, function (next) { plugins.fireHook('filter:notification.push', { notification: notification, uids: uids }, next); }, diff --git a/src/plugins/hooks.js b/src/plugins/hooks.js index c55542437758..9133378acedd 100644 --- a/src/plugins/hooks.js +++ b/src/plugins/hooks.js @@ -12,20 +12,24 @@ module.exports = function (Plugins) { 'action:flag.create': 'action:flags.create', 'action:flag.update': 'action:flags.update', }; + + Plugins.internals = { + _register: function (data, callback) { + Plugins.loadedHooks[data.hook] = Plugins.loadedHooks[data.hook] || []; + Plugins.loadedHooks[data.hook].push(data); + + callback(); + }, + }; + /* `data` is an object consisting of (* is required): `data.hook`*, the name of the NodeBB hook - `data.method`*, the method called in that plugin + `data.method`*, the method called in that plugin (can be an array of functions) `data.priority`, the relative priority of the method when it is eventually called (default: 10) */ Plugins.registerHook = function (id, data, callback) { callback = callback || function () {}; - function register() { - Plugins.loadedHooks[data.hook] = Plugins.loadedHooks[data.hook] || []; - Plugins.loadedHooks[data.hook].push(data); - - callback(); - } if (!data.hook) { winston.warn('[plugins/' + id + '] registerHook called with invalid data.hook', data); @@ -48,7 +52,13 @@ module.exports = function (Plugins) { data.priority = 10; } - if (typeof data.method === 'string' && data.method.length > 0) { + if (Array.isArray(data.method) && data.method.every(method => typeof method === 'function' || typeof method === 'string')) { + // Go go gadget recursion! + async.eachSeries(data.method, function (method, next) { + const singularData = Object.assign({}, data, { method: method }); + Plugins.registerHook(id, singularData, next); + }, callback); + } else if (typeof data.method === 'string' && data.method.length > 0) { method = data.method.split('.').reduce(function (memo, prop) { if (memo && memo[prop]) { return memo[prop]; @@ -60,9 +70,9 @@ module.exports = function (Plugins) { // Write the actual method reference to the hookObj data.method = method; - register(); + Plugins.internals._register(data, callback); } else if (typeof data.method === 'function') { - register(); + Plugins.internals._register(data, callback); } else { winston.warn('[plugins/' + id + '] Hook method mismatch: ' + data.hook + ' => ' + data.method); return callback(); diff --git a/src/posts.js b/src/posts.js index 6061017b89fe..944a5c5f7632 100644 --- a/src/posts.js +++ b/src/posts.js @@ -26,6 +26,7 @@ require('./posts/votes')(Posts); require('./posts/bookmarks')(Posts); require('./posts/queue')(Posts); require('./posts/diffs')(Posts); +require('./posts/uploads')(Posts); Posts.exists = function (pid, callback) { db.isSortedSetMember('posts:pid', pid, callback); @@ -63,6 +64,7 @@ Posts.getPostsByPids = function (pids, uid, callback) { Posts.parsePost(post, next); }, next); }, + async.apply(user.blocks.filter, uid), function (posts, next) { plugins.fireHook('filter:post.getPosts', { posts: posts, uid: uid }, next); }, diff --git a/src/posts/cache.js b/src/posts/cache.js index 9fce7614900d..28c58839e877 100644 --- a/src/posts/cache.js +++ b/src/posts/cache.js @@ -4,7 +4,7 @@ var LRU = require('lru-cache'); var meta = require('../meta'); var cache = LRU({ - max: parseInt(meta.config.postCacheSize, 10) || 1048576, + max: parseInt(meta.config.postCacheSize, 10) || 5242880, length: function (n) { return n.length; }, maxAge: 0, }); diff --git a/src/posts/create.js b/src/posts/create.js index cbfd9de214ab..dc6f1a922499 100644 --- a/src/posts/create.js +++ b/src/posts/create.js @@ -101,6 +101,7 @@ module.exports = function (Posts) { function (next) { db.incrObjectField('global', 'postCount', next); }, + async.apply(Posts.uploads.sync, postData.pid), ], function (err) { next(err); }); diff --git a/src/posts/diffs.js b/src/posts/diffs.js index 782115b74b1f..6efaabcfb9cd 100644 --- a/src/posts/diffs.js +++ b/src/posts/diffs.js @@ -27,7 +27,7 @@ Diffs.get = function (pid, since, callback) { function (timestamps, next) { // Pass those made after `since`, and create keys const keys = timestamps.filter(function (timestamp) { - return (parseInt(timestamp, 10) || 0) > since; + return (parseInt(timestamp, 10) || 0) >= since; }).map(function (timestamp) { return 'diff:' + pid + '.' + timestamp; }); diff --git a/src/posts/edit.js b/src/posts/edit.js index 1f9ffcf5ad6a..7148149042f3 100644 --- a/src/posts/edit.js +++ b/src/posts/edit.js @@ -73,10 +73,11 @@ module.exports = function (Posts) { Posts.diffs.save(data.pid, oldContent, data.content, next); }, + async.apply(Posts.uploads.sync, data.pid), function (next) { postData.cid = results.topic.cid; postData.topic = results.topic; - plugins.fireHook('action:post.edit', { post: _.clone(postData), uid: data.uid }); + plugins.fireHook('action:post.edit', { post: _.clone(postData), data: data, uid: data.uid }); cache.del(String(postData.pid)); pubsub.publish('post:edit', String(postData.pid)); diff --git a/src/posts/summary.js b/src/posts/summary.js index 902a003445e5..139fea16a88b 100644 --- a/src/posts/summary.js +++ b/src/posts/summary.js @@ -30,7 +30,9 @@ module.exports = function (Posts) { }, function (_posts, next) { posts = _posts.filter(Boolean); - + user.blocks.filter(uid, posts, next); + }, + function (_posts, next) { var uids = []; var topicKeys = []; diff --git a/src/posts/uploads.js b/src/posts/uploads.js new file mode 100644 index 000000000000..04b5e954a445 --- /dev/null +++ b/src/posts/uploads.js @@ -0,0 +1,110 @@ +'use strict'; + +var async = require('async'); +var crypto = require('crypto'); +var fs = require('fs'); +var path = require('path'); + +var db = require('../database'); + +module.exports = function (Posts) { + Posts.uploads = {}; + + const md5 = filename => crypto.createHash('md5').update(filename).digest('hex'); + const pathPrefix = path.join(__dirname, '../../public/uploads/files'); + + Posts.uploads.sync = function (pid, callback) { + // Scans a post and updates sorted set of uploads + const searchRegex = /\/assets\/uploads\/files\/([^\s")]+\.?[\w]*)/g; + + async.parallel({ + content: async.apply(Posts.getPostField, pid, 'content'), + uploads: async.apply(Posts.uploads.list, pid), + }, function (err, data) { + if (err) { + return callback(err); + } + + // Extract upload file paths from post content + let match = searchRegex.exec(data.content); + const uploads = []; + while (match) { + uploads.push(match[1].replace('-resized', '')); + match = searchRegex.exec(data.content); + } + + // Create add/remove sets + const add = uploads.filter(path => !data.uploads.includes(path)); + const remove = data.uploads.filter(path => !uploads.includes(path)); + + async.parallel([ + async.apply(Posts.uploads.associate, pid, add), + async.apply(Posts.uploads.dissociate, pid, remove), + ], function (err) { + // Strictly return only err + callback(err); + }); + }); + }; + + Posts.uploads.list = function (pid, callback) { + // Returns array of this post's uploads + db.getSortedSetRange('post:' + pid + ':uploads', 0, -1, callback); + }; + + Posts.uploads.isOrphan = function (filePath, callback) { + // Returns bool indicating whether a file is still CURRENTLY included in any posts + db.sortedSetCard('upload:' + md5(filePath) + ':pids', function (err, length) { + callback(err, length === 0); + }); + }; + + Posts.uploads.getUsage = function (filePaths, callback) { + // Given an array of file names, determines which pids they are used in + if (!Array.isArray(filePaths)) { + filePaths = [filePaths]; + } + + const keys = filePaths.map(fileObj => 'upload:' + md5(fileObj.name.replace('-resized', '')) + ':pids'); + async.map(keys, function (key, next) { + db.getSortedSetRange(key, 0, -1, next); + }, callback); + }; + + Posts.uploads.associate = function (pid, filePaths, callback) { + // Adds an upload to a post's sorted set of uploads + filePaths = !Array.isArray(filePaths) ? [filePaths] : filePaths; + + async.filter(filePaths, function (filePath, next) { + // Only process files that exist + fs.access(path.join(pathPrefix, filePath), fs.constants.F_OK | fs.constants.R_OK, function (err) { + next(null, !err); + }); + }, function (err, filePaths) { + if (err) { + return callback(err); + } + const now = Date.now(); + const scores = filePaths.map(() => now); + let methods = [async.apply(db.sortedSetAdd.bind(db), 'post:' + pid + ':uploads', scores, filePaths)]; + + methods = methods.concat(filePaths.map(path => async.apply(db.sortedSetAdd.bind(db), 'upload:' + md5(path) + ':pids', now, pid))); + async.parallel(methods, function (err) { + // Strictly return only err + callback(err); + }); + }); + }; + + Posts.uploads.dissociate = function (pid, filePaths, callback) { + // Removes an upload from a post's sorted set of uploads + filePaths = !Array.isArray(filePaths) ? [filePaths] : filePaths; + let methods = [async.apply(db.sortedSetRemove.bind(db), 'post:' + pid + ':uploads', filePaths)]; + methods = methods.concat(filePaths.map(path => async.apply(db.sortedSetRemove.bind(db), 'upload:' + md5(path) + ':pids', pid))); + + async.parallel(methods, function (err) { + // Strictly return only err + callback(err); + }); + }; +}; diff --git a/src/posts/user.js b/src/posts/user.js index 0a5a1d0979c2..dc61786eda9a 100644 --- a/src/posts/user.js +++ b/src/posts/user.js @@ -2,36 +2,48 @@ var async = require('async'); var validator = require('validator'); +var _ = require('lodash'); var user = require('../user'); var groups = require('../groups'); var meta = require('../meta'); var plugins = require('../plugins'); +var privileges = require('../privileges'); module.exports = function (Posts) { Posts.getUserInfoForPosts = function (uids, uid, callback) { var groupsMap = {}; var userData; var userSettings; + var canUseSignature; + async.waterfall([ function (next) { async.parallel({ userData: function (next) { - user.getUsersFields(uids, ['uid', 'username', 'fullname', 'userslug', 'reputation', 'postcount', 'picture', 'signature', 'banned', 'status', 'lastonline', 'groupTitle'], next); + user.getUsersFields(uids, [ + 'uid', 'username', 'fullname', 'userslug', + 'reputation', 'postcount', 'picture', 'signature', + 'banned', 'status', 'lastonline', 'groupTitle', + ], next); }, userSettings: function (next) { user.getMultipleUserSettings(uids, next); }, + canUseSignature: function (next) { + privileges.global.can('signature', uid, next); + }, }, next); }, function (results, next) { userData = results.userData; userSettings = results.userSettings; + canUseSignature = results.canUseSignature; var groupTitles = userData.map(function (userData) { - return userData && userData.groupTitle; - }).filter(function (groupTitle, index, array) { - return groupTitle && array.indexOf(groupTitle) === index; + return userData && userData.groupTitleArray; }); + groupTitles = _.uniq(_.flatten(groupTitles)); + groups.getGroupsData(groupTitles, next); }, function (groupsData, next) { @@ -58,6 +70,8 @@ module.exports = function (Posts) { userData.status = user.getStatus(userData); userData.signature = validator.escape(String(userData.signature || '')); userData.fullname = userSettings[index].showfullname ? validator.escape(String(userData.fullname || '')) : undefined; + userData.selectedGroups = []; + if (parseInt(meta.config.hideFullname, 10) === 1) { userData.fullname = undefined; } @@ -67,14 +81,14 @@ module.exports = function (Posts) { async.waterfall([ function (next) { async.parallel({ - isMemberOfGroup: function (next) { - if (!userData.groupTitle || !groupsMap[userData.groupTitle]) { + isMemberOfGroups: function (next) { + if (!Array.isArray(userData.groupTitleArray) || !userData.groupTitleArray.length) { return next(); } - groups.isMember(userData.uid, userData.groupTitle, next); + groups.isMemberOfGroups(userData.uid, userData.groupTitleArray, next); }, signature: function (next) { - if (!userData.signature || parseInt(meta.config.disableSignatures, 10) === 1) { + if (!userData.signature || !canUseSignature || parseInt(meta.config.disableSignatures, 10) === 1) { userData.signature = ''; return next(); } @@ -86,8 +100,12 @@ module.exports = function (Posts) { }, next); }, function (results, next) { - if (results.isMemberOfGroup && userData.groupTitle && groupsMap[userData.groupTitle]) { - userData.selectedGroup = groupsMap[userData.groupTitle]; + if (results.isMemberOfGroups && userData.groupTitleArray) { + userData.groupTitleArray.forEach(function (userGroup, index) { + if (results.isMemberOfGroups[index] && groupsMap[userGroup]) { + userData.selectedGroups.push(groupsMap[userGroup]); + } + }); } userData.custom_profile_info = results.customProfileInfo.profile; diff --git a/src/privileges/global.js b/src/privileges/global.js index f1f88c4ffff6..3f2955d5bebe 100644 --- a/src/privileges/global.js +++ b/src/privileges/global.js @@ -16,12 +16,14 @@ module.exports = function (privileges) { { name: 'Chat' }, { name: 'Upload Images' }, { name: 'Upload Files' }, + { name: 'Signature' }, ]; privileges.global.userPrivilegeList = [ 'chat', 'upload:post:image', 'upload:post:file', + 'signature', ]; privileges.global.groupPrivilegeList = privileges.global.userPrivilegeList.map(function (privilege) { diff --git a/src/routes/accounts.js b/src/routes/accounts.js index 5c040b6af1b4..c46b48a29e22 100644 --- a/src/routes/accounts.js +++ b/src/routes/accounts.js @@ -4,8 +4,8 @@ var helpers = require('./helpers'); var setupPageRoute = helpers.setupPageRoute; module.exports = function (app, middleware, controllers) { - var middlewares = [middleware.checkGlobalPrivacySettings]; - var accountMiddlewares = [middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions]; + var middlewares = [middleware.checkGlobalPrivacySettings, middleware.exposeUid, middleware.handleBlocking]; + var accountMiddlewares = [middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions, middleware.exposeUid, middleware.handleBlocking]; setupPageRoute(app, '/me/*', middleware, [], middleware.redirectMeToUserslug); setupPageRoute(app, '/uid/:uid*', middleware, [], middleware.redirectUidToUserslug); @@ -13,6 +13,7 @@ module.exports = function (app, middleware, controllers) { setupPageRoute(app, '/user/:userslug', middleware, middlewares, controllers.accounts.profile.get); setupPageRoute(app, '/user/:userslug/following', middleware, middlewares, controllers.accounts.follow.getFollowing); setupPageRoute(app, '/user/:userslug/followers', middleware, middlewares, controllers.accounts.follow.getFollowers); + setupPageRoute(app, '/user/:userslug/blocks', middleware, middlewares, controllers.accounts.blocks.getBlocks); setupPageRoute(app, '/user/:userslug/posts', middleware, middlewares, controllers.accounts.posts.getPosts); setupPageRoute(app, '/user/:userslug/topics', middleware, middlewares, controllers.accounts.posts.getTopics); setupPageRoute(app, '/user/:userslug/best', middleware, middlewares, controllers.accounts.posts.getBestPosts); @@ -29,6 +30,8 @@ module.exports = function (app, middleware, controllers) { setupPageRoute(app, '/user/:userslug/edit/password', middleware, accountMiddlewares, controllers.accounts.edit.password); setupPageRoute(app, '/user/:userslug/info', middleware, accountMiddlewares, controllers.accounts.info.get); setupPageRoute(app, '/user/:userslug/settings', middleware, accountMiddlewares, controllers.accounts.settings.get); + setupPageRoute(app, '/user/:userslug/uploads', middleware, accountMiddlewares, controllers.accounts.uploads.get); + setupPageRoute(app, '/user/:userslug/consent', middleware, accountMiddlewares, controllers.accounts.consent.get); app.delete('/api/user/:userslug/session/:uuid', [middleware.exposeUid, middleware.ensureSelfOrGlobalPrivilege], controllers.accounts.session.revoke); diff --git a/src/routes/api.js b/src/routes/api.js index 34f14f5a8cba..6d06a2f93e12 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -15,6 +15,10 @@ module.exports = function (app, middleware, controllers) { router.get('/user/username/:username', middleware.checkGlobalPrivacySettings, controllers.user.getUserByUsername); router.get('/user/email/:email', middleware.checkGlobalPrivacySettings, controllers.user.getUserByEmail); + router.get('/user/uid/:uid/export/posts', middleware.checkAccountPermissions, controllers.user.exportPosts); + router.get('/user/uid/:uid/export/uploads', middleware.checkAccountPermissions, controllers.user.exportUploads); + router.get('/user/uid/:uid/export/profile', middleware.checkAccountPermissions, controllers.user.exportProfile); + router.get('/:type/pid/:id', controllers.api.getObject); router.get('/:type/tid/:id', controllers.api.getObject); router.get('/:type/cid/:id', controllers.api.getObject); diff --git a/src/routes/authentication.js b/src/routes/authentication.js index 212c2b130220..fff3c997fb80 100644 --- a/src/routes/authentication.js +++ b/src/routes/authentication.js @@ -66,7 +66,11 @@ Auth.reloadRoutes = function (callback) { })); } - router.get(strategy.callbackURL, passport.authenticate(strategy.name, { + router.get(strategy.callbackURL, function (req, res, next) { + // Trigger registration interstitial checks + req.session.registration = req.session.registration || {}; + next(); + }, passport.authenticate(strategy.name, { successReturnToOrRedirect: nconf.get('relative_path') + (strategy.successUrl !== undefined ? strategy.successUrl : '/'), failureRedirect: nconf.get('relative_path') + (strategy.failureUrl !== undefined ? strategy.failureUrl : '/login'), })); diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index 2eab0eb8d17e..3f9cd9166691 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -59,14 +59,23 @@ SocketAdmin.before = function (socket, method, data, next) { }; SocketAdmin.restart = function (socket, data, callback) { + logRestart(socket); + meta.restart(); + callback(); +}; + +function logRestart(socket) { events.log({ type: 'restart', uid: socket.uid, ip: socket.ip, }); - meta.restart(); - callback(); -}; + db.setObject('lastrestart', { + uid: socket.uid, + ip: socket.ip, + timestamp: Date.now(), + }); +} SocketAdmin.reload = function (socket, data, callback) { async.waterfall([ @@ -80,12 +89,7 @@ SocketAdmin.reload = function (socket, data, callback) { ip: socket.ip, }); - events.log({ - type: 'restart', - uid: socket.uid, - ip: socket.ip, - }); - + logRestart(socket); meta.restart(); next(); }, diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index 8a446f563c33..e98b8451c64a 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -238,6 +238,7 @@ SocketGroups.create = function (socket, data, callback) { SocketGroups.delete = isOwner(function (socket, data, callback) { if (data.groupName === 'administrators' || data.groupName === 'registered-users' || + data.groupName === 'guests' || data.groupName === 'Global Moderators') { return callback(new Error('[[error:not-allowed]]')); } diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js index e3e24654a495..08b6d12f4ce6 100644 --- a/src/socket.io/modules.js +++ b/src/socket.io/modules.js @@ -193,7 +193,21 @@ SocketModules.chats.getUsersInRoom = function (socket, data, callback) { return callback(new Error('[[error:invalid-data]]')); } - Messaging.getUsersInRoom(data.roomId, 0, -1, callback); + async.parallel({ + users: async.apply(Messaging.getUsersInRoom, data.roomId, 0, -1), + isOwner: async.apply(Messaging.isRoomOwner, socket.uid, data.roomId), + }, function (err, payload) { + if (err) { + return callback(err); + } + + payload.users = payload.users.map((user) => { + user.canKick = (parseInt(user.uid, 10) !== parseInt(socket.uid, 10)) && payload.isOwner; + return user; + }); + + callback(null, payload.users); + }); }; SocketModules.chats.addUserToRoom = function (socket, data, callback) { @@ -250,16 +264,17 @@ SocketModules.chats.removeUserFromRoom = function (socket, data, callback) { if (!data || !data.roomId) { return callback(new Error('[[error:invalid-data]]')); } + async.waterfall([ function (next) { - user.getUidByUsername(data.username, next); + user.exists(data.uid, next); }, - function (uid, next) { - if (!uid) { + function (exists, next) { + if (!exists) { return next(new Error('[[error:no-user]]')); } - Messaging.removeUsersFromRoom(socket.uid, [uid], data.roomId, next); + Messaging.removeUsersFromRoom(socket.uid, [data.uid], data.roomId, next); }, ], callback); }; diff --git a/src/socket.io/posts.js b/src/socket.io/posts.js index e0b7884ece47..108a29d13674 100644 --- a/src/socket.io/posts.js +++ b/src/socket.io/posts.js @@ -59,7 +59,7 @@ function postReply(socket, data, callback) { next(null, postData); - websockets.in('uid_' + socket.uid).emit('event:new_post', result); + socket.emit('event:new_post', result); user.updateOnlineUsers(socket.uid); diff --git a/src/socket.io/user.js b/src/socket.io/user.js index 36026a7f289d..4f16e82edad2 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -340,3 +340,16 @@ SocketUser.setModerationNote = function (socket, data, callback) { }, ], callback); }; + +SocketUser.deleteUpload = function (socket, data, callback) { + if (!data || !data.name || !data.uid) { + return callback(new Error('[[error:invalid-data]]')); + } + user.deleteUpload(socket.uid, data.uid, data.name, callback); +}; + +SocketUser.gdpr = {}; + +SocketUser.gdpr.consent = function (socket, data, callback) { + user.setUserField(socket.uid, 'gdpr_consent', 1, callback); +}; diff --git a/src/socket.io/user/profile.js b/src/socket.io/user/profile.js index 1391ba2f3cae..d025b223a251 100644 --- a/src/socket.io/user/profile.js +++ b/src/socket.io/user/profile.js @@ -200,4 +200,22 @@ module.exports = function (SocketUser) { }, ], callback); }; + + SocketUser.toggleBlock = function (socket, data, callback) { + async.waterfall([ + function (next) { + user.blocks.can(data.uid, function (err, can) { + if (err || !can) { + return next(err || new Error('[[error:cannot-block-privileged]]')); + } + + next(); + }); + }, + async.apply(user.blocks.is, data.uid, socket.uid), + function (is, next) { + user.blocks[is ? 'remove' : 'add'](data.uid, socket.uid, next); + }, + ], callback); + }; }; diff --git a/src/topics/create.js b/src/topics/create.js index d8108beb7074..0a6c92635e2c 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -179,26 +179,26 @@ module.exports = function (Topics) { }, }, next); }, - function (data, next) { - if (!Array.isArray(data.topicData) || !data.topicData.length) { + function (result, next) { + if (!Array.isArray(result.topicData) || !result.topicData.length) { return next(new Error('[[error:no-topic]]')); } - data.topicData = data.topicData[0]; - data.topicData.unreplied = 1; - data.topicData.mainPost = data.postData; - data.postData.index = 0; + result.topicData = result.topicData[0]; + result.topicData.unreplied = 1; + result.topicData.mainPost = result.postData; + result.postData.index = 0; - analytics.increment(['topics', 'topics:byCid:' + data.topicData.cid]); - plugins.fireHook('action:topic.post', { topic: data.topicData, post: data.postData }); + analytics.increment(['topics', 'topics:byCid:' + result.topicData.cid]); + plugins.fireHook('action:topic.post', { topic: result.topicData, post: result.postData, data: data }); if (parseInt(uid, 10)) { - user.notifications.sendTopicNotificationToFollowers(uid, data.topicData, data.postData); + user.notifications.sendTopicNotificationToFollowers(uid, result.topicData, result.postData); } next(null, { - topicData: data.topicData, - postData: data.postData, + topicData: result.topicData, + postData: result.postData, }); }, ], callback); @@ -284,7 +284,7 @@ module.exports = function (Topics) { Topics.notifyFollowers(postData, uid); analytics.increment(['posts', 'posts:byCid:' + data.cid]); - plugins.fireHook('action:topic.reply', { post: _.clone(postData) }); + plugins.fireHook('action:topic.reply', { post: _.clone(postData), data: data }); next(null, postData); }, diff --git a/src/topics/recent.js b/src/topics/recent.js index 2e77262d440b..30da085debc9 100644 --- a/src/topics/recent.js +++ b/src/topics/recent.js @@ -77,10 +77,20 @@ module.exports = function (Topics) { user.getIgnoredCategories(uid, next); }, topicData: function (next) { - Topics.getTopicsFields(tids, ['tid', 'cid'], next); + Topics.getTopicsFields(tids, ['uid', 'tid', 'cid'], next); }, }, next); }, + function (results, next) { + user.blocks.filter(uid, results.topicData, function (err, filtered) { + if (err) { + return next(err); + } + + results.topicData = filtered; + next(null, results); + }); + }, function (results, next) { cid = cid && cid.map(String); tids = results.topicData.filter(function (topic) { diff --git a/src/topics/teaser.js b/src/topics/teaser.js index 28fbeb9a3529..508bd51bc896 100644 --- a/src/topics/teaser.js +++ b/src/topics/teaser.js @@ -57,6 +57,7 @@ module.exports = function (Topics) { function (next) { posts.getPostsFields(teaserPids, ['pid', 'uid', 'timestamp', 'tid', 'content'], next); }, + async.apply(user.blocks.filter, uid), function (_postData, next) { postData = _postData; var uids = _.uniq(postData.map(function (post) { diff --git a/src/upgrades/1.4.6/delete_sessions.js b/src/upgrades/1.4.6/delete_sessions.js index 29d11db48af1..c899126bdeff 100644 --- a/src/upgrades/1.4.6/delete_sessions.js +++ b/src/upgrades/1.4.6/delete_sessions.js @@ -9,7 +9,13 @@ module.exports = { name: 'Delete accidentally long-lived sessions', timestamp: Date.UTC(2017, 3, 16), method: function (callback) { - var configJSON = require('../../../config.json'); + var configJSON; + try { + configJSON = require('../../../config.json') || { [process.env.database]: true }; + } catch (err) { + configJSON = { [process.env.database]: true }; + } + var isRedisSessionStore = configJSON.hasOwnProperty('redis'); var progress = this.progress; diff --git a/src/upgrades/1.7.3/key_value_schema_change.js b/src/upgrades/1.7.3/key_value_schema_change.js index 637d2c534d6f..a8abefb10ad3 100644 --- a/src/upgrades/1.7.3/key_value_schema_change.js +++ b/src/upgrades/1.7.3/key_value_schema_change.js @@ -8,7 +8,12 @@ module.exports = { name: 'Change the schema of simple keys so they don\'t use value field (mongodb only)', timestamp: Date.UTC(2017, 11, 18), method: function (callback) { - var configJSON = require('../../../config.json'); + var configJSON; + try { + configJSON = require('../../../config.json') || { [process.env.database]: true, database: process.env.database }; + } catch (err) { + configJSON = { [process.env.database]: true, database: process.env.database }; + } var isMongo = configJSON.hasOwnProperty('mongo') && configJSON.database === 'mongo'; var progress = this.progress; if (!isMongo) { diff --git a/src/upgrades/1.8.0/give_signature_privileges.js b/src/upgrades/1.8.0/give_signature_privileges.js new file mode 100644 index 000000000000..87d93605f5a6 --- /dev/null +++ b/src/upgrades/1.8.0/give_signature_privileges.js @@ -0,0 +1,11 @@ +'use strict'; + +var privileges = require('../../privileges'); + +module.exports = { + name: 'Give registered users signature privilege', + timestamp: Date.UTC(2018, 1, 28), + method: function (callback) { + privileges.global.give(['signature'], 'registered-users', callback); + }, +}; diff --git a/src/upgrades/1.9.0/refresh_post_upload_associations.js b/src/upgrades/1.9.0/refresh_post_upload_associations.js new file mode 100644 index 000000000000..e17683594097 --- /dev/null +++ b/src/upgrades/1.9.0/refresh_post_upload_associations.js @@ -0,0 +1,21 @@ +'use strict'; + +var async = require('async'); +var posts = require('../../posts'); + +module.exports = { + name: 'Refresh post-upload associations', + timestamp: Date.UTC(2018, 3, 16), + method: function (callback) { + var progress = this.progress; + + require('../../batch').processSortedSet('posts:pid', function (pids, next) { + async.each(pids, function (pid, next) { + posts.uploads.sync(pid, next); + progress.incr(); + }, next); + }, { + progress: this.progress, + }, callback); + }, +}; diff --git a/src/user.js b/src/user.js index caf47fdcb9b7..9712f8063f70 100644 --- a/src/user.js +++ b/src/user.js @@ -36,6 +36,8 @@ require('./user/invite')(User); require('./user/password')(User); require('./user/info')(User); require('./user/online')(User); +require('./user/blocks')(User); +require('./user/uploads')(User); User.getUidsFromSet = function (set, start, stop, callback) { if (set === 'users:online') { @@ -348,25 +350,86 @@ User.getModeratedCids = function (uid, callback) { User.addInterstitials = function (callback) { plugins.registerHook('core', { hook: 'filter:register.interstitial', - method: function (data, callback) { - if (meta.config.termsOfUse && !data.userData.acceptTos) { - data.interstitials.push({ - template: 'partials/acceptTos', - data: { - termsOfUse: meta.config.termsOfUse, - }, - callback: function (userData, formData, next) { - if (formData['agree-terms'] === 'on') { - userData.acceptTos = true; - } - - next(userData.acceptTos ? null : new Error('[[register:terms_of_use_error]]')); - }, - }); - } - - callback(null, data); - }, + method: [ + // GDPR information collection/processing consent + email consent + function (data, callback) { + const add = function () { + data.interstitials.push({ + template: 'partials/gdpr_consent', + data: { + digestFrequency: meta.config.dailyDigestFreq, + digestEnabled: meta.config.dailyDigestFreq !== 'off', + }, + callback: function (userData, formData, next) { + if (formData.gdpr_agree_data === 'on' && formData.gdpr_agree_email === 'on') { + userData.gdpr_consent = true; + } + + next(userData.gdpr_consent ? null : new Error('[[register:gdpr_consent_denied]]')); + }, + }); + }; + + if (!data.userData.gdpr_consent) { + if (data.userData.uid) { + db.getObjectField('user:' + data.userData.uid, 'gdpr_consent', function (err, consented) { + if (err) { + return callback(err); + } else if (!parseInt(consented, 10)) { + add(); + } + + callback(null, data); + }); + } else { + add(); + setImmediate(callback, null, data); + } + } else { + // GDPR consent signed + setImmediate(callback, null, data); + } + }, + + // Forum Terms of Use + function (data, callback) { + const add = function () { + data.interstitials.push({ + template: 'partials/acceptTos', + data: { + termsOfUse: meta.config.termsOfUse, + }, + callback: function (userData, formData, next) { + if (formData['agree-terms'] === 'on') { + userData.acceptTos = true; + } + + next(userData.acceptTos ? null : new Error('[[register:terms_of_use_error]]')); + }, + }); + }; + + if (meta.config.termsOfUse && !data.userData.acceptTos) { + if (data.userData.uid) { + db.getObjectField('user:' + data.userData.uid, 'acceptTos', function (err, accepted) { + if (err) { + return callback(err); + } else if (!parseInt(accepted, 10)) { + add(); + } + + callback(null, data); + }); + } else { + add(); + setImmediate(callback, null, data); + } + } else { + // TOS accepted + setImmediate(callback, null, data); + } + }, + ], }); callback(); diff --git a/src/user/blocks.js b/src/user/blocks.js new file mode 100644 index 000000000000..5fd8977874a9 --- /dev/null +++ b/src/user/blocks.js @@ -0,0 +1,112 @@ +'use strict'; + +var async = require('async'); +var db = require('../database'); +var LRU = require('lru-cache'); + +module.exports = function (User) { + User.blocks = { + _cache: LRU({ + max: 100, + length: function () { return 1; }, + maxAge: 0, + }), + }; + + User.blocks.is = function (targetUid, uid, callback) { + User.blocks.list(uid, function (err, blocks) { + callback(err, blocks.includes(parseInt(targetUid, 10))); + }); + }; + + User.blocks.can = function (uid, callback) { + // Administrators and global moderators cannot be blocked + User.isAdminOrGlobalMod(uid, (err, can) => callback(err, !can)); + }; + + User.blocks.list = function (uid, callback) { + if (User.blocks._cache.has(uid)) { + return setImmediate(callback, null, User.blocks._cache.get(uid)); + } + + db.getSortedSetRange('uid:' + uid + ':blocked_uids', 0, -1, function (err, blocked) { + if (err) { + return callback(err); + } + + blocked = blocked.map(uid => parseInt(uid, 10)).filter(Boolean); + User.blocks._cache.set(uid, blocked); + callback(null, blocked); + }); + }; + + User.blocks.add = function (targetUid, uid, callback) { + async.waterfall([ + async.apply(this.applyChecks, true, targetUid, uid), + async.apply(db.sortedSetAdd.bind(db), 'uid:' + uid + ':blocked_uids', Date.now(), targetUid), + async.apply(User.incrementUserFieldBy, uid, 'blocksCount', 1), + function (_blank, next) { + User.blocks._cache.del(uid); + setImmediate(next); + }, + async.apply(User.blocks.list, uid), + ], callback); + }; + + User.blocks.remove = function (targetUid, uid, callback) { + async.waterfall([ + async.apply(this.applyChecks, false, targetUid, uid), + async.apply(db.sortedSetRemove.bind(db), 'uid:' + uid + ':blocked_uids', targetUid), + async.apply(User.decrementUserFieldBy, uid, 'blocksCount', 1), + function (_blank, next) { + User.blocks._cache.del(uid); + setImmediate(next); + }, + async.apply(User.blocks.list, uid), + ], callback); + }; + + User.blocks.applyChecks = function (block, targetUid, uid, callback) { + if (parseInt(targetUid, 10) === parseInt(uid, 10)) { + return setImmediate(callback, new Error('[[error:cannot-block-self]]')); + } + + User.blocks.is(targetUid, uid, function (err, is) { + callback(err || (is === block ? new Error('[[error:already-' + (block ? 'blocked' : 'unblocked') + ']]') : null)); + }); + }; + + User.blocks.filter = function (uid, property, set, callback) { + // Given whatever is passed in, iterates through it, and removes entries made by blocked uids + // property is optional + if (Array.isArray(property) && typeof set === 'function' && !callback) { + callback = set; + set = property; + property = 'uid'; + } + + if (!Array.isArray(set) || !set.length || !set.every((item) => { + if (!item) { + return false; + } + + const check = item.hasOwnProperty(property) ? item[property] : item; + return ['number', 'string'].includes(typeof check); + })) { + return callback(null, set); + } + + const isPlain = typeof set[0] !== 'object'; + User.blocks.list(uid, function (err, blocked_uids) { + if (err) { + return callback(err); + } + + set = set.filter(function (item) { + return !blocked_uids.includes(parseInt(isPlain ? item : item[property], 10)); + }); + + callback(null, set); + }); + }; +}; diff --git a/src/user/create.js b/src/user/create.js index f2a9b87f55e5..b0eba41c6b36 100644 --- a/src/user/create.js +++ b/src/user/create.js @@ -46,6 +46,8 @@ module.exports = function (User) { lastposttime: 0, banned: 0, status: 'online', + gdpr_consent: data.gdpr_consent === true ? 1 : 0, + acceptTos: data.acceptTos === true ? 1 : 0, }; User.uniqueUsername(userData, next); diff --git a/src/user/data.js b/src/user/data.js index db41509aa099..05ebc2f9b253 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -80,7 +80,7 @@ module.exports = function (User) { fields = fields.filter(function (field) { var isFieldWhitelisted = field && results.whitelist.includes(field); if (!isFieldWhitelisted) { - winston.verbose('[user/getUsersFields] ' + field + ' removed because it is not whitelisted, see `filter:user.whietlistFields`'); + winston.verbose('[user/getUsersFields] ' + field + ' removed because it is not whitelisted, see `filter:user.whitelistFields`'); } return isFieldWhitelisted; }); @@ -135,7 +135,9 @@ module.exports = function (User) { if (!user) { return; } - + if (user.hasOwnProperty('groupTitle')) { + parseGroupTitle(user); + } if (user.hasOwnProperty('username')) { user.username = validator.escape(user.username ? user.username.toString() : ''); } @@ -192,6 +194,20 @@ module.exports = function (User) { plugins.fireHook('filter:users.get', users, callback); } + function parseGroupTitle(user) { + try { + user.groupTitleArray = JSON.parse(user.groupTitle); + } catch (err) { + user.groupTitleArray = [user.groupTitle]; + } + if (!Array.isArray(user.groupTitleArray)) { + user.groupTitleArray = [user.groupTitleArray]; + } + if (parseInt(meta.config.allowMultipleBadges, 10) !== 1) { + user.groupTitleArray = [user.groupTitleArray[0]]; + } + } + User.getDefaultAvatar = function () { if (!meta.config.defaultAvatar) { return ''; diff --git a/src/user/delete.js b/src/user/delete.js index ace9dd969c51..67125696346e 100644 --- a/src/user/delete.js +++ b/src/user/delete.js @@ -2,6 +2,8 @@ var async = require('async'); var _ = require('lodash'); +var path = require('path'); +var nconf = require('nconf'); var db = require('../database'); var posts = require('../posts'); @@ -10,6 +12,7 @@ var groups = require('../groups'); var messaging = require('../messaging'); var plugins = require('../plugins'); var batch = require('../batch'); +var file = require('../file'); module.exports = function (User) { User.delete = function (callerUid, uid, callback) { @@ -24,6 +27,9 @@ module.exports = function (User) { function (next) { deleteTopics(callerUid, uid, next); }, + function (next) { + deleteUploads(uid, next); + }, function (next) { User.deleteAccount(uid, next); }, @@ -46,6 +52,21 @@ module.exports = function (User) { }, { alwaysStartAt: 0 }, callback); } + function deleteUploads(uid, callback) { + batch.processSortedSet('uid:' + uid + ':uploads', function (uploadNames, next) { + async.waterfall([ + function (next) { + async.each(uploadNames, function (uploadName, next) { + file.delete(path.join(nconf.get('upload_path'), uploadName), next); + }, next); + }, + function (next) { + db.sortedSetRemove('uid:' + uid + ':uploads', uploadNames, next); + }, + ], next); + }, { alwaysStartAt: 0 }, callback); + } + User.deleteAccount = function (uid, callback) { var userData; async.waterfall([ diff --git a/src/user/settings.js b/src/user/settings.js index c654d2dd995c..202c440d145b 100644 --- a/src/user/settings.js +++ b/src/user/settings.js @@ -6,6 +6,7 @@ var async = require('async'); var meta = require('../meta'); var db = require('../database'); var plugins = require('../plugins'); +var notifications = require('../notifications'); module.exports = function (User) { User.getSettings = function (uid, callback) { @@ -81,12 +82,14 @@ module.exports = function (User) { settings.delayImageLoading = parseInt(getSetting(settings, 'delayImageLoading', 1), 10) === 1; settings.bootswatchSkin = settings.bootswatchSkin || meta.config.bootswatchSkin || 'default'; settings.scrollToMyPost = parseInt(getSetting(settings, 'scrollToMyPost', 1), 10) === 1; - settings.notificationType_upvote = getSetting(settings, 'notificationType_upvote', 'notification'); - settings['notificationType_new-topic'] = getSetting(settings, 'notificationType_new-topic', 'notification'); - settings['notificationType_new-reply'] = getSetting(settings, 'notificationType_new-reply', 'notification'); - settings.notificationType_follow = getSetting(settings, 'notificationType_follow', 'notification'); - settings['notificationType_new-chat'] = getSetting(settings, 'notificationType_new-chat', 'notification'); - settings['notificationType_group-invite'] = getSetting(settings, 'notificationType_group-invite', 'notification'); + + notifications.getAllNotificationTypes(next); + }, + function (notificationTypes, next) { + notificationTypes.forEach(function (notificationType) { + settings[notificationType] = getSetting(settings, notificationType, 'notification'); + }); + next(null, settings); }, ], callback); @@ -139,26 +142,20 @@ module.exports = function (User) { upvoteNotifFreq: data.upvoteNotifFreq, }; - var notificationTypes = [ - 'notificationType_upvote', 'notificationType_new-topic', 'notificationType_new-reply', - 'notificationType_follow', 'notificationType_new-chat', 'notificationType_group-invite', - 'notificationType_new-register', 'notificationType_post-queue', 'notificationType_new-post-flag', - 'notificationType_new-user-flag', - ]; - - notificationTypes.forEach(function (notificationType) { - if (data[notificationType]) { - settings[notificationType] = data[notificationType]; - } - }); - - if (data.bootswatchSkin) { settings.bootswatchSkin = data.bootswatchSkin; } async.waterfall([ function (next) { + notifications.getAllNotificationTypes(next); + }, + function (notificationTypes, next) { + notificationTypes.forEach(function (notificationType) { + if (data[notificationType]) { + settings[notificationType] = data[notificationType]; + } + }); plugins.fireHook('filter:user.saveSettings', { settings: settings, data: data }, next); }, function (result, next) { diff --git a/src/user/uploads.js b/src/user/uploads.js new file mode 100644 index 000000000000..95b342ad27cf --- /dev/null +++ b/src/user/uploads.js @@ -0,0 +1,50 @@ +'use strict'; + +var async = require('async'); +var path = require('path'); +var nconf = require('nconf'); + +var db = require('../database'); +var file = require('../file'); +var batch = require('../batch'); + +module.exports = function (User) { + User.deleteUpload = function (callerUid, uid, uploadName, callback) { + async.waterfall([ + function (next) { + async.parallel({ + isUsersUpload: function (next) { + db.isSortedSetMember('uid:' + callerUid + ':uploads', uploadName, next); + }, + isAdminOrGlobalMod: function (next) { + User.isAdminOrGlobalMod(callerUid, next); + }, + }, next); + }, + function (results, next) { + if (!results.isAdminOrGlobalMod && !results.isUsersUpload) { + return next(new Error('[[error:no-privileges]]')); + } + + file.delete(path.join(nconf.get('upload_path'), uploadName), next); + }, + function (next) { + db.sortedSetRemove('uid:' + uid + ':uploads', uploadName, next); + }, + ], callback); + }; + + User.collateUploads = function (uid, archive, callback) { + batch.processSortedSet('uid:' + uid + ':uploads', function (files, next) { + files.forEach(function (file) { + archive.file(path.join(nconf.get('upload_path'), file), { + name: path.basename(file), + }); + }); + + setImmediate(next); + }, function (err) { + callback(err); + }); + }; +}; diff --git a/src/views/500-embed.tpl b/src/views/500-embed.tpl index d9d9f30d5d26..3bd685704839 100644 --- a/src/views/500-embed.tpl +++ b/src/views/500-embed.tpl @@ -1,6 +1,6 @@