diff --git a/install/data/defaults.json b/install/data/defaults.json index 9e08416ce6..3d45ff6565 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -38,5 +38,5 @@ "bookmarkThreshold": 5, "topicsPerList": 20, "autoDetectLang": 1, - "privileges:flag": 0 + "min:rep:flag": 0 } diff --git a/install/package.json b/install/package.json index 1569f3d17d..2445fd995a 100644 --- a/install/package.json +++ b/install/package.json @@ -19,23 +19,23 @@ "dependencies": { "ace-builds": "^1.2.9", "async": "2.6.0", - "autoprefixer": "7.1.6", + "autoprefixer": "7.2.4", "bcryptjs": "2.4.3", "benchpressjs": "^1.2.0", "body-parser": "^1.18.2", "bootstrap": "^3.3.7", - "chart.js": "^2.7.0", + "chart.js": "^2.7.1", "colors": "^1.1.2", "compression": "^1.7.1", - "commander": "^2.11.0", + "commander": "^2.12.2", "connect-ensure-login": "^0.1.1", "connect-flash": "^0.1.1", - "connect-mongo": "2.0.0", + "connect-mongo": "2.0.1", "connect-multiparty": "^2.1.0", - "connect-redis": "3.3.2", + "connect-redis": "3.3.3", "cookie-parser": "^1.4.3", "cron": "^1.3.0", - "cropperjs": "^1.1.3", + "cropperjs": "^1.2.2", "csurf": "^1.9.0", "daemon": "^1.1.0", "express": "^4.16.2", @@ -48,18 +48,18 @@ "jquery": "^3.2.1", "jsesc": "2.5.1", "json-2-csv": "^2.1.2", - "less": "^2.7.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.0.3", + "mime": "^2.2.0", "mkdirp": "^0.5.1", "mongodb": "2.2.33", "morgan": "^1.9.0", "mousetrap": "^1.6.1", "nconf": "^0.9.1", - "nodebb-plugin-composer-default": "6.0.7", + "nodebb-plugin-composer-default": "6.0.8", "nodebb-plugin-dbsearch": "2.0.9", "nodebb-plugin-emoji": "2.0.9", "nodebb-plugin-emoji-android": "2.0.0", @@ -67,24 +67,27 @@ "nodebb-plugin-mentions": "2.2.2", "nodebb-plugin-soundpack-default": "1.0.0", "nodebb-plugin-spam-be-gone": "0.5.1", - "nodebb-rewards-essentials": "0.0.9", - "nodebb-theme-lavender": "5.0.0", - "nodebb-theme-persona": "7.2.9", - "nodebb-theme-slick": "1.1.2", - "nodebb-theme-vanilla": "8.1.4", + "nodebb-rewards-essentials": "0.0.11", + "nodebb-theme-lavender": "5.0.1", + "nodebb-theme-persona": "7.2.18", + "nodebb-theme-slick": "1.1.4", + "nodebb-theme-vanilla": "8.1.8", + "nodebb-theme-persona": "7.2.16", + "nodebb-theme-slick": "1.1.4", + "nodebb-theme-vanilla": "8.1.7", "nodebb-widget-essentials": "4.0.1", - "nodemailer": "4.4.0", + "nodemailer": "4.4.1", "passport": "^0.4.0", "passport-local": "1.0.0", - "postcss": "6.0.14", + "postcss": "6.0.15", "postcss-clean": "1.1.0", - "promise-polyfill": "^6.0.2", + "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.14.1", + "sanitize-html": "^1.16.3", "semver": "^5.4.1", "serve-favicon": "^2.4.5", "sitemap": "^1.13.0", @@ -94,25 +97,25 @@ "socketio-wildcard": "2.0.0", "spdx-license-list": "^3.0.1", "toobusy-js": "^0.5.1", - "uglify-js": "^3.1.5", - "validator": "9.1.2", + "uglify-js": "^3.3.4", + "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.9.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.3.0", - "mocha": "^4.0.1", - "mocha-lcov-reporter": "^1.3.0", - "nyc": "^11.2.1", - "smtp-server": "^3.3.0" + "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" diff --git a/install/web.js b/install/web.js index 92dcdb17d3..8bfd416785 100644 --- a/install/web.js +++ b/install/web.js @@ -10,6 +10,7 @@ var less = require('less'); var async = require('async'); var uglify = require('uglify-js'); var nconf = require('nconf'); +var _ = require('lodash'); var Benchpress = require('benchpressjs'); var app = express(); @@ -103,14 +104,16 @@ function welcome(req, res) { } function install(req, res) { + req.setTimeout(0); + var setupEnvVars = _.assign({}, process.env); for (var i in req.body) { if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) { - process.env[i.replace(':', '__')] = req.body[i]; + setupEnvVars[i.replace(':', '__')] = req.body[i]; } } var child = require('child_process').fork('app', ['--setup'], { - env: process.env, + env: setupEnvVars, }); child.on('close', function (data) { diff --git a/public/language/ar/admin/appearance/customise.json b/public/language/ar/admin/appearance/customise.json index 94280603a6..4e292f0792 100644 --- a/public/language/ar/admin/appearance/customise.json +++ b/public/language/ar/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "CSS مخصص", - "custom-css.description": "أدخل CSS الخاصة بك هنا، والتي سيتم تطبيقها بعد كل القوالب الأخرى.", - "custom-css.enable": "تفعيل CSS المخصص", + "custom-css": "Custom 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-js": "Javascript مخصصة", "custom-js.description": "أدخل Javascript الخاص بك هنا. سيتم تنفيذها بعد تحميل الصفحة بالكامل.", diff --git a/public/language/ar/admin/general/homepage.json b/public/language/ar/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/ar/admin/general/homepage.json +++ b/public/language/ar/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/ar/admin/general/sounds.json b/public/language/ar/admin/general/sounds.json index 95ccbde0f1..6f49e01f91 100644 --- a/public/language/ar/admin/general/sounds.json +++ b/public/language/ar/admin/general/sounds.json @@ -1,5 +1,5 @@ { - "notifications": "Notifications", + "notifications": "التنبيهات", "chat-messages": "Chat Messages", "play-sound": "Play", "incoming-message": "Incoming Message", diff --git a/public/language/ar/admin/manage/categories.json b/public/language/ar/admin/manage/categories.json index 871affe560..9d006cd5c9 100644 --- a/public/language/ar/admin/manage/categories.json +++ b/public/language/ar/admin/manage/categories.json @@ -1,6 +1,6 @@ { - "settings": "Category Settings", - "privileges": "Privileges", + "settings": "اعدادات القسم", + "privileges": "الصلاحيات", "name": "Category Name", "description": "Category Description", diff --git a/public/language/ar/admin/manage/groups.json b/public/language/ar/admin/manage/groups.json index c019ec9823..8bc3e44a55 100644 --- a/public/language/ar/admin/manage/groups.json +++ b/public/language/ar/admin/manage/groups.json @@ -1,5 +1,5 @@ { - "name": "Group Name", + "name": "اسم المجموعة", "description": "Group Description", "member-count": "Member Count", "system": "System Group", diff --git a/public/language/ar/admin/manage/tags.json b/public/language/ar/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/ar/admin/manage/tags.json +++ b/public/language/ar/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/ar/admin/manage/users.json b/public/language/ar/admin/manage/users.json index f1651a814b..d56c204f29 100644 --- a/public/language/ar/admin/manage/users.json +++ b/public/language/ar/admin/manage/users.json @@ -1,6 +1,6 @@ { - "users": "Users", - "edit": "Edit", + "users": "المستخدمين", + "edit": "تحرير", "make-admin": "Make Admin", "remove-admin": "Remove Admin", "validate-email": "Validate Email", @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/ar/admin/menu.json b/public/language/ar/admin/menu.json index 07fe387d20..870ae082a6 100644 --- a/public/language/ar/admin/menu.json +++ b/public/language/ar/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "إدارة", "manage/categories": "الأقسام", + "manage/privileges": "Privileges", "manage/tags": "الكلمات المفتاحية", "manage/users": "الأعضاء", + "manage/admins-mods": "Admins & Mods", "manage/registration": "قائمة انتظار التسجيل", "manage/post-queue": "قائمة انتظار المشاركة", "manage/groups": "المجموعات", diff --git a/public/language/ar/admin/settings/chat.json b/public/language/ar/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/ar/admin/settings/chat.json +++ b/public/language/ar/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/ar/admin/settings/cookies.json b/public/language/ar/admin/settings/cookies.json index f8b0f0538b..520af185a2 100644 --- a/public/language/ar/admin/settings/cookies.json +++ b/public/language/ar/admin/settings/cookies.json @@ -1,6 +1,6 @@ { "eu-consent": "EU Consent", - "consent.enabled": "Enabled", + "consent.enabled": "تفعيل", "consent.message": "Notification message", "consent.acceptance": "Acceptance message", "consent.link-text": "Policy Link Text", diff --git a/public/language/ar/admin/settings/post.json b/public/language/ar/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/ar/admin/settings/post.json +++ b/public/language/ar/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/ar/admin/settings/reputation.json b/public/language/ar/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/ar/admin/settings/reputation.json +++ b/public/language/ar/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/ar/error.json b/public/language/ar/error.json index 56700c46ef..d5c859f886 100644 --- a/public/language/ar/error.json +++ b/public/language/ar/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "المرجود تحديد اسم مستخدم و كلمة مرور", "invalid-search-term": "كلمة البحث غير صحيحة", + "invalid-url": "Invalid URL", "csrf-invalid": "لم تتمكن من تسجيل الدخول. هنالك أحتمال ان جلستك انتهت. رجاءًا حاول مرة اخرى.", "invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .", "username-taken": "اسم المستخدم مأخوذ", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "غير مصرح لك بتعديل الرسالة.", "cant-remove-last-user": "لأيمكنك إزالت اخر مستخدم.", "cant-delete-chat-message": "غير مصرح لك بحذف الرسالة.", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "لقد شاركت بالتصويت ، ألا تذكر؟", "reputation-system-disabled": "نظام السمعة معطل", "downvoting-disabled": "التصويتات السلبية معطلة", "not-enough-reputation-to-downvote": "ليس لديك سمعة تكفي لإضافة صوت سلبي لهذا الموضوع", "not-enough-reputation-to-flag": "ليس لديك سمعة تكفي للإشعار بموضوع مخل", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "لقد بلغت عن هذه المشاركة من قبل.", "self-vote": "You cannot vote on your own post", "reload-failed": "المنتدى واجه مشكلة أثناء إعادة التحميل: \"%1\". سيواصل المنتدى خدمة العملاء السابقين لكن يجب عليك إلغاء أي تغيير قمت به قبل إعادة التحميل.", diff --git a/public/language/ar/global.json b/public/language/ar/global.json index 97f55f0500..a77e9823d9 100644 --- a/public/language/ar/global.json +++ b/public/language/ar/global.json @@ -53,6 +53,7 @@ "topics": "المواضيع", "posts": "المشاركات", "best": "الأفضل", + "votes": "Votes", "upvoters": "الموافقين", "upvoted": "مصوت بالموجب", "downvoters": "مصوتين بالسالب", diff --git a/public/language/ar/pages.json b/public/language/ar/pages.json index d13e3758f8..ce00bd2515 100644 --- a/public/language/ar/pages.json +++ b/public/language/ar/pages.json @@ -6,6 +6,7 @@ "popular-month": "المواضيع الشائعة هذا الشهر", "popular-alltime": "المواضيع الشائعة منذ القدم", "recent": "المواضيع الحديثة", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "بحث عن مستخدم", "notifications": "التنبيهات", "tags": "الكلمات الدلالية", - "tag": "المواضيع المرتبطة بالوسم %1", + "tag": "Topics tagged under "%1"", "register": "تسجيل حساب", "registration-complete": "Registration complete", "login": "سجل الدخول الى حسابك", diff --git a/public/language/ar/topic.json b/public/language/ar/topic.json index 851e10c292..0bae0650fb 100644 --- a/public/language/ar/topic.json +++ b/public/language/ar/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "أدوات الموضوع", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "علق الموضوع", "thread_tools.unpin": "إلغاء تعليق الموضوع", "thread_tools.lock": "أقفل الموضوع", diff --git a/public/language/ar/user.json b/public/language/ar/user.json index 76b908b909..75e875acbc 100644 --- a/public/language/ar/user.json +++ b/public/language/ar/user.json @@ -112,7 +112,7 @@ "topic_search_help": "إذا قمت بتفعيل ميزة البحث في-الموضوع، سيتم تجاوز الخيار الافتراضي للمتصفح مما يؤدي للبحث بكامل الموضوع بدلا عن البحث في الجزء الظاهر في الشاشة.", "delay_image_loading": "تأخير عرض الصور", "image_load_delay_help": "إذا تم تمكينه، فلن يتم تحميل الصور في المواضيع حتى يتم تمريرها في الشاشة", - "scroll_to_my_post": "After posting a reply, show the new post", + "scroll_to_my_post": "بعد اضافة رد على المشاركة, قم بإظهار المشاركة", "follow_topics_you_reply_to": "متابعة المواضيع التي تقوم بالرد عليها", "follow_topics_you_create": "متابعة المواضيع التي تقوم بإنشائها", "grouptitle": "عنوان المجموعة", diff --git a/public/language/bg/admin/appearance/customise.json b/public/language/bg/admin/appearance/customise.json index 5f6214b70e..ddc5aa4354 100644 --- a/public/language/bg/admin/appearance/customise.json +++ b/public/language/bg/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Персонализиран CSS", - "custom-css.description": "Въведете своите собствени декларации за стилове, те ще бъдат приложени след всички останали стилове.", - "custom-css.enable": "Включване на персонализиран CSS", + "custom-css": "Персонализиран CSS/LESS", + "custom-css.description": "Въведете своите собствени декларации на CSS/LESS, те ще бъдат приложени след всички останали стилове.", + "custom-css.enable": "Включване на персонализиран CSS/LESS", "custom-js": "Персонализиран код на Javascript", "custom-js.description": "Въведете свой собствен код на javascript тук. Той ще бъде изпълнен след като страницата се зареди напълно.", diff --git a/public/language/bg/admin/general/homepage.json b/public/language/bg/admin/general/homepage.json index ac9487881b..f0b6df5266 100644 --- a/public/language/bg/admin/general/homepage.json +++ b/public/language/bg/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Изберете коя страница да бъде показана, когато потребителите отидат на главния адрес на форума.", "home-page-route": "Път на началната страница", "custom-route": "Персонализиран път", - "allow-user-home-pages": "Разрешаване на потребителските начални страници" + "allow-user-home-pages": "Разрешаване на потребителските начални страници", + "home-page-title": "Заглавие на началната страница (по подразбиране: „Начало“)" } \ No newline at end of file diff --git a/public/language/bg/admin/manage/tags.json b/public/language/bg/admin/manage/tags.json index 71680917df..b9131ee925 100644 --- a/public/language/bg/admin/manage/tags.json +++ b/public/language/bg/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Изберете етикетите чрез щракване и/или влачене. Използвайте „Shift“, за да изберете няколко етикета.", "create": "Създаване на етикет", "modify": "Редактиране на етикети", + "rename": "Преименуване на етикети", "delete": "Изтриване на избраните етикети", "search": "Търсене на етикети…", "settings": "Натиснете тук, за да отворите страницата с настройки на етикета.", diff --git a/public/language/bg/admin/manage/users.json b/public/language/bg/admin/manage/users.json index 9df3f1daa3..07f066ae64 100644 --- a/public/language/bg/admin/manage/users.json +++ b/public/language/bg/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Блокиран", "pills.search": "Търсене на потребители", + "search.uid": "По потребителски идентификатор", + "search.uid-placeholder": "Въведете потребителски идентификатор, който да потърсите", "search.username": "По име на потребител", "search.username-placeholder": "Въведете потребителско име, което да потърсите", "search.email": "По е-поща", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Заключването/ията е/са нулирано/и!", "alerts.flag-reset-success": "Докладът/ите е/са анулиран(и)!", "alerts.no-remove-yourself-admin": "Не можете да отнемете собствените си права на администратор!", - "alerts.make-admin-success": "Потребителят/ите вече е/са администратор(и).", - "alerts.confirm-remove-admin": "Наистина ли искате да премахнете администраторите?", - "alerts.remove-admin-success": "Потребителят/ите вече не е/са администратор(и)", + "alerts.make-admin-success": "Потребителят вече ще бъде администратор.", + "alerts.confirm-remove-admin": "Наистина ли искате да премахнете този администратор?", + "alerts.remove-admin-success": "Потребителят вече няма да бъде администратор.", + "alerts.make-global-mod-success": "Потребителят вече ще бъде глобален модератор.", + "alerts.confirm-remove-global-mod": "Наистина ли искате да премахнете този глобален модератор?", + "alerts.remove-global-mod-success": "Потребителят вече няма да бъде глобален модератор.", + "alerts.make-moderator-success": "Потребителят вече ще бъде модератор.", + "alerts.confirm-remove-moderator": "Наистина ли искате да премахнете този модератор?", + "alerts.remove-moderator-success": "Потребителят вече няма да бъде модератор.", "alerts.confirm-validate-email": "Искате ли да проверите е-пощата/ите на този/тези потребител(и)?", "alerts.validate-email-success": "Е-пощите са проверени", "alerts.password-reset-confirm": "Искате ли да изпратите е-писмо/а за възстановяване на паролата на този/тези потребител(и)?", diff --git a/public/language/bg/admin/menu.json b/public/language/bg/admin/menu.json index fe3d478f54..b7e9726fea 100644 --- a/public/language/bg/admin/menu.json +++ b/public/language/bg/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Управление", "manage/categories": "Категории", + "manage/privileges": "Правомощия", "manage/tags": "Етикети", "manage/users": "Потребители", + "manage/admins-mods": "Администратори и модератори", "manage/registration": "Регистрационна опашка", "manage/post-queue": "Опашка за публикации", "manage/groups": "Групи", diff --git a/public/language/bg/admin/settings/chat.json b/public/language/bg/admin/settings/chat.json index c5079ceb89..3169ac599e 100644 --- a/public/language/bg/admin/settings/chat.json +++ b/public/language/bg/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Това ограничение не засяга администраторите и глобалните модератори", "max-length": "Максимална дължина на съобщенията в разговорите", "max-room-size": "Максимален брой потребители в стая за разговор", - "delay": "Време между съобщеният в разговорите (в милисекунди)" + "delay": "Време между съобщеният в разговорите (в милисекунди)", + "restrictions.seconds-edit-after": "Брой секунди, в които потребителите не могат да редактират съобщенията си в разговорите след публикуването им. (0 = изключено)", + "restrictions.seconds-delete-after": "Брой секунди, в които потребителите не могат да изтрият съобщенията си в разговорите след публикуването им. (0 = изключено)" } \ No newline at end of file diff --git a/public/language/bg/admin/settings/post.json b/public/language/bg/admin/settings/post.json index 8aadba3e52..432076b60e 100644 --- a/public/language/bg/admin/settings/post.json +++ b/public/language/bg/admin/settings/post.json @@ -6,15 +6,19 @@ "sorting.most-votes": "Първо тези с най-много гласове", "sorting.most-posts": "Първо тези с най-много публикации", "sorting.topic-default": "Подредба по подразбиране на темите", + "length": "Дължина на публикациите", "restrictions": "Ограничения за публикуването", + "restrictions-new": "Ограничения за новите потребители", "restrictions.post-queue": "Включване на опашката за публикации", + "restrictions-new.post-queue": "Включване на ограниченията за новите потребители", "restrictions.post-queue-help": "Ако опашката за публикации е включена, публикациите на новите потребители ще бъдат добавяни в опашка за одобрение.", + "restrictions-new.post-queue-help": "Ако ограниченията за новите потребители са включени, това ще зададе някои ограничения за публикациите създадени от новите потребители.", "restrictions.seconds-between": "Брой секунди между публикациите", "restrictions.seconds-between-new": "Брой секунди между публикациите за нови потребители", "restrictions.rep-threshold": "Необходима репутация за премахване на това ограничение", "restrictions.seconds-defore-new": "Брой секунди преди новите потребители да могат да публикуват", - "restrictions.seconds-edit-after": "Брой секунди, в които потребителите могат да редактират публикациите си след публикуването им. (0 = изключено)", - "restrictions.seconds-delete-after": "Брой секунди, в които потребителите могат да изтрият публикациите си след публикуването им. (0 = изключено)", + "restrictions.seconds-edit-after": "Брой секунди, в които потребителите не могат да редактират публикациите си след публикуването им. (0 = изключено)", + "restrictions.seconds-delete-after": "Брой секунди, в които потребителите не могат да изтрият публикациите си след публикуването им. (0 = изключено)", "restrictions.replies-no-delete": "Брой отговори, след които потребителите вече не могат да изтриват собствените си теми. (0 = изключено)", "restrictions.min-title-length": "Минимална дължина на заглавието", "restrictions.max-title-length": "Максимална дължина на заглавието", diff --git a/public/language/bg/admin/settings/reputation.json b/public/language/bg/admin/settings/reputation.json index 2b52ff3de9..7a75a46352 100644 --- a/public/language/bg/admin/settings/reputation.json +++ b/public/language/bg/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Всички гласувания са публични", "thresholds": "Ограничения на дейността", "min-rep-downvote": "Минимална репутация, необходима за отрицателно гласуване за публикации", - "min-rep-flag": "Минимална репутация, необходима за докладване на публикации" + "min-rep-flag": "Минимална репутация, необходима за докладване на публикации", + "min-rep-website": "Минимална репутация, необходима за добавяне на полето „Уебсайт“ към профила на потребителя", + "min-rep-aboutme": "Минимална репутация, необходима за добавяне на полето „За мен“ към профила на потребителя", + "min-rep-signature": "Минимална репутация, необходима за добавяне на полето „Подпис“ към профила на потребителя" } \ No newline at end of file diff --git a/public/language/bg/error.json b/public/language/bg/error.json index 7612b0677a..bebe6bb668 100644 --- a/public/language/bg/error.json +++ b/public/language/bg/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Неправилни данни за удостоверяване", "invalid-username-or-password": "Моля, въведете потребителско име и парола", "invalid-search-term": "Грешен текст за търсене", + "invalid-url": "Грешен адрес", "csrf-invalid": "Не успяхме да Ви впишем, най-вероятно защото сесията Ви е изтекла. Моля, опитайте отново", "invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2", "username-taken": "Потребителското име е заето", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Нямате право да редактирате това съобщение", "cant-remove-last-user": "Не можете да премахнете последния потребител", "cant-delete-chat-message": "Нямате право да изтриете това съобщение", + "chat-edit-duration-expired": "Можете да редактирате съобщенията си в разговорите до %1 секунда/и, след като ги пуснете", + "chat-delete-duration-expired": "Можете да изтривате съобщенията си в разговорите до %1 секунда/и след пускането им", "already-voting-for-this-post": "Вече сте дали глас за тази публикация.", "reputation-system-disabled": "Системата за репутация е изключена.", "downvoting-disabled": "Отрицателното гласуване е изключено", "not-enough-reputation-to-downvote": "Нямате достатъчно репутация, за да гласувате отрицателно за тази публикация", "not-enough-reputation-to-flag": "Нямате достатъчно репутация, за да докладвате тази публикация", + "not-enough-reputation-min-rep-website": "Нямате достатъчно репутация, за да добавите уеб сайт", + "not-enough-reputation-min-rep-aboutme": "Нямате достатъчно репутация, за да добавите информация за себе си", + "not-enough-reputation-min-rep-signature": "Нямате достатъчно репутация, за да добавите подпис", "already-flagged": "Вече сте докладвали тази публикация", "self-vote": "Не можете да гласувате за собствената си публикация", "reload-failed": "NodeBB срещна проблем при презареждането: „%1“. NodeBB ще продължи да поддържа съществуващите клиентски ресурси, но Вие трябва да отмените последните си действия преди презареждането.", diff --git a/public/language/bg/global.json b/public/language/bg/global.json index 801f82740c..c23c95faf2 100644 --- a/public/language/bg/global.json +++ b/public/language/bg/global.json @@ -53,6 +53,7 @@ "topics": "Теми", "posts": "Публ.", "best": "Най-добри", + "votes": "Гласове", "upvoters": "Гласували положително", "upvoted": "С положителни гласове", "downvoters": "Гласували отрицателно", diff --git a/public/language/bg/pages.json b/public/language/bg/pages.json index 118f5e35bf..1a1fcae72c 100644 --- a/public/language/bg/pages.json +++ b/public/language/bg/pages.json @@ -6,6 +6,7 @@ "popular-month": "Популярните теми този месец", "popular-alltime": "Популярните теми за всички времена", "recent": "Скорошни теми", + "top": "Теми с най-много гласове", "moderator-tools": "Модераторски инструменти", "flagged-content": "Докладвано съдържание", "ip-blacklist": "Черен списък за IP адреси", @@ -19,7 +20,7 @@ "users/search": "Търсене на потребители", "notifications": "Известия", "tags": "Етикети", - "tag": "Теми, отбелязани като „%1“", + "tag": "Теми отбелязани като „%1“", "register": "Регистриране на акаунт", "registration-complete": "Регистрацията е завършена", "login": "Впишете се в акаунта си", diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json index c09c9927d8..e401c016bb 100644 --- a/public/language/bg/topic.json +++ b/public/language/bg/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Не искам да получавам известия за новите отговори.
Темата да се показва в списъка с непрочетени, само ако категорията не се пренебрегва.", "ignoring.description": "Не искам да получавам известия за новите отговори.
Не искам темата да се показва в списъка с непрочетени.", "thread_tools.title": "Инструменти за темата", - "thread_tools.markAsUnreadForAll": "Отбелязване като непрочетена за всички", + "thread_tools.markAsUnreadForAll": "Отбелязване на всички като непрочетени", "thread_tools.pin": "Закачане на темата", "thread_tools.unpin": "Откачане на темата", "thread_tools.lock": "Заключване на темата", diff --git a/public/language/bn/admin/appearance/customise.json b/public/language/bn/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/bn/admin/appearance/customise.json +++ b/public/language/bn/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/bn/admin/general/homepage.json b/public/language/bn/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/bn/admin/general/homepage.json +++ b/public/language/bn/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/bn/admin/manage/tags.json b/public/language/bn/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/bn/admin/manage/tags.json +++ b/public/language/bn/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/bn/admin/manage/users.json b/public/language/bn/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/bn/admin/manage/users.json +++ b/public/language/bn/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/bn/admin/menu.json b/public/language/bn/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/bn/admin/menu.json +++ b/public/language/bn/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/bn/admin/settings/chat.json b/public/language/bn/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/bn/admin/settings/chat.json +++ b/public/language/bn/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/bn/admin/settings/post.json b/public/language/bn/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/bn/admin/settings/post.json +++ b/public/language/bn/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/bn/admin/settings/reputation.json b/public/language/bn/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/bn/admin/settings/reputation.json +++ b/public/language/bn/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/bn/error.json b/public/language/bn/error.json index 072039ee7c..1131b63773 100644 --- a/public/language/bn/error.json +++ b/public/language/bn/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "অনুগ্রহ পূর্বক ইউজারনেম এবং পাসওয়ার্ড উভয়ই প্রদান করুন", "invalid-search-term": "অগ্রহনযোগ্য সার্চ টার্ম", + "invalid-url": "Invalid URL", "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": "ইউজারনেম আগেই ব্যবহৃত", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "সম্মাননা ব্যাবস্থা নিস্ক্রীয় রাখা হয়েছে", "downvoting-disabled": "ঋণাত্মক ভোট নিস্ক্রীয় রাখা হয়েছে।", "not-enough-reputation-to-downvote": "আপনার এই পোস্ট downvote করার জন্য পর্যাপ্ত সম্মাননা নেই", "not-enough-reputation-to-flag": "এই পোষ্টকে ফ্লাগ করার জন্য আপনার পর্যাপ্ত সম্মাননা নেই", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "\"%1\" রিলোড করতে সমস্যা হয়েছে। রিলোডের পূর্বে যা করা হয়েছিল সেটি আনডু করা সমীচীন। ", diff --git a/public/language/bn/global.json b/public/language/bn/global.json index 7741b7b2a8..8d016b8002 100644 --- a/public/language/bn/global.json +++ b/public/language/bn/global.json @@ -53,6 +53,7 @@ "topics": "টপিক", "posts": "পোস্টগুলি", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/bn/pages.json b/public/language/bn/pages.json index d1f23db6de..e8e9e8b1dc 100644 --- a/public/language/bn/pages.json +++ b/public/language/bn/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "সাম্প্রতিক টপিক", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "বিজ্ঞপ্তি", "tags": "ট্যাগসমূহ", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/bn/topic.json b/public/language/bn/topic.json index 537b8a7200..a3af72df7e 100644 --- a/public/language/bn/topic.json +++ b/public/language/bn/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "টপিক সম্পর্কিত টুলস", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "টপিক পিন করুন", "thread_tools.unpin": "টপিক আনপিন করুন", "thread_tools.lock": "টপিক বন্ধ করুন", diff --git a/public/language/cs/admin/appearance/customise.json b/public/language/cs/admin/appearance/customise.json index c22a869f80..6fa4cbfbca 100644 --- a/public/language/cs/admin/appearance/customise.json +++ b/public/language/cs/admin/appearance/customise.json @@ -1,14 +1,14 @@ { - "custom-css": "Uživatelský CSS", - "custom-css.description": "Zadejte vlastní deklarace CSS, které budou použity na všechny ostatních styly.", - "custom-css.enable": "Povolit uživatelské CSS", + "custom-css": "Custom 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-js": "Custom 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": "Uživatelský Javascript", + "custom-js.description": "Zadejte zde váš javascriptový kód. Bude spuštěn, jakmile se stránka plně načte.", + "custom-js.enable": "Povolit uživatelský Javascript", "custom-header": "Uživatelská hlavička", - "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": "Zde zadejte uživatelské HTML (mimo Meta Tags, atd.), které bude připojeno k části značek <head> vašeho fóra.. Značky pro „script” jsou povoleny, ale nedoporučujeme je, neboť je dostupný Uživatelský Javascript .", "custom-header.enable": "Povolit uživatelskou hlavičku", "custom-css.livereload": "Povolit aktuální znovu načtení", diff --git a/public/language/cs/admin/general/homepage.json b/public/language/cs/admin/general/homepage.json index 0dc9104843..61d64ab3a7 100644 --- a/public/language/cs/admin/general/homepage.json +++ b/public/language/cs/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Vyberte, kterou stránku chcete zobrazit, jakmile uživatel přejde na výchozí URL vašeho fóra.", "home-page-route": "Cesta k domovské stránce", "custom-route": "Upravit cestu", - "allow-user-home-pages": "Povolit uživatelům domovské stránky" + "allow-user-home-pages": "Povolit uživatelům domovské stránky", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/cs/admin/manage/post-queue.json b/public/language/cs/admin/manage/post-queue.json index 57fe1f8ab7..e46490b1b7 100644 --- a/public/language/cs/admin/manage/post-queue.json +++ b/public/language/cs/admin/manage/post-queue.json @@ -7,5 +7,5 @@ "content": "Obsah", "posted": "Přidáno", "reply-to": "Odpovědět na \"%1\"", - "content-editable": "You can click on individual content to edit before posting." + "content-editable": "Kvůli úpravám a před odesláním příspěvku můžete klikat na obsah." } \ No newline at end of file diff --git a/public/language/cs/admin/manage/tags.json b/public/language/cs/admin/manage/tags.json index 910febd31e..8c4fb5a127 100644 --- a/public/language/cs/admin/manage/tags.json +++ b/public/language/cs/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Vyberte značky pomocí kliknutí a/nebo přetažením, pro vícenásobný výběr, použijte klávesu Shift.", "create": "Vytvořit značku", "modify": "Upravit značky", + "rename": "Rename Tags", "delete": "Odstranit vybrané značky", "search": "Hledat značky...", "settings": "Pro přejití na stránku s nastavením značek, klikněte zde.", diff --git a/public/language/cs/admin/manage/users.json b/public/language/cs/admin/manage/users.json index c3d62a8f28..fe95fa070e 100644 --- a/public/language/cs/admin/manage/users.json +++ b/public/language/cs/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Zakázán", "pills.search": "Hledat uživatele", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "Dle jména uživatele", "search.username-placeholder": "Zadejte hledané uživatelské jméno", "search.email": "Podle e-mailu", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Uzamčení bylo obnoveno.", "alerts.flag-reset-success": "Označení bylo obnoveno.", "alerts.no-remove-yourself-admin": "Sebe jako správce nemůžete vyjmout.", - "alerts.make-admin-success": "Uživatel/é je/jsou nyní jako správce/i.", - "alerts.confirm-remove-admin": "Opravdu chcete vyjmout správce?", - "alerts.remove-admin-success": "Uživatel není nadále správcem.", + "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": "Chcete schválit e-mailové adresy těchto uživatelů?", "alerts.validate-email-success": "E-maily byly ověřeny", "alerts.password-reset-confirm": "Chcete poslat těmto uživatelům e-mail pro resetování hesla?", diff --git a/public/language/cs/admin/menu.json b/public/language/cs/admin/menu.json index 8b9812e514..739daa2b71 100644 --- a/public/language/cs/admin/menu.json +++ b/public/language/cs/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Spravovat", "manage/categories": "Kategorie", + "manage/privileges": "Privileges", "manage/tags": "Značky", "manage/users": "Uživatelé", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registrační fronta", "manage/post-queue": "Fronta příspěvků", "manage/groups": "Skupiny", @@ -39,7 +41,7 @@ "section-appearance": "Vzhled", "appearance/themes": "Motivy", "appearance/skins": "Vzhledy", - "appearance/customise": "Custom Content (HTML/JS/CSS)", + "appearance/customise": "Uživatelský obsah (HTML/JS/CSS)", "section-extend": "Rozšířit", "extend/plugins": "Rozšíření", @@ -65,7 +67,7 @@ "logout": "Odhlásit", "view-forum": "Zobrazit fórum", - "search.placeholder": "Search for settings", + "search.placeholder": "Hledat nastavení", "search.no-results": "Žádné výsledky…", "search.search-forum": "Prohledat fórum pro ", "search.keep-typing": "Pište dále pro zobrazení výsledků…", diff --git a/public/language/cs/admin/settings/chat.json b/public/language/cs/admin/settings/chat.json index 602f7fb71a..da584e2fe4 100644 --- a/public/language/cs/admin/settings/chat.json +++ b/public/language/cs/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Správci a globální moderátoři jsou vyjmuti z tohoto omezení", "max-length": "Maximální délka konverzační zprávy", "max-room-size": "Maximální počet uživatelů v konverzační místnosti", - "delay": "Čas mezi konverzačními zprávami v milisekundách" + "delay": "Čas mezi konverzačními zprávami v milisekundách", + "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)" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/notifications.json b/public/language/cs/admin/settings/notifications.json index fd95917606..39bc83bdcb 100644 --- a/public/language/cs/admin/settings/notifications.json +++ b/public/language/cs/admin/settings/notifications.json @@ -2,5 +2,5 @@ "notifications": "Oznámení", "welcome-notification": "Uvítání", "welcome-notification-link": "Odkaz na uvítání", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Uvítání uživatele (UID)" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/pagination.json b/public/language/cs/admin/settings/pagination.json index dc1faf68da..34052b2a9c 100644 --- a/public/language/cs/admin/settings/pagination.json +++ b/public/language/cs/admin/settings/pagination.json @@ -3,9 +3,9 @@ "enable": "Stránkovat témata a příspěvky namísto nekonečného posouvání", "topics": "Stránkování témat", "posts-per-page": "Příspěvků na stránku", - "max-posts-per-page": "Maximum posts per page", + "max-posts-per-page": "Maximální množství příspěvků na stránku", "categories": "Stránkování kategorii", "topics-per-page": "Témat na stránku", - "max-topics-per-page": "Maximum topics per page", + "max-topics-per-page": "Maximální množství témat na stránku", "initial-num-load": "Počáteční počet témat pro načtení u nepřečtených, posledních a polulárních" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/post.json b/public/language/cs/admin/settings/post.json index 67d297b33b..d55738c807 100644 --- a/public/language/cs/admin/settings/post.json +++ b/public/language/cs/admin/settings/post.json @@ -3,24 +3,28 @@ "sorting.post-default": "Výchozí třídění příspěvků", "sorting.oldest-to-newest": "Od nejstarších po nejnovější", "sorting.newest-to-oldest": "Od nejnovějších po nejstarší", - "sorting.most-votes": "Dle hlasování", - "sorting.most-posts": "Most Posts", + "sorting.most-votes": "Dle počtu hlasů", + "sorting.most-posts": "Dle počtu příspěvků", "sorting.topic-default": "Výchozí třídění tématu", + "length": "Post Length", "restrictions": "Omezení příspěvků", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Povolit frontu pro příspěvky", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Povolení fronty příspěvků bude přidávat příspěvky nových uživatelů do fronty na schválení.", - "restrictions.seconds-between": "Sekundy mezi příspěvky", - "restrictions.seconds-between-new": "Sekundy mezi příspěvky pro nové uživatele", - "restrictions.rep-threshold": "Hranice reputace před zavedením omezení", + "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": "Sekundy předtím, než uživatel může přidat příspěvek", - "restrictions.seconds-edit-after": "Počet sekund, kdy uživatelé mohou upravit příspěvky po jejich napsání. (0 zakázáno)", - "restrictions.seconds-delete-after": "Počet sekund, kdy uživatelé mohou odstranit příspěvky po jeho napsání. (0 zakázáno)", + "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": "Počet odpovědí, kdy je uživatelům zakázáno odstranit jejich vlastní příspěvek. (0 zakázáno)", "restrictions.min-title-length": "Minimální délka názvu", "restrictions.max-title-length": "Maximální délka názvu", "restrictions.min-post-length": "Minimální délka příspěvku", "restrictions.max-post-length": "Maximální délka příspěvku", - "restrictions.days-until-stale": "Počet dnů, kdy je téma považováno za staré", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "Je-li téma považováno za „staré”, uživateli se zobrazí oznámení při pokusu o přidání odpovědi.", "timestamp": "Časový otisk", "timestamp.cut-off": "Datum ukončení (ve dnech)", diff --git a/public/language/cs/admin/settings/reputation.json b/public/language/cs/admin/settings/reputation.json index db452a9345..7339496268 100644 --- a/public/language/cs/admin/settings/reputation.json +++ b/public/language/cs/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Všechna hlasování jsou veřejná", "thresholds": "Omezení aktivity", "min-rep-downvote": "Minimální reputace pro vyjádření nesouhlasu s příspěvkem", - "min-rep-flag": "Minimální reputace pro označení příspěvků" + "min-rep-flag": "Minimální reputace pro označení příspěvků", + "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" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/user.json b/public/language/cs/admin/settings/user.json index 2ad41f23cf..e683492860 100644 --- a/public/language/cs/admin/settings/user.json +++ b/public/language/cs/admin/settings/user.json @@ -19,8 +19,8 @@ "themes": "Motivy", "disable-user-skins": "Zabránit uživateli ve výběru vlastního vzhledu", "account-protection": "Ochrana účtu", - "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": "Doba pro opětovné přihlášení správce (minuty)", + "admin-relogin-duration-help": "Po nastavení počtu přístupu do správcovské části, bude vyžadováno opětovné přihlášení. Pro zakázání, nastavte na 0.", "login-attempts": "Počet pokusů o přihlášení za hodinu", "login-attempts-help": "Překročí-li pokusy o přihlášení uživatele/ů tuto hranici, účet bude uzamknut na určený čas", "lockout-duration": "Délka blokování účtu (v minutách)", diff --git a/public/language/cs/email.json b/public/language/cs/email.json index 1d1efa10e9..b330291160 100644 --- a/public/language/cs/email.json +++ b/public/language/cs/email.json @@ -30,7 +30,7 @@ "notif.chat.unsub.info": "Toto upozornění na chat vám bylo odesláno na základě vašeho nastavení odběru.", "notif.post.cta": "Klikněte zde pro přečtené celého tématu", "notif.post.unsub.info": "Toto upozornění na příspěvek vám bylo odesláno na základě vašeho nastavení odběru.", - "notif.cta": "Click here to go to forum", + "notif.cta": "Pro přejití na fórum, klikněte zde", "test.text1": "Tento testovací e-mail slouží k ověření, že je e-mailer správně nastaven pro práci s NodeBB.", "unsub.cta": "Chcete-li změnit tyto nastavení, klikněte zde.", "banned.subject": "Byl jste zablokován od %1", diff --git a/public/language/cs/error.json b/public/language/cs/error.json index 43ea641999..6ad76f1ca6 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -11,12 +11,13 @@ "invalid-uid": "Neplatné ID uživatele", "invalid-username": "Neplatné uživatelské jméno", "invalid-email": "Neplatný e-mail", - "invalid-title": "Invalid title", + "invalid-title": "Neplatný název", "invalid-user-data": "Neplatná uživatelská data", "invalid-password": "Neplatné heslo", "invalid-login-credentials": "Neplatné přihlašovací údaje", "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": "Invalid URL", "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", @@ -81,7 +82,7 @@ "cant-ban-other-admins": "Nemůžete zablokovat jiné správce.", "cant-remove-last-admin": "Jste jediným správcem. Před vlastním odebráním oprávnění správce nejdříve přidejte jiného uživatele jako správce", "cant-delete-admin": "Před odstraněním účtu mu nejprve odeberte oprávnění správce.", - "invalid-image": "Invalid image", + "invalid-image": "Neplatný obrázek", "invalid-image-type": "Neplatný typ obrázku. Povolené typy jsou: %1", "invalid-image-extension": "Neplatná přípona obrázku", "invalid-file-type": "Neplatný typ souboru. Povolené typy jsou: %1", @@ -113,19 +114,24 @@ "cant-edit-chat-message": "Tuto zprávu nemůžete upravit", "cant-remove-last-user": "Posledního uživatele nemůžete vyjmout", "cant-delete-chat-message": "Tuto zprávu nemůžete odstranit", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Již jste v tomto příspěvku hlasoval.", "reputation-system-disabled": "Systém reputací je zakázán.", "downvoting-disabled": "Systém nesouhlasu je zakázán", "not-enough-reputation-to-downvote": "Nemáte dostatečnou reputaci pro vyjádření nesouhlasu u tohoto příspěvku", "not-enough-reputation-to-flag": "Pro označení tohoto příspěvku nemáte dostatečnou reputaci", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Tento příspěvek jste již označil", - "self-vote": "You cannot vote on your own post", + "self-vote": "U svého vlastního příspěvku nemůžete hlasovat", "reload-failed": "Vyskytla se chyba v NodeBB při znovu načtení: \"%1\". NodeBB bude pokračovat v běhu na straně klienta, nicméně byste měl/a přenastavit zpět to, co jste udělal/a před opětovným načtením.", "registration-error": "Chyba při registraci", "parse-error": "Při analýze odpovědi serveru nastala chyba", "wrong-login-type-email": "Pro přihlášení použijte vaši e-mailovou adresu", "wrong-login-type-username": "Pro přihlášení použijte vaše uživatelské jméno", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", + "sso-registration-disabled": "Registrace byla zakázána pro účty - %1. Nejprve si zaregistrujte e-mailovou adresu", "invite-maximum-met": "Již jste pozval/a maximálně možný počet lidí (%1 z %2).", "no-session-found": "Nebyla nalezena relace s přihlášením.", "not-in-room": "Uživatel není přítomen v místnosti", @@ -135,5 +141,5 @@ "invalid-home-page-route": "Neplatná cesta k domovské stránkce", "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": "No topics selected!" + "no-topics-selected": "Žádná vybraná témata." } \ No newline at end of file diff --git a/public/language/cs/flags.json b/public/language/cs/flags.json index e221f6965b..eb37572f8a 100644 --- a/public/language/cs/flags.json +++ b/public/language/cs/flags.json @@ -54,11 +54,11 @@ "modal-body": "Zadejte váš důvod k označení %1 %2 pro kontrolu. Nebo použijte tlačítko je-li dostupné.", "modal-reason-spam": "Spam", "modal-reason-offensive": "Urážlivé", - "modal-reason-other": "Other (specify below)", + "modal-reason-other": "Jiné (popište níže)", "modal-reason-custom": "Důvod ohlášení tohoto obsahu…", "modal-submit": "Předat hlášení", "modal-submit-success": "Obsah byl označen pro moderaci.", - "modal-submit-confirm": "Confirm Submission", - "modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?", - "modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined." + "modal-submit-confirm": "Potvrdit hlášení", + "modal-submit-confirm-text": "Již jste zadal/a nějaký důvod. Jste si jist/a, že chcete nahlásit pomocí rychlé zprávy?", + "modal-submit-confirm-text-help": "Zaslání rychlé zprávy přepíše jiné zadané důvody." } \ No newline at end of file diff --git a/public/language/cs/global.json b/public/language/cs/global.json index e6cd65f627..90db3ca447 100644 --- a/public/language/cs/global.json +++ b/public/language/cs/global.json @@ -53,6 +53,7 @@ "topics": "Témata", "posts": "Příspěvky", "best": "Nejlepší", + "votes": "Votes", "upvoters": "Souhlasník", "upvoted": "Souhlasů", "downvoters": "Nesouhlasník", diff --git a/public/language/cs/notifications.json b/public/language/cs/notifications.json index 8182ae3f47..284b394c6f 100644 --- a/public/language/cs/notifications.json +++ b/public/language/cs/notifications.json @@ -8,8 +8,8 @@ "outgoing_link_message": "Opouštíte %1", "continue_to": "Pokračovat na %1", "return_to": "Vrátit se na %1", - "new_notification": "Nové upozornění", - "new_notification_from": "You have a new Notification from %1", + "new_notification": "Nové oznámení", + "new_notification_from": "Máte nové upozornění od %1", "you_have_unread_notifications": "Máte nepřečtená upozornění.", "all": "Vše", "topics": "Témata", @@ -47,18 +47,18 @@ "email-confirmed-message": "Děkujeme za ověření vaší e-mailové adresy. Váš účet je nyní aktivní.", "email-confirm-error-message": "Nastal problém s ověřením vaší e-mailové adresy. Kód je pravděpodobně neplatný nebo jeho platnost vypršela.", "email-confirm-sent": "Ověřovací e-mail odeslán.", - "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": "Nic", + "notification_only": "Jen oznámení", + "email_only": "Jen e-mail", + "notification_and_email": "Oznámení a e-mail", + "notificationType_upvote": "Vyjádří-li někdo souhlas s vaším příspěvkem", + "notificationType_new-topic": "Začne-li někdo sledovat příspěvky a téma", + "notificationType_new-reply": "Bude-li přidán nový příspěvek v tématu, které sledujete", + "notificationType_follow": "Začne-li vás někdo sledovat", + "notificationType_new-chat": "Obdržíte-li novou konverzační zprávu", + "notificationType_group-invite": "Obdržíte-li pozvání ke skupině", + "notificationType_new-register": "Bude-li někdo přidán do registrační fronty", + "notificationType_post-queue": "Bude-li přidán nový příspěvek do fronty", + "notificationType_new-post-flag": "Bude-li příspěvek označen", + "notificationType_new-user-flag": "Bude-li uživatel označen" } \ No newline at end of file diff --git a/public/language/cs/pages.json b/public/language/cs/pages.json index 8a0270a9db..151b0a0a4a 100644 --- a/public/language/cs/pages.json +++ b/public/language/cs/pages.json @@ -6,6 +6,7 @@ "popular-month": "Oblíbená témata pro tento měsíc", "popular-alltime": "Oblíbená témata za celou dobu", "recent": "Aktuální témata", + "top": "Top Voted Topics", "moderator-tools": "Nástroje moderátora", "flagged-content": "Nahlášený obsah", "ip-blacklist": "Černá listina IP adres", @@ -19,7 +20,7 @@ "users/search": "Hledat uživatele", "notifications": "Upozornění", "tags": "Značky", - "tag": "Téma označeno pod \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Zaregistrovat účet", "registration-complete": "Registrace dokončena", "login": "Přihlásit se ke svému účtu", @@ -44,7 +45,7 @@ "account/bookmarks": "%1's zazáložkované příspěvky", "account/settings": "Uživatelské nastavení", "account/watched": "Témata sledovaná uživatelem %1", - "account/ignored": "Topics ignored by %1", + "account/ignored": "Témata ignorovaná uživatelem %1", "account/upvoted": "Souhlasí s příspěvkem %1", "account/downvoted": "Nesouhlasí s příspěvkem %1", "account/best": "Nejlepší příspěvky od %1", diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json index 7cedca5e24..2b55844f41 100644 --- a/public/language/cs/topic.json +++ b/public/language/cs/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Neupozorňovat na nové odpovědi.
Zobrazit téma v nepřečtených, není-li tato kategorie ignorována", "ignoring.description": "Neupozorňovat na nové odpovědi.
Nezobrazovat téma v nepřečtených.", "thread_tools.title": "Nástroje tématu", - "thread_tools.markAsUnreadForAll": "Označit jako nepřečtené pro všechny", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Připnout téma", "thread_tools.unpin": "Odepnout téma", "thread_tools.lock": "Zamknout téma", @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Jste si jist/a, že chcete toto téma obnovit?", "thread_tools.purge": "Vyčistit téma", "thread_tools.purge_confirm": "Jste si jist/a, že chcete vyčistit toto téma?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Sloučit témata", + "thread_tools.merge": "Sloučit", "topic_move_success": "Toto téma bylo úspěšně přesunuto do %1", "post_delete_confirm": "Jste si jist/a, že chcete odstranit tento příspěvek?", "post_restore_confirm": "Jste si jist/a, že chcete obnovit tento příspěvek?", @@ -91,7 +91,7 @@ "fork_pid_count": "Vybráno %1 příspěvek/ů", "fork_success": "Téma úspěšně rozděleno. Pro přejití na rozdělené téma, zde klikněte.", "delete_posts_instruction": "Klikněte na příspěvek, který chcete odstranit/vyčistit", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Pro sloučení témat, klikněte na ně", "composer.title_placeholder": "Zadejte název tématu…", "composer.handle_placeholder": "Jméno", "composer.discard": "Zrušit", diff --git a/public/language/cs/unread.json b/public/language/cs/unread.json index 60381d5efd..35035c5cb0 100644 --- a/public/language/cs/unread.json +++ b/public/language/cs/unread.json @@ -10,6 +10,6 @@ "all-topics": "Všechna témata", "new-topics": "Nová témata", "watched-topics": "Sledovaná témata", - "unreplied-topics": "Unreplied Topics", - "multiple-categories-selected": "Multiple Selected" + "unreplied-topics": "Neodpovězené témata", + "multiple-categories-selected": "Vícenásobný výběr" } \ No newline at end of file diff --git a/public/language/cs/user.json b/public/language/cs/user.json index 0042eb8ec6..8fce80c61c 100644 --- a/public/language/cs/user.json +++ b/public/language/cs/user.json @@ -25,7 +25,7 @@ "reputation": "Reputace", "bookmarks": "Záložky", "watched": "Sledován", - "ignored": "Ignored", + "ignored": "Ignorován", "followers": "Sledují ho", "following": "Sleduje", "aboutme": "O mně", @@ -85,7 +85,7 @@ "has_no_posts": "Tento uživatel ještě nic nenapsal.", "has_no_topics": "Tento uživatel ještě nezaložil žádné téma.", "has_no_watched_topics": "Tento uživatel zatím nesleduje žádná témata.", - "has_no_ignored_topics": "This user hasn't ignored any topics yet.", + "has_no_ignored_topics": "Tento uživatel ještě neignoruje žádné témata.", "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", @@ -101,11 +101,11 @@ "outgoing-message-sound": "Zvuk odchozí zprávy", "notification-sound": "Zvuk oznámení", "no-sound": "Bez zvuku", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Frekvence upozornění na souhlasy", + "upvote-notif-freq.all": "Všechny souhlasy", + "upvote-notif-freq.everyTen": "Každý desátý souhlas", + "upvote-notif-freq.logarithmic": "Dle 10, 100, 1000...", + "upvote-notif-freq.disabled": "Zakázáno", "browsing": "Nastavení prohlížení", "open_links_in_new_tab": "Otevřít odchozí odkaz v nové záložce", "enable_topic_searching": "Povolit vyhledávání v tématu", @@ -126,9 +126,9 @@ "sso.title": "Služby jednotného přihlášení", "sso.associated": "Přiřazeno k", "sso.not-associated": "Zde klikněte pro přiřazení k", - "sso.dissociate": "Dissociate", - "sso.dissociate-confirm-title": "Confirm Dissociation", - "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", + "sso.dissociate": "Odloučit", + "sso.dissociate-confirm-title": "Potvrdit odloučení", + "sso.dissociate-confirm": "Jste si jist/a, že chcete odloučit váš účet z %1?", "info.latest-flags": "Poslední označené", "info.no-flags": "Nebyly nalezeny žádné označené příspěvky", "info.ban-history": "Poslední historie blokovaných", diff --git a/public/language/da/admin/appearance/customise.json b/public/language/da/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/da/admin/appearance/customise.json +++ b/public/language/da/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/da/admin/general/homepage.json b/public/language/da/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/da/admin/general/homepage.json +++ b/public/language/da/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/da/admin/manage/tags.json b/public/language/da/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/da/admin/manage/tags.json +++ b/public/language/da/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/da/admin/manage/users.json b/public/language/da/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/da/admin/manage/users.json +++ b/public/language/da/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/da/admin/menu.json b/public/language/da/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/da/admin/menu.json +++ b/public/language/da/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/da/admin/settings/chat.json b/public/language/da/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/da/admin/settings/chat.json +++ b/public/language/da/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/da/admin/settings/post.json b/public/language/da/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/da/admin/settings/post.json +++ b/public/language/da/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/da/admin/settings/reputation.json b/public/language/da/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/da/admin/settings/reputation.json +++ b/public/language/da/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/da/error.json b/public/language/da/error.json index 889c7fbd99..0e54298890 100644 --- a/public/language/da/error.json +++ b/public/language/da/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode", "invalid-search-term": "Ugyldig søgeterm", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Du har ikke tilladelse til at redigere denne besked", "cant-remove-last-user": "Du kan ikke fjerne den sidste bruger", "cant-delete-chat-message": "Du har ikke tilladelse til at slette denne besked", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Vurderingssystem er slået fra.", "downvoting-disabled": "Nedvurdering er slået fra", "not-enough-reputation-to-downvote": "Du har ikke nok omdømme til at nedstemme dette indlæg", "not-enough-reputation-to-flag": "Du har ikke nok omdømme til at vurdere dette indlæg", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Du har allerede vurderet dette indlæg", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB stødte på et problem under genindlæsningen : \"%1\". NodeBB vil fortsætte med en ældre version, og det er nok god ide at genoptage fra lige før du genindlæste siden.", diff --git a/public/language/da/global.json b/public/language/da/global.json index 311cbe9705..82856c7493 100644 --- a/public/language/da/global.json +++ b/public/language/da/global.json @@ -53,6 +53,7 @@ "topics": "Emner", "posts": "Indlæg", "best": "Bedste", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Syntes godt om", "downvoters": "Downvoters", diff --git a/public/language/da/pages.json b/public/language/da/pages.json index b09a0764bc..769ca2a363 100644 --- a/public/language/da/pages.json +++ b/public/language/da/pages.json @@ -6,6 +6,7 @@ "popular-month": "Populære tråde denne måned", "popular-alltime": "Top populære tråde", "recent": "Seneste tråde", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Bruger søgning", "notifications": "Notifikationer", "tags": "Tags", - "tag": "Tråde tagget under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registre en konto", "registration-complete": "Registration complete", "login": "Login til din konto", diff --git a/public/language/da/topic.json b/public/language/da/topic.json index e1c7cf0501..2421769556 100644 --- a/public/language/da/topic.json +++ b/public/language/da/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Emne værktøjer", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Fastgør tråd", "thread_tools.unpin": "Frigør tråd", "thread_tools.lock": "Lås tråd", diff --git a/public/language/de/admin/appearance/customise.json b/public/language/de/admin/appearance/customise.json index 342552e881..c7df96d996 100644 --- a/public/language/de/admin/appearance/customise.json +++ b/public/language/de/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Benutzerdefiniertes CSS", - "custom-css.description": "Füge hier deine eigenen CSS-Eigenschaften ein, sie werden als letztes angewendet.", - "custom-css.enable": "Benutzerdefiniertes CSS aktivieren", + "custom-css": "Benutzerdefiniertes CSS/LESS", + "custom-css.description": "Füge deine eigenen CSS/LESS deklarationen hier ein, die nach allen anderen Styles angewandt werden.", + "custom-css.enable": "Aktiviere benutzerdefiniertes CSS/LESS", "custom-js": "Benutzerdefiniertes Javascript", "custom-js.description": "Füge dein eigenes Javascipt hier ein.\nEs wird ausgeführt nachdem die Seite komplett geladen wurde.", diff --git a/public/language/de/admin/general/homepage.json b/public/language/de/admin/general/homepage.json index 3b8b02333e..186e89ae62 100644 --- a/public/language/de/admin/general/homepage.json +++ b/public/language/de/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Wähle aus, welche Seite angezeigt werden soll, wenn Nutzer zur Startseite des Forums navigieren.", "home-page-route": "Startseitenpfad", "custom-route": "Eigener Startseitenpfad", - "allow-user-home-pages": "Benutzern eigene Startseiten erlauben" + "allow-user-home-pages": "Benutzern eigene Startseiten erlauben", + "home-page-title": "Titel der Startseite (Standardmäßig \"Home\")" } \ No newline at end of file diff --git a/public/language/de/admin/manage/tags.json b/public/language/de/admin/manage/tags.json index be8bdd9650..490b424c40 100644 --- a/public/language/de/admin/manage/tags.json +++ b/public/language/de/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Tags auswählen indem Du klickst und/oder ziehst, drücke die SHIFT-Taste, um mehrere auszuwählen", "create": "Tag erstellen", "modify": "Tag bearbeiten", + "rename": "Tags umbenennen", "delete": "Ausgewählte Tags entfernen", "search": "Nach Tags suchen", "settings": "Klicke hier, um die Tag-Einstellungsseite zu öffnen.", diff --git a/public/language/de/admin/manage/users.json b/public/language/de/admin/manage/users.json index c1f24ae8fe..20a4d58a15 100644 --- a/public/language/de/admin/manage/users.json +++ b/public/language/de/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Gebannt", "pills.search": "Benutzer Suche", + "search.uid": "Nach Benutzer-ID", + "search.uid-placeholder": "Gib eine Benutzer-ID ein um danach zu suchen", "search.username": "Nach Nutzernamen", "search.username-placeholder": "Einen Nutzernamen eingeben, um danach zu suchen", "search.email": "Nach E-Mail", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Ausschlüsse zurückgesetzt", "alerts.flag-reset-success": "Meldung(en) zurückgesetzt!", "alerts.no-remove-yourself-admin": "Du kannst dich nicht selbst als Administrator degradieren!", - "alerts.make-admin-success": "Die Benutzer sind nun Administratoren.", - "alerts.confirm-remove-admin": "Möchtest du wirklich Admins entfernen?", - "alerts.remove-admin-success": "Diese(r) Nutzer sind/ist kein(e) Administrator(en) mehr ", + "alerts.make-admin-success": "Der Benutzer ist nun ein Administrator", + "alerts.confirm-remove-admin": "Willst du wirklich diesen Administrator entfernen?", + "alerts.remove-admin-success": "Der Benutzer ist kein Administrator mehr", + "alerts.make-global-mod-success": "Der Benutzer ist nun ein globaler Moderator", + "alerts.confirm-remove-global-mod": "Willst du wirklich diesen globalen Moderator entfernen?", + "alerts.remove-global-mod-success": "Der Benutzer ist kein globaler Moderator mehr.", + "alerts.make-moderator-success": "Der Benutzer ist nun ein Moderator", + "alerts.confirm-remove-moderator": "Willst du wirklich diesen Moderator entfernen?", + "alerts.remove-moderator-success": "Der Benutzer ist kein Moderator mehr", "alerts.confirm-validate-email": "Möchtest Du wirklich die E-Mails dieser Benutzer/dieses Benutzers bestätigen?", "alerts.validate-email-success": "E-Mails bestätigt", "alerts.password-reset-confirm": "Möchtest Du wirklich (eine) Passwort-Reset-Email(s) an diese(n) Benutzer schicken?", diff --git a/public/language/de/admin/menu.json b/public/language/de/admin/menu.json index 965724e772..748b72092a 100644 --- a/public/language/de/admin/menu.json +++ b/public/language/de/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Verwalten", "manage/categories": "Kategorien", + "manage/privileges": "Privilegien", "manage/tags": "Tags", "manage/users": "Benutzer", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Warteliste", "manage/post-queue": "Beitragswarteschlange", "manage/groups": "Gruppen", diff --git a/public/language/de/admin/settings/chat.json b/public/language/de/admin/settings/chat.json index b1e6539576..d80d8fb788 100644 --- a/public/language/de/admin/settings/chat.json +++ b/public/language/de/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administratoren und globale Moderatoren sind von dieser Einschränkung ausgenommen", "max-length": "Maximale Chatnachrichtenlänge", "max-room-size": "Maximale Anzahl an Nutzern pro Chat-Room", - "delay": "Zeit zwischen Chatnachrichten in Millisekunden" + "delay": "Zeit zwischen Chatnachrichten in Millisekunden", + "restrictions.seconds-edit-after": "Zeit in Sekunden bevor Benutzer Chat-Nachrichten editieren dürfen, nachdem sie erstellt wurden. (0 bedeutet deaktiviert)", + "restrictions.seconds-delete-after": "Zeit in Sekunden bevor Benutzer Chat-Nachrichten löschen dürfen, nachdem sie erstellt wurden. (0 bedeutet deaktiviert)" } \ 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 99c65998c4..d43fe27f77 100644 --- a/public/language/de/admin/settings/post.json +++ b/public/language/de/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Meiste Bewertungen", "sorting.most-posts": "Meiste Beiträge", "sorting.topic-default": "Standardmäßige Themensortierung", + "length": "Beitragslänge", "restrictions": "Posting beschränkungen", + "restrictions-new": "Beschränkungen für neue Benutzer", "restrictions.post-queue": "Beitragswarteschlange verwenden", + "restrictions-new.post-queue": "Aktiviere Beschränkungen für neue Benutzer", "restrictions.post-queue-help": "Das verwenden der Beitragswarteschlange wird Beiträge von neuen Benutzern in eine Warteschlange zur Genehmigung setzen.", - "restrictions.seconds-between": "Zeit zwischen der Erstellung von Beiträgen", - "restrictions.seconds-between-new": "Zeit zwischen der Erstellung von Beiträgen für neue Nutzer", - "restrictions.rep-threshold": "Vorrausgesetztes Ansehen um diese Beschränkung aufzuheben", + "restrictions-new.post-queue-help": "Das aktivieren von Beschränkungen für neue Benutzer wird von neuen Benutzern erstelltw Beiträge beschränken.", + "restrictions.seconds-between": "Sekunden zwischen Beiträgen", + "restrictions.seconds-between-new": "Sekunden zwischen Beiträgen für neue Benutzer", + "restrictions.rep-threshold": "Mindesreputation bevor die Beschränkungen aufgehoben werden", "restrictions.seconds-defore-new": "Sekunden befor ein neuer Nutzer einen Beitrag erstellen kann", - "restrictions.seconds-edit-after": "Zeit in Sekunden in der ein Nutzer nach erstellung eines Beitrags diesen bearbeiten kann. (0 = deaktiviert)", - "restrictions.seconds-delete-after": "Zeit in Sekunden in der ein Nutzer nach erstellung eines Beitrags diesen löschen kann. (0 = deaktiviert)", + "restrictions.seconds-edit-after": "Zeit in Sekunden bevor Benutzer ihre Beiträge editieren dürfen, nachdem sie erstellt wurden. (0 bedeutet deaktiviert)", + "restrictions.seconds-delete-after": "Zeit in Sekunden bevor Benutzer ihre Beiträge löschen dürfen, nachdem sie erstellt wurden. (0 bedeutet deaktiviert)", "restrictions.replies-no-delete": "Anzahl der Antworten auf einen Thema, die Benötigt werden um das löschen des Themas durch den Besitzer zu verhindern. (0 = deaktiviert)", "restrictions.min-title-length": "Minimale Titellänge", "restrictions.max-title-length": "Maximale Titellänge", "restrictions.min-post-length": "Minimale Beitragslänge", "restrictions.max-post-length": "Maximale Beitragslänge", - "restrictions.days-until-stale": "Anzahl der Tage nachdem ein Thema als veraltet angesehen wird", + "restrictions.days-until-stale": "Tage bis ein Thema als alt angesehen wird", "restrictions.stale-help": "Wenn ein Thema als \"veraltet\" angesehen wird, wird Nutzern die versuchen diesem Thema zu antworten eine Warnung gezeigt", "timestamp": "Zeitstempel", "timestamp.cut-off": "Tageslimit für Relative Zeitangaben (in Tagen)", diff --git a/public/language/de/admin/settings/reputation.json b/public/language/de/admin/settings/reputation.json index 373a3dadae..4f0a54cae6 100644 --- a/public/language/de/admin/settings/reputation.json +++ b/public/language/de/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Alle Bewertungen sind öffentlich", "thresholds": "Aktivitätsschwelle", "min-rep-downvote": "Minimales Ansehen um Beiträge negativ zu bewerten", - "min-rep-flag": "Minimales Ansehen und Beiträge zu melden" + "min-rep-flag": "Minimales Ansehen und Beiträge zu melden", + "min-rep-website": "Erforderliche Reputation um eine \"Website\" zum Benutzerprofil hinzuzufügen", + "min-rep-aboutme": "Erforderliche Reputation um eine \"Über mich\"-Sektion zum Benutzerprofil hinzuzufügen", + "min-rep-signature": "Erforderliche Reputation um eine \"Signatur\" zum Benutzerprofil hinzuzufügen" } \ No newline at end of file diff --git a/public/language/de/error.json b/public/language/de/error.json index 096dc01623..c2d8071ec5 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Ungültige Zugangsdaten", "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Du darfst diese Nachricht nicht ändern", "cant-remove-last-user": "Du kannst den letzten Benutzer nicht entfernen", "cant-delete-chat-message": "Du darfst diese Nachricht nicht löschen", + "chat-edit-duration-expired": "Du darfst Chat-Nachrichten nur bis zu %1 Sekunde(n) nach der erstellung verändern", + "chat-delete-duration-expired": "Du darfst Chat-Nachrichten nur bis zu %1 Sekunde(n) nach der erstellung löschen", "already-voting-for-this-post": "Du hast diesen Beitrag bereits bewertet.", "reputation-system-disabled": "Das Reputationssystem ist deaktiviert.", "downvoting-disabled": "Downvotes sind deaktiviert.", "not-enough-reputation-to-downvote": "Dein Ansehen ist zu niedrig, um diesen Beitrag negativ zu bewerten.", "not-enough-reputation-to-flag": "Dein Ansehen ist zu niedrig, um diesen Beitrag zu melden", + "not-enough-reputation-min-rep-website": "Deine Reputation um eine \"Website\" zum Benutzerprofil hinzuzufügen ist zu niedrig", + "not-enough-reputation-min-rep-aboutme": "Deine Reputation um eine \"Über mich\"-Sektion zum Benutzerprofil hinzuzufügen ist zu niedrig", + "not-enough-reputation-min-rep-signature": "Deine Reputation um eine \"Signatur\" zum Benutzerprofil hinzuzufügen ist zu niedrig", "already-flagged": "Du hast diesen Beitrag bereits gemeldet", "self-vote": "Du kannst deine eigenen Beiträge nicht bewerten", "reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen.", diff --git a/public/language/de/global.json b/public/language/de/global.json index d9d0a7eb3e..e2c9e36742 100644 --- a/public/language/de/global.json +++ b/public/language/de/global.json @@ -53,6 +53,7 @@ "topics": "Themen", "posts": "Beiträge", "best": "Bestbewertet", + "votes": "Stimmen", "upvoters": "Upvoter", "upvoted": "Positiv bewertet", "downvoters": "Downvoter", diff --git a/public/language/de/pages.json b/public/language/de/pages.json index 7c6d59d6e5..a24ada37f9 100644 --- a/public/language/de/pages.json +++ b/public/language/de/pages.json @@ -6,6 +6,7 @@ "popular-month": "Beliebte Themen dieses Monats", "popular-alltime": "Beliebteste Themen", "recent": "Neueste Themen", + "top": "Bestbewertetste Themen", "moderator-tools": "Moderator-Werkzeuge", "flagged-content": "Gemeldeter Inhalt", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Benutzer Suche", "notifications": "Benachrichtigungen", "tags": "Markierungen", - "tag": "Themen markiert unter \"%1\"", + "tag": "Unter \"%1\" getaggte Themen", "register": "Einen Benutzer erstellen", "registration-complete": "Registration abgeschlossen", "login": "Einloggen", diff --git a/public/language/de/topic.json b/public/language/de/topic.json index 4a01b115ac..7299da70c8 100644 --- a/public/language/de/topic.json +++ b/public/language/de/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Keine Benachrichtigung bei neuen Beiträgen.
Ungelesen Beiträge anzeigen wenn die Kategorie nicht ignoriert wird.", "ignoring.description": "Keine Benachrichtigung bei neuen Beiträgen.
Ungelesene Beiträge nicht anzeigen.", "thread_tools.title": "Themen-Werkzeuge", - "thread_tools.markAsUnreadForAll": "Für alle als ungelesen markiert.", + "thread_tools.markAsUnreadForAll": "Für alle als ungelesen markieren", "thread_tools.pin": "Thema anheften", "thread_tools.unpin": "Thema nicht mehr anheften", "thread_tools.lock": "Thema schließen", diff --git a/public/language/el/admin/appearance/customise.json b/public/language/el/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/el/admin/appearance/customise.json +++ b/public/language/el/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/el/admin/general/homepage.json b/public/language/el/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/el/admin/general/homepage.json +++ b/public/language/el/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/el/admin/manage/tags.json b/public/language/el/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/el/admin/manage/tags.json +++ b/public/language/el/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/el/admin/manage/users.json b/public/language/el/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/el/admin/manage/users.json +++ b/public/language/el/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/el/admin/menu.json b/public/language/el/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/el/admin/menu.json +++ b/public/language/el/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/el/admin/settings/chat.json b/public/language/el/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/el/admin/settings/chat.json +++ b/public/language/el/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/el/admin/settings/post.json b/public/language/el/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/el/admin/settings/post.json +++ b/public/language/el/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/el/admin/settings/reputation.json b/public/language/el/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/el/admin/settings/reputation.json +++ b/public/language/el/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/el/error.json b/public/language/el/error.json index f98812eeac..a8eba7a27d 100644 --- a/public/language/el/error.json +++ b/public/language/el/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Παρακαλώ γράψε το όνομα χρήστη και τον κωδικό", "invalid-search-term": "Άκυρος όρος αναζήτησης", + "invalid-url": "Invalid URL", "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": "Το όνομα χρήστη είναι πιασμένο", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Το σύστημα φήμης έχει απενεργοποιηθεί.", "downvoting-disabled": "Η καταψήφιση έχει απενεργοποιηθεί", "not-enough-reputation-to-downvote": "Δεν έχεις αρκετή φήμη για να καταψηφίσεις αυτή την δημοσίευση", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "Το NodeBB συνάντησε ένα πρόβλημα καθώς γινόταν η ανανέωση: \"%1\". Το NodeBB θα συνεχίσει να προσφέρει τα στοιχεία του χρήστη, αν και θα ήταν καλή ιδέα να επαναφέρεις ότι έκανες πριν την ανανέωση.", diff --git a/public/language/el/global.json b/public/language/el/global.json index 2a8d6f7ee3..94613030d8 100644 --- a/public/language/el/global.json +++ b/public/language/el/global.json @@ -53,6 +53,7 @@ "topics": "Θέματα", "posts": "Δημοσιεύσεις", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/el/pages.json b/public/language/el/pages.json index f61401c453..ba3375416d 100644 --- a/public/language/el/pages.json +++ b/public/language/el/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Πρόσφατα Θέματα", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Αναζήτηση Χρήστη", "notifications": "Ειδοποιήσεις", "tags": "Ετικέτες", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/el/topic.json b/public/language/el/topic.json index 61f1988f50..a6dc48be4c 100644 --- a/public/language/el/topic.json +++ b/public/language/el/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Εργαλεία Θέματος", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Καρφίτσωμα Θέματος", "thread_tools.unpin": "Ξεκαρφίτσωμα Θέματος", "thread_tools.lock": "Κλείδωμα Θέματος", diff --git a/public/language/en-GB/admin/appearance/customise.json b/public/language/en-GB/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/en-GB/admin/appearance/customise.json +++ b/public/language/en-GB/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/en-GB/admin/general/dashboard.json b/public/language/en-GB/admin/general/dashboard.json index 9f1c6d8a4e..3b4ed54444 100644 --- a/public/language/en-GB/admin/general/dashboard.json +++ b/public/language/en-GB/admin/general/dashboard.json @@ -36,9 +36,10 @@ "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", "control-panel": "System Control", - "reload": "Reload", - "restart": "Restart", - "restart-warning": "Reloading or Restarting your NodeBB will drop all existing connections for a few seconds.", + "reload": "Restart", + "restart": "Rebuild & Restart", + "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": "Maintenance Mode", "maintenance-mode-title": "Click here to set up maintenance mode for NodeBB", "realtime-chart-updates": "Realtime Chart Updates", diff --git a/public/language/en-GB/admin/manage/admins-mods.json b/public/language/en-GB/admin/manage/admins-mods.json new file mode 100644 index 0000000000..e0f39ed5d4 --- /dev/null +++ b/public/language/en-GB/admin/manage/admins-mods.json @@ -0,0 +1,10 @@ +{ + "administrators": "Administrators", + "global-moderators": "Global Moderators", + "no-global-moderators": "No Global Moderators", + "moderators-of-category": "%1 Moderators", + "no-moderators": "No Moderators", + "add-administrator": "Add Administrator", + "add-global-moderator": "Add Global Moderator", + "add-moderator": "Add Moderator" +} \ No newline at end of file diff --git a/public/language/en-GB/admin/manage/privileges.json b/public/language/en-GB/admin/manage/privileges.json new file mode 100644 index 0000000000..b5b4f35885 --- /dev/null +++ b/public/language/en-GB/admin/manage/privileges.json @@ -0,0 +1,4 @@ +{ + "global": "Global", + "global.no-users": "No user-specific global privileges." +} \ No newline at end of file diff --git a/public/language/en-GB/admin/manage/tags.json b/public/language/en-GB/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/en-GB/admin/manage/tags.json +++ b/public/language/en-GB/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/en-GB/admin/manage/users.json b/public/language/en-GB/admin/manage/users.json index 5b68fcdc91..2e4cfa2a5c 100644 --- a/public/language/en-GB/admin/manage/users.json +++ b/public/language/en-GB/admin/manage/users.json @@ -71,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/en-GB/admin/menu.json b/public/language/en-GB/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/en-GB/admin/menu.json +++ b/public/language/en-GB/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/en-GB/admin/settings/reputation.json b/public/language/en-GB/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/en-GB/admin/settings/reputation.json +++ b/public/language/en-GB/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/en-GB/error.json b/public/language/en-GB/error.json index 7700006520..df48972483 100644 --- a/public/language/en-GB/error.json +++ b/public/language/en-GB/error.json @@ -146,6 +146,9 @@ "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", diff --git a/public/language/en-GB/pages.json b/public/language/en-GB/pages.json index 201d10ef0a..70f6cc24a3 100644 --- a/public/language/en-GB/pages.json +++ b/public/language/en-GB/pages.json @@ -22,7 +22,7 @@ "notifications": "Notifications", "tags": "Tags", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/en-GB/topic.json b/public/language/en-GB/topic.json index 39d2811931..657880296c 100644 --- a/public/language/en-GB/topic.json +++ b/public/language/en-GB/topic.json @@ -63,7 +63,7 @@ "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Topic Tools", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pin Topic", "thread_tools.unpin": "Unpin Topic", "thread_tools.lock": "Lock Topic", diff --git a/public/language/en-US/admin/appearance/customise.json b/public/language/en-US/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/en-US/admin/appearance/customise.json +++ b/public/language/en-US/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/en-US/admin/general/homepage.json b/public/language/en-US/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/en-US/admin/general/homepage.json +++ b/public/language/en-US/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/en-US/admin/manage/tags.json b/public/language/en-US/admin/manage/tags.json index 9c4a0ca186..d265367756 100644 --- a/public/language/en-US/admin/manage/tags.json +++ b/public/language/en-US/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/en-US/admin/manage/users.json b/public/language/en-US/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/en-US/admin/manage/users.json +++ b/public/language/en-US/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/en-US/admin/menu.json b/public/language/en-US/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/en-US/admin/menu.json +++ b/public/language/en-US/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/en-US/admin/settings/chat.json b/public/language/en-US/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/en-US/admin/settings/chat.json +++ b/public/language/en-US/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/en-US/admin/settings/post.json b/public/language/en-US/admin/settings/post.json index 18283565b2..71587955de 100644 --- a/public/language/en-US/admin/settings/post.json +++ b/public/language/en-US/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/en-US/admin/settings/reputation.json b/public/language/en-US/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/en-US/admin/settings/reputation.json +++ b/public/language/en-US/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/en-US/error.json b/public/language/en-US/error.json index a986e97f0f..282b07f9e1 100644 --- a/public/language/en-US/error.json +++ b/public/language/en-US/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", diff --git a/public/language/en-US/global.json b/public/language/en-US/global.json index d9255ae0f5..291c57a52c 100644 --- a/public/language/en-US/global.json +++ b/public/language/en-US/global.json @@ -53,6 +53,7 @@ "topics": "Topics", "posts": "Posts", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/en-US/pages.json b/public/language/en-US/pages.json index 395c403cbb..c41cb6afbb 100644 --- a/public/language/en-US/pages.json +++ b/public/language/en-US/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Recent Topics", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Notifications", "tags": "Tags", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/en-US/topic.json b/public/language/en-US/topic.json index 2ba819ecdf..7b5ccbe8da 100644 --- a/public/language/en-US/topic.json +++ b/public/language/en-US/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Topic Tools", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pin Topic", "thread_tools.unpin": "Unpin Topic", "thread_tools.lock": "Lock Topic", diff --git a/public/language/en-x-pirate/admin/appearance/customise.json b/public/language/en-x-pirate/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/en-x-pirate/admin/appearance/customise.json +++ b/public/language/en-x-pirate/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/en-x-pirate/admin/general/homepage.json b/public/language/en-x-pirate/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/en-x-pirate/admin/general/homepage.json +++ b/public/language/en-x-pirate/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/manage/tags.json b/public/language/en-x-pirate/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/en-x-pirate/admin/manage/tags.json +++ b/public/language/en-x-pirate/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/en-x-pirate/admin/manage/users.json b/public/language/en-x-pirate/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/en-x-pirate/admin/manage/users.json +++ b/public/language/en-x-pirate/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/en-x-pirate/admin/menu.json b/public/language/en-x-pirate/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/en-x-pirate/admin/menu.json +++ b/public/language/en-x-pirate/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/en-x-pirate/admin/settings/chat.json b/public/language/en-x-pirate/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/en-x-pirate/admin/settings/chat.json +++ b/public/language/en-x-pirate/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/settings/post.json b/public/language/en-x-pirate/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/en-x-pirate/admin/settings/post.json +++ b/public/language/en-x-pirate/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/en-x-pirate/admin/settings/reputation.json b/public/language/en-x-pirate/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/en-x-pirate/admin/settings/reputation.json +++ b/public/language/en-x-pirate/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ 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 a986e97f0f..282b07f9e1 100644 --- a/public/language/en-x-pirate/error.json +++ b/public/language/en-x-pirate/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", diff --git a/public/language/en-x-pirate/global.json b/public/language/en-x-pirate/global.json index b3856a69b1..8ec35f370f 100644 --- a/public/language/en-x-pirate/global.json +++ b/public/language/en-x-pirate/global.json @@ -53,6 +53,7 @@ "topics": "Topics", "posts": "Messages", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/en-x-pirate/pages.json b/public/language/en-x-pirate/pages.json index 395c403cbb..c41cb6afbb 100644 --- a/public/language/en-x-pirate/pages.json +++ b/public/language/en-x-pirate/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Recent Topics", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Notifications", "tags": "Tags", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/en-x-pirate/topic.json b/public/language/en-x-pirate/topic.json index 2ba819ecdf..7b5ccbe8da 100644 --- a/public/language/en-x-pirate/topic.json +++ b/public/language/en-x-pirate/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Topic Tools", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pin Topic", "thread_tools.unpin": "Unpin Topic", "thread_tools.lock": "Lock Topic", diff --git a/public/language/es/admin/appearance/customise.json b/public/language/es/admin/appearance/customise.json index 0f707eb156..eaaad5cfb7 100644 --- a/public/language/es/admin/appearance/customise.json +++ b/public/language/es/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "CSS personalizado", - "custom-css.description": "Introduce tus propias declaraciones CSS aquí, las cuales serán aplicadas después de otros estilos.", - "custom-css.enable": "Activar CSS personalizado", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/es/admin/general/homepage.json b/public/language/es/admin/general/homepage.json index 4b9ecd81c8..1bc42744b0 100644 --- a/public/language/es/admin/general/homepage.json +++ b/public/language/es/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Escoge que pagina se muestra cuando los usuarios navegan en la raíz del foro.", "home-page-route": "Ruta de la Pagina Principal", "custom-route": "Custom Route", - "allow-user-home-pages": "Permitir Pagina de Perfil del Usuario" + "allow-user-home-pages": "Permitir Pagina de Perfil del Usuario", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/es/admin/manage/tags.json b/public/language/es/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/es/admin/manage/tags.json +++ b/public/language/es/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/es/admin/manage/users.json b/public/language/es/admin/manage/users.json index da98ea0b09..9b7784debc 100644 --- a/public/language/es/admin/manage/users.json +++ b/public/language/es/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/es/admin/menu.json b/public/language/es/admin/menu.json index 092ff469e7..eca88aed87 100644 --- a/public/language/es/admin/menu.json +++ b/public/language/es/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Administrar", "manage/categories": "Categorias", + "manage/privileges": "Privileges", "manage/tags": "Etiquetas", "manage/users": "Usuarios", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Cola de Registro", "manage/post-queue": "Post Queue", "manage/groups": "Grupos", diff --git a/public/language/es/admin/settings/chat.json b/public/language/es/admin/settings/chat.json index f1609d8ecc..10d7fb0d31 100644 --- a/public/language/es/admin/settings/chat.json +++ b/public/language/es/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Los administradores y los moderadores globales están exentos de esta restricción", "max-length": "Maxima longitud de mensajes de chat", "max-room-size": "Máximo numero de usuarios en las salas de chat", - "delay": "Tiempo entre envío de mensajes de chat en milisegundos" + "delay": "Tiempo entre envío de mensajes de chat en milisegundos", + "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)" } \ No newline at end of file diff --git a/public/language/es/admin/settings/post.json b/public/language/es/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/es/admin/settings/post.json +++ b/public/language/es/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/es/admin/settings/reputation.json b/public/language/es/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/es/admin/settings/reputation.json +++ b/public/language/es/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/es/error.json b/public/language/es/error.json index 2bb7f77001..112c6530da 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Datos de acceso no válidos", "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "No tienes permiso para editar este mensaje", "cant-remove-last-user": "No puedes eliminar el último usuario", "cant-delete-chat-message": "No tienes permiso para eliminar este mensaje", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Ya has votado a este mensaje.", "reputation-system-disabled": "El sistema de reputación está deshabilitado.", "downvoting-disabled": "La votación negativa está deshabilitada.", "not-enough-reputation-to-downvote": "No tienes suficiente reputación para votar negativo este post", "not-enough-reputation-to-flag": "No tiene suficiente reputación para poner reportar esta publicación", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Ya reportaste este mensaje anteriormente", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encontró un problema al refrescar: \"%1\". NodeBB intentará cargar el resto de contenido, aunque deberías deshacer lo que hiciste justo antes.", diff --git a/public/language/es/global.json b/public/language/es/global.json index 14a72a5039..b4fbe8df21 100644 --- a/public/language/es/global.json +++ b/public/language/es/global.json @@ -53,6 +53,7 @@ "topics": "Temas", "posts": "Mensajes", "best": "Mejor valorados", + "votes": "Votes", "upvoters": "Positivos", "upvoted": "Votado positivamente", "downvoters": "Negativos", diff --git a/public/language/es/pages.json b/public/language/es/pages.json index 4b9e71f258..05d414a6d7 100644 --- a/public/language/es/pages.json +++ b/public/language/es/pages.json @@ -6,6 +6,7 @@ "popular-month": "Temas populares del mes", "popular-alltime": "Temas populares de siempre", "recent": "Temas recientes", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Contenido reportado", "ip-blacklist": "Lista negra de IPS", @@ -19,7 +20,7 @@ "users/search": "Buscar", "notifications": "Notificaciones", "tags": "Etiquetas", - "tag": "Temas etiquetados en \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registrar una cuenta", "registration-complete": "Registro completado", "login": "Acceder a tu cuenta", diff --git a/public/language/es/topic.json b/public/language/es/topic.json index 7d3c75de23..0b9b511889 100644 --- a/public/language/es/topic.json +++ b/public/language/es/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "No notificarme de nuevas respuestas.
Mostrar tema en no leídos si sigo esa categoría. ", "ignoring.description": "No notificarme de nuevas respuestas.
No mostrar tema en no leídos. ", "thread_tools.title": "Herramientas", - "thread_tools.markAsUnreadForAll": "Marcar todo como no leído.", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Adherir tema", "thread_tools.unpin": "Despegar tema", "thread_tools.lock": "Cerrar tema", diff --git a/public/language/et/admin/appearance/customise.json b/public/language/et/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/et/admin/appearance/customise.json +++ b/public/language/et/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/et/admin/general/homepage.json b/public/language/et/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/et/admin/general/homepage.json +++ b/public/language/et/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/et/admin/manage/tags.json b/public/language/et/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/et/admin/manage/tags.json +++ b/public/language/et/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/et/admin/manage/users.json b/public/language/et/admin/manage/users.json index 3529716dc8..1ee2bdaf9e 100644 --- a/public/language/et/admin/manage/users.json +++ b/public/language/et/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Keelustatud", "pills.search": "Kasutajate otsing", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "Kasutajanime järgi", "search.username-placeholder": "Sisesta kasutajanimi, keda soovid otsida", "search.email": "Emaili kaudu", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Lockout(s) reset!", "alerts.flag-reset-success": "Märgistuse(te) taaslaadimine", "alerts.no-remove-yourself-admin": "Te ei saa ennast Administraatorina eemaldada", - "alerts.make-admin-success": "Kasutaja(d) on nüüd administraatorid.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "Kasutaja(d) ei ole enam administraatorid.", + "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": "Kas te tahate antud kasutaja(te) emaili(d) kinnitada?", "alerts.validate-email-success": "Emailid kinnitatud", "alerts.password-reset-confirm": "Kas te tahate saata parooli taastamise emaili(d) antud kasutaja(te)le?", diff --git a/public/language/et/admin/menu.json b/public/language/et/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/et/admin/menu.json +++ b/public/language/et/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/et/admin/settings/chat.json b/public/language/et/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/et/admin/settings/chat.json +++ b/public/language/et/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/et/admin/settings/post.json b/public/language/et/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/et/admin/settings/post.json +++ b/public/language/et/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/et/admin/settings/reputation.json b/public/language/et/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/et/admin/settings/reputation.json +++ b/public/language/et/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/et/error.json b/public/language/et/error.json index f3f6aee255..13f12ff67d 100644 --- a/public/language/et/error.json +++ b/public/language/et/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Palun täpsusta kasutajanime ja parooli", "invalid-search-term": "Vigane otsingusõna", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Sul ei ole lubatud antud sõnumit muuta", "cant-remove-last-user": "Sa ei saa viimast kasutajat eemaldada", "cant-delete-chat-message": "Sul ei ole lubatud antud sõnumit kustutada", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Sa oled juba hääletanud sellel postitusel.", "reputation-system-disabled": "Reputatsiooni süsteem ei ole aktiveeritud", "downvoting-disabled": "Negatiivsete häälte andmine ei ole võimaldatud", "not-enough-reputation-to-downvote": "Sul ei ole piisavalt reputatsiooni, et anda negatiivset hinnangut sellele postitusele.", "not-enough-reputation-to-flag": "Sul ei ole piisavalt reputatsiooni, et seda postitust raporteerida", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Te juba teatasite sellest postitusest.", "self-vote": "You cannot vote on your own post", "reload-failed": "\"%1\" värskendamisel tekkis süsteemne viga. Foorum ei lakka töötamast, kuid peaksid kindlasti eemaldama enne värskendamist tehtud muudatused.", diff --git a/public/language/et/global.json b/public/language/et/global.json index 553419cdee..69a3e202a3 100644 --- a/public/language/et/global.json +++ b/public/language/et/global.json @@ -53,6 +53,7 @@ "topics": "Teemat", "posts": "Postitust", "best": "Parim", + "votes": "Votes", "upvoters": "Poolt hääletajad", "upvoted": "Kiideti heaks", "downvoters": "Vastu hääletajad", diff --git a/public/language/et/pages.json b/public/language/et/pages.json index 41da13de94..4fa6596398 100644 --- a/public/language/et/pages.json +++ b/public/language/et/pages.json @@ -6,6 +6,7 @@ "popular-month": "Populaarsed teemad sel kuul", "popular-alltime": "Populaarseimad teemad üldse", "recent": "Hiljutised teemad", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Kasutajate otsing", "notifications": "Teated", "tags": "Märksõnad", - "tag": "Teemad märksõnadega \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registreeri kasutaja", "registration-complete": "Registration complete", "login": "Logi oma kasutajasse sisse", diff --git a/public/language/et/topic.json b/public/language/et/topic.json index 90f8a84493..676203f566 100644 --- a/public/language/et/topic.json +++ b/public/language/et/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Ära teavita mind uutest vastustest.
Näita teemat lugemata teemade hulgas, kui kategooria on ignoreeritud.", "ignoring.description": "Ära teavita mind uutest vastustest.
Ära näita teemat lugemata teemade hulgas.", "thread_tools.title": "Teema tööriistad", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Tõsta esile teema", "thread_tools.unpin": "Märgista teema", "thread_tools.lock": "Lukusta teema", diff --git a/public/language/fa-IR/admin/appearance/customise.json b/public/language/fa-IR/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/fa-IR/admin/appearance/customise.json +++ b/public/language/fa-IR/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/fa-IR/admin/general/homepage.json b/public/language/fa-IR/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/fa-IR/admin/general/homepage.json +++ b/public/language/fa-IR/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/fa-IR/admin/manage/tags.json b/public/language/fa-IR/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/fa-IR/admin/manage/tags.json +++ b/public/language/fa-IR/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/fa-IR/admin/manage/users.json b/public/language/fa-IR/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/fa-IR/admin/manage/users.json +++ b/public/language/fa-IR/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/fa-IR/admin/menu.json b/public/language/fa-IR/admin/menu.json index 4c61f97103..e40edd8692 100644 --- a/public/language/fa-IR/admin/menu.json +++ b/public/language/fa-IR/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/fa-IR/admin/settings/chat.json b/public/language/fa-IR/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/fa-IR/admin/settings/chat.json +++ b/public/language/fa-IR/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/fa-IR/admin/settings/post.json b/public/language/fa-IR/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/fa-IR/admin/settings/post.json +++ b/public/language/fa-IR/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/fa-IR/admin/settings/reputation.json b/public/language/fa-IR/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/fa-IR/admin/settings/reputation.json +++ b/public/language/fa-IR/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/fa-IR/error.json b/public/language/fa-IR/error.json index 27ca06d761..77f96f9920 100644 --- a/public/language/fa-IR/error.json +++ b/public/language/fa-IR/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "لطفا هم نام کاربری و هم کلمه عبور را مشخص کنید", "invalid-search-term": "کلمه جستجو نامعتبر است", + "invalid-url": "URL نامعتبر", "csrf-invalid": "اجازه ورود شما تمام شده است، لطفا دوباره وارد شوید.", "invalid-pagination-value": "ارزش گذاری صفحه نامعتبر است، کمترین مقدار %1 و بیشترین مقدار %2 باید باشد", "username-taken": "این نام کاربری گرفته شده است.", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "شما اجازه ی ویرایش این پیام را ندارید", "cant-remove-last-user": "شما نمی توانید آخرین کاربر را حذف کنید", "cant-delete-chat-message": "شما اجازه حذف این پیام را ندارید.", + "chat-edit-duration-expired": "شما قادر هستید پیام های چت را فقط بعد از %1 ثانیه ویرایش کنید", + "chat-delete-duration-expired": "شما قادر هستید پیام های چت را فقط بعد از %1 ثانیه پاک کنید", "already-voting-for-this-post": "شما قبلا به این پست رای داده اید.", "reputation-system-disabled": "سیستم اعتبار غیر فعال شده است", "downvoting-disabled": "رأی منفی غیر فعال شده است", "not-enough-reputation-to-downvote": "شما اعتبار کافی برای دادن رأی منفی به این پست را ندارید.", "not-enough-reputation-to-flag": "شما اعتبار کافی برای نشاندار کردن این پست ندارید", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "شما قبلا این پست را گزارش کرده اید", "self-vote": "شما نمی توانید به پست خود رای بدهید", "reload-failed": "NodeBB در هنگام بارگذاری مجدد با یک مشکل مواجه شده است: \"%1\". NodeBB سرویس رسانی به کلاینت های سرویس گیرنده را ادامه خواهد داد، اگرچه شما کاری را قبل از بارگیری مجدد انجام دادید بازگردانی کنید", diff --git a/public/language/fa-IR/global.json b/public/language/fa-IR/global.json index 37b89f3405..ee4cbb3cdc 100644 --- a/public/language/fa-IR/global.json +++ b/public/language/fa-IR/global.json @@ -53,6 +53,7 @@ "topics": "موضوع ها", "posts": "دیدگاه‌ها", "best": "بهترین", + "votes": "رای ها", "upvoters": "موافقین", "upvoted": "رای مثبت", "downvoters": "مخالفین", diff --git a/public/language/fa-IR/pages.json b/public/language/fa-IR/pages.json index 6abf1de1bc..d674e78a07 100644 --- a/public/language/fa-IR/pages.json +++ b/public/language/fa-IR/pages.json @@ -6,6 +6,7 @@ "popular-month": "موضوعات پربازدید این ماه", "popular-alltime": "پربازدیدترین موضوعات", "recent": "موضوع‌های تازه", + "top": "موضوعات دارای بیشترین رای", "moderator-tools": "ابزار مدیران", "flagged-content": "محتوای گزارش شده", "ip-blacklist": "لیست سیاه آی‌پی", @@ -19,7 +20,7 @@ "users/search": "جستجوی کاربر", "notifications": "آگاه‌سازی‌ها", "tags": "برچسب‌ها", - "tag": "موضوع های داری کلیدواژه \"%1\"", + "tag": "Topics tagged under "%1"", "register": "ثبت نام یک حساب", "registration-complete": "ثبت نام تکمیل شد", "login": "به حساب خوب وارد شوید", diff --git a/public/language/fa-IR/topic.json b/public/language/fa-IR/topic.json index 4c04d49e00..e74177d09b 100644 --- a/public/language/fa-IR/topic.json +++ b/public/language/fa-IR/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "به من پس از ارسال هر پاسخی جدیدی اطلاع نده.
تاپیک به صورت خوانده نشده قرار بگیرد ولی نادیده گرفته نشود.", "ignoring.description": "به من پس از ارسال هر پاسخی جدیدی اطلاع نده.
دیگر تاپیک را به صورت خوانده نشده نشان نده.", "thread_tools.title": "ابزارهای موضوع", - "thread_tools.markAsUnreadForAll": "علامت بزن به عنوان خوانده نشده برای همه", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "سنجاق زدن موضوع", "thread_tools.unpin": "برداشتن سنجاق موضوع", "thread_tools.lock": "قفل کردن موضوع", diff --git a/public/language/fi/admin/appearance/customise.json b/public/language/fi/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/fi/admin/appearance/customise.json +++ b/public/language/fi/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/fi/admin/general/homepage.json b/public/language/fi/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/fi/admin/general/homepage.json +++ b/public/language/fi/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/fi/admin/manage/tags.json b/public/language/fi/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/fi/admin/manage/tags.json +++ b/public/language/fi/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/fi/admin/manage/users.json b/public/language/fi/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/fi/admin/manage/users.json +++ b/public/language/fi/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/fi/admin/menu.json b/public/language/fi/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/fi/admin/menu.json +++ b/public/language/fi/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/fi/admin/settings/chat.json b/public/language/fi/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/fi/admin/settings/chat.json +++ b/public/language/fi/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/fi/admin/settings/post.json b/public/language/fi/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/fi/admin/settings/post.json +++ b/public/language/fi/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/fi/admin/settings/reputation.json b/public/language/fi/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/fi/admin/settings/reputation.json +++ b/public/language/fi/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/fi/error.json b/public/language/fi/error.json index d79da5b654..dced600b52 100644 --- a/public/language/fi/error.json +++ b/public/language/fi/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Ole hyvä ja anna sekä käyttäjänimi että salasana", "invalid-search-term": "Virheellinen hakutermi", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", diff --git a/public/language/fi/global.json b/public/language/fi/global.json index 721a489bfa..eb7a28e489 100644 --- a/public/language/fi/global.json +++ b/public/language/fi/global.json @@ -53,6 +53,7 @@ "topics": "Aiheet", "posts": "Viestit", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/fi/pages.json b/public/language/fi/pages.json index 7432d9ce17..5344d3cbab 100644 --- a/public/language/fi/pages.json +++ b/public/language/fi/pages.json @@ -6,6 +6,7 @@ "popular-month": "Suositut aiheet tässä kuussa", "popular-alltime": "Suositut aiheet koko ajalta", "recent": "Viimeisimmät aiheet", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Ilmoitukset", "tags": "Tunnisteet", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Luo käyttäjät", "registration-complete": "Registration complete", "login": "Kirjaudu käyttäjällesi", diff --git a/public/language/fi/topic.json b/public/language/fi/topic.json index 96c9c894f7..e1d5c523a3 100644 --- a/public/language/fi/topic.json +++ b/public/language/fi/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Aiheen työkalut", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Kiinnitä aihe", "thread_tools.unpin": "Poista aiheen kiinnitys", "thread_tools.lock": "Lukitse aihe", diff --git a/public/language/fr/admin/appearance/customise.json b/public/language/fr/admin/appearance/customise.json index ada04f6546..d218fdbf1d 100644 --- a/public/language/fr/admin/appearance/customise.json +++ b/public/language/fr/admin/appearance/customise.json @@ -1,14 +1,14 @@ { - "custom-css": "CSS personnalisé", - "custom-css.description": "Entrez vos propres déclarations de CSS ici, elles seront appliquées après tous les autres styles.", - "custom-css.enable": "Activer les CSS personnalisés", + "custom-css": "Custom 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-js": "Custom 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": "Javascript personnalisé", + "custom-js.description": "Entrez votre Javascript ici. Celui-ci sera exécute après le chargement complet de la page.", + "custom-js.enable": "Activer le Javascript personnalisé", "custom-header": "En-tête personnalisé", - "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": "Entrez un code html personnalisé ici ( par exemple : Méta-Tags,...), qui sera rajouté à la section <head> du balisage de votre forum. Les balises de textes sont autorisés, mais sont déconseillés, l'onglet Javascript personnalisé étant prévu à cet effet.", "custom-header.enable": "Activer les en-têtes personnalisés", "custom-css.livereload": "Activer le rechargement en direct", diff --git a/public/language/fr/admin/general/dashboard.json b/public/language/fr/admin/general/dashboard.json index fbc878c950..6bb5c222e3 100644 --- a/public/language/fr/admin/general/dashboard.json +++ b/public/language/fr/admin/general/dashboard.json @@ -31,8 +31,8 @@ "notices": "Informations", "restart-not-required": "Pas de redémarrage nécessaire", "restart-required": "Redémarrage requis", - "search-plugin-installed": "Recherche un plugin installé", - "search-plugin-not-installed": "Rechercher un plugin non installé", + "search-plugin-installed": "Le plugin de recherche est installé", + "search-plugin-not-installed": "Le plugin de recherche n'est pas installé", "search-plugin-tooltip": "Installer un plugin de recherche depuis la page des plugins pour activer la fonctionnalité de recherche", "control-panel": "Contrôle du système", diff --git a/public/language/fr/admin/general/homepage.json b/public/language/fr/admin/general/homepage.json index 1c27579655..3efe41fe65 100644 --- a/public/language/fr/admin/general/homepage.json +++ b/public/language/fr/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choisissez la page affichée lorsque les utilisateurs naviguent à la racine de votre forum.", "home-page-route": "Route de la page d'accueil", "custom-route": "Route personnalisée", - "allow-user-home-pages": "Permettre aux utilisateurs de choisir une page d'accueil personnalisée" + "allow-user-home-pages": "Permettre aux utilisateurs de choisir une page d'accueil personnalisée", + "home-page-title": "Titre de la page d'accueil (par défaut \"Accueil\")" } \ No newline at end of file diff --git a/public/language/fr/admin/manage/tags.json b/public/language/fr/admin/manage/tags.json index a057d63b05..1d644a4c7d 100644 --- a/public/language/fr/admin/manage/tags.json +++ b/public/language/fr/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Sélectionnez les mot-clés par clic ou glisser-déposer, maintenez shift pour en sélectionner plusieurs.", "create": "Créer le mot-clés", "modify": "Modifier le mot-clés", + "rename": "Rename Tags", "delete": "Supprimer les mots-clés sélectionnés", "search": "Chercher des mots-clés...", "settings": "Cliquez ici pour visiter la page de paramètres des mots clés.", diff --git a/public/language/fr/admin/manage/users.json b/public/language/fr/admin/manage/users.json index 93e2de0140..2e798d184d 100644 --- a/public/language/fr/admin/manage/users.json +++ b/public/language/fr/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Banni", "pills.search": "Recherche d'utilisateur", + "search.uid": "Par ID", + "search.uid-placeholder": "Rechercher avec l'ID", "search.username": "Par nom d'utilisateur", "search.username-placeholder": "Entrer un nom d'utilisateur à rechercher", "search.email": "Par adresse e-mail", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Blocage supprimé", "alerts.flag-reset-success": "Signalement(s) réinitialisé(s) !", "alerts.no-remove-yourself-admin": "Vous ne pouvez pas vous retirer vous-même des administrateurs !", - "alerts.make-admin-success": "Les utilisateurs sont désormais administrateurs.", - "alerts.confirm-remove-admin": "Voulez-vous réelement retirer ces admins ?", - "alerts.remove-admin-success": "Les utilisateurs ne sont plus administrateurs.", + "alerts.make-admin-success": "L'utilisateur est maintenant administrateur.", + "alerts.confirm-remove-admin": "Voulez-vous vraiment supprimer cet administrateur?", + "alerts.remove-admin-success": "L'utilisateur n'est plus administrateur", + "alerts.make-global-mod-success": "L'utilisateur est maintenant modérateur global", + "alerts.confirm-remove-global-mod": "Voulez-vous vraiment supprimer ce modérateur global?", + "alerts.remove-global-mod-success": "User is no longer global moderator.", + "alerts.make-moderator-success": "L'utilisateur est maintenant modérateur", + "alerts.confirm-remove-moderator": "Voulez-vous vraiment supprimer ce modérateur?", + "alerts.remove-moderator-success": "L'utilisateur n'est plus modérateur", "alerts.confirm-validate-email": "Voulez-vous réellement vérifier les adresses e-mail de ces utilisateurs ?", "alerts.validate-email-success": "Adresse e-mail vérifiée", "alerts.password-reset-confirm": "Voulez-vous réellement envoyer un e-mail de réinitialisation de mot de passe à ces utilisateurs ?", diff --git a/public/language/fr/admin/menu.json b/public/language/fr/admin/menu.json index 8ab65fd51d..7431d1ea06 100644 --- a/public/language/fr/admin/menu.json +++ b/public/language/fr/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Gestion", "manage/categories": "Catégories", + "manage/privileges": "Privilèges", "manage/tags": "Mots-clés", "manage/users": "Utilisateurs", + "manage/admins-mods": "Admins & Modos", "manage/registration": "File d'inscription", "manage/post-queue": "File d’attente des messages", "manage/groups": "Groupes", @@ -39,7 +41,7 @@ "section-appearance": "Apparence", "appearance/themes": "Thèmes", "appearance/skins": "Skins", - "appearance/customise": "Custom Content (HTML/JS/CSS)", + "appearance/customise": "Contenu personnalisé (HTML/JS/CSS)", "section-extend": "Extensions", "extend/plugins": "Plugins", diff --git a/public/language/fr/admin/settings/chat.json b/public/language/fr/admin/settings/chat.json index 9ef89fb3ba..1bed4bc943 100644 --- a/public/language/fr/admin/settings/chat.json +++ b/public/language/fr/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Les administrateurs et modérateurs globaux sont dispensés de cette restriction", "max-length": "Longueur maximales des messages de discussion", "max-room-size": "Nombre maximum d'utilisateurs dans une même discussion", - "delay": "Temps entre chaque message de discussion (en millisecondes)" + "delay": "Temps entre chaque message de discussion (en millisecondes)", + "restrictions.seconds-edit-after": "Nombre de secondes avant que les utilisateurs ne soient autorisés à modifier les messages après leur publication. (0 désactivé)", + "restrictions.seconds-delete-after": "Nombre de secondes avant que les utilisateurs ne soient autorisés à supprimer des messages après leur publication. (0 désactivé)" } \ No newline at end of file diff --git a/public/language/fr/admin/settings/notifications.json b/public/language/fr/admin/settings/notifications.json index b679458498..87ee6b31e0 100644 --- a/public/language/fr/admin/settings/notifications.json +++ b/public/language/fr/admin/settings/notifications.json @@ -2,5 +2,5 @@ "notifications": "Notifications", "welcome-notification": "Notification de bienvenue", "welcome-notification-link": "Lien de notification de bienvenue", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Notification de bienvenue de l'utilisateur (UID)" } \ No newline at end of file diff --git a/public/language/fr/admin/settings/post.json b/public/language/fr/admin/settings/post.json index 978f696168..33bf906260 100644 --- a/public/language/fr/admin/settings/post.json +++ b/public/language/fr/admin/settings/post.json @@ -4,23 +4,27 @@ "sorting.oldest-to-newest": "Du plus ancien au plus récent", "sorting.newest-to-oldest": "Du plus récent au plus ancien", "sorting.most-votes": "Avec le plus de votes", - "sorting.most-posts": "Most Posts", + "sorting.most-posts": "Avec le plus de messages", "sorting.topic-default": "Tri des sujets par défaut", + "length": "Longueur de message", "restrictions": "Restrictions d'envoi", + "restrictions-new": "Restrictions des nouveaux utilisateurs", "restrictions.post-queue": "Activer la file d'attente des messages", + "restrictions-new.post-queue": "Activer la restriction", "restrictions.post-queue-help": "Activer la file d'attente des messages mettra automatiquement les messages des nouveaux utilisateurs dans la liste pour approbation.", - "restrictions.seconds-between": "Nombre de secondes entre chaque message", - "restrictions.seconds-between-new": "Nombre de secondes entre chaque message pour les nouveaux utilisateurs", - "restrictions.rep-threshold": "Seuil de réputation avant que cette restriction soit levée", + "restrictions-new.post-queue-help": "Activer la restriction lorsque les utilisateurs créent de nouveaux sujets.", + "restrictions.seconds-between": "Secondes entre les messages", + "restrictions.seconds-between-new": "Secondes entre les messages pour les nouveaux utilisateurs", + "restrictions.rep-threshold": "Seuil de réputation avant que ces restrictions ne soient levées", "restrictions.seconds-defore-new": "Nombre de secondes avant qu'un nouvel utilisateur puisse poster", - "restrictions.seconds-edit-after": "Nombre de secondes pendant lesquelles les utilisateurs sont autorisés à modifier leurs messages après envoi (0 si infini)", - "restrictions.seconds-delete-after": "Nombre de secondes pendant lesquelles les utilisateurs sont autorisés à supprimer leurs messages après envoi (0 si infini)", + "restrictions.seconds-edit-after": "Nombre de secondes avant que les utilisateurs ne soient autorisés à modifier des publications après publication. (0 désactivé)", + "restrictions.seconds-delete-after": "Nombre de secondes avant que les utilisateurs ne soient autorisés à supprimer des posts après leur publication. (0 désactivé)", "restrictions.replies-no-delete": "Nombre de réponses après lesquelles les utilisateurs ne peuvent plus supprimer leurs sujets (0 si infini)", "restrictions.min-title-length": "Longueur minimum du titre", "restrictions.max-title-length": "Longueur maximum du titre", "restrictions.min-post-length": "Longueur minimum des messages", "restrictions.max-post-length": "Longueur maximum des messages", - "restrictions.days-until-stale": "Nombre de jours avant qu'un sujet soit considéré comme périmé", + "restrictions.days-until-stale": "Jours jusqu'à ce que le sujet soit considéré comme périmé", "restrictions.stale-help": "Si un sujet est considéré comme \"périmé\", un message sera affiché aux utilisateurs tentant de répondre au sujet", "timestamp": "Horodatage", "timestamp.cut-off": "Date de coupure (en jours)", diff --git a/public/language/fr/admin/settings/reputation.json b/public/language/fr/admin/settings/reputation.json index 21573e7f76..af1f293f50 100644 --- a/public/language/fr/admin/settings/reputation.json +++ b/public/language/fr/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Tous les votes sont publics", "thresholds": "Seuils d'activité", "min-rep-downvote": "Réputation minimum pour les votes négatifs", - "min-rep-flag": "Réputation minimum pour signaler un message" + "min-rep-flag": "Réputation minimum pour signaler un message", + "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" } \ No newline at end of file diff --git a/public/language/fr/admin/settings/user.json b/public/language/fr/admin/settings/user.json index 9f6c78ea9b..f85d264465 100644 --- a/public/language/fr/admin/settings/user.json +++ b/public/language/fr/admin/settings/user.json @@ -19,8 +19,8 @@ "themes": "Thèmes", "disable-user-skins": "Empêcher les utilisateurs de choisir un skin personnalisé", "account-protection": "Protection du compte", - "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": "Temps de reconnexion pour le compte administrateur (en minutes)", + "admin-relogin-duration-help": "Après un certain temps, l'accessibilité à la section d'administration nécessitera une reconnexion ; fixer le nombre à 0 pour désactiver cet effet.", "login-attempts": "Tentatives de connexions par heure", "login-attempts-help": "Si le nombre de tentatives de connexion à un compte dépasse ce seuil, le compte sera bloqué pour une durée pré-configurée", "lockout-duration": "Durée du blocage (minutes)", diff --git a/public/language/fr/email.json b/public/language/fr/email.json index 3e3c9c8976..b0c7167139 100644 --- a/public/language/fr/email.json +++ b/public/language/fr/email.json @@ -30,7 +30,7 @@ "notif.chat.unsub.info": "Cette notification de chat a été envoyé en raison de vos paramètres d'abonnement.", "notif.post.cta": "Cliquer ici pour lire le sujet complet", "notif.post.unsub.info": "La notification de ce message vous a été envoyé en raison de vos paramètres d'abonnement.", - "notif.cta": "Click here to go to forum", + "notif.cta": "Cliquez ici pour accéder au forum", "test.text1": "Ceci est un e-mail de test pour vérifier que l'e-mailer est correctement configuré pour NodeBB.", "unsub.cta": "Cliquez ici pour modifier ces paramètres", "banned.subject": "Vous avez été banni de %1", diff --git a/public/language/fr/error.json b/public/language/fr/error.json index ab5a0d0974..1141fc7a88 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Certificat d'identification invalide", "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", "csrf-invalid": "Nous ne pouvons pas vous connectez, possiblement 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é", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Vous n'avez pas l'autorisation de modifier ce message", "cant-remove-last-user": "Vous ne pouvez pas supprimer le dernier utilisateur", "cant-delete-chat-message": "Vous n'avez pas l'autorisation de supprimer ce message", + "chat-edit-duration-expired": "Vous n'êtes autorisé à modifier des messages qu'après %1 seconde(s) de les avoir postés", + "chat-delete-duration-expired": "Vous n'êtes autorisé à supprimer des messages qu'après %1 seconde(s) de les avoir postés", "already-voting-for-this-post": "Vous avez déjà voté pour ce message.", "reputation-system-disabled": "Le système de réputation est désactivé", "downvoting-disabled": "Les votes négatifs ne sont pas autorisés", "not-enough-reputation-to-downvote": "Vous n'avez pas une réputation assez élevée pour noter négativement ce message", "not-enough-reputation-to-flag": "Vous n'avez pas une réputation assez élevée pour signaler ce message", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Vous avez déjà signalé ce message", "self-vote": "Vous ne pouvez pas voter sur votre propre message", "reload-failed": "NodeBB a rencontré un problème lors du rechargement : \"% 1\" . NodeBB continuera de fonctionner côté client, même si vous devez annuler ce que vous avez fait juste avant de recharger .", @@ -125,7 +131,7 @@ "parse-error": "Une erreur est survenue en analysant la réponse du serveur", "wrong-login-type-email": "Veuillez utiliser votre adresse email pour vous connecter", "wrong-login-type-username": "Veuillez utiliser votre identifiant pour vous connecter", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", + "sso-registration-disabled": "L'enregistrement a été désactivé pour les comptes %1, s'il vous plaît, enregistrez vous avec un adresse mail en premier", "invite-maximum-met": "Vous avez invité la quantité maximale de personnes (%1 de %2).", "no-session-found": "Pas de session de connexion trouvé!", "not-in-room": "L'utilisateur n'est pas dans cette salle", @@ -135,5 +141,5 @@ "invalid-home-page-route": "Route de page d'accueil invalide", "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": "No topics selected!" + "no-topics-selected": "Aucun sujet sélectionné !" } \ No newline at end of file diff --git a/public/language/fr/global.json b/public/language/fr/global.json index 299221c150..1f2277f598 100644 --- a/public/language/fr/global.json +++ b/public/language/fr/global.json @@ -53,6 +53,7 @@ "topics": "Sujets", "posts": "Messages", "best": "Meilleurs", + "votes": "Votes", "upvoters": "Votes pour", "upvoted": "Votes pour", "downvoters": "Votes contre", diff --git a/public/language/fr/notifications.json b/public/language/fr/notifications.json index 79be0264ba..6b61063749 100644 --- a/public/language/fr/notifications.json +++ b/public/language/fr/notifications.json @@ -9,7 +9,7 @@ "continue_to": "Continuer vers %1", "return_to": "Revenir à %1", "new_notification": "Nouvelle notification", - "new_notification_from": "You have a new Notification from %1", + "new_notification_from": "Vous avez une nouvelle notification de %1", "you_have_unread_notifications": "Vous avez des notifications non-lues", "all": "Tout", "topics": "Sujets", @@ -47,18 +47,18 @@ "email-confirmed-message": "Merci pour la validation de votre adresse email. Votre compte est désormais activé.", "email-confirm-error-message": "Il y a un un problème dans la vérification de votre adresse email. Le code est peut être invalide ou a expiré.", "email-confirm-sent": "Email de vérification envoyé.", - "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": "aucun", + "notification_only": "Seulement une notification", + "email_only": "Seulement un email", + "notification_and_email": "Notification et email", + "notificationType_upvote": "Lorsque quelqu'un a voté pour un de vos messages", + "notificationType_new-topic": "Lorsque quelqu'un que vous suivez publie un sujet", + "notificationType_new-reply": "Lorsqu'une nouvelle réponse est ajoutée dans un sujet que vous suivez", + "notificationType_follow": "Lorsque quelqu'un commence à vous suivre", + "notificationType_new-chat": "Lorsque vous recevez un message du chat ", + "notificationType_group-invite": "Lorsque vous recevez une invitation d'un groupe", + "notificationType_new-register": "Lorsque quelqu'un est ajouté à la file d'attente d'inscription", + "notificationType_post-queue": "Lorsque un nouveau message est mis en file d'attente", + "notificationType_new-post-flag": "Lorsque un message est marqué", + "notificationType_new-user-flag": "Lorsque un utilisateur est marqué" } \ No newline at end of file diff --git a/public/language/fr/pages.json b/public/language/fr/pages.json index e3f20da517..98abe48bd2 100644 --- a/public/language/fr/pages.json +++ b/public/language/fr/pages.json @@ -6,6 +6,7 @@ "popular-month": "Sujets populaires ce mois-ci", "popular-alltime": "Sujets populaires depuis toujours", "recent": "Sujets récents", + "top": "Top des sujets votés", "moderator-tools": "Outils de modération", "flagged-content": "Contenu signalé", "ip-blacklist": "Liste noire d'adresses IP", @@ -19,7 +20,7 @@ "users/search": "Rechercher des utilisateurs", "notifications": "Notifications", "tags": "Mots-clés", - "tag": "Sujets ayant le mot-clé \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Créer un compte", "registration-complete": "Inscription terminée", "login": "Connectez-vous à votre compte", diff --git a/public/language/fr/topic.json b/public/language/fr/topic.json index 3cbcdfefe8..058744dcd0 100644 --- a/public/language/fr/topic.json +++ b/public/language/fr/topic.json @@ -16,7 +16,7 @@ "replies_to_this_post": "%1 réponses", "one_reply_to_this_post": "1 réponse", "last_reply_time": "Dernière réponse", - "reply-as-topic": "Répondre à l'aide d'un sujet", + "reply-as-topic": "Répondre à l'aide d'un nouveau sujet", "guest-login-reply": "Se connecter pour répondre", "edit": "Éditer", "delete": "Supprimer", @@ -52,7 +52,7 @@ "not-watching.description": "Ne pas me notifier les nouvelles réponses.
Afficher le sujet dans l'onglet \"Non lu\" si la catégorie n'est pas ignorée.", "ignoring.description": "Ne pas me notifier les nouvelle réponses.
Ne pas afficher ce sujet dans l'onglet \"Non lu\".", "thread_tools.title": "Outils pour sujets", - "thread_tools.markAsUnreadForAll": "Marquer tous comme non-lus", + "thread_tools.markAsUnreadForAll": "Marquer non lu pour tous", "thread_tools.pin": "Épingler le sujet", "thread_tools.unpin": "Désépingler le sujet", "thread_tools.lock": "Verrouiller le sujet", @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Êtes-vous sûr de bien vouloir restaurer ce sujet ?", "thread_tools.purge": "Supprimer définitivement le(s) sujet(s)", "thread_tools.purge_confirm": "Êtes-vous sûr de bien vouloir supprimer définitivement ce sujet ?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Fusionner les Sujets", + "thread_tools.merge": "Fusionner", "topic_move_success": "Ce sujet a bien été déplacé vers %1.", "post_delete_confirm": "Êtes-vous sûr de bien vouloir supprimer ce message ?", "post_restore_confirm": "Êtes-vous sûr de bien vouloir restaurer ce message ?", @@ -91,7 +91,7 @@ "fork_pid_count": "%1 message(s) sélectionné(s)", "fork_success": "Sujet copié avec succès ! Cliquez ici pour aller au sujet copié.", "delete_posts_instruction": "Sélectionnez les messages que vous souhaitez supprimer/vider", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Cliquez sur les sujets que vous voulez fusionner", "composer.title_placeholder": "Entrer le titre du sujet ici…", "composer.handle_placeholder": "Nom", "composer.discard": "Abandonner", diff --git a/public/language/fr/user.json b/public/language/fr/user.json index a5e84f9a27..9f1e086bb7 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -9,14 +9,14 @@ "account_info": "Informations du compte", "ban_account": "Bannir", "ban_account_confirm": "Êtes-vous sûr de bien vouloir bannir cet utilisateur ?", - "unban_account": "Restaurer le Compte", + "unban_account": "Restaurer le compte", "delete_account": "Supprimer le compte", "delete_account_confirm": "Êtes-vous sûr de vouloir supprimer votre compte?
Cette action est irréversible et vous ne serez pas en mesure de récupérer vos données

Entrez votre nom d'utilisateur pour confirmer que vous souhaitez détruire votre compte.", "delete_this_account_confirm": "Etes-vous sûr de vouloir supprimer ce compte?
Cette action est irréversible et vous ne pourrez récupérer aucune donnée.", "account-deleted": "Compte supprimé", "fullname": "Nom", "website": "Site web", - "location": "Emplacement", + "location": "Situation géographique", "age": "Âge", "joined": "Inscrit", "lastonline": "Dernière connexion", diff --git a/public/language/gl/admin/appearance/customise.json b/public/language/gl/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/gl/admin/appearance/customise.json +++ b/public/language/gl/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/gl/admin/general/homepage.json b/public/language/gl/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/gl/admin/general/homepage.json +++ b/public/language/gl/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/gl/admin/manage/tags.json b/public/language/gl/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/gl/admin/manage/tags.json +++ b/public/language/gl/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/gl/admin/manage/users.json b/public/language/gl/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/gl/admin/manage/users.json +++ b/public/language/gl/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/gl/admin/menu.json b/public/language/gl/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/gl/admin/menu.json +++ b/public/language/gl/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/gl/admin/settings/chat.json b/public/language/gl/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/gl/admin/settings/chat.json +++ b/public/language/gl/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/gl/admin/settings/post.json b/public/language/gl/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/gl/admin/settings/post.json +++ b/public/language/gl/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/gl/admin/settings/reputation.json b/public/language/gl/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/gl/admin/settings/reputation.json +++ b/public/language/gl/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/gl/error.json b/public/language/gl/error.json index dc2579c4f5..5e049957ba 100644 --- a/public/language/gl/error.json +++ b/public/language/gl/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Non tes permitido editar esta mensaxe.", "cant-remove-last-user": "Non podes quitar o último usuario", "cant-delete-chat-message": "Non tes permitido borrar esta mensaxe.", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Xa votache esta mensaxe.", "reputation-system-disabled": "O sistema de reputación está deshabilitado", "downvoting-disabled": "Os votos negativos están deshabilitados", "not-enough-reputation-to-downvote": "Non tes reputación dabonda para esta acción", "not-enough-reputation-to-flag": "Non tes reputación dabondo para reportar esta mensaxe.", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Xa reportache-la mensaxe.", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB atopou un erro mentras recargaba: \"%1\". NodeBB seguirá a servir os activos dos clientes aínda que se deberá desfacer o que se fixo antes da descarga.", diff --git a/public/language/gl/global.json b/public/language/gl/global.json index 50a2e6015d..58549281f6 100644 --- a/public/language/gl/global.json +++ b/public/language/gl/global.json @@ -53,6 +53,7 @@ "topics": "Temas", "posts": "Publicacións", "best": "Mellor", + "votes": "Votes", "upvoters": "Positivos", "upvoted": "Votado positivamente", "downvoters": "Negativos", diff --git a/public/language/gl/pages.json b/public/language/gl/pages.json index 4a98b6c2dc..492d5f9a68 100644 --- a/public/language/gl/pages.json +++ b/public/language/gl/pages.json @@ -6,6 +6,7 @@ "popular-month": "Temas populares do mes", "popular-alltime": "Temas populares de tódolos tempos", "recent": "Temas recentes", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "Lista negra de IPs", @@ -19,7 +20,7 @@ "users/search": "Búsqueda de usuarios", "notifications": "Notificacións", "tags": "Etiquetas", - "tag": "Temas etiquetados con \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Rexistrar conta", "registration-complete": "Rexistro completado", "login": "Ingresa coa túa conta", diff --git a/public/language/gl/topic.json b/public/language/gl/topic.json index 4752bf17ab..db4fea6201 100644 --- a/public/language/gl/topic.json +++ b/public/language/gl/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Non me notifiquedes as novas respostas.
Amosa-lo fío en non lidos se a categoría non está ignorada.", "ignoring.description": "Non me notifiquedes as novas respostas.
Non amosa-lo fío en non lidos.", "thread_tools.title": "Ferramentas do tema", - "thread_tools.markAsUnreadForAll": "Marcar todo como non lido", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Fixar Tema", "thread_tools.unpin": "Despegar Tema", "thread_tools.lock": "Pechar Tema", diff --git a/public/language/he/admin/appearance/customise.json b/public/language/he/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/he/admin/appearance/customise.json +++ b/public/language/he/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/he/admin/general/homepage.json b/public/language/he/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/he/admin/general/homepage.json +++ b/public/language/he/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/he/admin/manage/tags.json b/public/language/he/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/he/admin/manage/tags.json +++ b/public/language/he/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/he/admin/menu.json b/public/language/he/admin/menu.json index cde4e9a506..f2d823ecc9 100644 --- a/public/language/he/admin/menu.json +++ b/public/language/he/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "קטגוריות", + "manage/privileges": "Privileges", "manage/tags": "תגיות", "manage/users": "משתמשים", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/he/admin/settings/chat.json b/public/language/he/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/he/admin/settings/chat.json +++ b/public/language/he/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/he/admin/settings/post.json b/public/language/he/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/he/admin/settings/post.json +++ b/public/language/he/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/he/admin/settings/reputation.json b/public/language/he/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/he/admin/settings/reputation.json +++ b/public/language/he/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/he/error.json b/public/language/he/error.json index c2cac88605..b1968ec11b 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "פרטי ההתחברות שגויים", "invalid-username-or-password": "אנא הגדר שם משתמש וסיסמה", "invalid-search-term": "מילת חיפוש לא תקינה", + "invalid-url": "Invalid URL", "csrf-invalid": "אין באפשרותנו לחבר אותך למערכת, מכיוון שעבר זמן רב מידי. אנא נסה שנית.", "invalid-pagination-value": "ערך דף לא חוקי, חייב להיות לפחות %1 ולא מעל %2", "username-taken": "שם משתמש תפוס", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "אתה לא רשאי לערוך הודעה זו", "cant-remove-last-user": "אינך יכול למחוק את המשתמש האחרון", "cant-delete-chat-message": "אתה לא רשאי למחוק הודעה זו", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "הצבעת כבר בנושא זה", "reputation-system-disabled": "מערכת המוניטין לא פעילה.", "downvoting-disabled": "היכולת להצביע נגד לא פעילה", "not-enough-reputation-to-downvote": "אין לך מספיק מוניטין כדי להוריד את הדירוג של פוסט זה", "not-enough-reputation-to-flag": "אין לך מוניטין מספק על מנת לסמן את הפוסט הזה", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "כבר סימנת את הפוסט הזה", "self-vote": "You cannot vote on your own post", "reload-failed": "אירעה תקלה ב NodeBB בזמן הטעינה של: \"%1\". המערכת תמשיך להגיש דפים קיימים, אבל כדאי שתשחזר את הפעולות שלך מהפעם האחרונה שהמערכת עבדה כראוי.", diff --git a/public/language/he/global.json b/public/language/he/global.json index 7b98b840e7..7a044f4a19 100644 --- a/public/language/he/global.json +++ b/public/language/he/global.json @@ -53,6 +53,7 @@ "topics": "נושאים", "posts": "פוסטים", "best": "הגבוה ביותר", + "votes": "Votes", "upvoters": "מצביעי בעד", "upvoted": "הוצבע בעד", "downvoters": "מצביעי נגד", diff --git a/public/language/he/pages.json b/public/language/he/pages.json index 6af8df5219..46a6a2e446 100644 --- a/public/language/he/pages.json +++ b/public/language/he/pages.json @@ -6,6 +6,7 @@ "popular-month": "נושאים חמים החודש", "popular-alltime": "הנושאים החמים בכל הזמנים", "recent": "נושאים אחרונים", + "top": "Top Voted Topics", "moderator-tools": "כלי מודרטור", "flagged-content": "תוכן מדווח", "ip-blacklist": "רשימת IP שחורה", @@ -19,7 +20,7 @@ "users/search": "חיפוש משתמשים", "notifications": "התראות", "tags": "תגיות", - "tag": "נושאים שתוייגו תחת \"%1\"", + "tag": "Topics tagged under "%1"", "register": "יצירת חשבון", "registration-complete": "ההרשמה הושלמה", "login": "התחבר לחשבונך", diff --git a/public/language/he/topic.json b/public/language/he/topic.json index e8d77f491c..944883f525 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "כלי נושא", - "thread_tools.markAsUnreadForAll": "סמן הכל כלא נקרא", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "נעץ נושא", "thread_tools.unpin": "הסר נעץ", "thread_tools.lock": "נעל נושא", diff --git a/public/language/hr/admin/appearance/customise.json b/public/language/hr/admin/appearance/customise.json index ea5d0d5cc2..edd491a29b 100644 --- a/public/language/hr/admin/appearance/customise.json +++ b/public/language/hr/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "CSS po narudžbi", - "custom-css.description": "Unesi CSS deklaracije koje će biti upisane poslije svih stilova.", - "custom-css.enable": "Omogući dodatni CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/hr/admin/general/homepage.json b/public/language/hr/admin/general/homepage.json index a42652183e..4c4d323a2f 100644 --- a/public/language/hr/admin/general/homepage.json +++ b/public/language/hr/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Izaberi koja stranica će se prikazivati kada korisnici navigiraju u root URL Vašeg foruma", "home-page-route": "Putanja naslovnice", "custom-route": "Uobičajna putanja", - "allow-user-home-pages": "Dozvoli korisničke naslovnice" + "allow-user-home-pages": "Dozvoli korisničke naslovnice", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/hr/admin/manage/tags.json b/public/language/hr/admin/manage/tags.json index 9976f4d310..ade0f1ac05 100644 --- a/public/language/hr/admin/manage/tags.json +++ b/public/language/hr/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Odaberite oznake klikom ili povlačenjem, koristite SHIFT za višestruki odabir.", "create": "Napravi oznaku", "modify": "Uredi oznake", + "rename": "Rename Tags", "delete": "Obriši odabrane oznake", "search": "Pretraži za oznake ...", "settings": "Kliknite ovdje za posjetu postavki oznaka", diff --git a/public/language/hr/admin/manage/users.json b/public/language/hr/admin/manage/users.json index 67d5981583..3d5a11b6d9 100644 --- a/public/language/hr/admin/manage/users.json +++ b/public/language/hr/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Blokirani", "pills.search": "Pretraga korisnika", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "Po korisničkom imenu", "search.username-placeholder": "Unesite korisničko ime za pretragu", "search.email": "Sa email-om", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Zaključavanje resetirano!", "alerts.flag-reset-success": "Flags(s) reset!", "alerts.no-remove-yourself-admin": "Nemoguće je maknuti samog sebe iz administracije!", - "alerts.make-admin-success": "Korisnik je sada administrator.", - "alerts.confirm-remove-admin": "Sigurni ste da želite ukloniti administratora?", - "alerts.remove-admin-success": "Korisnik više nije 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": "Želite li potvrditi email ovih korisnika?", "alerts.validate-email-success": "Email potvrđen", "alerts.password-reset-confirm": "Želite li poslati email za reset lozinke korisniku ?", diff --git a/public/language/hr/admin/menu.json b/public/language/hr/admin/menu.json index 2facf3eb41..59e0a5edf2 100644 --- a/public/language/hr/admin/menu.json +++ b/public/language/hr/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Upravljanje", "manage/categories": "Kategorije", + "manage/privileges": "Privileges", "manage/tags": "Oznake", "manage/users": "Korisnici", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Lista zahtjeva za registraciju", "manage/post-queue": "Post Queue", "manage/groups": "Grupe", diff --git a/public/language/hr/admin/settings/chat.json b/public/language/hr/admin/settings/chat.json index 2ec0c9147e..7837f66857 100644 --- a/public/language/hr/admin/settings/chat.json +++ b/public/language/hr/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administratori i moderatori su izuzeti od ovih restrikcija", "max-length": "Maksimalna dužina poruka u razgovoru", "max-room-size": "Maksimalan broj korisnika u sobama za razgovor", - "delay": "Vrijeme između poruka razgovora u milisekundama" + "delay": "Vrijeme između poruka razgovora u milisekundama", + "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)" } \ No newline at end of file diff --git a/public/language/hr/admin/settings/post.json b/public/language/hr/admin/settings/post.json index 340e076981..0fdff61367 100644 --- a/public/language/hr/admin/settings/post.json +++ b/public/language/hr/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Najviše glasova", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Uobičajeno sortiranje tema", + "length": "Post Length", "restrictions": "Restrikcije objave", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Sekunde između objava", - "restrictions.seconds-between-new": "Sekunde prije objave za nove korisnike", - "restrictions.rep-threshold": "Prag reputacije prije nego je ova restrikcija maknuta.", + "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": "Sekunde prije novi korisnik može objavljivati", - "restrictions.seconds-edit-after": "Broj sekundi koje su korisnicima dozvoljene za mijenjanje objava nakon objavljivanja(u slučaju 0 ova postavka je ugašena).", - "restrictions.seconds-delete-after": "Broj sekundi koji korisnik ima za obrisati objavu nakon objavljivanja(u slučaju 0 ova postavka je ugašena).", + "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": "Broj odgovora nakon što je korisniku zabranjeno brisati njegovu temu(u slučaju 0 ova postavka je ugašena).", "restrictions.min-title-length": "Minimalna dužina naslova", "restrictions.max-title-length": "Maksimalna dužina naslova", "restrictions.min-post-length": "Minimalna dužina objave", "restrictions.max-post-length": "Maksimalna dužina objave", - "restrictions.days-until-stale": "Dani do kad se tema smatra neaktivnom", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "Ako je tema smatran neaktivnim,upozorenje će biti prikazano svim korisnicima koji pokušaju odgovoriti na temu", "timestamp": "Vremenska oznaka", "timestamp.cut-off": "Datum prekida (u danima)", diff --git a/public/language/hr/admin/settings/reputation.json b/public/language/hr/admin/settings/reputation.json index 71e4fab8b6..4aa5d92059 100644 --- a/public/language/hr/admin/settings/reputation.json +++ b/public/language/hr/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Svi glasovi su javni", "thresholds": "Prag aktivnosti", "min-rep-downvote": "Minimalna reputacija za glasanje protiv", - "min-rep-flag": "Minimalna reputacija za označavanje objava" + "min-rep-flag": "Minimalna reputacija za označavanje objava", + "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" } \ No newline at end of file diff --git a/public/language/hr/error.json b/public/language/hr/error.json index 492f3afa18..1943cb89c6 100644 --- a/public/language/hr/error.json +++ b/public/language/hr/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Upišite oboje, korisničko ime i lozinku", "invalid-search-term": "Netočan upit pretraživanja", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Nemate dopuštenje uređivati ovu poruku", "cant-remove-last-user": "Ne možete obrisati zadnjeg korisnika", "cant-delete-chat-message": "Nije dozvoljeno brisanje ove poruke", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Već ste glasali za ovu objavu", "reputation-system-disabled": "Sistem reputacije onemogućen.", "downvoting-disabled": "Oduzimanje glasova je onemogućeno", "not-enough-reputation-to-downvote": "Nemate dovoljno reputacije da bi ste glasali", "not-enough-reputation-to-flag": "Nemate dovoljno reputacije da bi stavili zastavicu na ovu objavu", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Već ste označili zastavicom ovu objavu", "self-vote": "You cannot vote on your own post", "reload-failed": "Problem kod ponovnog podizanja: \"%1\" will continue to serve the existing client-side assets.", diff --git a/public/language/hr/global.json b/public/language/hr/global.json index 7a79b3deb3..8b0af297a4 100644 --- a/public/language/hr/global.json +++ b/public/language/hr/global.json @@ -53,6 +53,7 @@ "topics": "Teme", "posts": "Objave", "best": "Najbolje", + "votes": "Votes", "upvoters": "Pozitivni glasači", "upvoted": "Glasova za", "downvoters": "Glasači protiv", diff --git a/public/language/hr/pages.json b/public/language/hr/pages.json index 13cecdd415..240df3bf74 100644 --- a/public/language/hr/pages.json +++ b/public/language/hr/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popularne teme ovaj mjesec", "popular-alltime": "Najpopularnije teme ", "recent": "Nedavne teme", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Označene objave", "ip-blacklist": "IP crna lista", @@ -19,7 +20,7 @@ "users/search": "Pretraga korisnika", "notifications": "Obavijesti", "tags": "Oznake", - "tag": "Teme označene pod \\\"%1\\\"", + "tag": "Topics tagged under "%1"", "register": "Registrirajte se", "registration-complete": "Registracija uspješna", "login": "Prijavite se na Vaš račun", diff --git a/public/language/hr/topic.json b/public/language/hr/topic.json index 00ad1d8de7..8a48decc6c 100644 --- a/public/language/hr/topic.json +++ b/public/language/hr/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Ne obaviještavaj me o novim odgovorima.
Prikaži temu u nepročitanim ako kategorija nije ignorirana.", "ignoring.description": "Nemoj slati obavijesti o novim odgovorima.
Ne prikazuj temu u nepročitanom.", "thread_tools.title": "Alati teme", - "thread_tools.markAsUnreadForAll": "Označi kao nepročitano za sve", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Zakači temu", "thread_tools.unpin": "Otkači temu", "thread_tools.lock": "Zaključaj temu", diff --git a/public/language/hu/admin/appearance/customise.json b/public/language/hu/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/hu/admin/appearance/customise.json +++ b/public/language/hu/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/hu/admin/general/homepage.json b/public/language/hu/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/hu/admin/general/homepage.json +++ b/public/language/hu/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/hu/admin/manage/tags.json b/public/language/hu/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/hu/admin/manage/tags.json +++ b/public/language/hu/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/hu/admin/manage/users.json b/public/language/hu/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/hu/admin/manage/users.json +++ b/public/language/hu/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/hu/admin/menu.json b/public/language/hu/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/hu/admin/menu.json +++ b/public/language/hu/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/hu/admin/settings/chat.json b/public/language/hu/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/hu/admin/settings/chat.json +++ b/public/language/hu/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/hu/admin/settings/post.json b/public/language/hu/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/hu/admin/settings/post.json +++ b/public/language/hu/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/hu/admin/settings/reputation.json b/public/language/hu/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/hu/admin/settings/reputation.json +++ b/public/language/hu/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/hu/error.json b/public/language/hu/error.json index d6836b3bb7..ccfb9d1c6d 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "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": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Hírnév funkció kikapcsolva.", "downvoting-disabled": "Leszavazás funkció kikapcsolva", "not-enough-reputation-to-downvote": "Nem rendelkezel elég Hírnév ponttal, hogy leszavazhasd ezt a hozzászólást", "not-enough-reputation-to-flag": "Nem rendelkezel elég Hírnév ponttal, hogy jelentsd ezt a hozzászólást", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB egy hibát észlelt újratöltés közben: \"% 1\". A fórum továbbra is kiszolgálja a kliens-oldali eszközöket, bár vissza kellene csinálnod amit az újratöltés előtt elállítottál.", diff --git a/public/language/hu/global.json b/public/language/hu/global.json index 8ccd973fbe..c7f38465c3 100644 --- a/public/language/hu/global.json +++ b/public/language/hu/global.json @@ -53,6 +53,7 @@ "topics": "Témák", "posts": "Hozzászólások", "best": "Legjobb", + "votes": "Votes", "upvoters": "Kedvelők", "upvoted": "Kedvel", "downvoters": "Nem kedvelők", diff --git a/public/language/hu/pages.json b/public/language/hu/pages.json index 309503b036..277526db0a 100644 --- a/public/language/hu/pages.json +++ b/public/language/hu/pages.json @@ -6,6 +6,7 @@ "popular-month": "Havi népszerű témakörök", "popular-alltime": "Mindenkori legnépszerűbb témakörök", "recent": "Legfrissebb témakörök", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Értesítések", "tags": "Tags", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json index 11eeb4eb0f..939f51ac5d 100644 --- a/public/language/hu/topic.json +++ b/public/language/hu/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Topic Tools", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Kiemel", "thread_tools.unpin": "Kiemelés megszűntetése", "thread_tools.lock": "Topik lezárása", diff --git a/public/language/id/admin/appearance/customise.json b/public/language/id/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/id/admin/appearance/customise.json +++ b/public/language/id/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/id/admin/general/homepage.json b/public/language/id/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/id/admin/general/homepage.json +++ b/public/language/id/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/id/admin/manage/tags.json b/public/language/id/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/id/admin/manage/tags.json +++ b/public/language/id/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/id/admin/manage/users.json b/public/language/id/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/id/admin/manage/users.json +++ b/public/language/id/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/id/admin/menu.json b/public/language/id/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/id/admin/menu.json +++ b/public/language/id/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/id/admin/settings/chat.json b/public/language/id/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/id/admin/settings/chat.json +++ b/public/language/id/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/id/admin/settings/post.json b/public/language/id/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/id/admin/settings/post.json +++ b/public/language/id/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/id/admin/settings/reputation.json b/public/language/id/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/id/admin/settings/reputation.json +++ b/public/language/id/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/id/error.json b/public/language/id/error.json index 1076e7fc8f..2fef7a6be6 100644 --- a/public/language/id/error.json +++ b/public/language/id/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Mohon spesifikasikan username dan password", "invalid-search-term": "Kata pencarian salah", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Sistem reputasi ditiadakan.", "downvoting-disabled": "Downvoting ditiadakan", "not-enough-reputation-to-downvote": "Tidak cukup reputation untuk downvote post ini", "not-enough-reputation-to-flag": "Tidak cukup reputation untuk flag post ini", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB mengalami masalah saat memuat \"%1\". NodeBB akan melanjutkan pemuatan, kamu harus membatalkan tindakanmu sebelum pemuatan kembali dilakukan.", diff --git a/public/language/id/global.json b/public/language/id/global.json index 6301423f5f..f89852cbe5 100644 --- a/public/language/id/global.json +++ b/public/language/id/global.json @@ -53,6 +53,7 @@ "topics": "Topik", "posts": "Post", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/id/pages.json b/public/language/id/pages.json index de62235dfa..abcc622749 100644 --- a/public/language/id/pages.json +++ b/public/language/id/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Topik Terkini", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Pemberitahuan", "tags": "Tags", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/id/topic.json b/public/language/id/topic.json index 700acd9b84..27fff558f2 100644 --- a/public/language/id/topic.json +++ b/public/language/id/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Perangkat Topik", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Tempel Topik", "thread_tools.unpin": "Copot Topik", "thread_tools.lock": "Kunci Topik", diff --git a/public/language/it/admin/appearance/customise.json b/public/language/it/admin/appearance/customise.json index b07dc4bf4f..4577354b4b 100644 --- a/public/language/it/admin/appearance/customise.json +++ b/public/language/it/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "CSS Personalizzato", - "custom-css.description": "Inserisci le tue dichiarazioni CSS qui, verranno applicate dopo tutti gli altri stili.", - "custom-css.enable": "Abilita CSS Personalizzato", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/it/admin/general/homepage.json b/public/language/it/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/it/admin/general/homepage.json +++ b/public/language/it/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/it/admin/manage/tags.json b/public/language/it/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/it/admin/manage/tags.json +++ b/public/language/it/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/it/admin/manage/users.json b/public/language/it/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/it/admin/manage/users.json +++ b/public/language/it/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/it/admin/menu.json b/public/language/it/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/it/admin/menu.json +++ b/public/language/it/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/it/admin/settings/chat.json b/public/language/it/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/it/admin/settings/chat.json +++ b/public/language/it/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/it/admin/settings/post.json b/public/language/it/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/it/admin/settings/post.json +++ b/public/language/it/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/it/admin/settings/reputation.json b/public/language/it/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/it/admin/settings/reputation.json +++ b/public/language/it/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/it/email.json b/public/language/it/email.json index bcada51df4..f6fdaef532 100644 --- a/public/language/it/email.json +++ b/public/language/it/email.json @@ -13,7 +13,7 @@ "reset.text1": "Abbiamo ricevuto una richiesta di reset della tua password, probabilmente perché l'hai dimenticata. Se non è così si prega di ignorare questa email.", "reset.text2": "Per confermare il reset della password per favore clicca il seguente link:", "reset.cta": "Clicca qui per resettare la tua password", - "reset.notify.subject": "Possword modificata con successo.", + "reset.notify.subject": "Password modificata con successo.", "reset.notify.text1": "Ti informiamo che in data %1, la password è stata cambiata con successo.", "reset.notify.text2": "Se non hai autorizzato questo, per favore notifica immediatamente un amministratore.", "digest.notifications": "Hai una notifica non letta da %1:", @@ -33,9 +33,9 @@ "notif.cta": "Vai alla discussione", "test.text1": "Questa è una email di test per verificare che il servizio di invio email è configurato correttamente sul tuo NodeBB.", "unsub.cta": "Clicca qui per modificare queste impostazioni", - "banned.subject": "You have been banned from %1", - "banned.text1": "The user %1 has been banned from %2.", - "banned.text2": "This ban will last until %1.", - "banned.text3": "This is the reason why you have been banned:", + "banned.subject": "Sei stato bannato da %1", + "banned.text1": "%1 è stato bannato da %2", + "banned.text2": "Questo ban durerà fino a %1.", + "banned.text3": "Il motivo del ban è:", "closing": "Grazie!" } \ No newline at end of file diff --git a/public/language/it/error.json b/public/language/it/error.json index 9fa55ff42e..4c4770fd8f 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -11,12 +11,13 @@ "invalid-uid": "ID Utente non valido", "invalid-username": "Nome utente non valido", "invalid-email": "Email non valida", - "invalid-title": "Invalid title", + "invalid-title": "Titolo non Valido", "invalid-user-data": "Dati Utente non validi", "invalid-password": "Password non valida", - "invalid-login-credentials": "Invalid login credentials", + "invalid-login-credentials": "Credenziali non Valide", "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", "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", @@ -66,7 +67,7 @@ "content-too-long": "Inserisci un post più breve. I post non possono essere più lunghi di %1 caratteri.", "title-too-short": "Inserisci un titolo più lungo. I titoli devono contenere almeno %1 caratteri.", "title-too-long": "Inserisci un titolo più corto. I titoli non possono essere più lunghi di %1 caratteri.", - "category-not-selected": "Category not selected.", + "category-not-selected": "Categoria non selezionata.", "too-many-posts": "È possibile inserire un Post ogni %1 secondi - si prega di attendere prima di postare di nuovo", "too-many-posts-newbie": "Come nuovo utente puoi postare solamente una volta ogni %1 secondi finché non hai raggiunto un livello di reputazione %2 - per favore attendi prima di scrivere ancora", "tag-too-short": "Inserisci un tag più lungo. I tag devono contenere almeno %1 caratteri.", @@ -76,12 +77,12 @@ "still-uploading": "Per favore attendere il completamento degli uploads.", "file-too-big": "La dimensione massima consentita è di %1 kB - si prega di caricare un file più piccolo", "guest-upload-disabled": "Il caricamento da ospite è stato disattivato", - "already-bookmarked": "You have already bookmarked this post", - "already-unbookmarked": "You have already unbookmarked this post", + "already-bookmarked": "Hai già aggiunto questa discussione ai preferiti.", + "already-unbookmarked": "Hai già rimosso questa discussione dai preferiti", "cant-ban-other-admins": "Non puoi bannare altri amministratori!", "cant-remove-last-admin": "Sei l'unico Amministratore. Aggiungi un altro amministratore prima di rimuovere il tuo ruolo", "cant-delete-admin": "Togli i privilegi amministrativi da questo account prima di provare ad eliminarlo.", - "invalid-image": "Invalid image", + "invalid-image": "Immagine non Valida", "invalid-image-type": "Tipo dell'immagine non valido. I tipi permessi sono: %1", "invalid-image-extension": "Estensione immagine non valida", "invalid-file-type": "Tipo di file non valido. I formati consentiti sono: %1", @@ -109,17 +110,22 @@ "chat-disabled": "Il sistema di chat è stato disabilitato", "too-many-messages": "Hai inviato troppi messaggi, aspetta un attimo.", "invalid-chat-message": "Messaggio chat non valido", - "chat-message-too-long": "Chat messages can not be longer than %1 characters.", + "chat-message-too-long": "I messaggi in chat non possono superare i %1 caratteri.", "cant-edit-chat-message": "Non ti è permesso di modificare questo messaggio", "cant-remove-last-user": "Non puoi rimuovere l'ultimo utente", "cant-delete-chat-message": "Non ti è permesso di eliminare questo messaggio", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Hai già votato per questo post", "reputation-system-disabled": "Il sistema di reputazione è disabilitato.", "downvoting-disabled": "Il Downvoting è disabilitato", "not-enough-reputation-to-downvote": "Non hai i privilegi per votare negativamente questo post", "not-enough-reputation-to-flag": "Tu non hai abbastanza reputazione per segnalare questo Post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Hai già messo marcato questo post", - "self-vote": "You cannot vote on your own post", + "self-vote": "Non puoi votare la tua stessa discussione", "reload-failed": "NodeBB ha incontrato un problema durante il ricaricamento: \"%1\". NodeBB continuerà a servire gli assets esistenti lato client, così puoi annullare quello che hai fatto prima di ricaricare.", "registration-error": "Errore nella registrazione", "parse-error": "Qualcosa è andato storto durante l'analisi della risposta proveniente dal server", @@ -135,5 +141,5 @@ "invalid-home-page-route": "Percorso della pagina iniziale non valido", "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": "No topics selected!" + "no-topics-selected": "Nessuna discussione selezionata!" } \ No newline at end of file diff --git a/public/language/it/flags.json b/public/language/it/flags.json index d05a5b25a8..e6b7a013d5 100644 --- a/public/language/it/flags.json +++ b/public/language/it/flags.json @@ -2,63 +2,63 @@ "state": "State", "reporter": "Reporter", "reported-at": "Reported At", - "description": "Description", - "no-flags": "Hooray! No flags found.", + "description": "Descrizione", + "no-flags": "Hurra! nessun flag trovato", "assignee": "Assignee", - "update": "Update", - "updated": "Updated", + "update": "Aggiornamento", + "updated": "Aggiornato", "target-purged": "The content this flag referred to has been purged and is no longer available.", - "quick-filters": "Quick Filters", - "filter-active": "There are one or more filters active in this list of flags", - "filter-reset": "Remove Filters", - "filters": "Filter Options", + "quick-filters": "Filtri rapidi", + "filter-active": "Ci sono uno o più filtri attivi in questa lista di flag", + "filter-reset": "Rimuovi filtri", + "filters": "Opzioni filtri", "filter-reporterId": "Reporter UID", "filter-targetUid": "Flagged UID", "filter-type": "Flag Type", - "filter-type-all": "All Content", + "filter-type-all": "Tutto il contenuto", "filter-type-post": "Post", "filter-state": "State", "filter-assignee": "Assignee UID", - "filter-cid": "Category", - "filter-quick-mine": "Assigned to me", - "filter-cid-all": "All categories", - "apply-filters": "Apply Filters", + "filter-cid": "Categoria", + "filter-quick-mine": "Assegnato a me", + "filter-cid-all": "Tutte le categorie", + "apply-filters": "Applica filtri", - "quick-links": "Quick Links", + "quick-links": "Collegamenti veloci", "flagged-user": "Flagged User", - "view-profile": "View Profile", - "start-new-chat": "Start New Chat", + "view-profile": "Vedi Profilo", + "start-new-chat": "Inizia una nuova chat", "go-to-target": "View Flag Target", - "user-view": "View Profile", - "user-edit": "Edit Profile", + "user-view": "Vedi Profilo", + "user-edit": "Modifica Profilo", "notes": "Flag Notes", - "add-note": "Add Note", - "no-notes": "No shared notes.", + "add-note": "Aggiungi nota", + "no-notes": "Nessuna nota condivisa", - "history": "Flag History", + "history": "Cronologia flag", "back": "Back to Flags List", - "no-history": "No flag history.", + "no-history": "Nessuna cronologia flag", "state-all": "All states", - "state-open": "New/Open", - "state-wip": "Work in Progress", - "state-resolved": "Resolved", - "state-rejected": "Rejected", - "no-assignee": "Not Assigned", - "note-added": "Note Added", + "state-open": "Nuovo/Apri", + "state-wip": "Lavori in Corso", + "state-resolved": "Risolto", + "state-rejected": "Rifiutato", + "no-assignee": "Non Assegnato", + "note-added": "Nota aggiunta", - "modal-title": "Report Inappropriate Content", + "modal-title": "Segnala Contenuto Inappropriato", "modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.", "modal-reason-spam": "Spam", - "modal-reason-offensive": "Offensive", - "modal-reason-other": "Other (specify below)", - "modal-reason-custom": "Reason for reporting this content...", - "modal-submit": "Submit Report", - "modal-submit-success": "Content has been flagged for moderation.", - "modal-submit-confirm": "Confirm Submission", + "modal-reason-offensive": "Offensivo", + "modal-reason-other": "Altro (Specificare di seguito)", + "modal-reason-custom": "Motivazione della segnalazione...", + "modal-submit": "Invia la Segnalazione", + "modal-submit-success": "Il contenuto è stato segnalato.", + "modal-submit-confirm": "Conferma la Segnalazione", "modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?", "modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined." } \ No newline at end of file diff --git a/public/language/it/global.json b/public/language/it/global.json index 7325219082..fddd53579b 100644 --- a/public/language/it/global.json +++ b/public/language/it/global.json @@ -53,6 +53,7 @@ "topics": "Discussioni", "posts": "Post", "best": "Migliore", + "votes": "Votes", "upvoters": "Hanno votato positivamente", "upvoted": "Apprezzati", "downvoters": "Hanno negato negativamente", @@ -104,6 +105,6 @@ "cookies.accept": "Ho capito!", "cookies.learn_more": "Scopri di più", "edited": "Modificato", - "disabled": "Disabled", - "select": "Select" + "disabled": "Disabilitato", + "select": "Seleziona" } \ No newline at end of file diff --git a/public/language/it/groups.json b/public/language/it/groups.json index 835ada672f..53f27c12c4 100644 --- a/public/language/it/groups.json +++ b/public/language/it/groups.json @@ -27,7 +27,7 @@ "details.disableJoinRequests": "Disabilita le richieste d'adesione", "details.grant": "Concedi / Rimuovi la Proprietà", "details.kick": "Espelli", - "details.kick_confirm": "Are you sure you want to remove this member from the group?", + "details.kick_confirm": "Sei sicuro di voler rimuovere questo membro dal gruppo?", "details.owner_options": "Amministratore del Grupo", "details.group_name": "Nome Gruppo", "details.member_count": "Totale Membri", @@ -53,6 +53,6 @@ "new-group.group_name": "Nome Gruppo:", "upload-group-cover": "Carica copertina del gruppo", "bulk-invite-instructions": "Inserisci una lista di nomi utente da invitare in questo gruppo separati da virgole", - "bulk-invite": "Bulk Invite", + "bulk-invite": "Invita in Massa", "remove_group_cover_confirm": "Sei sicuro di voler rimuovere l'immagine copertina?" } \ No newline at end of file diff --git a/public/language/it/modules.json b/public/language/it/modules.json index 5fcef5d582..d379688576 100644 --- a/public/language/it/modules.json +++ b/public/language/it/modules.json @@ -20,7 +20,7 @@ "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.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.confirm-chat-with-dnd-user": "Questo utente ha impostato il suo stato su Non Disturbare. Sei sicuro di voler iniziare una conversazione?", "composer.compose": "Componi", "composer.show_preview": "Visualizza Anteprima", "composer.hide_preview": "Nascondi Anteprima", diff --git a/public/language/it/notifications.json b/public/language/it/notifications.json index 5aa5225d1b..7a1b0c4b36 100644 --- a/public/language/it/notifications.json +++ b/public/language/it/notifications.json @@ -29,9 +29,9 @@ "user_flagged_post_in": "%1 ha segnalato un post in %2", "user_flagged_post_in_dual": "%1 e %2 hanno segnalato un post in %3", "user_flagged_post_in_multiple": "%1 ed altri %2 hanno segnalato un post in %3", - "user_flagged_user": "%1 flagged a user profile (%2)", - "user_flagged_user_dual": "%1 and %2 flagged a user profile (%3)", - "user_flagged_user_multiple": "%1 and %2 others flagged a user profile (%3)", + "user_flagged_user": "%1 ha segnalato un utente (%2)", + "user_flagged_user_dual": "%1 e %2 hanno segnalato un utente (%3)", + "user_flagged_user_multiple": "%1 e altri %2 hanno segnalato un utente (%3)", "user_posted_to": "%1 ha postato una risposta a: %2", "user_posted_to_dual": "%1 e %2 hanno postato una risposta su: %3", "user_posted_to_multiple": "%1 ed altri %2 hanno postato una risposta su: %3", @@ -42,23 +42,23 @@ "new_register": "%1 ha inviato una richiesta di registrazione.", "new_register_multiple": "Ci sono %1 richieste di registrazione che attendono di essere esaminate.", "flag_assigned_to_you": "Flag %1 has been assigned to you", - "post_awaiting_review": "Post awaiting review", + "post_awaiting_review": "Post in attesa di revisione", "email-confirmed": "Email Confermata", "email-confirmed-message": "Grazie per aver validato la tua email. Il tuo account è ora completamente attivato.", "email-confirm-error-message": "C'è stato un problema nella validazione del tuo indirizzo email. Potrebbe essere il codice non valido o scaduto.", "email-confirm-sent": "Email di conferma inviata.", - "none": "None", - "notification_only": "Notification Only", - "email_only": "Email Only", - "notification_and_email": "Notification & Email", - "notificationType_upvote": "When someone upvotes your post", + "none": "Nessuna Notifica", + "notification_only": "Solo Notifiche", + "email_only": "Solo Email", + "notification_and_email": "Email e Notifica", + "notificationType_upvote": "Quando il tuo post riceve un Mi Piace", "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" + "notificationType_post-queue": "Quando un nuovo post è in attesa di revisione", + "notificationType_new-post-flag": "Quando un post viene segnalato", + "notificationType_new-user-flag": "Quando un utente viene segnalato" } \ No newline at end of file diff --git a/public/language/it/pages.json b/public/language/it/pages.json index 0b1be5dc1e..1e7676ffdf 100644 --- a/public/language/it/pages.json +++ b/public/language/it/pages.json @@ -6,10 +6,11 @@ "popular-month": "Discussioni popolari questo mese", "popular-alltime": "Discussioni più popolari di sempre", "recent": "Discussioni Recenti", - "moderator-tools": "Moderator Tools", - "flagged-content": "Flagged Content", + "top": "Discussioni più votate", + "moderator-tools": "Strumenti di moderazione", + "flagged-content": "Contenuti Segnalati", "ip-blacklist": "Lista nera degli IP", - "post-queue": "Post Queue", + "post-queue": "Post in coda", "users/online": "Utenti Online", "users/latest": "Ultimi Utenti", "users/sort-posts": "Utenti maggiori contributori", @@ -19,7 +20,7 @@ "users/search": "Ricerca Utenti", "notifications": "Notifiche", "tags": "Tags", - "tag": "Discussioni taggate \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registrati", "registration-complete": "Registrazione completata", "login": "Autenticati", @@ -44,7 +45,7 @@ "account/bookmarks": "%1 Post tra i favoriti", "account/settings": "Impostazioni Utente", "account/watched": "Discussioni osservate da %1", - "account/ignored": "Topics ignored by %1", + "account/ignored": "Discussioni ignorate da %1", "account/upvoted": "Post apprezzati da %1", "account/downvoted": "Post votati negativamente da %1", "account/best": "I migliori post di %1", diff --git a/public/language/it/register.json b/public/language/it/register.json index e3afd5aed2..49de769d43 100644 --- a/public/language/it/register.json +++ b/public/language/it/register.json @@ -1,5 +1,5 @@ { - "register": "Registrazione", + "register": "Registrati", "cancel_registration": "Cancella Registrazione", "help.email": "Come opzione predefinita, il tuo indirizzo email non verrà reso pubblico.", "help.username_restrictions": "Un nome utente unico, di almeno %1 caratteri e al massimo di %2. Gli altri utenti ti possono menzionare usando @username.", diff --git a/public/language/it/search.json b/public/language/it/search.json index 980e2c28ba..dc33a58737 100644 --- a/public/language/it/search.json +++ b/public/language/it/search.json @@ -12,7 +12,7 @@ "reply-count": "Numero Risposte", "at-least": "Almeno", "at-most": "Al massimo", - "relevance": "Relevance", + "relevance": "Rilevanza", "post-time": "Ora invio", "newer-than": "Più nuovi di", "older-than": "Più vecchi di", diff --git a/public/language/it/success.json b/public/language/it/success.json index cf8dd4cad5..35f6d5b2a9 100644 --- a/public/language/it/success.json +++ b/public/language/it/success.json @@ -1,7 +1,7 @@ { "success": "Riuscito", "topic-post": "Hai postato correttamente.", - "post-queued": "Your post is queued for approval.", + "post-queued": "La tua discussione è in attesa di approvazione.", "authentication-successful": "Autenticazione Riuscita", "settings-saved": "Impostazioni salvate!" } \ No newline at end of file diff --git a/public/language/it/topic.json b/public/language/it/topic.json index 747ba4876b..1684b7db6e 100644 --- a/public/language/it/topic.json +++ b/public/language/it/topic.json @@ -13,9 +13,9 @@ "notify_me": "Ricevi notifiche di nuove risposte in questa discussione", "quote": "Cita", "reply": "Rispondi", - "replies_to_this_post": "%1 Replies", - "one_reply_to_this_post": "1 Reply", - "last_reply_time": "Last reply", + "replies_to_this_post": "%1 Risposte", + "one_reply_to_this_post": "1 Risposta", + "last_reply_time": "Ultima Risposta", "reply-as-topic": "Topic risposta", "guest-login-reply": "Effettua il Log in per rispondere", "edit": "Modifica", @@ -52,14 +52,14 @@ "not-watching.description": "Non notificarmi sulle nuove risposte.
Mostra la discussione fra le non lette se la categoria non è ignorata.", "ignoring.description": "Non notificarmi sulle nuove risposte.
Non mostrare la discussione fra le non lette.", "thread_tools.title": "Strumenti per la Discussione", - "thread_tools.markAsUnreadForAll": "Segna tutti come non letti", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Fissa Discussione", "thread_tools.unpin": "Sblocca Discussione", "thread_tools.lock": "Blocca Discussione", "thread_tools.unlock": "Sblocca Discussione", "thread_tools.move": "Sposta Discussione", "thread_tools.move_all": "Sposta Tutto", - "thread_tools.select_category": "Select Category", + "thread_tools.select_category": "Seleziona Categoria", "thread_tools.fork": "Dividi Discussione", "thread_tools.delete": "Elimina Discussione", "thread_tools.delete-posts": "Cancella post", @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Sei sicuro di voler ripristinare questa discussione?", "thread_tools.purge": "Svuota Discussione", "thread_tools.purge_confirm": "Sei sicuro di voler svuotare questa discussione?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Unisci le Discussioni", + "thread_tools.merge": "Unisci", "topic_move_success": "Questa discussione è stata correttamente spostata in %1", "post_delete_confirm": "Sei sicuro di voler cancellare questo post?", "post_restore_confirm": "Sei sicuro di voler ripristinare questo post?", @@ -91,7 +91,7 @@ "fork_pid_count": "%1 post selezionati", "fork_success": "Topic Diviso con successo ! Clicca qui per andare al Topic Diviso.", "delete_posts_instruction": "Clicca sui post che vuoi cancellare/eliminare", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Clicca sulle discussioni che vuoi unire", "composer.title_placeholder": "Inserisci qui il titolo della discussione...", "composer.handle_placeholder": "Nome", "composer.discard": "Annulla", diff --git a/public/language/it/unread.json b/public/language/it/unread.json index c1244d0fe3..2f2afebd23 100644 --- a/public/language/it/unread.json +++ b/public/language/it/unread.json @@ -10,6 +10,6 @@ "all-topics": "Tutte le Discussioni", "new-topics": "Nuova Discussione", "watched-topics": "Discussioni seguite", - "unreplied-topics": "Nessuna Risposta", - "multiple-categories-selected": "Multiple Selected" + "unreplied-topics": "Discussioni Senza Risposta", + "multiple-categories-selected": "Più Categorie" } \ No newline at end of file diff --git a/public/language/it/user.json b/public/language/it/user.json index a24f325d24..d3b66bfa4a 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -19,13 +19,13 @@ "location": "Località", "age": "Età", "joined": "Iscrizione", - "lastonline": "Ultima volta in linea", + "lastonline": "Ultimo Accesso", "profile": "Profilo", "profile_views": "Visite al profilo", "reputation": "Reputazione", - "bookmarks": "Favoriti", + "bookmarks": "Preferiti", "watched": "Osservati", - "ignored": "Ignored", + "ignored": "Ignorati", "followers": "Da chi è seguito", "following": "Chi segue", "aboutme": "Su di me", @@ -61,7 +61,7 @@ "username_taken_workaround": "Il nome utente che hai richiesto era già stato utilizzato, quindi lo abbiamo modificato leggermente. Ora il tuo è %1", "password_same_as_username": "La tua password è uguale al tuo username, per piacere scegli un'altra password", "password_same_as_email": "La tua password sembra coincidere con la tua email, per favore fornisci un'altra password.", - "weak_password": "Weak password.", + "weak_password": "Password debole.", "upload_picture": "Carica foto", "upload_a_picture": "Carica una foto", "remove_uploaded_picture": "Elimina foto caricata", @@ -85,7 +85,7 @@ "has_no_posts": "Questo utente non ha ancora scritto niente.", "has_no_topics": "Questo utente non ha ancora avviato discussioni.", "has_no_watched_topics": "Questo utente non sta osservando discussioni.", - "has_no_ignored_topics": "This user hasn't ignored any topics yet.", + "has_no_ignored_topics": "Questo utente non sta ignorando discussioni.", "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", @@ -94,18 +94,18 @@ "paginate_description": "Non utilizzare lo scroll infinito per discussioni e messaggi", "topics_per_page": "Discussioni per Pagina", "posts_per_page": "Post per Pagina", - "max_items_per_page": "Maximum %1", + "max_items_per_page": "Massimo %1", "notification_sounds": "Riproduci un suono quando si riceve una notifica", "notifications_and_sounds": "Notifiche e Suoni", "incoming-message-sound": "Suono messaggio in entrata", "outgoing-message-sound": "Suono messaggio in uscita", "notification-sound": "Suono di notifica", "no-sound": "Nessun suono", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Frequenza Notifiche dei Mi Piace ", + "upvote-notif-freq.all": "Tutti i Mi Piace", + "upvote-notif-freq.everyTen": "Ogni Dieci Mi Piace", + "upvote-notif-freq.logarithmic": "Ogni 10, 100, 1000...", + "upvote-notif-freq.disabled": "Disabilitate", "browsing": "Impostazioni di Navigazione", "open_links_in_new_tab": "Apri i link web in una nuova pagina", "enable_topic_searching": "Abilita la ricerca negli argomenti", diff --git a/public/language/ja/admin/appearance/customise.json b/public/language/ja/admin/appearance/customise.json index 1cfa0dea9d..6c94263d97 100644 --- a/public/language/ja/admin/appearance/customise.json +++ b/public/language/ja/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "カスタムCSS", - "custom-css.description": "あなたのCSS設定をこちらに追加すると他のすべてのスタイルの後に適用されます。", - "custom-css.enable": "カスタムCSSを有効にする", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/ja/admin/general/homepage.json b/public/language/ja/admin/general/homepage.json index 07ee7b3e7e..f033b87c51 100644 --- a/public/language/ja/admin/general/homepage.json +++ b/public/language/ja/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "ユーザーがあなたのフォーラムのルートURLに移動するときに表示されるページを選択します。", "home-page-route": "ホームページのルート", "custom-route": "カスタムルート", - "allow-user-home-pages": "ユーザーホームページを有効にする" + "allow-user-home-pages": "ユーザーホームページを有効にする", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/ja/admin/manage/tags.json b/public/language/ja/admin/manage/tags.json index 2639e71b65..ae2b595a81 100644 --- a/public/language/ja/admin/manage/tags.json +++ b/public/language/ja/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "クリックまたは、クリックしながらドラッグでタグを選択し、Shiftキーを使用して複数のタグを選択します。", "create": "タグを作成", "modify": "タグを変更", + "rename": "Rename Tags", "delete": "指定されたタグを削除", "search": "タグを検索します...", "settings": "こちらをクリックしてタグ設定ページにアクセスしてください。", diff --git a/public/language/ja/admin/manage/users.json b/public/language/ja/admin/manage/users.json index 93474055c7..6b8ce0f2dd 100644 --- a/public/language/ja/admin/manage/users.json +++ b/public/language/ja/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "BANされた", "pills.search": "ユーザーを検索", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "ユーザー名別", "search.username-placeholder": "検索するユーザー名を入力してください", "search.email": "Eメール別", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "ロックアウト(s)がリセットされました!", "alerts.flag-reset-success": "フラグ(s)をリセット!", "alerts.no-remove-yourself-admin": "あなたは管理者なので自分自身を削除することはできません!", - "alerts.make-admin-success": "ユーザー(s)は、現在管理者です。", - "alerts.confirm-remove-admin": "本当に管理者を削除しますか?", - "alerts.remove-admin-success": "ユーザー(s)はもはや管理者ではありません。", + "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": "これらのユーザー(s)の電子メール(s)を検証しますか?", "alerts.validate-email-success": "電子メールが検証されました", "alerts.password-reset-confirm": "これらのユーザー(s)にパスワードリセットのメール(s)を送信しますか?", diff --git a/public/language/ja/admin/menu.json b/public/language/ja/admin/menu.json index 10ffdac477..2328fb951b 100644 --- a/public/language/ja/admin/menu.json +++ b/public/language/ja/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "管理", "manage/categories": "カテゴリ", + "manage/privileges": "Privileges", "manage/tags": "タグ", "manage/users": "ユーザー", + "manage/admins-mods": "Admins & Mods", "manage/registration": "登録キュー", "manage/post-queue": "投稿キュー", "manage/groups": "グループ", diff --git a/public/language/ja/admin/settings/chat.json b/public/language/ja/admin/settings/chat.json index 543b924f02..5a4754658d 100644 --- a/public/language/ja/admin/settings/chat.json +++ b/public/language/ja/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "管理者およびグローバルモデレーターはこの制限を免除されます", "max-length": "チャットメッセージの最大の長さ", "max-room-size": "チャットルームの最大ユーザー数", - "delay": "ミリ秒単位のチャットメッセージ間の時間" + "delay": "ミリ秒単位のチャットメッセージ間の時間", + "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)" } \ No newline at end of file diff --git a/public/language/ja/admin/settings/post.json b/public/language/ja/admin/settings/post.json index 60c1ca251b..82025acaa8 100644 --- a/public/language/ja/admin/settings/post.json +++ b/public/language/ja/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "最も多い評価", "sorting.most-posts": "Most Posts", "sorting.topic-default": "デフォルトのスレッドの並び順", + "length": "Post Length", "restrictions": "転記の制限", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "投稿キューを有効にする", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "投稿キューを有効にすると、新しいユーザーの投稿が承認待ちの状態になります。", - "restrictions.seconds-between": "投稿間の秒数", - "restrictions.seconds-between-new": "新規ユーザーの投稿間の秒数", - "restrictions.rep-threshold": "この制限が解除される前の評判しきい値", + "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": "新しいユーザーが投稿できるまでの秒数", - "restrictions.seconds-edit-after": "投稿後にユーザーが投稿を編集できる秒数。(0は無効)", - "restrictions.seconds-delete-after": "投稿後にユーザーが投稿を削除できる秒数。(0は無効)", + "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": "ユーザーが自分のスレッドを削除できなくなった後の返信数(0は無効)", "restrictions.min-title-length": "タイトルの最小文字数", "restrictions.max-title-length": "タイトルの最大文字数", "restrictions.min-post-length": "投稿の最小文字数", "restrictions.max-post-length": "投稿の最大文字数", - "restrictions.days-until-stale": "スレッドが古くなるまでの日数", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "スレッドが「古い」とみなされた場合、そのスレッドに返信しようとするユーザーに警告が表示されます。", "timestamp": "タイムスタンプ", "timestamp.cut-off": "日付のカットオフ(日数)", diff --git a/public/language/ja/admin/settings/reputation.json b/public/language/ja/admin/settings/reputation.json index 55eb244b59..05cd26486b 100644 --- a/public/language/ja/admin/settings/reputation.json +++ b/public/language/ja/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "すべての投票は公開されています", "thresholds": "アクティビティのしきい値", "min-rep-downvote": "投稿をdownvoteするための最低評価", - "min-rep-flag": "フラグの投稿に低評価" + "min-rep-flag": "フラグの投稿に低評価", + "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" } \ No newline at end of file diff --git a/public/language/ja/error.json b/public/language/ja/error.json index 0ddf8aa938..a9ade29e12 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "ログイン資格情報が無効です", "invalid-username-or-password": "ユーザー名とパスワードの両方を指定してください", "invalid-search-term": "無効な検索ワード", + "invalid-url": "Invalid URL", "csrf-invalid": "セッションの期限切れと思われるため、私達はあなたのログイン状態を確認できませんでした。もう一度お試しください。", "invalid-pagination-value": "無効なページネーション値です。%1 から%2の値でなければありません。", "username-taken": "ユーザー名は既に使われています", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "あなたはこのメッセージを削除する権限を持っていません。", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "あなたはすでにこの投稿を評価しました。", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", diff --git a/public/language/ja/global.json b/public/language/ja/global.json index eb93d17b41..d6168654d4 100644 --- a/public/language/ja/global.json +++ b/public/language/ja/global.json @@ -53,6 +53,7 @@ "topics": "スレッド", "posts": "投稿", "best": "ベスト", + "votes": "Votes", "upvoters": "高評価したユーザー", "upvoted": "高評価", "downvoters": "低評価したユーザー", diff --git a/public/language/ja/pages.json b/public/language/ja/pages.json index fd0fa29e8c..39a573b6cd 100644 --- a/public/language/ja/pages.json +++ b/public/language/ja/pages.json @@ -6,6 +6,7 @@ "popular-month": "今月人気のスレッド", "popular-alltime": "人気のスレッド", "recent": "最新スレッド", + "top": "Top Voted Topics", "moderator-tools": "モデレーターツール", "flagged-content": "フラグ付きコンテンツ", "ip-blacklist": "IPブラックリスト", @@ -19,7 +20,7 @@ "users/search": "ユーザーを検索", "notifications": "通知", "tags": "タグ", - "tag": "スレッドは\"%1\"の下にタグ付けされました", + "tag": "Topics tagged under "%1"", "register": "アカウントを登録", "registration-complete": "登録完了", "login": "あなたのアカウントでログイン", diff --git a/public/language/ja/topic.json b/public/language/ja/topic.json index f34844e326..35bbaf6644 100644 --- a/public/language/ja/topic.json +++ b/public/language/ja/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "新しく返信通知を受け取らない。
カテゴリが無視されていない場合、未読のスレッドを表示します。", "ignoring.description": "新しく返信通知を受け取らない。
未読のスレッドは表示されません。", "thread_tools.title": "スレッドツール", - "thread_tools.markAsUnreadForAll": "すべて未読にマーク", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "スレッドを最上部に固定", "thread_tools.unpin": "スレッドの固定を解除", "thread_tools.lock": "スレッドをロック", diff --git a/public/language/ko/admin/appearance/customise.json b/public/language/ko/admin/appearance/customise.json index 0c0b028b98..7fc83ddd50 100644 --- a/public/language/ko/admin/appearance/customise.json +++ b/public/language/ko/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "사용자 정의 CSS", - "custom-css.description": "사용자 정의 CSS를 이곳에 입력하세요. 이 스타일들은 맨 마지막에 적용됩니다.", - "custom-css.enable": "사용자 정의 CSS 허용", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/ko/admin/general/homepage.json b/public/language/ko/admin/general/homepage.json index 13d43e4de7..97cdaeb227 100644 --- a/public/language/ko/admin/general/homepage.json +++ b/public/language/ko/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "사용자가 루트 URL에 들어갔을 때 어떤 페이지가 보일지 선택하세요.", "home-page-route": "홈페이지 경로", "custom-route": "사용자 지정 경로", - "allow-user-home-pages": "사용자가 직접 홈페이지를 설정할 수 있게 허용" + "allow-user-home-pages": "사용자가 직접 홈페이지를 설정할 수 있게 허용", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/ko/admin/manage/tags.json b/public/language/ko/admin/manage/tags.json index 979a5a8af2..8e0fde510d 100644 --- a/public/language/ko/admin/manage/tags.json +++ b/public/language/ko/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "태그를 클릭하거나 드래그해서 선택하고, Shift 를 눌러 다중 선택하세요.", "create": "태그 생성", "modify": "태그 수정", + "rename": "Rename Tags", "delete": "선택된 태그 삭제", "search": "태그 검색", "settings": "태그 설정 페이지를 방문하시려면 클릭하세요", diff --git a/public/language/ko/admin/manage/users.json b/public/language/ko/admin/manage/users.json index a1db2decf6..bac6329a8a 100644 --- a/public/language/ko/admin/manage/users.json +++ b/public/language/ko/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "차단됨", "pills.search": "사용자 검색", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "이름으로", "search.username-placeholder": "검색할 사용자명을 입력하세요", "search.email": "이메일로", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "락아웃이 리셋됐습니다!", "alerts.flag-reset-success": "신고가 리셋됐습니다!", "alerts.no-remove-yourself-admin": "관리자이기 때문에 본인을 삭제할 수 없습니다!", - "alerts.make-admin-success": "이 사용자는 이제 관리자입니다.", - "alerts.confirm-remove-admin": "정말 이 관리자를 제거하시겠습니까?", - "alerts.remove-admin-success": "이 사용자는 이제 더 이상 관리자가 아닙니다.", + "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": "이 사용자(들)의 이메일을 인증하시겠습니까?", "alerts.validate-email-success": "이메일 인증됨", "alerts.password-reset-confirm": "이 사용자(들)에게 패스워드 리셋 이메일을 보내시겠습니까?", diff --git a/public/language/ko/admin/menu.json b/public/language/ko/admin/menu.json index 3dbb61f8f5..9abc46605e 100644 --- a/public/language/ko/admin/menu.json +++ b/public/language/ko/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "관리", "manage/categories": "게시판", + "manage/privileges": "Privileges", "manage/tags": "태그", "manage/users": "용자", + "manage/admins-mods": "Admins & Mods", "manage/registration": "회원 가입 승인 대기자", "manage/post-queue": "게시 대기열", "manage/groups": "그룹", diff --git a/public/language/ko/admin/settings/chat.json b/public/language/ko/admin/settings/chat.json index a629cede01..539180b24e 100644 --- a/public/language/ko/admin/settings/chat.json +++ b/public/language/ko/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "관리자는 이 제한에서 면제됩니다.", "max-length": "채팅 메세지의 최대 길이", "max-room-size": "채팅방의 최대 인원 수", - "delay": "채팅 메세지 간 시간 간격(단위: 1/1000초)" + "delay": "채팅 메세지 간 시간 간격(단위: 1/1000초)", + "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)" } \ No newline at end of file diff --git a/public/language/ko/admin/settings/post.json b/public/language/ko/admin/settings/post.json index 001a8b7376..e2552f4ec7 100644 --- a/public/language/ko/admin/settings/post.json +++ b/public/language/ko/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "추천수 순으로 정렬", "sorting.most-posts": "Most Posts", "sorting.topic-default": "게시물 정렬기준 기본값", + "length": "Post Length", "restrictions": "글 작성 제약사항", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "게시 대기열 사용", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "게시 대기열을 사용하면 사용자의 게시물이 대기열에 넣어집니다.", - "restrictions.seconds-between": "글 작성 간 시간(초)", - "restrictions.seconds-between-new": "신규 사용자인 경우, 글 작성 간 시간(초)", - "restrictions.rep-threshold": "위 제약을 해제하기 위한 최소 등급", + "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": "신규 사용자 글 작성 허가 전 대기시간", - "restrictions.seconds-edit-after": "사용자가 글 작성 후 편집 허가 전 대기시간", - "restrictions.seconds-delete-after": "사용자가 글 작성 후 삭제 허가 전 대기시간", + "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": "게시글이 삭제 불가로 변환되기 위한 답글 수", "restrictions.min-title-length": "최소 제목 길이", "restrictions.max-title-length": "최대 제목 길이", "restrictions.min-post-length": "최소 게시글 길이", "restrictions.max-post-length": "최대 게시글 길이", - "restrictions.days-until-stale": "게시물 유효기간(일)", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "게시글이 유효기간을 지나면, 해당 게시글에 답글 작성하는 사용자에게 경고 메세지 보내기.", "timestamp": "시간표기", "timestamp.cut-off": "상대시간 표기 기간(일)", diff --git a/public/language/ko/admin/settings/reputation.json b/public/language/ko/admin/settings/reputation.json index b6e5eea171..763ca5ed83 100644 --- a/public/language/ko/admin/settings/reputation.json +++ b/public/language/ko/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "모든 투표는 공개적입니다.", "thresholds": "포럼 활동 기준선", "min-rep-downvote": "평판이 낮아 이 게시물을 다운보트할 수 없습니다.", - "min-rep-flag": "평판이 낮아 이 게시물을 신고할 수 없습니다." + "min-rep-flag": "평판이 낮아 이 게시물을 신고할 수 없습니다.", + "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" } \ No newline at end of file diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 38b837c798..65d648c2d6 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "올바르지 않은 로그인 정보입니다.", "invalid-username-or-password": "사용자명과 패스워드를 모두 설정해주세요.", "invalid-search-term": "올바르지 않은 검색어입니다.", + "invalid-url": "Invalid URL", "csrf-invalid": "세션이 만료되어 로그인에 실패하였습니다. 다시 시도해 주세요.", "invalid-pagination-value": "올바르지 않은 페이지 값입니다. 최소 1% 에서 최대 2% 사이로 설정해야 합니다.", "username-taken": "이미 사용 중인 사용자명 입니다.", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "이 메세지를 수정 할 권한이 없습니다.", "cant-remove-last-user": "마지막 사용자를 삭제할 수 없습니다.", "cant-delete-chat-message": "이 메세지를 삭제할 권한이 없습니다.", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "이미 이 포스트에 투표하셨습니다.", "reputation-system-disabled": "인지도 시스템이 비활성 상태입니다.", "downvoting-disabled": "비추천 기능이 비활성 상태입니다.", "not-enough-reputation-to-downvote": "인지도가 낮아 이 포스트를 비추천할 수 없습니다.", "not-enough-reputation-to-flag": "인지도가 낮아 이 포스트를 신고할 수 없습니다.", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "이미 이 게시물을 신고했습니다.", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB 서버를 다시 읽어들이는 중 다음과 같은 문제가 발생했으나 사용자측은 지속적으로 자원을 제공받습니다. 오류 문구: \"%1\" 문제를 해결하시려면 다시 읽어들이기 전의 수정사항을 원래대로 되돌려주세요. ", diff --git a/public/language/ko/global.json b/public/language/ko/global.json index 283bed5f68..6937733f1d 100644 --- a/public/language/ko/global.json +++ b/public/language/ko/global.json @@ -53,6 +53,7 @@ "topics": "게시물", "posts": "포스트", "best": "베스트", + "votes": "Votes", "upvoters": "추천한 사용자", "upvoted": "추천된 게시물", "downvoters": "비추천한 사용자", diff --git a/public/language/ko/pages.json b/public/language/ko/pages.json index 9c033946ee..2185d9af8f 100644 --- a/public/language/ko/pages.json +++ b/public/language/ko/pages.json @@ -6,6 +6,7 @@ "popular-month": "인기있는 게시물 (월간)", "popular-alltime": "인기있는 게시물", "recent": "최근 게시물", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "신고된 컨텐츠", "ip-blacklist": "IP 블랙리스트", @@ -19,7 +20,7 @@ "users/search": "사용자 검색", "notifications": "알림", "tags": "태그", - "tag": "\"%1\" 태그가 달린 게시물", + "tag": "Topics tagged under "%1"", "register": "회원가입", "registration-complete": "회원가입 완료", "login": "로그인", diff --git a/public/language/ko/topic.json b/public/language/ko/topic.json index d55fb7fcec..d2a2627464 100644 --- a/public/language/ko/topic.json +++ b/public/language/ko/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "새로운 답글에 대해 알림 받지 않기. 해당 게시판을 팔로우 중이라면 \"읽지않은 게시물\" 에서 보여주기.", "ignoring.description": "새로운 답글에 대한 알림 받지 않기. \"읽지않은 게시물\"에서 보여주지 않기.", "thread_tools.title": "게시물 관리", - "thread_tools.markAsUnreadForAll": "모든 사용자에게 읽지 않음으로 표시", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "상단 고정", "thread_tools.unpin": "상단 고정 해제", "thread_tools.lock": "잠금", diff --git a/public/language/lt/admin/appearance/customise.json b/public/language/lt/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/lt/admin/appearance/customise.json +++ b/public/language/lt/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/lt/admin/general/homepage.json b/public/language/lt/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/lt/admin/general/homepage.json +++ b/public/language/lt/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/lt/admin/manage/tags.json b/public/language/lt/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/lt/admin/manage/tags.json +++ b/public/language/lt/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/lt/admin/manage/users.json b/public/language/lt/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/lt/admin/manage/users.json +++ b/public/language/lt/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/lt/admin/menu.json b/public/language/lt/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/lt/admin/menu.json +++ b/public/language/lt/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/lt/admin/settings/chat.json b/public/language/lt/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/lt/admin/settings/chat.json +++ b/public/language/lt/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/lt/admin/settings/post.json b/public/language/lt/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/lt/admin/settings/post.json +++ b/public/language/lt/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/lt/admin/settings/reputation.json b/public/language/lt/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/lt/admin/settings/reputation.json +++ b/public/language/lt/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/lt/error.json b/public/language/lt/error.json index 064cd77941..49e5b36a56 100644 --- a/public/language/lt/error.json +++ b/public/language/lt/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Reputacijos sistema išjungta.", "downvoting-disabled": "Downvoting yra išjungtas", "not-enough-reputation-to-downvote": "Jūs neturite pakankamai reputacijos balsuoti prieš šį pranešimą", "not-enough-reputation-to-flag": "Jūs neturite pakankamai reputacijos kad įspėti dėl šito pranešimo", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Jūs jau pranešėte apie šį pranešimą", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB susidūrė su problema persikraunant: \"%1\", NodeBB pratęs veikti su šiuo klientu. bet jums reiktu patikrinti ką jūs darėte prieš perkraunant NodeBB", diff --git a/public/language/lt/global.json b/public/language/lt/global.json index 08bdcf1e87..568836bbed 100644 --- a/public/language/lt/global.json +++ b/public/language/lt/global.json @@ -53,6 +53,7 @@ "topics": "Temos", "posts": "Pranešimai", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/lt/pages.json b/public/language/lt/pages.json index 8f4822919d..17d6e79b1e 100644 --- a/public/language/lt/pages.json +++ b/public/language/lt/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Paskutinės temos", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Pranešimai", "tags": "Žymos", - "tag": "Temos su šia žymą \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/lt/topic.json b/public/language/lt/topic.json index 822acaf0b8..e55d88cc5c 100644 --- a/public/language/lt/topic.json +++ b/public/language/lt/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Temos priemonės", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Prisegti temą", "thread_tools.unpin": "Atsegti temą", "thread_tools.lock": "Užrakinti temą", diff --git a/public/language/ms/admin/appearance/customise.json b/public/language/ms/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/ms/admin/appearance/customise.json +++ b/public/language/ms/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/ms/admin/general/homepage.json b/public/language/ms/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/ms/admin/general/homepage.json +++ b/public/language/ms/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/ms/admin/manage/tags.json b/public/language/ms/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/ms/admin/manage/tags.json +++ b/public/language/ms/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/ms/admin/manage/users.json b/public/language/ms/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/ms/admin/manage/users.json +++ b/public/language/ms/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/ms/admin/menu.json b/public/language/ms/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/ms/admin/menu.json +++ b/public/language/ms/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/ms/admin/settings/chat.json b/public/language/ms/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/ms/admin/settings/chat.json +++ b/public/language/ms/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/ms/admin/settings/post.json b/public/language/ms/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/ms/admin/settings/post.json +++ b/public/language/ms/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/ms/admin/settings/reputation.json b/public/language/ms/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/ms/admin/settings/reputation.json +++ b/public/language/ms/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/ms/error.json b/public/language/ms/error.json index 08b28dd54a..49b4eff2f7 100644 --- a/public/language/ms/error.json +++ b/public/language/ms/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Sila tentukan kedua-dua nama pengguna dan kata laluan", "invalid-search-term": "Terma pencarian tak sah", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Anda tidak dibenarkan menyunting mesej ini", "cant-remove-last-user": "Anda tidak boleh membuang pengguna akhir", "cant-delete-chat-message": "Anda tidak dibenarkan memadamkan mesej ini", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Sistem reputasi dilumpuhkan.", "downvoting-disabled": "Undi turun dilumpuhkan", "not-enough-reputation-to-downvote": "Anda tidak mempunyai reputasi mencukupi untuk mengundi turun kiriman ini", "not-enough-reputation-to-flag": "Anda tidak mempunyai reputasi mencukupi untuk menanda kiriman ini", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Anda telah menanda kiriman ini", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB menemui masalah ketika muat semula: \"%1\". NodeBB akan terus melayan aset pelanggan sedia ada, tapi anda seharusnya undur perbuatan yang dilakukan sebelum muat semula.", diff --git a/public/language/ms/global.json b/public/language/ms/global.json index ce75b91718..0bd9bde27d 100644 --- a/public/language/ms/global.json +++ b/public/language/ms/global.json @@ -53,6 +53,7 @@ "topics": "Topik", "posts": "Kiriman", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/ms/pages.json b/public/language/ms/pages.json index cbac1c6d7e..46ee974c6a 100644 --- a/public/language/ms/pages.json +++ b/public/language/ms/pages.json @@ -6,6 +6,7 @@ "popular-month": "Topik Popular Bulan Ini", "popular-alltime": "Topik Popular Sepanjang Masa", "recent": "Topik Baru", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Carian Pengguna", "notifications": "Makluman", "tags": "Tag", - "tag": "Topik ditag di bawwah \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Daftar Akaun", "registration-complete": "Registration complete", "login": "Log Masuk Ke Akaun Anda", diff --git a/public/language/ms/topic.json b/public/language/ms/topic.json index 5467b70702..aec78e7e27 100644 --- a/public/language/ms/topic.json +++ b/public/language/ms/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Perkakas Topik", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pinkan topik", "thread_tools.unpin": "Batalkan pin topik", "thread_tools.lock": "Kunci topik", diff --git a/public/language/nb/admin/appearance/customise.json b/public/language/nb/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/nb/admin/appearance/customise.json +++ b/public/language/nb/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/nb/admin/general/homepage.json b/public/language/nb/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/nb/admin/general/homepage.json +++ b/public/language/nb/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/nb/admin/manage/tags.json b/public/language/nb/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/nb/admin/manage/tags.json +++ b/public/language/nb/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/nb/admin/manage/users.json b/public/language/nb/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/nb/admin/manage/users.json +++ b/public/language/nb/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/nb/admin/menu.json b/public/language/nb/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/nb/admin/menu.json +++ b/public/language/nb/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/nb/admin/settings/chat.json b/public/language/nb/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/nb/admin/settings/chat.json +++ b/public/language/nb/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/nb/admin/settings/post.json b/public/language/nb/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/nb/admin/settings/post.json +++ b/public/language/nb/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/nb/admin/settings/reputation.json b/public/language/nb/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/nb/admin/settings/reputation.json +++ b/public/language/nb/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/nb/error.json b/public/language/nb/error.json index 983ae1372e..6ee7a60e37 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Vennligst spesifiser både et brukernavn og passord", "invalid-search-term": "Ugyldig søkeord", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Ryktesystemet er deaktivert.", "downvoting-disabled": "Nedstemming er deaktivert", "not-enough-reputation-to-downvote": "Du har ikke nok rykte til å nedstemme det innlegget", "not-enough-reputation-to-flag": "Du har ikke nok rykte til å flagge dette innlegget", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Du har allerede flagget dette innlegget", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB støtte på et problem under lasting på nytt: \"%1\". NodeBB vil fortsette å servere eksisterende klientside ressurser, selv om du burde angre endringene du gjorde før du lastet på nytt.", diff --git a/public/language/nb/global.json b/public/language/nb/global.json index 86fb8d7bfe..4809f55a3f 100644 --- a/public/language/nb/global.json +++ b/public/language/nb/global.json @@ -53,6 +53,7 @@ "topics": "Emner", "posts": "Innlegg", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/nb/pages.json b/public/language/nb/pages.json index bc90df31d1..3355803d11 100644 --- a/public/language/nb/pages.json +++ b/public/language/nb/pages.json @@ -6,6 +6,7 @@ "popular-month": "Populære emner denne måneden", "popular-alltime": "Mest populære emner for all tid", "recent": "Nylige emner", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Brukersøk", "notifications": "Varsler", "tags": "Emneord", - "tag": "Emner under emneord \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registrer en konto", "registration-complete": "Registration complete", "login": "Logg inn på kontoen din", diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json index 27db8ac117..18914ac170 100644 --- a/public/language/nb/topic.json +++ b/public/language/nb/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Emneverktøy", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Fest tråd", "thread_tools.unpin": "Ufest tråd", "thread_tools.lock": "Lås tråd", diff --git a/public/language/nl/admin/appearance/customise.json b/public/language/nl/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/nl/admin/appearance/customise.json +++ b/public/language/nl/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/nl/admin/general/homepage.json b/public/language/nl/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/nl/admin/general/homepage.json +++ b/public/language/nl/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/nl/admin/manage/tags.json b/public/language/nl/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/nl/admin/manage/tags.json +++ b/public/language/nl/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/nl/admin/manage/users.json b/public/language/nl/admin/manage/users.json index 9c75b17473..2b11bcf109 100644 --- a/public/language/nl/admin/manage/users.json +++ b/public/language/nl/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/nl/admin/menu.json b/public/language/nl/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/nl/admin/menu.json +++ b/public/language/nl/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/nl/admin/settings/chat.json b/public/language/nl/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/nl/admin/settings/chat.json +++ b/public/language/nl/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/nl/admin/settings/post.json b/public/language/nl/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/nl/admin/settings/post.json +++ b/public/language/nl/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/nl/admin/settings/reputation.json b/public/language/nl/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/nl/admin/settings/reputation.json +++ b/public/language/nl/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/nl/email.json b/public/language/nl/email.json index 48f35a2c6f..bd474f945e 100644 --- a/public/language/nl/email.json +++ b/public/language/nl/email.json @@ -18,7 +18,7 @@ "reset.notify.text2": "Neem onmiddellijk contact met een beheerder op wanneer je hiervoor geen toestemming hebt gegeven.", "digest.notifications": "Er zijn ongelezen notificaties van %1:", "digest.latest_topics": "De meest recente onderwerpen van %1", - "digest.cta": "Klik hier om deze website te bezoeken %1 ", + "digest.cta": "Klik hier om %1 te bezoeken ", "digest.unsub.info": "Deze samenvatting hebben we naar je verzonden omdat je dat hebt ingesteld.", "digest.no_topics": "In de afgelopen %1 zijn er geen actieve onderwerpen geweest.", "digest.day": "dag", @@ -30,7 +30,7 @@ "notif.chat.unsub.info": "Deze notificatie is verzonden vanwege de gebruikersinstellingen voor abonnementen.", "notif.post.cta": "Klik hier om het volledige bericht te lezen", "notif.post.unsub.info": "Deze notificatie is door ons verzonden vanwege gebruikersinstellingen voor abonnementen en berichten.", - "notif.cta": "Click here to go to forum", + "notif.cta": "Klik hier om naar het forum te gaan", "test.text1": "Dit is een testbericht om te verifiëren dat NodeBB de e-mailberichtservice correct heeft opgezet.", "unsub.cta": "Klik hier om deze instellingen te wijzigen", "banned.subject": "U bent verbannen van %1", diff --git a/public/language/nl/error.json b/public/language/nl/error.json index 460254c097..a35e67fa8a 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Ongeldige aanmeldingsreferenties", "invalid-username-or-password": "Geef zowel een gebruikersnaam als wachtwoord op", "invalid-search-term": "Ongeldig zoekterm", + "invalid-url": "Ongeldig web adres", "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 ", @@ -113,19 +114,24 @@ "cant-edit-chat-message": "Het is niet toegestaan om dit bericht aan te passen", "cant-remove-last-user": "Je kan de laatste gebruiker niet verwijderen", "cant-delete-chat-message": "Het is niet toegestaan om dit bericht te verwijderen", + "chat-edit-duration-expired": "Het is slechts toegestaan om binnen %1 seconde(n) na plaatsen van het chat bericht, deze te bewerken.", + "chat-delete-duration-expired": "Het is slechts toegestaan om binnen %1 seconde(n) na plaatsen van het chat bericht, deze te verwijderen.", "already-voting-for-this-post": "Je hebt al gestemd voor deze post.", "reputation-system-disabled": "Reputatie systeem is uitgeschakeld.", "downvoting-disabled": "Negatief stemmen is uitgeschakeld", "not-enough-reputation-to-downvote": "Je hebt onvoldoende reputatie om een negatieve stem uit te mogen brengen", "not-enough-reputation-to-flag": "Je hebt onvoldoende reputatie om dit bericht aan de beheerders te mogen melden", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Je hebt deze post al gerapporteerd", - "self-vote": "You cannot vote on your own post", + "self-vote": "Het is niet mogelijk om op je eigen bericht te stemmen", "reload-failed": "Tijdens het herladen van \"%1\" is NodeBB een fout of probleem tegengekomen. NodeBB blijft operationeel. Echter het is verstandig om de oorzaak te onderzoeken en wellicht de vorige actie, voor het herladen, ongedaan te maken.", "registration-error": "Fout tijdens registratie", "parse-error": "Tijdens het verwerken van het antwoord van de server is er iets misgegaan.", "wrong-login-type-email": "Gebruik je e-mailadres om in te loggen", "wrong-login-type-username": "Gebruik je gebruikersnaam om in te loggen", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", + "sso-registration-disabled": "Registratie is uitgeschakeld voor %1 accounts, registreer eerst met een e-mailadres", "invite-maximum-met": "Je heb het maximum aantal mensen uitgenodigd (%1 van de %2).", "no-session-found": "Geen login sessie gevonden!", "not-in-room": "Gebruiker niet in de chat", @@ -135,5 +141,5 @@ "invalid-home-page-route": "Onbekende homepage route", "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": "No topics selected!" + "no-topics-selected": "Geen onderwerpen geselecteerd!" } \ No newline at end of file diff --git a/public/language/nl/flags.json b/public/language/nl/flags.json index d05a5b25a8..af87085366 100644 --- a/public/language/nl/flags.json +++ b/public/language/nl/flags.json @@ -1,64 +1,64 @@ { - "state": "State", - "reporter": "Reporter", - "reported-at": "Reported At", - "description": "Description", + "state": "Status", + "reporter": "Rapporteur", + "reported-at": "Gerapporteerd op", + "description": "Beschrijving", "no-flags": "Hooray! No flags found.", - "assignee": "Assignee", - "update": "Update", - "updated": "Updated", + "assignee": "Toegekend aan", + "update": "Bijwerken", + "updated": "Bijgewerkt", "target-purged": "The content this flag referred to has been purged and is no longer available.", "quick-filters": "Quick Filters", - "filter-active": "There are one or more filters active in this list of flags", - "filter-reset": "Remove Filters", - "filters": "Filter Options", - "filter-reporterId": "Reporter UID", + "filter-active": "Er zijn een of meer filters actief in deze lijst van markeringen", + "filter-reset": "Filters verwijderen", + "filters": "Filter opties", + "filter-reporterId": "Rapporteur UID", "filter-targetUid": "Flagged UID", "filter-type": "Flag Type", - "filter-type-all": "All Content", - "filter-type-post": "Post", - "filter-state": "State", + "filter-type-all": "Alle inhoud", + "filter-type-post": "Bericht", + "filter-state": "Status", "filter-assignee": "Assignee UID", - "filter-cid": "Category", - "filter-quick-mine": "Assigned to me", - "filter-cid-all": "All categories", - "apply-filters": "Apply Filters", + "filter-cid": "Categorie", + "filter-quick-mine": "Toegewezen aan mij", + "filter-cid-all": "Alle categorieën", + "apply-filters": "Filters toepassen", "quick-links": "Quick Links", "flagged-user": "Flagged User", - "view-profile": "View Profile", - "start-new-chat": "Start New Chat", + "view-profile": "Profiel bekijken", + "start-new-chat": "Begin een nieuwe chat", "go-to-target": "View Flag Target", - "user-view": "View Profile", - "user-edit": "Edit Profile", + "user-view": "Profiel bekijken", + "user-edit": "Profiel wijzigen", "notes": "Flag Notes", - "add-note": "Add Note", - "no-notes": "No shared notes.", + "add-note": "Notitie toevoegen", + "no-notes": "Geen gedeelde notities", "history": "Flag History", "back": "Back to Flags List", "no-history": "No flag history.", - "state-all": "All states", - "state-open": "New/Open", - "state-wip": "Work in Progress", - "state-resolved": "Resolved", - "state-rejected": "Rejected", - "no-assignee": "Not Assigned", - "note-added": "Note Added", + "state-all": "Alle statussen", + "state-open": "Nieuw/Open", + "state-wip": "Wordt aan gewerkt", + "state-resolved": "Opgelost", + "state-rejected": "Afgewezen", + "no-assignee": "Niet toegewezen", + "note-added": "Notitie toegevoegd", - "modal-title": "Report Inappropriate Content", + "modal-title": "Rapporteer ongepaste content", "modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.", "modal-reason-spam": "Spam", - "modal-reason-offensive": "Offensive", - "modal-reason-other": "Other (specify below)", - "modal-reason-custom": "Reason for reporting this content...", - "modal-submit": "Submit Report", + "modal-reason-offensive": "Aanstootgevend", + "modal-reason-other": "Anders (specificeer onder)", + "modal-reason-custom": "Reden voor het rapporteren van deze content...", + "modal-submit": "Rapport verzenden", "modal-submit-success": "Content has been flagged for moderation.", - "modal-submit-confirm": "Confirm Submission", - "modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?", - "modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined." + "modal-submit-confirm": "Bevestig verzending", + "modal-submit-confirm-text": "U hebt al een aangepaste reden gegegeven. Weet u zeker dat u een wilt verzenden via quick-report?", + "modal-submit-confirm-text-help": "Verzenden van een quick-report overschrijft reeds gedefinieerde aangepaste redenen." } \ No newline at end of file diff --git a/public/language/nl/global.json b/public/language/nl/global.json index e68f931606..c1723a527d 100644 --- a/public/language/nl/global.json +++ b/public/language/nl/global.json @@ -53,6 +53,7 @@ "topics": "Onderwerpen", "posts": "Berichten", "best": "Beste", + "votes": "Stemmen", "upvoters": "Positieve stemmers", "upvoted": "Omhoog gestemd", "downvoters": "Negatieve stemmers", diff --git a/public/language/nl/notifications.json b/public/language/nl/notifications.json index c19dbaef83..78ec3289b5 100644 --- a/public/language/nl/notifications.json +++ b/public/language/nl/notifications.json @@ -9,7 +9,7 @@ "continue_to": "Door naar %1", "return_to": "Terug naar %1", "new_notification": "Nieuwe notificatie", - "new_notification_from": "You have a new Notification from %1", + "new_notification_from": "Je hebt een nieuwe notificatie van %1", "you_have_unread_notifications": "Je hebt nieuwe notificaties.", "all": "Alles", "topics": "Onderwerpen", @@ -47,18 +47,18 @@ "email-confirmed-message": "Bedankt voor het bevestigen van je e-mailadres. Je account is nu volledig geactiveerd.", "email-confirm-error-message": "Er was een probleem met het bevestigen van dit e-mailadres. Misschien is de code niet goed ingevoerd of was de beschikbare tijd inmiddels verstreken.", "email-confirm-sent": "Bevestigingsmail verstuurd.", - "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": "Geen", + "notification_only": "Alleen notificatie", + "email_only": "Alleen e-mail", + "notification_and_email": "Notificatie & e-mail", + "notificationType_upvote": "Als iemand positief stemt voor je bericht", + "notificationType_new-topic": "Wanneer iemand die jij volgt een onderwerp post", + "notificationType_new-reply": "Als een nieuwe reactie komt op een onderwerp dat je volgt", + "notificationType_follow": "Als iemand begint met jou te volgen", + "notificationType_new-chat": "Als je een chat-bericht ontvangt", + "notificationType_group-invite": "Als je een uitnodiging voor een groep ontvangt", + "notificationType_new-register": "Als iemand wordt toegevoegd aan een registratiewachtrij", + "notificationType_post-queue": "Als een bericht aan de wachtrij wordt toegevoegd", + "notificationType_new-post-flag": "Als een bericht wordt gevlagd", + "notificationType_new-user-flag": "Als een gebruiker wordt gevlagd" } \ No newline at end of file diff --git a/public/language/nl/pages.json b/public/language/nl/pages.json index 6242279540..e4b8d02d44 100644 --- a/public/language/nl/pages.json +++ b/public/language/nl/pages.json @@ -6,6 +6,7 @@ "popular-month": "De populaire onderwerpen van deze maand", "popular-alltime": "De populaire onderwerpen", "recent": "Recente onderwerpen", + "top": "Meest gestemde onderwerpen", "moderator-tools": "Moderator gereedschappen", "flagged-content": "Gemarkeerde content", "ip-blacklist": "IP zwarte lijst", @@ -19,7 +20,7 @@ "users/search": "Zoek Gebruiker", "notifications": "Notificaties", "tags": "Tags", - "tag": "Onderwerpen geplaatst onder \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registeer een gebruikersaccount", "registration-complete": "Registratie compleet", "login": "Login met u gebruikersaccount in", diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json index b1d33fd9da..d92195b74d 100644 --- a/public/language/nl/topic.json +++ b/public/language/nl/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Stuur me geen melding van nieuwe reacties.
Toon onderwerp in ongelezen mits de categorie niet genegeerd wordt.", "ignoring.description": "Stuur me geen melding van nieuwe reacties.
Toon dit onderwerp niet onder de ongelezen onderwerpen.", "thread_tools.title": "Acties", - "thread_tools.markAsUnreadForAll": "Markeer alles als ongelezen", + "thread_tools.markAsUnreadForAll": "Alles als ongelezen markeren", "thread_tools.pin": "Onderwerp vastpinnen", "thread_tools.unpin": "Onderwerp losmaken", "thread_tools.lock": "Onderwerp sluiten", @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Zeker weten dit onderwerp te herstellen?", "thread_tools.purge": "Wis onderwerp ", "thread_tools.purge_confirm": "Weet je zeker dat je dit onderwerp wil verwijderen?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Onderwerpen samenvoegen", + "thread_tools.merge": "Samenvoegen", "topic_move_success": "Verplaatsen van onderwerp naar %1 succesvol", "post_delete_confirm": "Is het absoluut de bedoeling dit bericht te verwijderen?", "post_restore_confirm": "Is het de bedoeling dit bericht te herstellen?", @@ -91,7 +91,7 @@ "fork_pid_count": "%1 bericht(en) geselecteerd", "fork_success": "Onderwerp is succesvol afgesplitst. Klik hier om het nieuwe onderwerp te zien.", "delete_posts_instruction": "Klik op de berichten die verwijderd moeten worden", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Klik op de onderwerpen die samengevoegd moeten worden", "composer.title_placeholder": "Voer hier de titel van het onderwerp in...", "composer.handle_placeholder": "Naam", "composer.discard": "Annuleren", diff --git a/public/language/nl/user.json b/public/language/nl/user.json index 6351ae8827..edcfb9bffb 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -101,11 +101,11 @@ "outgoing-message-sound": "Uitgaand bericht geluid", "notification-sound": "Notificatie geluid", "no-sound": "Geen geluid", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Notificatie frequentie voor Upvotes", + "upvote-notif-freq.all": "Alle Upvotes", + "upvote-notif-freq.everyTen": "Elke tien Upvotes", + "upvote-notif-freq.logarithmic": "Bij 10, 100, 1000...", + "upvote-notif-freq.disabled": "Uitgeschakeld", "browsing": "Instellingen voor bladeren", "open_links_in_new_tab": "Open uitgaande links naar een externe site in een nieuw tabblad", "enable_topic_searching": "Inschakelen mogelijkheid op onderwerp te kunnen zoeken", @@ -126,9 +126,9 @@ "sso.title": "Single Sign-on Services", "sso.associated": "Geassocieerd met", "sso.not-associated": "Klik hier om geassocieerd te worden met", - "sso.dissociate": "Dissociate", - "sso.dissociate-confirm-title": "Confirm Dissociation", - "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", + "sso.dissociate": "Ontkoppelen", + "sso.dissociate-confirm-title": "Bevestig ontkoppeling", + "sso.dissociate-confirm": "Weet u zeker dat u uw account wilt ontkoppelen van %1?", "info.latest-flags": "Laatste markeringen", "info.no-flags": "Geen gemarkeerde berichten gevonden", "info.ban-history": "Recente verban-geschiedenis", diff --git a/public/language/pl/admin/appearance/customise.json b/public/language/pl/admin/appearance/customise.json index 116fde835f..8cc162c784 100644 --- a/public/language/pl/admin/appearance/customise.json +++ b/public/language/pl/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Własny CSS", - "custom-css.description": "Wprowadź tu własne deklaracje CSS, będą one zastosowane po wszystkich innych stylach.", - "custom-css.enable": "Włącz własne style CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/pl/admin/general/homepage.json b/public/language/pl/admin/general/homepage.json index c80a434fa4..4713f175ce 100644 --- a/public/language/pl/admin/general/homepage.json +++ b/public/language/pl/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Wybierz stronę startową dla twojego forum.", "home-page-route": "Ścieżka strony głównej", "custom-route": "Niestandardowa Ścieżka", - "allow-user-home-pages": "Zezwalaj na strony startowe użytkowników" + "allow-user-home-pages": "Zezwalaj na strony startowe użytkowników", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/pl/admin/manage/tags.json b/public/language/pl/admin/manage/tags.json index 5f03cfad07..76846c2318 100644 --- a/public/language/pl/admin/manage/tags.json +++ b/public/language/pl/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Wybierz tagi poprzez klikanie lub przeciąganie, użyj przycisku shift do zaznaczenia wielu.", "create": "Utwórz tag", "modify": "Modyfikuj tagi", + "rename": "Rename Tags", "delete": "Usuń zaznaczone tagi", "search": "Szukanie tagów...", "settings": "Kliknij tutaj, aby odwiedzić stronę zarządzania tagami.", diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json index a3957f247b..11b8b82d2e 100644 --- a/public/language/pl/admin/manage/users.json +++ b/public/language/pl/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Zbanowany", "pills.search": "Wyszukiwanie użytkowników", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "Po nazwie użytkownika", "search.username-placeholder": "Wpisz nazwę użytkownika, aby wyszukać", "search.email": "Po adresie email", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Zresetowano blokadę (-dy)!", "alerts.flag-reset-success": "Zresetowano flagę(-gi)!", "alerts.no-remove-yourself-admin": "Nie możesz odebrać sobie samemu praw administratora.", - "alerts.make-admin-success": "Użytkownik(-cy) są teraz administratorami.", - "alerts.confirm-remove-admin": "Czy na pewno usunąć uprawnienia administracyjne?", - "alerts.remove-admin-success": "Użytkownik(-cy) nie są już administratorami.", + "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": "Czy chcesz zweryfikować email(-e) tego użytkownika (-ów)?", "alerts.validate-email-success": "Zweryfikowano adresy email", "alerts.password-reset-confirm": "Czy chcesz wysłać email (-e) resetujące hasło tego użytkownika(-ów)?", diff --git a/public/language/pl/admin/menu.json b/public/language/pl/admin/menu.json index dd9a0a33bf..209876ed64 100644 --- a/public/language/pl/admin/menu.json +++ b/public/language/pl/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Zarządzanie", "manage/categories": "Kategorie", + "manage/privileges": "Privileges", "manage/tags": "Tagi", "manage/users": "Użytkownicy", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Kolejka rejestracji", "manage/post-queue": "Kolejka postów", "manage/groups": "Grupy", diff --git a/public/language/pl/admin/settings/chat.json b/public/language/pl/admin/settings/chat.json index ec2b4f9448..f6432bd496 100644 --- a/public/language/pl/admin/settings/chat.json +++ b/public/language/pl/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administratorzy oraz moderatorzy globalni są wyjęci spod tego ograniczenia", "max-length": "Maksymalna długość wiadomości czat", "max-room-size": "Maksymalna liczba użytkowników w pokojach czatu.", - "delay": "Czas pomiędzy wiadomościami czat (w milisekundach)" + "delay": "Czas pomiędzy wiadomościami czat (w milisekundach)", + "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)" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/post.json b/public/language/pl/admin/settings/post.json index efb08114ba..1cbb47e88c 100644 --- a/public/language/pl/admin/settings/post.json +++ b/public/language/pl/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Najwięcej głosów", "sorting.most-posts": "Najwięcej postów", "sorting.topic-default": "Domyślne sortowanie tematów", + "length": "Post Length", "restrictions": "Ograniczenia pisania", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Włącz kolejkę postów", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Włączenie kolejki postów będzie dodawało posty nowych użytkowników do kolejki w celu zatwierdzenia.", - "restrictions.seconds-between": "Sekund pomiędzy postami", - "restrictions.seconds-between-new": "Sekund pomiędzy postami dla nowych użytkowników", - "restrictions.rep-threshold": "Próg reputacji powyżej, którego restrykcja jest zdjęta", + "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": "Sekundy, po których nowy użytkownik może wysyłać posty", - "restrictions.seconds-edit-after": "Liczba sekund, przez które użytkownicy mogą edytować post po jego wysłaniu (0 wyłącza).", - "restrictions.seconds-delete-after": "Liczba sekund przez, które użytkownicy mogą skasować post po jego wysłaniu (0 wyłącza).", + "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": "Liczba odpowiedzi, po których użytkownicy nie mogą edytować własnych tematów (0 wyłącza).", "restrictions.min-title-length": "Minimalna długość tematu", "restrictions.max-title-length": "Maksymalna długość tematu", "restrictions.min-post-length": "Minimalna długość posta", "restrictions.max-post-length": "Maksymalna długość posta", - "restrictions.days-until-stale": "Dni, po których temat jest uznawany za przeterminowany", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "Jeśli temat jest uznawany za \"przeterminowany\", wtedy użytkownikom próbującym na niego odpowiedzieć wyświetli się stosowany komunikat.", "timestamp": "Znacznik czasowy", "timestamp.cut-off": "Termin odcięcia (w dniach)", diff --git a/public/language/pl/admin/settings/reputation.json b/public/language/pl/admin/settings/reputation.json index 7be597f408..3a094d358b 100644 --- a/public/language/pl/admin/settings/reputation.json +++ b/public/language/pl/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Wszystkie głosy są publiczne", "thresholds": "Progi aktywności", "min-rep-downvote": "Minimalna reputacja, aby negatywnie oceniać posty", - "min-rep-flag": "Minimalna reputacja, aby flagować posty" + "min-rep-flag": "Minimalna reputacja, aby flagować posty", + "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" } \ No newline at end of file diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 4be7c3d177..1d1e69cc59 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Niewłaściwe dane logowania", "invalid-username-or-password": "Proszę podać nazwę użytkownika i hasło", "invalid-search-term": "Błędne wyszukiwane wyrażenie", + "invalid-url": "Invalid URL", "csrf-invalid": "Nie mogliśmy cię zalogować. Zapewne przyczyną jest wygasła sesja. Proszę spróbować ponownie.", "invalid-pagination-value": "Błędna wartość paginacji, zakres od %1 do %2", "username-taken": "Login zajęty", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Nie jesteś upoważniony do edycji tej wiadomości", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "Nie jesteś upoważniony do usunięcia tej wiadomości", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Już zagłosowałeś na ten post", "reputation-system-disabled": "System reputacji jest wyłączony.", "downvoting-disabled": "Negatywna ocena postów jest wyłączona", "not-enough-reputation-to-downvote": "Masz za mało reputacji, aby negatywnie ocenić ten post", "not-enough-reputation-to-flag": "Nie masz dość reputacji, by flagować ten post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Ten post jest już przez Ciebie oznaczony", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB napotkało problem w czasie przeładowywania \"%1\". Forum będzie nadal dostarczać istniejące zasoby strony klienta, jednak powinieneś cofnąć ostatnią akcję.", diff --git a/public/language/pl/global.json b/public/language/pl/global.json index 5a7de4a3ce..5c218462b1 100644 --- a/public/language/pl/global.json +++ b/public/language/pl/global.json @@ -53,6 +53,7 @@ "topics": "Tematy", "posts": "Posty", "best": "Najlepsze", + "votes": "Votes", "upvoters": "Głosujący za", "upvoted": "Oddane głosy za", "downvoters": "Głosujący przeciw", diff --git a/public/language/pl/pages.json b/public/language/pl/pages.json index fbdffce138..051ee072ff 100644 --- a/public/language/pl/pages.json +++ b/public/language/pl/pages.json @@ -6,6 +6,7 @@ "popular-month": "Tematy popularne w tym miesiącu", "popular-alltime": "Wszystkie popularne tematy", "recent": "Ostatnie tematy", + "top": "Top Voted Topics", "moderator-tools": "Narzędzia dla moderatorów", "flagged-content": "Treść oflagowanego posta", "ip-blacklist": "Czarna lista adresów IP", @@ -19,7 +20,7 @@ "users/search": "Wyszukiwanie Użytkownków", "notifications": "Powiadomienia", "tags": "Tagi", - "tag": "Tematy oznaczone jako \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Utwórz konto", "registration-complete": "Rejestracja przebiegła pomyślnie", "login": "Zaloguj się na swoje konto", diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json index e3fd7d49fe..29c06c285d 100644 --- a/public/language/pl/topic.json +++ b/public/language/pl/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Nie informuj mnie o nowych odpowiedziach
Pokazuj temat w nieprzeczytanych, jeśli kategoria nie jest ignorowana.", "ignoring.description": "Nie informuj mnie o nowych odpowiedziach.
Nie pokazuj tematu w nieprzeczytanych.", "thread_tools.title": "Narzędzia tematu", - "thread_tools.markAsUnreadForAll": "Zaznacz wszystkie jako nieprzeczytane", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Przypnij temat", "thread_tools.unpin": "Odepnij temat", "thread_tools.lock": "Zablokuj temat", diff --git a/public/language/pt-BR/admin/appearance/customise.json b/public/language/pt-BR/admin/appearance/customise.json index df52770144..7a1a264dc1 100644 --- a/public/language/pt-BR/admin/appearance/customise.json +++ b/public/language/pt-BR/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "CSS Personalizado", - "custom-css.description": "Entre com as suas próprias declarações de CSS aqui, as quais serão aplicadas após todos os outros estilos.", - "custom-css.enable": "Habilitar CSS Personalizado", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/pt-BR/admin/general/homepage.json b/public/language/pt-BR/admin/general/homepage.json index 816145eb0a..8e57255fd1 100644 --- a/public/language/pt-BR/admin/general/homepage.json +++ b/public/language/pt-BR/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Escolha qual página será mostrada quando usuários navegarem para a URL raíz do seu fórum.", "home-page-route": "Rota da Página Inicial", "custom-route": "Rota Personalizada", - "allow-user-home-pages": "Permitir Home Pages de Usuários" + "allow-user-home-pages": "Permitir Home Pages de Usuários", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/pt-BR/admin/manage/tags.json b/public/language/pt-BR/admin/manage/tags.json index 4bf5b27a3e..0238b8b673 100644 --- a/public/language/pt-BR/admin/manage/tags.json +++ b/public/language/pt-BR/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Escolha tags clicando e/ou arrastando, use shift para escolher diversas.", "create": "Criar Tag", "modify": "Modificar Tags", + "rename": "Rename Tags", "delete": "Excluir Tags Selecionadas", "search": "Pesquisar por tags...", "settings": "Clique aqui para visitar a página de configurações de tag.", diff --git a/public/language/pt-BR/admin/manage/users.json b/public/language/pt-BR/admin/manage/users.json index f551a52569..dddb844840 100644 --- a/public/language/pt-BR/admin/manage/users.json +++ b/public/language/pt-BR/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Banido", "pills.search": "Pesquisa de Usuários", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "Por Nome de Usuário", "search.username-placeholder": "Entre com um nome de usuário para pesquisar", "search.email": "Por Email", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Trancamento(s) excluídos!", "alerts.flag-reset-success": "Sinalização(ões) excluída(s)!", "alerts.no-remove-yourself-admin": "Você não pode remover a si mesmo como Administrador!", - "alerts.make-admin-success": "Usuário(s) agora são administradores.", - "alerts.confirm-remove-admin": "Você realmente deseja remover admins?", - "alerts.remove-admin-success": "Usuário(s) não são mais administradores.", + "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": "Você deseja validar o(s) email(s) deste(s) usuário(s)?", "alerts.validate-email-success": "Emails validados", "alerts.password-reset-confirm": "Você quer enviar email(s) de redefinição de senha para este(s) usuário(s)?", diff --git a/public/language/pt-BR/admin/menu.json b/public/language/pt-BR/admin/menu.json index fe4800c8f5..a200fa4bd4 100644 --- a/public/language/pt-BR/admin/menu.json +++ b/public/language/pt-BR/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Administrar", "manage/categories": "Categorias", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Usuários", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Fila de Registro", "manage/post-queue": "Fileira da Posts", "manage/groups": "Grupos", diff --git a/public/language/pt-BR/admin/settings/chat.json b/public/language/pt-BR/admin/settings/chat.json index 07b632be45..2a26937e11 100644 --- a/public/language/pt-BR/admin/settings/chat.json +++ b/public/language/pt-BR/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administradores e moderadores globais estão isentos desta restrição", "max-length": "Tamanho máximo das mensagens de chat", "max-room-size": "Número máximo de usuários nas salas de chat", - "delay": "Tempo entre mensagens de chat em milisegundos" + "delay": "Tempo entre mensagens de chat em milisegundos", + "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)" } \ No newline at end of file diff --git a/public/language/pt-BR/admin/settings/post.json b/public/language/pt-BR/admin/settings/post.json index eb0db578ba..fa653ce7cd 100644 --- a/public/language/pt-BR/admin/settings/post.json +++ b/public/language/pt-BR/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Mais Votos", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Ordenação Padrão de Tópicos", + "length": "Post Length", "restrictions": "Restições de Postagem", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Ligar enfileiramento de posts", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Ligar o enfieiramento de posts colocará os posts de novos usuários numa fia por aprovação.", - "restrictions.seconds-between": "Segundos entre Posts", - "restrictions.seconds-between-new": "Segundos entre Posts para Novos Usuários", - "restrictions.rep-threshold": "O tanto de reputação necessário para esta restrição ser retirada", + "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": "Segundos antes que um novo usuário possa postar", - "restrictions.seconds-edit-after": "Número de segundos que os usuários são permitidos de editar posts apos postarem. (0 desligado)", - "restrictions.seconds-delete-after": "Número de segundos que os usuários são permitidos de deletar posts após postarem. (0 desligado)", + "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": "Número de respostas após o qual os usuários são impedidos de excluir seus próprios tópicos. (0 desligado)", "restrictions.min-title-length": "Tamanho Mínimo dos Títulos", "restrictions.max-title-length": "Tamanho Máximo dos Títulos", "restrictions.min-post-length": "Tamanho Mínimo dos Posts", "restrictions.max-post-length": "Tamanho Máximo dos Posts", - "restrictions.days-until-stale": "Dias até que o Tópico seja considerado antigo", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "Se um tópico é considerado \"antigo\", então um aviso será exibido aos usuários que tentarem responder àquele tópico.", "timestamp": "Timestamp", "timestamp.cut-off": "Data de corte (em dias)", diff --git a/public/language/pt-BR/admin/settings/reputation.json b/public/language/pt-BR/admin/settings/reputation.json index 3dbd88f69b..d90317f1c8 100644 --- a/public/language/pt-BR/admin/settings/reputation.json +++ b/public/language/pt-BR/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Todos os Votos São Públicos", "thresholds": "Limiares de Atividade", "min-rep-downvote": "Reputação mínima para votar negativamente em posts", - "min-rep-flag": "Reputação mínima para sinalizar posts" + "min-rep-flag": "Reputação mínima para sinalizar posts", + "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" } \ No newline at end of file diff --git a/public/language/pt-BR/error.json b/public/language/pt-BR/error.json index 982acd0441..5f7373fb2a 100644 --- a/public/language/pt-BR/error.json +++ b/public/language/pt-BR/error.json @@ -17,6 +17,7 @@ "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Você não tem permissão para editar esta mensagem", "cant-remove-last-user": "Você não pode excluir o último usuário", "cant-delete-chat-message": "Você não possui permissão para deletar esta mensagem", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Você já votou neste post.", "reputation-system-disabled": "O sistema de reputação está desabilitado.", "downvoting-disabled": "Negativação está desabilitada", "not-enough-reputation-to-downvote": "Você não possui reputação suficiente para negativar este post", "not-enough-reputation-to-flag": "Você não possui reputação suficiente para sinalizar este post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Você já sinalizou esse post", "self-vote": "You cannot vote on your own post", "reload-failed": "O NodeBB encontrou um problema ao recarregar: \"%1\". O NodeBB continuará a servir os assets existentes no lado do cliente, apesar de que você deve desfazer o que você fez antes de recarregar.", diff --git a/public/language/pt-BR/global.json b/public/language/pt-BR/global.json index 57cfa84c16..c46021f798 100644 --- a/public/language/pt-BR/global.json +++ b/public/language/pt-BR/global.json @@ -53,6 +53,7 @@ "topics": "Tópicos", "posts": "Posts", "best": "Melhor", + "votes": "Votes", "upvoters": "Votos positivos", "upvoted": "Votou positivamente", "downvoters": "Votos negativos", diff --git a/public/language/pt-BR/pages.json b/public/language/pt-BR/pages.json index 2112195497..79decd6e4f 100644 --- a/public/language/pt-BR/pages.json +++ b/public/language/pt-BR/pages.json @@ -6,6 +6,7 @@ "popular-month": "Tópicos populares deste mês", "popular-alltime": "Tópicos populares de todos os tempos", "recent": "Tópicos Recentes", + "top": "Top Voted Topics", "moderator-tools": "Ferramentas de Moderação", "flagged-content": "Conteúdo Sinalizado", "ip-blacklist": "Lista negra de IPs", @@ -19,7 +20,7 @@ "users/search": "Pesquisa de Usuários", "notifications": "Notificações", "tags": "Tags", - "tag": "Tópicos com a tag \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registrar uma conta", "registration-complete": "Registro completado", "login": "Entrar na sua conta", diff --git a/public/language/pt-BR/topic.json b/public/language/pt-BR/topic.json index def9099360..fde744a9de 100644 --- a/public/language/pt-BR/topic.json +++ b/public/language/pt-BR/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Não me notificar de novas respostas.
Mostrar tópico em não-lido se a categoria não estiver sendo ignorada.", "ignoring.description": "Não me notificar de novas respostas.
Não mostrar tópico em não-lido.", "thread_tools.title": "Ferramentas de Tópico", - "thread_tools.markAsUnreadForAll": "Marcar como não-lido para todos", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Fixar Tópico", "thread_tools.unpin": "Desfixar Tópico", "thread_tools.lock": "Trancar Tópico", diff --git a/public/language/pt-PT/admin/appearance/customise.json b/public/language/pt-PT/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/pt-PT/admin/appearance/customise.json +++ b/public/language/pt-PT/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/pt-PT/admin/general/homepage.json b/public/language/pt-PT/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/pt-PT/admin/general/homepage.json +++ b/public/language/pt-PT/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/pt-PT/admin/manage/tags.json b/public/language/pt-PT/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/pt-PT/admin/manage/tags.json +++ b/public/language/pt-PT/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/pt-PT/admin/manage/users.json b/public/language/pt-PT/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/pt-PT/admin/manage/users.json +++ b/public/language/pt-PT/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/pt-PT/admin/menu.json b/public/language/pt-PT/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/pt-PT/admin/menu.json +++ b/public/language/pt-PT/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/pt-PT/admin/settings/chat.json b/public/language/pt-PT/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/pt-PT/admin/settings/chat.json +++ b/public/language/pt-PT/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/pt-PT/admin/settings/post.json b/public/language/pt-PT/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/pt-PT/admin/settings/post.json +++ b/public/language/pt-PT/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/pt-PT/admin/settings/reputation.json b/public/language/pt-PT/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/pt-PT/admin/settings/reputation.json +++ b/public/language/pt-PT/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/pt-PT/error.json b/public/language/pt-PT/error.json index d0f7fff518..75c51cdf54 100644 --- a/public/language/pt-PT/error.json +++ b/public/language/pt-PT/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Não tens permissão para editar esta mensagem", "cant-remove-last-user": "Não podes remover o último utilizador", "cant-delete-chat-message": "Não tens permissão para eliminar esta mensagem", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Já votaste nesta publicação.", "reputation-system-disabled": "Sistema de reputação desativado.", "downvoting-disabled": "Voto negativo desativado", "not-enough-reputation-to-downvote": "Não tens reputação suficiente para atribuir um voto negativo a esta publicação", "not-enough-reputation-to-flag": "Não tens reputação suficiente para sinalizar esta publicação", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Já sinalizaste esta publicação", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encontrou um erro enquanto recarregava: \"%1\". NodeBB irá continuar a servir os ativos existentes do lado do utilizador. No entanto deverias desfazer o que fizeste mesmo antes de teres voltado a recarregar.", diff --git a/public/language/pt-PT/global.json b/public/language/pt-PT/global.json index 8a40b20a00..c9080f4215 100644 --- a/public/language/pt-PT/global.json +++ b/public/language/pt-PT/global.json @@ -53,6 +53,7 @@ "topics": "Tópicos", "posts": "Publicações", "best": "Melhores", + "votes": "Votes", "upvoters": "Votantes a favor", "upvoted": "Votado favoravelmente", "downvoters": "Votantes contra", diff --git a/public/language/pt-PT/pages.json b/public/language/pt-PT/pages.json index 5d27f5c674..635a2c7eb1 100644 --- a/public/language/pt-PT/pages.json +++ b/public/language/pt-PT/pages.json @@ -6,6 +6,7 @@ "popular-month": "Tópicos populares este mês", "popular-alltime": "Tópicos populares desde sempre", "recent": "Tópicos recentes", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "Lista negra de IPs", @@ -19,7 +20,7 @@ "users/search": "Pesquisa por utilizadores", "notifications": "Notificações", "tags": "Marcadores", - "tag": "Tópicos marcados sobre \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registar uma conta", "registration-complete": "Registro completo", "login": "Faz login na tua conta", diff --git a/public/language/pt-PT/topic.json b/public/language/pt-PT/topic.json index fb2ea14eee..a625959969 100644 --- a/public/language/pt-PT/topic.json +++ b/public/language/pt-PT/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Não me notificar de novas respostas.
Mostrar tópico em \"não lidos\" se a categoria não está ignorada.", "ignoring.description": "Não me notificar de novas respostas.
Não mostrar este tópico em \"não lidos\".", "thread_tools.title": "Ferramentas de tópicos", - "thread_tools.markAsUnreadForAll": "Marcar todas como não lidas", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Fixar tópico", "thread_tools.unpin": "Desafixar tópico", "thread_tools.lock": "Bloquear tópico", diff --git a/public/language/ro/admin/appearance/customise.json b/public/language/ro/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/ro/admin/appearance/customise.json +++ b/public/language/ro/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/ro/admin/general/homepage.json b/public/language/ro/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/ro/admin/general/homepage.json +++ b/public/language/ro/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/ro/admin/manage/tags.json b/public/language/ro/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/ro/admin/manage/tags.json +++ b/public/language/ro/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/ro/admin/manage/users.json b/public/language/ro/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/ro/admin/manage/users.json +++ b/public/language/ro/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/ro/admin/menu.json b/public/language/ro/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/ro/admin/menu.json +++ b/public/language/ro/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/ro/admin/settings/chat.json b/public/language/ro/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/ro/admin/settings/chat.json +++ b/public/language/ro/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/ro/admin/settings/post.json b/public/language/ro/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/ro/admin/settings/post.json +++ b/public/language/ro/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/ro/admin/settings/reputation.json b/public/language/ro/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/ro/admin/settings/reputation.json +++ b/public/language/ro/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/ro/error.json b/public/language/ro/error.json index 8b57f80498..f32d8fd74f 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Sistemul de reputație este dezactivat.", "downvoting-disabled": "Votarea negativă este dezactivată", "not-enough-reputation-to-downvote": "Nu ai destulă reputație pentru a vota negativ acest post.", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB a întâmpinat o problemă la reîncarcare: \"%1\". NodeBB va continua să servească fișierele existente pentru partea-client, dar tu va trebuie să refaci modificările pe care le-ai facut înainte de reîncarcare.", diff --git a/public/language/ro/global.json b/public/language/ro/global.json index f4b463beb1..7f76b74481 100644 --- a/public/language/ro/global.json +++ b/public/language/ro/global.json @@ -53,6 +53,7 @@ "topics": "Subiecte", "posts": "Mesaje", "best": "Cel mai bun", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/ro/pages.json b/public/language/ro/pages.json index a85a6ddbd7..7324e850c5 100644 --- a/public/language/ro/pages.json +++ b/public/language/ro/pages.json @@ -6,6 +6,7 @@ "popular-month": "Subiecte populare în luna asta", "popular-alltime": "All time popular topics", "recent": "Subiecte Noi", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Notificări", "tags": "Taguri", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Înregistrează un cont nou", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/ro/topic.json b/public/language/ro/topic.json index fe89ee4244..e198cacc69 100644 --- a/public/language/ro/topic.json +++ b/public/language/ro/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Unelte pentru subiecte", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pin Subiect", "thread_tools.unpin": "Unpin Subiect", "thread_tools.lock": "Închide Subiect", diff --git a/public/language/ru/admin/appearance/customise.json b/public/language/ru/admin/appearance/customise.json index 4ae01c2012..275ad2b36c 100644 --- a/public/language/ru/admin/appearance/customise.json +++ b/public/language/ru/admin/appearance/customise.json @@ -1,9 +1,9 @@ { - "custom-css": "Свой CSS", - "custom-css.description": "Введите свои собственные данные CSS здесь, которые будут применяться после всех других стилей.", - "custom-css.enable": "Включить пользовательский CSS", + "custom-css": "Custom 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-js": "Custom Javascript", + "custom-js": "Каcтомный 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", diff --git a/public/language/ru/admin/general/homepage.json b/public/language/ru/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/ru/admin/general/homepage.json +++ b/public/language/ru/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/ru/admin/manage/registration.json b/public/language/ru/admin/manage/registration.json index feb44fc50a..d066d7090c 100644 --- a/public/language/ru/admin/manage/registration.json +++ b/public/language/ru/admin/manage/registration.json @@ -1,20 +1,20 @@ { "queue": "Queue", - "description": "There are no users in the registration queue.
To enable this feature, go to Settings → User → User Registration and set Registration Type to \"Admin Approval\".", + "description": "В очереди регистраций нет пользователей.
Чтобы включить эту возможность перейдите в Настройки &arr; Пользователь &arr; Регистрация пользователя и задайте Тип регистрации как \"Подтверждение администратором\"", - "list.name": "Name", + "list.name": "Имя", "list.email": "Email", "list.ip": "IP", - "list.time": "Time", + "list.time": "Время", "list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3", "list.email-spam": "Frequency: %1 Appears: %2", "list.ip-spam": "Frequency: %1 Appears: %2", - "invitations": "Invitations", + "invitations": "Приглашения", "invitations.description": "Ниже приведен полный список отправленных приглашений. Для поиска по списку по электронной почте или имени пользователя используйте сочетание клавиш CTRL+F . < br > < br > Имена пользователей, которые приняли приглашение, будут отображаться справа от электронной почты.", - "invitations.inviter-username": "Inviter Username", - "invitations.invitee-email": "Invitee Email", - "invitations.invitee-username": "Invitee Username (if registered)", + "invitations.inviter-username": "Имя пользователя приглашенного", + "invitations.invitee-email": "Email приглашенного", + "invitations.invitee-username": "Имя пользователя приглашенного (если зарегистрирован)", - "invitations.confirm-delete": "Are you sure you wish to delete this invitation?" + "invitations.confirm-delete": "Вы уверены, что хотите удалить это приглашение" } \ No newline at end of file diff --git a/public/language/ru/admin/manage/tags.json b/public/language/ru/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/ru/admin/manage/tags.json +++ b/public/language/ru/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/ru/admin/manage/users.json b/public/language/ru/admin/manage/users.json index 0af260521a..31ab48bbbb 100644 --- a/public/language/ru/admin/manage/users.json +++ b/public/language/ru/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/ru/admin/menu.json b/public/language/ru/admin/menu.json index 0178029256..fa747687f6 100644 --- a/public/language/ru/admin/menu.json +++ b/public/language/ru/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Управление", "manage/categories": "Категории", + "manage/privileges": "Privileges", "manage/tags": "Теги", "manage/users": "Пользователи", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Очередь на регистрацию", "manage/post-queue": "Post Queue", "manage/groups": "Группы", diff --git a/public/language/ru/admin/settings/chat.json b/public/language/ru/admin/settings/chat.json index 93a929ca20..a5d73430ce 100644 --- a/public/language/ru/admin/settings/chat.json +++ b/public/language/ru/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/ru/admin/settings/post.json b/public/language/ru/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/ru/admin/settings/post.json +++ b/public/language/ru/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/ru/admin/settings/reputation.json b/public/language/ru/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/ru/admin/settings/reputation.json +++ b/public/language/ru/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/ru/error.json b/public/language/ru/error.json index 42b8edb9e9..e46a905f5e 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Пожалуйста, укажите имя пользователя и пароль", "invalid-search-term": "Неверный поисковой запрос", + "invalid-url": "Invalid URL", "csrf-invalid": "Нам не удалось вас найти из-за просроченной сессии. Попробуйте ещё раз.", "invalid-pagination-value": "Неверно указан номер страницы. Значение должно быть в диапазоне от %1 до %2", "username-taken": "Участник с таким именем пользователя уже зарегистрирован. Пожалуйста, выберите другое имя пользователя.", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "К сожалению, у вас нет доступа для редактирования этого сообщения", "cant-remove-last-user": "Удалить последнего участника невозможно.", "cant-delete-chat-message": "К сожалению, у вас нет доступа для удаления этого сообщения", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Спасибо, вы уже проголосовали за это сообщение.", "reputation-system-disabled": "Система репутации отключена.", "downvoting-disabled": "Понижение оценки отключено", "not-enough-reputation-to-downvote": "У вас недостаточно репутации для понижения оценки сообщения", "not-enough-reputation-to-flag": "У Вас недостаточно репутации, чтобы пометить это сообщение.", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Вы уже отметили это сообщение", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB обнаружил проблему при перезагрузке: \"%1\". NodeBB продолжит работать с существующими ресурсами клиента, но вы должны отменить то, что сделали перед перезагрузкой.", diff --git a/public/language/ru/global.json b/public/language/ru/global.json index 5812ee446d..3bb8473b2c 100644 --- a/public/language/ru/global.json +++ b/public/language/ru/global.json @@ -53,6 +53,7 @@ "topics": "Темы", "posts": "Записи", "best": "Лучшие", + "votes": "Votes", "upvoters": "Кому понравилось", "upvoted": "Понравилось", "downvoters": "Кому не понравилось", diff --git a/public/language/ru/pages.json b/public/language/ru/pages.json index 3cf542ead3..7eabfad92f 100644 --- a/public/language/ru/pages.json +++ b/public/language/ru/pages.json @@ -6,6 +6,7 @@ "popular-month": "Популярные темы этого месяца", "popular-alltime": "Популярные темы за всё время", "recent": "Последние темы", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "Чёрный список IP", @@ -19,7 +20,7 @@ "users/search": "Поиск участников", "notifications": "Уведомления", "tags": "Метки", - "tag": "Темы с меткой \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Зарегистрироваться", "registration-complete": "Регистрация завершена", "login": "Войти", diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json index 84aa1fa724..777e81e154 100644 --- a/public/language/ru/topic.json +++ b/public/language/ru/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Не уведомлять меня о новых ответах.
Показать тему в непрочитанных, если категория мной не игнорируется.", "ignoring.description": "Не уведомлять меня о новых ответах.
Не отображать тему в непрочитанных.", "thread_tools.title": "Настройки темы", - "thread_tools.markAsUnreadForAll": "Отметить все записи непрочитанными", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Прикрепить тему", "thread_tools.unpin": "Открепить тему", "thread_tools.lock": "Закрыть тему", diff --git a/public/language/rw/admin/appearance/customise.json b/public/language/rw/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/rw/admin/appearance/customise.json +++ b/public/language/rw/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/rw/admin/general/homepage.json b/public/language/rw/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/rw/admin/general/homepage.json +++ b/public/language/rw/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/rw/admin/manage/tags.json b/public/language/rw/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/rw/admin/manage/tags.json +++ b/public/language/rw/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/rw/admin/manage/users.json b/public/language/rw/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/rw/admin/manage/users.json +++ b/public/language/rw/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/rw/admin/menu.json b/public/language/rw/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/rw/admin/menu.json +++ b/public/language/rw/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/rw/admin/settings/chat.json b/public/language/rw/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/rw/admin/settings/chat.json +++ b/public/language/rw/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/rw/admin/settings/post.json b/public/language/rw/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/rw/admin/settings/post.json +++ b/public/language/rw/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/rw/admin/settings/reputation.json b/public/language/rw/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/rw/admin/settings/reputation.json +++ b/public/language/rw/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/rw/error.json b/public/language/rw/error.json index 2cce2ebf54..6424d2514e 100644 --- a/public/language/rw/error.json +++ b/public/language/rw/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Tanga izina ukoresha n'ijambobanga", "invalid-search-term": "Icyashatswe nticyemewe", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Ibijyanye n'itangwa ry'amanota ntibyemerewe. ", "downvoting-disabled": "Kwambura amanota ntibyemerewe", "not-enough-reputation-to-downvote": "Ntabwo ufite amanota ahagije ngo ube wakwemererwa kugira uwo wambura amanota", "not-enough-reputation-to-flag": "Ntabwo ufite amanota ahagije ngo ube wakwemererwa gutambikana uyu muntu", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Wari waramaze gutambikana ibi", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB yahuye n'ingorane mu gihe cy'ipakira: \"%1\". NodeBB irakomeza kuzana ibyo yari ifite ku ruhande rw'imbere nubwo ufite kuba wasubira inyuma ugafata ibyo wari wakoze mbere yo gupakira. ", diff --git a/public/language/rw/global.json b/public/language/rw/global.json index fcba501d31..9422f4e127 100644 --- a/public/language/rw/global.json +++ b/public/language/rw/global.json @@ -53,6 +53,7 @@ "topics": "Ibiganiro", "posts": "Ibyashyizweho", "best": "Byiza", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Byakunzwe", "downvoters": "Downvoters", diff --git a/public/language/rw/pages.json b/public/language/rw/pages.json index 70346071b5..06c69fe27a 100644 --- a/public/language/rw/pages.json +++ b/public/language/rw/pages.json @@ -6,6 +6,7 @@ "popular-month": "Ibiganiro bikunzwe uku kwezi", "popular-alltime": "Ibiganiro byakunzwe ibihe byose", "recent": "Ibiganiro Biheruka", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Gushaka Abantu", "notifications": "Amatangazo", "tags": "Ibimenyetso", - "tag": "Ibiganiro bifite ibimenyetso bya \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Fungura Konte", "registration-complete": "Registration complete", "login": "Injira muri konte yawe", diff --git a/public/language/rw/topic.json b/public/language/rw/topic.json index c01bbf1dd1..c05b47832d 100644 --- a/public/language/rw/topic.json +++ b/public/language/rw/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Ibikoresho by'Ikiganiro", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Zamura Ikiganiro", "thread_tools.unpin": "Manura Ikiganiro", "thread_tools.lock": "Fungirana Ikiganiro", diff --git a/public/language/sc/admin/appearance/customise.json b/public/language/sc/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/sc/admin/appearance/customise.json +++ b/public/language/sc/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/sc/admin/general/homepage.json b/public/language/sc/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/sc/admin/general/homepage.json +++ b/public/language/sc/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/sc/admin/manage/tags.json b/public/language/sc/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/sc/admin/manage/tags.json +++ b/public/language/sc/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/sc/admin/manage/users.json b/public/language/sc/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/sc/admin/manage/users.json +++ b/public/language/sc/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/sc/admin/menu.json b/public/language/sc/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/sc/admin/menu.json +++ b/public/language/sc/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/sc/admin/settings/chat.json b/public/language/sc/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/sc/admin/settings/chat.json +++ b/public/language/sc/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/sc/admin/settings/post.json b/public/language/sc/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/sc/admin/settings/post.json +++ b/public/language/sc/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/sc/admin/settings/reputation.json b/public/language/sc/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/sc/admin/settings/reputation.json +++ b/public/language/sc/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/sc/error.json b/public/language/sc/error.json index a986e97f0f..282b07f9e1 100644 --- a/public/language/sc/error.json +++ b/public/language/sc/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Please specify both a username and password", "invalid-search-term": "Invalid search term", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "You are not allowed to edit this message", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "You are not allowed to delete this message", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "You have already voted for this post.", "reputation-system-disabled": "Reputation system is disabled.", "downvoting-disabled": "Downvoting is disabled", "not-enough-reputation-to-downvote": "You do not have enough reputation to downvote this post", "not-enough-reputation-to-flag": "You do not have enough reputation to flag this post", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "You have already flagged this post", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", diff --git a/public/language/sc/global.json b/public/language/sc/global.json index 26e9d5382a..3ca4dc9ac6 100644 --- a/public/language/sc/global.json +++ b/public/language/sc/global.json @@ -53,6 +53,7 @@ "topics": "Topics", "posts": "Arresonos", "best": "Best", + "votes": "Votes", "upvoters": "Upvoters", "upvoted": "Upvoted", "downvoters": "Downvoters", diff --git a/public/language/sc/pages.json b/public/language/sc/pages.json index a1c9b475ee..52ce7479f6 100644 --- a/public/language/sc/pages.json +++ b/public/language/sc/pages.json @@ -6,6 +6,7 @@ "popular-month": "Popular topics this month", "popular-alltime": "All time popular topics", "recent": "Ùrtimas Arresonadas", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "User Search", "notifications": "Notìficas", "tags": "Tags", - "tag": "Topics tagged under \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Register an account", "registration-complete": "Registration complete", "login": "Login to your account", diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json index 3074f4b2f0..d49f721672 100644 --- a/public/language/sc/topic.json +++ b/public/language/sc/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Do not notify me of new replies.
Show topic in unread if category is not ignored.", "ignoring.description": "Do not notify me of new replies.
Do not show topic in unread.", "thread_tools.title": "Topic Tools", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pone in evidèntzia s'Arresonda", "thread_tools.unpin": "Boga dae s'Evidèntzia s'Arresonasa", "thread_tools.lock": "Bloca Arresonada", diff --git a/public/language/sk/admin/appearance/customise.json b/public/language/sk/admin/appearance/customise.json index 645165e105..56c11a2805 100644 --- a/public/language/sk/admin/appearance/customise.json +++ b/public/language/sk/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Vlastné CSS", - "custom-css.description": "Zadajte svoje vlastné deklarácie CSS, ktoré budú použité po všetkých ostatných štýloch.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/sk/admin/general/homepage.json b/public/language/sk/admin/general/homepage.json index 23c407427f..80686a71ca 100644 --- a/public/language/sk/admin/general/homepage.json +++ b/public/language/sk/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Vyberte, akú stránku sa zobrazí, keď sa používatelia dostanú do koreňovej adresy URL vášho fóra.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/sk/admin/manage/tags.json b/public/language/sk/admin/manage/tags.json index c0a40543f2..e6167a6502 100644 --- a/public/language/sk/admin/manage/tags.json +++ b/public/language/sk/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Select tags via clicking and/or dragging, use shift to select multiple.", "create": "Create Tag", "modify": "Modify Tags", + "rename": "Rename Tags", "delete": "Odstrániť vybraté značky", "search": "Search for tags...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/sk/admin/manage/users.json b/public/language/sk/admin/manage/users.json index fd4759f507..2637f3ca4a 100644 --- a/public/language/sk/admin/manage/users.json +++ b/public/language/sk/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Lockout(s) reset!", "alerts.flag-reset-success": "Príznak(y) boli obnovené!", "alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", - "alerts.make-admin-success": "User(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/sk/admin/menu.json b/public/language/sk/admin/menu.json index d612ad497a..d0beeda98e 100644 --- a/public/language/sk/admin/menu.json +++ b/public/language/sk/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/sk/admin/settings/chat.json b/public/language/sk/admin/settings/chat.json index 5e18c78f52..2d629d274a 100644 --- a/public/language/sk/admin/settings/chat.json +++ b/public/language/sk/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/sk/admin/settings/post.json b/public/language/sk/admin/settings/post.json index 4cff3ca723..232c6ed099 100644 --- a/public/language/sk/admin/settings/post.json +++ b/public/language/sk/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Najviac hlasov", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/sk/admin/settings/reputation.json b/public/language/sk/admin/settings/reputation.json index 61086436b7..8f16ea635b 100644 --- a/public/language/sk/admin/settings/reputation.json +++ b/public/language/sk/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Všetky hlasy sú verejné", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimálna reputácia pre označenie prízpevku" + "min-rep-flag": "Minimálna reputácia pre označenie prízpevku", + "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" } \ No newline at end of file diff --git a/public/language/sk/error.json b/public/language/sk/error.json index 4a4811880f..f180ed7cac 100644 --- a/public/language/sk/error.json +++ b/public/language/sk/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Neplatné prihlasovacie údaje", "invalid-username-or-password": "Prosím upresnite užívateľské meno a heslo", "invalid-search-term": "Neplatný hľadaný výraz", + "invalid-url": "Invalid URL", "csrf-invalid": "Nie sme schopný Vás znova prihlásiť, pravdepodobne kvôli uplynutiu relácie. Prosíme, zopakujte to neskôr", "invalid-pagination-value": "Neplatná stránkovania hodnota, musí byť najmenej %1 a najviac %2", "username-taken": "Užívateľské meno je už obsadené", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Nemáte oprávnenie k úprave tejto správy", "cant-remove-last-user": "Nemôžete odstrániť posledného užívateľa", "cant-delete-chat-message": "Nemáte oprávanie k odstráneniu tejto správy", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Za tento príspevok ste už hlasovali.", "reputation-system-disabled": "Systém reputácie je zablokovaný.", "downvoting-disabled": "Hlasovanie proti je zablokované", "not-enough-reputation-to-downvote": "Nemáte dostatočnú reputáciu k odobratiu hlasu pre tento príspevok", "not-enough-reputation-to-flag": "Nemáte dostatočnú reputáciu na označenie tohto príspevku", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Už ste označili tento príspevok", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB narazil na problém pri načítaní: \"%1\". NodeBB bude pokračovať v službe existujúcej aktívnej klientskej strane, aj keď by ste mali vrátiť to, čo ste spravili tesne pred znovu načítaním.", diff --git a/public/language/sk/global.json b/public/language/sk/global.json index 4ae1675ca9..92fd4eee83 100644 --- a/public/language/sk/global.json +++ b/public/language/sk/global.json @@ -53,6 +53,7 @@ "topics": "Témy", "posts": "Príspevky", "best": "Najlepšie", + "votes": "Votes", "upvoters": "Hlasovali za", "upvoted": "Pridaný hlas", "downvoters": "Hlasovali proti", diff --git a/public/language/sk/pages.json b/public/language/sk/pages.json index 4a0417e2a8..dcf241c9c9 100644 --- a/public/language/sk/pages.json +++ b/public/language/sk/pages.json @@ -6,6 +6,7 @@ "popular-month": "Populárne témy za tento mesiac", "popular-alltime": "Populárne témy za celé obdobie", "recent": "Nedávne témy", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Označený obsah", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Hľadanie užívateľov", "notifications": "Oznámenia", "tags": "Značky", - "tag": "Témy pod značkou \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Zaregistrovať účet", "registration-complete": "Registrácia úspešná", "login": "Prihlásiť sa do účtu", diff --git a/public/language/sk/topic.json b/public/language/sk/topic.json index f32fa2c20e..2ca0a2b657 100644 --- a/public/language/sk/topic.json +++ b/public/language/sk/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Vypnúť upozornenia na nové odpovede.
Zobraziť tému v neprečítaných ak kategória nie je ignorovaná.", "ignoring.description": "Neupozorňovať na nové upozornenia.
Nezobrazovať témy v neprečítaných.", "thread_tools.title": "Nástroje témy", - "thread_tools.markAsUnreadForAll": "Označiť všetko ako neprečítané", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Zviditeľniť tému", "thread_tools.unpin": "Odstrániť zviditeľnenie témy", "thread_tools.lock": "Uzamknúť tému", diff --git a/public/language/sl/admin/appearance/customise.json b/public/language/sl/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/sl/admin/appearance/customise.json +++ b/public/language/sl/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/sl/admin/general/homepage.json b/public/language/sl/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/sl/admin/general/homepage.json +++ b/public/language/sl/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/sl/admin/manage/tags.json b/public/language/sl/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/sl/admin/manage/tags.json +++ b/public/language/sl/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/sl/admin/manage/users.json b/public/language/sl/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/sl/admin/manage/users.json +++ b/public/language/sl/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/sl/admin/menu.json b/public/language/sl/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/sl/admin/menu.json +++ b/public/language/sl/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/sl/admin/settings/chat.json b/public/language/sl/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/sl/admin/settings/chat.json +++ b/public/language/sl/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/sl/admin/settings/post.json b/public/language/sl/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/sl/admin/settings/post.json +++ b/public/language/sl/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/sl/admin/settings/reputation.json b/public/language/sl/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/sl/admin/settings/reputation.json +++ b/public/language/sl/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/sl/error.json b/public/language/sl/error.json index a2a89d593b..fc6a67f629 100644 --- a/public/language/sl/error.json +++ b/public/language/sl/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Prosimo, vpišite uporabniško ime in geslo.", "invalid-search-term": "Napačen iskalni izraz", + "invalid-url": "Invalid URL", "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.", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Nimate dovoljenja za urejanje tega sporočila.", "cant-remove-last-user": "Zadnjega uporabnika ne morete odstraniti.", "cant-delete-chat-message": "NImate dovoljenja za izbris tega sporočila.", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Za to objavo ste že glasovali.", "reputation-system-disabled": "Sistem za ugled je onemogočen.", "downvoting-disabled": "Negativno glasovanje je onemogočeno.", "not-enough-reputation-to-downvote": "Nimate dovolj ugleda za negativno glasovanje.", "not-enough-reputation-to-flag": "Nimate dovolj ugleda za prijavo te objave.", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "To objavo ste že prijavili.", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB je zaznal težavo pri osveževanju: ", diff --git a/public/language/sl/global.json b/public/language/sl/global.json index 193a4780a7..aaca8ca89b 100644 --- a/public/language/sl/global.json +++ b/public/language/sl/global.json @@ -53,6 +53,7 @@ "topics": "Teme", "posts": "Objave", "best": "Najboljše", + "votes": "Votes", "upvoters": "Glasovalcev za", "upvoted": "Glasov za", "downvoters": "Glasovalcev proti", diff --git a/public/language/sl/pages.json b/public/language/sl/pages.json index 3f86e4e4f6..718c0c13dc 100644 --- a/public/language/sl/pages.json +++ b/public/language/sl/pages.json @@ -6,6 +6,7 @@ "popular-month": "Priljubljene teme v tem mesecu", "popular-alltime": "Vse priljubljene teme", "recent": "Zadnje teme", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Iskanje uporabnikov", "notifications": "Obvestila", "tags": "Oznake", - "tag": "Teme označene kot \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registriraj svoj račun.", "registration-complete": "Registracija končana", "login": "Prijavi se v svoj račun.", diff --git a/public/language/sl/topic.json b/public/language/sl/topic.json index 0c2f4f135e..53e33e52d1 100644 --- a/public/language/sl/topic.json +++ b/public/language/sl/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Ne obvesti me o novih odgovorih.
Teme prikaži v Neprebrano le če kategorija ni prezrta.", "ignoring.description": "Ne obvesti me o novih odgovorih.
Teme ne prikaži v Neprebrano.", "thread_tools.title": "Orodja teme", - "thread_tools.markAsUnreadForAll": "Označi vse kot neprebrano", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pripni temo", "thread_tools.unpin": "Odpni temo", "thread_tools.lock": "Zakleni temo", diff --git a/public/language/sr/admin/appearance/customise.json b/public/language/sr/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/sr/admin/appearance/customise.json +++ b/public/language/sr/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/sr/admin/general/homepage.json b/public/language/sr/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/sr/admin/general/homepage.json +++ b/public/language/sr/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/sr/admin/manage/tags.json b/public/language/sr/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/sr/admin/manage/tags.json +++ b/public/language/sr/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/sr/admin/manage/users.json b/public/language/sr/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/sr/admin/manage/users.json +++ b/public/language/sr/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/sr/admin/menu.json b/public/language/sr/admin/menu.json index f715b7a83b..eff3e6f694 100644 --- a/public/language/sr/admin/menu.json +++ b/public/language/sr/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Menadžment", "manage/categories": "Kategorije", + "manage/privileges": "Privileges", "manage/tags": "Tagovi", "manage/users": "Korisnici", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Lista Registracija", "manage/post-queue": "Post Queue", "manage/groups": "Grupe", diff --git a/public/language/sr/admin/settings/chat.json b/public/language/sr/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/sr/admin/settings/chat.json +++ b/public/language/sr/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/sr/admin/settings/post.json b/public/language/sr/admin/settings/post.json index 859fcae17c..5deedb8d42 100644 --- a/public/language/sr/admin/settings/post.json +++ b/public/language/sr/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Najviše glasova", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Uobičajeno sortiranje tema", + "length": "Post Length", "restrictions": "Restrikcije postavljanja", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Sekundi između postova", - "restrictions.seconds-between-new": "Sekundi između postova za Novog korisnika", - "restrictions.rep-threshold": "Prag reputacije pre nego što su restrikcije skinute", + "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": "Sekundi pre nego što novi korisnik može da postuje", - "restrictions.seconds-edit-after": "Broj sekundi posle kojih korisnik može da preuredi post pošto ga je postavio. (0 onemogućeno)", - "restrictions.seconds-delete-after": "Broj sekundi posle korisniku nije više dozvnoljeno da obriše svoj post posle postavljanja. (0 onemogućeno)", + "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": "Broj sekundi posle korisniku nije više dozvnoljeno da obriše svoju temu. (0 onemogućeno)", "restrictions.min-title-length": "Minimum karaktera za Naslov", "restrictions.max-title-length": "Maksimum karaktera za Naslov", "restrictions.min-post-length": "Minimum karaktera za Post", "restrictions.max-post-length": "Maksimum karaktera za Post", - "restrictions.days-until-stale": "Broj dana koliko je potrebno da prodje pre nego što tema se smatra ustajalom", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "Ako se tema smatra \"ustajalom\", onda će upozorenje biti prikazano korisnicima koji su odgovarali na tu temu.", "timestamp": "Vremenski žig", "timestamp.cut-off": "Date cut-off (in days)", diff --git a/public/language/sr/admin/settings/reputation.json b/public/language/sr/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/sr/admin/settings/reputation.json +++ b/public/language/sr/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/sr/error.json b/public/language/sr/error.json index c44fef981b..d6caec4f13 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Неважећи акредитиви за пријављивање", "invalid-username-or-password": "Молимо наведите и корисничко име и лозинку", "invalid-search-term": "Неисправан упит за претрагу", + "invalid-url": "Неважећа адреса", "csrf-invalid": "Нисмо успели да вас пријавимо, вероватно због истека сесије. Молимо покушајте поново", "invalid-pagination-value": "Неважећа вредност приликом нумерисања страница, мора бити најмање %1 а највише %2 ", "username-taken": "Корисничко име је заузето", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Није вам дозвољено да уређујете ову поруку", "cant-remove-last-user": "Не можете уклонити последњег корисника", "cant-delete-chat-message": "Није вам дозвољено да избришете ову поруку", + "chat-edit-duration-expired": "Време у којем вам је дозвољено уређивање порука ћаскања након објављивања: %1 сек.", + "chat-delete-duration-expired": "Време у којем вам је дозвољено брисање порука ћаскања након објављивања: %1 сек.", "already-voting-for-this-post": "Већ сте гласали за ову поруку.", "reputation-system-disabled": "Угледи су онемогућени.", "downvoting-disabled": "Негативно гласање је онемогућено", "not-enough-reputation-to-downvote": "Немате довољно велики углед да бисте негативно гласали за ову поруку", "not-enough-reputation-to-flag": "Немате довољно велики углед да бисте означили заставицом ову поруку", + "not-enough-reputation-min-rep-website": "Немате довољно велики углед да бисте додали веб сајт", + "not-enough-reputation-min-rep-aboutme": "Немате довољно велики углед да бисте додали информације", + "not-enough-reputation-min-rep-signature": "Немате довољно велики углед да бисте додали потпис", "already-flagged": "Већ сте означили заставицом ову поруку", "self-vote": "Не можете гласати за своју поруку", "reload-failed": "NodeBB је наишао на проблем док се поново учитавао: \"%1\". NodeBB ће наставити да опслужује постојећа клијентска средства , иако би требало да опозовете оно што сте урадили пре поновног учитавања.", diff --git a/public/language/sr/global.json b/public/language/sr/global.json index 62e689cf71..1742fe768c 100644 --- a/public/language/sr/global.json +++ b/public/language/sr/global.json @@ -53,6 +53,7 @@ "topics": "Теме", "posts": "Поруке", "best": "Најбоље", + "votes": "Гласови", "upvoters": "Позитивно гласали", "upvoted": "Позитивно гласано", "downvoters": "Негативно гласали", diff --git a/public/language/sr/pages.json b/public/language/sr/pages.json index dde186d3ae..9b902290aa 100644 --- a/public/language/sr/pages.json +++ b/public/language/sr/pages.json @@ -6,6 +6,7 @@ "popular-month": "Популарне теме овог месеца", "popular-alltime": "Популарне теме свих времена", "recent": "Недавне теме", + "top": "Најгласаније теме", "moderator-tools": "Алати модератора", "flagged-content": "Садржај означен заставицом", "ip-blacklist": "Црна листа IP адреса", @@ -19,7 +20,7 @@ "users/search": "Претрага корисника", "notifications": "Обавештења", "tags": "Ознаке", - "tag": "Теме са ознаком „%1“", + "tag": "Теме са ознаком "%1"", "register": "Региструј налог", "registration-complete": "Регистрација је комплетирана", "login": "Пријавите се на ваш налог", diff --git a/public/language/sr/topic.json b/public/language/sr/topic.json index 787aa27a4b..44766303f3 100644 --- a/public/language/sr/topic.json +++ b/public/language/sr/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Немој ме обавештавати о новим одговорима.
Прикажи тему у непрочитаним ако категорија није игнорисана.", "ignoring.description": "Немој ме обавештавати о новим одговорима.
Не приказуј тему у непрочитаним", "thread_tools.title": "Алатке теме", - "thread_tools.markAsUnreadForAll": "Означи свима као непрочитано", + "thread_tools.markAsUnreadForAll": "Означи као непрочитано за све", "thread_tools.pin": "Закачи тему", "thread_tools.unpin": "Откачи тему", "thread_tools.lock": "Закључај тему", diff --git a/public/language/sv/admin/appearance/customise.json b/public/language/sv/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/sv/admin/appearance/customise.json +++ b/public/language/sv/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/sv/admin/general/homepage.json b/public/language/sv/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/sv/admin/general/homepage.json +++ b/public/language/sv/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/sv/admin/manage/tags.json b/public/language/sv/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/sv/admin/manage/tags.json +++ b/public/language/sv/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/sv/admin/manage/users.json b/public/language/sv/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/sv/admin/manage/users.json +++ b/public/language/sv/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/sv/admin/menu.json b/public/language/sv/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/sv/admin/menu.json +++ b/public/language/sv/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/sv/admin/settings/chat.json b/public/language/sv/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/sv/admin/settings/chat.json +++ b/public/language/sv/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/sv/admin/settings/post.json b/public/language/sv/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/sv/admin/settings/post.json +++ b/public/language/sv/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/sv/admin/settings/reputation.json b/public/language/sv/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/sv/admin/settings/reputation.json +++ b/public/language/sv/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/sv/error.json b/public/language/sv/error.json index 70c14e7590..0c0f9284e0 100644 --- a/public/language/sv/error.json +++ b/public/language/sv/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "Specificera både användarnamn och lösenord", "invalid-search-term": "Ogiltig sökterm", + "invalid-url": "Invalid URL", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Du har inte rättigheter att redigera det här meddelandet", "cant-remove-last-user": "Du kan inte ta bort den sista användaren", "cant-delete-chat-message": "Du har inte rättigheter att radera det här meddelandet", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Du har redan röstat på det här inlägget.", "reputation-system-disabled": "Ryktessystemet är inaktiverat.", "downvoting-disabled": "Nedröstning är inaktiverat", "not-enough-reputation-to-downvote": "Du har inte tillräckligt förtroende för att rösta ner det här meddelandet", "not-enough-reputation-to-flag": "Du har inte tillräckligt förtroende för att flagga det här inlägget.", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Du har redan flaggat det här inlägget", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB stötte på problem med att ladda om: \"%1\". NodeBB kommer fortsätta servera befintliga resurser till klienten, men du borde återställa det du gjorde innan du försökte ladda om.", diff --git a/public/language/sv/global.json b/public/language/sv/global.json index f24cdffb00..9da75f755b 100644 --- a/public/language/sv/global.json +++ b/public/language/sv/global.json @@ -53,6 +53,7 @@ "topics": "Ämnen", "posts": "Inlägg", "best": "Bästa", + "votes": "Votes", "upvoters": "Uppröstare", "upvoted": "Uppröstad", "downvoters": "Nerröstare", diff --git a/public/language/sv/pages.json b/public/language/sv/pages.json index 0a88550f33..22c215fe94 100644 --- a/public/language/sv/pages.json +++ b/public/language/sv/pages.json @@ -6,6 +6,7 @@ "popular-month": "Populära ämnen denna månad", "popular-alltime": "Populäraste ämnena genom tiderna", "recent": "Senaste ämnena", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Svartlista", @@ -19,7 +20,7 @@ "users/search": "Användar Sök", "notifications": "Notiser", "tags": "Etiketter", - "tag": "Ämnen märkta med \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Registrera ett konto", "registration-complete": "Registrering färdig", "login": "Logga in på ditt konto", diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json index 131077062e..eb3a78b313 100644 --- a/public/language/sv/topic.json +++ b/public/language/sv/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Meddela mig inte om nya svar.
Visa ämne i oläst ifall kategorin är ignorerad.", "ignoring.description": "Meddela mig inte om nya svar.
Visa inte ämne i oläst.", "thread_tools.title": "Ämnesverktyg", - "thread_tools.markAsUnreadForAll": "Markera oläst för alla", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Nåla fast ämne", "thread_tools.unpin": "Lösgör ämne", "thread_tools.lock": "Lås ämne", diff --git a/public/language/th/admin/appearance/customise.json b/public/language/th/admin/appearance/customise.json index 2f715a9bfc..d56161484f 100644 --- a/public/language/th/admin/appearance/customise.json +++ b/public/language/th/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "ปรับแต่ง CSS", - "custom-css.description": "ใส่ CSS ของคุณที่นี่, มันจะถูกนำไปใช้ต่อจากสไตล์อื่นๆ", - "custom-css.enable": "เปิดการปรับแต่ง CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/th/admin/general/homepage.json b/public/language/th/admin/general/homepage.json index f195d37850..81ffe35f81 100644 --- a/public/language/th/admin/general/homepage.json +++ b/public/language/th/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/th/admin/manage/tags.json b/public/language/th/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/th/admin/manage/tags.json +++ b/public/language/th/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/th/admin/manage/users.json b/public/language/th/admin/manage/users.json index 599f817de9..cfee0ac620 100644 --- a/public/language/th/admin/manage/users.json +++ b/public/language/th/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "แบน", "pills.search": "ค้นหาผู้ใช้งาน", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "โดยชื่อผู้ใช้งาน", "search.username-placeholder": "ใส่ชื่อผู้ใช้งานเพื่อทำการค้นหา", "search.email": "โดยอีเมล", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "ยกเลิกการกักกัน", "alerts.flag-reset-success": "ยกเลิกการติดตาม", "alerts.no-remove-yourself-admin": "คุณไม่สามารถที่จะยกเลิกตัวเองจากการเป็นผู้ดูแลระบบ", - "alerts.make-admin-success": "ผู้ใช้งานได้เป็นแอดมิน", - "alerts.confirm-remove-admin": "คุณต้องการที่จะยกเลิกแอดมินเหล่านี้?", - "alerts.remove-admin-success": "ผู้ใช้งานที่ไม่ได้เป็นแอดมิน", + "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": "คุณต้องการที่ยืนยันอีเมลของผู้ใช้เหล่านี้หรือไม่?", "alerts.validate-email-success": "อีเมลที่ได้รับการยืนยัน", "alerts.password-reset-confirm": "คุณต้องการที่จะส่งอีเมลการล้างค่ารหัสผ่านให้กับผู้ใช้เหล่านี้หรือไม่?", diff --git a/public/language/th/admin/menu.json b/public/language/th/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/th/admin/menu.json +++ b/public/language/th/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/th/admin/settings/chat.json b/public/language/th/admin/settings/chat.json index 420d6e5ebe..3c03e182f9 100644 --- a/public/language/th/admin/settings/chat.json +++ b/public/language/th/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "จำนวนอักขระมากที่มากที่สุดต่อแชท", "max-room-size": "จำนวนผู้ใช้ในห้องแชทมากที่สุด", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/th/admin/settings/post.json b/public/language/th/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/th/admin/settings/post.json +++ b/public/language/th/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/th/admin/settings/reputation.json b/public/language/th/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/th/admin/settings/reputation.json +++ b/public/language/th/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/th/error.json b/public/language/th/error.json index 3f91fb4d47..87514dedca 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "session login หมดอายุ", "invalid-username-or-password": "กรุณาระบุชื่อผู้ใช้และรหัสผ่าน", "invalid-search-term": "ข้อความค้นหาไม่ถูกต้อง", + "invalid-url": "Invalid URL", "csrf-invalid": "เราไม่สามารถนำท่านเข้าสู่ระบบได้ เหมือนกับว่าเซสชั่นหมดอายุแล้ว กรุณาลองใหม่อีกครั้ง", "invalid-pagination-value": "หมายเลขหน้าไม่ถูกต้อง จำเป็นต้องเป็นตัวเลขอย่างน้อย %1 และอย่างมาก %2", "username-taken": "ชื่อผู้ใช้นี้มีการใช้แล้ว", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "คุณไม่ได้รับอนุญาติให้แก้ไขข้อความ", "cant-remove-last-user": "คุณไม่สามารถลบผู้ใช้งานล่าสุดได้", "cant-delete-chat-message": "คุณไม่ได้รับอนุญาตให้ลบข้อความ", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "คุณได้โหวตโพสต์นี้แล้ว", "reputation-system-disabled": "ระบบชื่อเสียงถูกปิดใช้งาน", "downvoting-disabled": "\"การโหวตลง\" ถูกปิดใช้งาน", "not-enough-reputation-to-downvote": "คุณไม่มีชื่อเสียงพอที่จะโหวตโพสต์นี้ลง", "not-enough-reputation-to-flag": "คุณไม่มีชื่อเสียงพอที่จะปักธงให้โพสต์นี้", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "คุณได้ปักธงให้โพสต์นี้แล้ว", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB encountered a problem while reloading: \"%1\". NodeBB will continue to serve the existing client-side assets, although you should undo what you did just prior to reloading.", diff --git a/public/language/th/global.json b/public/language/th/global.json index d5faf08079..79abce03fa 100644 --- a/public/language/th/global.json +++ b/public/language/th/global.json @@ -53,6 +53,7 @@ "topics": "กระทู้", "posts": "กระทู้", "best": "ดีที่สุด", + "votes": "Votes", "upvoters": "ผู้ที่โหวดขึ้น", "upvoted": "โหวตแล้ว", "downvoters": "ผู้ที่โหวตลง", diff --git a/public/language/th/pages.json b/public/language/th/pages.json index 97cb383004..52b9a8a38e 100644 --- a/public/language/th/pages.json +++ b/public/language/th/pages.json @@ -6,6 +6,7 @@ "popular-month": "กระทู้ฮิตเดือนนี้", "popular-alltime": "กระทู้ฮิตตลาดกาล", "recent": "กระทู้ล่าสุด", + "top": "Top Voted Topics", "moderator-tools": "เครื่องมือผู้ดูแลระบบ", "flagged-content": "เนื้อหาที่ถูกปักธง", "ip-blacklist": "ไอดีที่ถูกขึ้นบัญชีดำ", @@ -19,7 +20,7 @@ "users/search": "ค้นหาผู้ใช้", "notifications": "การแจ้งเตือน", "tags": "แท็ก", - "tag": "กระทู้ที่ถูกติดแท็กภายใต้ \"%1\"", + "tag": "Topics tagged under "%1"", "register": "สมัครบัญชีผู้ใช้", "registration-complete": "สมัครสมาชิกสำเร็จเรียบร้อย", "login": "เข้าสู่ระบบบัญชีของคุณ", diff --git a/public/language/th/topic.json b/public/language/th/topic.json index 980bf12387..c232094959 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "อย่าเตือนฉันเมือมีคำตอบใหม่
แสดงกระทู้ในรายการที่ยังไม่ได้อ่านหากหมวดหมู่นี้ไม่ได้รับการเมินเฉย", "ignoring.description": "อย่าเตือนฉันเมื่อมีคำตอบใหม่
อย่าแสดงกระทู้ในรายการที่ยังไม่ได้อ่าน", "thread_tools.title": "เครื่องมือช่วยจัดการ Topic", - "thread_tools.markAsUnreadForAll": "มาร์คว่ายังไม่ยังอ่านทั้งหมด", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "ปักหมุดกระทู้", "thread_tools.unpin": "เลิกปักหมุดกระทู้", "thread_tools.lock": "ล็อคกระทู้", diff --git a/public/language/tr/admin/appearance/customise.json b/public/language/tr/admin/appearance/customise.json index ae428da7f4..a561e58641 100644 --- a/public/language/tr/admin/appearance/customise.json +++ b/public/language/tr/admin/appearance/customise.json @@ -1,9 +1,9 @@ { - "custom-css": "Özel CSS", - "custom-css.description": "Özel CSS kodlarınızı bu alana girin.", - "custom-css.enable": "Özel CSS Etkinleştir", + "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-js": "Custom Javascript", + "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", diff --git a/public/language/tr/admin/general/homepage.json b/public/language/tr/admin/general/homepage.json index 3dad8ecbce..f9bc3bba54 100644 --- a/public/language/tr/admin/general/homepage.json +++ b/public/language/tr/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Kullanıcıların, forumunuzun kök bağlantısına gittiğinde hangi sayfanın görüntüleneceğini seçin.", "home-page-route": "Anasayfa Yolu", "custom-route": "Özel Yol", - "allow-user-home-pages": "Kullanıcılara anasayfayı özelleştirmeye izin ver" + "allow-user-home-pages": "Kullanıcılara anasayfayı özelleştirmeye izin ver", + "home-page-title": "Title of the home page (default \"Home\")" } \ 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 12b5e6c305..401e0e7ffc 100644 --- a/public/language/tr/admin/manage/tags.json +++ b/public/language/tr/admin/manage/tags.json @@ -6,6 +6,7 @@ "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", "delete": "Seçili Etiketleri Sil", "search": "Etiketleri ara...", "settings": "Etiket yönetim sayfasını ziyaret etmek için buraya tıklayın.", diff --git a/public/language/tr/admin/manage/users.json b/public/language/tr/admin/manage/users.json index c3d59f1144..735d97bef8 100644 --- a/public/language/tr/admin/manage/users.json +++ b/public/language/tr/admin/manage/users.json @@ -6,7 +6,7 @@ "validate-email": "E-postayı Doğrula", "send-validation-email": "Onay E-postası Gönder", "password-reset-email": "E-posta Sıfırlaması için Parola Gönder", - "ban": "Ban User(s)", + "ban": "Yasaklı Kullanıcı(lar)", "temp-ban": "Ban User(s) Temporarily", "unban": "Unban User(s)", "reset-lockout": "Reset Lockout", @@ -27,6 +27,8 @@ "pills.banned": "Yasaklandı", "pills.search": "Kullanıcı Ara", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "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", @@ -69,9 +71,15 @@ "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": "Kullanıcı(lar) artık yönetici.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "Kullanıcı(lar) artık yönetici değil.", + "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)?", diff --git a/public/language/tr/admin/menu.json b/public/language/tr/admin/menu.json index d4bc661658..e467376a69 100644 --- a/public/language/tr/admin/menu.json +++ b/public/language/tr/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Yönet", "manage/categories": "Kategoriler", + "manage/privileges": "Privileges", "manage/tags": "Etiketler", "manage/users": "Kullanıcılar", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Kayıt Kuyruğu", "manage/post-queue": "İleti Kuyruğu", "manage/groups": "Gruplar", diff --git a/public/language/tr/admin/settings/chat.json b/public/language/tr/admin/settings/chat.json index f5a477b577..dbba535c03 100644 --- a/public/language/tr/admin/settings/chat.json +++ b/public/language/tr/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Yöneticiler ve global moderatörler bu kısıtlamadan muaftır", "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)" + "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)" } \ 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 1854a05187..d876543e42 100644 --- a/public/language/tr/admin/settings/general.json +++ b/public/language/tr/admin/settings/general.json @@ -1,7 +1,7 @@ { "site-settings": "Site Ayarları", "title": "Site Başlığı", - "title.url": "URL", + "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.name": "Topluluk İsmi", diff --git a/public/language/tr/admin/settings/post.json b/public/language/tr/admin/settings/post.json index 9df8eaba0c..92b8e7dfaa 100644 --- a/public/language/tr/admin/settings/post.json +++ b/public/language/tr/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "En Çok Oylanan", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Varsayılan Konu Sıralaması", + "length": "Post Length", "restrictions": "İleti Kısıtlamaları", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "İleti kuyruğunu etkinleştir", + "restrictions-new.post-queue": "Enable new user restrictions", "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.seconds-between": "İletiler arası saniye", - "restrictions.seconds-between-new": "Yeni kullanıcılar için iletiler arası saniye", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.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.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.cut-off": "Date cut-off (in days)", diff --git a/public/language/tr/admin/settings/reputation.json b/public/language/tr/admin/settings/reputation.json index 040bfab944..6af829a0c0 100644 --- a/public/language/tr/admin/settings/reputation.json +++ b/public/language/tr/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Tüm Oylar Herkese Açık", "thresholds": "Activity Thresholds", "min-rep-downvote": "Eksilenen iletiler için minimum itibar", - "min-rep-flag": "Bayraklı 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" } \ No newline at end of file diff --git a/public/language/tr/email.json b/public/language/tr/email.json index 71077d5cc7..dcb4e12250 100644 --- a/public/language/tr/email.json +++ b/public/language/tr/email.json @@ -30,7 +30,7 @@ "notif.chat.unsub.info": "Bu bildirim şectiğiniz ayarlar yüzünden gönderildi.", "notif.post.cta": "Konunun tamamını okumak için buraya tıklayın", "notif.post.unsub.info": "Bu yazı bildirimi size abonelik ayarlarınız nedeni ile gönderilmiştir.", - "notif.cta": "Click here to go to forum", + "notif.cta": "Foruma gitmek için buraya tıklayın", "test.text1": "Bu ileti NodeBB e-posta ayarlarınızın doğru çalışıp çalışmadığını kontrol etmek için gönderildi.", "unsub.cta": "Buraya tıklayarak ayarlarınızı değiştirebilirsiniz.", "banned.subject": "%1 'den yasaklandınız", diff --git a/public/language/tr/error.json b/public/language/tr/error.json index b32474d28c..cbe8b8f393 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -11,12 +11,13 @@ "invalid-uid": "Geçersiz Kullanıcı ID", "invalid-username": "Geçersiz Kullanıcı İsmi", "invalid-email": "Geçersiz E-posta", - "invalid-title": "Invalid title", + "invalid-title": "Geçersiz başlık", "invalid-user-data": "Geçersiz Kullancı Verisi", "invalid-password": "Geçersiz Şifre", "invalid-login-credentials": "Geçersiz kimlik bilgileri", "invalid-username-or-password": "Lütfen kullanıcı ismi ve parola girin.", "invalid-search-term": "Geçersiz arama", + "invalid-url": "Geçersiz bağlantı", "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ış", @@ -81,7 +82,7 @@ "cant-ban-other-admins": "Başka yöneticileri yasaklayamazsınız!", "cant-remove-last-admin": "Tek yönetici sizsiniz. Kendinizi adminlikten çıkarmadan önce başka bir kullanıcıyı admin olarak ekleyiniz", "cant-delete-admin": "Öncelikle yönetici izinlerini kaldırman gerekiyor.", - "invalid-image": "Invalid image", + "invalid-image": "Geçersiz görsel", "invalid-image-type": "Geçersiz resim uzantısı. Izin verilen uzantılar: %1", "invalid-image-extension": "Geçersiz resim uzantısı", "invalid-file-type": "Geçersiz dosya türü. İzin verilenler şunlar : %1", @@ -113,19 +114,24 @@ "cant-edit-chat-message": "Bu mesajı düzenlemek için izin verilmez", "cant-remove-last-user": "Son kullanıcıyı silemezsiniz", "cant-delete-chat-message": "Bu mesajı silmek için izin verilmez", + "chat-edit-duration-expired": "Gönderildikten sonra yalnızca %1 saniye mesajı(ları) düzenlemene izin verilir", + "chat-delete-duration-expired": "Gönderildikten sonra yalnızca %1 saniye mesajı(ları) silmene izin verilir", "already-voting-for-this-post": "Bu gönderi için zaten oy verdin.", "reputation-system-disabled": "İtibar sistemi devre dışı.", "downvoting-disabled": "Aşagı oylama kapatılmış", "not-enough-reputation-to-downvote": "Bu iletiyi eksilemek için yeterince itibarınız yok.", "not-enough-reputation-to-flag": "Bu iletiyi bayraklamak için yeterince itibarınız yok", + "not-enough-reputation-min-rep-website": "Bir website eklemek için yeterli saygınlığa sahip değilsin", + "not-enough-reputation-min-rep-aboutme": "Hakkında kısmını doldurabilmek için yeterli saygınlığa sahip değilsin", + "not-enough-reputation-min-rep-signature": "İmza eklemek için yeterli saygınlığa sahip değilsin", "already-flagged": "Bu iletiyi zaten bayrakladınız", - "self-vote": "You cannot vote on your own post", + "self-vote": "Kendi iletinize oy veremezsiniz", "reload-failed": "NodeBB tekrar yüklenirken bir sorunla karşılaştı: “%1“. NodeBB varolan dosyaları servis etmeye devam edecek.", "registration-error": "Kayıt Hatası", "parse-error": "Sunucu yanıtı çözümlemesi sırasında bir şeyler ters gitti", "wrong-login-type-email": "Lütfen giriş için e-posta adresinizi kullanın", "wrong-login-type-username": "Lütfen giriş için kullanıcı adınızı kullanın", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", + "sso-registration-disabled": "%1 hesap için kayıt işlemi devre dışı bırakıldı, lütfen öncelikle bir eposta adresi ile kayıt olun", "invite-maximum-met": "Sen maksimum miktarda insanı davet ettin (%2 üzerinden %1).", "no-session-found": "Giriş yapılmış bir oturum bulunamadı!", "not-in-room": "Odada kullanıcı yok", @@ -135,5 +141,5 @@ "invalid-home-page-route": "Geçersiz anasayfa yolu", "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": "No topics selected!" + "no-topics-selected": "Hiçbir başlık seçilmedi!" } \ No newline at end of file diff --git a/public/language/tr/flags.json b/public/language/tr/flags.json index 26bf025d62..f399f68636 100644 --- a/public/language/tr/flags.json +++ b/public/language/tr/flags.json @@ -54,11 +54,11 @@ "modal-body": "%1 %2 için bayraklama nedenini belirtin. Alternatif olarak hızlı rapor butonlarından birinini kullanabilirsin.", "modal-reason-spam": "Gereksiz", "modal-reason-offensive": "Saldırgan", - "modal-reason-other": "Other (specify below)", + "modal-reason-other": "Diğer (aşağıda belirtin)", "modal-reason-custom": "Bir içeriği bildirme nedeni...", "modal-submit": "Raporu Gönder", "modal-submit-success": "İçerik, denetlemek için bayraklandı.", - "modal-submit-confirm": "Confirm Submission", - "modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?", - "modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined." + "modal-submit-confirm": "Gönderimi Onayla", + "modal-submit-confirm-text": "Zaten belirtilen özel bir sebebin var. Hızlı raporla göndermek istediğinizden emin misin?", + "modal-submit-confirm-text-help": "Hızlı bir rapor göndermek tanımlanan özel nedenlerin üzerine yazacaktır." } \ No newline at end of file diff --git a/public/language/tr/global.json b/public/language/tr/global.json index caa046f0e7..74d70305d3 100644 --- a/public/language/tr/global.json +++ b/public/language/tr/global.json @@ -53,11 +53,12 @@ "topics": "Başlık", "posts": "İleti", "best": "En İyi", + "votes": "Oy", "upvoters": "Artı", "upvoted": "Artı", "downvoters": "Eksi", "downvoted": "Eksi", - "views": "Görüntülenme", + "views": "Bakış", "reputation": "İtibar", "read_more": "daha fazla oku", "more": "Daha Fazla", diff --git a/public/language/tr/notifications.json b/public/language/tr/notifications.json index 5cb4e12e66..ba9761b8f3 100644 --- a/public/language/tr/notifications.json +++ b/public/language/tr/notifications.json @@ -9,7 +9,7 @@ "continue_to": "Devam et", "return_to": "Geri dön.", "new_notification": "Yeni bildirim", - "new_notification_from": "You have a new Notification from %1", + "new_notification_from": "Yenir bir bildiriminiz var %1", "you_have_unread_notifications": "Okunmamış bildirimleriniz var.", "all": "Hepsi", "topics": "Başlıklar", @@ -47,18 +47,18 @@ "email-confirmed-message": "E-postanızı onaylandığınız için teşekkürler. Hesabınız tamamen aktif edildi.", "email-confirm-error-message": "E-posta adresinizi onaylarken bir hata oluştu. Kodunuz geçersiz ya da eski olabilir.", "email-confirm-sent": "Onay e-postası gönderildi.", - "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": "Hiçbiri", + "notification_only": "Sadece Bildirim", + "email_only": "Sadece E-posta", + "notification_and_email": "Bildirim & E-posta", + "notificationType_upvote": "Birisi senin iletine artı oy verdiğinde", + "notificationType_new-topic": "Takip ettiğiniz birisi bir başlık gönderdiğinde", + "notificationType_new-reply": "İzlediğiniz bir başlığa yeni bir ileti gönderildiğinde", + "notificationType_follow": "Birisi seni takip etmeye başlayınca", + "notificationType_new-chat": "Bir sohbet mesajı aldığınızda", + "notificationType_group-invite": "Bir grup davetiyesi aldığınızda", + "notificationType_new-register": "Birisi kayıt kuyruğuna eklendiğinde", + "notificationType_post-queue": "Yeni bir ileti sıraya alındığında", + "notificationType_new-post-flag": "Bir ileti bayraklandığında", + "notificationType_new-user-flag": "Bir kullanıcı bayraklandığında" } \ No newline at end of file diff --git a/public/language/tr/pages.json b/public/language/tr/pages.json index 978024cfc0..19fcfd2fa7 100644 --- a/public/language/tr/pages.json +++ b/public/language/tr/pages.json @@ -6,6 +6,7 @@ "popular-month": "Bu ayki popüler başlıklar", "popular-alltime": "En popüler başlıklar", "recent": "Güncel Konular", + "top": "En Çok Oylanan Başlıklar", "moderator-tools": "Moderatör Araçları", "flagged-content": "Bayraklanan İçerik", "ip-blacklist": "IP Kara Listesi", @@ -19,7 +20,7 @@ "users/search": "Kullanıcı Ara", "notifications": "Bildirimler", "tags": "Etiketler", - "tag": "“%1“ ile etiketlenmiş konular", + "tag": ""%1" altında etiketlenen başlıklar", "register": "Bir hesap aç", "registration-complete": "Kayıt tamamlandı", "login": "Hesabına giriş yap", @@ -44,7 +45,7 @@ "account/bookmarks": "%1'in yer imine eklenmiş iletiler", "account/settings": "Kullanıcı Ayarları", "account/watched": "%1 tarafından izlenen konular", - "account/ignored": "Topics ignored by %1", + "account/ignored": "%1 tarafından konu yok sayıldı", "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", diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json index 4fa9e54998..c97b9b6033 100644 --- a/public/language/tr/topic.json +++ b/public/language/tr/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Yeni bir ileti geldiğinde bildirme.
Kategori susturulmamışsa okunmamış olarak göster.", "ignoring.description": "Yeni bir ileti geldiğinde bildirme.
Okunmamış olarak gösterme.", "thread_tools.title": "Konu Ayarları", - "thread_tools.markAsUnreadForAll": "Hepsini okunmadı olarak işaretle", + "thread_tools.markAsUnreadForAll": "Okunmamış olarak İşaretle", "thread_tools.pin": "Başlığı Sabitle", "thread_tools.unpin": "Başlığı Sabitleme", "thread_tools.lock": "Başlığı Kitle", @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Bu konuyu gerçekten geri getirmek istiyor musun?", "thread_tools.purge": "Konuyu Temizle", "thread_tools.purge_confirm": "Bu konuyu temizlemek istediğinize eminmisiniz?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Başlık Birleştir", + "thread_tools.merge": "Taşı", "topic_move_success": "Başlık %1 kategorisine başarıyla taşındı.", "post_delete_confirm": "Bu iletiyi gerçekten silmek istediğinize emin misiniz?", "post_restore_confirm": "Bu iletiyi gerçekten geri getirmek istiyor musun?", @@ -91,7 +91,7 @@ "fork_pid_count": "%1 ileti(ler) seçildi", "fork_success": "Başlık başarıyla ayrıldı!", "delete_posts_instruction": "Silmek/temizlemek istediğiniz iletilere tıklayın.", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Birleştirmek istediğiniz başlıklara tıklayın", "composer.title_placeholder": "Başlık ismini buraya girin...", "composer.handle_placeholder": "İsim", "composer.discard": "Vazgeç", diff --git a/public/language/tr/user.json b/public/language/tr/user.json index cb287892cc..477dd4d27e 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -85,7 +85,7 @@ "has_no_posts": "Bu kullanıcı henüz herhangi bir ileti yazmamış.", "has_no_topics": "Bu kullanıcı henüz hiç bir başlık açmamış.", "has_no_watched_topics": "Bu kullanıcı henüz hiç bir başlık okumamış.", - "has_no_ignored_topics": "This user hasn't ignored any topics yet.", + "has_no_ignored_topics": "Bu kullanıcı henüz hiçbir başlığı yok saymadı.", "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.", @@ -101,11 +101,11 @@ "outgoing-message-sound": "Giden ileti sesi", "notification-sound": "Bildirim sesi", "no-sound": "Ses yok", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Artı Oy Bildiri Sıklığı", + "upvote-notif-freq.all": "Büyün Artı Oylar", + "upvote-notif-freq.everyTen": "Her Artı On Oy", + "upvote-notif-freq.logarithmic": "10, 100, 1000...", + "upvote-notif-freq.disabled": "Devre dışı", "browsing": "Tarayıcı Ayaları", "open_links_in_new_tab": "Dışarı giden bağlantıları yeni sekmede aç", "enable_topic_searching": "Konu içi aramayı aktive et", @@ -126,9 +126,9 @@ "sso.title": "Tek giriş servisleri", "sso.associated": "Birleştirilmiş", "sso.not-associated": "Birleştirmek için buraya tıklayın", - "sso.dissociate": "Dissociate", - "sso.dissociate-confirm-title": "Confirm Dissociation", - "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", + "sso.dissociate": "Ayrış", + "sso.dissociate-confirm-title": "Ayrışmayı Onayla", + "sso.dissociate-confirm": "%1 'den ayrışmak istediğinizden emin misiniz?", "info.latest-flags": "Son Bayraklar", "info.no-flags": "Hiç bayraklanan bir ileti bulunamadı", "info.ban-history": "Yasaklama Olayları", diff --git a/public/language/uk/admin/appearance/customise.json b/public/language/uk/admin/appearance/customise.json index 20528f77e9..b85d6c8ecf 100644 --- a/public/language/uk/admin/appearance/customise.json +++ b/public/language/uk/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Користувацькі CSS", - "custom-css.description": "Уведіть власні CSS правила, що будуть примінені після всіх інших стилів.", - "custom-css.enable": "Увімкнути користувацькі CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/uk/admin/general/homepage.json b/public/language/uk/admin/general/homepage.json index da2cdffae7..a5e028490b 100644 --- a/public/language/uk/admin/general/homepage.json +++ b/public/language/uk/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Вкажіть яку сторінку показувати коли користувач переходить на корньовий URL форуму.", "home-page-route": "Шлях головної сторінки", "custom-route": "Користувацький шлях", - "allow-user-home-pages": "Дозволити користувачам власні сторінки" + "allow-user-home-pages": "Дозволити користувачам власні сторінки", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/uk/admin/manage/tags.json b/public/language/uk/admin/manage/tags.json index 6638741f36..b47e84a1cf 100644 --- a/public/language/uk/admin/manage/tags.json +++ b/public/language/uk/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "Виберіть теги тиснучи або перетягуючи. Використовуйте Shift, щоб обрати декілька.", "create": "Створити тег", "modify": "Змінити тег", + "rename": "Rename Tags", "delete": "Видалити вибрані теги", "search": "Пошук тегів...", "settings": "Натисніть тут щоб перейти на сторінку налаштування тегів.", diff --git a/public/language/uk/admin/manage/users.json b/public/language/uk/admin/manage/users.json index e7abb3d48a..d061626f0e 100644 --- a/public/language/uk/admin/manage/users.json +++ b/public/language/uk/admin/manage/users.json @@ -27,6 +27,8 @@ "pills.banned": "Забанені", "pills.search": "Пошук користувачів", + "search.uid": "By User ID", + "search.uid-placeholder": "Enter a user ID to search", "search.username": "За іменем", "search.username-placeholder": "Введіть ім'я для пошуку", "search.email": "За поштою", @@ -69,9 +71,15 @@ "alerts.lockout-reset-success": "Блокування скинуто!", "alerts.flag-reset-success": "Скарги скинуто!", "alerts.no-remove-yourself-admin": "Ви не можете видалити себе як адміна!", - "alerts.make-admin-success": "Користувачі тепер адміністратори.", - "alerts.confirm-remove-admin": "Ви точно бажаєте видалити адмінів?", - "alerts.remove-admin-success": "Користувачі більше не адміністратори.", + "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": "Ви точно бажаєте підтвердити електронні пошти цих користувачів?", "alerts.validate-email-success": "Електронні пошти підтверджено", "alerts.password-reset-confirm": "Ви точно бажаєте скинути паролі цим користувачам електронною поштою?", diff --git a/public/language/uk/admin/menu.json b/public/language/uk/admin/menu.json index 108b4a991f..f780d2be2f 100644 --- a/public/language/uk/admin/menu.json +++ b/public/language/uk/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Керування", "manage/categories": "Категорії", + "manage/privileges": "Privileges", "manage/tags": "Теги", "manage/users": "Користувачі", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Черга реєстрації", "manage/post-queue": "Черга Постів", "manage/groups": "Групи", diff --git a/public/language/uk/admin/settings/chat.json b/public/language/uk/admin/settings/chat.json index 01bc8f124d..d73c11e7ef 100644 --- a/public/language/uk/admin/settings/chat.json +++ b/public/language/uk/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Адміністратори на модератори звільнені від цього обмеження", "max-length": "Максимальна довжина повідомлення", "max-room-size": "Максимальна кількість людей у кімнаті", - "delay": "Час між повідомленнями в мілісекундах" + "delay": "Час між повідомленнями в мілісекундах", + "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)" } \ No newline at end of file diff --git a/public/language/uk/admin/settings/post.json b/public/language/uk/admin/settings/post.json index 74434de937..df8593c187 100644 --- a/public/language/uk/admin/settings/post.json +++ b/public/language/uk/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Кількість голосів", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Типове сортування тем", + "length": "Post Length", "restrictions": "Обмеження постингу", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Увімкнути чергу постів", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Після увімкнення черги постів, пости нових користувачів будуть ставитись в чергу на схвалення.", - "restrictions.seconds-between": "Кількість секунд між постами", - "restrictions.seconds-between-new": "Кількість секунд між постами для нових користувачів", - "restrictions.rep-threshold": "Репутація, при якій зі обмеження буде знято", + "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": "Кількість секунд до першого посту для нового користувача", - "restrictions.seconds-edit-after": "Кількість секунд протягом яких користувач може редагувати пост після відправки. (0 — вимкнено)", - "restrictions.seconds-delete-after": "Кількість секунд протягом яких користувач може видалити пост після відправки. (0 — вимкнено)", + "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": "Кількість відповідей після котрих користувач не зможе видалити власну тему. (0 — вимкнено)", "restrictions.min-title-length": "Мінімальна довжина заголовку", "restrictions.max-title-length": "Максимальна довжина заголовку", "restrictions.min-post-length": "Мінімальна довжина посту", "restrictions.max-post-length": "Максимальна довжина посту", - "restrictions.days-until-stale": "Кількість днів після яких тема буде вважатися застарілою", + "restrictions.days-until-stale": "Days until topic is considered stale", "restrictions.stale-help": "Якщо тема є \"застарілою\", то для користувачів, що бажають відповісти на неї буде показано попередження.", "timestamp": "Часова мітка", "timestamp.cut-off": "Обрізка дат (в днях)", diff --git a/public/language/uk/admin/settings/reputation.json b/public/language/uk/admin/settings/reputation.json index d69bd9b0c8..40efe9e9cd 100644 --- a/public/language/uk/admin/settings/reputation.json +++ b/public/language/uk/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "Всі голоси публічні", "thresholds": "Допуски активності", "min-rep-downvote": "Мінімальна репутація для голосування проти постів", - "min-rep-flag": "Мінімальна репутація для подання скарг на пости" + "min-rep-flag": "Мінімальна репутація для подання скарг на пости", + "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" } \ No newline at end of file diff --git a/public/language/uk/error.json b/public/language/uk/error.json index 883f1b7bfc..7895056bb5 100644 --- a/public/language/uk/error.json +++ b/public/language/uk/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Невірне ім'я користувача або пароль", "invalid-username-or-password": "Вкажіть, будь ласка, ім'я користувача та пароль", "invalid-search-term": "Невірний пошуковий запит", + "invalid-url": "Invalid URL", "csrf-invalid": "Нам не вдалося вас пустити, ймовірно, через прострочену сесію. Будь ласка, спробуйте ще раз", "invalid-pagination-value": "Невірне значення сторінки, має бути щонайменше %1 та щонайбільше %2", "username-taken": "Це ім'я зайняте", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Ви не можете редагувати повідомлення", "cant-remove-last-user": "Ви не можете видалити останнього користувача", "cant-delete-chat-message": "Ви не можете видалити це повідомлення", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Ви вже проголосували за цей пост.", "reputation-system-disabled": "Система репутацій вимкнена.", "downvoting-disabled": "Голосування проти вимкнено", "not-enough-reputation-to-downvote": "У вас недостатньо репутації, щоб голосувати проти цього посту", "not-enough-reputation-to-flag": "У вас недостатньо репутації, щоб помітити цей пост", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Ви вже помітили цей пост", "self-vote": "You cannot vote on your own post", "reload-failed": "У NodeBB виникла проблема при перевантаженні: \"%1\". NodeBB продовжить надавати існуючі клієнтські ресурси, проте радимо вам скасувати те, що було зроблено до перевантаження.", diff --git a/public/language/uk/global.json b/public/language/uk/global.json index a5a5e1fbd4..95076bfd53 100644 --- a/public/language/uk/global.json +++ b/public/language/uk/global.json @@ -53,6 +53,7 @@ "topics": "Теми", "posts": "Пости", "best": "Найкращі", + "votes": "Votes", "upvoters": "За", "upvoted": "За", "downvoters": "Проти", diff --git a/public/language/uk/pages.json b/public/language/uk/pages.json index 6ad8bfbbe6..656200c87e 100644 --- a/public/language/uk/pages.json +++ b/public/language/uk/pages.json @@ -6,6 +6,7 @@ "popular-month": "Популярні теми цього місяця", "popular-alltime": "Популярні теми за весь час", "recent": "Свіжі теми", + "top": "Top Voted Topics", "moderator-tools": "Інструменти Модератора", "flagged-content": "Оскаржений вміст", "ip-blacklist": "Чорний список IP адрес", @@ -19,7 +20,7 @@ "users/search": "Пошук користувача", "notifications": "Сповіщення", "tags": "Теги", - "tag": "Теми з тегом \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Зареєструвати акаунт", "registration-complete": "Реєстрацію завершено", "login": "Увійдіть в свій акаунт", diff --git a/public/language/uk/topic.json b/public/language/uk/topic.json index 5b464da5fe..defbf5c79a 100644 --- a/public/language/uk/topic.json +++ b/public/language/uk/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Не сповіщати мене про нові відповіді.
Показувати тему в непрочитаних якщо категорія не ігнорується.", "ignoring.description": "Не сповіщати мене про нові відповіді.
Не показувати тему в непрочитаних.", "thread_tools.title": "Інструменти теми", - "thread_tools.markAsUnreadForAll": "Відмітити всі непрочитаними", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Прикріпити тему", "thread_tools.unpin": "Відкріпити тему", "thread_tools.lock": "Заблокувати тему", diff --git a/public/language/vi/admin/appearance/customise.json b/public/language/vi/admin/appearance/customise.json index a1220ec96d..56c11a2805 100644 --- a/public/language/vi/admin/appearance/customise.json +++ b/public/language/vi/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "Custom 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-js": "Custom Javascript", "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", diff --git a/public/language/vi/admin/general/homepage.json b/public/language/vi/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/vi/admin/general/homepage.json +++ b/public/language/vi/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/vi/admin/manage/tags.json b/public/language/vi/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/vi/admin/manage/tags.json +++ b/public/language/vi/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/vi/admin/manage/users.json b/public/language/vi/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/vi/admin/manage/users.json +++ b/public/language/vi/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/vi/admin/menu.json b/public/language/vi/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/vi/admin/menu.json +++ b/public/language/vi/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/vi/admin/settings/chat.json b/public/language/vi/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/vi/admin/settings/chat.json +++ b/public/language/vi/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/vi/admin/settings/post.json b/public/language/vi/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/vi/admin/settings/post.json +++ b/public/language/vi/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/vi/admin/settings/reputation.json b/public/language/vi/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/vi/admin/settings/reputation.json +++ b/public/language/vi/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/vi/error.json b/public/language/vi/error.json index 490b661dd3..1dafaeed1f 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Thông tin đăng nhập không hợp lệ", "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", "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", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "Bạn không được phép chỉnh sửa tin nhắn này", "cant-remove-last-user": "Bạn không thể xoá thành viên cuối cùng", "cant-delete-chat-message": "Bạn không được phép xoá tin nhắn này", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "Bạn đã bỏ phiếu cho bài viết này", "reputation-system-disabled": "Hệ thống tín nhiệm đã bị vô hiệu hóa.", "downvoting-disabled": "Downvote đã bị tắt", "not-enough-reputation-to-downvote": "Bạn không có đủ phiếu tín nhiệm để downvote bài này", "not-enough-reputation-to-flag": "Bạn không đủ tín nhiệm để đánh dấu bài viết này", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "Bạn đã gắn cờ cho bài viết này", "self-vote": "Bạn không thể tự bầu cho bài đăng của mình", "reload-failed": "NodeBB gặp lỗi trong khi tải lại: \"%1\". NodeBB sẽ tiếp tục hoạt động với dữ liệu trước đó, tuy nhiên bạn nên tháo gỡ những gì bạn vừa thực hiện trước khi tải lại.", diff --git a/public/language/vi/global.json b/public/language/vi/global.json index 5049b7bed2..6ea98a4224 100644 --- a/public/language/vi/global.json +++ b/public/language/vi/global.json @@ -53,6 +53,7 @@ "topics": "Số Chủ đề", "posts": "Số bài viết", "best": "Hay nhất", + "votes": "Votes", "upvoters": "Tán thành", "upvoted": "Tán thành", "downvoters": "Phản đối", diff --git a/public/language/vi/pages.json b/public/language/vi/pages.json index c70ca5e399..aaaf1fa196 100644 --- a/public/language/vi/pages.json +++ b/public/language/vi/pages.json @@ -6,6 +6,7 @@ "popular-month": "Chủ đề nổi bật tháng này", "popular-alltime": "Chủ đề nổi bật mọi thời đại", "recent": "Chủ đề gần đây", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "Tìm kiếm thành viên", "notifications": "Thông báo", "tags": "Tag", - "tag": "Chủ đề được gắn tag \"%1\"", + "tag": "Topics tagged under "%1"", "register": "Đăng ký một tài khoản mới", "registration-complete": "Đăng ký hoàn tất", "login": "Đăng nhập vào tài khoản của bạn", diff --git a/public/language/vi/topic.json b/public/language/vi/topic.json index c59553269d..cb48aab895 100644 --- a/public/language/vi/topic.json +++ b/public/language/vi/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "Không thông báo tôi các trả lời mới.
Hiển thị mục chưa đọc nếu danh mục bị bỏ qua.", "ignoring.description": "Không thông báo tôi các trả lời mới.
Không hiển thị các mục chưa đọc.", "thread_tools.title": "Công cụ", - "thread_tools.markAsUnreadForAll": "Đánh dấu tất cả thành chưa đọc", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "Pin chủ đề", "thread_tools.unpin": "Bỏ pin chủ đề", "thread_tools.lock": "Khóa chủ đề", diff --git a/public/language/zh-CN/admin/appearance/customise.json b/public/language/zh-CN/admin/appearance/customise.json index 8dfb53f0b1..f6cebac470 100644 --- a/public/language/zh-CN/admin/appearance/customise.json +++ b/public/language/zh-CN/admin/appearance/customise.json @@ -1,7 +1,7 @@ { - "custom-css": "自定义 CSS", - "custom-css.description": "在这里输入自定义 CSS 变量声明,它们将被添加在样式中。", - "custom-css.enable": "启用自定义 CSS", + "custom-css": "自定义 CSS/LESS", + "custom-css.description": "在这里输入你想应用于所有其他风格的 CSS/LESS,", + "custom-css.enable": "启用自定义 CSS/LESS", "custom-js": "自定义 Javascript", "custom-js.description": "在这里输入你想在页面加载完成后执行的 Javascript 代码。", diff --git a/public/language/zh-CN/admin/general/homepage.json b/public/language/zh-CN/admin/general/homepage.json index 03daa992af..8864e4eb34 100644 --- a/public/language/zh-CN/admin/general/homepage.json +++ b/public/language/zh-CN/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "请选择用户到达根 URL 时所显示的页面。", "home-page-route": "主页路由", "custom-route": "自定义路由", - "allow-user-home-pages": "允许用户主页" + "allow-user-home-pages": "允许用户主页", + "home-page-title": "首页标题(默认“Home”)" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/manage/categories.json b/public/language/zh-CN/admin/manage/categories.json index 63f94bdebe..11b0edf6fc 100644 --- a/public/language/zh-CN/admin/manage/categories.json +++ b/public/language/zh-CN/admin/manage/categories.json @@ -10,7 +10,7 @@ "custom-class": "自定义 Class", "num-recent-replies": "最近回复数", "ext-link": "外部链接", - "is-section": "将该板块作为段落", + "is-section": "将该版块作为段落", "upload-image": "上传图片", "delete-image": "移除", "category-image": "版块图片", diff --git a/public/language/zh-CN/admin/manage/groups.json b/public/language/zh-CN/admin/manage/groups.json index dc2149046f..ece5256910 100644 --- a/public/language/zh-CN/admin/manage/groups.json +++ b/public/language/zh-CN/admin/manage/groups.json @@ -1,7 +1,7 @@ { "name": "群组名", "description": "群组描述", - "member-count": "成员数", + "member-count": "成员数量", "system": "系统群组", "edit": "编辑", "search-placeholder": "搜索", @@ -10,9 +10,9 @@ "create-button": "创建", "alerts.create-failure": "哦不!

创建您的群组时出现问题。 请稍后再试!

", - "alerts.confirm-delete": "确认要删除这个群组么?", + "alerts.confirm-delete": "你确定要删除此群组吗?", - "edit.name": "名字", + "edit.name": "名称", "edit.description": "描述", "edit.user-title": "成员标题", "edit.icon": "群组标志", diff --git a/public/language/zh-CN/admin/manage/tags.json b/public/language/zh-CN/admin/manage/tags.json index bef7caba4e..3c8394d360 100644 --- a/public/language/zh-CN/admin/manage/tags.json +++ b/public/language/zh-CN/admin/manage/tags.json @@ -6,6 +6,7 @@ "description": "通过点击或拖动选择话题,按住shift进行多选。", "create": "创建话题", "modify": "修改话题", + "rename": "重命名话题", "delete": "删除所选话题", "search": "搜索话题...", "settings": "点击此处 访问话题设置页面。", diff --git a/public/language/zh-CN/admin/manage/users.json b/public/language/zh-CN/admin/manage/users.json index 8201df27c6..1db4cafdc1 100644 --- a/public/language/zh-CN/admin/manage/users.json +++ b/public/language/zh-CN/admin/manage/users.json @@ -27,8 +27,10 @@ "pills.banned": "被封禁", "pills.search": "搜寻用户", + "search.uid": "通过用户名", + "search.uid-placeholder": "搜索用户ID", "search.username": "通过用户名", - "search.username-placeholder": "输入你想找的用户名", + "search.username-placeholder": "输入你想查询的用户名", "search.email": "通过邮箱", "search.email-placeholder": "输入你想查询的邮箱地址", "search.ip": "通过IP地址", @@ -66,12 +68,18 @@ "alerts.ban-success": "用户已封禁!", "alerts.button-ban-x": "封禁 %1 名用户", "alerts.unban-success": "用户已解封!", - "alerts.lockout-reset-success": "闭锁已重置!", + "alerts.lockout-reset-success": "锁定已重置!", "alerts.flag-reset-success": "举报已重置!", "alerts.no-remove-yourself-admin": "你无法撤销自己的管理员身份!", - "alerts.make-admin-success": "这些用户现在是管理员了。", - "alerts.confirm-remove-admin": "你确定要移除管理员吗?", - "alerts.remove-admin-success": "这些用户不再是管理员了。", + "alerts.make-admin-success": "该用户已成为管理员", + "alerts.confirm-remove-admin": "你确定要删除该管理员?", + "alerts.remove-admin-success": " 该用户不再是管理员", + "alerts.make-global-mod-success": " 该用户已成为管理员", + "alerts.confirm-remove-global-mod": "你确定要删除该管理员?", + "alerts.remove-global-mod-success": "该用户已不再是管理员", + "alerts.make-moderator-success": " 该用户已成为管理员", + "alerts.confirm-remove-moderator": "你确定要删除此管理员?", + "alerts.remove-moderator-success": "该用户已不再是管理员", "alerts.confirm-validate-email": "你确定要验证这些用户的电子邮箱吗?", "alerts.validate-email-success": "电子邮箱已验证", "alerts.password-reset-confirm": "你确定要向这些用户发送密码重置邮件吗?", diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json index 943d7c8b76..a44c8d9f94 100644 --- a/public/language/zh-CN/admin/menu.json +++ b/public/language/zh-CN/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "管理", "manage/categories": "版块", + "manage/privileges": "权限", "manage/tags": "话题", "manage/users": "用户", + "manage/admins-mods": "管理员插件", "manage/registration": "注册申请", "manage/post-queue": "提交列表", "manage/groups": "群组", diff --git a/public/language/zh-CN/admin/settings/chat.json b/public/language/zh-CN/admin/settings/chat.json index de0b292748..6228ed8410 100644 --- a/public/language/zh-CN/admin/settings/chat.json +++ b/public/language/zh-CN/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "管理员和超级管理员不受此限制", "max-length": "聊天信息的最大长度", "max-room-size": "聊天室的最多用户数", - "delay": "聊天信息间的毫秒数" + "delay": "聊天信息间的毫秒数", + "restrictions.seconds-edit-after": "用户在发布后允许编辑帖子的时间(0为禁用,单位:秒)", + "restrictions.seconds-delete-after": "用户在发布后允许删除帖子的时间(0为禁用,单位:秒)" } \ 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 fcddda5165..02761f9ad7 100644 --- a/public/language/zh-CN/admin/settings/post.json +++ b/public/language/zh-CN/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "最多投票", "sorting.most-posts": "最多回复", "sorting.topic-default": "默认主题排序", + "length": "帖子长度", "restrictions": "发帖限制", + "restrictions-new": "新用户限制", "restrictions.post-queue": "启用发布队列", + "restrictions-new.post-queue": "启用新的用户限制", "restrictions.post-queue-help": "启用发布队列将会使新用户的发布内容进入批准队列", - "restrictions.seconds-between": "发帖间隔(单位:秒)", - "restrictions.seconds-between-new": "对于新用户的发帖间隔(单位:秒)", + "restrictions-new.post-queue-help": "启用新的用户限制将对新用户创建的帖子设置限制。", + "restrictions.seconds-between": "秒之间的帖子", + "restrictions.seconds-between-new": "新用户发帖间隔(单位:秒)", "restrictions.rep-threshold": "取消发帖限制所需的声望值", "restrictions.seconds-defore-new": "见习时间(单位:秒)", "restrictions.seconds-edit-after": "用户在发布后允许编辑帖子的时间(0为禁用,单位:秒)", - "restrictions.seconds-delete-after": "用户在发布后允许删除帖子的时间(0为禁用,单位:秒)", + "restrictions.seconds-delete-after": "用户在发布后允许编辑帖子的时间(0为禁用,单位:秒)", "restrictions.replies-no-delete": "在用户被禁止删除自己的主题后的回复数。 (0为禁用) ", "restrictions.min-title-length": "最小标题长度", "restrictions.max-title-length": "最大标题长度", "restrictions.min-post-length": "最小帖子长度", "restrictions.max-post-length": "最大帖子长度", - "restrictions.days-until-stale": "主题过期时间(单位:天)", + "restrictions.days-until-stale": "天,直到话题被视为失效", "restrictions.stale-help": "如果某个主题被视为“过时”,则会向尝试回复该主题的用户显示警告。", "timestamp": "时间戳", "timestamp.cut-off": "日期截止日期(单位:天)", diff --git a/public/language/zh-CN/admin/settings/reputation.json b/public/language/zh-CN/admin/settings/reputation.json index ec3f657d1e..775c975840 100644 --- a/public/language/zh-CN/admin/settings/reputation.json +++ b/public/language/zh-CN/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "所有投票是公开的", "thresholds": "活动闸值", "min-rep-downvote": "踩帖子所需要声望的最小值", - "min-rep-flag": "举报帖子需要的最小声望" + "min-rep-flag": "举报帖子需要的最小声望", + "min-rep-website": "设置网站所需要的最小声望", + "min-rep-aboutme": "设置关于我所需要的最小声望", + "min-rep-signature": "设置签名档所需要的最小声望" } \ No newline at end of file diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json index d0f3a62642..9c5344881a 100644 --- a/public/language/zh-CN/error.json +++ b/public/language/zh-CN/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "无效登录凭证", "invalid-username-or-password": "请确认用户名和密码", "invalid-search-term": "无效的搜索关键字", + "invalid-url": "无效的 URL", "csrf-invalid": "可能是由于会话过期,登录失败。请重试。", "invalid-pagination-value": "无效的分页数值,必须介于 %1 和 %2 之间", "username-taken": "此用户名已被占用", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "您不能编辑这条信息", "cant-remove-last-user": "您不能移除这个用户", "cant-delete-chat-message": "您不允许删除这条消息", + "chat-edit-duration-expired": "您只能在发布 %1 秒后修改聊天信息", + "chat-delete-duration-expired": "您只能在发布 %1 秒后删除聊天信息", "already-voting-for-this-post": "您已为此帖回复投过票了。", "reputation-system-disabled": "声望系统已禁用。", "downvoting-disabled": "踩已被禁用", "not-enough-reputation-to-downvote": "您的声望不足以踩此帖", "not-enough-reputation-to-flag": "您的声望不足以举报此帖", + "not-enough-reputation-min-rep-website": "你的声望不足以设置网站", + "not-enough-reputation-min-rep-aboutme": "你的声望不足以设置关于我", + "not-enough-reputation-min-rep-signature": "你的声望不足以设置签名档", "already-flagged": "您已举报此帖", "self-vote": "你不能在您自己的帖子内投票", "reload-failed": "刷新 NodeBB 时遇到问题: \"%1\"。NodeBB 保持给已连接的客户端服务,您应该撤销刷新前做的更改。", diff --git a/public/language/zh-CN/global.json b/public/language/zh-CN/global.json index 3fca087799..7bc70157b7 100644 --- a/public/language/zh-CN/global.json +++ b/public/language/zh-CN/global.json @@ -53,6 +53,7 @@ "topics": "主题", "posts": "帖子", "best": "最佳", + "votes": "投票", "upvoters": "顶的人", "upvoted": "顶", "downvoters": "踩的人", diff --git a/public/language/zh-CN/pages.json b/public/language/zh-CN/pages.json index f6dffdf534..2b0c8e73e2 100644 --- a/public/language/zh-CN/pages.json +++ b/public/language/zh-CN/pages.json @@ -6,6 +6,7 @@ "popular-month": "当月热门话题", "popular-alltime": "热门主题", "recent": "最新主题", + "top": "票数最高的主题", "moderator-tools": "版主工具", "flagged-content": "已举报的内容", "ip-blacklist": "IP 黑名单", @@ -19,7 +20,7 @@ "users/search": "会员搜索", "notifications": "提醒", "tags": "话题", - "tag": "\"%1\" 下的主题", + "tag": "话题为\"%1\"的主题", "register": "注册帐号", "registration-complete": "注册完成", "login": "登录帐号", diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json index 92dfcc59f2..6f9f559818 100644 --- a/public/language/zh-CN/topic.json +++ b/public/language/zh-CN/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "不要在有新回复时通知我。
如果这个版块未被忽略则在未读主题中显示。", "ignoring.description": "不要在有新回复时通知我。
不要在未读主题中显示该主题。", "thread_tools.title": "主题工具", - "thread_tools.markAsUnreadForAll": "标记全部未读", + "thread_tools.markAsUnreadForAll": "标记全部为未读", "thread_tools.pin": "置顶主题", "thread_tools.unpin": "取消置顶主题", "thread_tools.lock": "锁定主题", diff --git a/public/language/zh-CN/unread.json b/public/language/zh-CN/unread.json index 54932aef1d..a1e5751a7c 100644 --- a/public/language/zh-CN/unread.json +++ b/public/language/zh-CN/unread.json @@ -9,7 +9,7 @@ "topics_marked_as_read.success": "主题被标为已读!", "all-topics": "全部主题", "new-topics": "新建主题", - "watched-topics": "看过的主题", + "watched-topics": "关注主题", "unreplied-topics": "未回复主题", "multiple-categories-selected": "多选" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/advanced/errors.json b/public/language/zh-TW/admin/advanced/errors.json index a0fefb4190..1b29af32d4 100644 --- a/public/language/zh-TW/admin/advanced/errors.json +++ b/public/language/zh-TW/admin/advanced/errors.json @@ -8,7 +8,7 @@ "clear-error-log": "清除錯誤日誌", "route": "路由", "count": "計數", - "no-routes-not-found": "Hooray! No 404 errors!", + "no-routes-not-found": "萬歲!沒有404 錯誤!", "clear404-confirm": "您確定要清除404錯誤日誌嗎?", "clear404-success": "\"404 Not Found\" 錯誤已清除" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/advanced/events.json b/public/language/zh-TW/admin/advanced/events.json index 766eb5e951..acbc890fb2 100644 --- a/public/language/zh-TW/admin/advanced/events.json +++ b/public/language/zh-TW/admin/advanced/events.json @@ -1,6 +1,6 @@ { - "events": "Events", - "no-events": "There are no events", - "control-panel": "Events Control Panel", - "delete-events": "Delete Events" + "events": "事件", + "no-events": "沒有事件", + "control-panel": "事件控制面板", + "delete-events": "刪除事件" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/advanced/logs.json b/public/language/zh-TW/admin/advanced/logs.json index b9de400e1c..c01e1dce11 100644 --- a/public/language/zh-TW/admin/advanced/logs.json +++ b/public/language/zh-TW/admin/advanced/logs.json @@ -1,7 +1,7 @@ { - "logs": "Logs", - "control-panel": "Logs Control Panel", - "reload": "Reload Logs", - "clear": "Clear Logs", - "clear-success": "Logs Cleared!" + "logs": "日誌", + "control-panel": "日誌控制面板", + "reload": "重載日誌", + "clear": "清除日誌", + "clear-success": "清除日誌!" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/appearance/customise.json b/public/language/zh-TW/admin/appearance/customise.json index a1220ec96d..c663326724 100644 --- a/public/language/zh-TW/admin/appearance/customise.json +++ b/public/language/zh-TW/admin/appearance/customise.json @@ -1,13 +1,13 @@ { - "custom-css": "Custom CSS", - "custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.", - "custom-css.enable": "Enable Custom CSS", + "custom-css": "自定義 CSS/LESS", + "custom-css.description": "在這裡輸入你想應用于所有其他風格的 CSS/LESS,", + "custom-css.enable": "啟用自定義 CSS/LESS", - "custom-js": "Custom 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": "自定義Javascript", + "custom-js.description": "在這裡輸入你想應用于完全加載頁后執行的 javascript。", + "custom-js.enable": "啟用自定義 Javascript", - "custom-header": "Custom Header", + "custom-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.enable": "Enable Custom Header", diff --git a/public/language/zh-TW/admin/general/homepage.json b/public/language/zh-TW/admin/general/homepage.json index 4866b8baf6..7428d59eeb 100644 --- a/public/language/zh-TW/admin/general/homepage.json +++ b/public/language/zh-TW/admin/general/homepage.json @@ -3,5 +3,6 @@ "description": "Choose what page is shown when users navigate to the root URL of your forum.", "home-page-route": "Home Page Route", "custom-route": "Custom Route", - "allow-user-home-pages": "Allow User Home Pages" + "allow-user-home-pages": "Allow User Home Pages", + "home-page-title": "Title of the home page (default \"Home\")" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/manage/tags.json b/public/language/zh-TW/admin/manage/tags.json index db40e9f098..df597a6166 100644 --- a/public/language/zh-TW/admin/manage/tags.json +++ b/public/language/zh-TW/admin/manage/tags.json @@ -6,6 +6,7 @@ "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...", "settings": "Click here to visit the tag settings page.", diff --git a/public/language/zh-TW/admin/manage/users.json b/public/language/zh-TW/admin/manage/users.json index f1651a814b..2e4cfa2a5c 100644 --- a/public/language/zh-TW/admin/manage/users.json +++ b/public/language/zh-TW/admin/manage/users.json @@ -27,6 +27,8 @@ "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", @@ -69,9 +71,15 @@ "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(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", + "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)?", diff --git a/public/language/zh-TW/admin/menu.json b/public/language/zh-TW/admin/menu.json index 2b836ed0f7..8f44bcd304 100644 --- a/public/language/zh-TW/admin/menu.json +++ b/public/language/zh-TW/admin/menu.json @@ -9,8 +9,10 @@ "section-manage": "Manage", "manage/categories": "Categories", + "manage/privileges": "Privileges", "manage/tags": "Tags", "manage/users": "Users", + "manage/admins-mods": "Admins & Mods", "manage/registration": "Registration Queue", "manage/post-queue": "Post Queue", "manage/groups": "Groups", diff --git a/public/language/zh-TW/admin/settings/chat.json b/public/language/zh-TW/admin/settings/chat.json index 0b22127341..c538790b95 100644 --- a/public/language/zh-TW/admin/settings/chat.json +++ b/public/language/zh-TW/admin/settings/chat.json @@ -5,5 +5,7 @@ "disable-editing-help": "Administrators and global moderators are exempt from this restriction", "max-length": "Maximum length of chat messages", "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "delay": "Time between chat messages in milliseconds", + "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)" } \ No newline at end of file diff --git a/public/language/zh-TW/admin/settings/post.json b/public/language/zh-TW/admin/settings/post.json index 7cef2f34a0..6a1ab9a2a5 100644 --- a/public/language/zh-TW/admin/settings/post.json +++ b/public/language/zh-TW/admin/settings/post.json @@ -6,21 +6,25 @@ "sorting.most-votes": "Most Votes", "sorting.most-posts": "Most Posts", "sorting.topic-default": "Default Topic Sorting", + "length": "Post Length", "restrictions": "Posting Restrictions", + "restrictions-new": "New User Restrictions", "restrictions.post-queue": "Enable post queue", + "restrictions-new.post-queue": "Enable new user restrictions", "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", + "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 users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", + "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.min-title-length": "Minimum Title Length", "restrictions.max-title-length": "Maximum Title Length", "restrictions.min-post-length": "Minimum Post Length", "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", + "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.cut-off": "Date cut-off (in days)", diff --git a/public/language/zh-TW/admin/settings/reputation.json b/public/language/zh-TW/admin/settings/reputation.json index f0e59e8db9..c698592cff 100644 --- a/public/language/zh-TW/admin/settings/reputation.json +++ b/public/language/zh-TW/admin/settings/reputation.json @@ -5,5 +5,8 @@ "votes-are-public": "All Votes Are Public", "thresholds": "Activity Thresholds", "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "min-rep-flag": "Minimum reputation to flag posts", + "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" } \ No newline at end of file diff --git a/public/language/zh-TW/error.json b/public/language/zh-TW/error.json index 152dad5f0d..325fa6d8f5 100644 --- a/public/language/zh-TW/error.json +++ b/public/language/zh-TW/error.json @@ -17,6 +17,7 @@ "invalid-login-credentials": "Invalid login credentials", "invalid-username-or-password": "請指定帳號和密碼", "invalid-search-term": "無效的搜索字詞", + "invalid-url": "Invalid URL", "csrf-invalid": "我們無法讓你登入,似乎是因為連線階段已到期。請再重試一次。", "invalid-pagination-value": "無效的分頁數值, 必需是至少 %1 與最多 %2", "username-taken": "該使用者名稱已被使用", @@ -113,11 +114,16 @@ "cant-edit-chat-message": "你不被允許編輯這條訊息", "cant-remove-last-user": "你不能移除最後的使用者", "cant-delete-chat-message": "你不被允許刪除這條訊息", + "chat-edit-duration-expired": "You are only allowed to edit chat messages for %1 second(s) after posting", + "chat-delete-duration-expired": "You are only allowed to delete chat messages for %1 second(s) after posting", "already-voting-for-this-post": "你已經對這個張貼投過票了", "reputation-system-disabled": "信譽系統已停用。", "downvoting-disabled": "反向投票已停用", "not-enough-reputation-to-downvote": "你沒有足夠的信譽可以對這個張貼進行反向投票", "not-enough-reputation-to-flag": "你沒有足夠的信譽來舉報這個帖子", + "not-enough-reputation-min-rep-website": "You do not have enough reputation to add a website", + "not-enough-reputation-min-rep-aboutme": "You do not have enough reputation to add an about me", + "not-enough-reputation-min-rep-signature": "You do not have enough reputation to add a signature", "already-flagged": "你已經對這個張貼標記過了", "self-vote": "You cannot vote on your own post", "reload-failed": "NodeBB重載\"%1\"時遇到了問題。 NodeBB將繼續提供現有的客戶端資源,但請你撤消重載前的動作。", diff --git a/public/language/zh-TW/global.json b/public/language/zh-TW/global.json index b1a7fbd6c3..414562a77d 100644 --- a/public/language/zh-TW/global.json +++ b/public/language/zh-TW/global.json @@ -53,6 +53,7 @@ "topics": "主題", "posts": "張貼", "best": "最棒", + "votes": "Votes", "upvoters": "正向投票", "upvoted": "正向投票", "downvoters": "負向投票", diff --git a/public/language/zh-TW/pages.json b/public/language/zh-TW/pages.json index 168f76b180..43749be35d 100644 --- a/public/language/zh-TW/pages.json +++ b/public/language/zh-TW/pages.json @@ -6,6 +6,7 @@ "popular-month": "本月受歡迎的主題", "popular-alltime": "所有時間受歡迎的主題", "recent": "近期的主題", + "top": "Top Voted Topics", "moderator-tools": "Moderator Tools", "flagged-content": "Flagged Content", "ip-blacklist": "IP Blacklist", @@ -19,7 +20,7 @@ "users/search": "使用者搜尋", "notifications": "新訊息通知", "tags": "標籤", - "tag": "有\"%1\"標籤的主題", + "tag": "Topics tagged under "%1"", "register": "註冊帳號", "registration-complete": "Registration complete", "login": "登入帳號", diff --git a/public/language/zh-TW/topic.json b/public/language/zh-TW/topic.json index bcfd71fb09..1257151fbf 100644 --- a/public/language/zh-TW/topic.json +++ b/public/language/zh-TW/topic.json @@ -52,7 +52,7 @@ "not-watching.description": "有新的回覆不用通知我。
如果類別不是被忽略的,在未讀頁中顯示主題。", "ignoring.description": "有新的回覆不用通知我。
在未讀頁中不顯示主題。", "thread_tools.title": "主題工具箱", - "thread_tools.markAsUnreadForAll": "Mark unread for all", + "thread_tools.markAsUnreadForAll": "Mark Unread For All", "thread_tools.pin": "釘選主題", "thread_tools.unpin": "取消釘選主題", "thread_tools.lock": "鎖定主題", diff --git a/public/less/admin/admin.less b/public/less/admin/admin.less index 124be23b5c..d7cd7e6ae4 100644 --- a/public/less/admin/admin.less +++ b/public/less/admin/admin.less @@ -14,6 +14,7 @@ @import "./manage/groups"; @import "./manage/registration"; @import "./manage/users"; +@import "./manage/admins-mods"; @import "./appearance/customise"; @import "./appearance/themes"; @import "./extend/plugins"; diff --git a/public/less/admin/manage/admins-mods.less b/public/less/admin/manage/admins-mods.less new file mode 100644 index 0000000000..0bf7ac46cd --- /dev/null +++ b/public/less/admin/manage/admins-mods.less @@ -0,0 +1,27 @@ +.admins-mods { + .user-card { + margin-right: 10px; + padding: 2px; + } + + .remove-user-icon { + margin-right: 5px; + margin-left: 5px; + } + + .category-depth-1 { + margin-left: 30px; + } + .category-depth-2 { + margin-left: 60px; + } + .category-depth-3 { + margin-left: 90px; + } + .category-depth-4 { + margin-left: 120px; + } + .category-depth-5 { + margin-left: 150px; + } +} \ No newline at end of file diff --git a/public/src/admin/admin.js b/public/src/admin/admin.js index 3dc22afd62..be224d2812 100644 --- a/public/src/admin/admin.js +++ b/public/src/admin/admin.js @@ -31,8 +31,6 @@ } $(document).ready(function () { - setupKeybindings(); - if (!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { require(['admin/modules/search'], function (search) { search.init(); @@ -63,24 +61,6 @@ }); } - function setupKeybindings() { - require(['mousetrap', 'admin/modules/instance'], function (mousetrap, instance) { - mousetrap.bind('ctrl+shift+a r', function () { - instance.reload(); - }); - - mousetrap.bind('ctrl+shift+a R', function () { - socket.emit('admin.restart'); - }); - - mousetrap.bind('/', function () { - $('#acp-search input').focus(); - - return false; - }); - }); - } - function selectMenuItem(url) { require(['translator'], function (translator) { url = url diff --git a/public/src/admin/appearance/customise.js b/public/src/admin/appearance/customise.js index 86894f0d63..70393a50ae 100644 --- a/public/src/admin/appearance/customise.js +++ b/public/src/admin/appearance/customise.js @@ -14,7 +14,7 @@ define('admin/appearance/customise', ['admin/settings', 'ace/ace'], function (Se var customHTML = ace.edit('customHTML'); customCSS.setTheme('ace/theme/twilight'); - customCSS.getSession().setMode('ace/mode/css'); + customCSS.getSession().setMode('ace/mode/less'); customCSS.on('change', function () { app.flags = app.flags || {}; diff --git a/public/src/admin/general/dashboard.js b/public/src/admin/general/dashboard.js index e4023745f8..ac5cf47546 100644 --- a/public/src/admin/general/dashboard.js +++ b/public/src/admin/general/dashboard.js @@ -217,6 +217,10 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' }; trafficCanvas.width = $(trafficCanvas).parent().width(); + + data.datasets[0].yAxisID = 'left-y-axis'; + data.datasets[1].yAxisID = 'right-y-axis'; + graphs.traffic = new Chart(trafficCtx, { type: 'line', data: data, @@ -227,9 +231,20 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' }, scales: { yAxes: [{ + id: 'left-y-axis', ticks: { beginAtZero: true, }, + type: 'linear', + position: 'left', + }, { + id: 'right-y-axis', + ticks: { + beginAtZero: true, + suggestedMax: 10, + }, + type: 'linear', + position: 'right', }], }, tooltips: { diff --git a/public/src/admin/manage/admins-mods.js b/public/src/admin/manage/admins-mods.js new file mode 100644 index 0000000000..9f642f1456 --- /dev/null +++ b/public/src/admin/manage/admins-mods.js @@ -0,0 +1,142 @@ +'use strict'; + +define('admin/manage/admins-mods', ['translator', 'benchpress', 'autocomplete'], function (translator, Benchpress, autocomplete) { + var AdminsMods = {}; + + AdminsMods.init = function () { + autocomplete.user($('#admin-search'), function (ev, ui) { + socket.emit('admin.user.makeAdmins', [ui.item.user.uid], function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/users:alerts.make-admin-success]]'); + $('#admin-search').val(''); + + if ($('.administrator-area [data-uid="' + ui.item.user.uid + '"]').length) { + return; + } + + app.parseAndTranslate('admin/manage/admins-mods', 'admins.members', { admins: { members: [ui.item.user] } }, function (html) { + $('.administrator-area').prepend(html); + }); + }); + }); + + $('.administrator-area').on('click', '.remove-user-icon', function () { + var userCard = $(this).parents('[data-uid]'); + var uid = userCard.attr('data-uid'); + if (parseInt(uid, 10) === parseInt(app.user.uid, 10)) { + return app.alertError('[[admin/manage/users:alerts.no-remove-yourself-admin]]'); + } + bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-admin]]', function (confirm) { + if (confirm) { + socket.emit('admin.user.removeAdmins', [uid], function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/users:alerts.remove-admin-success]]'); + userCard.remove(); + }); + } + }); + }); + + autocomplete.user($('#global-mod-search'), function (ev, ui) { + socket.emit('admin.groups.join', { + groupName: 'Global Moderators', + uid: ui.item.user.uid, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/users:alerts.make-global-mod-success]]'); + $('#global-mod-search').val(''); + + if ($('.global-moderator-area [data-uid="' + ui.item.user.uid + '"]').length) { + return; + } + + app.parseAndTranslate('admin/manage/admins-mods', 'globalMods.members', { globalMods: { members: [ui.item.user] } }, function (html) { + $('.global-moderator-area').prepend(html); + $('#no-global-mods-warning').addClass('hidden'); + }); + }); + }); + + $('.global-moderator-area').on('click', '.remove-user-icon', function () { + var userCard = $(this).parents('[data-uid]'); + var uid = userCard.attr('data-uid'); + + bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-global-mod]]', function (confirm) { + if (confirm) { + socket.emit('admin.groups.leave', { uid: uid, groupName: 'Global Moderators' }, function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/users:alerts.remove-global-mod-success]]'); + userCard.remove(); + if (!$('.global-moderator-area').children().length) { + $('#no-global-mods-warning').removeClass('hidden'); + } + }); + } + }); + }); + + + autocomplete.user($('.moderator-search'), function (ev, ui) { + var input = $(ev.target); + var cid = $(ev.target).attr('data-cid'); + socket.emit('admin.categories.setPrivilege', { + cid: cid, + privilege: ['moderate'], + set: true, + member: ui.item.user.uid, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/users:alerts.make-moderator-success]]'); + input.val(''); + + if ($('.moderator-area[data-cid="' + cid + '"] [data-uid="' + ui.item.user.uid + '"]').length) { + return; + } + + app.parseAndTranslate('admin/manage/admins-mods', 'globalMods', { globalMods: [ui.item.user] }, function (html) { + $('.moderator-area[data-cid="' + cid + '"]').prepend(html); + $('.no-moderator-warning[data-cid="' + cid + '"]').addClass('hidden'); + }); + }); + }); + + $('.moderator-area').on('click', '.remove-user-icon', function () { + var moderatorArea = $(this).parents('[data-cid]'); + var cid = moderatorArea.attr('data-cid'); + var userCard = $(this).parents('[data-uid]'); + var uid = userCard.attr('data-uid'); + + bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-moderator]]', function (confirm) { + if (confirm) { + socket.emit('admin.categories.setPrivilege', { + cid: cid, + privilege: ['moderate'], + set: false, + member: uid, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/users:alerts.remove-moderator-success]]'); + userCard.remove(); + if (!moderatorArea.children().length) { + $('.no-moderator-warning[data-cid="' + cid + '"]').removeClass('hidden'); + } + }); + } + }); + }); + }; + + return AdminsMods; +}); diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index 8ac0ecdf15..fb4ae062b8 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -1,6 +1,5 @@ 'use strict'; - define('admin/manage/category', [ 'uploader', 'iconSelect', @@ -8,8 +7,7 @@ define('admin/manage/category', [ 'autocomplete', 'translator', 'categorySelector', - 'benchpress', -], function (uploader, iconSelect, colorpicker, autocomplete, translator, categorySelector, Benchpress) { +], function (uploader, iconSelect, colorpicker, autocomplete, translator, categorySelector) { var Category = {}; var modified_categories = {}; @@ -100,7 +98,7 @@ define('admin/manage/category', [ }); $('.copy-settings').on('click', function () { - selectCategoryModal(function (cid) { + categorySelector.modal(function (cid) { socket.emit('admin.categories.copySettingsFrom', { fromCid: cid, toCid: ajaxify.data.category.cid }, function (err) { if (err) { return app.alertError(err.message); @@ -169,8 +167,6 @@ define('admin/manage/category', [ $('button[data-action="setParent"]').removeClass('hide'); }); }); - - Category.setupPrivilegeTable(); }; function modified(el) { @@ -208,102 +204,12 @@ define('admin/manage/category', [ }); } - Category.setupPrivilegeTable = function () { - $('.privilege-table-container').on('change', 'input[type="checkbox"]', function () { - var checkboxEl = $(this); - var privilege = checkboxEl.parent().attr('data-privilege'); - var state = checkboxEl.prop('checked'); - var rowEl = checkboxEl.parents('tr'); - var member = rowEl.attr('data-group-name') || rowEl.attr('data-uid'); - var isPrivate = parseInt(rowEl.attr('data-private') || 0, 10); - var isGroup = rowEl.attr('data-group-name') !== undefined; - - if (member) { - if (isGroup && privilege === 'groups:moderate' && !isPrivate && state) { - bootbox.confirm('[[admin/manage/categories:alert.confirm-moderate]]', function (confirm) { - if (confirm) { - Category.setPrivilege(member, privilege, state, checkboxEl); - } else { - checkboxEl.prop('checked', !checkboxEl.prop('checked')); - } - }); - } else { - Category.setPrivilege(member, privilege, state, checkboxEl); - } - } else { - app.alertError('[[error:invalid-data]]'); - } - }); - - $('.privilege-table-container').on('click', '[data-action="search.user"]', Category.addUserToPrivilegeTable); - $('.privilege-table-container').on('click', '[data-action="search.group"]', Category.addGroupToPrivilegeTable); - $('.privilege-table-container').on('click', '[data-action="copyToChildren"]', Category.copyPrivilegesToChildren); - $('.privilege-table-container').on('click', '[data-action="copyPrivilegesFrom"]', Category.copyPrivilegesFromCategory); - - Category.exposeAssumedPrivileges(); - }; - - Category.refreshPrivilegeTable = function () { - socket.emit('admin.categories.getPrivilegeSettings', ajaxify.data.category.cid, function (err, privileges) { - if (err) { - return app.alertError(err.message); - } - - Benchpress.parse('admin/partials/categories/privileges', { - privileges: privileges, - }, function (html) { - translator.translate(html, function (html) { - $('.privilege-table-container').html(html); - Category.exposeAssumedPrivileges(); - }); - }); - }); - }; - - Category.exposeAssumedPrivileges = function () { - /* - If registered-users has a privilege enabled, then all users and groups of that privilege - should be assumed to have that privilege as well, even if not set in the db, so reflect - this arrangement in the table - */ - var privs = []; - $('.privilege-table tr[data-group-name="registered-users"] td input[type="checkbox"]').parent().each(function (idx, el) { - if ($(el).find('input').prop('checked')) { - privs.push(el.getAttribute('data-privilege')); - } - }); - for (var x = 0, numPrivs = privs.length; x < numPrivs; x += 1) { - var inputs = $('.privilege-table tr[data-group-name]:not([data-group-name="registered-users"],[data-group-name="guests"]) td[data-privilege="' + privs[x] + '"] input'); - inputs.each(function (idx, el) { - if (!el.checked) { - el.indeterminate = true; - } - }); - } - }; - - Category.setPrivilege = function (member, privilege, state, checkboxEl) { - socket.emit('admin.categories.setPrivilege', { - cid: ajaxify.data.category.cid, - privilege: privilege, - set: state, - member: member, - }, function (err) { - if (err) { - return app.alertError(err.message); - } - - checkboxEl.replaceWith(''); - Category.refreshPrivilegeTable(); - }); - }; - Category.launchParentSelector = function () { var categories = ajaxify.data.allCategories.filter(function (category) { return category && !category.disabled && parseInt(category.cid, 10) !== parseInt(ajaxify.data.category.cid, 10); }); - selectCategoryModal(categories, function (parentCid) { + categorySelector.modal(categories, function (parentCid) { var payload = {}; payload[ajaxify.data.category.cid] = { @@ -327,117 +233,5 @@ define('admin/manage/category', [ }); }; - Category.addUserToPrivilegeTable = function () { - var modal = bootbox.dialog({ - title: '[[admin/manage/categories:alert.find-user]]', - message: '', - show: true, - }); - - modal.on('shown.bs.modal', function () { - var inputEl = modal.find('input'); - - autocomplete.user(inputEl, function (ev, ui) { - socket.emit('admin.categories.setPrivilege', { - cid: ajaxify.data.category.cid, - privilege: ['find', 'read', 'topics:read'], - set: true, - member: ui.item.user.uid, - }, function (err) { - if (err) { - return app.alertError(err.message); - } - - Category.refreshPrivilegeTable(); - modal.modal('hide'); - }); - }); - }); - }; - - Category.addGroupToPrivilegeTable = function () { - var modal = bootbox.dialog({ - title: '[[admin/manage/categories:alert.find-group]]', - message: '', - show: true, - }); - - modal.on('shown.bs.modal', function () { - var inputEl = modal.find('input'); - - autocomplete.group(inputEl, function (ev, ui) { - socket.emit('admin.categories.setPrivilege', { - cid: ajaxify.data.category.cid, - privilege: ['groups:find', 'groups:read', 'groups:topics:read'], - set: true, - member: ui.item.group.name, - }, function (err) { - if (err) { - return app.alertError(err.message); - } - - Category.refreshPrivilegeTable(); - modal.modal('hide'); - }); - }); - }); - }; - - Category.copyPrivilegesToChildren = function () { - socket.emit('admin.categories.copyPrivilegesToChildren', ajaxify.data.category.cid, function (err) { - if (err) { - return app.alertError(err.message); - } - app.alertSuccess('Privileges copied!'); - }); - }; - - Category.copyPrivilegesFromCategory = function () { - selectCategoryModal(function (cid) { - socket.emit('admin.categories.copyPrivilegesFrom', { toCid: ajaxify.data.category.cid, fromCid: cid }, function (err) { - if (err) { - return app.alertError(err.message); - } - ajaxify.refresh(); - }); - }); - }; - - function selectCategoryModal(categories, callback) { - if (typeof categories === 'function') { - callback = categories; - categories = ajaxify.data.allCategories; - } - Benchpress.parse('admin/partials/categories/select-category', { - categories: categories, - }, function (html) { - translator.translate(html, function (html) { - var modal = bootbox.dialog({ - title: '[[modules:composer.select_category]]', - message: html, - buttons: { - save: { - label: '[[global:select]]', - className: 'btn-primary', - callback: submit, - }, - }, - }); - categorySelector.init(modal.find('[component="category-selector"]')); - function submit(ev) { - ev.preventDefault(); - var selectedCategory = categorySelector.getSelectedCategory(); - if (selectedCategory) { - callback(selectedCategory.cid); - modal.modal('hide'); - } - return false; - } - - modal.find('form').on('submit', submit); - }); - }); - } - return Category; }); diff --git a/public/src/admin/manage/privileges.js b/public/src/admin/manage/privileges.js new file mode 100644 index 0000000000..74aea3a195 --- /dev/null +++ b/public/src/admin/manage/privileges.js @@ -0,0 +1,194 @@ +'use strict'; + +define('admin/manage/privileges', [ + 'autocomplete', + 'translator', + 'benchpress', + 'categorySelector', +], function (autocomplete, translator, Benchpress, categorySelector) { + var Privileges = {}; + + var cid; + + Privileges.init = function () { + cid = ajaxify.data.cid || 0; + + $('#category-selector').on('change', function () { + var val = $(this).val(); + ajaxify.go('admin/manage/privileges/' + (val === 'global' ? '' : $(this).val())); + }); + + + Privileges.setupPrivilegeTable(); + }; + + Privileges.setupPrivilegeTable = function () { + $('.privilege-table-container').on('change', 'input[type="checkbox"]', function () { + var checkboxEl = $(this); + var privilege = checkboxEl.parent().attr('data-privilege'); + var state = checkboxEl.prop('checked'); + var rowEl = checkboxEl.parents('tr'); + var member = rowEl.attr('data-group-name') || rowEl.attr('data-uid'); + var isPrivate = parseInt(rowEl.attr('data-private') || 0, 10); + var isGroup = rowEl.attr('data-group-name') !== undefined; + + if (member) { + if (isGroup && privilege === 'groups:moderate' && !isPrivate && state) { + bootbox.confirm('[[admin/manage/categories:alert.confirm-moderate]]', function (confirm) { + if (confirm) { + Privileges.setPrivilege(member, privilege, state, checkboxEl); + } else { + checkboxEl.prop('checked', !checkboxEl.prop('checked')); + } + }); + } else { + Privileges.setPrivilege(member, privilege, state, checkboxEl); + } + } else { + app.alertError('[[error:invalid-data]]'); + } + }); + + $('.privilege-table-container').on('click', '[data-action="search.user"]', Privileges.addUserToPrivilegeTable); + $('.privilege-table-container').on('click', '[data-action="search.group"]', Privileges.addGroupToPrivilegeTable); + $('.privilege-table-container').on('click', '[data-action="copyToChildren"]', Privileges.copyPrivilegesToChildren); + $('.privilege-table-container').on('click', '[data-action="copyPrivilegesFrom"]', Privileges.copyPrivilegesFromCategory); + + Privileges.exposeAssumedPrivileges(); + }; + + Privileges.refreshPrivilegeTable = function () { + socket.emit('admin.categories.getPrivilegeSettings', cid, function (err, privileges) { + if (err) { + return app.alertError(err.message); + } + var tpl = cid ? 'admin/partials/categories/privileges' : 'admin/partials/global/privileges'; + Benchpress.parse(tpl, { + privileges: privileges, + }, function (html) { + translator.translate(html, function (html) { + $('.privilege-table-container').html(html); + Privileges.exposeAssumedPrivileges(); + }); + }); + }); + }; + + Privileges.exposeAssumedPrivileges = function () { + /* + If registered-users has a privilege enabled, then all users and groups of that privilege + should be assumed to have that privilege as well, even if not set in the db, so reflect + this arrangement in the table + */ + var privs = []; + $('.privilege-table tr[data-group-name="registered-users"] td input[type="checkbox"]').parent().each(function (idx, el) { + if ($(el).find('input').prop('checked')) { + privs.push(el.getAttribute('data-privilege')); + } + }); + for (var x = 0, numPrivs = privs.length; x < numPrivs; x += 1) { + var inputs = $('.privilege-table tr[data-group-name]:not([data-group-name="registered-users"],[data-group-name="guests"]) td[data-privilege="' + privs[x] + '"] input'); + inputs.each(function (idx, el) { + if (!el.checked) { + el.indeterminate = true; + } + }); + } + }; + + Privileges.setPrivilege = function (member, privilege, state, checkboxEl) { + socket.emit('admin.categories.setPrivilege', { + cid: cid, + privilege: privilege, + set: state, + member: member, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + + checkboxEl.replaceWith(''); + Privileges.refreshPrivilegeTable(); + }); + }; + + Privileges.addUserToPrivilegeTable = function () { + var modal = bootbox.dialog({ + title: '[[admin/manage/categories:alert.find-user]]', + message: '', + show: true, + }); + + modal.on('shown.bs.modal', function () { + var inputEl = modal.find('input'); + + autocomplete.user(inputEl, function (ev, ui) { + var defaultPrivileges = cid ? ['find', 'read', 'topics:read'] : ['chat']; + socket.emit('admin.categories.setPrivilege', { + cid: cid, + privilege: defaultPrivileges, + set: true, + member: ui.item.user.uid, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + + Privileges.refreshPrivilegeTable(); + modal.modal('hide'); + }); + }); + }); + }; + + Privileges.addGroupToPrivilegeTable = function () { + var modal = bootbox.dialog({ + title: '[[admin/manage/categories:alert.find-group]]', + message: '', + show: true, + }); + + modal.on('shown.bs.modal', function () { + var inputEl = modal.find('input'); + + autocomplete.group(inputEl, function (ev, ui) { + var defaultPrivileges = cid ? ['groups:find', 'groups:read', 'groups:topics:read'] : ['groups:chat']; + socket.emit('admin.categories.setPrivilege', { + cid: cid, + privilege: defaultPrivileges, + set: true, + member: ui.item.group.name, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + + Privileges.refreshPrivilegeTable(); + modal.modal('hide'); + }); + }); + }); + }; + + Privileges.copyPrivilegesToChildren = function () { + socket.emit('admin.categories.copyPrivilegesToChildren', cid, function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('Privileges copied!'); + }); + }; + + Privileges.copyPrivilegesFromCategory = function () { + categorySelector.modal(function (fromCid) { + socket.emit('admin.categories.copyPrivilegesFrom', { toCid: cid, fromCid: fromCid }, function (err) { + if (err) { + return app.alertError(err.message); + } + ajaxify.refresh(); + }); + }); + }; + + return Privileges; +}); diff --git a/public/src/admin/manage/tags.js b/public/src/admin/manage/tags.js index 717d4bba1d..de67b86743 100644 --- a/public/src/admin/manage/tags.js +++ b/public/src/admin/manage/tags.js @@ -15,6 +15,7 @@ define('admin/manage/tags', [ handleCreate(); handleSearch(); handleModify(); + handleRename(); handleDeleteSelected(); }; @@ -103,15 +104,25 @@ define('admin/manage/tags', [ var modal = $('.bootbox'); var bgColor = modal.find('[data-name="bgColor"]').val(); var color = modal.find('[data-name="color"]').val(); - + var data = []; tagsToModify.each(function (idx, tag) { tag = $(tag); + data.push({ + value: tag.attr('data-tag'), + color: modal.find('[data-name="color"]').val(), + bgColor: modal.find('[data-name="bgColor"]').val(), + }); tag.find('[data-name="bgColor"]').val(bgColor); tag.find('[data-name="color"]').val(color); tag.find('.tag-item').css('background-color', bgColor).css('color', color); + }); - save(tag); + socket.emit('admin.tags.update', data, function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/tags:alerts.update-success]]'); }); }, }, @@ -122,6 +133,46 @@ define('admin/manage/tags', [ }); } + function handleRename() { + $('#rename').on('click', function () { + var tagsToModify = $('.tag-row.ui-selected'); + if (!tagsToModify.length) { + return; + } + + var firstTag = $(tagsToModify[0]); + var title = tagsToModify.length > 1 ? '[[admin/manage/tags:alerts.editing-multiple]]' : '[[admin/manage/tags:alerts.editing-x, ' + firstTag.find('.tag-item').attr('data-tag') + ']]'; + + var modal = bootbox.dialog({ + title: title, + message: $('.rename-modal').html(), + buttons: { + success: { + label: 'Save', + className: 'btn-primary save', + callback: function () { + var data = []; + tagsToModify.each(function (idx, tag) { + tag = $(tag); + data.push({ + value: tag.attr('data-tag'), + newName: modal.find('[data-name="value"]').val(), + }); + }); + + socket.emit('admin.tags.rename', data, function (err) { + if (err) { + return app.alertError(err.message); + } + app.alertSuccess('[[admin/manage/tags:alerts.update-success]]'); + }); + }, + }, + }, + }); + }); + } + function handleDeleteSelected() { $('#deleteSelected').on('click', function () { var tagsToDelete = $('.tag-row.ui-selected'); @@ -158,21 +209,5 @@ define('admin/manage/tags', [ modal.find('[data-name="bgColor"], [data-name="color"]').each(enableColorPicker); } - function save(tag) { - var data = { - tag: tag.attr('data-tag'), - bgColor: tag.find('[data-name="bgColor"]').val(), - color: tag.find('[data-name="color"]').val(), - }; - - socket.emit('admin.tags.update', data, function (err) { - if (err) { - return app.alertError(err.message); - } - - app.alertSuccess('[[admin/manage/tags:alerts.update-success]]'); - }); - } - return Tags; }); diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index b6c7b7aa03..96da2ef057 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -127,36 +127,6 @@ define('admin/manage/users', ['translator', 'benchpress'], function (translator, socket.emit('admin.user.resetLockouts', uids, done('[[admin/manage/users:alerts.lockout-reset-success]]')); }); - $('.admin-user').on('click', function () { - var uids = getSelectedUids(); - if (!uids.length) { - return; - } - - if (uids.indexOf(app.user.uid.toString()) !== -1) { - app.alertError('[[admin/manage/users:alerts.no-remove-yourself-admin]]'); - } else { - socket.emit('admin.user.makeAdmins', uids, done('[[admin/manage/users:alerts.make-admin-success]]', '.administrator', true)); - } - }); - - $('.remove-admin-user').on('click', function () { - var uids = getSelectedUids(); - if (!uids.length) { - return; - } - - if (uids.indexOf(app.user.uid.toString()) !== -1) { - app.alertError('[[admin/manage/users:alerts.no-remove-yourself-admin]]'); - } else { - bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-admin]]', function (confirm) { - if (confirm) { - socket.emit('admin.user.removeAdmins', uids, done('[[admin/manage/users:alerts.remove-admin-success]]', '.administrator', false)); - } - }); - } - }); - $('.validate-email').on('click', function () { var uids = getSelectedUids(); if (!uids.length) { diff --git a/public/src/app.js b/public/src/app.js index f56d894de8..8a2dd19c18 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -107,7 +107,9 @@ app.cacheBuster = null; }; app.logout = function (e) { - e.preventDefault(); + if (e) { + e.preventDefault(); + } $(window).trigger('action:app.logout'); /* diff --git a/public/src/client/account/edit/email.js b/public/src/client/account/edit/email.js index e1a068979a..ae182029f0 100644 --- a/public/src/client/account/edit/email.js +++ b/public/src/client/account/edit/email.js @@ -31,7 +31,7 @@ define('forum/account/edit/email', ['forum/account/header'], function (header) { return app.alertError(err.message); } - ajaxify.go('user/' + ajaxify.data.userslug); + ajaxify.go('user/' + ajaxify.data.userslug + '/edit'); }); return false; diff --git a/public/src/client/account/edit/password.js b/public/src/client/account/edit/password.js index 44723014ce..6aa66a13d8 100644 --- a/public/src/client/account/edit/password.js +++ b/public/src/client/account/edit/password.js @@ -63,7 +63,7 @@ define('forum/account/edit/password', ['forum/account/header', 'translator', 'zx onPasswordConfirmChanged(); var btn = $(this); - if ((passwordvalid && passwordsmatch) || app.user.isAdmin) { + if (passwordvalid && passwordsmatch) { btn.addClass('disabled').find('i').removeClass('hide'); socket.emit('user.changePassword', { currentPassword: currentPassword.val(), @@ -82,8 +82,11 @@ define('forum/account/edit/password', ['forum/account/header', 'translator', 'zx onPasswordConfirmChanged(); return app.alertError(err.message); } - - window.location.href = config.relative_path + '/login'; + if (parseInt(app.user.uid, 10) === parseInt(ajaxify.data.uid, 10)) { + window.location.href = config.relative_path + '/login'; + } else { + ajaxify.go('user/' + ajaxify.data.userslug + '/edit'); + } }); } else { if (!passwordsmatch) { diff --git a/public/src/client/account/edit/username.js b/public/src/client/account/edit/username.js index f00e4d16fe..6178466f24 100644 --- a/public/src/client/account/edit/username.js +++ b/public/src/client/account/edit/username.js @@ -39,7 +39,7 @@ define('forum/account/edit/username', ['forum/account/header'], function (header $('[component="header/usericon"]').css('background-color', data['icon:bgColor']).text(data['icon:text']); } - ajaxify.go('user/' + userslug); + ajaxify.go('user/' + userslug + '/edit'); }); return false; diff --git a/public/src/client/chats.js b/public/src/client/chats.js index f82623fd5d..2da1735a36 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -324,7 +324,7 @@ define('forum/chats', [ ajaxify.data = payload; Chats.setActive(); Chats.addEventListeners(); - + messages.scrollToBottom($('.expanded-chat ul')); if (history.pushState) { history.pushState({ url: 'user/' + payload.userslug + '/chats/' + payload.roomId, diff --git a/public/src/client/topic/move-post.js b/public/src/client/topic/move-post.js index bd9d542ead..0c08e030da 100644 --- a/public/src/client/topic/move-post.js +++ b/public/src/client/topic/move-post.js @@ -4,45 +4,37 @@ define('forum/topic/move-post', [], function () { var MovePost = {}; - MovePost.openMovePostModal = function (button) { app.parseAndTranslate('partials/move_post_modal', {}, function (html) { - var moveModal = $(html); + var dialog = bootbox.dialog({ + title: '[[topic:move_post]]', + message: html, + show: true, + buttons: { + submit: { + label: '[[topic:confirm_move]]', + className: 'btn-primary submit-btn', + callback: function () { + var topicIdEl = dialog.find('#topicId'); + if (!topicIdEl.val()) { + return; + } - var moveBtn = moveModal.find('#move_post_commit'); - var topicId = moveModal.find('#topicId'); - - moveModal.on('hidden.bs.modal', function () { - moveModal.remove(); + movePost(button.parents('[data-pid]'), button.parents('[data-pid]').attr('data-pid'), topicIdEl.val(), function () { + topicIdEl.val(''); + }); + }, + }, + }, }); + dialog.find('.submit-btn').attr('disabled', true); - showMoveModal(moveModal); - - moveModal.find('.close, #move_post_cancel').on('click', function () { - moveModal.addClass('hide'); - }); - - topicId.on('keyup change', function () { - moveBtn.attr('disabled', !topicId.val()); - }); - - moveBtn.on('click', function () { - movePost(button.parents('[data-pid]'), button.parents('[data-pid]').attr('data-pid'), topicId.val(), function () { - moveModal.modal('hide'); - topicId.val(''); - }); + dialog.find('#topicId').on('keyup change', function () { + dialog.find('.submit-btn').attr('disabled', !dialog.find('#topicId').val()); }); }); }; - function showMoveModal(modal) { - modal.modal('show') - .css('position', 'fixed') - .css('left', Math.max(0, (($(window).width() - modal.outerWidth()) / 2) + $(window).scrollLeft()) + 'px') - .css('top', '0px') - .css('z-index', '2000'); - } - function movePost(post, pid, tid, callback) { socket.emit('posts.movePost', { pid: pid, tid: tid }, function (err) { if (err) { diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 626fcde6bd..b44d571919 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -68,7 +68,7 @@ define('forum/topic/posts', [ var posts = data.posts; - ajaxify.data.pagination.pageCount = Math.max(1, Math.ceil((posts[0].topic.postcount - 1) / config.postsPerPage)); + ajaxify.data.pagination.pageCount = Math.max(1, Math.ceil(posts[0].topic.postcount / config.postsPerPage)); var direction = config.topicPostSort === 'oldest_to_newest' || config.topicPostSort === 'most_votes' ? 1 : -1; var isPostVisible = (ajaxify.data.pagination.currentPage === ajaxify.data.pagination.pageCount && direction === 1) || diff --git a/public/src/modules/autocomplete.js b/public/src/modules/autocomplete.js index 68cabdb45b..6c32cb36f2 100644 --- a/public/src/modules/autocomplete.js +++ b/public/src/modules/autocomplete.js @@ -29,6 +29,11 @@ define('autocomplete', function () { uid: user.uid, name: user.username, slug: user.userslug, + username: user.username, + userslug: user.userslug, + picture: user.picture, + 'icon:text': user['icon:text'], + 'icon:bgColor': user['icon:bgColor'], }, }; }); diff --git a/public/src/modules/categorySelector.js b/public/src/modules/categorySelector.js index 882206a42d..b9b8c9e3a4 100644 --- a/public/src/modules/categorySelector.js +++ b/public/src/modules/categorySelector.js @@ -1,7 +1,6 @@ 'use strict'; - -define('categorySelector', function () { +define('categorySelector', ['benchpress', 'translator'], function (Benchpress, translator) { var categorySelector = {}; var selectedCategory; var el; @@ -29,6 +28,42 @@ define('categorySelector', function () { el.find('[component="category-selector-selected"]').html(categoryEl.find('[component="category-markup"]').html()); }; + categorySelector.modal = function (categories, callback) { + if (typeof categories === 'function') { + callback = categories; + categories = ajaxify.data.allCategories; + } + Benchpress.parse('admin/partials/categories/select-category', { + categories: categories, + }, function (html) { + translator.translate(html, function (html) { + var modal = bootbox.dialog({ + title: '[[modules:composer.select_category]]', + message: html, + buttons: { + save: { + label: '[[global:select]]', + className: 'btn-primary', + callback: submit, + }, + }, + }); + categorySelector.init(modal.find('[component="category-selector"]')); + function submit(ev) { + ev.preventDefault(); + var selectedCategory = categorySelector.getSelectedCategory(); + if (selectedCategory) { + callback(selectedCategory.cid); + modal.modal('hide'); + } + return false; + } + + modal.find('form').on('submit', submit); + }); + }); + }; + return categorySelector; }); diff --git a/public/src/modules/helpers.js b/public/src/modules/helpers.js index 07515b9834..d682faf947 100644 --- a/public/src/modules/helpers.js +++ b/public/src/modules/helpers.js @@ -127,11 +127,11 @@ category.children.forEach(function (child) { if (child && !child.isSection) { var link = child.link ? child.link : (relative_path + '/category/' + child.slug); - html += '' + - '' + - '' + - '' + - '' + child.name + ' '; + html += '' + + '
' + + '' + + '
' + + '' + child.name + '
'; } }); html = html ? ('' + html + '') : html; diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js index 6376d9e4d0..9171d65ada 100644 --- a/public/src/modules/translator.js +++ b/public/src/modules/translator.js @@ -41,13 +41,11 @@ var assign = Object.assign || jQuery.extend; function escapeHTML(str) { - return utils.decodeHTMLEntities( + return utils.escapeHTML(utils.decodeHTMLEntities( String(str) .replace(/[\s\xa0]+/g, ' ') .replace(/^\s+|\s+$/g, '') - ).replace(/[<>]/g, function (c) { - return c === '<' ? '<' : '>'; - }); + )); } var Translator = (function () { diff --git a/public/src/utils.js b/public/src/utils.js index 0e300d2772..2fcdfa8157 100644 --- a/public/src/utils.js +++ b/public/src/utils.js @@ -545,6 +545,20 @@ return str.toString().replace(escapeChars, replaceChar); }, + addNoReferrer: function (containerEl) { + containerEl.find('a').attr('rel', function (idx, value) { + value = value ? value.split(' ') : []; + + ['noopener', 'noreferrer'].forEach(function (property) { + if (!value.includes(property)) { + value.push(property); + } + }); + + return value.join(' '); + }); + }, + isAndroidBrowser: function () { // http://stackoverflow.com/questions/9286355/how-to-detect-only-the-native-android-browser var nua = navigator.userAgent; @@ -732,6 +746,27 @@ rtrim: function (str) { return str.replace(/\s+$/g, ''); }, + + debounce: function (func, wait, immediate) { + // modified from https://davidwalsh.name/javascript-debounce-function + var timeout; + return function () { + var context = this; + var args = arguments; + var later = function () { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + func.apply(context, args); + } + }; + }, }; /* eslint "no-extend-native": "off" */ diff --git a/public/src/widgets.js b/public/src/widgets.js index badc55c892..8123e18103 100644 --- a/public/src/widgets.js +++ b/public/src/widgets.js @@ -58,6 +58,7 @@ title: $(this).attr('title'), }); }); + utils.addNoReferrer(widgetAreas); $(window).trigger('action:widgets.loaded', {}); callback(); }; diff --git a/src/categories.js b/src/categories.js index 6013091050..ab1d277e68 100644 --- a/src/categories.js +++ b/src/categories.js @@ -338,30 +338,27 @@ Categories.buildForSelect = function (uid, privilege, callback) { }; Categories.buildForSelectCategories = function (categories, callback) { - function recursive(category, categoriesData, level) { - if (category.link) { - return; - } - + function recursive(category, categoriesData, level, depth) { var bullet = level ? '• ' : ''; category.value = category.cid; category.level = level; category.text = level + bullet + category.name; + category.depth = depth; categoriesData.push(category); category.children.forEach(function (child) { - recursive(child, categoriesData, '    ' + level); + recursive(child, categoriesData, '    ' + level, depth + 1); }); } var categoriesData = []; categories = categories.filter(function (category) { - return category && !category.link && !parseInt(category.parentCid, 10); + return category && !parseInt(category.parentCid, 10); }); categories.forEach(function (category) { - recursive(category, categoriesData, ''); + recursive(category, categoriesData, '', 0); }); callback(null, categoriesData); }; diff --git a/src/categories/create.js b/src/categories/create.js index d4a74084d9..a766ea0204 100644 --- a/src/categories/create.js +++ b/src/categories/create.js @@ -61,8 +61,9 @@ module.exports = function (Categories) { 'topics:tag', 'posts:edit', 'posts:delete', + 'posts:upvote', + 'posts:downvote', 'topics:delete', - 'upload:post:image', ]; async.series([ diff --git a/src/categories/data.js b/src/categories/data.js index 73c9300902..a1a9d5c587 100644 --- a/src/categories/data.js +++ b/src/categories/data.js @@ -31,7 +31,11 @@ module.exports = function (Categories) { category.name = validator.escape(String(category.name || '')); category.disabled = category.hasOwnProperty('disabled') ? parseInt(category.disabled, 10) === 1 : undefined; category.isSection = category.hasOwnProperty('isSection') ? parseInt(category.isSection, 10) === 1 : undefined; - category.icon = category.icon || 'hidden'; + + if (category.hasOwnProperty('icon')) { + category.icon = category.icon || 'hidden'; + } + if (category.hasOwnProperty('post_count')) { category.post_count = category.post_count || 0; category.totalPostCount = category.post_count; diff --git a/src/cli/index.js b/src/cli/index.js index aa7ef2c257..e4679a4e19 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -8,7 +8,7 @@ var dirname = require('./paths').baseDir; // check to make sure dependencies are installed try { - fs.readFileSync(path.join(dirname, 'package.json')); + fs.accessSync(path.join(dirname, 'package.json'), fs.constants.R_OK); } catch (e) { if (e.code === 'ENOENT') { console.warn('package.json not found.'); @@ -18,6 +18,8 @@ try { packageInstall.preserveExtraneousPlugins(); try { + fs.accessSync(path.join(dirname, 'node_modules/colors/package.json'), fs.constants.R_OK); + require('colors'); console.log('OK'.green); } catch (e) { @@ -29,15 +31,30 @@ try { } try { - fs.readFileSync(path.join(dirname, 'node_modules/async/package.json'), 'utf8'); - fs.readFileSync(path.join(dirname, 'node_modules/commander/package.json'), 'utf8'); - fs.readFileSync(path.join(dirname, 'node_modules/colors/package.json'), 'utf8'); - fs.readFileSync(path.join(dirname, 'node_modules/nconf/package.json'), 'utf8'); + fs.accessSync(path.join(dirname, 'node_modules/semver/package.json'), fs.constants.R_OK); + + var semver = require('semver'); + var defaultPackage = require('../../install/package.json'); + + var checkVersion = function (packageName) { + var version = JSON.parse(fs.readFileSync(path.join(dirname, 'node_modules', packageName, 'package.json'), 'utf8')).version; + if (!semver.satisfies(version, defaultPackage.dependencies[packageName])) { + var e = new TypeError('Incorrect dependency version: ' + packageName); + e.code = 'DEP_WRONG_VERSION'; + throw e; + } + }; + + checkVersion('nconf'); + checkVersion('async'); + checkVersion('commander'); + checkVersion('colors'); } catch (e) { - if (e.code === 'ENOENT') { - console.warn('Dependencies not yet installed.'); + if (['ENOENT', 'DEP_WRONG_VERSION', 'MODULE_NOT_FOUND'].indexOf(e.code) !== -1) { + console.warn('Dependencies outdated or not yet installed.'); console.log('Installing them now...\n'); + packageInstall.updatePackageFile(); packageInstall.installAll(); require('colors'); @@ -241,7 +258,7 @@ program 'When running particular upgrade scripts, options are ignored.', 'By default all options are enabled. Passing any options disables that default.', 'Only package and dependency updates: ' + './nodebb upgrade -mi'.yellow, - 'Only database update: ' + './nodebb upgrade -d'.yellow, + 'Only database update: ' + './nodebb upgrade -s'.yellow, ].join('\n')); }) .action(function (scripts, options) { @@ -280,16 +297,12 @@ program } }); -program - .command('*', {}, { - noHelp: true, - }) - .action(function () { - program.help(); - }); - require('./colors'); +if (process.argv.length === 2) { + program.help(); +} + program.executables = false; program.parse(process.argv); diff --git a/src/cli/package-install.js b/src/cli/package-install.js index 1892a48cfc..af245b08fb 100644 --- a/src/cli/package-install.js +++ b/src/cli/package-install.js @@ -33,6 +33,7 @@ function installAll() { var prod = global.env !== 'development'; var command = 'npm install'; try { + fs.accessSync(path.join(modulesPath, 'nconf/package.json'), fs.constants.R_OK); var packageManager = require('nconf').get('package_manager'); if (packageManager === 'yarn') { command = 'yarn'; diff --git a/src/cli/upgrade.js b/src/cli/upgrade.js index 2462f1f168..b9cd46e4a2 100644 --- a/src/cli/upgrade.js +++ b/src/cli/upgrade.js @@ -23,6 +23,7 @@ var steps = { install: { message: 'Bringing base dependencies up to date...', handler: function (next) { + process.stdout.write(' started\n'.green); packageInstall.installAll(); next(); }, diff --git a/src/controllers/accounts/chats.js b/src/controllers/accounts/chats.js index c3b9990c26..ff5a07d157 100644 --- a/src/controllers/accounts/chats.js +++ b/src/controllers/accounts/chats.js @@ -5,6 +5,7 @@ var async = require('async'); var messaging = require('../../messaging'); var meta = require('../../meta'); var user = require('../../user'); +var privileges = require('../../privileges'); var helpers = require('../helpers'); var chatsController = module.exports; @@ -26,6 +27,13 @@ chatsController.get = function (req, res, callback) { if (!uid) { return callback(); } + + privileges.global.can('chat', req.uid, next); + }, + function (canChat, next) { + if (!canChat) { + return next(new Error('[[error:no-privileges]]')); + } messaging.getRecentChats(req.uid, uid, 0, 19, next); }, function (_recentChats, next) { diff --git a/src/controllers/accounts/edit.js b/src/controllers/accounts/edit.js index b5bd4cf3a5..5e40b83ef2 100644 --- a/src/controllers/accounts/edit.js +++ b/src/controllers/accounts/edit.js @@ -28,6 +28,9 @@ editController.get = function (req, res, callback) { userData.maximumProfileImageSize = parseInt(meta.config.maximumProfileImageSize, 10); userData.allowProfileImageUploads = parseInt(meta.config.allowProfileImageUploads, 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.profileImageDimension = parseInt(meta.config.profileImageDimension, 10) || 200; userData.defaultAvatar = user.getDefaultAvatar(); diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js index a854fd0a1b..0a99d83af1 100644 --- a/src/controllers/accounts/helpers.js +++ b/src/controllers/accounts/helpers.js @@ -62,6 +62,9 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { sso: function (next) { plugins.fireHook('filter:auth.list', { uid: uid, associations: [] }, next); }, + canEdit: function (next) { + privileges.users.canEdit(callerUID, uid, next); + }, canBanUser: function (next) { privileges.users.canBanUser(callerUID, uid, next); }, @@ -113,7 +116,7 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { userData.isAdminOrGlobalModerator = isAdmin || isGlobalModerator; userData.isAdminOrGlobalModeratorOrModerator = isAdmin || isGlobalModerator || isModerator; userData.isSelfOrAdminOrGlobalModerator = isSelf || isAdmin || isGlobalModerator; - userData.canEdit = isAdmin || (isGlobalModerator && !results.isTargetAdmin); + userData.canEdit = results.canEdit; userData.canBan = results.canBanUser; userData.canChangePassword = isAdmin || (isSelf && parseInt(meta.config['password:disableEdit'], 10) !== 1); userData.isSelf = isSelf; diff --git a/src/controllers/admin.js b/src/controllers/admin.js index 6ef000fa14..dc3b6862ae 100644 --- a/src/controllers/admin.js +++ b/src/controllers/admin.js @@ -3,6 +3,8 @@ var adminController = { dashboard: require('./admin/dashboard'), categories: require('./admin/categories'), + privileges: require('./admin/privileges'), + adminsMods: require('./admin/admins-mods'), tags: require('./admin/tags'), postQueue: require('./admin/postqueue'), blacklist: require('./admin/blacklist'), diff --git a/src/controllers/admin/admins-mods.js b/src/controllers/admin/admins-mods.js new file mode 100644 index 0000000000..97d5828c16 --- /dev/null +++ b/src/controllers/admin/admins-mods.js @@ -0,0 +1,50 @@ +'use strict'; + +var async = require('async'); + +var groups = require('../../groups'); +var categories = require('../../categories'); + +var AdminsMods = module.exports; + +AdminsMods.get = function (req, res, next) { + async.waterfall([ + function (next) { + async.parallel({ + admins: function (next) { + groups.get('administrators', { uid: req.uid }, next); + }, + globalMods: function (next) { + groups.get('Global Moderators', { uid: req.uid }, next); + }, + categories: function (next) { + getModeratorsOfCategories(req.uid, next); + }, + }, next); + }, + function (results) { + res.render('admin/manage/admins-mods', results); + }, + ], next); +}; + +function getModeratorsOfCategories(uid, callback) { + async.waterfall([ + function (next) { + categories.buildForSelect(uid, 'find', next); + }, + function (categoryData, next) { + async.map(categoryData, function (category, next) { + async.waterfall([ + function (next) { + categories.getModerators(category.cid, next); + }, + function (moderators, next) { + category.moderators = moderators; + next(null, category); + }, + ], next); + }, next); + }, + ], callback); +} diff --git a/src/controllers/admin/categories.js b/src/controllers/admin/categories.js index 0b78912644..e03b51745c 100644 --- a/src/controllers/admin/categories.js +++ b/src/controllers/admin/categories.js @@ -3,7 +3,6 @@ var async = require('async'); var categories = require('../../categories'); -var privileges = require('../../privileges'); var analytics = require('../../analytics'); var plugins = require('../../plugins'); var translator = require('../../translator'); @@ -15,7 +14,6 @@ categoriesController.get = function (req, res, callback) { function (next) { async.parallel({ category: async.apply(categories.getCategories, [req.params.category_id], req.user.uid), - privileges: async.apply(privileges.categories.list, req.params.category_id), allCategories: async.apply(categories.buildForSelect, req.uid, 'read'), }, next); }, @@ -36,7 +34,6 @@ categoriesController.get = function (req, res, callback) { req: req, res: res, category: category, - privileges: data.privileges, allCategories: data.allCategories, }, next); }, @@ -44,7 +41,6 @@ categoriesController.get = function (req, res, callback) { data.category.name = translator.escape(String(data.category.name)); res.render('admin/manage/category', { category: data.category, - privileges: data.privileges, allCategories: data.allCategories, }); }, diff --git a/src/controllers/admin/dashboard.js b/src/controllers/admin/dashboard.js index 8b1751d2a6..b5ae760727 100644 --- a/src/controllers/admin/dashboard.js +++ b/src/controllers/admin/dashboard.js @@ -48,6 +48,7 @@ dashboardController.get = function (req, res, next) { version: nconf.get('version'), notices: results.notices, stats: results.stats, + canRestart: !!process.send, }); }, ], next); diff --git a/src/controllers/admin/privileges.js b/src/controllers/admin/privileges.js new file mode 100644 index 0000000000..92dbe27ef9 --- /dev/null +++ b/src/controllers/admin/privileges.js @@ -0,0 +1,39 @@ +'use strict'; + +var async = require('async'); + +var categories = require('../../categories'); +var privileges = require('../../privileges'); + +var privilegesController = module.exports; + +privilegesController.get = function (req, res, callback) { + var cid = req.params.cid ? req.params.cid : 0; + async.waterfall([ + function (next) { + async.parallel({ + privileges: function (next) { + if (!cid) { + privileges.global.list(next); + } else { + privileges.categories.list(cid, next); + } + }, + allCategories: async.apply(categories.buildForSelect, req.uid, 'read'), + }, next); + }, + function (data) { + data.allCategories.forEach(function (category) { + if (category) { + category.selected = parseInt(category.cid, 10) === parseInt(cid, 10); + } + }); + + res.render('admin/manage/privileges', { + privileges: data.privileges, + allCategories: data.allCategories, + cid: cid, + }); + }, + ], callback); +}; diff --git a/src/controllers/helpers.js b/src/controllers/helpers.js index 260069ce4e..319f10e841 100644 --- a/src/controllers/helpers.js +++ b/src/controllers/helpers.js @@ -129,7 +129,7 @@ helpers.buildCategoryBreadcrumbs = function (cid, callback) { return callback(err); } - if (!meta.config.homePageRoute && meta.config.homePageCustom) { + if (meta.config.homePageRoute && meta.config.homePageRoute !== 'categories') { breadcrumbs.unshift({ text: '[[global:header.categories]]', url: nconf.get('relative_path') + '/categories', diff --git a/src/controllers/home.js b/src/controllers/home.js index 6c67e7aaa2..35a6cfe6a0 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -1,61 +1,56 @@ 'use strict'; +var async = require('async'); var plugins = require('../plugins'); var meta = require('../meta'); var user = require('../user'); -var pubsub = require('../pubsub'); -var adminHomePageRoute; -var getRoute; - -function configUpdated() { - adminHomePageRoute = (meta.config.homePageRoute || meta.config.homePageCustom || '').replace(/^\/+/, '') || 'categories'; - getRoute = parseInt(meta.config.allowUserHomePage, 10) ? getRouteAllowUserHomePage : getRouteDisableUserHomePage; +function adminHomePageRoute() { + return (meta.config.homePageRoute || meta.config.homePageCustom || '').replace(/^\/+/, '') || 'categories'; } -function getRouteDisableUserHomePage(uid, next) { - next(null, adminHomePageRoute); +function getUserHomeRoute(uid, callback) { + async.waterfall([ + function (next) { + user.getSettings(uid, next); + }, + function (settings, next) { + var route = adminHomePageRoute(); + + if (settings.homePageRoute !== 'undefined' && settings.homePageRoute !== 'none') { + route = settings.homePageRoute || route; + } + + next(null, route); + }, + ], callback); } -function getRouteAllowUserHomePage(uid, next) { - user.getSettings(uid, function (err, settings) { - if (err) { - return next(err); - } - - var route = adminHomePageRoute; - - if (settings.homePageRoute !== 'undefined' && settings.homePageRoute !== 'none') { - route = settings.homePageRoute || route; - } - - next(null, route); - }); -} - -pubsub.on('config:update', configUpdated); -configUpdated(); - function rewrite(req, res, next) { if (req.path !== '/' && req.path !== '/api/' && req.path !== '/api') { return next(); } - getRoute(req.uid, function (err, route) { - if (err) { - return next(err); - } + async.waterfall([ + function (next) { + if (parseInt(meta.config.allowUserHomePage, 10)) { + getUserHomeRoute(req.uid, next); + } else { + next(null, adminHomePageRoute()); + } + }, + function (route, next) { + var hook = 'action:homepage.get:' + route; - var hook = 'action:homepage.get:' + route; + if (!plugins.hasListeners(hook)) { + req.url = req.path + (!req.path.endsWith('/') ? '/' : '') + route; + } else { + res.locals.homePageRoute = route; + } - if (!plugins.hasListeners(hook)) { - req.url = req.path + (!req.path.endsWith('/') ? '/' : '') + route; - } else { - res.locals.homePageRoute = route; - } - - next(); - }); + next(); + }, + ], next); } exports.rewrite = rewrite; diff --git a/src/controllers/mods.js b/src/controllers/mods.js index a7cb252c2c..69bfd7fbbf 100644 --- a/src/controllers/mods.js +++ b/src/controllers/mods.js @@ -126,7 +126,7 @@ modsController.flags.detail = function (req, res, next) { assignees: results.assignees, type_bool: ['post', 'user', 'empty'].reduce(function (memo, cur) { if (cur !== 'empty') { - memo[cur] = results.flagData.type === cur && !!Object.keys(results.flagData.target).length; + memo[cur] = results.flagData.type === cur && (!results.flagData.target || !!Object.keys(results.flagData.target).length); } else { memo[cur] = !Object.keys(results.flagData.target).length; } diff --git a/src/controllers/search.js b/src/controllers/search.js index f02a61dc31..49e762407a 100644 --- a/src/controllers/search.js +++ b/src/controllers/search.js @@ -54,6 +54,10 @@ searchController.search = function (req, res, next) { return next(err); } + results.categories = results.categories.filter(function (category) { + return category && !category.link; + }); + var categoriesData = [ { value: 'all', text: '[[unread:all_categories]]' }, { value: 'watched', text: '[[category:watched-categories]]' }, diff --git a/src/controllers/tags.js b/src/controllers/tags.js index 64e1640706..f672bd9bfe 100644 --- a/src/controllers/tags.js +++ b/src/controllers/tags.js @@ -8,7 +8,7 @@ var topics = require('../topics'); var pagination = require('../pagination'); var helpers = require('./helpers'); -var tagsController = {}; +var tagsController = module.exports; tagsController.getTag = function (req, res, next) { var tag = validator.escape(String(req.params.tag)); @@ -33,7 +33,7 @@ tagsController.getTag = function (req, res, next) { templateData.nextStart = stop + 1; async.parallel({ topicCount: function (next) { - topics.getTagTopicCount(tag, next); + topics.getTagTopicCount(req.params.tag, next); }, tids: function (next) { topics.getTagTids(req.params.tag, start, stop, next); @@ -47,44 +47,41 @@ tagsController.getTag = function (req, res, next) { topicCount = results.topicCount; topics.getTopics(results.tids, req.uid, next); }, - ], function (err, topics) { - if (err) { - return next(err); - } + function (topics) { + res.locals.metaTags = [ + { + name: 'title', + content: tag, + }, + { + property: 'og:title', + content: tag, + }, + ]; + templateData.topics = topics; - res.locals.metaTags = [ - { - name: 'title', - content: tag, - }, - { - property: 'og:title', - content: tag, - }, - ]; - templateData.topics = topics; + var pageCount = Math.max(1, Math.ceil(topicCount / settings.topicsPerPage)); + templateData.pagination = pagination.create(page, pageCount); - var pageCount = Math.max(1, Math.ceil(topicCount / settings.topicsPerPage)); - templateData.pagination = pagination.create(page, pageCount); - - res.render('tag', templateData); - }); + res.render('tag', templateData); + }, + ], next); }; tagsController.getTags = function (req, res, next) { - topics.getTags(0, 99, function (err, tags) { - if (err) { - return next(err); - } - tags = tags.filter(Boolean); - var data = { - tags: tags, - nextStart: 100, - breadcrumbs: helpers.buildBreadcrumbs([{ text: '[[tags:tags]]' }]), - title: '[[pages:tags]]', - }; - res.render('tags', data); - }); + async.waterfall([ + function (next) { + topics.getTags(0, 99, next); + }, + function (tags) { + tags = tags.filter(Boolean); + var data = { + tags: tags, + nextStart: 100, + breadcrumbs: helpers.buildBreadcrumbs([{ text: '[[tags:tags]]' }]), + title: '[[pages:tags]]', + }; + res.render('tags', data); + }, + ], next); }; - -module.exports = tagsController; diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 13228f5779..1936c99481 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -387,7 +387,7 @@ topicsController.pagination = function (req, res, callback) { } var postCount = parseInt(results.topic.postcount, 10); - var pageCount = Math.max(1, Math.ceil((postCount - 1) / results.settings.postsPerPage)); + var pageCount = Math.max(1, Math.ceil(postCount / results.settings.postsPerPage)); var paginationData = pagination.create(currentPage, pageCount); paginationData.rel.forEach(function (rel) { diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js index 0a91cd5dcc..e7e77c4a4f 100644 --- a/src/controllers/uploads.js +++ b/src/controllers/uploads.js @@ -37,9 +37,6 @@ uploadsController.upload = function (req, res, filesIterator) { uploadsController.uploadPost = function (req, res, next) { uploadsController.upload(req, res, function (uploadedFile, next) { - if (!parseInt(req.body.cid, 10)) { - return next(new Error('[[error:category-not-selected]]')); - } var isImage = uploadedFile.type.match(/image./); if (isImage) { uploadAsImage(req, uploadedFile, next); @@ -52,7 +49,7 @@ uploadsController.uploadPost = function (req, res, next) { function uploadAsImage(req, uploadedFile, callback) { async.waterfall([ function (next) { - privileges.categories.can('upload:post:image', req.body.cid, req.uid, next); + privileges.global.can('upload:post:image', req.uid, next); }, function (canUpload, next) { if (!canUpload) { @@ -82,7 +79,7 @@ function uploadAsImage(req, uploadedFile, callback) { function uploadAsFile(req, uploadedFile, callback) { async.waterfall([ function (next) { - privileges.categories.can('upload:post:file', req.body.cid, req.uid, next); + privileges.global.can('upload:post:file', req.uid, next); }, function (canUpload, next) { if (!canUpload) { diff --git a/src/database/mongo/main.js b/src/database/mongo/main.js index 278ae6c413..b8ceaa4f6f 100644 --- a/src/database/mongo/main.js +++ b/src/database/mongo/main.js @@ -83,8 +83,8 @@ module.exports = function (db, module) { if (!key) { return callback(); } - db.collection('objects').findAndModify({ _key: key }, {}, { $inc: { value: 1 } }, { new: true, upsert: true }, function (err, result) { - callback(err, result && result.value ? result.value.value : null); + db.collection('objects').findAndModify({ _key: key }, {}, { $inc: { data: 1 } }, { new: true, upsert: true }, function (err, result) { + callback(err, result && result.value ? result.value.data : null); }); }; @@ -108,6 +108,7 @@ module.exports = function (db, module) { if (!data) { return callback(null, null); } + delete data.expireAt; var keys = Object.keys(data); if (keys.length === 4 && data.hasOwnProperty('_key') && data.hasOwnProperty('score') && data.hasOwnProperty('value')) { return callback(null, 'zset'); diff --git a/src/database/redis.js b/src/database/redis.js index e45f8f0ef8..70a8ffbd53 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -37,19 +37,22 @@ redisModule.questions = [ ]; redisModule.init = function (callback) { - redisClient = redisModule.connect(); + callback = callback || function () { }; + redisClient = redisModule.connect({}, function (err) { + if (err) { + winston.error('NodeBB could not connect to your Redis database. Redis returned the following error', err); + return callback(err); + } + redisModule.client = redisClient; - redisModule.client = redisClient; + require('./redis/main')(redisClient, redisModule); + require('./redis/hash')(redisClient, redisModule); + require('./redis/sets')(redisClient, redisModule); + require('./redis/sorted')(redisClient, redisModule); + require('./redis/list')(redisClient, redisModule); - require('./redis/main')(redisClient, redisModule); - require('./redis/hash')(redisClient, redisModule); - require('./redis/sets')(redisClient, redisModule); - require('./redis/sorted')(redisClient, redisModule); - require('./redis/list')(redisClient, redisModule); - - if (typeof callback === 'function') { callback(); - } + }); }; redisModule.initSessionStore = function (callback) { @@ -66,7 +69,8 @@ redisModule.initSessionStore = function (callback) { } }; -redisModule.connect = function (options) { +redisModule.connect = function (options, callback) { + callback = callback || function () {}; var redis_socket_or_host = nconf.get('redis:host'); var cxn; @@ -88,7 +92,11 @@ redisModule.connect = function (options) { cxn.on('error', function (err) { winston.error(err.stack); - process.exit(1); + callback(err); + }); + + cxn.on('ready', function () { + callback(); }); if (nconf.get('redis:password')) { @@ -99,7 +107,7 @@ redisModule.connect = function (options) { if (dbIdx >= 0) { cxn.select(dbIdx, function (err) { if (err) { - winston.error('NodeBB could not connect to your Redis database. Redis returned the following error', err); + winston.error('NodeBB could not select Redis database. Redis returned the following error', err); throw err; } }); diff --git a/src/emailer.js b/src/emailer.js index 10163cc512..a841eb1f91 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -10,6 +10,7 @@ var htmlToText = require('html-to-text'); var url = require('url'); var path = require('path'); var fs = require('fs'); +var _ = require('lodash'); var User = require('./user'); var Plugins = require('./plugins'); @@ -289,11 +290,10 @@ function buildCustomTemplates(config) { file.walk(viewsDir, next); }, function (paths, next) { - paths = paths.reduce(function (obj, p) { - var relative = path.relative(viewsDir, p); - obj['/' + relative] = p; - return obj; - }, {}); + paths = _.fromPairs(paths.map(function (p) { + var relative = path.relative(viewsDir, p).replace(/\\/g, '/'); + return [relative, p]; + })); meta.templates.processImports(paths, template.path, template.text, next); }, function (source, next) { diff --git a/src/flags.js b/src/flags.js index 4118cf8fb2..7bbb5168f8 100644 --- a/src/flags.js +++ b/src/flags.js @@ -241,7 +241,7 @@ Flags.validate = function (payload, callback) { return callback(err); } - var minimumReputation = utils.isNumber(meta.config['privileges:flag']) ? parseInt(meta.config['privileges:flag'], 10) : 0; + var minimumReputation = utils.isNumber(meta.config['min:rep:flag']) ? parseInt(meta.config['min:rep:flag'], 10) : 0; // Check if reporter meets rep threshold (or can edit the target post, in which case threshold does not apply) if (!editable.flag && parseInt(data.reporter.reputation, 10) < minimumReputation) { return callback(new Error('[[error:not-enough-reputation-to-flag]]')); @@ -257,7 +257,7 @@ Flags.validate = function (payload, callback) { return callback(err); } - var minimumReputation = utils.isNumber(meta.config['privileges:flag']) ? parseInt(meta.config['privileges:flag'], 10) : 0; + var minimumReputation = utils.isNumber(meta.config['min:rep:flag']) ? parseInt(meta.config['min:rep:flag'], 10) : 0; // Check if reporter meets rep threshold (or can edit the target user, in which case threshold does not apply) if (!editable && parseInt(data.reporter.reputation, 10) < minimumReputation) { return callback(new Error('[[error:not-enough-reputation-to-flag]]')); @@ -387,7 +387,7 @@ Flags.create = function (type, id, uid, reason, timestamp, callback) { tasks.push(async.apply(Flags.update, flagId, uid, { state: 'open' })); } - async.parallel(tasks, function (err) { + async.series(tasks, function (err) { next(err, flagId); }); }, diff --git a/src/groups/create.js b/src/groups/create.js index c720923ca7..a8297b946b 100644 --- a/src/groups/create.js +++ b/src/groups/create.js @@ -90,11 +90,11 @@ module.exports = function (Groups) { return callback(new Error('[[error:group-name-too-long]]')); } - if (!Groups.isPrivilegeGroup(name) && name.indexOf(':') !== -1) { + if (!Groups.isPrivilegeGroup(name) && name.includes(':')) { return callback(new Error('[[error:invalid-group-name]]')); } - if (name.indexOf('/') !== -1 || !utils.slugify(name)) { + if (name.includes('/') || !utils.slugify(name)) { return callback(new Error('[[error:invalid-group-name]]')); } diff --git a/src/install.js b/src/install.js index b55b1ed08e..33bd5a58d1 100644 --- a/src/install.js +++ b/src/install.js @@ -157,16 +157,17 @@ function completeConfigSetup(config, next) { } } + nconf.overrides(config); async.waterfall([ - function (next) { - install.save(config, next); - }, function (next) { require('./database').init(next); }, function (next) { require('./database').createIndices(next); }, + function (next) { + install.save(config, next); + }, ], next); } @@ -353,6 +354,11 @@ function createGlobalModeratorsGroup(next) { ], next); } +function giveGlobalPrivileges(next) { + var privileges = require('./privileges'); + privileges.global.give(['chat', 'upload:post:image'], 'registered-users', next); +} + function createCategories(next) { var Categories = require('./categories'); @@ -498,6 +504,7 @@ install.setup = function (callback) { createCategories, createAdministrator, createGlobalModeratorsGroup, + giveGlobalPrivileges, createMenuItems, createWelcomePost, enableDefaultPlugins, @@ -517,7 +524,7 @@ install.setup = function (callback) { ], function (err, results) { if (err) { winston.warn('NodeBB Setup Aborted.\n ' + err.stack); - process.exit(); + process.exit(1); } else { var data = {}; if (results[6]) { diff --git a/src/messaging/notifications.js b/src/messaging/notifications.js index 3116c31a2b..6e5d6a2ce8 100644 --- a/src/messaging/notifications.js +++ b/src/messaging/notifications.js @@ -76,6 +76,7 @@ module.exports = function (Messaging) { notifications.create({ type: 'new-chat', + subject: '[[email:notif.chat.subject, ' + messageObj.fromUser.username + ']]', bodyShort: '[[notifications:new_message_from, ' + messageObj.fromUser.username + ']]', bodyLong: messageObj.content, nid: 'chat_' + fromuid + '_' + roomId, diff --git a/src/meta/build.js b/src/meta/build.js index 552c9aa55c..52037b702c 100644 --- a/src/meta/build.js +++ b/src/meta/build.js @@ -143,6 +143,11 @@ function build(targets, callback) { target = target.toLowerCase().replace(/-/g, ''); if (!aliases[target]) { winston.warn('[build] Unknown target: ' + target); + if (target.indexOf(',') !== -1) { + winston.warn('[build] Are you specifying multiple targets? Separate them with spaces:'); + winston.warn('[build] e.g. `./nodebb build adminjs tpl`'); + } + return false; } diff --git a/src/meta/js.js b/src/meta/js.js index e8b71cf6a3..fb3d12f683 100644 --- a/src/meta/js.js +++ b/src/meta/js.js @@ -14,6 +14,7 @@ var JS = module.exports; JS.scripts = { base: [ + 'node_modules/promise-polyfill/dist/polyfill.js', 'node_modules/jquery/dist/jquery.js', 'node_modules/socket.io-client/dist/socket.io.js', 'public/vendor/jquery/timeago/jquery.timeago.js', @@ -36,7 +37,6 @@ JS.scripts = { 'public/src/ajaxify.js', 'public/src/overrides.js', 'public/src/widgets.js', - 'node_modules/promise-polyfill/promise.js', ], // files listed below are only available client-side, or are bundled in to reduce # of network requests on cold load @@ -343,6 +343,11 @@ JS.buildBundle = function (target, fork, callback) { function (next) { getBundleScriptList(target, next); }, + function (files, next) { + mkdirp(path.join(__dirname, '../../build/public'), function (err) { + next(err, files); + }); + }, function (files, next) { var minify = global.env !== 'development'; var filePath = path.join(__dirname, '../../build/public', fileNames[target]); diff --git a/src/meta/minifier.js b/src/meta/minifier.js index ed6a68a625..e14761a707 100644 --- a/src/meta/minifier.js +++ b/src/meta/minifier.js @@ -75,7 +75,7 @@ function forkAction(action, callback) { freeChild(proc); if (message.type === 'error') { - return callback(message.err); + return callback(message.message); } if (message.type === 'end') { @@ -103,7 +103,7 @@ if (process.env.minifier_child) { if (typeof actions[action.act] !== 'function') { process.send({ type: 'error', - err: Error('Unknown action'), + message: 'Unknown action', }); return; } @@ -112,7 +112,7 @@ if (process.env.minifier_child) { if (err) { process.send({ type: 'error', - err: err, + message: err.stack, }); return; } diff --git a/src/meta/templates.js b/src/meta/templates.js index 943978ff56..f8b63d41fa 100644 --- a/src/meta/templates.js +++ b/src/meta/templates.js @@ -7,6 +7,7 @@ var async = require('async'); var path = require('path'); var fs = require('fs'); var nconf = require('nconf'); +var _ = require('lodash'); var plugins = require('../plugins'); var file = require('../file'); @@ -24,7 +25,7 @@ function processImports(paths, templatePath, source, callback) { return callback(null, source); } - var partial = '/' + matches[1]; + var partial = matches[1]; if (paths[partial] && templatePath !== partial) { fs.readFile(paths[partial], 'utf8', function (err, partialSource) { if (err) { @@ -43,124 +44,108 @@ function processImports(paths, templatePath, source, callback) { } Templates.processImports = processImports; -Templates.compile = function (callback) { - callback = callback || function () {}; +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'); + }); var themeConfig = require(nconf.get('theme_config')); - var baseTemplatesPaths = themeConfig.baseTheme ? getBaseTemplates(themeConfig.baseTheme) : [nconf.get('base_templates_path')]; + var theme = themeConfig.baseTheme; + + var themePath; + var themeTemplates = [nconf.get('theme_templates_path')]; + while (theme) { + themePath = path.join(nconf.get('themes_path'), theme); + themeConfig = require(path.join(themePath, 'theme.json')); + + themeTemplates.push(path.join(themePath, themeConfig.templates || 'templates')); + theme = themeConfig.baseTheme; + } + + themeTemplates.push(nconf.get('base_templates_path')); + themeTemplates = _.uniq(themeTemplates.reverse()); + + var coreTemplatesPath = nconf.get('core_templates_path'); + + var templateDirs = _.uniq([coreTemplatesPath].concat(themeTemplates, pluginTemplates)); + + async.filter(templateDirs, file.exists, callback); +} + +function getTemplateFiles(dirs, callback) { + async.waterfall([ + function (cb) { + async.map(dirs, function (dir, next) { + file.walk(dir, function (err, files) { + if (err) { return next(err); } + + files = files.filter(function (path) { + return path.endsWith('.tpl'); + }).map(function (file) { + return { + name: path.relative(dir, file).replace(/\\/g, '/'), + path: file, + }; + }); + next(null, files); + }); + }, cb); + }, + function (buckets, cb) { + var dict = {}; + buckets.forEach(function (files) { + files.forEach(function (file) { + dict[file.name] = file.path; + }); + }); + + cb(null, dict); + }, + ], callback); +} + +function compile(callback) { + callback = callback || function () {}; async.waterfall([ function (next) { - preparePaths(baseTemplatesPaths, next); + rimraf(viewsPath, function (err) { next(err); }); }, - function (paths, next) { - async.each(Object.keys(paths), function (relativePath, next) { + function (next) { + mkdirp(viewsPath, function (err) { next(err); }); + }, + getTemplateDirs, + getTemplateFiles, + function (files, next) { + async.each(Object.keys(files), function (name, next) { + var filePath = files[name]; + async.waterfall([ function (next) { - fs.readFile(paths[relativePath], 'utf8', next); + fs.readFile(filePath, 'utf8', next); }, function (source, next) { - processImports(paths, relativePath, source, next); + processImports(files, name, source, next); }, function (source, next) { - mkdirp(path.join(viewsPath, path.dirname(relativePath)), function (err) { + mkdirp(path.join(viewsPath, path.dirname(name)), function (err) { next(err, source); }); }, function (compiled, next) { - fs.writeFile(path.join(viewsPath, relativePath), compiled, next); + fs.writeFile(path.join(viewsPath, name), compiled, next); }, ], next); }, next); }, - function (next) { - rimraf(path.join(viewsPath, '*.js'), next); - }, function (next) { winston.verbose('[meta/templates] Successfully compiled templates.'); next(); }, ], callback); -}; - -function getBaseTemplates(theme) { - var baseTemplatesPaths = []; - var baseThemePath; - var baseThemeConfig; - - while (theme) { - baseThemePath = path.join(nconf.get('themes_path'), theme); - baseThemeConfig = require(path.join(baseThemePath, 'theme.json')); - - baseTemplatesPaths.push(path.join(baseThemePath, baseThemeConfig.templates || 'templates')); - theme = baseThemeConfig.baseTheme; - } - - return baseTemplatesPaths.reverse(); -} - -function preparePaths(baseTemplatesPaths, callback) { - var coreTemplatesPath = nconf.get('core_templates_path'); - var pluginTemplates; - async.waterfall([ - function (next) { - rimraf(viewsPath, next); - }, - function (next) { - mkdirp(viewsPath, next); - }, - function (viewsPath, next) { - plugins.fireHook('static:templates.precompile', {}, next); - }, - function (next) { - plugins.getTemplates(next); - }, - function (_pluginTemplates, next) { - pluginTemplates = _pluginTemplates; - winston.verbose('[meta/templates] Compiling templates'); - - async.parallel({ - coreTpls: function (next) { - file.walk(coreTemplatesPath, next); - }, - baseThemes: function (next) { - async.map(baseTemplatesPaths, function (baseTemplatePath, next) { - file.walk(baseTemplatePath, function (err, paths) { - paths = paths.map(function (tpl) { - return { - base: baseTemplatePath, - path: tpl.replace(baseTemplatePath, ''), - }; - }); - - next(err, paths); - }); - }, next); - }, - }, next); - }, - function (data, next) { - var baseThemes = data.baseThemes; - var coreTpls = data.coreTpls; - var paths = {}; - - coreTpls.forEach(function (el, i) { - paths[coreTpls[i].replace(coreTemplatesPath, '')] = coreTpls[i]; - }); - - baseThemes.forEach(function (baseTpls) { - baseTpls.forEach(function (el, i) { - paths[baseTpls[i].path] = path.join(baseTpls[i].base, baseTpls[i].path); - }); - }); - - for (var tpl in pluginTemplates) { - if (pluginTemplates.hasOwnProperty(tpl)) { - paths[tpl] = pluginTemplates[tpl]; - } - } - - next(null, paths); - }, - ], callback); } +Templates.compile = compile; diff --git a/src/middleware/header.js b/src/middleware/header.js index 5a896fcdd7..a0cf65d396 100644 --- a/src/middleware/header.js +++ b/src/middleware/header.js @@ -12,6 +12,7 @@ var meta = require('../meta'); var plugins = require('../plugins'); var navigation = require('../navigation'); var translator = require('../translator'); +var privileges = require('../privileges'); var utils = require('../utils'); var controllers = { @@ -77,6 +78,9 @@ module.exports = function (middleware) { isModerator: function (next) { user.isModeratorOfAnyCategory(req.uid, next); }, + privileges: function (next) { + privileges.global.get(req.uid, next); + }, user: function (next) { var userData = { uid: 0, @@ -132,6 +136,8 @@ module.exports = function (middleware) { results.user.isAdmin = results.isAdmin; results.user.isGlobalMod = results.isGlobalMod; results.user.isMod = !!results.isModerator; + results.user.privileges = results.privileges; + results.user.uid = parseInt(results.user.uid, 10); results.user.email = String(results.user.email); results.user['email:confirmed'] = parseInt(results.user['email:confirmed'], 10) === 1; @@ -183,6 +189,7 @@ module.exports = function (middleware) { templateValues.isAdmin = results.user.isAdmin; templateValues.isGlobalMod = results.user.isGlobalMod; templateValues.showModMenu = results.user.isAdmin || results.user.isGlobalMod || results.user.isMod; + templateValues.canChat = results.canChat && parseInt(meta.config.disableChat, 10) !== 1; templateValues.user = results.user; templateValues.userJSON = jsesc(JSON.stringify(results.user), { isScriptContext: true }); templateValues.useCustomCSS = parseInt(meta.config.useCustomCSS, 10) === 1 && meta.config.customCSS; diff --git a/src/notifications.js b/src/notifications.js index 6a7940d50d..4bf9782e61 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -220,7 +220,7 @@ function pushToUids(uids, notification, callback) { async.eachLimit(uids, 3, function (uid, next) { emailer.send('notification', uid, { path: notification.path, - subject: '[[notifications:new_notification_from, ' + meta.config.title + ']]', + subject: notification.subject || '[[notifications:new_notification_from, ' + meta.config.title + ']]', intro: utils.stripHTMLTags(notification.bodyShort), body: utils.stripHTMLTags(notification.bodyLong || ''), showUnsubscribe: true, diff --git a/src/plugins.js b/src/plugins.js index 653edee5fe..a1193125e8 100644 --- a/src/plugins.js +++ b/src/plugins.js @@ -138,10 +138,13 @@ Plugins.reloadRoutes = function (callback) { }); }; +// DEPRECATED: remove in v1.8.0 Plugins.getTemplates = function (callback) { var templates = {}; var tplName; + winston.warn('[deprecated] Plugins.getTemplates is DEPRECATED to be removed in v1.8.0'); + Plugins.data.getActive(function (err, plugins) { if (err) { return callback(err); @@ -213,8 +216,8 @@ Plugins.list = function (matching, callback) { require('request')(url, { json: true, }, function (err, res, body) { - if (err) { - winston.error('Error parsing plugins', err); + if (err || (res && res.statusCode !== 200)) { + winston.error('Error loading ' + url, err || body); return Plugins.normalise([], callback); } @@ -225,7 +228,7 @@ Plugins.list = function (matching, callback) { Plugins.normalise = function (apiReturn, callback) { var pluginMap = {}; var dependencies = require(path.join(nconf.get('base_dir'), 'package.json')).dependencies; - apiReturn = apiReturn || []; + apiReturn = Array.isArray(apiReturn) ? apiReturn : []; for (var i = 0; i < apiReturn.length; i += 1) { apiReturn[i].id = apiReturn[i].name; apiReturn[i].installed = false; diff --git a/src/posts/edit.js b/src/posts/edit.js index 0a9867feeb..8780fa6016 100644 --- a/src/posts/edit.js +++ b/src/posts/edit.js @@ -12,6 +12,7 @@ var plugins = require('../plugins'); var cache = require('./cache'); var pubsub = require('../pubsub'); var utils = require('../utils'); +var translator = require('../translator'); module.exports = function (Posts) { pubsub.on('post:edit', function (pid) { @@ -140,7 +141,7 @@ module.exports = function (Posts) { db.setObject('topic:' + tid, results.topic, next); }, function (next) { - topics.updateTags(tid, data.tags, next); + topics.updateTopicTags(tid, data.tags, next); }, function (next) { topics.getTopicTagsObjects(tid, next); @@ -149,6 +150,7 @@ module.exports = function (Posts) { topicData.tags = data.tags; topicData.oldTitle = results.topic.title; topicData.timestamp = results.topic.timestamp; + var renamed = translator.escape(validator.escape(String(title))) !== results.topic.title; plugins.fireHook('action:topic.edit', { topic: topicData, uid: data.uid }); next(null, { tid: tid, @@ -158,7 +160,7 @@ module.exports = function (Posts) { oldTitle: results.topic.title, slug: topicData.slug, isMainPost: true, - renamed: title !== results.topic.title, + renamed: renamed, tags: tags, }); }, diff --git a/src/posts/votes.js b/src/posts/votes.js index f7fdde759e..422ca67efa 100644 --- a/src/posts/votes.js +++ b/src/posts/votes.js @@ -6,6 +6,7 @@ var meta = require('../meta'); var db = require('../database'); var user = require('../user'); var plugins = require('../plugins'); +var privileges = require('../privileges'); module.exports = function (Posts) { var votesInProgress = {}; @@ -15,16 +16,27 @@ module.exports = function (Posts) { return callback(new Error('[[error:reputation-system-disabled]]')); } - if (voteInProgress(pid, uid)) { - return callback(new Error('[[error:already-voting-for-this-post]]')); - } + async.waterfall([ + function (next) { + privileges.posts.can('posts:upvote', pid, uid, next); + }, + function (canUpvote, next) { + if (!canUpvote) { + return next(new Error('[[error:no-privileges]]')); + } - putVoteInProgress(pid, uid); + if (voteInProgress(pid, uid)) { + return next(new Error('[[error:already-voting-for-this-post]]')); + } - toggleVote('upvote', pid, uid, function (err, data) { - clearVoteProgress(pid, uid); - callback(err, data); - }); + putVoteInProgress(pid, uid); + + toggleVote('upvote', pid, uid, function (err, data) { + clearVoteProgress(pid, uid); + next(err, data); + }); + }, + ], callback); }; Posts.downvote = function (pid, uid, callback) { @@ -36,16 +48,27 @@ module.exports = function (Posts) { return callback(new Error('[[error:downvoting-disabled]]')); } - if (voteInProgress(pid, uid)) { - return callback(new Error('[[error:already-voting-for-this-post]]')); - } + async.waterfall([ + function (next) { + privileges.posts.can('posts:downvote', pid, uid, next); + }, + function (canUpvote, next) { + if (!canUpvote) { + return next(new Error('[[error:no-privileges]]')); + } - putVoteInProgress(pid, uid); + if (voteInProgress(pid, uid)) { + return next(new Error('[[error:already-voting-for-this-post]]')); + } - toggleVote('downvote', pid, uid, function (err, data) { - clearVoteProgress(pid, uid); - callback(err, data); - }); + putVoteInProgress(pid, uid); + + toggleVote('downvote', pid, uid, function (err, data) { + clearVoteProgress(pid, uid); + next(err, data); + }); + }, + ], callback); }; Posts.unvote = function (pid, uid, callback) { @@ -106,7 +129,7 @@ module.exports = function (Posts) { }; function voteInProgress(pid, uid) { - return Array.isArray(votesInProgress[uid]) && votesInProgress[uid].indexOf(parseInt(pid, 10)) !== -1; + return Array.isArray(votesInProgress[uid]) && votesInProgress[uid].includes(parseInt(pid, 10)); } function putVoteInProgress(pid, uid) { @@ -156,7 +179,7 @@ module.exports = function (Posts) { return callback(new Error('[[error:self-vote]]')); } - if (command === 'downvote' && parseInt(results.reputation, 10) < parseInt(meta.config['privileges:downvote'], 10)) { + if (command === 'downvote' && parseInt(results.reputation, 10) < parseInt(meta.config['min:rep:downvote'], 10)) { return callback(new Error('[[error:not-enough-reputation-to-downvote]]')); } diff --git a/src/privileges.js b/src/privileges.js index c1ac018ec7..b42a20e13c 100644 --- a/src/privileges.js +++ b/src/privileges.js @@ -11,9 +11,9 @@ privileges.privilegeLabels = [ { name: 'Tag Topics' }, { name: 'Edit Posts' }, { name: 'Delete Posts' }, + { name: 'Upvote Posts' }, + { name: 'Downvote Posts' }, { name: 'Delete Topics' }, - { name: 'Upload Images' }, - { name: 'Upload Files' }, { name: 'Purge' }, { name: 'Moderate' }, ]; @@ -27,9 +27,9 @@ privileges.userPrivilegeList = [ 'topics:tag', 'posts:edit', 'posts:delete', + 'posts:upvote', + 'posts:downvote', 'topics:delete', - 'upload:post:image', - 'upload:post:file', 'purge', 'moderate', ]; @@ -40,6 +40,7 @@ privileges.groupPrivilegeList = privileges.userPrivilegeList.map(function (privi privileges.privilegeList = privileges.userPrivilegeList.concat(privileges.groupPrivilegeList); +require('./privileges/global')(privileges); require('./privileges/categories')(privileges); require('./privileges/topics')(privileges); require('./privileges/posts')(privileges); diff --git a/src/privileges/categories.js b/src/privileges/categories.js index 69aec85135..60822c4e46 100644 --- a/src/privileges/categories.js +++ b/src/privileges/categories.js @@ -15,121 +15,20 @@ module.exports = function (privileges) { privileges.categories.list = function (cid, callback) { // Method used in admin/category controller to show all users/groups with privs in that given cid - var privilegeLabels = privileges.privilegeLabels.slice(); - var userPrivilegeList = privileges.userPrivilegeList.slice(); - var groupPrivilegeList = privileges.groupPrivilegeList.slice(); async.waterfall([ function (next) { async.parallel({ labels: function (next) { async.parallel({ - users: async.apply(plugins.fireHook, 'filter:privileges.list_human', privilegeLabels), - groups: async.apply(plugins.fireHook, 'filter:privileges.groups.list_human', privilegeLabels), + users: async.apply(plugins.fireHook, 'filter:privileges.list_human', privileges.privilegeLabels.slice()), + groups: async.apply(plugins.fireHook, 'filter:privileges.groups.list_human', privileges.privilegeLabels.slice()), }, next); }, users: function (next) { - var userPrivileges; - var memberSets; - async.waterfall([ - async.apply(plugins.fireHook, 'filter:privileges.list', userPrivilegeList), - function (_privs, next) { - userPrivileges = _privs; - groups.getMembersOfGroups(userPrivileges.map(function (privilege) { - return 'cid:' + cid + ':privileges:' + privilege; - }), next); - }, - function (_memberSets, next) { - memberSets = _memberSets.map(function (set) { - return set.map(function (uid) { - return parseInt(uid, 10); - }); - }); - - var members = _.uniq(_.flatten(memberSets)); - - user.getUsersFields(members, ['picture', 'username'], next); - }, - function (memberData, next) { - memberData.forEach(function (member) { - member.privileges = {}; - for (var x = 0, numPrivs = userPrivileges.length; x < numPrivs; x += 1) { - member.privileges[userPrivileges[x]] = memberSets[x].indexOf(parseInt(member.uid, 10)) !== -1; - } - }); - - next(null, memberData); - }, - ], next); + helpers.getUserPrivileges(cid, 'filter:privileges.list', privileges.userPrivilegeList, next); }, groups: function (next) { - var groupPrivileges; - async.waterfall([ - async.apply(plugins.fireHook, 'filter:privileges.groups.list', groupPrivilegeList), - function (_privs, next) { - groupPrivileges = _privs; - async.parallel({ - memberSets: function (next) { - groups.getMembersOfGroups(groupPrivileges.map(function (privilege) { - return 'cid:' + cid + ':privileges:' + privilege; - }), next); - }, - groupNames: function (next) { - groups.getGroups('groups:createtime', 0, -1, next); - }, - }, next); - }, - function (results, next) { - var memberSets = results.memberSets; - var uniqueGroups = _.uniq(_.flatten(memberSets)); - - var groupNames = results.groupNames.filter(function (groupName) { - return groupName.indexOf(':privileges:') === -1 && uniqueGroups.indexOf(groupName) !== -1; - }); - - groupNames = groups.ephemeralGroups.concat(groupNames); - var registeredUsersIndex = groupNames.indexOf('registered-users'); - if (registeredUsersIndex !== -1) { - groupNames.splice(0, 0, groupNames.splice(registeredUsersIndex, 1)[0]); - } else { - groupNames = ['registered-users'].concat(groupNames); - } - - var adminIndex = groupNames.indexOf('administrators'); - if (adminIndex !== -1) { - groupNames.splice(adminIndex, 1); - } - - var memberPrivs; - - var memberData = groupNames.map(function (member) { - memberPrivs = {}; - - for (var x = 0, numPrivs = groupPrivileges.length; x < numPrivs; x += 1) { - memberPrivs[groupPrivileges[x]] = memberSets[x].indexOf(member) !== -1; - } - return { - name: member, - privileges: memberPrivs, - }; - }); - - next(null, memberData); - }, - function (memberData, next) { - // Grab privacy info for the groups as well - async.map(memberData, function (member, next) { - async.waterfall([ - function (next) { - groups.isPrivate(member.name, next); - }, - function (isPrivate, next) { - member.isPrivate = isPrivate; - next(null, member); - }, - ], next); - }, next); - }, - ], next); + helpers.getGroupPrivileges(cid, 'filter:privileges.groups.list', privileges.groupPrivilegeList, next); }, }, next); }, @@ -299,19 +198,13 @@ module.exports = function (privileges) { }; privileges.categories.give = function (privileges, cid, groupName, callback) { - giveOrRescind(groups.join, privileges, cid, groupName, callback); + helpers.giveOrRescind(groups.join, privileges, cid, groupName, callback); }; privileges.categories.rescind = function (privileges, cid, groupName, callback) { - giveOrRescind(groups.leave, privileges, cid, groupName, callback); + helpers.giveOrRescind(groups.leave, privileges, cid, groupName, callback); }; - function giveOrRescind(method, privileges, cid, groupName, callback) { - async.eachSeries(privileges, function (privilege, next) { - method('cid:' + cid + ':privileges:groups:' + privilege, groupName, next); - }, callback); - } - privileges.categories.canMoveAllTopics = function (currentCid, targetCid, uid, callback) { async.waterfall([ function (next) { diff --git a/src/privileges/global.js b/src/privileges/global.js new file mode 100644 index 0000000000..f1f88c4fff --- /dev/null +++ b/src/privileges/global.js @@ -0,0 +1,128 @@ + +'use strict'; + +var async = require('async'); +var _ = require('lodash'); + +var user = require('../user'); +var groups = require('../groups'); +var helpers = require('./helpers'); +var plugins = require('../plugins'); + +module.exports = function (privileges) { + privileges.global = {}; + + privileges.global.privilegeLabels = [ + { name: 'Chat' }, + { name: 'Upload Images' }, + { name: 'Upload Files' }, + ]; + + privileges.global.userPrivilegeList = [ + 'chat', + 'upload:post:image', + 'upload:post:file', + ]; + + privileges.global.groupPrivilegeList = privileges.global.userPrivilegeList.map(function (privilege) { + return 'groups:' + privilege; + }); + + privileges.global.list = function (callback) { + async.waterfall([ + function (next) { + async.parallel({ + labels: function (next) { + async.parallel({ + users: async.apply(plugins.fireHook, 'filter:privileges.global.list_human', privileges.global.privilegeLabels.slice()), + groups: async.apply(plugins.fireHook, 'filter:privileges.global.groups.list_human', privileges.global.privilegeLabels.slice()), + }, next); + }, + users: function (next) { + helpers.getUserPrivileges(0, 'filter:privileges.global.list', privileges.global.userPrivilegeList, next); + }, + groups: function (next) { + helpers.getGroupPrivileges(0, 'filter:privileges.global.groups.list', privileges.global.groupPrivilegeList, next); + }, + }, next); + }, + function (payload, next) { + // This is a hack because I can't do {labels.users.length} to echo the count in templates.js + payload.columnCount = payload.labels.users.length + 2; + next(null, payload); + }, + ], callback); + }; + + privileges.global.get = function (uid, callback) { + async.waterfall([ + function (next) { + async.parallel({ + privileges: function (next) { + helpers.isUserAllowedTo(privileges.global.userPrivilegeList, uid, 0, next); + }, + isAdministrator: function (next) { + user.isAdministrator(uid, next); + }, + isGlobalModerator: function (next) { + user.isGlobalModerator(uid, next); + }, + }, next); + }, + function (results, next) { + var privData = _.zipObject(privileges.global.userPrivilegeList, results.privileges); + var isAdminOrMod = results.isAdministrator || results.isGlobalModerator; + + plugins.fireHook('filter:privileges.global.get', { + chat: privData.chat || isAdminOrMod, + 'upload:post:image': privData['upload:post:image'] || isAdminOrMod, + 'upload:post:file': privData['upload:post:file'] || isAdminOrMod, + }, next); + }, + ], callback); + }; + + privileges.global.can = function (privilege, uid, callback) { + helpers.some([ + function (next) { + helpers.isUserAllowedTo(privilege, uid, [0], function (err, results) { + next(err, Array.isArray(results) && results.length ? results[0] : false); + }); + }, + function (next) { + user.isGlobalModerator(uid, next); + }, + function (next) { + user.isAdministrator(uid, next); + }, + ], callback); + }; + + privileges.global.give = function (privileges, groupName, callback) { + helpers.giveOrRescind(groups.join, privileges, 0, groupName, callback); + }; + + privileges.global.rescind = function (privileges, groupName, callback) { + helpers.giveOrRescind(groups.leave, privileges, 0, groupName, callback); + }; + + privileges.global.userPrivileges = function (uid, callback) { + var tasks = {}; + + privileges.global.userPrivilegeList.forEach(function (privilege) { + tasks[privilege] = async.apply(groups.isMember, uid, 'cid:0:privileges:' + privilege); + }); + + async.parallel(tasks, callback); + }; + + privileges.global.groupPrivileges = function (groupName, callback) { + var tasks = {}; + + privileges.global.groupPrivilegeList.forEach(function (privilege) { + tasks[privilege] = async.apply(groups.isMember, groupName, 'cid:0:privileges:' + privilege); + }); + + async.parallel(tasks, callback); + }; +}; diff --git a/src/privileges/helpers.js b/src/privileges/helpers.js index 0f56e4f9c8..c3452c495e 100644 --- a/src/privileges/helpers.js +++ b/src/privileges/helpers.js @@ -2,7 +2,11 @@ 'use strict'; var async = require('async'); +var _ = require('lodash'); + var groups = require('../groups'); +var user = require('../user'); +var plugins = require('../plugins'); var helpers = module.exports; @@ -111,3 +115,115 @@ function isGuestAllowedToPrivileges(privileges, cid, callback) { groups.isMemberOfGroups('guests', groupKeys, callback); } + +helpers.getUserPrivileges = function (cid, hookName, userPrivilegeList, callback) { + var userPrivileges; + var memberSets; + async.waterfall([ + async.apply(plugins.fireHook, hookName, userPrivilegeList.slice()), + function (_privs, next) { + userPrivileges = _privs; + groups.getMembersOfGroups(userPrivileges.map(function (privilege) { + return 'cid:' + cid + ':privileges:' + privilege; + }), next); + }, + function (_memberSets, next) { + memberSets = _memberSets.map(function (set) { + return set.map(function (uid) { + return parseInt(uid, 10); + }); + }); + + var members = _.uniq(_.flatten(memberSets)); + + user.getUsersFields(members, ['picture', 'username'], next); + }, + function (memberData, next) { + memberData.forEach(function (member) { + member.privileges = {}; + for (var x = 0, numPrivs = userPrivileges.length; x < numPrivs; x += 1) { + member.privileges[userPrivileges[x]] = memberSets[x].indexOf(parseInt(member.uid, 10)) !== -1; + } + }); + + next(null, memberData); + }, + ], callback); +}; + +helpers.getGroupPrivileges = function (cid, hookName, groupPrivilegeList, callback) { + var groupPrivileges; + async.waterfall([ + async.apply(plugins.fireHook, hookName, groupPrivilegeList.slice()), + function (_privs, next) { + groupPrivileges = _privs; + async.parallel({ + memberSets: function (next) { + groups.getMembersOfGroups(groupPrivileges.map(function (privilege) { + return 'cid:' + cid + ':privileges:' + privilege; + }), next); + }, + groupNames: function (next) { + groups.getGroups('groups:createtime', 0, -1, next); + }, + }, next); + }, + function (results, next) { + var memberSets = results.memberSets; + var uniqueGroups = _.uniq(_.flatten(memberSets)); + + var groupNames = results.groupNames.filter(function (groupName) { + return groupName.indexOf(':privileges:') === -1 && uniqueGroups.indexOf(groupName) !== -1; + }); + + groupNames = groups.ephemeralGroups.concat(groupNames); + var registeredUsersIndex = groupNames.indexOf('registered-users'); + if (registeredUsersIndex !== -1) { + groupNames.splice(0, 0, groupNames.splice(registeredUsersIndex, 1)[0]); + } else { + groupNames = ['registered-users'].concat(groupNames); + } + + var adminIndex = groupNames.indexOf('administrators'); + if (adminIndex !== -1) { + groupNames.splice(adminIndex, 1); + } + + var memberPrivs; + + var memberData = groupNames.map(function (member) { + memberPrivs = {}; + + for (var x = 0, numPrivs = groupPrivileges.length; x < numPrivs; x += 1) { + memberPrivs[groupPrivileges[x]] = memberSets[x].indexOf(member) !== -1; + } + return { + name: member, + privileges: memberPrivs, + }; + }); + + next(null, memberData); + }, + function (memberData, next) { + // Grab privacy info for the groups as well + async.map(memberData, function (member, next) { + async.waterfall([ + function (next) { + groups.isPrivate(member.name, next); + }, + function (isPrivate, next) { + member.isPrivate = isPrivate; + next(null, member); + }, + ], next); + }, next); + }, + ], callback); +}; + +helpers.giveOrRescind = function (method, privileges, cid, groupName, callback) { + async.eachSeries(privileges, function (privilege, next) { + method('cid:' + cid + ':privileges:groups:' + privilege, groupName, next); + }, callback); +}; diff --git a/src/privileges/posts.js b/src/privileges/posts.js index b157fa798b..1741dfa587 100644 --- a/src/privileges/posts.js +++ b/src/privileges/posts.js @@ -200,7 +200,7 @@ module.exports = function (privileges) { }, next); }, function (results, next) { - var minimumReputation = utils.isNumber(meta.config['privileges:flag']) ? parseInt(meta.config['privileges:flag'], 10) : 0; + var minimumReputation = utils.isNumber(meta.config['min:rep:flag']) ? parseInt(meta.config['min:rep:flag'], 10) : 0; var canFlag = results.isAdminOrMod || parseInt(results.userReputation, 10) >= minimumReputation; next(null, { flag: canFlag }); }, diff --git a/src/privileges/users.js b/src/privileges/users.js index 5e48750dc9..c656ab0b8d 100644 --- a/src/privileges/users.js +++ b/src/privileges/users.js @@ -141,9 +141,13 @@ module.exports = function (privileges) { }, next); }, function (results, next) { - var canEdit = results.isAdmin || (results.isGlobalMod && !results.isTargetAdmin); - - next(null, canEdit); + results.canEdit = results.isAdmin || (results.isGlobalMod && !results.isTargetAdmin); + results.callerUid = callerUid; + results.uid = uid; + plugins.fireHook('filter:user.canEdit', results, next); + }, + function (data, next) { + next(null, data.canEdit); }, ], callback); }; diff --git a/src/routes/admin.js b/src/routes/admin.js index ba4048516e..db0ce7798c 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -55,6 +55,7 @@ function addRoutes(router, middleware, controllers) { router.get('/manage/categories/:category_id', middlewares, controllers.admin.categories.get); router.get('/manage/categories/:category_id/analytics', middlewares, controllers.admin.categories.getAnalytics); + router.get('/manage/privileges/:cid?', middlewares, controllers.admin.privileges.get); router.get('/manage/tags', middlewares, controllers.admin.tags.get); router.get('/manage/post-queue', middlewares, controllers.admin.postQueue.get); router.get('/manage/ip-blacklist', middlewares, controllers.admin.blacklist.get); @@ -71,6 +72,8 @@ function addRoutes(router, middleware, controllers) { router.get('/manage/users/banned', middlewares, controllers.admin.users.banned); router.get('/manage/registration', middlewares, controllers.admin.users.registrationQueue); + router.get('/manage/admins-mods', middlewares, controllers.admin.adminsMods.get); + router.get('/manage/groups', middlewares, controllers.admin.groups.list); router.get('/manage/groups/:name', middlewares, controllers.admin.groups.get); diff --git a/src/socket.io/admin/categories.js b/src/socket.io/admin/categories.js index 232b2041d1..7bd491c8cd 100644 --- a/src/socket.io/admin/categories.js +++ b/src/socket.io/admin/categories.js @@ -83,7 +83,11 @@ Categories.setPrivilege = function (socket, data, callback) { }; Categories.getPrivilegeSettings = function (socket, cid, callback) { - privileges.categories.list(cid, callback); + if (!parseInt(cid, 10)) { + privileges.global.list(callback); + } else { + privileges.categories.list(cid, callback); + } }; Categories.copyPrivilegesToChildren = function (socket, cid, callback) { diff --git a/src/socket.io/admin/tags.js b/src/socket.io/admin/tags.js index 8fe50790eb..f3c403e704 100644 --- a/src/socket.io/admin/tags.js +++ b/src/socket.io/admin/tags.js @@ -13,11 +13,19 @@ Tags.create = function (socket, data, callback) { }; Tags.update = function (socket, data, callback) { - if (!data) { + if (!Array.isArray(data)) { return callback(new Error('[[error:invalid-data]]')); } - topics.updateTag(data.tag, data, callback); + topics.updateTags(data, callback); +}; + +Tags.rename = function (socket, data, callback) { + if (!Array.isArray(data)) { + return callback(new Error('[[error:invalid-data]]')); + } + + topics.renameTags(data, callback); }; Tags.deleteTags = function (socket, data, callback) { diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js index d58fb7fa59..f5d2e8143a 100644 --- a/src/socket.io/modules.js +++ b/src/socket.io/modules.js @@ -11,6 +11,7 @@ var Messaging = require('../messaging'); var utils = require('../utils'); var server = require('./'); var user = require('../user'); +var privileges = require('../privileges'); var SocketModules = module.exports; @@ -73,6 +74,12 @@ SocketModules.chats.newRoom = function (socket, data, callback) { async.waterfall([ function (next) { + privileges.global.can('chat', socket.uid, next); + }, + function (canChat, next) { + if (!canChat) { + return next(new Error('[[error:no-privileges]]')); + } Messaging.canMessageUser(socket.uid, data.touid, next); }, function (next) { @@ -92,6 +99,13 @@ SocketModules.chats.send = function (socket, data, callback) { async.waterfall([ function (next) { + privileges.global.can('chat', socket.uid, next); + }, + function (canChat, next) { + if (!canChat) { + return next(new Error('[[error:no-privileges]]')); + } + plugins.fireHook('filter:messaging.send', { data: data, uid: socket.uid, @@ -133,6 +147,13 @@ SocketModules.chats.loadRoom = function (socket, data, callback) { async.waterfall([ function (next) { + privileges.global.can('chat', socket.uid, next); + }, + function (canChat, next) { + if (!canChat) { + return next(new Error('[[error:no-privileges]]')); + } + Messaging.isUserInRoom(socket.uid, data.roomId, next); }, function (inRoom, next) { @@ -174,6 +195,13 @@ SocketModules.chats.addUserToRoom = function (socket, data, callback) { var uid; async.waterfall([ function (next) { + privileges.global.can('chat', socket.uid, next); + }, + function (canChat, next) { + if (!canChat) { + return next(new Error('[[error:no-privileges]]')); + } + Messaging.getUserCountInRoom(data.roomId, next); }, function (userCount, next) { diff --git a/src/socket.io/user/profile.js b/src/socket.io/user/profile.js index 792b55200d..d9c89df6a0 100644 --- a/src/socket.io/user/profile.js +++ b/src/socket.io/user/profile.js @@ -15,7 +15,7 @@ module.exports = function (SocketUser) { async.waterfall([ function (next) { - isAdminOrSelfAndPasswordMatch(socket.uid, data, next); + isPrivilegedOrSelfAndPasswordMatch(socket.uid, data, next); }, function (next) { SocketUser.updateProfile(socket, data, next); @@ -29,7 +29,7 @@ module.exports = function (SocketUser) { } async.waterfall([ function (next) { - user.isAdminOrSelf(socket.uid, data.uid, next); + user.isAdminOrGlobalModOrSelf(socket.uid, data.uid, next); }, function (next) { user.updateCoverPicture(data, next); @@ -43,7 +43,7 @@ module.exports = function (SocketUser) { } async.waterfall([ function (next) { - user.isAdminOrSelf(socket.uid, data.uid, next); + user.isAdminOrGlobalModOrSelf(socket.uid, data.uid, next); }, function (next) { user.uploadCroppedPicture(data, next); @@ -58,7 +58,7 @@ module.exports = function (SocketUser) { async.waterfall([ function (next) { - user.isAdminOrSelf(socket.uid, data.uid, next); + user.isAdminOrGlobalModOrSelf(socket.uid, data.uid, next); }, function (next) { user.removeCoverPicture(data, next); @@ -66,11 +66,13 @@ module.exports = function (SocketUser) { ], callback); }; - function isAdminOrSelfAndPasswordMatch(uid, data, callback) { + function isPrivilegedOrSelfAndPasswordMatch(uid, data, callback) { async.waterfall([ function (next) { async.parallel({ isAdmin: async.apply(user.isAdministrator, uid), + isTargetAdmin: async.apply(user.isAdministrator, data.uid), + isGlobalMod: async.apply(user.isGlobalModerator, uid), hasPassword: async.apply(user.hasPassword, data.uid), passwordMatch: function (next) { if (data.password) { @@ -84,7 +86,11 @@ module.exports = function (SocketUser) { function (results, next) { var isSelf = parseInt(uid, 10) === parseInt(data.uid, 10); - if (!results.isAdmin && !isSelf) { + if (results.isTargetAdmin && !results.isAdmin) { + return next(new Error('[[error:no-privileges]]')); + } + + if ((!results.isAdmin || !results.isGlobalMod) && !isSelf) { return next(new Error('[[error:no-privileges]]')); } diff --git a/src/topics.js b/src/topics.js index f20c069d98..2ac14e4264 100644 --- a/src/topics.js +++ b/src/topics.js @@ -52,7 +52,7 @@ Topics.getPageCount = function (tid, uid, callback) { user.getSettings(uid, next); }, function (settings, next) { - next(null, Math.ceil((parseInt(postCount, 10) - 1) / settings.postsPerPage)); + next(null, Math.ceil(parseInt(postCount, 10) / settings.postsPerPage)); }, ], callback); }; diff --git a/src/topics/create.js b/src/topics/create.js index edb1f1b84d..bc1091bf52 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -64,6 +64,9 @@ module.exports = function (Topics) { 'cid:' + topicData.cid + ':uid:' + topicData.uid + ':tids', ], timestamp, topicData.tid, next); }, + function (next) { + db.sortedSetAdd('cid:' + topicData.cid + ':tids:votes', 0, topicData.tid, next); + }, function (next) { categories.updateRecentTid(topicData.cid, topicData.tid, next); }, diff --git a/src/topics/follow.js b/src/topics/follow.js index cf8754bcc5..a590ad2392 100644 --- a/src/topics/follow.js +++ b/src/topics/follow.js @@ -219,6 +219,7 @@ module.exports = function (Topics) { notifications.create({ type: 'new-reply', + subject: title, bodyShort: '[[notifications:user_posted_to, ' + postData.user.username + ', ' + titleEscaped + ']]', bodyLong: postData.content, pid: postData.pid, diff --git a/src/topics/tags.js b/src/topics/tags.js index 4561c950fa..6d725c2269 100644 --- a/src/topics/tags.js +++ b/src/topics/tags.js @@ -2,13 +2,14 @@ 'use strict'; var async = require('async'); +var validator = require('validator'); var db = require('../database'); var meta = require('../meta'); var _ = require('lodash'); var plugins = require('../plugins'); var utils = require('../utils'); - +var batch = require('../batch'); module.exports = function (Topics) { Topics.createTags = function (tags, tid, timestamp, callback) { @@ -95,13 +96,61 @@ module.exports = function (Topics) { ], callback); }; - Topics.updateTag = function (tag, data, callback) { - if (!tag) { - return setImmediate(callback, new Error('[[error:invalid-tag]]')); - } - db.setObject('tag:' + tag, data, callback); + Topics.updateTags = function (data, callback) { + async.eachSeries(data, function (tagData, next) { + db.setObject('tag:' + tagData.value, { + color: tagData.color, + bgColor: tagData.bgColor, + }, next); + }, callback); }; + Topics.renameTags = function (data, callback) { + async.eachSeries(data, function (tagData, next) { + renameTag(tagData.value, tagData.newName, next); + }, callback); + }; + + function renameTag(tag, newTagName, callback) { + if (!newTagName || tag === newTagName) { + return setImmediate(callback); + } + async.waterfall([ + function (next) { + Topics.createEmptyTag(newTagName, next); + }, + function (next) { + batch.processSortedSet('tag:' + tag + ':topics', function (tids, next) { + async.waterfall([ + function (next) { + db.sortedSetScores('tag:' + tag + ':topics', tids, next); + }, + function (scores, next) { + db.sortedSetAdd('tag:' + newTagName + ':topics', scores, tids, next); + }, + function (next) { + var keys = tids.map(function (tid) { + return 'topic:' + tid + ':tags'; + }); + + async.series([ + async.apply(db.sortedSetRemove, 'tag:' + tag + ':topics', tids), + async.apply(db.setsRemove, keys, tag), + async.apply(db.setsAdd, keys, newTagName), + ], next); + }, + ], next); + }, next); + }, + function (next) { + Topics.deleteTag(tag, next); + }, + function (next) { + updateTagCount(newTagName, next); + }, + ], callback); + } + function updateTagCount(tag, callback) { callback = callback || function () {}; async.waterfall([ @@ -147,7 +196,9 @@ module.exports = function (Topics) { return 'tag:' + tag; }), next); }, - ], callback); + ], function (err) { + callback(err); + }); }; function removeTagsFromTopics(tags, callback) { @@ -191,6 +242,7 @@ module.exports = function (Topics) { }, function (tagData, next) { tags.forEach(function (tag, index) { + tag.valueEscaped = validator.escape(String(tag.value)); tag.color = tagData[index] ? tagData[index].color : ''; tag.bgColor = tagData[index] ? tagData[index].bgColor : ''; }); @@ -264,7 +316,7 @@ module.exports = function (Topics) { ], callback); }; - Topics.updateTags = function (tid, tags, callback) { + Topics.updateTopicTags = function (tid, tags, callback) { callback = callback || function () {}; async.waterfall([ function (next) { diff --git a/src/topics/tools.js b/src/topics/tools.js index be87b8826f..bacfe20b4d 100644 --- a/src/topics/tools.js +++ b/src/topics/tools.js @@ -250,29 +250,35 @@ module.exports = function (Topics) { var topic; var oldCid; var cid = data.cid; + async.waterfall([ function (next) { - Topics.exists(tid, next); - }, - function (exists, next) { - if (!exists) { - return next(new Error('[[error:no-topic]]')); - } - Topics.getTopicFields(tid, ['cid', 'lastposttime', 'pinned', 'deleted', 'postcount'], next); + Topics.getTopicData(tid, next); }, function (topicData, next) { topic = topicData; + if (!topic) { + return next(new Error('[[error:no-topic]]')); + } + if (parseInt(cid, 10) === parseInt(topic.cid, 10)) { + return next(new Error('[[error:cant-move-topic-to-same-category]]')); + } db.sortedSetsRemove([ 'cid:' + topicData.cid + ':tids', 'cid:' + topicData.cid + ':tids:pinned', 'cid:' + topicData.cid + ':tids:posts', + 'cid:' + topicData.cid + ':tids:votes', 'cid:' + topicData.cid + ':tids:lastposttime', 'cid:' + topicData.cid + ':recent_tids', + 'cid:' + topicData.cid + ':uid:' + topicData.uid + ':tids', ], tid, next); }, function (next) { db.sortedSetAdd('cid:' + cid + ':tids:lastposttime', topic.lastposttime, tid, next); }, + function (next) { + db.sortedSetAdd('cid:' + cid + ':uid:' + topic.uid + ':tids', topic.timestamp, tid, next); + }, function (next) { if (parseInt(topic.pinned, 10)) { db.sortedSetAdd('cid:' + cid + ':tids:pinned', Date.now(), tid, next); @@ -285,6 +291,10 @@ module.exports = function (Topics) { topic.postcount = topic.postcount || 0; db.sortedSetAdd('cid:' + cid + ':tids:posts', topic.postcount, tid, next); }, + function (next) { + var votes = (parseInt(topic.upvotes, 10) || 0) - (parseInt(topic.downvotes, 10) || 0); + db.sortedSetAdd('cid:' + cid + ':tids:votes', votes, tid, next); + }, ], function (err) { next(err); }); diff --git a/src/upgrades/1.7.0/generate-custom-html.js b/src/upgrades/1.7.0/generate-custom-html.js index 5de0238920..58ac2adf61 100644 --- a/src/upgrades/1.7.0/generate-custom-html.js +++ b/src/upgrades/1.7.0/generate-custom-html.js @@ -1,37 +1,43 @@ 'use strict'; +var db = require('../../database'); var meta = require('../../meta'); module.exports = { name: 'Generate customHTML block from old customJS setting', timestamp: Date.UTC(2017, 9, 12), method: function (callback) { - var newHTML = meta.config.customJS; - var newJS = []; - - // Forgive me for parsing HTML with regex... - var scriptMatch = /^([\s\S]+?)<\/script>/m; - var match = scriptMatch.exec(newHTML); - - while (match) { - if (match[1]) { - // Append to newJS array - newJS.push(match[1].trim()); - - // Remove the match from the existing value - newHTML = ((match.index > 0 ? newHTML.slice(0, match.index) : '') + newHTML.slice(match.index + match[0].length)).trim(); + db.getObjectField('config', 'customJS', function (err, newHTML) { + if (err) { + return callback(err); } - match = scriptMatch.exec(newHTML); - } + var newJS = []; - // Combine newJS array - newJS = newJS.join('\n\n'); + // Forgive me for parsing HTML with regex... + var scriptMatch = /^([\s\S]+?)<\/script>/m; + var match = scriptMatch.exec(newHTML); - // Write both values to config - meta.configs.setMultiple({ - customHTML: newHTML, - customJS: newJS, - }, callback); + while (match) { + if (match[1]) { + // Append to newJS array + newJS.push(match[1].trim()); + + // Remove the match from the existing value + newHTML = ((match.index > 0 ? newHTML.slice(0, match.index) : '') + newHTML.slice(match.index + match[0].length)).trim(); + } + + match = scriptMatch.exec(newHTML); + } + + // Combine newJS array + newJS = newJS.join('\n\n'); + + // Write both values to config + meta.configs.setMultiple({ + customHTML: newHTML, + customJS: newJS, + }, callback); + }); }, }; 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 4e747f6846..637d2c534d 100644 --- a/src/upgrades/1.7.3/key_value_schema_change.js +++ b/src/upgrades/1.7.3/key_value_schema_change.js @@ -48,7 +48,7 @@ module.exports = { done = true; return next(); } - + delete item.expireAt; if (Object.keys(item).length === 3 && item.hasOwnProperty('_key') && item.hasOwnProperty('value')) { client.collection('objects').update({ _key: item._key }, { $rename: { value: 'data' } }, next); } else { diff --git a/src/upgrades/1.7.3/topic_votes.js b/src/upgrades/1.7.3/topic_votes.js index 76a4d0900c..7e360286a9 100644 --- a/src/upgrades/1.7.3/topic_votes.js +++ b/src/upgrades/1.7.3/topic_votes.js @@ -16,7 +16,7 @@ module.exports = { var topicData; async.waterfall([ function (next) { - db.getObjectFields('topic:' + tid, ['mainPid', 'cid'], next); + db.getObjectFields('topic:' + tid, ['mainPid', 'cid', 'pinned'], next); }, function (_topicData, next) { topicData = _topicData; @@ -44,7 +44,11 @@ module.exports = { db.sortedSetAdd('topics:votes', votes, tid, next); }, function (next) { - db.sortedSetAdd('cid:' + topicData.cid + ':tids:votes', votes, tid, next); + if (parseInt(topicData.pinned, 10) !== 1) { + db.sortedSetAdd('cid:' + topicData.cid + ':tids:votes', votes, tid, next); + } else { + next(); + } }, ], function (err) { next(err); diff --git a/src/upgrades/1.7.4/fix_user_topics_per_category.js b/src/upgrades/1.7.4/fix_user_topics_per_category.js new file mode 100644 index 0000000000..bd963c6ea1 --- /dev/null +++ b/src/upgrades/1.7.4/fix_user_topics_per_category.js @@ -0,0 +1,52 @@ +'use strict'; + +var async = require('async'); +var batch = require('../../batch'); +var db = require('../../database'); + +module.exports = { + name: 'Fix topics in categories per user if they were moved', + timestamp: Date.UTC(2018, 0, 22), + method: function (callback) { + var progress = this.progress; + + batch.processSortedSet('topics:tid', function (tids, next) { + async.eachLimit(tids, 500, function (tid, _next) { + progress.incr(); + var topicData; + async.waterfall([ + function (next) { + db.getObjectFields('topic:' + tid, ['cid', 'tid', 'uid', 'oldCid', 'timestamp'], next); + }, + function (_topicData, next) { + topicData = _topicData; + if (!topicData.cid || !topicData.oldCid) { + return _next(); + } + + db.isSortedSetMember('cid:' + topicData.oldCid + ':uid:' + topicData.uid, topicData.tid, next); + }, + function (isMember, next) { + if (isMember) { + async.series([ + function (next) { + db.sortedSetRemove('cid:' + topicData.oldCid + ':uid:' + topicData.uid + ':tids', tid, next); + }, + function (next) { + db.sortedSetAdd('cid:' + topicData.cid + ':uid:' + topicData.uid + ':tids', topicData.timestamp, tid, next); + }, + ], function (err) { + next(err); + }); + } else { + next(); + } + }, + ], _next); + }, next); + }, { + progress: progress, + batch: 500, + }, callback); + }, +}; diff --git a/src/upgrades/1.8.0/chat_privilege.js b/src/upgrades/1.8.0/chat_privilege.js new file mode 100644 index 0000000000..c4bd2ff8d1 --- /dev/null +++ b/src/upgrades/1.8.0/chat_privilege.js @@ -0,0 +1,12 @@ +'use strict'; + + +var groups = require('../../groups'); + +module.exports = { + name: 'Give chat privilege to registered-users', + timestamp: Date.UTC(2017, 11, 18), + method: function (callback) { + groups.join('cid:0:privileges:groups:chat', 'registered-users', callback); + }, +}; diff --git a/src/upgrades/1.8.0/fix_moved_topics_byvotes.js b/src/upgrades/1.8.0/fix_moved_topics_byvotes.js new file mode 100644 index 0000000000..c5f6121b95 --- /dev/null +++ b/src/upgrades/1.8.0/fix_moved_topics_byvotes.js @@ -0,0 +1,53 @@ +'use strict'; + +var async = require('async'); +var batch = require('../../batch'); +var db = require('../../database'); + +module.exports = { + name: 'Fix sort by votes for moved topics', + timestamp: Date.UTC(2018, 0, 8), + method: function (callback) { + var progress = this.progress; + + batch.processSortedSet('topics:tid', function (tids, next) { + async.eachLimit(tids, 500, function (tid, _next) { + progress.incr(); + var topicData; + async.waterfall([ + function (next) { + db.getObjectFields('topic:' + tid, ['cid', 'oldCid', 'upvotes', 'downvotes', 'pinned'], next); + }, + function (_topicData, next) { + topicData = _topicData; + if (!topicData.cid || !topicData.oldCid) { + return _next(); + } + + var upvotes = parseInt(topicData.upvotes, 10) || 0; + var downvotes = parseInt(topicData.downvotes, 10) || 0; + var votes = upvotes - downvotes; + + async.series([ + function (next) { + db.sortedSetRemove('cid:' + topicData.oldCid + ':tids:votes', tid, next); + }, + function (next) { + if (parseInt(topicData.pinned, 10) !== 1) { + db.sortedSetAdd('cid:' + topicData.cid + ':tids:votes', votes, tid, next); + } else { + next(); + } + }, + ], function (err) { + next(err); + }); + }, + ], _next); + }, next); + }, { + progress: progress, + batch: 500, + }, callback); + }, +}; diff --git a/src/upgrades/1.8.0/global_upload_privilege.js b/src/upgrades/1.8.0/global_upload_privilege.js new file mode 100644 index 0000000000..22473a9ee0 --- /dev/null +++ b/src/upgrades/1.8.0/global_upload_privilege.js @@ -0,0 +1,45 @@ +'use strict'; + + +var async = require('async'); +var groups = require('../../groups'); +var privileges = require('../../privileges'); +var db = require('../../database'); + +module.exports = { + name: 'Give upload privilege to registered-users globally if it is given on a category', + timestamp: Date.UTC(2018, 0, 3), + method: function (callback) { + db.getSortedSetRange('categories:cid', 0, -1, function (err, cids) { + if (err) { + return callback(err); + } + async.eachSeries(cids, function (cid, next) { + getGroupPrivileges(cid, function (err, groupPrivileges) { + if (err) { + return next(err); + } + + var privs = []; + if (groupPrivileges['groups:upload:post:image']) { + privs.push('upload:post:image'); + } + if (groupPrivileges['groups:upload:post:file']) { + privs.push('upload:post:file'); + } + privileges.global.give(privs, 'registered-users', next); + }); + }, callback); + }); + }, +}; + +function getGroupPrivileges(cid, callback) { + var tasks = {}; + + ['groups:upload:post:image', 'groups:upload:post:file'].forEach(function (privilege) { + tasks[privilege] = async.apply(groups.isMember, 'registered-users', 'cid:' + cid + ':privileges:' + privilege); + }); + + async.parallel(tasks, callback); +} diff --git a/src/upgrades/1.8.0/rename_min_reputation_settings.js b/src/upgrades/1.8.0/rename_min_reputation_settings.js new file mode 100644 index 0000000000..1abbce1378 --- /dev/null +++ b/src/upgrades/1.8.0/rename_min_reputation_settings.js @@ -0,0 +1,25 @@ +'use strict'; + +var db = require('../../database'); + +module.exports = { + name: 'Rename privileges:downvote and privileges:flag to min:rep:downvote, min:rep:flag respectively', + timestamp: Date.UTC(2018, 0, 12), + method: function (callback) { + db.getObjectFields('config', ['privileges:downvote', 'privileges:flag'], function (err, config) { + if (err) { + return callback(err); + } + + db.setObject('config', { + 'min:rep:downvote': parseInt(config['privileges:downvote'], 10) || 0, + 'min:rep:flag': parseInt(config['privileges:downvote'], 10) || 0, + }, function (err) { + if (err) { + return callback(err); + } + db.deleteObjectFields('config', ['privileges:downvote', 'privileges:flag'], callback); + }); + }); + }, +}; diff --git a/src/upgrades/1.8.0/vote_privilege.js b/src/upgrades/1.8.0/vote_privilege.js new file mode 100644 index 0000000000..03f79280ef --- /dev/null +++ b/src/upgrades/1.8.0/vote_privilege.js @@ -0,0 +1,22 @@ +'use strict'; + + +var async = require('async'); + +var privileges = require('../../privileges'); +var db = require('../../database'); + +module.exports = { + name: 'Give vote privilege to registered-users on all categories', + timestamp: Date.UTC(2018, 0, 9), + method: function (callback) { + db.getSortedSetRange('categories:cid', 0, -1, function (err, cids) { + if (err) { + return callback(err); + } + async.eachSeries(cids, function (cid, next) { + privileges.categories.give(['posts:upvote', 'posts:downvote'], cid, 'registered-users', next); + }, callback); + }); + }, +}; diff --git a/src/user/digest.js b/src/user/digest.js index dba9c48f16..c08a0afe93 100644 --- a/src/user/digest.js +++ b/src/user/digest.js @@ -90,8 +90,9 @@ Digest.getSubscribers = function (interval, callback) { }; Digest.send = function (data, callback) { + var emailsSent = 0; if (!data || !data.subscribers || !data.subscribers.length) { - return callback(); + return callback(null, emailsSent); } var now = new Date(); @@ -131,7 +132,7 @@ Digest.send = function (data, callback) { return topicObj; }); - + emailsSent += 1; emailer.send('digest', userObj.uid, { subject: '[' + meta.config.title + '] [[email:digest.subject, ' + (now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate()) + ']]', username: userObj.username, @@ -151,6 +152,6 @@ Digest.send = function (data, callback) { }, next); }, ], function (err) { - callback(err, data.subscribers.length); + callback(err, emailsSent); }); }; diff --git a/src/user/profile.js b/src/user/profile.js index ae1e31c475..1af4821f49 100644 --- a/src/user/profile.js +++ b/src/user/profile.js @@ -17,14 +17,6 @@ module.exports = function (User) { var updateUid = data.uid; var oldData; - if (data.aboutme !== undefined && data.aboutme.length > meta.config.maximumAboutMeLength) { - return callback(new Error('[[error:about-me-too-long, ' + meta.config.maximumAboutMeLength + ']]')); - } - - if (data.signature !== undefined && data.signature.length > meta.config.maximumSignatureLength) { - return callback(new Error('[[error:signature-too-long, ' + meta.config.maximumSignatureLength + ']]')); - } - async.waterfall([ function (next) { plugins.fireHook('filter:user.updateProfile', { uid: uid, data: data, fields: fields }, next); @@ -33,13 +25,7 @@ module.exports = function (User) { fields = data.fields; data = data.data; - async.series([ - async.apply(isEmailAvailable, data, updateUid), - async.apply(isUsernameAvailable, data, updateUid), - async.apply(isGroupTitleValid, data), - ], function (err) { - next(err); - }); + validateData(uid, data, next); }, function (next) { User.getUserFields(updateUid, fields, next); @@ -73,6 +59,19 @@ module.exports = function (User) { ], callback); }; + function validateData(callerUid, data, callback) { + async.series([ + async.apply(isEmailAvailable, data, data.uid), + async.apply(isUsernameAvailable, data, data.uid), + async.apply(isGroupTitleValid, data), + async.apply(isWebsiteValid, callerUid, data), + async.apply(isAboutMeValid, callerUid, data), + async.apply(isSignatureValid, callerUid, data), + ], function (err) { + callback(err); + }); + } + function isEmailAvailable(data, uid, callback) { if (!data.email) { return callback(); @@ -141,6 +140,52 @@ module.exports = function (User) { } } + function isWebsiteValid(callerUid, data, callback) { + if (!data.website) { + return setImmediate(callback); + } + checkMinReputation(callerUid, data.uid, 'min:rep:website', callback); + } + + function isAboutMeValid(callerUid, data, callback) { + if (!data.aboutme) { + return setImmediate(callback); + } + if (data.aboutme !== undefined && data.aboutme.length > meta.config.maximumAboutMeLength) { + return callback(new Error('[[error:about-me-too-long, ' + meta.config.maximumAboutMeLength + ']]')); + } + + checkMinReputation(callerUid, data.uid, 'min:rep:aboutme', callback); + } + + function isSignatureValid(callerUid, data, callback) { + if (!data.signature) { + return setImmediate(callback); + } + if (data.signature !== undefined && data.signature.length > meta.config.maximumSignatureLength) { + return callback(new Error('[[error:signature-too-long, ' + meta.config.maximumSignatureLength + ']]')); + } + checkMinReputation(callerUid, data.uid, 'min:rep:signature', callback); + } + + function checkMinReputation(callerUid, uid, setting, callback) { + var isSelf = parseInt(callerUid, 10) === parseInt(uid, 10); + if (!isSelf) { + return setImmediate(callback); + } + async.waterfall([ + function (next) { + User.getUserField(uid, 'reputation', next); + }, + function (reputation, next) { + if (parseInt(reputation, 10) < (parseInt(meta.config[setting], 10) || 0)) { + return next(new Error('[[error:not-enough-reputation-' + setting.replace(/:/g, '-') + ']]')); + } + next(); + }, + ], callback); + } + function updateEmail(uid, newEmail, callback) { async.waterfall([ function (next) { diff --git a/src/user/reset.js b/src/user/reset.js index fd0b5daa53..5b6e183b27 100644 --- a/src/user/reset.js +++ b/src/user/reset.js @@ -119,7 +119,7 @@ UserReset.commit = function (code, password, callback) { user.hashPassword(password, next); }, function (hash, next) { - async.parallel([ + async.series([ async.apply(user.setUserFields, uid, { password: hash, 'email:confirmed': 1 }), async.apply(db.deleteObjectField, 'reset:uid', code), async.apply(db.sortedSetRemove, 'reset:issueDate', code), @@ -128,7 +128,10 @@ UserReset.commit = function (code, password, callback) { async.apply(user.auth.resetLockout, uid), async.apply(db.delete, 'uid:' + uid + ':confirm:email:sent'), async.apply(db.sortedSetRemove, 'users:notvalidated', uid), - ], next); + async.apply(UserReset.cleanByUid, uid), + ], function (err) { + next(err); + }); }, ], callback); }; diff --git a/src/user/search.js b/src/user/search.js index 198b027266..68f6afde62 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -81,6 +81,10 @@ module.exports = function (User) { } function filterAndSortUids(uids, data, callback) { + uids = uids.filter(function (uid) { + return parseInt(uid, 10); + }); + var fields = []; if (data.sortBy) { diff --git a/src/views/admin/general/dashboard.tpl b/src/views/admin/general/dashboard.tpl index 46f7e236dd..3090e2dc8b 100644 --- a/src/views/admin/general/dashboard.tpl +++ b/src/views/admin/general/dashboard.tpl @@ -101,13 +101,15 @@
[[admin/general/dashboard:control-panel]]

-

- - -
+ +

-

+

+ [[admin/general/dashboard:restart-warning]] + + [[admin/general/dashboard:restart-disabled]] +

[[admin/general/dashboard:maintenance-mode]] diff --git a/src/views/admin/manage/admins-mods.tpl b/src/views/admin/manage/admins-mods.tpl new file mode 100644 index 0000000000..76d3982302 --- /dev/null +++ b/src/views/admin/manage/admins-mods.tpl @@ -0,0 +1,64 @@ +

+

[[admin/manage/admins-mods:administrators]]

+
+ +
+ + + +
{admins.members.icon:text}
+ + {admins.members.username} + +
+ +
+ + +
+ +

[[admin/manage/admins-mods:global-moderators]]

+
+ +
+ + + +
{globalMods.members.icon:text}
+ + {globalMods.members.username} + +
+ +
+ +
[[admin/manage/admins-mods:no-global-moderators]]
+ + + +
+ + +
+

[[admin/manage/admins-mods:moderators-of-category, {categories.name}]]

+
+ +
+ + + +
{categories.moderators.icon:text}
+ + {categories.moderators.username} + +
+ +
+ +
[[admin/manage/admins-mods:no-moderators]]
+ + +
+
+ +
diff --git a/src/views/admin/manage/category.tpl b/src/views/admin/manage/category.tpl index 7c39ddee44..cf8ab89312 100644 --- a/src/views/admin/manage/category.tpl +++ b/src/views/admin/manage/category.tpl @@ -2,15 +2,7 @@
- -
+
- +
@@ -174,19 +166,6 @@
- -
-

- [[admin/manage/categories:privileges.description]] -

-

- [[admin/manage/categories:privileges.warning]] -

-
-
- -
-
diff --git a/src/views/admin/manage/privileges.tpl b/src/views/admin/manage/privileges.tpl new file mode 100644 index 0000000000..42d8be735e --- /dev/null +++ b/src/views/admin/manage/privileges.tpl @@ -0,0 +1,31 @@ +
+
+
+
+ +
+
+ +
+ +
+

+ [[admin/manage/categories:privileges.description]] +

+
+
+ + + + + +
+
+
+
diff --git a/src/views/admin/manage/tags.tpl b/src/views/admin/manage/tags.tpl index 8fa01a1200..56c1c5b8c7 100644 --- a/src/views/admin/manage/tags.tpl +++ b/src/views/admin/manage/tags.tpl @@ -41,6 +41,7 @@

[[admin/manage/tags:description]]

+ @@ -74,4 +75,11 @@ + + diff --git a/src/views/admin/manage/users.tpl b/src/views/admin/manage/users.tpl index 3eca4f998d..1490c8b1c4 100644 --- a/src/views/admin/manage/users.tpl +++ b/src/views/admin/manage/users.tpl @@ -8,9 +8,6 @@