diff --git a/.jshintrc b/.jshintrc index bbbcd96dc3..37c22ddcf9 100644 --- a/.jshintrc +++ b/.jshintrc @@ -4,7 +4,7 @@ "maxerr" : 50, // {int} Maximum error before stopping - "esversion": 6, + "esversion": 9, // Enforcing "bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.) diff --git a/.tx/config b/.tx/config index 6d9ba616d4..58394ddcf9 100644 --- a/.tx/config +++ b/.tx/config @@ -1000,6 +1000,56 @@ trans.zh_CN = public/language/zh-CN/tags.json trans.zh_TW = public/language/zh-TW/tags.json type = KEYVALUEJSON +[nodebb.top] +file_filter = public/language//top.json +source_file = public/language/en-GB/top.json +source_lang = en_GB +trans.ar = public/language/ar/top.json +trans.bg = public/language/bg/top.json +trans.bn = public/language/bn/top.json +trans.cs = public/language/cs/top.json +trans.da = public/language/da/top.json +trans.de = public/language/de/top.json +trans.el = public/language/el/top.json +trans.en@pirate = public/language/en-x-pirate/top.json +trans.en_US = public/language/en-US/top.json +trans.es = public/language/es/top.json +trans.et = public/language/et/top.json +trans.fa_IR = public/language/fa-IR/top.json +trans.fi = public/language/fi/top.json +trans.fr = public/language/fr/top.json +trans.gl = public/language/gl/top.json +trans.he = public/language/he/top.json +trans.hr = public/language/hr/top.json +trans.hu = public/language/hu/top.json +trans.id = public/language/id/top.json +trans.it = public/language/it/top.json +trans.ja = public/language/ja/top.json +trans.ko = public/language/ko/top.json +trans.lt = public/language/lt/top.json +trans.lv = public/language/lv/top.json +trans.ms = public/language/ms/top.json +trans.nb = public/language/nb/top.json +trans.nl = public/language/nl/top.json +trans.pl = public/language/pl/top.json +trans.pt_BR = public/language/pt-BR/top.json +trans.pt_PT = public/language/pt-PT/top.json +trans.ro = public/language/ro/top.json +trans.ru = public/language/ru/top.json +trans.rw = public/language/rw/top.json +trans.sc = public/language/sc/top.json +trans.sk = public/language/sk/top.json +trans.sl = public/language/sl/top.json +trans.sr = public/language/sr/top.json +trans.sv = public/language/sv/top.json +trans.th = public/language/th/top.json +trans.tr = public/language/tr/top.json +trans.uk = public/language/uk/top.json +trans.vi = public/language/vi/top.json +trans.zh_CN = public/language/zh-CN/top.json +trans.zh_TW = public/language/zh-TW/top.json +type = KEYVALUEJSON + [nodebb.email] file_filter = public/language//email.json source_file = public/language/en-GB/email.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 593cf81266..a505089cd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,79 @@ +#### v1.18.4 (2021-10-06) + +##### Chores + +* up persona (f4e62fb1) +* incrementing version number - v1.18.3 (57358743) +* update changelog for v1.18.3 (f066ddb8) +* **deps:** + * update dependency lint-staged to v11.2.0 (840b49b9) + * update commitlint monorepo to v13.2.0 (aa370310) + * update dependency mocha to v9.1.2 (6385b88e) + +##### Documentation Changes + +* added link to unofficial IRC channel (c5a48b44) + +##### New Features + +* use unread icon in mobile (27e53b42) +* cli user management commands (#9848) (d1ff3d62) +* #9855, allow uid for post queue notifications (5aea6c6a) +* add userData to static:user.delete (f24b630e) +* closes #9845, sort by views (6399b428) +* duplicate `requireEmailAddress` settings block to Settings > User (a9645475) +* mongodb driver 4.x (#9832) (07adb49e) +* a useless hover effect because raisins (1a61ffc5) + +##### Bug Fixes + +* **deps:** + * update dependency mongodb to v4.1.3 (b4fc2773) + * update dependency postcss to v8.3.9 (9455e5b2) + * update dependency autoprefixer to v10.3.7 (78895d05) + * update dependency nodebb-plugin-composer-default to v7.0.8 (9215c7d1) + * update dependency ioredis to v4.27.10 (4694382c) + * update dependency nodebb-theme-persona to v11.2.9 (346e0890) + * update dependency autoprefixer to v10.3.6 (058fdca4) + * update dependency yargs to v17.2.1 (d50dd801) + * update dependency postcss to v8.3.8 (193c92e3) + * update dependency passport to ^0.5.0 (daea8a86) + * update dependency connect-pg-simple to v7 (#9785) (054f3da6) + * update dependency yargs to v17.2.0 (c78309b5) +* #9866, fire vote hooks after reputation changes (#9867) (8ad9a103) +* #9865, don't display register messages after login (96f5312d) +* dont show decimails on auto approva minutes (a0df3890) +* #9864 (e954ca10) +* delete old topic tags (a70c69fa) +* switch inf. scroll to xhr (#9854) (4404e819) +* #9828, max-width (40915105) +* handle undefined returnTo on registerAbort (ac1b9692) +* lint (ff850b24) +* psql tests (123354ca) +* psql test (f8d4ec6c) +* possible test fix for subfolder redirect (3605ac81) +* missing relative path in test (4eacfef0) +* #9834, missing null email check on new registrations, added tests (58e0a366) +* crossorigin not showing up on manifest link tag (0faa4937) +* #9827, fix reward duplication (89af00d1) + +##### Performance Improvements + +* convert promise.all to single query (#9851) (ea04aede) + +##### Refactors + +* use utils.debounce (a7668a7f) +* remove async.waterfall from remaining upgrade scripts (6b34065f) + +##### Tests + +* dashboard (4f8647a5) +* add tests for admin privileges (9fe9ab08) +* add missing tests (34798325) +* remove debug log (8cb47548) +* no need to create fake interstitial as NodeBB comes with some by default (cb69934a) + #### v1.18.3 (2021-09-22) ##### Chores diff --git a/Dockerfile b/Dockerfile index 28d8586a48..80dce7cfb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,20 @@ FROM node:lts -RUN mkdir -p /usr/src/app +RUN mkdir -p /usr/src/app && \ + chown -R node:node /usr/src/app WORKDIR /usr/src/app ARG NODE_ENV ENV NODE_ENV $NODE_ENV -COPY install/package.json /usr/src/app/package.json +COPY --chown=node:node install/package.json /usr/src/app/package.json + +USER node RUN npm install --only=prod && \ npm cache clean --force - -COPY . /usr/src/app + +COPY --chown=node:node . /usr/src/app ENV NODE_ENV=production \ daemon=false \ diff --git a/install/data/defaults.json b/install/data/defaults.json index dfe0c2b7bc..3b92872280 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -138,6 +138,7 @@ "emailConfirmInterval": 10, "removeEmailNotificationImages": 0, "includeUnverifiedEmails": 0, + "emailPrompt": 1, "inviteExpiration": 7, "dailyDigestFreq": "off", "digestHour": 17, diff --git a/install/databases.js b/install/databases.js index 057de576c6..dbbda8fcff 100644 --- a/install/databases.js +++ b/install/databases.js @@ -3,10 +3,6 @@ const prompt = require('prompt'); const winston = require('winston'); -const util = require('util'); - -const promptGet = util.promisify((schema, callback) => prompt.get(schema, callback)); - const questions = { redis: require('../src/database/redis').questions, mongo: require('../src/database/mongo').questions, @@ -28,17 +24,17 @@ async function getDatabaseConfig(config) { if (config['redis:host'] && config['redis:port']) { return config; } - return await promptGet(questions.redis); + return await prompt.get(questions.redis); } else if (config.database === 'mongo') { if ((config['mongo:host'] && config['mongo:port']) || config['mongo:uri']) { return config; } - return await promptGet(questions.mongo); + return await prompt.get(questions.mongo); } else if (config.database === 'postgres') { if (config['postgres:host'] && config['postgres:port']) { return config; } - return await promptGet(questions.postgres); + return await prompt.get(questions.postgres); } throw new Error(`unknown database : ${config.database}`); } diff --git a/install/package.json b/install/package.json index 17fb479da7..61ef2eece4 100644 --- a/install/package.json +++ b/install/package.json @@ -67,7 +67,7 @@ "jquery-deserialize": "2.0.0", "jquery-form": "4.3.0", "jquery-serializeobject": "1.0.0", - "jquery-ui": "1.12.1", + "jquery-ui": "1.13.0", "jsesc": "3.0.2", "json2csv": "5.0.6", "jsonwebtoken": "^8.5.1", @@ -84,18 +84,18 @@ "multiparty": "4.2.2", "@nodebb/bootswatch": "3.4.2", "nconf": "^0.11.2", - "nodebb-plugin-composer-default": "7.0.8", + "nodebb-plugin-composer-default": "7.0.11", "nodebb-plugin-dbsearch": "5.0.5", "nodebb-plugin-emoji": "^3.5.0", "nodebb-plugin-emoji-android": "2.0.5", - "nodebb-plugin-markdown": "8.14.3", - "nodebb-plugin-mentions": "2.13.11", - "nodebb-plugin-spam-be-gone": "0.7.9", - "nodebb-rewards-essentials": "0.1.5", + "nodebb-plugin-markdown": "8.14.4", + "nodebb-plugin-mentions": "2.14.1", + "nodebb-plugin-spam-be-gone": "0.7.10", + "nodebb-rewards-essentials": "0.2.0", "nodebb-theme-lavender": "5.2.1", - "nodebb-theme-persona": "11.2.10", - "nodebb-theme-slick": "1.4.13", - "nodebb-theme-vanilla": "12.1.3", + "nodebb-theme-persona": "11.2.19", + "nodebb-theme-slick": "1.4.14", + "nodebb-theme-vanilla": "12.1.7", "nodebb-widget-essentials": "5.0.4", "nodemailer": "^6.5.0", "nprogress": "0.2.0", @@ -104,10 +104,10 @@ "passport-local": "1.0.0", "pg": "^8.7.1", "pg-cursor": "^2.7.1", - "postcss": "8.3.9", + "postcss": "8.3.11", "postcss-clean": "1.2.0", "prompt": "^1.1.0", - "ioredis": "4.27.10", + "ioredis": "4.28.0", "request": "2.88.2", "request-promise-native": "^1.0.9", "requirejs": "2.3.6", @@ -116,12 +116,12 @@ "sanitize-html": "^2.3.2", "semver": "^7.3.4", "serve-favicon": "^2.5.0", - "sharp": "0.29.1", + "sharp": "0.29.2", "sitemap": "^7.0.0", "slideout": "1.0.1", - "socket.io": "4.2.0", + "socket.io": "4.3.1", "socket.io-adapter-cluster": "^1.0.1", - "socket.io-client": "4.2.0", + "socket.io-client": "4.3.2", "@socket.io/redis-adapter": "7.0.0", "sortablejs": "1.14.0", "spdx-license-list": "^6.4.0", @@ -142,18 +142,18 @@ }, "devDependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@commitlint/cli": "13.2.0", + "@commitlint/cli": "13.2.1", "@commitlint/config-angular": "13.2.0", "coveralls": "3.1.1", "eslint": "7.32.0", - "eslint-config-nodebb": "0.0.2", - "eslint-plugin-import": "2.24.2", + "eslint-config-nodebb": "0.0.3", + "eslint-plugin-import": "2.25.2", "grunt": "1.4.1", "grunt-contrib-watch": "1.1.0", - "husky": "7.0.2", - "jsdom": "17.0.0", - "lint-staged": "11.2.0", - "mocha": "9.1.2", + "husky": "7.0.4", + "jsdom": "18.0.0", + "lint-staged": "11.2.6", + "mocha": "9.1.3", "mocha-lcov-reporter": "1.3.0", "mockdate": "3.0.5", "nyc": "15.1.0", @@ -182,4 +182,4 @@ "url": "https://github.com/barisusakli" } ] -} \ No newline at end of file +} diff --git a/install/web.js b/install/web.js index 2d9e310890..8d5774326b 100644 --- a/install/web.js +++ b/install/web.js @@ -7,11 +7,7 @@ const fs = require('fs'); const path = require('path'); const childProcess = require('child_process'); const less = require('less'); -const util = require('util'); -const lessRenderAsync = util.promisify( - (style, opts, cb) => less.render(String(style), opts, cb) -); const uglify = require('uglify-es'); const nconf = require('nconf'); @@ -253,7 +249,7 @@ async function compileLess() { try { const installSrc = path.join(__dirname, '../public/less/install.less'); const style = await fs.promises.readFile(installSrc); - const css = await lessRenderAsync(style, { filename: path.resolve(installSrc) }); + const css = await less.render(String(style), { filename: path.resolve(installSrc) }); await fs.promises.writeFile(path.join(__dirname, '../public/installer.css'), css.css); } catch (err) { winston.error(`Unable to compile LESS: \n${err.stack}`); diff --git a/loader.js b/loader.js index d1786eec8a..d9b4b025f2 100644 --- a/loader.js +++ b/loader.js @@ -5,7 +5,6 @@ const fs = require('fs'); const url = require('url'); const path = require('path'); const { fork } = require('child_process'); -const async = require('async'); const logrotate = require('logrotate-stream'); const mkdirp = require('mkdirp'); @@ -36,7 +35,7 @@ const Loader = { }; const appPath = path.join(__dirname, 'app.js'); -Loader.init = function (callback) { +Loader.init = function () { if (silent) { console.log = (...args) => { output.write(`${args.join(' ')}\n`); @@ -45,17 +44,15 @@ Loader.init = function (callback) { process.on('SIGHUP', Loader.restart); process.on('SIGTERM', Loader.stop); - callback(); }; -Loader.displayStartupMessages = function (callback) { +Loader.displayStartupMessages = function () { console.log(''); console.log(`NodeBB v${pkg.version} Copyright (C) 2013-2014 NodeBB Inc.`); console.log('This program comes with ABSOLUTELY NO WARRANTY.'); console.log('This is free software, and you are welcome to redistribute it under certain conditions.'); console.log('For the full license, please visit: http://www.gnu.org/copyleft/gpl.html'); console.log(''); - callback(); }; Loader.addWorkerEvents = function (worker) { @@ -107,17 +104,13 @@ Loader.addWorkerEvents = function (worker) { }); }; -Loader.start = function (callback) { +Loader.start = function () { numProcs = getPorts().length; console.log(`Clustering enabled: Spinning up ${numProcs} process(es).\n`); for (let x = 0; x < numProcs; x += 1) { forkWorker(x, x === 0); } - - if (callback) { - callback(); - } }; function forkWorker(index, isPrimary) { @@ -232,15 +225,12 @@ fs.open(pathToConfig, 'r', (err) => { fs.writeFileSync(pidFilePath, String(process.pid)); } - - async.series([ - Loader.init, - Loader.displayStartupMessages, - Loader.start, - ], (err) => { - if (err) { - console.error('[loader] Error during startup'); - throw err; - } - }); + try { + Loader.init(); + Loader.displayStartupMessages(); + Loader.start(); + } catch (err) { + console.error('[loader] Error during startup'); + throw err; + } }); diff --git a/public/.jshintrc b/public/.jshintrc index 0b65b2f3db..6e93972469 100644 --- a/public/.jshintrc +++ b/public/.jshintrc @@ -1,6 +1,8 @@ { "maxerr" : 50, // {int} Maximum error before stopping + "esversion": 9, + // Enforcing "bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.) "camelcase" : false, // true: Identifiers must be in camelCase @@ -42,7 +44,7 @@ "evil" : false, // true: Tolerate use of `eval` and `new Function()` "expr" : false, // true: Tolerate `ExpressionStatement` as Programs "funcscope" : false, // true: Tolerate defining variables inside control statements" - "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict') + "globalstrict" : true, // true: Allow global "use strict" (also enables 'strict') "iterator" : false, // true: Tolerate using the `__iterator__` property "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block "laxbreak" : false, // true: Tolerate possibly unsafe line breakings @@ -66,7 +68,6 @@ "utils": true, "overrides": true, "componentHandler": true, - "bootbox": true, "templates": true, "Visibility": true, "Tinycon": true, diff --git a/public/language/ar/admin/advanced/events.json b/public/language/ar/admin/advanced/events.json index ba5f150b4e..218d088830 100644 --- a/public/language/ar/admin/advanced/events.json +++ b/public/language/ar/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "لا توجد أحداث", "control-panel": "لوحة تحكم الأحداث", "delete-events": "حذف الاحداث", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "تصفية", "filters-apply": "تطبيق التصفية", "filter-type": "نوع الحدث", diff --git a/public/language/ar/admin/dashboard.json b/public/language/ar/admin/dashboard.json index baef0d2f11..a54c39d931 100644 --- a/public/language/ar/admin/dashboard.json +++ b/public/language/ar/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "المجموع", "active-users.connections": "Connections", - "anonymous-registered-users": "المجهولين مقابل المستخدمين المسجلين", - "anonymous": "مجهول", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "مسجل", "user-presence": "تواجد المستخدمين", @@ -68,6 +68,7 @@ "unread": "غير مقروء", "high-presence-topics": "مواضيع ذات حضور قوي", + "popular-searches": "Popular Searches", "graphs.page-views": "مشاهدات الصفحة", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "زوار فريدين", "graphs.registered-users": "مستخدمين مسجلين", - "graphs.anonymous-users": "مستخدمين مجهولين", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/ar/admin/general/dashboard.json b/public/language/ar/admin/general/dashboard.json deleted file mode 100644 index 3a7c09f01d..0000000000 --- a/public/language/ar/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "مشاهدات الصفحات", - "unique-visitors": "زائرين فريدين", - "new-users": "New Users", - "posts": "مشاركات", - "topics": "مواضيع", - "page-views-seven": "آخر 7 ايام", - "page-views-thirty": "آخر 30 يوماً", - "page-views-last-day": "آخر 24 ساعة", - "page-views-custom": "مدة زمنية مخصصة", - "page-views-custom-start": "بداية المدة", - "page-views-custom-end": "نهاية المده", - "page-views-custom-help": "أدخل نطاقا زمنيا لمرات مشاهدة الصفحات التي ترغب في عرضها. إذا لم يظهر منتقي التاريخ، فإن التنسيق المقبول هو YYYY-MM-DD", - "page-views-custom-error": "الرجاء إدخال نطاق تاريخ صالح بالتنسيق YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "كل الوقت", - - "updates": "تحديثات", - "running-version": "المنتدى يعمل حاليا على NodeBB الإصدار%1.", - "keep-updated": "تأكد دائما من أن NodeBB يعمل على احدث إصدار للحصول على أحدث التصحيحات الأمنية وإصلاحات الأخطاء.", - "up-to-date": "

المنتدى يعمل على أحدث إصدار

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

هذه نسخة ماقبل الإصدار من NodeBB. قد تحدث أخطاء غير مقصودة.

", - "running-in-development": "المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "إشعارات", - "restart-not-required": "إعادة التشغيل غير مطلوب", - "restart-required": "إعادة التشغيل مطلوبة", - "search-plugin-installed": "إضافة البحث منصبة", - "search-plugin-not-installed": "إضافة البحث غير منصبة", - "search-plugin-tooltip": "نصب إضافة البحث من صفحة الإضافات البرمجية لتنشيط وظيفة البحث", - - "control-panel": "التحكم بالنظام", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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-title": "انقر هنا لإعداد وضع الصيانة لـNodeBB", - "realtime-chart-updates": "التحديث الفوري للرسم البياني", - - "active-users": "المستخدمين النشطين", - "active-users.users": "الأعضاء", - "active-users.guests": "الزوار", - "active-users.total": "المجموع", - "active-users.connections": "Connections", - - "anonymous-registered-users": "المجهولين مقابل المستخدمين المسجلين", - "anonymous": "مجهول", - "registered": "مسجل", - - "user-presence": "تواجد المستخدمين", - "on-categories": "في قائمة الأقسام", - "reading-posts": "قراءة المشاركات", - "browsing-topics": "تصفح المواضيع", - "recent": "الأخيرة", - "unread": "غير مقروء", - - "high-presence-topics": "مواضيع ذات حضور قوي", - - "graphs.page-views": "مشاهدات الصفحة", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "زوار فريدين", - "graphs.registered-users": "مستخدمين مسجلين", - "graphs.anonymous-users": "مستخدمين مجهولين", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/ar/admin/general/homepage.json b/public/language/ar/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/ar/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/ar/admin/general/languages.json b/public/language/ar/admin/general/languages.json deleted file mode 100644 index 581e028ade..0000000000 --- a/public/language/ar/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "اعدادات اللغة", - "description": "تُحدد اللغة الافتراضية إعدادات اللغة لجميع المستخدمين الذين يزورون المنتدى.
يمكن للأعضاء تجاوز اللغة الافتراضية من خلال صفحة إعدادات الحساب الخاصة بهم.", - "default-language": "اللغة الافتراضية", - "auto-detect": "الكشف عن إعدادات اللغة للزوار بشكل آلي" -} \ No newline at end of file diff --git a/public/language/ar/admin/general/navigation.json b/public/language/ar/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/ar/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/ar/admin/general/social.json b/public/language/ar/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/ar/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/ar/admin/general/sounds.json b/public/language/ar/admin/general/sounds.json deleted file mode 100644 index 6f49e01f91..0000000000 --- a/public/language/ar/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "التنبيهات", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/ar/admin/manage/digest.json b/public/language/ar/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/ar/admin/manage/digest.json +++ b/public/language/ar/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/ar/admin/manage/users.json b/public/language/ar/admin/manage/users.json index 75fa918253..510cd1f529 100644 --- a/public/language/ar/admin/manage/users.json +++ b/public/language/ar/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/ar/admin/menu.json b/public/language/ar/admin/menu.json index e60767eab3..97d0fa4dfc 100644 --- a/public/language/ar/admin/menu.json +++ b/public/language/ar/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "عام", "section-manage": "إدارة", diff --git a/public/language/ar/admin/settings/email.json b/public/language/ar/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/ar/admin/settings/email.json +++ b/public/language/ar/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/ar/admin/settings/general.json b/public/language/ar/admin/settings/general.json index acf06667ec..4584dc9c3e 100644 --- a/public/language/ar/admin/settings/general.json +++ b/public/language/ar/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "عنوان الموقع", "title.short": "عنوان قصير", "title.short-placeholder": "ان لم تقم بكتابة عنوان مختصر, سيتم استخدام عنوان الموقع الكلي", - "title.url": "الرابط", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "اسم المنتدي", "title.show-in-header": "Show Site Title in Header", "browser-title": "عنوان المتصفح", @@ -20,9 +20,9 @@ "logo.image": "صورة", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "رفع", - "logo.url": "الرابط", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "نص بديل", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "صورة المفضله", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/ar/admin/settings/user.json b/public/language/ar/admin/settings/user.json index bc8a176396..074655c026 100644 --- a/public/language/ar/admin/settings/user.json +++ b/public/language/ar/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/ar/error.json b/public/language/ar/error.json index 9776fd896a..0dc18f5b59 100644 --- a/public/language/ar/error.json +++ b/public/language/ar/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "لا يمكنك الدردشة حتى تقوم بتأكيد بريدك الإلكتروني، الرجاء إضغط هنا لتأكيد بريدك اﻹلكتروني.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.", "confirm-email-already-sent": "لقد تم ارسال بريد التأكيد، الرجاء اﻹنتظار 1% دقائق لإعادة اﻹرسال", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "لايمكن حظر مدبر نظام آخر.", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "رجاءًا ، أضف مدير أخر قبل حذف صلاحيات الإدارة من حسابك.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "رجاءًا أزل صلاحيات الإدارة قبل حذف الحساب. ", diff --git a/public/language/ar/top.json b/public/language/ar/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/ar/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/ar/topic.json b/public/language/ar/topic.json index 5541e97d22..3f75bd070b 100644 --- a/public/language/ar/topic.json +++ b/public/language/ar/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "نبذ التغييرات", "composer.submit": "حفظ", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "الرد على %1", "composer.new_topic": "موضوع جديد", diff --git a/public/language/ar/user.json b/public/language/ar/user.json index fbc4d0172f..299f130052 100644 --- a/public/language/ar/user.json +++ b/public/language/ar/user.json @@ -94,6 +94,7 @@ "digest_off": "غير مفعل", "digest_daily": "يوميا", "digest_weekly": "أسبوعيًّا", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "شهريًّا", "has_no_follower": "هذا المستخدم ليس لديه أية متابعين :(", "follows_no_one": "هذا المستخدم لا يتابع أحد :(", diff --git a/public/language/bg/admin/advanced/events.json b/public/language/bg/admin/advanced/events.json index 3351345964..30175ef9a8 100644 --- a/public/language/bg/admin/advanced/events.json +++ b/public/language/bg/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Няма събития", "control-panel": "Контролен панел за събитията", "delete-events": "Изтриване на събитията", + "confirm-delete-all-events": "Наистина ли искате да изтриете всички събития в журнала?", "filters": "Филтри", "filters-apply": "Прилагане на филтрите", "filter-type": "Вид събитие", diff --git a/public/language/bg/admin/dashboard.json b/public/language/bg/admin/dashboard.json index 860d6c5ff7..7a9cc4416c 100644 --- a/public/language/bg/admin/dashboard.json +++ b/public/language/bg/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Общо", "active-users.connections": "Връзки", - "anonymous-registered-users": "Анонимни към регистрирани потребители", - "anonymous": "Анонимни", + "guest-registered-users": "Гости към регистрирани потребители", + "guest": "Гост", "registered": "Регистрирани", "user-presence": "Присъствие на потребителите ", @@ -68,6 +68,7 @@ "unread": "Непрочетени", "high-presence-topics": "Теми с най-голяма присъственост", + "popular-searches": "Популярни търсения", "graphs.page-views": "Преглеждания на страниците", "graphs.page-views-registered": "Преглеждания на страниците от регистрирани потребители", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Преглеждания на страниците от ботове", "graphs.unique-visitors": "Уникални посетители", "graphs.registered-users": "Регистрирани потребители", - "graphs.anonymous-users": "Анонимни потребители", + "graphs.guest-users": "Гости", "last-restarted-by": "Последно рестартиране от", "no-users-browsing": "Няма разглеждащи потребители", "back-to-dashboard": "Назад към таблото", "details.no-users": "В избрания период не са се регистрирали нови потребители", "details.no-topics": "В избрания период не са публикувани нови теми", + "details.no-searches": "Все още не са правени търсения", "details.no-logins": "В избрания период не са отчетени вписвания", "details.logins-static": "NodeBB запазва данни за сесията в продължение на %1 дни, така че в следната таблица могат да се видят само последните активни сесии", "details.logins-login-time": "Време на вписване" diff --git a/public/language/bg/admin/general/dashboard.json b/public/language/bg/admin/general/dashboard.json deleted file mode 100644 index 2e37da173c..0000000000 --- a/public/language/bg/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Трафик на форума", - "page-views": "Преглеждания на страниците", - "unique-visitors": "Уникални посетители", - "new-users": "Нови потребители", - "posts": "Публикации", - "topics": "Теми", - "page-views-seven": "Последните 7 дни", - "page-views-thirty": "Последните 30 дни", - "page-views-last-day": "Последните 24 часа", - "page-views-custom": "Интервал по избор", - "page-views-custom-start": "Начална дата", - "page-views-custom-end": "Крайна дата", - "page-views-custom-help": "Въведете интервал от дати, за които искате да видите преглежданията на страниците. Ако не се появи календар за избор, можете да въведете датите във формат: ГГГГ-ММ-ДД", - "page-views-custom-error": "Моля, въведете правилен интервал от дати във формата: ГГГГ-ММ-ДД", - - "stats.yesterday": "Вчера", - "stats.today": "Днес", - "stats.last-week": "Миналата седмица", - "stats.this-week": "Тази седмица", - "stats.last-month": "Миналия месец", - "stats.this-month": "Този месец", - "stats.all": "От началото", - - "updates": "Обновления", - "running-version": "Вие използвате NodeBB версия %1.", - "keep-updated": "Стремете се винаги да използвате най-новата версия на NodeBB, за да се възползвате от последните подобрения на сигурността и поправки на проблеми.", - "up-to-date": "

Вие използвате най-новата версия

", - "upgrade-available": "

Има нова версия (версия %1). Ако имате възможност, обновете NodeBB.

", - "prerelease-upgrade-available": "

Това е остаряла предварителна версия на NodeBB. Има нова версия (версия %1). Ако имате възможност, обновете NodeBB.

", - "prerelease-warning": "

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

", - "running-in-development": "Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.", - "latest-lookup-failed": "

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

", - - "notices": "Забележки", - "restart-not-required": "Не се изисква рестартиране", - "restart-required": "Изисква се рестартиране", - "search-plugin-installed": "Добавката за търсене е инсталирана", - "search-plugin-not-installed": "Добавката за търсене не е инсталирана", - "search-plugin-tooltip": "Инсталирайте добавка за търсене от страницата с добавките, за да включите функционалността за търсене", - - "control-panel": "Системен контрол", - "rebuild-and-restart": "Повторно изграждане и рестартиране", - "restart": "Рестартиране", - "restart-warning": "Повторното изграждане и рестартирането на NodeBB ще прекъснат всички връзки за няколко секунди.", - "restart-disabled": "Възможностите за повторно изграждане и рестартиране на NodeBB са изключени, тъй като изглежда, че NodeBB не се изпълнява чрез подходящия демон.", - "maintenance-mode": "Режим на профилактика", - "maintenance-mode-title": "Щракнете тук, за да зададете режим на профилактика на NodeBB", - "realtime-chart-updates": "Актуализации на таблиците в реално време", - - "active-users": "Дейни потребители", - "active-users.users": "Потребители", - "active-users.guests": "Гости", - "active-users.total": "Общо", - "active-users.connections": "Връзки", - - "anonymous-registered-users": "Анонимни към регистрирани потребители", - "anonymous": "Анонимни", - "registered": "Регистрирани", - - "user-presence": "Присъствие на потребителите ", - "on-categories": "В списъка с категории", - "reading-posts": "Четящи публикации", - "browsing-topics": "Разглеждащи теми", - "recent": "Скорошни", - "unread": "Непрочетени", - - "high-presence-topics": "Теми с най-голяма присъственост", - - "graphs.page-views": "Преглеждания на страниците", - "graphs.page-views-registered": "Преглеждания на страниците от регистрирани потребители", - "graphs.page-views-guest": "Преглеждания на страниците от гости", - "graphs.page-views-bot": "Преглеждания на страниците от ботове", - "graphs.unique-visitors": "Уникални посетители", - "graphs.registered-users": "Регистрирани потребители", - "graphs.anonymous-users": "Анонимни потребители", - "last-restarted-by": "Последно рестартиране от", - "no-users-browsing": "Няма разглеждащи потребители" -} diff --git a/public/language/bg/admin/general/homepage.json b/public/language/bg/admin/general/homepage.json deleted file mode 100644 index f0b6df5266..0000000000 --- a/public/language/bg/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Начална страница", - "description": "Изберете коя страница да бъде показана, когато потребителите отидат на главния адрес на форума.", - "home-page-route": "Път на началната страница", - "custom-route": "Персонализиран път", - "allow-user-home-pages": "Разрешаване на потребителските начални страници", - "home-page-title": "Заглавие на началната страница (по подразбиране: „Начало“)" -} \ No newline at end of file diff --git a/public/language/bg/admin/general/languages.json b/public/language/bg/admin/general/languages.json deleted file mode 100644 index b4dbba6c3e..0000000000 --- a/public/language/bg/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Езикови настройки", - "description": "Езикът по подразбиране определя езиковите настройки за всички потребители, които посещават Вашия форум.
Отделните потребители могат да сменят езика си от страницата с настройки на профила си.", - "default-language": "Език по подразбиране", - "auto-detect": "Автоматично разпознаване на езика за гостите" -} \ No newline at end of file diff --git a/public/language/bg/admin/general/navigation.json b/public/language/bg/admin/general/navigation.json deleted file mode 100644 index eee7a0e588..0000000000 --- a/public/language/bg/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Иконка:", - "change-icon": "промяна", - "route": "Маршрут:", - "tooltip": "Подсказка:", - "text": "Текст:", - "text-class": "Текстов клас: незадължително", - "class": "Клас: незадължително", - "id": "Идентификатор: незадължително", - - "properties": "Свойства:", - "groups": "Групи:", - "open-new-window": "Отваряне в нов прозорец", - - "btn.delete": "Изтриване", - "btn.disable": "Изключване", - "btn.enable": "Включване", - - "available-menu-items": "Налични елементи за менюто", - "custom-route": "Персонализиран маршрут", - "core": "ядро", - "plugin": "добавка" -} \ No newline at end of file diff --git a/public/language/bg/admin/general/social.json b/public/language/bg/admin/general/social.json deleted file mode 100644 index e090d929dc..0000000000 --- a/public/language/bg/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Споделяне на публикации", - "info-plugins-additional": "Добавките могат да добавят допълнителни мрежи за споделяне на публикации.", - "save-success": "Мрежите за споделяне на публикации са запазени успешно!" -} \ No newline at end of file diff --git a/public/language/bg/admin/general/sounds.json b/public/language/bg/admin/general/sounds.json deleted file mode 100644 index 563c11e917..0000000000 --- a/public/language/bg/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Известия", - "chat-messages": "Съобщения в разговори", - "play-sound": "Пускане", - "incoming-message": "Входящо съобщение", - "outgoing-message": "Изходящо съобщение", - "upload-new-sound": "Качване на нов звук", - "saved": "Настройките са запазени" -} \ No newline at end of file diff --git a/public/language/bg/admin/manage/digest.json b/public/language/bg/admin/manage/digest.json index 7bc2d424cf..13da1c1476 100644 --- a/public/language/bg/admin/manage/digest.json +++ b/public/language/bg/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Ръчното повторно разпращане на резюмето е завършено", "resent-day": "Дневното резюме беше изпратено повторно", "resent-week": "Седмичното резюме беше изпратено повторно", + "resent-biweek": "Двуседмичното резюме беше изпратено повторно", "resent-month": "Месечното резюме беше изпратено повторно", "null": "Никога", "manual-run": "Ръчно разпращане на резюмето:", diff --git a/public/language/bg/admin/manage/users.json b/public/language/bg/admin/manage/users.json index 50bf807bd1..778f50d203 100644 --- a/public/language/bg/admin/manage/users.json +++ b/public/language/bg/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "потр. ид.", "users.username": "потребителско име", "users.email": "е-поща", + "users.no-email": "(няма е-поща)", "users.ip": "IP адрес", "users.postcount": "брой публикации", "users.reputation": "репутация", diff --git a/public/language/bg/admin/menu.json b/public/language/bg/admin/menu.json index 4127603e4b..6b2b2fc2c7 100644 --- a/public/language/bg/admin/menu.json +++ b/public/language/bg/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Вписвания", "dashboard/users": "Потребители", "dashboard/topics": "Теми", + "dashboard/searches": "Търсения", "section-general": "Общи", "section-manage": "Управление", diff --git a/public/language/bg/admin/settings/email.json b/public/language/bg/admin/settings/email.json index cd5bce9975..74d2d26ce1 100644 --- a/public/language/bg/admin/settings/email.json +++ b/public/language/bg/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Името на изпращача, което да бъде показано в е-писмото.", "smtp-transport": "Транспорт чрез SMTP", - "smtp-transport.enabled": "Използване на външен сървър за е-поща за изпращане на е-писма", + "smtp-transport.enabled": "Включване на транспорта чрез SMTP", "smtp-transport-help": "Можете да изберете от списък от познати услуги, или да въведете такава ръчно.", "smtp-transport.service": "Изберете услуга", "smtp-transport.service-custom": "Персонализирана услуга", @@ -40,5 +40,7 @@ "require-email-address": "Новите потребители задължително трябва да предоставят е-поща", "require-email-address-warning": "По подразбиране потребителите могат да не въвеждат адрес на е-поща. Ако включите това, те задължително ще трябва да предоставят е-поща, за да могат да се регистрират. Това не означава, че потребителят ще въведе съществуваща е-поща, нито че тя ще е негова.", "include-unverified-emails": "Изпращане на е-писма към получатели, които не са потвърдили изрично е-пощата си", - "include-unverified-warning": "За потребителите, които имат свързана е-поща с регистрацията си, тя се смята за потвърдена. Но има ситуации, в които това не е така (например при ползване на регистрация от друга система, но и в други случаи), Включете тази настройка на собствен риск – изпращането на е-писма към непотвърдени адреси може да нарушава определени местни закони против нежеланата поща." -} \ No newline at end of file + "include-unverified-warning": "За потребителите, които имат свързана е-поща с регистрацията си, тя се смята за потвърдена. Но има ситуации, в които това не е така (например при ползване на регистрация от друга система, но и в други случаи), Включете тази настройка на собствен риск – изпращането на е-писма към непотвърдени адреси може да нарушава определени местни закони против нежеланата поща.", + "prompt": "Подсещане на потребителите да въведат или потвърдят е-пощата си", + "prompt-help": "Ако потребител няма зададена е-поща, или ако тя не е потвърдена, на екрана му ще се покаже предупредително съобщение." +} diff --git a/public/language/bg/admin/settings/general.json b/public/language/bg/admin/settings/general.json index 3ff56fb050..f573592a11 100644 --- a/public/language/bg/admin/settings/general.json +++ b/public/language/bg/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Заглавие на уеб сайта", "title.short": "Кратко заглавие", "title.short-placeholder": "Ако не е посочено кратко заглавие, ще бъде използвано заглавието на уеб сайта", - "title.url": "Адрес", - "title.url-placeholder": "Адресът на заглавието на уеб сайта", - "title.url-help": "При щракване върху заглавието, потребителите ще бъдат изпратени на този адрес. Ако бъде оставено празно, потребителите ще бъдат изпращани на началната страница на форума.", + "title.url": "Адрес за заглавието", + "title.url-placeholder": "Адресът за заглавието на уеб сайта", + "title.url-help": "Когато потребител щракне върху заглавието, той ще бъде прехвърлен към този адрес. Ако е празно, потребителят ще бъде изпратен към началната страница на форума.
Забележка: Това не е външният адрес, който се ползва в е-писмата. Той се задава от свойството url във файла config.json", "title.name": "Името на общността Ви", "title.show-in-header": "Показване на заглавието на уеб сайта в заглавната част", "browser-title": "Заглавие на браузъра", @@ -20,9 +20,9 @@ "logo.image": "Изображение", "logo.image-placeholder": "Път до логото, което да бъде показано в заглавната част на форума", "logo.upload": "Качване", - "logo.url": "Адрес", - "logo.url-placeholder": "Адресът на логото на уеб сайта", - "logo.url-help": "При щракване върху логото, потребителите ще бъдат изпратени на този адрес. Ако бъде оставено празно, потребителите ще бъдат изпращани на началната страница на форума.", + "logo.url": "Адрес за логото", + "logo.url-placeholder": "Адресът за логото на уеб сайта", + "logo.url-help": "Когато потребител щракне върху логото, той ще бъде прехвърлен към този адрес. Ако е празно, потребителят ще бъде изпратен към началната страница на форума.
Забележка: Това не е външният адрес, който се ползва в е-писмата. Той се задава от свойството url във файла config.json", "logo.alt-text": "Алтернативен текст", "log.alt-text-placeholder": "Алтернативен текст за достъпност", "favicon": "Иконка на уеб сайта", @@ -47,4 +47,4 @@ "undo-timeout": "Време за отмяна", "undo-timeout-help": "Някои действия, като например преместването на теми, могат да бъдат отменени от модератора в рамките на определено време. Задайте 0, за да забраните изцяло отменянето.", "topic-tools": "Инструменти за темите" -} \ No newline at end of file +} diff --git a/public/language/bg/admin/settings/user.json b/public/language/bg/admin/settings/user.json index aaffcdddb1..e04b10dea6 100644 --- a/public/language/bg/admin/settings/user.json +++ b/public/language/bg/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Изключено", "digest-freq.daily": "Ежедневно", "digest-freq.weekly": "Ежеседмично", + "digest-freq.biweekly": "На всеки две седмици", "digest-freq.monthly": "Ежемесечно", "email-chat-notifs": "Изпращане на е-писмо, ако получа ново съобщение в разговор, а не съм на линия", "email-post-notif": "Изпращане на е-писмо, когато се появи отговор в темите, за които съм абониран(а).", diff --git a/public/language/bg/error.json b/public/language/bg/error.json index f40a8ef492..339a78d653 100644 --- a/public/language/bg/error.json +++ b/public/language/bg/error.json @@ -34,8 +34,9 @@ "email-invited": "На тази е-поща вече е била изпратена покана", "email-not-confirmed": "Публикуването в някои категории и теми ще бъде възможно едва след като е-пощата Ви бъде потвърдена. Щръкнете тук, за да Ви изпратим е-писмо за потвърждение.", "email-not-confirmed-chat": "Няма да можете да пишете в разговори, докато е-пощата Ви не бъде потвърдена. Моля, натиснете тук, за да потвърдите е-пощата си.", - "email-not-confirmed-email-sent": "Вашата е-поща все още не е потвърдена. Моля, проверете входящата си кутия за писмото за потвърждение. Няма да можете да публикувате съобщения или да пишете в разговори, докато е-пощата Ви не бъде потвърдена.", - "no-email-to-confirm": "Нямате зададена е-поща. Тя е необходима за възстановяването на акаунта в случай на проблем. Натиснете тук, за да въведете е-поща.", + "email-not-confirmed-email-sent": "Вашата е-поща все още не е потвърдена. Моля, проверете входящата си кутия за писмото за потвърждение. Възможно е да не можете да публикувате съобщения или да пишете в разговори, докато е-пощата Ви не бъде потвърдена.", + "no-email-to-confirm": "Нямате зададена е-поща. Тя е необходима за възстановяването на акаунта в случай на проблем, а може и да се изисква, за да пишете в някои категории. Натиснете тук, за да въведете е-поща.", + "user-doesnt-have-email": "Потребителят „%1“ няма зададена е-поща.", "email-confirm-failed": "Не успяхме да потвърдим е-пощата Ви. Моля, опитайте отново по-късно.", "confirm-email-already-sent": "Е-писмото за потвърждение вече е изпратено. Моля, почакайте още %1 минута/и, преди да изпратите ново.", "sendmail-not-found": "Изпълнимият файл на „sendmail“ не може да бъде намерен. Моля, уверете се, че е инсталиран и изпълним за потребителя, чрез който е пуснат NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Вече имате отметка към тази публикация", "already-unbookmarked": "Вече сте премахнали отметката си от тази публикация", "cant-ban-other-admins": "Не можете да блокирате другите администратори!", + "cant-make-banned-users-admin": "Не можете да давате администраторски права на блокирани потребители.", "cant-remove-last-admin": "Вие сте единственият администратор. Добавете друг потребител като администратор, преди да премахнете себе си като администратор", "account-deletion-disabled": "Изтриването на акаунт е забранено", "cant-delete-admin": "Премахнете администраторските права от този акаунт, преди да го изтриете.", diff --git a/public/language/bg/top.json b/public/language/bg/top.json new file mode 100644 index 0000000000..54b8374e26 --- /dev/null +++ b/public/language/bg/top.json @@ -0,0 +1,4 @@ +{ + "title": "Най-популярни", + "no_top_topics": "Няма най-популярни теми" +} \ No newline at end of file diff --git a/public/language/bg/topic.json b/public/language/bg/topic.json index b1a10de9b7..97fb850605 100644 --- a/public/language/bg/topic.json +++ b/public/language/bg/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Въведете името тук", "composer.discard": "Отхвърляне", "composer.submit": "Публикуване", + "composer.additional-options": "Допълнителни настройки", "composer.schedule": "Насрочване", "composer.replying_to": "Отговор на %1", "composer.new_topic": "Нова тема", diff --git a/public/language/bg/user.json b/public/language/bg/user.json index 02ebca2bcf..6026f976a2 100644 --- a/public/language/bg/user.json +++ b/public/language/bg/user.json @@ -94,6 +94,7 @@ "digest_off": "Изключено", "digest_daily": "Ежедневно", "digest_weekly": "Ежеседмично", + "digest_biweekly": "На всеки две седмици", "digest_monthly": "Ежемесечно", "has_no_follower": "Този потребител няма последователи :(", "follows_no_one": "Този потребител не следва никого :(", diff --git a/public/language/bn/admin/advanced/events.json b/public/language/bn/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/bn/admin/advanced/events.json +++ b/public/language/bn/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/bn/admin/dashboard.json b/public/language/bn/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/bn/admin/dashboard.json +++ b/public/language/bn/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/bn/admin/general/dashboard.json b/public/language/bn/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/bn/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/bn/admin/general/homepage.json b/public/language/bn/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/bn/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/bn/admin/general/languages.json b/public/language/bn/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/bn/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/bn/admin/general/navigation.json b/public/language/bn/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/bn/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/bn/admin/general/social.json b/public/language/bn/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/bn/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/bn/admin/general/sounds.json b/public/language/bn/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/bn/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/bn/admin/manage/digest.json b/public/language/bn/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/bn/admin/manage/digest.json +++ b/public/language/bn/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/bn/admin/manage/users.json b/public/language/bn/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/bn/admin/manage/users.json +++ b/public/language/bn/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/bn/admin/menu.json b/public/language/bn/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/bn/admin/menu.json +++ b/public/language/bn/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/bn/admin/settings/email.json b/public/language/bn/admin/settings/email.json index 345fe30831..7970d5ec70 100644 --- a/public/language/bn/admin/settings/email.json +++ b/public/language/bn/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/bn/admin/settings/general.json b/public/language/bn/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/bn/admin/settings/general.json +++ b/public/language/bn/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/bn/admin/settings/user.json b/public/language/bn/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/bn/admin/settings/user.json +++ b/public/language/bn/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/bn/error.json b/public/language/bn/error.json index f7fcdc6f29..8bc3ee96e4 100644 --- a/public/language/bn/error.json +++ b/public/language/bn/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "আপনি অন্য এ্যাডমিনদের নিষিদ্ধ করতে পারেন না!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/bn/top.json b/public/language/bn/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/bn/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/bn/topic.json b/public/language/bn/topic.json index f7482e41b5..0c06dce39a 100644 --- a/public/language/bn/topic.json +++ b/public/language/bn/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "বাতিল", "composer.submit": "সাবমিট", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "%1 এর উত্তরে:", "composer.new_topic": "নতুন টপিক", diff --git a/public/language/bn/user.json b/public/language/bn/user.json index b224369d3f..d75cb6b85a 100644 --- a/public/language/bn/user.json +++ b/public/language/bn/user.json @@ -94,6 +94,7 @@ "digest_off": "বন্ধ", "digest_daily": "দৈনিক", "digest_weekly": "সাপ্তাহিক", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "মাসিক", "has_no_follower": "এই সদস্যের কোন ফলোয়ার নেই :(", "follows_no_one": "এই সদস্য কাউকে ফলো করছেন না :(", diff --git a/public/language/cs/admin/advanced/events.json b/public/language/cs/admin/advanced/events.json index 49925c5035..327b32d858 100644 --- a/public/language/cs/admin/advanced/events.json +++ b/public/language/cs/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Žádné nové události", "control-panel": "Ovládací panel událostí", "delete-events": "Odstranit události", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filtry", "filters-apply": "Použít filtry", "filter-type": "Typ události", diff --git a/public/language/cs/admin/dashboard.json b/public/language/cs/admin/dashboard.json index d0197077c9..2ca82e2cce 100644 --- a/public/language/cs/admin/dashboard.json +++ b/public/language/cs/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Celkově", "active-users.connections": "Připojení", - "anonymous-registered-users": "Anonymní × registrovaní uživatelé", - "anonymous": "Anonymní", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registrovaní", "user-presence": "Výskyt uživatele", @@ -68,6 +68,7 @@ "unread": "Nepřečtené", "high-presence-topics": "Témata s vysokou účastí", + "popular-searches": "Popular Searches", "graphs.page-views": "Zobrazení stránky", "graphs.page-views-registered": "Zobrazených stránek/registrovaní", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Zobrazených stránek/bot", "graphs.unique-visitors": "Jedineční návštěvníci", "graphs.registered-users": "Registrovaní uživatelé", - "graphs.anonymous-users": "Anonymní uživatelé", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Poslední restart od", "no-users-browsing": "Nikdo si nic neprohlíží", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/cs/admin/general/dashboard.json b/public/language/cs/admin/general/dashboard.json deleted file mode 100644 index d7ca6fdd7c..0000000000 --- a/public/language/cs/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Provoz fóra", - "page-views": "Zobrazení stránky", - "unique-visitors": "Jedineční návštěvníci", - "new-users": "Nový uživatelé", - "posts": "Příspěvky", - "topics": "Témata", - "page-views-seven": "Posledních 7 dnů", - "page-views-thirty": "Posledních 30 dní", - "page-views-last-day": "Posledních 24 hodin", - "page-views-custom": "Dle rozsahu data", - "page-views-custom-start": "Začátek rozsahu", - "page-views-custom-end": "Konec rozsahu", - "page-views-custom-help": "Zadejte rozsah data zobrazení stránek, které chcete vidět. Není-li datum nastaveno, výchozí formát je YYYY-MM-DD", - "page-views-custom-error": "Zadejte správný rozsah ve formátu YYYY-MM-DD", - - "stats.yesterday": "Včera", - "stats.today": "Dnes", - "stats.last-week": "Poslední týden", - "stats.this-week": "Tento víkend", - "stats.last-month": "Poslední měsíc", - "stats.this-month": "Tento měsíc", - "stats.all": "Všechny časy", - - "updates": "Aktualizace", - "running-version": "Fungujete na NodeBB v%1.", - "keep-updated": "Vždy udržujte NodeBB aktuální kvůli bezpečnostním záplatám a opravám.", - "up-to-date": "

Máte aktuální verzi

", - "upgrade-available": "

Nová verze (v%1) byla zveřejněna. Zvažte aktualizaci vašeho NodeBB.

", - "prerelease-upgrade-available": "

Toto je zastaralá testovací verze NodeBB. Nová verze (v%1) byla zveřejněna. Zvažte aktualizaci vaší verze NodeBB.

", - "prerelease-warning": "

Toto je zkušební verze NodeBB. Mohou se vyskytnout různé chyby.

", - "running-in-development": "Fórum běží ve vývojářském režimu a může být potencionálně zranitelné . Kontaktujte správce systému.", - "latest-lookup-failed": "

Náhled na poslední dostupnou verzi NodeBB

", - - "notices": "Oznámení", - "restart-not-required": "Restart není potřeba", - "restart-required": "Je potřeba restartovat", - "search-plugin-installed": "Rozšíření pro hledání je nainstalováno", - "search-plugin-not-installed": "Rozšíření pro hledání není nainstalováno", - "search-plugin-tooltip": "Pro aktivování funkce vyhledávání, nainstalujte rozšíření pro hledání ze stránky rozšíření.", - - "control-panel": "Ovládání systému", - "rebuild-and-restart": "Znovu sestavit a restartovat", - "restart": "Restartovat", - "restart-warning": "Znovu sestavení nebo restartování NodeBB odpojí všechna existující připojení na několik vteřin.", - "restart-disabled": "Znovu sestavení a restartování vašeho NodeBB bylo zakázáno, protože se nezdá, že byste byl/a připojena přes příslušného „daemona”.", - "maintenance-mode": "Režim údržby", - "maintenance-mode-title": "Pro nastavení režimu údržby NodeBB, klikněte zde", - "realtime-chart-updates": "Aktualizace grafů v reálném čase", - - "active-users": "Aktivní uživatelé", - "active-users.users": "Uživatelé", - "active-users.guests": "Hosté", - "active-users.total": "Celkově", - "active-users.connections": "Připojení", - - "anonymous-registered-users": "Anonymní × registrovaní uživatelé", - "anonymous": "Anonymní", - "registered": "Registrovaní", - - "user-presence": "Výskyt uživatele", - "on-categories": "V seznamu kategorii", - "reading-posts": "Čtení příspěvku", - "browsing-topics": "Prohlížení témat", - "recent": "Poslední", - "unread": "Nepřečtené", - - "high-presence-topics": "Témata s vysokou účastí", - - "graphs.page-views": "Zobrazení stránky", - "graphs.page-views-registered": "Zobrazených stránek/registrovaní", - "graphs.page-views-guest": "Zobrazených stránek/hosté", - "graphs.page-views-bot": "Zobrazených stránek/bot", - "graphs.unique-visitors": "Jedineční návštěvníci", - "graphs.registered-users": "Registrovaní uživatelé", - "graphs.anonymous-users": "Anonymní uživatelé", - "last-restarted-by": "Poslední restart od", - "no-users-browsing": "Nikdo si nic neprohlíží" -} diff --git a/public/language/cs/admin/general/homepage.json b/public/language/cs/admin/general/homepage.json deleted file mode 100644 index 3db45d23c3..0000000000 --- a/public/language/cs/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Domovská stránka", - "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", - "home-page-title": "Titulka domovské stránky (výchozí „Domů”)" -} \ No newline at end of file diff --git a/public/language/cs/admin/general/languages.json b/public/language/cs/admin/general/languages.json deleted file mode 100644 index 37124c7d04..0000000000 --- a/public/language/cs/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Nastavení jazyka", - "description": "Výchozí jazyk určuje nastavení jazyka pro všechny uživatele navštěvující vaše fórum.
Každý uživatel si může pak nastavit výchozí jazyk na stránce nastavení účtu.", - "default-language": "Výchozí jazyk", - "auto-detect": "Automaticky detekovat nastavení jazyka pro hosty" -} \ No newline at end of file diff --git a/public/language/cs/admin/general/navigation.json b/public/language/cs/admin/general/navigation.json deleted file mode 100644 index a434257b94..0000000000 --- a/public/language/cs/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ikona:", - "change-icon": "změnit", - "route": "Cesta:", - "tooltip": "Tip:", - "text": "Text:", - "text-class": "Textová třída: doporučené", - "class": "Třída: doporučené", - "id": "ID: doporučené", - - "properties": "Vlastnosti:", - "groups": "Skupiny:", - "open-new-window": "Otevřít v novém okně", - - "btn.delete": "Odstranit", - "btn.disable": "Zakázat", - "btn.enable": "Povolit", - - "available-menu-items": "Dostupné položky nabídky", - "custom-route": "Upravit cestu", - "core": "jádro", - "plugin": "rozšíření" -} \ No newline at end of file diff --git a/public/language/cs/admin/general/social.json b/public/language/cs/admin/general/social.json deleted file mode 100644 index 5645b29e42..0000000000 --- a/public/language/cs/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Sdílení příspěvku", - "info-plugins-additional": "Rozšíření mohou přidat další dodatečné sítě pro sdílení příspěvků.", - "save-success": "Úspěšně uložené sítě sdílející příspěvky." -} \ No newline at end of file diff --git a/public/language/cs/admin/general/sounds.json b/public/language/cs/admin/general/sounds.json deleted file mode 100644 index d9b2796971..0000000000 --- a/public/language/cs/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Upozornění", - "chat-messages": "Zprávy konverzace", - "play-sound": "Přehrát", - "incoming-message": "Příchozí zpráva", - "outgoing-message": "Odchozí zpráva", - "upload-new-sound": "Nahrát nový zvuk", - "saved": "Nastavení bylo uloženo" -} \ No newline at end of file diff --git a/public/language/cs/admin/manage/digest.json b/public/language/cs/admin/manage/digest.json index f627b0d2b0..96c7c0849b 100644 --- a/public/language/cs/admin/manage/digest.json +++ b/public/language/cs/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manuální znovu poslání přehledu bylo dokončeno", "resent-day": "Znovu odeslat denní přehled", "resent-week": "Znovu odeslat týdenní přehled", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Znovu odeslat měsíční přehled", "null": "Nikdy", "manual-run": "Spustit manuálně přehled:", diff --git a/public/language/cs/admin/manage/users.json b/public/language/cs/admin/manage/users.json index 4337c097f3..1389977e70 100644 --- a/public/language/cs/admin/manage/users.json +++ b/public/language/cs/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "jméno", "users.email": "e-mail", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "počet příspěvků", "users.reputation": "reputace", diff --git a/public/language/cs/admin/menu.json b/public/language/cs/admin/menu.json index 9eee43ba3d..603d9616fe 100644 --- a/public/language/cs/admin/menu.json +++ b/public/language/cs/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Všeobecné", "section-manage": "Spravovat", diff --git a/public/language/cs/admin/settings/email.json b/public/language/cs/admin/settings/email.json index dc617051aa..daf0596406 100644 --- a/public/language/cs/admin/settings/email.json +++ b/public/language/cs/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Zobrazené jméno v e-mailu v – Od", "smtp-transport": "Přenos SMTP", - "smtp-transport.enabled": "Pro odesílání e-mailů použít externí e-mailový server ", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Ze seznamu můžete vybrat známé služby nebo zadat vlastní.", "smtp-transport.service": "Vyberte službu", "smtp-transport.service-custom": "Uživatelský služba", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/cs/admin/settings/general.json b/public/language/cs/admin/settings/general.json index fdbcb48c1b..6ae5d5f244 100644 --- a/public/language/cs/admin/settings/general.json +++ b/public/language/cs/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Název stránky", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "URL názvu stránky", - "title.url-help": "Bude-li kliknuto na název, uživatel bude přesměrován na tuto adresu. Zůstane-li prázdné, uživatel bude odeslán na index fóra", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Název vaší komunity", "title.show-in-header": "Zobrazit název stránky v hlavičce", "browser-title": "Název prohlížeče", @@ -20,9 +20,9 @@ "logo.image": "Obrázek", "logo.image-placeholder": "Cesta k logu, aby mohlo být zobrazeno v hlavičce fóra", "logo.upload": "Nahrát", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "URL loga stránky", - "logo.url-help": "Bude-li kliknuto na logo, uživatel bude přesměrován na tuto adresu. Zůstane-li prázdné, uživatel bude přesměrován na index fóra.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Popisující text (alt)", "log.alt-text-placeholder": "Alternativní text pro přístupnost", "favicon": "Ikonka (favicon)", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ 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 f63ff2a5aa..b4725da73d 100644 --- a/public/language/cs/admin/settings/user.json +++ b/public/language/cs/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Vypnuto", "digest-freq.daily": "Denně", "digest-freq.weekly": "Týdně", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Měsíčně", "email-chat-notifs": "Nejsem-li online zaslat e-mail, dorazí-li nová zpráva z chatu", "email-post-notif": "Zaslat e-mail, objeví-li se odpovědi v tématu, který sleduji", diff --git a/public/language/cs/error.json b/public/language/cs/error.json index 619fb91adf..4f156be9bc 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Nebude schopen konverzovat, dokud nebude váš e-mail potvrzen. Pro jeho potvrzení klikněte zde.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Nemohli jsme ověřit vaši e-mailovou adresu, zkuste to později.", "confirm-email-already-sent": "Potvrzovací e-mail byl již odeslán. Vyčkejte %1 minut/y, chcete-li odeslat další.", "sendmail-not-found": "Modul pro odeslání e-mailů nebyl nalezen. Zkontrolujte prosím, zda je nainstalován a spuštěn uživatelem, který spustil NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Již jste tento příspěvek zazáložkoval", "already-unbookmarked": "Již jste u tohoto příspěvku odebral záložku", "cant-ban-other-admins": "Nemůžete zablokovat jiné správce.", + "cant-make-banned-users-admin": "You can't make banned users admin.", "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", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Před odstraněním účtu mu nejprve odeberte oprávnění správce.", diff --git a/public/language/cs/top.json b/public/language/cs/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/cs/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json index 96cf0fbffe..103b825415 100644 --- a/public/language/cs/topic.json +++ b/public/language/cs/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Zrušit", "composer.submit": "Odeslat", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Odpovídání na %1", "composer.new_topic": "Nové téma", diff --git a/public/language/cs/user.json b/public/language/cs/user.json index 941540cce8..8d4d58e821 100644 --- a/public/language/cs/user.json +++ b/public/language/cs/user.json @@ -94,6 +94,7 @@ "digest_off": "Vypnuto", "digest_daily": "Denně", "digest_weekly": "Týdně", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Měsíčně", "has_no_follower": "Tohoto uživatele nikdo nesleduje :(", "follows_no_one": "Tento uživatel nikoho nesleduje :(", diff --git a/public/language/da/admin/advanced/events.json b/public/language/da/admin/advanced/events.json index fe72f82b6a..dcdb6608c1 100644 --- a/public/language/da/admin/advanced/events.json +++ b/public/language/da/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Kontrol Panel for Begivenheder", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/da/admin/dashboard.json b/public/language/da/admin/dashboard.json index dbe77149a1..1d7c3df85d 100644 --- a/public/language/da/admin/dashboard.json +++ b/public/language/da/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/da/admin/general/dashboard.json b/public/language/da/admin/general/dashboard.json deleted file mode 100644 index caf09a9f23..0000000000 --- a/public/language/da/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffik", - "page-views": "Side Visninger", - "unique-visitors": "Unikke Besøgere", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Opdateringer", - "running-version": "Du kører NodeBB v%1.", - "keep-updated": "Altid sikrer dig at din NodeBB er opdateret for de seneste sikkerheds og bug rettelser.", - "up-to-date": "

Du er opdateret

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

Dette er en pre-release udgave af NodeBB. Uforventede bugs kan forekomme.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Varsler", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Kontrol", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/da/admin/general/homepage.json b/public/language/da/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/da/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/da/admin/general/languages.json b/public/language/da/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/da/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/da/admin/general/navigation.json b/public/language/da/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/da/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/da/admin/general/social.json b/public/language/da/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/da/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/da/admin/general/sounds.json b/public/language/da/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/da/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/da/admin/manage/digest.json b/public/language/da/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/da/admin/manage/digest.json +++ b/public/language/da/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/da/admin/manage/users.json b/public/language/da/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/da/admin/manage/users.json +++ b/public/language/da/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/da/admin/menu.json b/public/language/da/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/da/admin/menu.json +++ b/public/language/da/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/da/admin/settings/email.json b/public/language/da/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/da/admin/settings/email.json +++ b/public/language/da/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/da/admin/settings/general.json b/public/language/da/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/da/admin/settings/general.json +++ b/public/language/da/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/da/admin/settings/user.json b/public/language/da/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/da/admin/settings/user.json +++ b/public/language/da/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/da/error.json b/public/language/da/error.json index 58d887b026..6ee0328692 100644 --- a/public/language/da/error.json +++ b/public/language/da/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Du kan ikke chatte før din email er bekræftet, klik her for at bekræfte din email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Vi kunne ikke bekræfte din email, prøv igen senere.", "confirm-email-already-sent": "Bekræftelses email er allerede afsendt, vent venligt %1 minut(ter) for at sende endnu en.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Du kan ikke udlukke andre administatrorer!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Du er den eneste administrator. Tilføj en anden bruger som administrator før du fjerner dig selv som administrator", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/da/top.json b/public/language/da/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/da/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/da/topic.json b/public/language/da/topic.json index 5d6d8ac404..4885532fd0 100644 --- a/public/language/da/topic.json +++ b/public/language/da/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Fortryd", "composer.submit": "Send", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Svare til %1", "composer.new_topic": "Ny tråd", diff --git a/public/language/da/user.json b/public/language/da/user.json index 68aedf8a04..c3e6b0d94d 100644 --- a/public/language/da/user.json +++ b/public/language/da/user.json @@ -94,6 +94,7 @@ "digest_off": "Slukket", "digest_daily": "Daglig", "digest_weekly": "Ugentlig", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Månedlig", "has_no_follower": "Denne bruger har ingen følgere :(", "follows_no_one": "Denne bruger følger ikke nogen :(", diff --git a/public/language/de/admin/advanced/events.json b/public/language/de/admin/advanced/events.json index 2a7607040e..8b2cc6bf9a 100644 --- a/public/language/de/admin/advanced/events.json +++ b/public/language/de/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Es gibt keine Ereignisse", "control-panel": "Ereignis-Steuerung", "delete-events": "Ereignisse löschen", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filter", "filters-apply": "Filter anwenden", "filter-type": "Ereignistyp", diff --git a/public/language/de/admin/dashboard.json b/public/language/de/admin/dashboard.json index 943b0fcfa5..5b4bcf4bf5 100644 --- a/public/language/de/admin/dashboard.json +++ b/public/language/de/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Gesamt", "active-users.connections": "Verbindungen", - "anonymous-registered-users": "Anonyme vs Registrierte Benutzer", - "anonymous": "Anonym", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registriert", "user-presence": "Benutzerpräsenz", @@ -68,6 +68,7 @@ "unread": "Ungelesen", "high-presence-topics": "Meist besuchte Themen", + "popular-searches": "Popular Searches", "graphs.page-views": "Seitenaufrufe", "graphs.page-views-registered": "Registrierte Seitenaufrufe", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Seitenaufrufe von Bots", "graphs.unique-visitors": "Verschiedene Besucher", "graphs.registered-users": "Registrierte Benutzer", - "graphs.anonymous-users": "Anonyme Benutzer", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Zuletzt Neugestartet von: ", "no-users-browsing": "Keine aktiven Benutzer", "back-to-dashboard": "Zurück zur Übersicht", "details.no-users": "Keine Benutzer sind im gewählten Zeitraum beigetreten", "details.no-topics": "Keine Themen wurden im gewählten Zeitraum beigetreten", + "details.no-searches": "No searches have been made yet", "details.no-logins": "Keine Logins wurden im gewählten Zeitraum festgestellt", "details.logins-static": "NodeBB speichert Sitzungsdaten nur für %1 Tage, deshalb zeigt die untere Tabelle nur die neuesten, aktiven Sitzungen", "details.logins-login-time": "Anmelde Zeit" diff --git a/public/language/de/admin/general/dashboard.json b/public/language/de/admin/general/dashboard.json deleted file mode 100644 index a2a2156661..0000000000 --- a/public/language/de/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Seitenaufrufe", - "unique-visitors": "Individuelle Besucher", - "new-users": "New Users", - "posts": "Beiträge", - "topics": "Themen", - "page-views-seven": "Letzte 7 Tage", - "page-views-thirty": "Letzte 30 Tage", - "page-views-last-day": "Letzte 24 Stunden", - "page-views-custom": "Benutzerdefinierte Tagesspanne", - "page-views-custom-start": "Spannen-Anfang", - "page-views-custom-end": "Spannen-Ende", - "page-views-custom-help": "Gib eine Zeitspanne an, in dem du die Besichtigungszahlen ansehen willst. Sollte keine Kalenderauswahl verfügbar sein ist das akzeptierte format YYYY-MM-DD", - "page-views-custom-error": "Bitte gib eine gültige Zeitspanne im Format YYYY-MM-DD an", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Alle", - - "updates": "Updates", - "running-version": "Es läuft NodeBB v%1.", - "keep-updated": "Stelle sicher, dass dein NodeBB immer auf dem neuesten Stand für die neuesten Sicherheits-Patches und Bug-fixes ist.", - "up-to-date": "

NodeBB Version ist aktuell

", - "upgrade-available": "

Eine neuere Version (v%1) ist erschienen. Erwäge NodeBB zu upgraden.

", - "prerelease-upgrade-available": "

Das ist eine veraltete NodeBB-Vorabversion. Eine neuere Version (v%1) ist erschienen. Erwäge NodeBB zu upgraden.

", - "prerelease-warning": "

Das ist eine pre-release Version von NodeBB. Es können ungewollte Fehler auftreten.

", - "running-in-development": "Das Forum wurde im Entwicklermodus gestartet. Das Forum könnte potenziellen Gefahren ausgeliefert sein. Bitte kontaktiere den Systemadministrator.", - "latest-lookup-failed": "

Beim nachschlagen der neuesten verfügbaren NodeBB Version ist ein Fehler aufgetreten

", - - "notices": "Hinweise", - "restart-not-required": "Kein Neustart benötigt", - "restart-required": "Neustart benötigt", - "search-plugin-installed": "Such-Plugin installiert", - "search-plugin-not-installed": "Kein Such-Plugin installiert", - "search-plugin-tooltip": "Installiere ein Such-Plugin auf der Plugin-Seite um die Such-Funktionalität zu aktivieren", - - "control-panel": "Systemsteuerung", - "rebuild-and-restart": "Regenerieren & Neustarten", - "restart": "Neustarten", - "restart-warning": "NodeBB zu regenerieren oder neuzustarten wird alle existierenden Verbindungen für ein paar Sekunden trennen.", - "restart-disabled": "Das Regenerieren und Neustarten von NodeBB wurde deaktiviert, da es nicht so aussieht als ob es über einem kompatiblem daemon läuft.", - "maintenance-mode": "Wartungsmodus", - "maintenance-mode-title": "Hier klicken um NodeBB in den Wartungsmodus zu versetzen", - "realtime-chart-updates": "Echtzeit Chartaktualisierung", - - "active-users": "Aktive Benutzer", - "active-users.users": "Benutzer", - "active-users.guests": "Gäste", - "active-users.total": "Gesamt", - "active-users.connections": "Verbindungen", - - "anonymous-registered-users": "Anonyme vs Registrierte Benutzer", - "anonymous": "Anonym", - "registered": "Registriert", - - "user-presence": "Benutzerpräsenz", - "on-categories": "Auf Kategorieübersicht", - "reading-posts": "Beiträge lesend", - "browsing-topics": "Themen durchsuchend", - "recent": "Aktuell", - "unread": "Ungelesen", - - "high-presence-topics": "Meist besuchte Themen", - - "graphs.page-views": "Seitenaufrufe", - "graphs.page-views-registered": "Registrierte Seitenaufrufe", - "graphs.page-views-guest": "Seitenaufrufe von Gästen", - "graphs.page-views-bot": "Seitenaufrufe von Bots", - "graphs.unique-visitors": "Verschiedene Besucher", - "graphs.registered-users": "Registrierte Benutzer", - "graphs.anonymous-users": "Anonyme Benutzer", - "last-restarted-by": "Zuletzt Neugestartet von: ", - "no-users-browsing": "Keine aktiven Benutzer" -} diff --git a/public/language/de/admin/general/homepage.json b/public/language/de/admin/general/homepage.json deleted file mode 100644 index 186e89ae62..0000000000 --- a/public/language/de/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Startseite", - "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", - "home-page-title": "Titel der Startseite (Standardmäßig \"Home\")" -} \ No newline at end of file diff --git a/public/language/de/admin/general/languages.json b/public/language/de/admin/general/languages.json deleted file mode 100644 index c2358ac047..0000000000 --- a/public/language/de/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Spracheinstellungen", - "description": "Die Standardsprache legt die Spracheinstellungen für alle Benutzer fest, die das Forum besuchen.
Einzelne Benutzer können die Standardsprache auf der Seite in ihren Kontoeinstellungen überschreiben.", - "default-language": "Standardsprache", - "auto-detect": "Sprach-Einstellung bei Gästen automatisch ermitteln" -} \ No newline at end of file diff --git a/public/language/de/admin/general/navigation.json b/public/language/de/admin/general/navigation.json deleted file mode 100644 index 1bedf15f20..0000000000 --- a/public/language/de/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "ändern", - "route": "Pfad:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Klasse: optional", - "class": "Klasse optional", - "id": "ID: optional", - - "properties": "Eigenschaften:", - "groups": "Gruppen:", - "open-new-window": "In neuem Fenster öffnen", - - "btn.delete": "Löschen", - "btn.disable": "Deaktivieren", - "btn.enable": "Aktivieren", - - "available-menu-items": "Verfügbare Menüpunkte", - "custom-route": "Benutzerdefinierter Pfad", - "core": "Kern", - "plugin": "Plugin" -} \ No newline at end of file diff --git a/public/language/de/admin/general/social.json b/public/language/de/admin/general/social.json deleted file mode 100644 index 0614aca7da..0000000000 --- a/public/language/de/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Beiträge teilen", - "info-plugins-additional": "Plugins können zusätzliche soziale Netzwerke für das Teilen von Beiträgen hinzufügen.", - "save-success": "Erfolgreich gespeichert!" -} \ No newline at end of file diff --git a/public/language/de/admin/general/sounds.json b/public/language/de/admin/general/sounds.json deleted file mode 100644 index 22cbf29f14..0000000000 --- a/public/language/de/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Benachrichtigungen", - "chat-messages": "Chat Nachrichten", - "play-sound": "Abspielen", - "incoming-message": "Eingehende Nachricht", - "outgoing-message": "Gesendete Nachricht", - "upload-new-sound": "Sound hochladen", - "saved": "Einstellungen gespeichert!" -} \ No newline at end of file diff --git a/public/language/de/admin/manage/digest.json b/public/language/de/admin/manage/digest.json index 5f924bc587..07e7a5e321 100644 --- a/public/language/de/admin/manage/digest.json +++ b/public/language/de/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/de/admin/manage/users.json b/public/language/de/admin/manage/users.json index e9f51d32da..14a210328a 100644 --- a/public/language/de/admin/manage/users.json +++ b/public/language/de/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "UID", "users.username": "Nutzername", "users.email": "E-Mail", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "Anzahl der Beiträge", "users.reputation": "Ansehen", diff --git a/public/language/de/admin/menu.json b/public/language/de/admin/menu.json index 13448137e8..ec21748e22 100644 --- a/public/language/de/admin/menu.json +++ b/public/language/de/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Allgemein", "section-manage": "Verwalten", diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json index 8d6a65ee9e..9de1ce0df1 100644 --- a/public/language/de/admin/settings/email.json +++ b/public/language/de/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Der Name des Absenders, welcher in der E-Mail angezeigt werden soll.", "smtp-transport": "SMTP Konfiguration", - "smtp-transport.enabled": "Benutze einen externen Email-Server", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Du kannst aus einer Liste bekannter Email-Provider auswählen, oder einen benutzerdefinierten eingeben.", "smtp-transport.service": "Wähle einen Provider", "smtp-transport.service-custom": "Benutzerdefiniert...", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/de/admin/settings/general.json b/public/language/de/admin/settings/general.json index 7e004e3461..c7d890a33c 100644 --- a/public/language/de/admin/settings/general.json +++ b/public/language/de/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Forum Titel", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "Die URL des Seitentitels", - "title.url-help": "Wenn der Titel angeklickt wird, werden Benutzer zu dieser Adresse geschickt, bei leerem Feld wird die Startseite verwendet.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Name Deiner Community", "title.show-in-header": "Titel im Header anzeigen", "browser-title": "Browser Titel", @@ -20,9 +20,9 @@ "logo.image": "Bild", "logo.image-placeholder": "Pfad zu einem Logo, welches im Header des Forums angezeigt werden soll", "logo.upload": "Hochladen", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "Die URL des Logos", - "logo.url-help": "Wenn das Logo angeklickt wird, wird der Nutzer an diese Adresse weitergeleitet. Wenn das Feld leer gelassen wird, wird der Nutzer zur Startseite geleitet.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternativer Text, falls das Bild nicht angezeigt werden kann", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/de/admin/settings/user.json b/public/language/de/admin/settings/user.json index 11272dbd85..795bf4a4b0 100644 --- a/public/language/de/admin/settings/user.json +++ b/public/language/de/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Aus", "digest-freq.daily": "Täglich", "digest-freq.weekly": "Wöchentlich", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monatlich", "email-chat-notifs": "Sende eine E-Mail, wenn eine neue Chat-Nachricht eingeht und ich nicht online bin", "email-post-notif": "Sende eine E-Mail wenn auf Themen die ich abonniert habe geantwortet wird", diff --git a/public/language/de/error.json b/public/language/de/error.json index 541af8c5ed..08c4e7732c 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Du kannst den Chat erst nutzen wenn deine E-Mail bestätigt wurde, bitte klicke hier, um deine E-Mail zu bestätigen.", - "email-not-confirmed-email-sent": "Deine Email-Adresse wurde noch nicht bestätigt, bitte kontrolliere dein Postfach nach einer Bestätigungsmail. Du kannst keine Beiträge erstellen oder chatten bis deine Email-Adresse bestätigt wurde.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Wir konnten deine E-Mail-Adresse nicht bestätigen, bitte versuch es später noch einmal", "confirm-email-already-sent": "Die Bestätigungsmail wurde verschickt. Bitte warte %1 Minute(n), um eine weitere zu verschicken.", "sendmail-not-found": "Sendmail wurde nicht gefunden. Bitte stelle sicher, dass es installiert ist und durch den Benutzer unter dem NodeBB läuft ausgeführt werden kann.", @@ -103,6 +104,7 @@ "already-bookmarked": "Du hast diesen Beitrag bereits als Lesezeichen gespeichert", "already-unbookmarked": "Du hast diesen Beitrag bereits aus deinen Lesezeichen entfernt", "cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Du bist der einzige Administrator. Füge zuerst einen anderen Administrator hinzu, bevor du dich selbst als Administrator entfernst", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Bevor du versuchst dieses Konto zu löschen, entferne die zugehörigen Administratorrechte.", diff --git a/public/language/de/top.json b/public/language/de/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/de/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/de/topic.json b/public/language/de/topic.json index 63581ae290..e9d4ebacab 100644 --- a/public/language/de/topic.json +++ b/public/language/de/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Gib deinen Namen/Nick hier ein", "composer.discard": "Verwerfen", "composer.submit": "Absenden", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Antworte auf %1", "composer.new_topic": "Neues Thema", diff --git a/public/language/de/user.json b/public/language/de/user.json index c9be5cc888..f37aac89fb 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -94,6 +94,7 @@ "digest_off": "Aus", "digest_daily": "Täglich", "digest_weekly": "Wöchentlich", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Monatlich", "has_no_follower": "Diesem Benutzer folgt noch niemand. :(", "follows_no_one": "Dieser Benutzer folgt noch niemandem. :(", diff --git a/public/language/el/admin/advanced/events.json b/public/language/el/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/el/admin/advanced/events.json +++ b/public/language/el/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/el/admin/dashboard.json b/public/language/el/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/el/admin/dashboard.json +++ b/public/language/el/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/el/admin/general/dashboard.json b/public/language/el/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/el/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/el/admin/general/homepage.json b/public/language/el/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/el/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/el/admin/general/languages.json b/public/language/el/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/el/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/el/admin/general/navigation.json b/public/language/el/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/el/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/el/admin/general/social.json b/public/language/el/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/el/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/el/admin/general/sounds.json b/public/language/el/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/el/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/el/admin/manage/digest.json b/public/language/el/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/el/admin/manage/digest.json +++ b/public/language/el/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/el/admin/manage/users.json b/public/language/el/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/el/admin/manage/users.json +++ b/public/language/el/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/el/admin/menu.json b/public/language/el/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/el/admin/menu.json +++ b/public/language/el/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/el/admin/settings/email.json b/public/language/el/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/el/admin/settings/email.json +++ b/public/language/el/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/el/admin/settings/general.json b/public/language/el/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/el/admin/settings/general.json +++ b/public/language/el/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/el/admin/settings/user.json b/public/language/el/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/el/admin/settings/user.json +++ b/public/language/el/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/el/error.json b/public/language/el/error.json index f34cf7d037..827c635748 100644 --- a/public/language/el/error.json +++ b/public/language/el/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Δεν μπορείς να αποκλείσεις άλλους διαχειριστές!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/el/top.json b/public/language/el/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/el/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/el/topic.json b/public/language/el/topic.json index 94b2586d41..dfbb3a3ffc 100644 --- a/public/language/el/topic.json +++ b/public/language/el/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Πέταγμα", "composer.submit": "Υποβολή", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Απάντηση στο %1", "composer.new_topic": "Νέο Θέμα", diff --git a/public/language/el/user.json b/public/language/el/user.json index 96686d7c6b..5e50868ee0 100644 --- a/public/language/el/user.json +++ b/public/language/el/user.json @@ -94,6 +94,7 @@ "digest_off": "Off", "digest_daily": "Ημερήσια", "digest_weekly": "Εβδομαδιαίως", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Μηνιαία", "has_no_follower": "Αυτός ο χρήστης δεν έχει κανέναν ακόλουθο :(", "follows_no_one": "Αυτός ο χρήστης δεν ακολουθεί κανέναν :(", diff --git a/public/language/en-GB/admin/advanced/events.json b/public/language/en-GB/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/en-GB/admin/advanced/events.json +++ b/public/language/en-GB/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/en-GB/admin/dashboard.json b/public/language/en-GB/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/en-GB/admin/dashboard.json +++ b/public/language/en-GB/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/en-GB/admin/manage/digest.json b/public/language/en-GB/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/en-GB/admin/manage/digest.json +++ b/public/language/en-GB/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/en-GB/admin/menu.json b/public/language/en-GB/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/en-GB/admin/menu.json +++ b/public/language/en-GB/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/en-GB/admin/settings/email.json b/public/language/en-GB/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/en-GB/admin/settings/email.json +++ b/public/language/en-GB/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/en-GB/admin/settings/general.json b/public/language/en-GB/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/en-GB/admin/settings/general.json +++ b/public/language/en-GB/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/en-GB/admin/settings/user.json b/public/language/en-GB/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/en-GB/admin/settings/user.json +++ b/public/language/en-GB/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/en-GB/error.json b/public/language/en-GB/error.json index 3b6f337165..0b5e714e26 100644 --- a/public/language/en-GB/error.json +++ b/public/language/en-GB/error.json @@ -39,8 +39,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -120,6 +121,7 @@ "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "You can't ban other admins!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/en-GB/topic.json b/public/language/en-GB/topic.json index 68d605dc03..ceb9b43d42 100644 --- a/public/language/en-GB/topic.json +++ b/public/language/en-GB/topic.json @@ -158,6 +158,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Discard", "composer.submit": "Submit", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Replying to %1", "composer.new_topic": "New Topic", diff --git a/public/language/en-GB/user.json b/public/language/en-GB/user.json index 2e836559de..94dad42fda 100644 --- a/public/language/en-GB/user.json +++ b/public/language/en-GB/user.json @@ -100,6 +100,7 @@ "digest_off": "Off", "digest_daily": "Daily", "digest_weekly": "Weekly", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Monthly", "has_no_follower": "This user doesn't have any followers :(", diff --git a/public/language/en-US/admin/advanced/events.json b/public/language/en-US/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/en-US/admin/advanced/events.json +++ b/public/language/en-US/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/en-US/admin/dashboard.json b/public/language/en-US/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/en-US/admin/dashboard.json +++ b/public/language/en-US/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/en-US/admin/general/dashboard.json b/public/language/en-US/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/en-US/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/en-US/admin/general/homepage.json b/public/language/en-US/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/en-US/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/en-US/admin/general/languages.json b/public/language/en-US/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/en-US/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/en-US/admin/general/navigation.json b/public/language/en-US/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/en-US/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/en-US/admin/general/social.json b/public/language/en-US/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/en-US/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/en-US/admin/general/sounds.json b/public/language/en-US/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/en-US/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/en-US/admin/manage/digest.json b/public/language/en-US/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/en-US/admin/manage/digest.json +++ b/public/language/en-US/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/en-US/admin/manage/users.json b/public/language/en-US/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/en-US/admin/manage/users.json +++ b/public/language/en-US/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/en-US/admin/menu.json b/public/language/en-US/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/en-US/admin/menu.json +++ b/public/language/en-US/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/en-US/admin/settings/email.json b/public/language/en-US/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/en-US/admin/settings/email.json +++ b/public/language/en-US/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/en-US/admin/settings/general.json b/public/language/en-US/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/en-US/admin/settings/general.json +++ b/public/language/en-US/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/en-US/admin/settings/user.json b/public/language/en-US/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/en-US/admin/settings/user.json +++ b/public/language/en-US/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/en-US/error.json b/public/language/en-US/error.json index b806ec9367..6eb0983661 100644 --- a/public/language/en-US/error.json +++ b/public/language/en-US/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "You can't ban other admins!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/en-US/topic.json b/public/language/en-US/topic.json index ae2389ee4e..ca723b72f6 100644 --- a/public/language/en-US/topic.json +++ b/public/language/en-US/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Discard", "composer.submit": "Submit", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Replying to %1", "composer.new_topic": "New Topic", diff --git a/public/language/en-US/user.json b/public/language/en-US/user.json index 06da8484d8..19da2100e2 100644 --- a/public/language/en-US/user.json +++ b/public/language/en-US/user.json @@ -94,6 +94,7 @@ "digest_off": "Off", "digest_daily": "Daily", "digest_weekly": "Weekly", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Monthly", "has_no_follower": "This user doesn't have any followers :(", "follows_no_one": "This user isn't following anyone :(", diff --git a/public/language/en-x-pirate/admin/advanced/events.json b/public/language/en-x-pirate/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/en-x-pirate/admin/advanced/events.json +++ b/public/language/en-x-pirate/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/en-x-pirate/admin/dashboard.json b/public/language/en-x-pirate/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/en-x-pirate/admin/dashboard.json +++ b/public/language/en-x-pirate/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/en-x-pirate/admin/general/dashboard.json b/public/language/en-x-pirate/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/en-x-pirate/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/en-x-pirate/admin/general/homepage.json b/public/language/en-x-pirate/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/en-x-pirate/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "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/general/languages.json b/public/language/en-x-pirate/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/en-x-pirate/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/general/navigation.json b/public/language/en-x-pirate/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/en-x-pirate/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/general/social.json b/public/language/en-x-pirate/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/en-x-pirate/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/general/sounds.json b/public/language/en-x-pirate/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/en-x-pirate/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/en-x-pirate/admin/manage/digest.json b/public/language/en-x-pirate/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/en-x-pirate/admin/manage/digest.json +++ b/public/language/en-x-pirate/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/en-x-pirate/admin/manage/users.json b/public/language/en-x-pirate/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/en-x-pirate/admin/manage/users.json +++ b/public/language/en-x-pirate/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/en-x-pirate/admin/menu.json b/public/language/en-x-pirate/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/en-x-pirate/admin/menu.json +++ b/public/language/en-x-pirate/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/en-x-pirate/admin/settings/email.json b/public/language/en-x-pirate/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/en-x-pirate/admin/settings/email.json +++ b/public/language/en-x-pirate/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/en-x-pirate/admin/settings/general.json b/public/language/en-x-pirate/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/en-x-pirate/admin/settings/general.json +++ b/public/language/en-x-pirate/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/en-x-pirate/admin/settings/user.json b/public/language/en-x-pirate/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/en-x-pirate/admin/settings/user.json +++ b/public/language/en-x-pirate/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/en-x-pirate/error.json b/public/language/en-x-pirate/error.json index b806ec9367..6eb0983661 100644 --- a/public/language/en-x-pirate/error.json +++ b/public/language/en-x-pirate/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "You can't ban other admins!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/en-x-pirate/top.json b/public/language/en-x-pirate/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/en-x-pirate/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/en-x-pirate/topic.json b/public/language/en-x-pirate/topic.json index ae2389ee4e..ca723b72f6 100644 --- a/public/language/en-x-pirate/topic.json +++ b/public/language/en-x-pirate/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Discard", "composer.submit": "Submit", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Replying to %1", "composer.new_topic": "New Topic", diff --git a/public/language/en-x-pirate/user.json b/public/language/en-x-pirate/user.json index 2f919dfedb..91dc6ba8f8 100644 --- a/public/language/en-x-pirate/user.json +++ b/public/language/en-x-pirate/user.json @@ -94,6 +94,7 @@ "digest_off": "Off", "digest_daily": "Daily", "digest_weekly": "Weekly", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Monthly", "has_no_follower": "This user doesn't have any followers :(", "follows_no_one": "This user isn't following anyone :(", diff --git a/public/language/es/admin/advanced/events.json b/public/language/es/admin/advanced/events.json index 860f8f87a9..ec26f7c11c 100644 --- a/public/language/es/admin/advanced/events.json +++ b/public/language/es/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "No hay eventos", "control-panel": "Panel de control de eventos", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filtros", "filters-apply": "Aplicar filtros", "filter-type": "Tipo de evento", diff --git a/public/language/es/admin/dashboard.json b/public/language/es/admin/dashboard.json index 7595d4a563..a1d11fab48 100644 --- a/public/language/es/admin/dashboard.json +++ b/public/language/es/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Conexiones", - "anonymous-registered-users": "Usuarios Anónimos vs Registrados", - "anonymous": "Anónimos", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registrados", "user-presence": "Presencia del Usuario", @@ -68,6 +68,7 @@ "unread": "Sin Leer", "high-presence-topics": "Temas con Alta Presencia", + "popular-searches": "Popular Searches", "graphs.page-views": "Vista de la Pagina", "graphs.page-views-registered": "Vistas de la página registradas", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Vistas de la página Bot", "graphs.unique-visitors": "Visitantes Unicos", "graphs.registered-users": "Usuarios Registrados", - "graphs.anonymous-users": "Usuarios Anónimos", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Reiniciado por última vez por", "no-users-browsing": "No hay usuarios explorando", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/es/admin/general/dashboard.json b/public/language/es/admin/general/dashboard.json deleted file mode 100644 index 71d4d82a3a..0000000000 --- a/public/language/es/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Trafico del Foro", - "page-views": "Vistas de la Pagina", - "unique-visitors": "Visitantes Unicos", - "new-users": "New Users", - "posts": "Publicación", - "topics": "Temas", - "page-views-seven": "Últimos 7 Días", - "page-views-thirty": "Últimos 30 Días", - "page-views-last-day": "Últimas 24 horas", - "page-views-custom": "Rango de Fechas Personalizado", - "page-views-custom-start": "Comienzo del Rango", - "page-views-custom-end": "Final del Rango", - "page-views-custom-help": "Introduce un rango de fechas para las vistas de página que deseas ver. Si no hay ningún selector de fechas disponible, el formato aceptado es AAAA-MM-DD", - "page-views-custom-error": "Por favor, introduce un rango de fechas válido en el formato AAAA-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Todos los Tiempos", - - "updates": "Actualizaciones", - "running-version": "Estas ejecutando NodeBB v%1.", - "keep-updated": "Asegúrate que tu NodeBB este al día en los últimos parches de seguridad y actualizaciones.", - "up-to-date": "

Estásactualizado/a

", - "upgrade-available": "

Una versión nueva (v%1) ha sido publicada. Consideraactualizar NodeBB.

", - "prerelease-upgrade-available": "

Esta es una versión pre-publicación anticuada. Una versión nueva(v%1) ha sido publicada. Consideraactualizar NodeBB.

", - "prerelease-warning": "

Esta es una versión depre-lanzamiento de NodeBB. Algunas fallas pueden ocurrir.

", - "running-in-development": "Forum esta siendo ejecutado en modo de desarrollador. El foro puede estar abierto a vulnerabilidades potenciales; por favor contacta tu administrador del sistema.", - "latest-lookup-failed": "

No se pudo encontrar la última versión disponible de NodeBB

", - - "notices": "Noticias", - "restart-not-required": "No se require reiniciar.", - "restart-required": "Se requiere reiniciar", - "search-plugin-installed": "El plug-in de búsqueda esta instalado.", - "search-plugin-not-installed": "El plug-in de busqueda no esta instalado", - "search-plugin-tooltip": "Instala el plug-in de búsqueda desde la pagina de plugins para activar esta funcionalidad.", - - "control-panel": "Control del Systema", - "rebuild-and-restart": "Reconstruye & Reinicia", - "restart": "Reinicia", - "restart-warning": "Reconstruir o Reiniciar tu NodeBB cerrará todas las conexiones por unos segundos.", - "restart-disabled": "Reconstruir y Reiniciar tu NodeBB ha sido deshabilitado, ya que parece que no lo estás ejecutando desde el daemon adecuado.", - "maintenance-mode": "Modo de Mantenimiento", - "maintenance-mode-title": "Haz clic aquí para activar el modo de mantenimiento de NodeBB", - "realtime-chart-updates": "Actualizar el Grafo en Tiempo Real", - - "active-users": "Usuarios Activos", - "active-users.users": "Usuarios", - "active-users.guests": "Invitados", - "active-users.total": "Total", - "active-users.connections": "Conexiones", - - "anonymous-registered-users": "Usuarios Anónimos vs Registrados", - "anonymous": "Anónimos", - "registered": "Registrados", - - "user-presence": "Presencia del Usuario", - "on-categories": "Listado en Categorias", - "reading-posts": "Leer entradas", - "browsing-topics": "Explorar temas", - "recent": "Recientes", - "unread": "Sin Leer", - - "high-presence-topics": "Temas con Alta Presencia", - - "graphs.page-views": "Vista de la Pagina", - "graphs.page-views-registered": "Vistas de la página registradas", - "graphs.page-views-guest": "Vistas de la página visitantes", - "graphs.page-views-bot": "Vistas de la página Bot", - "graphs.unique-visitors": "Visitantes Unicos", - "graphs.registered-users": "Usuarios Registrados", - "graphs.anonymous-users": "Usuarios Anónimos", - "last-restarted-by": "Reiniciado por última vez por", - "no-users-browsing": "No hay usuarios explorando" -} diff --git a/public/language/es/admin/general/homepage.json b/public/language/es/admin/general/homepage.json deleted file mode 100644 index 178a101aa5..0000000000 --- a/public/language/es/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Página Principal", - "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": "Ruta Personalizada", - "allow-user-home-pages": "Permitir Pagina de Perfil del Usuario", - "home-page-title": "Título de la página de inicio (por defecto, \"Home\" o \"Inicio\")" -} \ No newline at end of file diff --git a/public/language/es/admin/general/languages.json b/public/language/es/admin/general/languages.json deleted file mode 100644 index df6d3843e5..0000000000 --- a/public/language/es/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Configuración de Idiomas", - "description": "El idioma por defecto determina la configuración del idioma usado para todos los usuarios que visiten el foro.
Los usuarios, a nivel individual, pueden sobreescribir el idioma por defecto en la página de configuración de su cuenta.", - "default-language": "Idioma por defecto", - "auto-detect": "Auto Detectar Configuración de Idioma para Visitantes" -} \ No newline at end of file diff --git a/public/language/es/admin/general/navigation.json b/public/language/es/admin/general/navigation.json deleted file mode 100644 index 22cad76ef8..0000000000 --- a/public/language/es/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icono:", - "change-icon": "cambio", - "route": "Ruta:", - "tooltip": "Nota de ayuda:", - "text": "Texto:", - "text-class": "Clase de Texto: opcional", - "class": "Clase opcional", - "id": "ID: opcional", - - "properties": "Propiedades:", - "groups": "Grupos:", - "open-new-window": "Abrir en una ventana nueva", - - "btn.delete": "Borrar", - "btn.disable": "Deshabilitar", - "btn.enable": "Habilitar", - - "available-menu-items": "Items de Menú Disponibles", - "custom-route": "Ruta Personalizada:", - "core": "núcleo", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/es/admin/general/social.json b/public/language/es/admin/general/social.json deleted file mode 100644 index b9a67b4758..0000000000 --- a/public/language/es/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Compartir entradas", - "info-plugins-additional": "Los plugins pueden añadir redes adicionales para compartir entradas/respuestas.", - "save-success": "¡Redes de Compartir Entradas salvadas con éxito!" -} \ No newline at end of file diff --git a/public/language/es/admin/general/sounds.json b/public/language/es/admin/general/sounds.json deleted file mode 100644 index 4635433b80..0000000000 --- a/public/language/es/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notificaciones", - "chat-messages": "Mensajes de Chat", - "play-sound": "Reproducir", - "incoming-message": "Mensaje Entrante", - "outgoing-message": "Mensaje Saliente", - "upload-new-sound": "Subir Sonido Nuevo", - "saved": "Configuración Guardada" -} \ No newline at end of file diff --git a/public/language/es/admin/manage/digest.json b/public/language/es/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/es/admin/manage/digest.json +++ b/public/language/es/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/es/admin/manage/users.json b/public/language/es/admin/manage/users.json index e13e9eef40..219bb7e580 100644 --- a/public/language/es/admin/manage/users.json +++ b/public/language/es/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nombre de usuario", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "cantidad de posts", "users.reputation": "reputación", diff --git a/public/language/es/admin/menu.json b/public/language/es/admin/menu.json index 6fa9453a06..d9e2ce06b3 100644 --- a/public/language/es/admin/menu.json +++ b/public/language/es/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Administrar", diff --git a/public/language/es/admin/settings/email.json b/public/language/es/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/es/admin/settings/email.json +++ b/public/language/es/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/es/admin/settings/general.json b/public/language/es/admin/settings/general.json index 4dade0a080..3ddadb3079 100644 --- a/public/language/es/admin/settings/general.json +++ b/public/language/es/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Título del Sitio", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "La URL del título del sitio", - "title.url-help": "Cuando se hace click en el título, enviar a los usuarios a esta dirección. Si se deja en blanco, el usuario será enviado al índice del foro.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Nombre de tu Comunidad", "title.show-in-header": "Mostrar Título del Sitio en el Encabezado", "browser-title": "Título del Navegador", @@ -20,9 +20,9 @@ "logo.image": "Imagen", "logo.image-placeholder": "Ruta al logo que se mostrará en la cabecera del foro", "logo.upload": "Subir", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "la URL del logo del sitio", - "logo.url-help": "Cuando se hace click en el logo, enviar los usuarios a esta dirección. Si se deja en blanco, el usuario será enviado al índice del foro.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Texto alternativo (alt text)", "log.alt-text-placeholder": "Texto alternativo para accesibilidad", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/es/admin/settings/user.json b/public/language/es/admin/settings/user.json index d460890735..a520898501 100644 --- a/public/language/es/admin/settings/user.json +++ b/public/language/es/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Apagado", "digest-freq.daily": "Diario", "digest-freq.weekly": "Semanal", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mensual", "email-chat-notifs": "Enviar un correo electrónico si un mensaje de chat nuevo llega y no estoy conectado/a", "email-post-notif": "Enviar un correo electrónico cuando se hacen respuestas a temas a los que estoy suscrito/a", diff --git a/public/language/es/error.json b/public/language/es/error.json index af0ec0569b..52f3fb57af 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "No puedes usar el chat hasta que confirmes tu dirección de correo electrónico, por favor haz click aquí para confirmar tu correo.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "No se ha podido confirmar su email, por favor inténtelo de nuevo más tarde.", "confirm-email-already-sent": "El email de confirmación ya ha sido enviado, por favor espera %1 minuto(s) para enviar otro.", "sendmail-not-found": "El ejecutable \"sendmail\" no ha sido encontrado, por favor asegúrate de que esta instalado en tu sistema y es accesible por el usuario que ejecuta NodeBB. ", @@ -103,6 +104,7 @@ "already-bookmarked": "Ya marcaste este mensaje", "already-unbookmarked": "Ya desmarcarste este mensaje", "cant-ban-other-admins": "¡No puedes expulsar a otros administradores!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Tu eres el unico administrador. Añade otro usuario como administrador antes de eliminarte a ti mismo.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Quitar privilegios de administrador de ésta cuenta antes de intentar borrarla", diff --git a/public/language/es/top.json b/public/language/es/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/es/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/es/topic.json b/public/language/es/topic.json index 84a7e4c422..6e15a937f8 100644 --- a/public/language/es/topic.json +++ b/public/language/es/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Descartar", "composer.submit": "Enviar", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "En respuesta a %1", "composer.new_topic": "Nuevo tema", diff --git a/public/language/es/user.json b/public/language/es/user.json index 30c9631be4..53926b7c83 100644 --- a/public/language/es/user.json +++ b/public/language/es/user.json @@ -94,6 +94,7 @@ "digest_off": "Apagado", "digest_daily": "Diariamente", "digest_weekly": "Semanalmente", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mensualmente", "has_no_follower": "Este usuario no tiene seguidores :(", "follows_no_one": "Este miembro no sigue a nadie :(", diff --git a/public/language/et/admin/advanced/events.json b/public/language/et/admin/advanced/events.json index 39eaf199f0..2b0df63877 100644 --- a/public/language/et/admin/advanced/events.json +++ b/public/language/et/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Sündmused puuduvad", "control-panel": "Sündmuste kontrollpaneel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/et/admin/dashboard.json b/public/language/et/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/et/admin/dashboard.json +++ b/public/language/et/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/et/admin/general/dashboard.json b/public/language/et/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/et/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/et/admin/general/homepage.json b/public/language/et/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/et/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/et/admin/general/languages.json b/public/language/et/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/et/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/et/admin/general/navigation.json b/public/language/et/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/et/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/et/admin/general/social.json b/public/language/et/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/et/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/et/admin/general/sounds.json b/public/language/et/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/et/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/et/admin/manage/digest.json b/public/language/et/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/et/admin/manage/digest.json +++ b/public/language/et/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/et/admin/manage/users.json b/public/language/et/admin/manage/users.json index 03a6ec75b6..8cf1753398 100644 --- a/public/language/et/admin/manage/users.json +++ b/public/language/et/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "Kasutajanimi", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "Postituste arv", "users.reputation": "Reputatsioon", diff --git a/public/language/et/admin/menu.json b/public/language/et/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/et/admin/menu.json +++ b/public/language/et/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/et/admin/settings/email.json b/public/language/et/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/et/admin/settings/email.json +++ b/public/language/et/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/et/admin/settings/general.json b/public/language/et/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/et/admin/settings/general.json +++ b/public/language/et/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/et/admin/settings/user.json b/public/language/et/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/et/admin/settings/user.json +++ b/public/language/et/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/et/error.json b/public/language/et/error.json index ebf1ab7c31..ddb750b45f 100644 --- a/public/language/et/error.json +++ b/public/language/et/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Sõnumeid ei ole võimalik enne saata kui sinu email on kinnitatud. Kinnitamiseks vajuta siia.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Meil ei õnnestunud sinu emaili kinnitada, proovi hiljem uuesti.", "confirm-email-already-sent": "Kinnituskiri on juba saadetud, palun oota %1 minut(it) uue kirja saatmiseks.", "sendmail-not-found": "Sendmail'i käivitatavat ei leitud, palun tee kindlaks, et see on installeeritud ja on käivitatav kasutaja poolt, kes käitab NodeBB't.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Sa ei saa bannida teisi administraatoreid!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Te olete ainus administraator. Lisage keegi teine administraatoriks, enne kui eemaldate endalt administraatori.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Eemalda sellelt kasutajalt administraatori õigused enne selle kustutamist", diff --git a/public/language/et/top.json b/public/language/et/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/et/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/et/topic.json b/public/language/et/topic.json index f99933c619..b3dd5b665a 100644 --- a/public/language/et/topic.json +++ b/public/language/et/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Katkesta", "composer.submit": "Postita", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Vastad %1'le", "composer.new_topic": "Uus teema", diff --git a/public/language/et/user.json b/public/language/et/user.json index 7f09d7984e..d7d914d03b 100644 --- a/public/language/et/user.json +++ b/public/language/et/user.json @@ -94,6 +94,7 @@ "digest_off": "Väljas", "digest_daily": "Igapäevaselt", "digest_weekly": "Iga nädal", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Iga kuu", "has_no_follower": "Sellel kasutajal pole ühtegi jälgijat :(", "follows_no_one": "See kasutaja ei jälgi kedagi :(", diff --git a/public/language/fa-IR/admin/advanced/events.json b/public/language/fa-IR/admin/advanced/events.json index 007719946d..71fc64b667 100644 --- a/public/language/fa-IR/admin/advanced/events.json +++ b/public/language/fa-IR/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "رویدادی موجود نیست", "control-panel": "کنترل پنل رویداد ها", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/fa-IR/admin/dashboard.json b/public/language/fa-IR/admin/dashboard.json index bf2ce96962..7952eee216 100644 --- a/public/language/fa-IR/admin/dashboard.json +++ b/public/language/fa-IR/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "نخوانده‌ها", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/fa-IR/admin/general/dashboard.json b/public/language/fa-IR/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/fa-IR/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/fa-IR/admin/general/homepage.json b/public/language/fa-IR/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/fa-IR/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/fa-IR/admin/general/languages.json b/public/language/fa-IR/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/fa-IR/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/fa-IR/admin/general/navigation.json b/public/language/fa-IR/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/fa-IR/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/fa-IR/admin/general/social.json b/public/language/fa-IR/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/fa-IR/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/fa-IR/admin/general/sounds.json b/public/language/fa-IR/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/fa-IR/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/fa-IR/admin/manage/digest.json b/public/language/fa-IR/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/fa-IR/admin/manage/digest.json +++ b/public/language/fa-IR/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/fa-IR/admin/manage/users.json b/public/language/fa-IR/admin/manage/users.json index f006204a49..6ae785dcaa 100644 --- a/public/language/fa-IR/admin/manage/users.json +++ b/public/language/fa-IR/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/fa-IR/admin/menu.json b/public/language/fa-IR/admin/menu.json index 9f65d917da..7fa68c6830 100644 --- a/public/language/fa-IR/admin/menu.json +++ b/public/language/fa-IR/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "عمومی", "section-manage": "Manage", diff --git a/public/language/fa-IR/admin/settings/email.json b/public/language/fa-IR/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/fa-IR/admin/settings/email.json +++ b/public/language/fa-IR/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/fa-IR/admin/settings/general.json b/public/language/fa-IR/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/fa-IR/admin/settings/general.json +++ b/public/language/fa-IR/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/fa-IR/admin/settings/user.json b/public/language/fa-IR/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/fa-IR/admin/settings/user.json +++ b/public/language/fa-IR/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/fa-IR/error.json b/public/language/fa-IR/error.json index f5385f82bd..b707c9d3d9 100644 --- a/public/language/fa-IR/error.json +++ b/public/language/fa-IR/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "شما تا قبل از تایید ایمیل قادر به چت نیستید، لطفا برای تایید ایمیل خود اینجا کلیک کنید", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "سیستم موفق به تایید ایمیل شما نشد، لطفا بعدا دوباره سعی کنید", "confirm-email-already-sent": "ایمیل فعال‌سازی قبلا فرستاده شده، لطفا %1 دقیقه صبر کنید تا ایمیل دیگری فرستاده شود.", "sendmail-not-found": "اجازه ارسال رایانامه پیدا نشد، لطفا مطمئن شوید این قابلیت نصب شده و توسط کاربر مد نظر در نود‌بی‌بی قابل اجرا است.", @@ -103,6 +104,7 @@ "already-bookmarked": "شما قبلا این پست را نشانک کرده‌اید", "already-unbookmarked": "شما قبلا این پست را از نشانک در آوردید", "cant-ban-other-admins": "شما نمی‌توانید دیگر مدیران را محروم کنید!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "شما تنها مدیر می باشید . شما باید قبل از عزل خود از مدیریت یک کاربر دیگر را مدیر کنید", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "قبل از حذف این کاربر دسترسی های مدیریت را از وی بگیرید.", diff --git a/public/language/fa-IR/top.json b/public/language/fa-IR/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/fa-IR/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/fa-IR/topic.json b/public/language/fa-IR/topic.json index c7e8c2bdb4..b5e75abd3c 100644 --- a/public/language/fa-IR/topic.json +++ b/public/language/fa-IR/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "انصراف", "composer.submit": "ارسال", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "پاسخ به %1", "composer.new_topic": "موضوع تازه", diff --git a/public/language/fa-IR/user.json b/public/language/fa-IR/user.json index 5de1da570c..68d9698a69 100644 --- a/public/language/fa-IR/user.json +++ b/public/language/fa-IR/user.json @@ -94,6 +94,7 @@ "digest_off": "خاموش", "digest_daily": "روزانه", "digest_weekly": "هفتگی", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "ماهانه", "has_no_follower": "این کاربر هیچ دنبال‌کننده‌ای ندارد :(", "follows_no_one": "این کاربر هیچ کسی را دنبال نمی‌کند :(", diff --git a/public/language/fi/admin/advanced/events.json b/public/language/fi/admin/advanced/events.json index a2a77c4021..472c08b024 100644 --- a/public/language/fi/admin/advanced/events.json +++ b/public/language/fi/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Ei tapahtumia.", "control-panel": "Tapahtumien hallintapaneeli", "delete-events": "Poista tapahtumia", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Suodattimet", "filters-apply": "Lisää suodattimia", "filter-type": "Tapahtuman tyyppi", diff --git a/public/language/fi/admin/dashboard.json b/public/language/fi/admin/dashboard.json index 8ce9c29ded..2fa46e3a70 100644 --- a/public/language/fi/admin/dashboard.json +++ b/public/language/fi/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Kokonaisuudessaan", "active-users.connections": "Yhteyttä", - "anonymous-registered-users": "Anonyymit vs. Rekisteröityneet käyttäjät", - "anonymous": "Anonyymiä", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Rekisteröitynyttä", "user-presence": "Käyttäjien sijainti", @@ -68,6 +68,7 @@ "unread": "Lukemattomat", "high-presence-topics": "Aiheet, joissa on eniten käyttäjiä paikalla", + "popular-searches": "Popular Searches", "graphs.page-views": "Sivulataukset", "graphs.page-views-registered": "Rekisteröityneiden käyttäjien sivulatausta", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Bottien sivulatausta", "graphs.unique-visitors": "Uniikkia vierailijaa", "graphs.registered-users": "Rekisteröitynyttä käyttäjää", - "graphs.anonymous-users": "Anonyymiä käyttäjää", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Viimeksi uudelleenkäynnistetty", "no-users-browsing": "Ei käyttäjiä selaamassa", "back-to-dashboard": "Takaisin ohjausnäkymään", "details.no-users": "Ei liittyneitä käyttäjiä valitulla aikavälillä.", "details.no-topics": "Ei luotuja aiheita valitulla aikavälillä.", + "details.no-searches": "No searches have been made yet", "details.no-logins": "Ei sisäänkirjautumisia valitulla aikavälillä.", "details.logins-static": "NodeBB tallettaa istuntotiedot vain %1 päivän ajaksi, joten tämä kuvaaja näyttää vain viimeisimpänä aktiivisena olleet istunnot.", "details.logins-login-time": "Sisäänkirjautumisaika" diff --git a/public/language/fi/admin/general/dashboard.json b/public/language/fi/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/fi/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/fi/admin/general/homepage.json b/public/language/fi/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/fi/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/fi/admin/general/languages.json b/public/language/fi/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/fi/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/fi/admin/general/navigation.json b/public/language/fi/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/fi/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/fi/admin/general/social.json b/public/language/fi/admin/general/social.json deleted file mode 100644 index 2d6c8e5690..0000000000 --- a/public/language/fi/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Viestin jakaminen", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/fi/admin/general/sounds.json b/public/language/fi/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/fi/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/fi/admin/manage/digest.json b/public/language/fi/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/fi/admin/manage/digest.json +++ b/public/language/fi/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/fi/admin/manage/users.json b/public/language/fi/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/fi/admin/manage/users.json +++ b/public/language/fi/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/fi/admin/menu.json b/public/language/fi/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/fi/admin/menu.json +++ b/public/language/fi/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/fi/admin/settings/email.json b/public/language/fi/admin/settings/email.json index 26495b6533..2dd033e1ad 100644 --- a/public/language/fi/admin/settings/email.json +++ b/public/language/fi/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/fi/admin/settings/general.json b/public/language/fi/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/fi/admin/settings/general.json +++ b/public/language/fi/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/fi/admin/settings/user.json b/public/language/fi/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/fi/admin/settings/user.json +++ b/public/language/fi/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/fi/error.json b/public/language/fi/error.json index 711704df4f..d379bc1081 100644 --- a/public/language/fi/error.json +++ b/public/language/fi/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Et voi keskustella ennen kuin sähköpostiosoitteesi on vahvistettu, ole hyvä ja paina tästä vahvistaaksesi sen.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Et voi estää muita ylläpitäjiä!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/fi/top.json b/public/language/fi/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/fi/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/fi/topic.json b/public/language/fi/topic.json index c58b5350f1..671365475b 100644 --- a/public/language/fi/topic.json +++ b/public/language/fi/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Hylkää", "composer.submit": "Lähetä", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Vastaus viestiin %1", "composer.new_topic": "Uusi aihe", diff --git a/public/language/fi/user.json b/public/language/fi/user.json index c6b4197fde..2fff42f480 100644 --- a/public/language/fi/user.json +++ b/public/language/fi/user.json @@ -94,6 +94,7 @@ "digest_off": "Pois päältä", "digest_daily": "Päivittäin", "digest_weekly": "Viikottain", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Kuukausittain", "has_no_follower": "Kukaan ei seuraa tätä käyttäjää :(", "follows_no_one": "Tämä käyttäjä ei seuraa ketään :(", diff --git a/public/language/fr/admin/advanced/events.json b/public/language/fr/admin/advanced/events.json index 6e7c591e35..3514894bce 100644 --- a/public/language/fr/admin/advanced/events.json +++ b/public/language/fr/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Il n'y a aucun évènement.", "control-panel": "Panneau de contrôle des évènements", "delete-events": "Supprimer les évènements", + "confirm-delete-all-events": "Êtes-vous sûr de vouloir supprimer tous les événements enregistrés ?", "filters": "Filtres", "filters-apply": "Appliquer", "filter-type": "Évènements", diff --git a/public/language/fr/admin/dashboard.json b/public/language/fr/admin/dashboard.json index 6670e9d2db..3a4f7bf284 100644 --- a/public/language/fr/admin/dashboard.json +++ b/public/language/fr/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connexions", - "anonymous-registered-users": "Utilisateurs anonymes vs enregistrés", - "anonymous": "Anonymes", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Enregistrés", "user-presence": "Présence des utilisateurs", @@ -68,6 +68,7 @@ "unread": "Non lus", "high-presence-topics": "Sujets populaires", + "popular-searches": "Popular Searches", "graphs.page-views": "Pages vues", "graphs.page-views-registered": "Membres", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Robots", "graphs.unique-visitors": "Visiteurs uniques", "graphs.registered-users": "Utilisateurs enregistrés", - "graphs.anonymous-users": "Utilisateurs anonymes", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Redémarré par", "no-users-browsing": "Aucun utilisateur connecté", "back-to-dashboard": "Retour au Tableau de bord", "details.no-users": "Aucun utilisateur ne s'est joint dans le délai sélectionné", "details.no-topics": "Aucun sujet n'a été publié dans la période sélectionnée", + "details.no-searches": "No searches have been made yet", "details.no-logins": "Aucune connexion n'a été enregistrée dans le délai sélectionné", "details.logins-static": "NodeBB n'enregistre que les données de session pendant %1 jours, et le tableau ci-dessous n'affichera donc que les dernières sessions actives", "details.logins-login-time": "Heure de connexion" diff --git a/public/language/fr/admin/general/dashboard.json b/public/language/fr/admin/general/dashboard.json deleted file mode 100644 index c3157a46dd..0000000000 --- a/public/language/fr/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Trafic du forum", - "page-views": "Pages vues", - "unique-visitors": "Visiteurs uniques", - "new-users": "Nouvel utilisateur", - "posts": "Messages", - "topics": "Sujets", - "page-views-seven": "7 derniers jours", - "page-views-thirty": "30 derniers jours", - "page-views-last-day": "Dernières 24 heures", - "page-views-custom": "Dates personnalisées", - "page-views-custom-start": "Début", - "page-views-custom-end": "Fin", - "page-views-custom-help": "Entrez une plage de date pour les vues que vous souhaitez afficher. Si aucun sélecteur de date n'est disponible, le format de date accepté est YYYY-MM-DD.", - "page-views-custom-error": "Veuillez entrer une plage de date valide dans le format suivant : YYYY-MM-DD", - - "stats.yesterday": "Hier", - "stats.today": "Aujourd'hui", - "stats.last-week": "Semaine dernière", - "stats.this-week": "Cette semaine", - "stats.last-month": "Mois dernier", - "stats.this-month": "Ce mois", - "stats.all": "Tous les temps", - - "updates": "Mises à jour", - "running-version": "NodeBB v%1 est actuellement installé.", - "keep-updated": "Assurez-vous que votre version de NodeBB est à jour pour les derniers patchs de sécurité et correctifs de bugs.", - "up-to-date": "

Votre version est à jour

", - "upgrade-available": "

Une nouvelle version (v%1) est disponible. Veuillez mettre à jour NodeBB.

", - "prerelease-upgrade-available": "

Votre version est dépassée. Une nouvelle version (v%1) est disponible. Veuillez mettre à jour NodeBB.

", - "prerelease-warning": "

Ceci est une version préliminaire de NodeBB. Des bugs inattendus peuvent se produire.

", - "running-in-development": "Le forum est en mode développement. Il peut être sujet à certaines vulnérabilités, veuillez contacter votre administrateur système.", - "latest-lookup-failed": "

Erreur de vérification de la dernière version disponible de NodeBB

", - - "notices": "Informations", - "restart-not-required": "Pas de redémarrage nécessaire", - "restart-required": "Redémarrage requis", - "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", - "rebuild-and-restart": "Régénérer & Redémarrer", - "restart": "Redémarrer", - "restart-warning": "Régénérer ou redémarrer NodeBB coupera toutes les connexions existantes pendant quelques secondes. ", - "restart-disabled": "La régénération et le redémarrage de votre forum ont été désactivés car vous ne semblez pas les exécuter à l'aide du serveur approprié.", - "maintenance-mode": "Mode maintenance", - "maintenance-mode-title": "Cliquez ici pour passer NodeBB en mode maintenance", - "realtime-chart-updates": "Mises à jour des graphiques en temps réel", - - "active-users": "Utilisateurs actifs", - "active-users.users": "Utilisateurs", - "active-users.guests": "Invités", - "active-users.total": "Total", - "active-users.connections": "Connexions", - - "anonymous-registered-users": "Utilisateurs anonymes vs enregistrés", - "anonymous": "Anonymes", - "registered": "Enregistrés", - - "user-presence": "Présence des utilisateurs", - "on-categories": "Sur la liste des catégories", - "reading-posts": "Lit des messages", - "browsing-topics": "Parcourt les sujets", - "recent": "Récents", - "unread": "Non lus", - - "high-presence-topics": "Sujets populaires", - - "graphs.page-views": "Pages vues", - "graphs.page-views-registered": "Membres", - "graphs.page-views-guest": "Invités", - "graphs.page-views-bot": "Robots", - "graphs.unique-visitors": "Visiteurs uniques", - "graphs.registered-users": "Utilisateurs enregistrés", - "graphs.anonymous-users": "Utilisateurs anonymes", - "last-restarted-by": "Redémarré par", - "no-users-browsing": "Aucun utilisateur connecté" -} diff --git a/public/language/fr/admin/general/homepage.json b/public/language/fr/admin/general/homepage.json deleted file mode 100644 index 3efe41fe65..0000000000 --- a/public/language/fr/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Page d'accueil", - "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", - "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/general/languages.json b/public/language/fr/admin/general/languages.json deleted file mode 100644 index 51ee9f7f01..0000000000 --- a/public/language/fr/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Réglages linguistiques", - "description": "La langue par défaut détermine les réglages pour tous les utilisateurs qui visitent votre forum.
Les utilisateurs peuvent ensuite modifier la langue par défaut sur leur page de réglages.", - "default-language": "Langue par défaut", - "auto-detect": "Détection automatique de la langue pour les invités" -} \ No newline at end of file diff --git a/public/language/fr/admin/general/navigation.json b/public/language/fr/admin/general/navigation.json deleted file mode 100644 index 02d6a7fbeb..0000000000 --- a/public/language/fr/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icône :", - "change-icon": "changer", - "route": "Route :", - "tooltip": "Info-bulle :", - "text": "Texte :", - "text-class": "Classe de texte : optionnel", - "class": "Classe: facultatif", - "id": "ID : optionnel", - - "properties": "Propriétés :", - "groups": "Groupes:", - "open-new-window": "Ouvrir dans une nouvelle fenêtre", - - "btn.delete": "Supprimer", - "btn.disable": "Désactiver", - "btn.enable": "Activer", - - "available-menu-items": "Éléments de menu disponibles", - "custom-route": "Route personnalisée", - "core": "cœur", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/fr/admin/general/social.json b/public/language/fr/admin/general/social.json deleted file mode 100644 index 59e9e4e326..0000000000 --- a/public/language/fr/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Partage de message", - "info-plugins-additional": "Les plugins peuvent ajouter de nouveaux réseaux pour partager des messages.", - "save-success": "Sauvegarde réussie !" -} \ No newline at end of file diff --git a/public/language/fr/admin/general/sounds.json b/public/language/fr/admin/general/sounds.json deleted file mode 100644 index 8ec037f62b..0000000000 --- a/public/language/fr/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Discussions", - "play-sound": "Jouer", - "incoming-message": "Message entrant", - "outgoing-message": "Message sortant", - "upload-new-sound": "Envoyer un nouveau son", - "saved": "Réglages sauvegardés" -} \ No newline at end of file diff --git a/public/language/fr/admin/manage/digest.json b/public/language/fr/admin/manage/digest.json index cbe54df27a..0661b13ed8 100644 --- a/public/language/fr/admin/manage/digest.json +++ b/public/language/fr/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Lettre d'activité envoyée", "resent-day": "Lettre d'activités quotidienne envoyée", "resent-week": "Lettre d'activité hebdomadaire envoyée", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Lettre d'activité mensuel envoyé", "null": "Jamais", "manual-run": "Lancer manuellement l'envoi:", diff --git a/public/language/fr/admin/manage/users.json b/public/language/fr/admin/manage/users.json index 3cc2ce905e..4b98478d81 100644 --- a/public/language/fr/admin/manage/users.json +++ b/public/language/fr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nom d'utilisateur", "users.email": "e-mail", + "users.no-email": "(pas e-mail)", "users.ip": "IP", "users.postcount": "nombre de sujets", "users.reputation": "réputation", diff --git a/public/language/fr/admin/menu.json b/public/language/fr/admin/menu.json index 3cb96440ec..dc12d9e9e1 100644 --- a/public/language/fr/admin/menu.json +++ b/public/language/fr/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Connexions", "dashboard/users": "Utilisateurs", "dashboard/topics": "Sujets", + "dashboard/searches": "Searches", "section-general": "Général", "section-manage": "Gestion", diff --git a/public/language/fr/admin/settings/email.json b/public/language/fr/admin/settings/email.json index 4752787e26..1f5b030ed3 100644 --- a/public/language/fr/admin/settings/email.json +++ b/public/language/fr/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Le nom de l’expéditeur à afficher dans l'e-mail", "smtp-transport": "Protocole SMTP", - "smtp-transport.enabled": "Utiliser un server extérieur pour envoyer les emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Vous pouvez sélectionner depuis une liste de services ou entrer un service personnalisé.", "smtp-transport.service": "Sélectionner un service", "smtp-transport.service-custom": "Service personnalisé", @@ -40,5 +40,7 @@ "require-email-address": "Exiger une adresse e-mail aux nouveaux utilisateurs ", "require-email-address-warning": "Par défaut, les utilisateurs peuvent refuser de saisir une adresse e-mail. L'activation de cette option oblige de renseigner une une adresse e-mail lors de l'inscription. Ne garantit pas que l'utilisateur entrera adresse e-mail valide, ni même une adresse qu'il possède.", "include-unverified-emails": "Envoyer des mails aux destinataires qui n'ont pas explicitement confirmé leurs mails", - "include-unverified-warning": "Par défaut, les utilisateurs dont les mails sont associés à leur compte ont déjà été vérifiés, mais il existe des situations où ce n'est pas le cas (par exemple, les connexions SSO, les utilisateurs bénéficiant de droits acquis, etc.). Activez ce paramètre à vos risques et périls – l'envoi de mails à des adresses non vérifiées peut constituer une violation des lois anti-spam régionales." -} \ No newline at end of file + "include-unverified-warning": "Par défaut, les utilisateurs dont les mails sont associés à leur compte ont déjà été vérifiés, mais il existe des situations où ce n'est pas le cas (par exemple, les connexions SSO, les utilisateurs bénéficiant de droits acquis, etc.). Activez ce paramètre à vos risques et périls – l'envoi de mails à des adresses non vérifiées peut constituer une violation des lois anti-spam régionales.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/fr/admin/settings/general.json b/public/language/fr/admin/settings/general.json index 0670d17203..232e29037a 100644 --- a/public/language/fr/admin/settings/general.json +++ b/public/language/fr/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Titre du site", "title.short": "Titre court", "title.short-placeholder": "Si aucun titre court n'est spécifié, le titre du site sera utilisé", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "URL du titre du site", - "title.url-help": "Adresse à laquelle l'utilisateur est renvoyé lors du clic sur le titre. Si ce champ est vide, l'adresse est celle de l'index du forum.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Nom de votre communauté", "title.show-in-header": "Afficher le titre du site dans l'en-tête", "browser-title": "Titre dans le navigateur", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Chemin vers un logo à afficher dans l'en-tête du site", "logo.upload": "Télécharger", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "L'URL du logo du site", - "logo.url-help": "Quand ils cliquent sur le logo, envoyer les utilisateurs vers cette adresse. Si ce champ est vide, l'utilisateur sera envoyé à l'index du forum.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Texte alternatif (alt)", "log.alt-text-placeholder": "Texte alternatif pour l'accessibilité", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Annuler le délai d'attente", "undo-timeout-help": "Certaines opérations telles que le déplacement de sujets permettront au modérateur d'annuler son action dans un certain délai. Réglez sur 0 pour désactiver complètement l'annulation.", "topic-tools": "Outils pour sujets" -} \ 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 57d2126740..722b013d4b 100644 --- a/public/language/fr/admin/settings/user.json +++ b/public/language/fr/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Désactivé", "digest-freq.daily": "Quotidien", "digest-freq.weekly": "Hebdomadaire", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mensuel", "email-chat-notifs": "Envoyer un e-mail si un nouveau message de chat arrive lorsque je ne suis pas en ligne", "email-post-notif": "Envoyer un email lors de réponses envoyées aux sujets auxquels que je suis", diff --git a/public/language/fr/error.json b/public/language/fr/error.json index a3c870ca55..0da22c466c 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -34,8 +34,9 @@ "email-invited": "Cet utilisateur a déjà été invité.", "email-not-confirmed": "La publication dans certaines catégories ou sujets sera activée après confirmation de e-mail, veuillez cliquer ici pour envoyer un e-mail de confirmation.", "email-not-confirmed-chat": "Il ne vous est pas possible d'utiliser le chat tant que votre adresse email n'a pas été vérifiée. Veuillez cliquer ici pour confirmer votre adresse email.", - "email-not-confirmed-email-sent": "Votre email n'a pas encore été confirmé, veuillez vérifier votre boîte mail. Vous ne pourrez pas poster ou discuter avant que votre email ne soit confirmé.", - "no-email-to-confirm": "Votre compte n'a pas d'adresse mail définie. Un mail est nécessaire pour la récupération du compte. Veuillez cliquer ici pour entrer un courriel.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "L'utilisateur « %1 » n'a pas d'adresse e-mail.", "email-confirm-failed": "Votre adresse email n'a pas pu être vérifiée. Veuillez ré-essayer plus tard.", "confirm-email-already-sent": "L'email de confirmation a déjà été envoyé. Veuillez attendre %1 minute(s) avant de redemander un nouvel envoi.", "sendmail-not-found": "L'application d'envoi de mail est introuvable, assurez-vous qu'elle est installée et que l'utilisateur ayant démarré NodeBB ait des droits suffisants.", @@ -103,6 +104,7 @@ "already-bookmarked": "Vous avez déjà mis un marque-page", "already-unbookmarked": "Vous avez déjà retiré un marque-page", "cant-ban-other-admins": "Vous ne pouvez pas bannir les autres administrateurs !", + "cant-make-banned-users-admin": "Vous ne pouvez pas mettre des utilisateurs bannis en administrateur.", "cant-remove-last-admin": "Vous êtes le seul administrateur. Ajoutez un autre utilisateur en tant qu'administrateur avant de vous retirer.", "account-deletion-disabled": "La suppression du compte est désactivée", "cant-delete-admin": "Veuillez retirer les droits d'administration de ce compte avant de tenter de le supprimer.", diff --git a/public/language/fr/top.json b/public/language/fr/top.json new file mode 100644 index 0000000000..b182f2d4e9 --- /dev/null +++ b/public/language/fr/top.json @@ -0,0 +1,4 @@ +{ + "title": "Haut", + "no_top_topics": "Aucun sujet principal" +} \ No newline at end of file diff --git a/public/language/fr/topic.json b/public/language/fr/topic.json index 5badf716ca..f5cd794d55 100644 --- a/public/language/fr/topic.json +++ b/public/language/fr/topic.json @@ -21,7 +21,7 @@ "edit": "Éditer", "delete": "Supprimer", "delete-event": "Supprimer l'événement", - "delete-event-confirm": "Voulez-vous vraiment supprimer cet événement ?", + "delete-event-confirm": "Êtes-vous sûr de vouloir supprimer cet événement ?", "purge": "Supprimer définitivement", "restore": "Restaurer", "move": "Déplacer", @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Entrez votre nom/identifiant ici", "composer.discard": "Abandonner", "composer.submit": "Envoyer", + "composer.additional-options": "Additional Options", "composer.schedule": "Planification", "composer.replying_to": "En réponse à %1", "composer.new_topic": "Nouveau sujet", diff --git a/public/language/fr/user.json b/public/language/fr/user.json index 36ab11712b..17fbe49537 100644 --- a/public/language/fr/user.json +++ b/public/language/fr/user.json @@ -94,6 +94,7 @@ "digest_off": "Désactivé", "digest_daily": "Quotidien", "digest_weekly": "Hebdomadaire", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mensuel", "has_no_follower": "Personne n'est abonné à cet utilisateur :(", "follows_no_one": "Cet utilisateur n'est abonné à personne :(", diff --git a/public/language/gl/admin/advanced/events.json b/public/language/gl/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/gl/admin/advanced/events.json +++ b/public/language/gl/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/gl/admin/dashboard.json b/public/language/gl/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/gl/admin/dashboard.json +++ b/public/language/gl/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/gl/admin/general/dashboard.json b/public/language/gl/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/gl/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/gl/admin/general/homepage.json b/public/language/gl/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/gl/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/gl/admin/general/languages.json b/public/language/gl/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/gl/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/gl/admin/general/navigation.json b/public/language/gl/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/gl/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/gl/admin/general/social.json b/public/language/gl/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/gl/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/gl/admin/general/sounds.json b/public/language/gl/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/gl/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/gl/admin/manage/digest.json b/public/language/gl/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/gl/admin/manage/digest.json +++ b/public/language/gl/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/gl/admin/manage/users.json b/public/language/gl/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/gl/admin/manage/users.json +++ b/public/language/gl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/gl/admin/menu.json b/public/language/gl/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/gl/admin/menu.json +++ b/public/language/gl/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/gl/admin/settings/email.json b/public/language/gl/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/gl/admin/settings/email.json +++ b/public/language/gl/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/gl/admin/settings/general.json b/public/language/gl/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/gl/admin/settings/general.json +++ b/public/language/gl/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/gl/admin/settings/user.json b/public/language/gl/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/gl/admin/settings/user.json +++ b/public/language/gl/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/gl/error.json b/public/language/gl/error.json index 1c5bc502c1..2d6e135643 100644 --- a/public/language/gl/error.json +++ b/public/language/gl/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Non podes charlar ata que confirmes o teu correo, por favor pica aquí para confirmalo.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Non podemos confirmar o teu enderezo, por favor téntao de novo máis tarde.", "confirm-email-already-sent": "O correo de confirmación foi enviado, agarda %1 minute(s) para enviar outro.", "sendmail-not-found": "Non se atopa o executable \"sendmail\", por favor, asegúrate de que está instalado no teu sistema e que é accesible polo usuario que executa NodeBB. ", @@ -103,6 +104,7 @@ "already-bookmarked": "Xa marcaches esta mensaxe", "already-unbookmarked": "Xa desmarcaches esta mensaxe", "cant-ban-other-admins": "Non podes botar outros administradores!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Eres o único administrador. Engade outros administradores antes de quitarte a ti mesmo como administrador.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Retirar privilexios de administrador desta conta antes de intentar borrala", diff --git a/public/language/gl/top.json b/public/language/gl/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/gl/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/gl/topic.json b/public/language/gl/topic.json index 72e77219fa..493bff32b8 100644 --- a/public/language/gl/topic.json +++ b/public/language/gl/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Descartar", "composer.submit": "Enviar", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "En resposta a %1", "composer.new_topic": "Novo tema", diff --git a/public/language/gl/user.json b/public/language/gl/user.json index 7fb9ff2efb..7602c50bdf 100644 --- a/public/language/gl/user.json +++ b/public/language/gl/user.json @@ -94,6 +94,7 @@ "digest_off": "Desactivado", "digest_daily": "Diariamente", "digest_weekly": "Semanalmente", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mensualmente", "has_no_follower": "Ninguén segue a este usuario :(", "follows_no_one": "Este usuario non sigue a ninguén :(", diff --git a/public/language/he/admin/advanced/events.json b/public/language/he/admin/advanced/events.json index 1e8a7c9a9f..37da405a88 100644 --- a/public/language/he/admin/advanced/events.json +++ b/public/language/he/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "אין ארועים", "control-panel": "בקרת ארועים\n ", "delete-events": "מחיקת ארועים", + "confirm-delete-all-events": "האם אתה בטוח שאתה רוצה למחוק את כל האירועים שנרשמו?", "filters": "מסננים", "filters-apply": "החל מסננים", "filter-type": "סוג אירוע", diff --git a/public/language/he/admin/dashboard.json b/public/language/he/admin/dashboard.json index 54a77a8173..0b9b6e20a6 100644 --- a/public/language/he/admin/dashboard.json +++ b/public/language/he/admin/dashboard.json @@ -30,7 +30,7 @@ "upgrade-available": "

גרסה חדשה (v%1) שוחררה. שקול האם לעדכן את הפורום שלך.

", "prerelease-upgrade-available": "

זוהי גירסת קדם-הפצה מיושנת של NodeBB. גרסה חדשה (v%1) שוחרר. שקול האם לעדכן את ה-NodeBB שלך.

", "prerelease-warning": "

זוהי גירסת קדם-הפצה של NodeBB. באגים בלתי צפויים עלולים להתרחש.

", - "fallback-emailer-not-found": "Fallback emailer not found!", + "fallback-emailer-not-found": "Fallback emailer לא נמצא!", "running-in-development": "הפורום פועל במצב פיתוח. הפורום עשוי להיות חשוף לפגיעות פוטנציאליות; פנה אל מנהל המערכת שלך.", "latest-lookup-failed": "

נכשל בבדיקת זמינות גרסה חדשה של הפורום

", @@ -56,8 +56,8 @@ "active-users.total": "סך הכל", "active-users.connections": "חיבורים", - "anonymous-registered-users": "משתמשים רשומים ואורחים", - "anonymous": "אורחים", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "רשומים", "user-presence": "נוכחות משתמשים", @@ -68,6 +68,7 @@ "unread": "לא נקראו", "high-presence-topics": "פוסטים עם הכי הרבה נוכחות", + "popular-searches": "Popular Searches", "graphs.page-views": "צפיות בדפים", "graphs.page-views-registered": "צפיות בדפים-רשומים", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "צפיות בדפים-בוטים", "graphs.unique-visitors": "מבקרים ייחודיים", "graphs.registered-users": "משתמשים רשומים", - "graphs.anonymous-users": "אורחים", + "graphs.guest-users": "Guest Users", "last-restarted-by": "אותחל לארונה על ידי", "no-users-browsing": "אין גולשים", "back-to-dashboard": "חזרה ללוח מחוונים", "details.no-users": "אין משתמש שהצטרף במסגרת הזמן שנבחרה", "details.no-topics": "לא פורסמו נושאים במסגרת הזמן שנבחרה", + "details.no-searches": "No searches have been made yet", "details.no-logins": "לא נרשמו כניסות במסגרת הזמן שנבחרה", "details.logins-static": "NodeBB שומר נתוני הפעלה עבור %1 ימים בלבד, ולכן טבלה זו תציג רק את הכניסות הפעילות האחרונות", "details.logins-login-time": "זמן כניסה" diff --git a/public/language/he/admin/development/info.json b/public/language/he/admin/development/info.json index 5a7c675185..4c60fef05a 100644 --- a/public/language/he/admin/development/info.json +++ b/public/language/he/admin/development/info.json @@ -2,12 +2,12 @@ "you-are-on": "אתה נמצא ב %1:%2", "ip": "IP %1", "nodes-responded": "%1 צמתים הגיבו בתוך %2מילי שניות!", - "host": "מנחה", + "host": "host", "primary": "primary / run jobs", "pid": "pid", "nodejs": "nodejs", "online": "מקוון", - "git": "גיט", + "git": "git", "memory": "זיכרון", "load": "טעינת מערכת", "cpu-usage": "שימוש ב-CPU", diff --git a/public/language/he/admin/extend/widgets.json b/public/language/he/admin/extend/widgets.json index 40fa3a53e7..49ad01a667 100644 --- a/public/language/he/admin/extend/widgets.json +++ b/public/language/he/admin/extend/widgets.json @@ -1,30 +1,30 @@ { - "available": "יישומונים זמינים", - "explanation": "בחר יישומון מהתפריט הנפתח ואז גרור ושחרר אותו לאזור הווידג'ט של התבנית משמאל.", + "available": "וידג'טים זמינים", + "explanation": "בחר וידג'ט מהתפריט הנפתח ואז גרור ושחרר אותו באזור הווידג'ט של התבנית משמאל.", "none-installed": "לא נמצאו וידג'טים! הפעל את תוספי הוידג'טים ב תוספים בלוח הבקרה.", - "clone-from": "יישומונים משוכפלים מ", + "clone-from": "וידג'טים משוכפלים מ", "containers.available": "גורמים מכילים זמינים", - "containers.explanation": "גרור ושחרר מעל כל יישומון פעיל", - "containers.none": "אף אחד", + "containers.explanation": "גרור ושחרר מעל כל וידג'ט פעיל", + "containers.none": "None", "container.well": "Well", "container.jumbotron": "Jumbotron", "container.panel": "פאנל", "container.panel-header": "כותרת פאנל", "container.panel-body": "גוף הפאנל", - "container.alert": "התרעה", + "container.alert": "התראה", - "alert.confirm-delete": "האם אתה בטוח שאתה רוצה למחוק את הווידג'ט?", - "alert.updated": "העלאת ווידג'טים", - "alert.update-success": "הווידג'טים הועלו בהצלחה", + "alert.confirm-delete": "האם אתה בטוח שאתה רוצה למחוק את הוידג'ט?", + "alert.updated": "העלאת וידג'טים", + "alert.update-success": "הוידג'טים הועלו בהצלחה", "alert.clone-success": "הוידג'טים שוכפלו בהצלחה", "error.select-clone": "בחר דף לשכפל ממנו", "title": "כותרת", - "title.placeholder": "Title (only shown on some containers)", - "container": "Container", - "container.placeholder": "Drag and drop a container or enter HTML here.", - "show-to-groups": "הראה לקבוצות", - "hide-from-groups": "הסתר מקבוצות", - "hide-on-mobile": "הסתר במובייל" + "title.placeholder": "כותרת (מוצגת רק בגורמים מכילים מסוימים)", + "container": "גורם מכיל", + "container.placeholder": "גרור ושחרר גורם מכיל (container) או הזן HTML כאן.", + "show-to-groups": "יוצג בקבוצות", + "hide-from-groups": "יוסתר מקבוצות", + "hide-on-mobile": " הסתר במובייל" } \ No newline at end of file diff --git a/public/language/he/admin/general/dashboard.json b/public/language/he/admin/general/dashboard.json deleted file mode 100644 index 3bd39f79e8..0000000000 --- a/public/language/he/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "תעבורת הפורום", - "page-views": "צפיות בדפים", - "unique-visitors": "מבקרים ייחודיים", - "new-users": "New Users", - "posts": "פוסטים", - "topics": "נושאים", - "page-views-seven": "7 ימים אחרונים", - "page-views-thirty": "30 ימים אחרונים", - "page-views-last-day": "24 שעות אחרונות", - "page-views-custom": "טווח תאריך ידני", - "page-views-custom-start": "תחילת טווח", - "page-views-custom-end": "סוף טווח", - "page-views-custom-help": "הכנס טווח תאריך עבור התקופה שבה תרצה לצפות בצפיות העמודים. הפורמט הנדרש הוא YYYY-MM-DD", - "page-views-custom-error": "נא הזן טווח תאריכים תקין כלהלן YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "כל הזמנים", - - "updates": "עדכונים", - "running-version": "אתה עובד עם NodeBB גרסה%1", - "keep-updated": "תמיד תוודא שמערכת NodeBB שלך עדכנית לטובת עדכוני אבטחה ותיקוני באגים", - "up-to-date": "

אתה עדכני

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

נכשל בבדיקת גרסה חדשה זמינה עבור NodeBB

", - - "notices": "הודעות", - "restart-not-required": "לא נדרש אתחול מחדש", - "restart-required": "נדרש אתחול מחדש", - "search-plugin-installed": "תוסף חיפוש הותקן", - "search-plugin-not-installed": "תוסף חיפוש לא הותקן", - "search-plugin-tooltip": "התקן את תוסף החיפוש מעמוד התוספים על מנת להפעיל את אפשרות החיפוש", - - "control-panel": "שליטה מערכתית", - "rebuild-and-restart": "בנייה מחדש ואתחול", - "restart": "אתחול", - "restart-warning": "בנייה או אתחול מערכת NodeBB תנתק את כל המשתמשים הקיימים למספר שניות", - "restart-disabled": "בניית ואתחול מערכת NodeBB לא אפשרית, מאחר ואתה לא מריץ את המערכת בדרך הנדרשת", - "maintenance-mode": "מצב תחזוקה", - "maintenance-mode-title": "לחץ כאן על מנת להכניס את NodeBB למצב תחזוקה", - "realtime-chart-updates": "עדכון זמן אמת של הגרף", - - "active-users": "משתמשים פעילים", - "active-users.users": "משתמשים", - "active-users.guests": "אורחים", - "active-users.total": "סך הכל", - "active-users.connections": "חיבורים", - - "anonymous-registered-users": "משתמשים רשומים כנגד אורחים", - "anonymous": "אורחים", - "registered": "רשום", - - "user-presence": "נוכחות משתמש", - "on-categories": "על רשימת הקטגוריות", - "reading-posts": "קריאת פוסטים", - "browsing-topics": "חיפוש נושאים", - "recent": "לאחרונה", - "unread": "לא נקראו", - - "high-presence-topics": "פוסטים עם נוכחות גבוהה", - - "graphs.page-views": "צפיות בדפים", - "graphs.page-views-registered": "צפיות בדפים של רשומים", - "graphs.page-views-guest": "צפיות בדפים של אורחים", - "graphs.page-views-bot": "צפיות של בוטים", - "graphs.unique-visitors": "מבקרים ייחודיים", - "graphs.registered-users": "משתמשים רשומים", - "graphs.anonymous-users": "משתמשים אנונימיים", - "last-restarted-by": "אותחל לארונה על ידי", - "no-users-browsing": "אין משתמשים גולשים" -} diff --git a/public/language/he/admin/general/homepage.json b/public/language/he/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/he/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/he/admin/general/languages.json b/public/language/he/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/he/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/he/admin/general/navigation.json b/public/language/he/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/he/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/he/admin/general/social.json b/public/language/he/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/he/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/he/admin/general/sounds.json b/public/language/he/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/he/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/he/admin/manage/categories.json b/public/language/he/admin/manage/categories.json index 546c5abc35..07eca8f15e 100644 --- a/public/language/he/admin/manage/categories.json +++ b/public/language/he/admin/manage/categories.json @@ -19,7 +19,7 @@ "category-image": "תמונת קטגוריה", "parent-category": "קטגוריית אב", "optional-parent-category": "(אופציונלי) קטגוריית הורים", - "top-level": "Top Level", + "top-level": "רמה עליונה", "parent-category-none": "(ללא)", "copy-parent": "העתק אב", "copy-settings": "העתק הגדרות מ:", @@ -32,8 +32,8 @@ "edit": "ערוך", "analytics": "נתח", "view-category": "הצג קטגוריה", - "set-order": "Set order", - "set-order-help": "Setting the order of the category will move this category to that order and update the order of other categories as necessary. Minimum order is 1 which puts the category at the top.", + "set-order": "קבע סדר", + "set-order-help": "הגדרת סדר הקטגוריה תעביר קטגוריה זו לסדר זה ותעדכן את סדר הקטגוריות האחרות לפי הצורך. מינימום קביעת סדר הוא 1 מה שמציב את הקטגוריה בראש.", "select-category": "בחר קטגוריה", "set-parent-category": "הגדר קטגוריית אב", diff --git a/public/language/he/admin/manage/digest.json b/public/language/he/admin/manage/digest.json index fbad5ebc74..78e865d394 100644 --- a/public/language/he/admin/manage/digest.json +++ b/public/language/he/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "שליחת התקציר מחדש באופן ידני בוצע בהצלחה", "resent-day": "תקציר יומי נשלח", "resent-week": "תקציר שבועי נשלח", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "תקציר חודשי נשלח", "null": "אף פעם", "manual-run": "הפעל תקציר ידני", diff --git a/public/language/he/admin/manage/privileges.json b/public/language/he/admin/manage/privileges.json index 2100dbedde..819f7260ed 100644 --- a/public/language/he/admin/manage/privileges.json +++ b/public/language/he/admin/manage/privileges.json @@ -51,13 +51,13 @@ "alert.saved": "שינויי הרשאות נשמרו והוחלו", "alert.confirm-discard": "האם אתה בטוח שברצונך לבטל את שינויי ההרשאות שלך?", "alert.discarded": "שינויי ההרשאות נמחקו", - "alert.confirm-copyToAll": "Are you sure you wish to apply this set of %1 to all categories?", - "alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's set of %1 to all categories?", - "alert.confirm-copyToChildren": "Are you sure you wish to apply this set of %1 to all descendant (child) categories?", - "alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's set of %1 to all descendant (child) categories?", + "alert.confirm-copyToAll": "זהירות!! האם אתה בטוח שברצונך להחיל הגדרת הרשאות זו של %1 ל כל הקטגוריות?", + "alert.confirm-copyToAllGroup": "זהירות!! האם אתה בטוח שברצונך להחיל הרשאות קבוצה זו של%1 ל כל הקטגוריות?", + "alert.confirm-copyToChildren": "האם אתה בטוח שברצונך להחיל הגדרת הרשאות זו של %1 ל כל קטגוריות הצאצאים (ילדים)?", + "alert.confirm-copyToChildrenGroup": "האם אתה בטוח שברצונך להחיל הרשאות קבוצה זו של%1 ל לכל קטגוריות הצאצאים (ילדים)?", "alert.no-undo": "לא ניתן לבטל פעולה זו.", "alert.admin-warning": "מנהלים מקבלים את כל ההרשאות", - "alert.copyPrivilegesFrom-title": "Select a category to copy from", - "alert.copyPrivilegesFrom-warning": "This will copy %1 from the selected category.", - "alert.copyPrivilegesFromGroup-warning": "This will copy this group's set of %1 from the selected category." + "alert.copyPrivilegesFrom-title": "בחר קטגוריה להעתקה ממנו", + "alert.copyPrivilegesFrom-warning": "פעולה זו תעתיק %1 מהקטגוריה שנבחרה.", + "alert.copyPrivilegesFromGroup-warning": "פעולה זו תעתיק את הגדרת הקבוצה של %1 מהקטגוריה שנבחרה." } \ No newline at end of file diff --git a/public/language/he/admin/manage/uploads.json b/public/language/he/admin/manage/uploads.json index 2fa5ab4c06..0507edec6f 100644 --- a/public/language/he/admin/manage/uploads.json +++ b/public/language/he/admin/manage/uploads.json @@ -6,6 +6,6 @@ "size/filecount": "גודל / ספירת קבצים", "confirm-delete": "האם אתה בטוח שאתה רוצה למחוק קובץ זה?", "filecount": "%1 קבצים", - "new-folder": "New Folder", - "name-new-folder": "Enter a name for new the folder" + "new-folder": "תיקייה חדשה", + "name-new-folder": "הכנס שם לתיקייה החדשה" } \ No newline at end of file diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index 05b73d2b18..1eb0bb2aca 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "מזהה משתמש (ID)", "users.username": "שם משתמש", "users.email": "דוא\"ל", + "users.no-email": "(אין כתובת דוא\"ל)", "users.ip": "IP", "users.postcount": "מספר פוסטים", "users.reputation": "מוניטין", diff --git a/public/language/he/admin/menu.json b/public/language/he/admin/menu.json index c4d31c775d..e18bb3012c 100644 --- a/public/language/he/admin/menu.json +++ b/public/language/he/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "כניסות", "dashboard/users": "משתמשים", "dashboard/topics": "נושאים", + "dashboard/searches": "Searches", "section-general": "כללי", "section-manage": "ניהול", diff --git a/public/language/he/admin/settings/email.json b/public/language/he/admin/settings/email.json index 9f6876ba38..0c98d497e4 100644 --- a/public/language/he/admin/settings/email.json +++ b/public/language/he/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "השם 'מאת' יוצג בדוא\"ל.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/he/admin/settings/general.json b/public/language/he/admin/settings/general.json index c807d5fccc..97c974a552 100644 --- a/public/language/he/admin/settings/general.json +++ b/public/language/he/admin/settings/general.json @@ -3,48 +3,48 @@ "title": "כותרת האתר", "title.short": "כותרת קצרה", "title.short-placeholder": "אם לא הוגדר כותרת קצרה, כותרת האתר ישמש ככותרת", - "title.url": "כתובת האתר", - "title.url-placeholder": "כתובת אתר זה", - "title.url-help": "בעת לחיצה על הכותרת, המשתמשים ינותבו לכתובת הזו. אם תשאיר ריק, המשתמשים ינותבו לאינדקס", - "title.name": "Your Community Name", + "title.url": "כותרת קישור URL", + "title.url-placeholder": "ה-URL של כותרת האתר", + "title.url-help": "בעת לחיצה על הכותרת, המשתמשים ינותבו לכתובת זו. באם יישאר ריק, המשתמשים יישלחו לאינדקס הפורום.
הערה: זו אינה כתובת ה- URL החיצונית המשמשת בהודעות דוא\"ל וכד'. זה נקבע על ידי ה-url המאופיין ב- config.json", + "title.name": "שם הקהילה שלך", "title.show-in-header": "הצג את כותרת האתר בכותרת העליונה", "browser-title": "כותרת הדפדפן", "browser-title-help": "אם לא צוין כותרת הדפדפן, כותרת האתר ישמש ככותרת", "title-layout": "פריסת כותרת", - "title-layout-help": "Define how the browser title will be structured ie. {pageTitle} | {browserTitle}", - "description.placeholder": "A short description about your community", - "description": "Site Description", - "keywords": "Site Keywords", - "keywords-placeholder": "Keywords describing your community, comma-separated", + "title-layout-help": "הגדר כיצד כותרת הדפדפן תהיה מובנית לדוגמא. {pageTitle} | {browserTitle}", + "description.placeholder": "תיאור קצר על הקהילה שלך", + "description": "תיאור האתר", + "keywords": "מילות מפתח של האתר", + "keywords-placeholder": "מילות מפתח המתארות את הקהילה שלך, מופרדות באמצעות פסיקים", "logo": "לוגו האתר", "logo.image": "תמונה", "logo.image-placeholder": "נתב ללוגו שיראה בכותרת הפורום", "logo.upload": "העלה", - "logo.url": "URL", + "logo.url": "קישור URL לאייקון", "logo.url-placeholder": "כתובת לוגו האתר", - "logo.url-help": "בעת לחיצה על הלוגו, המשתמשים ינותבו לכתובת הזו. אם תשאיר ריק, המשתמשים ינותבו לאינדקס", - "logo.alt-text": "Alt Text", - "log.alt-text-placeholder": "Alternative text for accessibility", - "favicon": "Favicon", + "logo.url-help": "בעת לחיצה על האייקון, המשתמשים ינותבו לכתובת זו. באם יישאר ריק, המשתמשים יישלחו לאינדקס הפורום.
הערה: זו אינה כתובת ה- URL החיצונית המשמשת בהודעות דוא\"ל וכד'. זה נקבע על ידי ה-url המאופיין ב- config.json", + "logo.alt-text": "טקסט חלופי", + "log.alt-text-placeholder": "הזן טקסט חלופי לנגישות", + "favicon": "פבאייקון - Favicon", "favicon.upload": "העלה", - "pwa": "Progressive Web App", - "touch-icon": "Touch Icon", + "pwa": "אפליקציית אינטרנט בסלולרי", + "touch-icon": "סמליל דף אינטרנט - Touch Icon", "touch-icon.upload": "העלה", - "touch-icon.help": "Recommended size and format: 512x512, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.", - "maskable-icon": "Maskable (Homescreen) Icon", - "maskable-icon.help": "Recommended size and format: 512x512, PNG format only. If no maskable icon is specified, NodeBB will fall back to the Touch Icon.", - "outgoing-links": "לינקים חיצוניים", - "outgoing-links.warning-page": "Use Outgoing Links Warning Page", - "search": "Search", - "search-default-in": "Search In", - "search-default-in-quick": "Quick Search In", - "search-default-sort-by": "Sort by", - "outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page", - "site-colors": "Site Color Metadata", + "touch-icon.help": "סמליל דף אינטרנט מופיע כאשר מישהו מסמן את דף האינטרנט שלך או מוסיף את דף האינטרנט שלך למסך הבית שלו, גודל ותבנית מומלצים: 512x512, תבנית PNG בלבד. אם לא הוגדר סמליל דף אינטרנט, NodeBB יחזור להשתמש בסמליל הפבאייקון.", + "maskable-icon": "סמליל הניתן להסוואה (במסך הבית)", + "maskable-icon.help": "סמליל הניתן להסוואה מופיע בדף הבית של הסוללרי, זהו תמונה אטומה עם מעט ריפוד שהיישום דף הבית שלך יוכל לחתוך אחר כך לצורה ולגודל הרצוי. עדיף לא להסתמך על צורה מסוימת, מכיוון שהצורה שנבחרה בסופו של דבר יכולה להשתנות לפי סוגי מסך בית ופלטפורמה. גודל ותבנית מומלצים: 512x512, תבנית PNG בלבד. אם לא הוגדר אייקון הניתן להסוואה, NodeBB יחזור להשתמש בסמליל דף האינטרנט.", + "outgoing-links": "קישורים חיצוניים", + "outgoing-links.warning-page": "השתמש בדף האזהרה לקישורים יוצאים", + "search": "חיפוש", + "search-default-in": "חפש ב", + "search-default-in-quick": "חיפוש מהיר ב", + "search-default-sort-by": "מיין לפי", + "outgoing-links.whitelist": "תחומים לרשימה הלבנה לעקיפת דף האזהרה", + "site-colors": "מטה-נתונים של צבע אתר", "theme-color": "צבע ערכת נושא", "background-color": "צבע רקע", - "background-color-help": "Color used for splash screen background when website is installed as a PWA", - "undo-timeout": "Undo Timeout", - "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", + "background-color-help": "צבע המשמש לרקע של מסך פתיחה כאשר אתר האינטרנט מותקן כ-PWA", + "undo-timeout": "פסק זמן לביטול", + "undo-timeout-help": "לפעולות מסוימות, כמו העברת נושאים, יאופשרו ביטול הפעולה במסגרת זמן מסוימת. הגדר ל- 0 כדי להשבית לחלוטין את האפשרות.", "topic-tools": "כלי נושא" -} \ No newline at end of file +} diff --git a/public/language/he/admin/settings/notifications.json b/public/language/he/admin/settings/notifications.json index b11b8a00c9..5e25d54217 100644 --- a/public/language/he/admin/settings/notifications.json +++ b/public/language/he/admin/settings/notifications.json @@ -3,5 +3,5 @@ "welcome-notification": "הודעת ברוכים הבאים", "welcome-notification-link": "קישור הודעת ברוכים הבאים", "welcome-notification-uid": "הודעת ברוכים הבאים למשתמש (UID)", - "post-queue-notification-uid": "Post Queue User (UID)" + "post-queue-notification-uid": "רשום משתמש בתור (UID)" } \ No newline at end of file diff --git a/public/language/he/admin/settings/user.json b/public/language/he/admin/settings/user.json index 374648e4ca..519cbaaa7e 100644 --- a/public/language/he/admin/settings/user.json +++ b/public/language/he/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "כבוי", "digest-freq.daily": "יומי", "digest-freq.weekly": "שבועי", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "חודשי", "email-chat-notifs": "שלח לי הודעה למייל כאשר הודעת צ'אט נשלחה אלי בזמן שאינני מחובר", "email-post-notif": "שלח לי הודעה למייל כאשר תגובות חדשות פורסמו לנושאים שאני עוקב אחריהם", diff --git a/public/language/he/error.json b/public/language/he/error.json index b93f4c9a23..cdfa227e31 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -25,19 +25,20 @@ "invalid-event": "אירוע לא תקין: %1", "local-login-disabled": "מערכת הכניסה המקומית הושבתה עבור חשבונות שאינם מורשים.", "csrf-invalid": "אין באפשרותנו לחבר אותך למערכת, מכיוון שעבר זמן רב מידי. אנא נסה שנית.", - "invalid-path": "Invalid path", - "folder-exists": "Folder exists", + "invalid-path": "נתיב שגוי", + "folder-exists": "התיקיה קיימת", "invalid-pagination-value": "ערך דף לא חוקי, חייב להיות לפחות %1 ולא מעל %2", "username-taken": "שם משתמש תפוס", - "email-taken": "כתובת אימייל תפוסה", - "email-nochange": "כתובת אימייל שהוזן זהה לאימייל שנמצא כבר", - "email-invited": "כבר נשלחה הזמנה למייל זה", - "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", + "email-taken": "כתובת דוא\"ל תפוסה", + "email-nochange": "כתובת דוא\"ל שהוזן זהה לדוא\"ל שנמצא כבר", + "email-invited": "כבר נשלחה הזמנה לדוא\"ל זה", + "email-not-confirmed": "פרסום בקטגוריות או בנושאים מסוימים מופעל רק לאחר אישור הדוא\"ל שלך, אנא לחץ כאן כדי לשלוח אימות לדוא\"ל שלך.", "email-not-confirmed-chat": "אין באפשרותך לשוחח עד שהדוא\"ל שלך יאושר, אנא לחץ כאן כדי לאשר את הדוא\"ל שלך.", - "email-not-confirmed-email-sent": "האימייל שלך עדין לא אושר. אנא בדוק בתיבת הדואר בנוגע לאישור האימייל שנשלח לך על ידנו. לא תוכל לכתוב פוסטים ולהשתמש בצ'אט לפני אימות המייל שלך.", - "no-email-to-confirm": "בחשבונך לא הוגדר אימייל. כתובת אימייל נחוץ לשחזור חשבון. אנא לחץ כאן כדי להכניס דוא\"ל.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "למשתמש \"%1\" לא הוגדר כתובת דוא\"ל.", "email-confirm-failed": "לא הצלחנו לאשר את הדוא\"ל שלך, תנסה שוב אחר כך", - "confirm-email-already-sent": "מייל האישור כבר נשלח, אנא המתן %1 דקות כדי לשלוח מייל נוסף.", + "confirm-email-already-sent": "דוא\"ל האישור כבר נשלח, אנא המתן %1 דקות כדי לשלוח דוא\"ל נוסף.", "sendmail-not-found": "תוכנת sendmail לא נמצאה, נא בדוק שהיא מותקת וניתנת להרצה על ידי המשתמש שמריץ את NodeBB.", "digest-not-enabled": "משתמש זה ביטל את התקצירים, או שברירת המחדל של המערכת היא לכבות תקצירים.", "username-too-short": "שם משתמש קצר מדי", @@ -103,6 +104,7 @@ "already-bookmarked": "כבר הוספת פוסט זה לרשימת המסומנים", "already-unbookmarked": "כבר הסרת פוסט זה מרשימת המסומנים", "cant-ban-other-admins": "אינך יכול לחסום מנהלים אחרים!", + "cant-make-banned-users-admin": "לא ניתן להפוך משתמשים מורחקים למנהלים.", "cant-remove-last-admin": "אתה המנהל היחיד. הוסף משתמש אחר לניהול לפני שאתה מוריד את עצמך מניהול", "account-deletion-disabled": "מחיקת החשבון מושבתת", "cant-delete-admin": "משתמש זה מוגדר כמנהל. על מנת למחוק את המשתמש, עליך להסיר קודם את גישותיו.", @@ -195,15 +197,15 @@ "plugin-not-whitelisted": "לא ניתן להתקין את התוסף – ניתן להתקין דרך הניהול רק תוספים שנמצאים ברשימה הלבנה של מנהל החבילות של NodeBB.", "topic-event-unrecognized": "אירוע הנושא '%1' לא מזוהה", "cant-set-child-as-parent": "לא ניתן להגדיר קטגוריה משנה לקטגוריית אב", - "cant-set-self-as-parent": "Can't set self as parent category", - "api.master-token-no-uid": "A master token was received without a corresponding `_uid` in the request body", - "api.400": "Something was wrong with the request payload you passed in.", + "cant-set-self-as-parent": "לא ניתן להגדיר את עצמי כקטגוריית אב", + "api.master-token-no-uid": "token ראשי התקבל ללא corresponding `_uid` בגוף הבקשה", + "api.400": "משהו לא היה בסדר עם בקשת ה-payload שהעברת.", "api.401": "לא נמצא סשן התחברות פעיל. נא להתחבר ולנסות שוב.", "api.403": "אינך מורשה לבצע את החיוג", - "api.404": "Invalid API call", - "api.426": "HTTPS is required for requests to the write api, please re-send your request via HTTPS", + "api.404": "קריאת API שגויה", + "api.426": "HTTPS נדרש לבקשות ל-API של הכתיבה, אנא שלח מחדש את בקשתך באמצעות HTTPS", "api.429": "יותר מידי בקשות, אנא נסה שוב מאוחר יותר", - "api.500": "An unexpected error was encountered while attempting to service your request.", - "api.501": "The route you are trying to call is not implemented yet, please try again tomorrow", - "api.503": "The route you are trying to call is not currently available due to a server configuration" + "api.500": "שגיאה בלתי צפויה אירעה בעת ניסיון להגיש את בקשתך.", + "api.501": "הנתיב אליו אתה מנסה לתקשר עדיין לא מיושם, אנא נסה שוב מחר", + "api.503": "הנתיב אליו אתה מנסה לתקשר אינו זמין כעת עקב תצורת שרת" } \ No newline at end of file diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index 93ed6c8e7a..c00e4be904 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/notifications.json @@ -4,7 +4,7 @@ "see_all": "צפה בכל ההתראות", "mark_all_read": "סמן את כל ההתראות כנקראו", "back_to_home": "חזרה ל%1", - "outgoing_link": "לינק", + "outgoing_link": "קישור יוצא", "outgoing_link_message": "אתה עוזב עכשיו את %1", "continue_to": "המשך ל %1", "return_to": "חזור ל %1", diff --git a/public/language/he/top.json b/public/language/he/top.json new file mode 100644 index 0000000000..c942bb51a7 --- /dev/null +++ b/public/language/he/top.json @@ -0,0 +1,4 @@ +{ + "title": "הכי פופולארי", + "no_top_topics": "אין כותרות פופולאריות" +} \ No newline at end of file diff --git a/public/language/he/topic.json b/public/language/he/topic.json index 964c73d19c..fecfaa678a 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -20,8 +20,8 @@ "login-to-view": "🔒 התחבר בכדי לצפות", "edit": "עריכה", "delete": "מחק", - "delete-event": "Delete Event", - "delete-event-confirm": "Are you sure you want to delete this event?", + "delete-event": "מחיקת ארוע", + "delete-event-confirm": "האם אתה בטוח שאתה רוצה למחוק אירוע זה?", "purge": "מחק לצמיתות", "restore": "שחזר", "move": "העבר", @@ -45,9 +45,9 @@ "unpinned-by": "נעיצה הוסרה על ידי", "deleted-by": "נמחק על ידי", "restored-by": "שוחזר על ידי", - "moved-from-by": "Moved from %1 by", + "moved-from-by": "הועבר מ %1 ע\"י", "queued-by": "הפוסט ממתין לאישור →", - "backlink": "Referenced by", + "backlink": "הוזכר על-ידי", "bookmark_instructions": "לחץ כאן בכדי לחזור לפוסט האחרון שקראת בנושא הזה.", "flag-post": "דווח על פוסט זה", "flag-user": "דווח על משתמש זה", @@ -139,6 +139,7 @@ "composer.handle_placeholder": "הזן את שמך / כינוי שלך כאן", "composer.discard": "ביטול", "composer.submit": "שלח", + "composer.additional-options": "Additional Options", "composer.schedule": "תזמן", "composer.replying_to": "מגיב ל%1", "composer.new_topic": "נושא חדש", @@ -159,7 +160,7 @@ "newest_to_oldest": "מהחדש לישן", "most_votes": "הכי הרבה הצבעות", "most_posts": "הכי הרבה פוסטים", - "most_views": "Most Views", + "most_views": "הכי הרבה צפיות", "stale.title": "ליצור נושא חדש במקום זאת?", "stale.warning": "הנושא בו אתה מגיב הוא די ישן. האם ברצונך לפתוח נושא חדש, ולהזכיר נושא זה בתגובתך?", "stale.create": "צור נושא חדש", @@ -179,5 +180,5 @@ "timeago_earlier": "לפני %1 ", "first-post": "פוסט ראשון", "last-post": "פוסט אחרון", - "post-quick-reply": "Post quick reply" + "post-quick-reply": "רשום תשובה מהירה" } \ No newline at end of file diff --git a/public/language/he/user.json b/public/language/he/user.json index a8c49d6f0c..47dc53acd1 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -94,11 +94,12 @@ "digest_off": "כבוי", "digest_daily": "יומי", "digest_weekly": "שבועי", + "digest_biweekly": "דו שבועי", "digest_monthly": "חודשי", "has_no_follower": "למשתמש זה אין עוקבים :(", "follows_no_one": "משתמש זה אינו עוקב אחרי אחרים :(", "has_no_posts": "המשתמש טרם יצר פוסטים כלשהם.", - "has_no_best_posts": "This user does not have any upvoted posts yet.", + "has_no_best_posts": "למשתמש זה אין עדיין פוסטים נבחרים.", "has_no_topics": "המשתמש טרם יצר נושאים כלשהם.", "has_no_watched_topics": "המשתמש טרם צפה בנושאים כלשהם.", "has_no_ignored_topics": "המשתמש הזה טרם התעלם מנושאים.", diff --git a/public/language/hr/admin/advanced/events.json b/public/language/hr/admin/advanced/events.json index 3d741f3d17..f648110f4d 100644 --- a/public/language/hr/admin/advanced/events.json +++ b/public/language/hr/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Nema događaja", "control-panel": "Kontrolna ploča događanja", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/hr/admin/dashboard.json b/public/language/hr/admin/dashboard.json index 7ce75d8880..8072389569 100644 --- a/public/language/hr/admin/dashboard.json +++ b/public/language/hr/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Ukupno", "active-users.connections": "Veze", - "anonymous-registered-users": "Anonimni vs Registrirani korisnici", - "anonymous": "Anomiman", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registriran", "user-presence": "Korisnik prisutan", @@ -68,6 +68,7 @@ "unread": "Nepročitano", "high-presence-topics": "Teme visoke prisutnosti", + "popular-searches": "Popular Searches", "graphs.page-views": "Pregled stranica", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Jedninstveni posjetitelji", "graphs.registered-users": "Registrirani korisnici", - "graphs.anonymous-users": "Anonimni korisnici", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/hr/admin/general/dashboard.json b/public/language/hr/admin/general/dashboard.json deleted file mode 100644 index e063550936..0000000000 --- a/public/language/hr/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Promet foruma", - "page-views": "Broj pogleda", - "unique-visitors": "Jedinstveni posjetitelji", - "new-users": "New Users", - "posts": "Objave", - "topics": "Teme", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Sve vrijeme", - - "updates": "Nadogradnje", - "running-version": "Ovo je verzija NodeBB v%1.", - "keep-updated": "Uvijek se pobrinite da je Vaš NodeBB na najnovijoj verziji za najnovije sigurnosne mjere i popravke grešaka.", - "up-to-date": "

Vaš NodeBB je na najnovijoj verziji

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

Ovo je pre-release verzija NodeBB. Nenamjerne greške su moguće.

", - "running-in-development": "Forum je u razvojnom stanju. Forum bi mogao biti otvoren za napade; Molimo kontaktirajte vašeg sistemskog administratora", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Obavijest", - "restart-not-required": "Restart nije potreban", - "restart-required": "Potrebno je ponovno pokretanje", - "search-plugin-installed": "Dodatak pretrage instaliran", - "search-plugin-not-installed": "Dodatak pretrage nije instaliran", - "search-plugin-tooltip": "Instalirajte dodatak za pretragu sa stranice za upravljanje dodatcima da aktivirate mogućnost pretrage foruma.", - - "control-panel": "Kontrola sistema", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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": "Održavanje", - "maintenance-mode-title": "Postavite mod za održavanje foruma", - "realtime-chart-updates": "Ažuriranja u stvarnom vremenu", - - "active-users": "Aktivni korisnici", - "active-users.users": "Korisnici", - "active-users.guests": "Gosti", - "active-users.total": "Ukupno", - "active-users.connections": "Veze", - - "anonymous-registered-users": "Anonimni vs Registrirani korisnici", - "anonymous": "Anomiman", - "registered": "Registriran", - - "user-presence": "Korisnik prisutan", - "on-categories": "Na listi kategorija", - "reading-posts": "Čita objave", - "browsing-topics": "Pretražuj teme", - "recent": "Nedavno", - "unread": "Nepročitano", - - "high-presence-topics": "Teme visoke prisutnosti", - - "graphs.page-views": "Pregled stranica", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Jedninstveni posjetitelji", - "graphs.registered-users": "Registrirani korisnici", - "graphs.anonymous-users": "Anonimni korisnici", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/hr/admin/general/homepage.json b/public/language/hr/admin/general/homepage.json deleted file mode 100644 index 4c4d323a2f..0000000000 --- a/public/language/hr/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Naslovnica", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/hr/admin/general/languages.json b/public/language/hr/admin/general/languages.json deleted file mode 100644 index a20b3c705d..0000000000 --- a/public/language/hr/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Postavke jezika", - "description": "Zadani jezik odlučuje o postavkama jezika za sve korisnike foruma.
.Korisnici mogu sami odabrati jezik na stranici postavki jezika.", - "default-language": "Zadani jezik", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/hr/admin/general/navigation.json b/public/language/hr/admin/general/navigation.json deleted file mode 100644 index 4921e75e6c..0000000000 --- a/public/language/hr/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ikona:", - "change-icon": "promjena", - "route": "Putanja:", - "tooltip": "Napomena:", - "text": "Tekst:", - "text-class": "Text Class: opcija", - "class": "Class: optional", - "id": "ID: opcionalno", - - "properties": "Postavke", - "groups": "Groups:", - "open-new-window": "Otvori u novom prozoru", - - "btn.delete": "Obriši", - "btn.disable": "Onemogući", - "btn.enable": "Omogući", - - "available-menu-items": "Dostupni artikli menija", - "custom-route": "Uobičajna putanja", - "core": "jezgra", - "plugin": "dodatak" -} \ No newline at end of file diff --git a/public/language/hr/admin/general/social.json b/public/language/hr/admin/general/social.json deleted file mode 100644 index b6f1c3ee29..0000000000 --- a/public/language/hr/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Dijeljenje objave", - "info-plugins-additional": "Dodaci mogu dodati dodatne mreže za dijeljenje objava.", - "save-success": "Uspješno spremljene mreže za razmjenu objava!" -} \ No newline at end of file diff --git a/public/language/hr/admin/general/sounds.json b/public/language/hr/admin/general/sounds.json deleted file mode 100644 index 21bf8e26ff..0000000000 --- a/public/language/hr/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Obavijesti", - "chat-messages": "Poruke", - "play-sound": "Pokreni", - "incoming-message": "Dolazna poruka", - "outgoing-message": "Odlazna poruka", - "upload-new-sound": "Učitaj novi zvuk", - "saved": "Postavke spremljene" -} \ No newline at end of file diff --git a/public/language/hr/admin/manage/digest.json b/public/language/hr/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/hr/admin/manage/digest.json +++ b/public/language/hr/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/hr/admin/manage/users.json b/public/language/hr/admin/manage/users.json index 5561e6e901..b91a04252b 100644 --- a/public/language/hr/admin/manage/users.json +++ b/public/language/hr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "korisničko ime", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputacija", diff --git a/public/language/hr/admin/menu.json b/public/language/hr/admin/menu.json index dcb1868922..4dd18a9204 100644 --- a/public/language/hr/admin/menu.json +++ b/public/language/hr/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Glavno", "section-manage": "Upravljanje", diff --git a/public/language/hr/admin/settings/email.json b/public/language/hr/admin/settings/email.json index ba6886cba9..48d010cef5 100644 --- a/public/language/hr/admin/settings/email.json +++ b/public/language/hr/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Ime prikazano u dolaznom emailu.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/hr/admin/settings/general.json b/public/language/hr/admin/settings/general.json index c3d16f6f39..56f975324f 100644 --- a/public/language/hr/admin/settings/general.json +++ b/public/language/hr/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Naslov stranice", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Ime Vaše zajednice", "title.show-in-header": "Prikaži naslov stranice u zaglavlju", "browser-title": "Naslov pretraživača", @@ -20,9 +20,9 @@ "logo.image": "Slika", "logo.image-placeholder": "Putanja logotipa za zaglavlje foruma", "logo.upload": "Učitaj", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "URL loga stranice", - "logo.url-help": "U slučaju klika na logo,pošalji korisnike na ovu adresu.U slučaju praznog polja,korisnik će biti poslan na index foruma.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt tekst", "log.alt-text-placeholder": "Alternativni tekst za dostupnost", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/hr/admin/settings/user.json b/public/language/hr/admin/settings/user.json index abaddd6cf4..e2f9d018fa 100644 --- a/public/language/hr/admin/settings/user.json +++ b/public/language/hr/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Isključi", "digest-freq.daily": "Dnevno", "digest-freq.weekly": "Tjedno", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mjesečno", "email-chat-notifs": "Pošalji email ukoliko stigne nova poruka dok nisam na mreži", "email-post-notif": "Pošalji email pri odgovoru u teme na koje pratim", diff --git a/public/language/hr/error.json b/public/language/hr/error.json index a95f997f54..df2dd79ccc 100644 --- a/public/language/hr/error.json +++ b/public/language/hr/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Ne možete razgovarati dok Vaš email nije potvrđen. Kliknite ovdje da biste potvrdili svoj email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Nismo u mogućnosti potvrditi Vaš email, pokušajte ponovno kasnije.", "confirm-email-already-sent": "Potvrdni email je poslan, počekajte %1 minuta za ponovni pokušaj.", "sendmail-not-found": "Sendmail nije pronađen, provjerite da li je instaliran?", @@ -103,6 +104,7 @@ "already-bookmarked": "Već ste zabilježili ovu objavu", "already-unbookmarked": "Već ste odbilježili ovu objavu", "cant-ban-other-admins": "Nemožete blokirati ostale administratore!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Vi ste jedini administrator. Dodajte korisnika kao administratora prije nego sebe odjavite kao administratora.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Ukloni administratorske privilegije sa ovog računa prije brisanja.", diff --git a/public/language/hr/top.json b/public/language/hr/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/hr/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/hr/topic.json b/public/language/hr/topic.json index 31110f9f84..c4a5c879e6 100644 --- a/public/language/hr/topic.json +++ b/public/language/hr/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Odbaci", "composer.submit": "Podnesi", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Odgovori na %1", "composer.new_topic": "Nova tema", diff --git a/public/language/hr/user.json b/public/language/hr/user.json index 1d76144f1b..44e9fc7163 100644 --- a/public/language/hr/user.json +++ b/public/language/hr/user.json @@ -94,6 +94,7 @@ "digest_off": "Isključi", "digest_daily": "Dnevno", "digest_weekly": "Tjedno", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mjesečno", "has_no_follower": "Ovaj korisnik nema pratitelja :(.", "follows_no_one": "Ovaj korisnik nikog ne prati :(", diff --git a/public/language/hu/admin/advanced/events.json b/public/language/hu/admin/advanced/events.json index 7dc7fb849b..b824e98cb9 100644 --- a/public/language/hu/admin/advanced/events.json +++ b/public/language/hu/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Nem voltak események", "control-panel": "Esemény vezérlőpult", "delete-events": "Események törlése", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Szűrők", "filters-apply": "Szűrők érvényesítése", "filter-type": "Esemény típus", diff --git a/public/language/hu/admin/dashboard.json b/public/language/hu/admin/dashboard.json index 5d5c00b20f..e02ccff6de 100644 --- a/public/language/hu/admin/dashboard.json +++ b/public/language/hu/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Összesen", "active-users.connections": "Kapcsolatok", - "anonymous-registered-users": "Névtelen vs regisztrált felhasználók", - "anonymous": "Névtelen", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Regisztrált", "user-presence": "Felhasználói jelenlét", @@ -68,6 +68,7 @@ "unread": "Olvasatlan", "high-presence-topics": "Témakörök nagy jelenléttel", + "popular-searches": "Popular Searches", "graphs.page-views": "Oldal megtekintések", "graphs.page-views-registered": "Regisztrált látogatások", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Bot látogatások", "graphs.unique-visitors": "Egyedi látogatók", "graphs.registered-users": "Regisztrált felhasználók", - "graphs.anonymous-users": "Névtelen felhasználók", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Utoljára újraindította:", "no-users-browsing": "Jelenleg nem böngész senki", "back-to-dashboard": "Vissza a vezérlőpultra", "details.no-users": "Nem csatlakozott egy felhasználó sem a kiválasztott időszakban", "details.no-topics": "Nem voltak új témakörök a kiválasztott időszakban", + "details.no-searches": "No searches have been made yet", "details.no-logins": "Nem volt bejelentkezés a kiválasztott időszakban", "details.logins-static": "A NodeBB csak %1 napig menti a munkamenet adatokat és az alábbi táblázat csak a legutóbbi aktív munkameneteket tartalmazza", "details.logins-login-time": "Bejelentkezés ideje" diff --git a/public/language/hu/admin/general/dashboard.json b/public/language/hu/admin/general/dashboard.json deleted file mode 100644 index 1eb1ab359b..0000000000 --- a/public/language/hu/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Fórum forgalma", - "page-views": "Oldal megtekintések", - "unique-visitors": "Egyedi látogatók", - "new-users": "New Users", - "posts": "Hozzászólások", - "topics": "Témakörök", - "page-views-seven": "Az utóbbi 7 napban", - "page-views-thirty": "Az utóbbi 30 napban", - "page-views-last-day": "Az utóbbi 24 órában", - "page-views-custom": "Egyéni dátum tartomány", - "page-views-custom-start": "Tartomény kezdete", - "page-views-custom-end": "Tartomány vége", - "page-views-custom-help": "Adj meg egy dátum tartományt a kívánt oldal megtekintések megtekintéséhez. Ha nem áll rendelkezésre dátumválasztó, az elfogadott formátum ÉÉÉÉ-HH-NN", - "page-views-custom-error": "Kérlek, érvényes dátum tartományt adj meg ÉÉÉÉ-HH-NN formátumban.", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Mindenkori", - - "updates": "Frissítések", - "running-version": "Jelenleg a NodeBB v%1 verzióját futtatod.", - "keep-updated": "Mindig tégy róla, hogy a NodeBB naprakész a legfrissebb biztonsági javítások és hibajavítások végett.", - "up-to-date": "

Naprakész vagy

", - "upgrade-available": "

Kiadásra került egy új verzió (v%1). Vedd fontolóra a NodeBB frissítését.

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Értesítések", - "restart-not-required": "Nem szükséges az újraindítás", - "restart-required": "Újraindítás szükséges", - "search-plugin-installed": "Kereső beépülő telepítve", - "search-plugin-not-installed": "Kereső beépülő nincs telepítve", - "search-plugin-tooltip": "Telepíts egy kereső beépülőt a beépülők oldaláról a keresési funkciók aktiválásához", - - "control-panel": "Rendszervezérlés", - "rebuild-and-restart": "Újraépítés & újraindítás", - "restart": "Újraindítás", - "restart-warning": "A NodeBB újraépítésével ill. újraindításával pár másodpercre elvész minden meglévő kapcsolat.", - "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": "Karbantartási mód", - "maintenance-mode-title": "Kattints ide a NodeBB karbantartási módjának beállításához", - "realtime-chart-updates": "Valós idejű grafikon frissítések ", - - "active-users": "Aktív felhasználók", - "active-users.users": "Felhasználók", - "active-users.guests": "Vendégek", - "active-users.total": "Összesen", - "active-users.connections": "Kapcsolatok", - - "anonymous-registered-users": "Névtelen vs regisztrált felhasználók", - "anonymous": "Névtelen", - "registered": "Regisztrált", - - "user-presence": "Felhasználói jelenlét", - "on-categories": "A kategória listán", - "reading-posts": "Hozzászólásokat olvas", - "browsing-topics": "Témaköröket böngész", - "recent": "Mostanában", - "unread": "Olvasatlan", - - "high-presence-topics": "Témakörök nagy jelenléttel", - - "graphs.page-views": "Oldal megtekintések", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Egyedi látogatók", - "graphs.registered-users": "Regisztrált felhasználók", - "graphs.anonymous-users": "Névtelen felhasználók", - "last-restarted-by": "Utoljára újraindította:", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/hu/admin/general/homepage.json b/public/language/hu/admin/general/homepage.json deleted file mode 100644 index 679ff06af5..0000000000 --- a/public/language/hu/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Kezdőlap", - "description": "Válaszd ki milyen oldal jelenjen meg, amikor a felhasználók fórumod gyökér URL címéhez navigálnak.", - "home-page-route": "Kezdőlap útvonala", - "custom-route": "Egyéni útvonal", - "allow-user-home-pages": "Felhasználói kezdőlapok engedélyezése", - "home-page-title": "A kezdőlap címe (alapértelmezés \"Kezdőlap\")" -} \ No newline at end of file diff --git a/public/language/hu/admin/general/languages.json b/public/language/hu/admin/general/languages.json deleted file mode 100644 index 63de413af4..0000000000 --- a/public/language/hu/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Nyelvi beállítások", - "description": "Az alapértelmezett nyelv meghatározza a nyelvi beállításokat minden fórumot látogató számára.
Ezt az egyes felhasználók felülírhatják fiókjuk beállításaiban.", - "default-language": "Alapértelmezett nyelv", - "auto-detect": "Nyelvi beállítás automatikus észlelése vendégeknek" -} \ No newline at end of file diff --git a/public/language/hu/admin/general/navigation.json b/public/language/hu/admin/general/navigation.json deleted file mode 100644 index 0d96c33984..0000000000 --- a/public/language/hu/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ikon:", - "change-icon": "módosítás", - "route": "Útvonal:", - "tooltip": "Elemleírás:", - "text": "Szöveg:", - "text-class": "Szövegosztály: nem kötelező", - "class": "Class: optional", - "id": "ID: nem kötelező", - - "properties": "Tulajdonságok:", - "groups": "Groups:", - "open-new-window": "Megnyitás új ablakban", - - "btn.delete": "Törlés", - "btn.disable": "Tiltás", - "btn.enable": "Engedélyezés", - - "available-menu-items": "Rendelkezésre álló menüelemek", - "custom-route": "Egyéni útvonal", - "core": "alapvető", - "plugin": "beépülő" -} \ No newline at end of file diff --git a/public/language/hu/admin/general/social.json b/public/language/hu/admin/general/social.json deleted file mode 100644 index ec11bf8035..0000000000 --- a/public/language/hu/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Hozzászólás megosztás", - "info-plugins-additional": "Beépülőkkel további hálózatok adhatók hozzá hozzászólások megosztásához.", - "save-success": "Hozzászólás megosztási rendszerek sikeresen elmentve!" -} \ No newline at end of file diff --git a/public/language/hu/admin/general/sounds.json b/public/language/hu/admin/general/sounds.json deleted file mode 100644 index fc9943fc82..0000000000 --- a/public/language/hu/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Értesítések", - "chat-messages": "Chat üzenetek", - "play-sound": "Lejátszás", - "incoming-message": "Bejövő üzenet", - "outgoing-message": "Kimenő üzenet", - "upload-new-sound": "Új hang feltöltése", - "saved": "Beállítások elmentve" -} \ No newline at end of file diff --git a/public/language/hu/admin/manage/digest.json b/public/language/hu/admin/manage/digest.json index 23f2c9bb91..dced3f927a 100644 --- a/public/language/hu/admin/manage/digest.json +++ b/public/language/hu/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manuális összefoglaló küldés sikeres", "resent-day": "Napi összefoglaló újraküldés sikeres", "resent-week": "Heti összefoglaló újraküldés sikeres", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Havi összefoglaló újraküldés sikeres", "null": "Soha", "manual-run": "Manuális összefoglaló futtatás:", diff --git a/public/language/hu/admin/manage/users.json b/public/language/hu/admin/manage/users.json index 6db8d91d12..71210911d2 100644 --- a/public/language/hu/admin/manage/users.json +++ b/public/language/hu/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "felhasználónév", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "hozzászólások száma", "users.reputation": "hírnév", diff --git a/public/language/hu/admin/menu.json b/public/language/hu/admin/menu.json index e28e561edc..e2329570bb 100644 --- a/public/language/hu/admin/menu.json +++ b/public/language/hu/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Bejelentkezések", "dashboard/users": "Felhasználók", "dashboard/topics": "Témakörök", + "dashboard/searches": "Searches", "section-general": "Általános", "section-manage": "Kezelés", diff --git a/public/language/hu/admin/settings/email.json b/public/language/hu/admin/settings/email.json index 78d4006a01..5206a293fb 100644 --- a/public/language/hu/admin/settings/email.json +++ b/public/language/hu/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Az emailben megjelenített feladói név.", "smtp-transport": "SMTP beállítások", - "smtp-transport.enabled": "Külső email szerver használata email-ek küldéséhez", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Válogathatsz a jól ismert szolgáltatások listájából vagy megadhatsz sajátot.", "smtp-transport.service": "Válassz egy szolgáltatást", "smtp-transport.service-custom": "Egyedi szolgáltatás", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/hu/admin/settings/general.json b/public/language/hu/admin/settings/general.json index dd089c6783..46beeaf4b7 100644 --- a/public/language/hu/admin/settings/general.json +++ b/public/language/hu/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Weboldal címe", "title.short": "Rövid cím", "title.short-placeholder": "Ha nincs rövid cím beállítva, akkor a weboldal címét fogjuk használni", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "A weboldal címre kattintáskor megnyitandó URL", - "title.url-help": "Amikor a cím szövegre kattint egy felhasználó, erre a címre irányítjuk át. Ha üres, akkor a fórum nyitóoldalára küldjük.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "A közösséged neve", "title.show-in-header": "A weboldal címének megjelenítése a fejlécben", "browser-title": "Böngésző cím", @@ -20,9 +20,9 @@ "logo.image": "Kép", "logo.image-placeholder": "A logó elérési útvonala, amit a fórum fejlécében fogunk megjeleníteni", "logo.upload": "Feltöltés", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "A weboldal logójának URL-je", - "logo.url-help": "Amikor a logóra kattint egy felhasználó, erre a címre irányítjuk át. Ha üres, akkor a fórum nyitóoldalára küldjük.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt szöveg", "log.alt-text-placeholder": "Alternatív szöveg", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/hu/admin/settings/user.json b/public/language/hu/admin/settings/user.json index d521d9fe3b..d0b96ca525 100644 --- a/public/language/hu/admin/settings/user.json +++ b/public/language/hu/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Kikapcsolt", "digest-freq.daily": "Napi", "digest-freq.weekly": "Heti", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Havi", "email-chat-notifs": "Email küldése, ha új csevegési üzenet érkezik miközben nem vagyok elérhető", "email-post-notif": "Email küldése, ha válasz érkezik olyan témakörhöz amire feliratkoztam", diff --git a/public/language/hu/error.json b/public/language/hu/error.json index 20ecb8cf9a..5e6a9e604d 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -34,8 +34,9 @@ "email-invited": "Ez az email cím már meg lett hívva", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Nem küldhetsz üzenetet amíg nem erősíted meg az email címed, kattints ide az email cím megerősítéséhez!", - "email-not-confirmed-email-sent": "Az email címed még nem lett megerősítve, kérlek ellenőrizd az email fiókodba érkező leveleket. Amíg nincs az email címed megerősítve addig nem tudsz üzeneteket küldeni valamint bejegyzést közzé tenni.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Nem tudtuk ellenőrizni az e-mail címedet, kérlek próbálkozz később.", "confirm-email-already-sent": "A megerősítéshez szükséges email már el lett küldve, kérlek várj %1 percet az újraküldéshez.", "sendmail-not-found": "A levél küldés végrehajtása nem található, kérlek bizonyosodj meg róla, hogy telepítve van és végrehajtható a felhasználó által NodeBB-t futtatva.", @@ -103,6 +104,7 @@ "already-bookmarked": "Már elmentetted ezt a hozzászólást a könyvjelzők közé", "already-unbookmarked": "Már eltávolítottad ezt a hozzászólást a könyvjelzők közül", "cant-ban-other-admins": "Nem tilthatsz ki másik adminisztrátort!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Te vagy az egyedüli adminisztrátor. Adj hozzá egy másik felhasználót az adminisztrátori szerepkörhöz, hogy levehesd magadról az adminisztrátori rangot", "account-deletion-disabled": "Fiók törlése ki van kapcsolva", "cant-delete-admin": "Vedd el az adminisztrátori jogokat ettől a fióktól mielőtt törölni szeretnéd.", diff --git a/public/language/hu/top.json b/public/language/hu/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/hu/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/hu/topic.json b/public/language/hu/topic.json index 8e39ba268a..dffb769f86 100644 --- a/public/language/hu/topic.json +++ b/public/language/hu/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Adj meg egy nevet/kezelőt", "composer.discard": "Elvet", "composer.submit": "Küldés", + "composer.additional-options": "Additional Options", "composer.schedule": "Időzítés", "composer.replying_to": "Válasz erre: %1", "composer.new_topic": "Új témakör", diff --git a/public/language/hu/user.json b/public/language/hu/user.json index 3d66f7b525..8eed6a7527 100644 --- a/public/language/hu/user.json +++ b/public/language/hu/user.json @@ -94,6 +94,7 @@ "digest_off": "Ki", "digest_daily": "Napi", "digest_weekly": "Heti", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Havi", "has_no_follower": "Ezt a felhasználót nem követi senki :(", "follows_no_one": "Ez a felhasználó nem követ senkit :(", diff --git a/public/language/id/admin/advanced/events.json b/public/language/id/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/id/admin/advanced/events.json +++ b/public/language/id/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/id/admin/dashboard.json b/public/language/id/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/id/admin/dashboard.json +++ b/public/language/id/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/id/admin/general/dashboard.json b/public/language/id/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/id/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/id/admin/general/homepage.json b/public/language/id/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/id/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/id/admin/general/languages.json b/public/language/id/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/id/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/id/admin/general/navigation.json b/public/language/id/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/id/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/id/admin/general/social.json b/public/language/id/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/id/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/id/admin/general/sounds.json b/public/language/id/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/id/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/id/admin/manage/digest.json b/public/language/id/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/id/admin/manage/digest.json +++ b/public/language/id/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/id/admin/manage/users.json b/public/language/id/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/id/admin/manage/users.json +++ b/public/language/id/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/id/admin/menu.json b/public/language/id/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/id/admin/menu.json +++ b/public/language/id/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/id/admin/settings/email.json b/public/language/id/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/id/admin/settings/email.json +++ b/public/language/id/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/id/admin/settings/general.json b/public/language/id/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/id/admin/settings/general.json +++ b/public/language/id/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/id/admin/settings/user.json b/public/language/id/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/id/admin/settings/user.json +++ b/public/language/id/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/id/error.json b/public/language/id/error.json index 3bc6e19b51..b1d2322af6 100644 --- a/public/language/id/error.json +++ b/public/language/id/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Kamu tidak dapat ban admin lainnya!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/id/top.json b/public/language/id/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/id/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/id/topic.json b/public/language/id/topic.json index 700abd5285..8668e37499 100644 --- a/public/language/id/topic.json +++ b/public/language/id/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Buang", "composer.submit": "Kirim", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Membalas ke %1", "composer.new_topic": "Topik Baru", diff --git a/public/language/id/user.json b/public/language/id/user.json index 7bd0adeca9..58172e680a 100644 --- a/public/language/id/user.json +++ b/public/language/id/user.json @@ -94,6 +94,7 @@ "digest_off": "Off", "digest_daily": "Harian", "digest_weekly": "Mingguan", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Bulanan", "has_no_follower": "User ini tidak memiliki pengikut :(", "follows_no_one": "User ini tidak mengikuti seorangpun :(", diff --git a/public/language/it/admin/advanced/events.json b/public/language/it/admin/advanced/events.json index 062fb122e8..6f202cbdb1 100644 --- a/public/language/it/admin/advanced/events.json +++ b/public/language/it/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Non ci sono eventi", "control-panel": "Pannello di controllo eventi", "delete-events": "Elimina eventi", + "confirm-delete-all-events": "Sei sicuro di voler eliminare tutti gli eventi registrati?", "filters": "Filtri", "filters-apply": "Applica filtri", "filter-type": "Tipo evento", diff --git a/public/language/it/admin/dashboard.json b/public/language/it/admin/dashboard.json index 121ab8e291..329c11dd7c 100644 --- a/public/language/it/admin/dashboard.json +++ b/public/language/it/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Totale", "active-users.connections": "Connessioni", - "anonymous-registered-users": "Anonimi vs Utenti Registrati", - "anonymous": "Anonimi", + "guest-registered-users": "Ospite vs Utenti Registrati", + "guest": "Ospite", "registered": "Registrati", "user-presence": "Presenza utente", @@ -68,6 +68,7 @@ "unread": "Non letto", "high-presence-topics": "Alta presenza discussioni", + "popular-searches": "Ricerche popolari", "graphs.page-views": "Pagine viste", "graphs.page-views-registered": "Pagine viste Registrati", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Pagine viste Bot", "graphs.unique-visitors": "Visitatori Unici", "graphs.registered-users": "Utenti Registrati", - "graphs.anonymous-users": "Utenti Anonimi", + "graphs.guest-users": "Utenti ospiti", "last-restarted-by": "Ultimo riavvio di", "no-users-browsing": "Nessun utente sta navigando", "back-to-dashboard": "Torna alla dashboard", "details.no-users": "Nessun utente si è iscritto nell'arco di tempo selezionato", "details.no-topics": "Nessuna discussione è stata postata nell'arco di tempo selezionato", + "details.no-searches": "Nessuna ricerca è ancora stata fatta", "details.no-logins": "Non sono stati registrati accessi nell'arco di tempo selezionato", "details.logins-static": "NodeBB salva solo i dati di sessione per %1 giorni, quindi la tabella qui sotto mostrerà solo le sessioni attive più recenti", "details.logins-login-time": "Tempo di accesso" diff --git a/public/language/it/admin/general/dashboard.json b/public/language/it/admin/general/dashboard.json deleted file mode 100644 index 5ae092ffd7..0000000000 --- a/public/language/it/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Traffico Forum", - "page-views": "Pagine viste", - "unique-visitors": "Visitatori Unici", - "new-users": "Nuovi utenti", - "posts": "Post", - "topics": "Discussioni", - "page-views-seven": "Ultimi 7 giorni", - "page-views-thirty": "Ultimi 30 giorni", - "page-views-last-day": "Ultime 24 ore", - "page-views-custom": "Intervallo data personalizzato", - "page-views-custom-start": "Inizio intervallo", - "page-views-custom-end": "Fine intervallo", - "page-views-custom-help": "Immettere un intervallo di date, delle pagine viste, che si desidera visualizzare. Se non è disponibile un selezionatore di date, il formato accettato è il seguente YYYY-MM-DD", - "page-views-custom-error": "Si prega di inserire un intervallo di date valido nel formato YYYY-MM-DD", - - "stats.yesterday": "Ieri", - "stats.today": "Oggi", - "stats.last-week": "Ultima settimana", - "stats.this-week": "Questa settimana", - "stats.last-month": "Ultimo mese", - "stats.this-month": "Questo mese", - "stats.all": "Sempre", - - "updates": "Aggiornamenti", - "running-version": "Stai eseguendo NodeBB v%1.", - "keep-updated": "Assicurati sempre che il tuo NodeBB sia aggiornato con le ultime patch di sicurezza e correzioni per bug.", - "up-to-date": "

Seiaggiornato

", - "upgrade-available": "

È stata rilasciata una nuova versione (v%1). Considera di aggiornare il tuo NodeBB.

", - "prerelease-upgrade-available": "

Questa è una versione pre-release sorpassata di NodeBB. È stata rilasciata una nuova versione (v%1). Considerare di aggiornare il tuo NodeBB.

", - "prerelease-warning": "

Questa è una versione pre-release di NodeBB. Possono verificarsi bug non intenzionali.

", - "running-in-development": "Forum è in esecuzione in modalità sviluppo. Il forum potrebbe essere aperto a potenziali vulnerabilità; si prega di contattare il proprio amministratore di sistema.", - "latest-lookup-failed": "

Ricerca dell'ultima versione disponibile di NodeBB non riuscita

", - - "notices": "Annunci", - "restart-not-required": "Riavvio non richiesto", - "restart-required": "Riavvio richiesto", - "search-plugin-installed": "Ricerca Plugin installato", - "search-plugin-not-installed": "Ricerca Plugin non installato", - "search-plugin-tooltip": "Installa un plugin di ricerca dalla pagina plugin per attivare la funzionalità di ricerca", - - "control-panel": "Controllo sistema", - "rebuild-and-restart": "Riorganizza & Riavvia", - "restart": "Riavvia", - "restart-warning": "Riorganizzando o Riavviando il tuo NodeBB cadranno tutte le connessioni esistenti per alcuni secondi.", - "restart-disabled": "La Riorganizzazione e il Riavvio del tuo NodeBB sono stati disabilitati in quanto non sembra che tu lo stia eseguendo tramite il demone appropriato.", - "maintenance-mode": "Modalità Manutenzione", - "maintenance-mode-title": "Clicca qui per impostare la modalità di manutenzione per NodeBB", - "realtime-chart-updates": "Aggiornamento grafici in tempo reale", - - "active-users": "Utenti Attivi", - "active-users.users": "Utenti", - "active-users.guests": "Ospiti", - "active-users.total": "Totale", - "active-users.connections": "Connessioni", - - "anonymous-registered-users": "Anonimi vs Utenti Registrati", - "anonymous": "Anonimi", - "registered": "Registrati", - - "user-presence": "Presenza utente", - "on-categories": "Nella lista delle categorie", - "reading-posts": "Lettura post", - "browsing-topics": "Navigazione discussioni", - "recent": "Recenti", - "unread": "Non letto", - - "high-presence-topics": "Alta presenza discussioni", - - "graphs.page-views": "Pagine viste", - "graphs.page-views-registered": "Pagine viste Registrati", - "graphs.page-views-guest": "Pagine viste Ospite", - "graphs.page-views-bot": "Pagine viste Bot", - "graphs.unique-visitors": "Visitatori Unici", - "graphs.registered-users": "Utenti Registrati", - "graphs.anonymous-users": "Utenti Anonimi", - "last-restarted-by": "Ultimo riavvio di", - "no-users-browsing": "Nessun utente sta navigando" -} diff --git a/public/language/it/admin/general/homepage.json b/public/language/it/admin/general/homepage.json deleted file mode 100644 index 93c5b3e964..0000000000 --- a/public/language/it/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Pagina Iniziale", - "description": "Scegliere quale pagina visualizzare quando gli utenti navigano all'URL principale del forum.", - "home-page-route": "Percorso Pagina Iniziale", - "custom-route": "Percorso personalizzato", - "allow-user-home-pages": "Consenti Pagina Iniziale Utente", - "home-page-title": "Titolo della pagina iniziale (impostazione predefinita \"Home\")" -} \ No newline at end of file diff --git a/public/language/it/admin/general/languages.json b/public/language/it/admin/general/languages.json deleted file mode 100644 index 321d12f8e4..0000000000 --- a/public/language/it/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Impostazioni lingua", - "description": "La lingua predefinita determina le impostazioni della lingua per tutti gli utenti che visitano il tuo forum.
I singoli utenti possono sovrascrivere la lingua predefinita nella pagina delle impostazioni dell'account.", - "default-language": "Lingua predefinita", - "auto-detect": "Rilevazione automatica della lingua impostata per gli Ospiti" -} \ No newline at end of file diff --git a/public/language/it/admin/general/navigation.json b/public/language/it/admin/general/navigation.json deleted file mode 100644 index 04cd16e1a6..0000000000 --- a/public/language/it/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icona:", - "change-icon": "modifica", - "route": "Percorso:", - "tooltip": "Suggerimento:", - "text": "Testo:", - "text-class": "Classe Testo: opzionale", - "class": "Classe: opzionale", - "id": "ID: opzionale", - - "properties": "Proprietà:", - "groups": "Gruppi:", - "open-new-window": "Apri in una nuova finestra", - - "btn.delete": "Elimina", - "btn.disable": "Disabilita", - "btn.enable": "Abilita", - - "available-menu-items": "Voci di Menu disponibili", - "custom-route": "Percorso personalizzato", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/it/admin/general/social.json b/public/language/it/admin/general/social.json deleted file mode 100644 index 0a2eeb5181..0000000000 --- a/public/language/it/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Condivisione Post", - "info-plugins-additional": "I plugin possono aggiungere reti aggiuntive per la condivisione dei post.", - "save-success": "Salvato con successo Reti Condivisione Post!" -} \ No newline at end of file diff --git a/public/language/it/admin/general/sounds.json b/public/language/it/admin/general/sounds.json deleted file mode 100644 index 0392f2954b..0000000000 --- a/public/language/it/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifiche", - "chat-messages": "Messaggi di chat", - "play-sound": "Play", - "incoming-message": "Messaggio in arrivo", - "outgoing-message": "Messaggio in uscita", - "upload-new-sound": "Carica nuovo suono", - "saved": "Impostazioni salvate" -} \ No newline at end of file diff --git a/public/language/it/admin/manage/categories.json b/public/language/it/admin/manage/categories.json index 5166ed1b90..b46897636f 100644 --- a/public/language/it/admin/manage/categories.json +++ b/public/language/it/admin/manage/categories.json @@ -12,7 +12,7 @@ "ext-link": "Link esterni", "subcategories-per-page": "Sottocategorie per pagina", "is-section": "Tratta questa categoria come una sezione", - "post-queue": "Post in attesa", + "post-queue": "Coda post", "tag-whitelist": "Whitelist tag", "upload-image": "Caricamento Immagine", "delete-image": "Rimuove", diff --git a/public/language/it/admin/manage/digest.json b/public/language/it/admin/manage/digest.json index 7f1af991a5..9e66d7500c 100644 --- a/public/language/it/admin/manage/digest.json +++ b/public/language/it/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Invio del riepilogo manuale completato", "resent-day": "Rinvio riepilogo giornaliero", "resent-week": "Rinvio del riepilogo settimanale", + "resent-biweek": "Re invio riepilogo bisettimanale", "resent-month": "Rinvio del riepilogo mensile", "null": "Mai", "manual-run": "Esecuzione riepilogo manuale:", diff --git a/public/language/it/admin/manage/registration.json b/public/language/it/admin/manage/registration.json index 68e491a73d..11d0329b87 100644 --- a/public/language/it/admin/manage/registration.json +++ b/public/language/it/admin/manage/registration.json @@ -1,6 +1,6 @@ { - "queue": "Attesa", - "description": "Non ci sono utenti in attesa di registrazione.
Per abilitare questa funzione, vai in Impostazioni → Utente → Registrazione Utente e imposta Tipo Registrazione su \"Approvazione Amministratore\".", + "queue": "Coda", + "description": "Non ci sono utenti nella coda di registrazione.
Per abilitare questa funzione, vai in Impostazioni → Utente → Registrazione Utente e imposta Tipo Registrazione su \"Approvazione Amministratore\".", "list.name": "Nome", "list.email": "Email", diff --git a/public/language/it/admin/manage/users.json b/public/language/it/admin/manage/users.json index 9d08cf4257..ad076e6a89 100644 --- a/public/language/it/admin/manage/users.json +++ b/public/language/it/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "id utente", "users.username": "username", "users.email": "email", + "users.no-email": "(nessuna email)", "users.ip": "IP", "users.postcount": "numero di post", "users.reputation": "reputazione", diff --git a/public/language/it/admin/menu.json b/public/language/it/admin/menu.json index 1148c9b67d..8851052e87 100644 --- a/public/language/it/admin/menu.json +++ b/public/language/it/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Accessi", "dashboard/users": "Utenti", "dashboard/topics": "Discussioni", + "dashboard/searches": "Ricerche", "section-general": "Generale", "section-manage": "Gestisci", @@ -12,8 +13,8 @@ "manage/tags": "Tabs", "manage/users": "Utenti", "manage/admins-mods": "Amministratori e Moderatori", - "manage/registration": "Attesa di registrazione", - "manage/post-queue": "Post in attesa", + "manage/registration": "Coda di registrazione", + "manage/post-queue": "Coda post", "manage/groups": "Gruppi", "manage/ip-blacklist": "Lista degli IP bloccati", "manage/uploads": "Uploads", diff --git a/public/language/it/admin/settings/email.json b/public/language/it/admin/settings/email.json index ab40938b1c..b203c44bfb 100644 --- a/public/language/it/admin/settings/email.json +++ b/public/language/it/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Il nome da visualizzare nell'email.", "smtp-transport": "Trasporto SMTP", - "smtp-transport.enabled": "Utilizza un server di posta elettronica esterno per inviare le email", + "smtp-transport.enabled": "Abilita trasporto SMTP", "smtp-transport-help": "Puoi selezionare da un elenco di servizi noti o inserirne uno personalizzato.", "smtp-transport.service": "Seleziona un servizio", "smtp-transport.service-custom": "Servizio personalizzato", @@ -40,5 +40,7 @@ "require-email-address": "Richiedere ai nuovi utenti di specificare un indirizzo email", "require-email-address-warning": "Per impostazione predefinita, gli utenti possono rinunciare a inserire un indirizzo email. Abilitare questa opzione significa che devono inserire un indirizzo email per procedere con la registrazione. Non assicura che l'utente inserisca un indirizzo email reale, e nemmeno un indirizzo che possiede.", "include-unverified-emails": "Invia email a destinatari che non hanno confermato esplicitamente le loro email", - "include-unverified-warning": "Per impostazione predefinita, gli utenti con email associate al loro account sono già stati verificati, ma ci sono situazioni in cui ciò non è vero (ad esempio accessi SSO, vecchi utenti, ecc.). Abilita questa impostazione a tuo rischio e pericolo – l'invio di email a indirizzi non verificati può essere una violazione delle leggi regionali anti-spam." -} \ No newline at end of file + "include-unverified-warning": "Per impostazione predefinita, gli utenti con email associate al loro account sono già stati verificati, ma ci sono situazioni in cui ciò non è vero (ad esempio accessi SSO, vecchi utenti, ecc.). Abilita questa impostazione a tuo rischio e pericolo – l'invio di email a indirizzi non verificati può essere una violazione delle leggi regionali anti-spam.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/it/admin/settings/general.json b/public/language/it/admin/settings/general.json index 803565154e..c556adf46c 100644 --- a/public/language/it/admin/settings/general.json +++ b/public/language/it/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Titolo Sito", "title.short": "Titolo abbreviato", "title.short-placeholder": "Se non specifichi un titolo abbreviato, verrà utilizzato il titolo completo", - "title.url": "URL", + "title.url": "Link URL Titolo", "title.url-placeholder": "L'URL del titolo del sito", - "title.url-help": "Quando si clicca sul titolo, invia gli utenti a questo indirizzo. Se lasciato vuoto, l'utente sarà inviato all'indice del forum.", + "title.url-help": "Quando il titolo viene cliccato, invia gli utenti a questo indirizzo. Se lasciato vuoto, l'utente sarà inviato all'indice del forum.
Nota: Questo non è l'URL esterno usato nelle email, ecc. Questo è impostato dalla proprietà url in config.json", "title.name": "Il Nome della Comunità", "title.show-in-header": "Mostra Titolo Sito nell'Intestazione", "browser-title": "Titolo Browser", @@ -20,9 +20,9 @@ "logo.image": "Immagine", "logo.image-placeholder": "Percorso del logo da visualizzare sull'intestazione del forum", "logo.upload": "Carica", - "logo.url": "URL", + "logo.url": "Link URL Logo", "logo.url-placeholder": "L'URL del logo del sito", - "logo.url-help": "Quando si fa clic sul logo, invia gli utenti a questo indirizzo. Se lasciato vuoto, l'utente sarà inviato all'indice del forum.", + "logo.url-help": "Quando il logo viene cliccato, invia gli utenti a questo indirizzo. Se lasciato vuoto, l'utente sarà inviato all'indice del forum.
Nota: Questo non è l'URL esterno usato nelle email, ecc. Questo è impostato dalla proprietà url in config.json", "logo.alt-text": "Testo alternativo", "log.alt-text-placeholder": "Testo alternativo per l'accessibilità", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Annulla timeout", "undo-timeout-help": "Alcune operazioni come lo spostamento delle discussioni permetteranno al moderatore di annullare la sua azione entro un certo periodo di tempo. Imposta a 0 per disabilitare completamente l'annullamento.", "topic-tools": "Strumenti discussione" -} \ No newline at end of file +} diff --git a/public/language/it/admin/settings/notifications.json b/public/language/it/admin/settings/notifications.json index 7eec59d24a..9574902ce0 100644 --- a/public/language/it/admin/settings/notifications.json +++ b/public/language/it/admin/settings/notifications.json @@ -3,5 +3,5 @@ "welcome-notification": "Notifica di benvenuto", "welcome-notification-link": "Collegamento a Notifica di benvenuto", "welcome-notification-uid": "Notifica di benvenuto utente (UID)", - "post-queue-notification-uid": "Post Queue User (UID)" + "post-queue-notification-uid": "Coda post utente (UID)" } \ 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 aaecd61292..5cbea6601b 100644 --- a/public/language/it/admin/settings/post.json +++ b/public/language/it/admin/settings/post.json @@ -7,14 +7,14 @@ "sorting.most-posts": "Più Post", "sorting.topic-default": "Ordinamento Discussione Predefinito", "length": "Lunghezza Post", - "post-queue": "Coda Post", + "post-queue": "Coda post", "restrictions": "Restrizioni pubblicazione", "restrictions-new": "Restrizioni Nuovo Utente", - "restrictions.post-queue": "Abilita post in attesa", + "restrictions.post-queue": "Abilita coda post", "restrictions.post-queue-rep-threshold": "Reputazione necessaria a superare la coda dei post", "restrictions.groups-exempt-from-post-queue": "Seleziona i gruppi che dovrebbero essere esclusi dalla coda dei post", "restrictions-new.post-queue": "Abilita le restrizioni per i nuovi utenti", - "restrictions.post-queue-help": "Abilitando la coda dei post, i post dei nuovi utenti, verranno messi in coda per l'approvazione", + "restrictions.post-queue-help": "Abilitando la coda dei post, i post dei nuovi utenti, saranno messi in coda per l'approvazione", "restrictions-new.post-queue-help": "Abilitando le restrizioni per i nuovi utenti verranno impostate le restrizioni sui post dei nuovi utenti", "restrictions.seconds-between": "Numero di secondi tra i post", "restrictions.seconds-between-new": "Numero di secondi tra i post per i nuovi utenti", @@ -56,9 +56,9 @@ "composer.show-help": "Mostra la scheda \"Aiuto\"", "composer.enable-plugin-help": "Consenti ai plug-in di aggiungere contenuti alla scheda Guida", "composer.custom-help": "Testo di aiuto personalizzato", - "backlinks": "Backlinks", - "backlinks.enabled": "Enable topic backlinks", - "backlinks.help": "If a post references another topic, a link back to the post will be inserted into the referenced topic at that point in time.", + "backlinks": "Backlink", + "backlinks.enabled": "Abilita backlink discussione", + "backlinks.help": "Se un post fa riferimento ad un altra discussione, un link al post sarà inserito nella discussione di riferimento in quel momento.", "ip-tracking": "Monitoraggio IP", "ip-tracking.each-post": "Traccia l'indirizzo IP per ogni post", "enable-post-history": "Abilita Cronologia post" diff --git a/public/language/it/admin/settings/user.json b/public/language/it/admin/settings/user.json index 55c7369480..ed79c8ebc3 100644 --- a/public/language/it/admin/settings/user.json +++ b/public/language/it/admin/settings/user.json @@ -43,7 +43,7 @@ "registration-type.admin-invite-only": "Solo invito per Amministratori", "registration-type.disabled": "Niente registrazione", "registration-type.help": "Normale: gli utenti possono registrarsi dalla pagina/di registrazione.
\nSolo invito: gli utenti possono invitare altri dalla pagina utenti.
\nSolo su invito amministratore: solo gli amministratori possono invitare altri utenti edalle pagine amministratore/gestione/utenti.
\nNessuna registrazione - Nessuna registrazione dell'utente.
", - "registration-approval-type.help": "Normale: gli utenti vengono registrati immediatamente.
\nApprovazione amministratore - Le registrazioni degli utenti vengono inserite in una coda di approvazione per amministratori.
\nApprovazione amministratore per IP - Normale per i nuovi utenti, Approvazione amministratore per indirizzi IP che dispongono già di un account.
", + "registration-approval-type.help": "Normale: gli utenti vengono registrati immediatamente.
\nApprovazione amministratore - Le registrazioni degli utenti sono inserite in una coda di approvazione per amministratori.
\nApprovazione amministratore per IP - Normale per i nuovi utenti, Approvazione amministratore per indirizzi IP che dispongono già di un account.
", "registration-queue-auto-approve-time": "Tempo di approvazione automatico", "registration-queue-auto-approve-time-help": "Ore prima che l'utente venga approvato automaticamente. 0 per disabilitare.", "registration-queue-show-average-time": "Mostra agli utenti il tempo medio necessario per approvare un nuovo utente", @@ -71,6 +71,7 @@ "digest-freq.off": "Spento", "digest-freq.daily": "Quotidiano", "digest-freq.weekly": "Settimanale", + "digest-freq.biweekly": "Bisettimanale", "digest-freq.monthly": "Mensile", "email-chat-notifs": "Manda una email se arriva un nuovo messaggio di chat e non sono online", "email-post-notif": "Manda una email quando ci sono nuove risposte a discussioni a cui sono iscritto", diff --git a/public/language/it/error.json b/public/language/it/error.json index c4a2350d94..f05b5a3e1e 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -34,8 +34,9 @@ "email-invited": "L'email è già stata invitata", "email-not-confirmed": "Sarai abilitato a postare in alcune categorie o discussioni una volta che la tua email sarà confermata, per favore clicca qui per inviare una email di conferma.", "email-not-confirmed-chat": "Non puoi chattare finché non confermi la tua email, per favore clicca qui per confermare la tua email.", - "email-not-confirmed-email-sent": "La tua email non è stata ancora confermata, controlla la tua casella di posta per l'email di conferma. Non potrai pubblicare post o chattare fino a quando la tua email non sarà confermata.", - "no-email-to-confirm": "Il tuo account non ha un'email impostata. Un'email è necessaria per il recupero dell'account. Clicca qui per inserire un'email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "L'utente \"%1\" non ha impostato un email.", "email-confirm-failed": "Non abbiamo potuto confermare la tua email, per favore riprovaci più tardi.", "confirm-email-already-sent": "Email di conferma già inviata, per favore attendere %1 minuto(i) per inviarne un'altra.", "sendmail-not-found": "Impossibile trovare l'eseguibile di sendmail, per favore assicurati che sia installato ed eseguibile dall'utente che esegue NodeBB.", @@ -103,6 +104,7 @@ "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-make-banned-users-admin": "Non puoi rendere amministratori gli utenti bannati.", "cant-remove-last-admin": "Sei l'unico Amministratore. Aggiungi un altro amministratore prima di rimuovere il tuo ruolo", "account-deletion-disabled": "L'eliminazione dell'account è disabilitata", "cant-delete-admin": "Togli i privilegi amministrativi da questo account prima di provare ad eliminarlo.", diff --git a/public/language/it/modules.json b/public/language/it/modules.json index 38c7d33724..b081184324 100644 --- a/public/language/it/modules.json +++ b/public/language/it/modules.json @@ -54,7 +54,7 @@ "composer.formatting.strikethrough": "Barrato", "composer.formatting.code": "Codice", "composer.formatting.link": "Collegamento", - "composer.formatting.picture": "Image Link", + "composer.formatting.picture": "Link immagine", "composer.upload-picture": "Carica immagine", "composer.upload-file": "Carica file", "composer.zen_mode": "Zen Mode", diff --git a/public/language/it/notifications.json b/public/language/it/notifications.json index 0fdc2b79e5..869f711a7c 100644 --- a/public/language/it/notifications.json +++ b/public/language/it/notifications.json @@ -48,7 +48,7 @@ "posts-exported": "%1 post esportati, clicca per scaricare", "uploads-exported": "%1 caricamenti esportati, clicca per scaricare", "users-csv-exported": "Utenti esportati in CSV, clicca per scaricare", - "post-queue-accepted": "Your queued post has been accepted. Click here to see your post.", + "post-queue-accepted": "Il tuo post in coda è stato accettato. Clicca qui per vedere il tuo post.", "post-queue-rejected": "Il tuo post in coda è stato rifiutato.", "email-confirmed": "Email Confermata", "email-confirmed-message": "Grazie per aver validato la tua email. Il tuo account è ora completamente attivato.", @@ -68,8 +68,8 @@ "notificationType_group-invite": "Quando ricevi un invito ad un gruppo", "notificationType_group-leave": "Quando un utente lascia il gruppo", "notificationType_group-request-membership": "Quando qualcuno richiede di iscriversi a un gruppo di tua proprietà", - "notificationType_new-register": "Quando qualcuno è in attesa della registrazione", - "notificationType_post-queue": "Quando un nuovo post è in attesa", + "notificationType_new-register": "Quando qualcuno viene aggiunto alla coda di registrazione", + "notificationType_post-queue": "Quando un nuovo post è in coda", "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 fe0bac5bc9..a6f5b08e1f 100644 --- a/public/language/it/pages.json +++ b/public/language/it/pages.json @@ -13,7 +13,7 @@ "moderator-tools": "Strumenti di moderazione", "flagged-content": "Contenuti Segnalati", "ip-blacklist": "Blacklist degli IP", - "post-queue": "Post in attesa", + "post-queue": "Coda post", "users/online": "Utenti Online", "users/latest": "Ultimi Utenti", "users/sort-posts": "Utenti maggiori contributori", diff --git a/public/language/it/post-queue.json b/public/language/it/post-queue.json index b052203795..2835fe4607 100644 --- a/public/language/it/post-queue.json +++ b/public/language/it/post-queue.json @@ -1,7 +1,7 @@ { - "post-queue": "Post in attesa", - "description": "Non ci sono post nella coda della post.
Per abilitare questa funzione, vai in Impostazioni → Post → Codice post e abilita Post in attesa.", + "post-queue": "Coda post", + "description": "Non ci sono post nella coda dei post.
Per abilitare questa funzione, vai in Impostazioni → Post → Coda post e abilita Coda post.", "user": "Utente", "category": "Categoria", "title": "Titolo", diff --git a/public/language/it/top.json b/public/language/it/top.json new file mode 100644 index 0000000000..5146312ddf --- /dev/null +++ b/public/language/it/top.json @@ -0,0 +1,4 @@ +{ + "title": "In alto", + "no_top_topics": "Nessuna discussione principale" +} \ No newline at end of file diff --git a/public/language/it/topic.json b/public/language/it/topic.json index 5d695f9a47..47a4170cf6 100644 --- a/public/language/it/topic.json +++ b/public/language/it/topic.json @@ -47,7 +47,7 @@ "restored-by": "Ripristinato da", "moved-from-by": "Spostato da %1 da", "queued-by": "Post in coda per l'approvazione →", - "backlink": "Referenced by", + "backlink": "Referenziato da", "bookmark_instructions": "Clicca qui per tornare all'ultimo post letto in questa discussione.", "flag-post": "Segnala questo post", "flag-user": "Segnala questo utente", @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Inserisci qui il tuo nome/nome utente ospite", "composer.discard": "Annulla", "composer.submit": "Invia", + "composer.additional-options": "Opzioni aggiuntive", "composer.schedule": "Pianifica", "composer.replying_to": "Rispondendo a %1", "composer.new_topic": "Nuova Discussione", @@ -159,7 +160,7 @@ "newest_to_oldest": "Da Nuovi a Vecchi", "most_votes": "Più Voti", "most_posts": "Più Post", - "most_views": "Most Views", + "most_views": "Più visualizzazioni", "stale.title": "Preferisci creare una nuova discussione?", "stale.warning": "Il topic al quale stai rispondendo è abbastanza vecchio. Vorresti piuttosto creare un nuovo topic in riferimento a questo nella tua risposta?", "stale.create": "Crea una nuova discussione", diff --git a/public/language/it/user.json b/public/language/it/user.json index 43b0c2655c..38592bc8bb 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -94,6 +94,7 @@ "digest_off": "Spento", "digest_daily": "Quotidiano", "digest_weekly": "Settimanale", + "digest_biweekly": "Bisettimanale", "digest_monthly": "Mensile", "has_no_follower": "Questo utente non è seguito da nessuno :(", "follows_no_one": "Questo utente non segue nessuno :(", diff --git a/public/language/ja/admin/advanced/events.json b/public/language/ja/admin/advanced/events.json index 8c0dbd27a7..e149a72c5c 100644 --- a/public/language/ja/admin/advanced/events.json +++ b/public/language/ja/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "イベントがありません", "control-panel": "イベントのコントロールパネル", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/ja/admin/dashboard.json b/public/language/ja/admin/dashboard.json index 4e719a00cd..b21cbb4cc2 100644 --- a/public/language/ja/admin/dashboard.json +++ b/public/language/ja/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "総合", "active-users.connections": "接続", - "anonymous-registered-users": "匿名 vs 登録ユーザー", - "anonymous": "匿名", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "登録数", "user-presence": "ユーザープレゼンス", @@ -68,6 +68,7 @@ "unread": "未読", "high-presence-topics": "ハイプレゼンススレッド", + "popular-searches": "Popular Searches", "graphs.page-views": "ページビュー", "graphs.page-views-registered": "ページビュー登録済み", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "ページビューBot", "graphs.unique-visitors": "ユニークな訪問者", "graphs.registered-users": "登録したユーザー", - "graphs.anonymous-users": "匿名ユーザー", + "graphs.guest-users": "Guest Users", "last-restarted-by": "最後に再起動された順", "no-users-browsing": "閲覧中のユーザーなし", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/ja/admin/general/dashboard.json b/public/language/ja/admin/general/dashboard.json deleted file mode 100644 index ab5c98c2bc..0000000000 --- a/public/language/ja/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "フォーラムのトラフィック", - "page-views": "ページビュー", - "unique-visitors": "ユニークな訪問者", - "new-users": "New Users", - "posts": "投稿", - "topics": "スレッド", - "page-views-seven": "過去7日間", - "page-views-thirty": "過去30日間", - "page-views-last-day": "過去24時間", - "page-views-custom": "カスタム期間", - "page-views-custom-start": "期間開始", - "page-views-custom-end": "期間終了", - "page-views-custom-help": "表示したいページビューの日付範囲を入力します。日付選択ツールが使用できない場合、受け入れ可能な形式は次のとおりです。YYYY-MM-DD", - "page-views-custom-error": "有効な期間をフォーマットで入力してくださいYYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "全て", - - "updates": "更新", - "running-version": "NodeBB v%1 を実行しています。", - "keep-updated": "常に最新のセキュリティパッチとバグ修正のためにNodeBBが最新であることを確認してください。", - "up-to-date": "

あなたは最新の状態です。

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

これはNodeBBのプレリリース版です。意図しないバグが発生することがあります。

", - "running-in-development": "フォーラムが開発モードで動作しています。フォーラムの動作が脆弱かもしれませんので、管理者に問い合わせてください。", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "通知", - "restart-not-required": "再起動は必要ありません", - "restart-required": "再起動が必要です", - "search-plugin-installed": "検索プラグインのインストール", - "search-plugin-not-installed": "検索プラグインがインストールされていません", - "search-plugin-tooltip": "検索機能を有効にするには、プラグインページから検索プラグインをインストールしてください", - - "control-panel": "システムコントロール", - "rebuild-and-restart": "再構築 & 再起動", - "restart": "再起動", - "restart-warning": "NodeBBを再構築または再起動すると、数秒間既存の接続がすべて切断されます。", - "restart-disabled": "適切なデーモンを介してNodeBBを実行しているようには見えないため、NodeBBの再構築および再起動は無効になっています。", - "maintenance-mode": "メンテナンスモード", - "maintenance-mode-title": "NodeBBのメンテナンスモードを設定するには、ここをクリックしてください", - "realtime-chart-updates": "リアルタイムチャートの更新", - - "active-users": "アクティブユーザー", - "active-users.users": "ユーザー", - "active-users.guests": "ゲスト", - "active-users.total": "総合", - "active-users.connections": "接続", - - "anonymous-registered-users": "匿名 vs 登録ユーザー", - "anonymous": "匿名", - "registered": "登録数", - - "user-presence": "ユーザープレゼンス", - "on-categories": "カテゴリ一覧", - "reading-posts": "記事を読む", - "browsing-topics": "スレッドを閲覧", - "recent": "最近", - "unread": "未読", - - "high-presence-topics": "ハイプレゼンススレッド", - - "graphs.page-views": "ページビュー", - "graphs.page-views-registered": "ページビュー登録済み", - "graphs.page-views-guest": "ページビューゲスト", - "graphs.page-views-bot": "ページビューBot", - "graphs.unique-visitors": "ユニークな訪問者", - "graphs.registered-users": "登録したユーザー", - "graphs.anonymous-users": "匿名ユーザー", - "last-restarted-by": "最後に再起動された順", - "no-users-browsing": "閲覧中のユーザーなし" -} diff --git a/public/language/ja/admin/general/homepage.json b/public/language/ja/admin/general/homepage.json deleted file mode 100644 index f033b87c51..0000000000 --- a/public/language/ja/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "ホームページ", - "description": "ユーザーがあなたのフォーラムのルートURLに移動するときに表示されるページを選択します。", - "home-page-route": "ホームページのルート", - "custom-route": "カスタムルート", - "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/general/languages.json b/public/language/ja/admin/general/languages.json deleted file mode 100644 index 1d2f019640..0000000000 --- a/public/language/ja/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "言語設定", - "description": "デフォルトの言語は、フォーラムにアクセスしているすべてのユーザーの言語表示を決定します。
個々のユーザーは、アカウント設定ページでデフォルトの言語を上書きできます。", - "default-language": "デフォルトの言語", - "auto-detect": "ゲストの自動検出言語設定" -} \ No newline at end of file diff --git a/public/language/ja/admin/general/navigation.json b/public/language/ja/admin/general/navigation.json deleted file mode 100644 index f263418193..0000000000 --- a/public/language/ja/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "アイコン:", - "change-icon": "変更", - "route": "ルート:", - "tooltip": "ツールチップ:", - "text": "テキスト:", - "text-class": " テキストのClass:任意", - "class": "Class: optional", - "id": "ID: 任意", - - "properties": "プロパティ:", - "groups": "Groups:", - "open-new-window": "新しいウィンドウで開く", - - "btn.delete": "削除", - "btn.disable": "無効", - "btn.enable": "有効", - - "available-menu-items": "利用可能なメニューアイテム", - "custom-route": "カスタムルート", - "core": "コア", - "plugin": "プラグイン" -} \ No newline at end of file diff --git a/public/language/ja/admin/general/social.json b/public/language/ja/admin/general/social.json deleted file mode 100644 index 211d840d69..0000000000 --- a/public/language/ja/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "投稿共有", - "info-plugins-additional": "プラグインは投稿を共有するために追加のネットワークを設定することができます", - "save-success": "投稿共有ネットワークを正常に保存しました!" -} \ No newline at end of file diff --git a/public/language/ja/admin/general/sounds.json b/public/language/ja/admin/general/sounds.json deleted file mode 100644 index b03597c4de..0000000000 --- a/public/language/ja/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "通知", - "chat-messages": "チャットメッセージ", - "play-sound": "再生", - "incoming-message": "受信メッセージ", - "outgoing-message": "送信メッセージ", - "upload-new-sound": "新しい音声のアップロード", - "saved": "設定を保存しました" -} \ No newline at end of file diff --git a/public/language/ja/admin/manage/digest.json b/public/language/ja/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/ja/admin/manage/digest.json +++ b/public/language/ja/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/ja/admin/manage/users.json b/public/language/ja/admin/manage/users.json index caf2a3aac8..9d9c693e1c 100644 --- a/public/language/ja/admin/manage/users.json +++ b/public/language/ja/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "ユーザーID", "users.username": "ユーザー名", "users.email": "メール", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "投稿カウント", "users.reputation": "評価", diff --git a/public/language/ja/admin/menu.json b/public/language/ja/admin/menu.json index e7228820fb..35eec8d76c 100644 --- a/public/language/ja/admin/menu.json +++ b/public/language/ja/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "一般", "section-manage": "管理", diff --git a/public/language/ja/admin/settings/email.json b/public/language/ja/admin/settings/email.json index 770863b52a..a3bf8a8616 100644 --- a/public/language/ja/admin/settings/email.json +++ b/public/language/ja/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "メールからの名前が表示されます。", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/ja/admin/settings/general.json b/public/language/ja/admin/settings/general.json index 23a3d20057..d37f057bc1 100644 --- a/public/language/ja/admin/settings/general.json +++ b/public/language/ja/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "サイトタイトル", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "サイトタイトルのURL", - "title.url-help": "タイトルをクリックすると、ユーザーをこのアドレスに送信します。空白のままにすると、ユーザーはフォーラムのインデックスに送信されます。", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "あなたのコミュニティ名", "title.show-in-header": "ヘッダーにサイトタイトルを表示する", "browser-title": "ブラウザ", @@ -20,9 +20,9 @@ "logo.image": "画像", "logo.image-placeholder": "フォーラムのヘッダーに表示するロゴのパス", "logo.upload": "アップロード", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "サイトロゴのURL", - "logo.url-help": "ロゴをクリックすると、ユーザーをこのアドレスに送信します。空白のままにすると、ユーザーはフォーラムのインデックスに送信されます。", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "全てのテキスト:", "log.alt-text-placeholder": "アクセシビリティのための代替テキスト", "favicon": "お気に入りアイコン", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/ja/admin/settings/user.json b/public/language/ja/admin/settings/user.json index e79e65efe7..41762e6abf 100644 --- a/public/language/ja/admin/settings/user.json +++ b/public/language/ja/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "オフ", "digest-freq.daily": "デイリー", "digest-freq.weekly": "ウィークリー", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "マンスリー", "email-chat-notifs": "オンラインではない時に新しいチャットメッセージを受信した場合、通知メールを送信する。", "email-post-notif": "購読中のスレッドに返信があった場合、メールで通知する。", diff --git a/public/language/ja/error.json b/public/language/ja/error.json index a59597180b..bf4213818d 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "チャットを行うにはメールアドレスの確認を行う必要があります。メールアドレスを確認するためにはここをクリックしてください。", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "メールアドレスの確認が出来ませんでした。再度お試しください。", "confirm-email-already-sent": "確認のメールは既に送信されています。再度送信するには、%1分後に再度お試しください。", "sendmail-not-found": "Sendmailの実行ファイルが見つかりませんでした。インストールされ、ユーザーによってNodeBBが実行されていることを確認してください。", @@ -103,6 +104,7 @@ "already-bookmarked": "あなたは、この投稿をすでにブックマークしています", "already-unbookmarked": "あなたは、この投稿をすでにブックマークから外しています", "cant-ban-other-admins": "ほかの管理者を停止することはできません!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "あなたが唯一の管理者です。管理者としてあなた自身を削除する前に、管理者として別のユーザーを追加します。", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "削除する前に、このアカウントから管理者権限を削除してください。", diff --git a/public/language/ja/top.json b/public/language/ja/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/ja/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/ja/topic.json b/public/language/ja/topic.json index 21750ccff3..d71074fddc 100644 --- a/public/language/ja/topic.json +++ b/public/language/ja/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "破棄する", "composer.submit": "保存する", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "%1へ返答中", "composer.new_topic": "新規スレッド", diff --git a/public/language/ja/user.json b/public/language/ja/user.json index bb65236c7c..0880b21114 100644 --- a/public/language/ja/user.json +++ b/public/language/ja/user.json @@ -94,6 +94,7 @@ "digest_off": "オフ", "digest_daily": "デイリー", "digest_weekly": "ウィークリー", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "マンスリー", "has_no_follower": "フォロワーはまだいません :(", "follows_no_one": "フォロー中のユーザーはまだいません :(", diff --git a/public/language/ko/admin/advanced/events.json b/public/language/ko/admin/advanced/events.json index 4db7030eeb..3f96674ed5 100644 --- a/public/language/ko/admin/advanced/events.json +++ b/public/language/ko/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "이벤트가 없습니다", "control-panel": "이벤트 제어판", "delete-events": "이벤트 삭제", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "필터", "filters-apply": "필터 적용", "filter-type": "이벤트 유형", diff --git a/public/language/ko/admin/dashboard.json b/public/language/ko/admin/dashboard.json index 64f29de725..aee85929ae 100644 --- a/public/language/ko/admin/dashboard.json +++ b/public/language/ko/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "총", "active-users.connections": "연결", - "anonymous-registered-users": "익명 vs 가입한 사용자", - "anonymous": "익명", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "가입한 사용자", "user-presence": "사용자 활동", @@ -68,6 +68,7 @@ "unread": "읽지 않음", "high-presence-topics": "활동량이 많은 화제", + "popular-searches": "Popular Searches", "graphs.page-views": "페이지 뷰", "graphs.page-views-registered": "가입한 사용자의 페이지 뷰", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "봇의 페이지 뷰", "graphs.unique-visitors": "고유 방문자", "graphs.registered-users": "등록된 사용자", - "graphs.anonymous-users": "익명 사용자", + "graphs.guest-users": "Guest Users", "last-restarted-by": "최근 재시작 시점", "no-users-browsing": "보고있는 사용자 없음", "back-to-dashboard": "대시보드로 돌아가기", "details.no-users": "설정한 기간에 가입한 사용자 없음", "details.no-topics": "설정한 기간에 생성된 화제 없음", + "details.no-searches": "No searches have been made yet", "details.no-logins": "설정한 기간에 로그인 기록 없음", "details.logins-static": "NodeBB는 세션 정보를 %1일 동안만 저장합니다. 따라서 아래의 표는 최근 활성화된 세션 정보만을 표시합니다.", "details.logins-login-time": "로그인 시점" diff --git a/public/language/ko/admin/general/dashboard.json b/public/language/ko/admin/general/dashboard.json deleted file mode 100644 index 7462d56bfa..0000000000 --- a/public/language/ko/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "포럼 트래픽", - "page-views": "페이지 뷰", - "unique-visitors": "순 방문자수", - "new-users": "New Users", - "posts": "포스트", - "topics": "게시물", - "page-views-seven": "지난 7일간", - "page-views-thirty": "지난 30일간", - "page-views-last-day": "지난 24시간 동안", - "page-views-custom": "사용자 설정 날짜 기간", - "page-views-custom-start": "기간 시작", - "page-views-custom-end": "기간 끝", - "page-views-custom-help": "페이지 뷰를 확인하고 싶은 기간을 입력하세요. 만약 데이트 피커를 사용할 수 없다면, YYYY-MM-DD 포맷으로 입력해주세요.", - "page-views-custom-error": "유효한 기간을 다음과 같은 포맷으로 입력하세요 YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "항상", - - "updates": "업데이트", - "running-version": "NodeBB v%1 를 사용 중입니다.", - "keep-updated": "사용하시는 NodeBB의 보안 및 오류 업데이트를 항상 최신 버젼으로 유지하십시오.", - "up-to-date": "

최신 버전입니다

", - "upgrade-available": "

새로운 버전 (v%1) 이 출시 되었습니다. 사용하시는 NodeBB의 업데이트를 고려해보세요.

", - "prerelease-upgrade-available": "

사용하는 NodeBB 시험판이 오래되었습니다. 새로운 버전 (v%1) 이 출시 되었습니다. 사용하시는 NodeBB의 업데이트를 고려해보세요.

", - "prerelease-warning": "

이것은 정식 발표 전 버젼의 NodeBB 입니다. 예상치 못한 버그가 발생할 수 있습니다.

", - "running-in-development": "포럼이 개발자 모드로 실행되고 있습니다. 잠재적 취약점에 노출되어 있을 수 있으니 시스템 관리자에게 문의하십시오.", - "latest-lookup-failed": "

NodeBB의 최신 버전을 확인하는데 실패했습니다

", - - "notices": "알림", - "restart-not-required": "재시작 필요 없음", - "restart-required": "재시작 필요", - "search-plugin-installed": "설치된 플러그인 검색", - "search-plugin-not-installed": "설치되지 않은 플러그인 검색", - "search-plugin-tooltip": "검색 기능을 활성화하시려면 플러그인 페이지에서 검색 플러그인을 설치하세요.", - - "control-panel": "시스템 제어", - "rebuild-and-restart": "리빌드 & 재시작", - "restart": "재시작", - "restart-warning": "NodeBB가 리빌드 또는 재시작을 하고 있습니다. 수초 내에 연결된 모든 접속을 끊습니다.", - "restart-disabled": "정상적인 데몬으로 판단할 수 없어 리빌드와 재시작을 할 수 없습니다.", - "maintenance-mode": "점검 모드", - "maintenance-mode-title": "NodeBB 점검 모드를 설정하시려면 이곳을 클릭하세요.", - "realtime-chart-updates": "실시간 차트 업데이트", - - "active-users": "활동 중인 사용자", - "active-users.users": "사용자", - "active-users.guests": "게스트", - "active-users.total": "총", - "active-users.connections": "연결", - - "anonymous-registered-users": "익명 vs 가입한 사용자", - "anonymous": "익명", - "registered": "가입한", - - "user-presence": "사용자 활동", - "on-categories": "카테고리 목록 보는 중", - "reading-posts": "게시물 읽기", - "browsing-topics": "토픽 보기", - "recent": "최근", - "unread": "읽지 않은", - - "high-presence-topics": "활동량이 많은 토픽", - - "graphs.page-views": "페이지 뷰", - "graphs.page-views-registered": "가입한 사용자의 페이지 조회", - "graphs.page-views-guest": "손님의 페이지 조회", - "graphs.page-views-bot": "봇의 페이지 조회", - "graphs.unique-visitors": "고유 방문자", - "graphs.registered-users": "등록된 사용자", - "graphs.anonymous-users": "익명의 사용자", - "last-restarted-by": "마지막으로 재시작", - "no-users-browsing": "보고있는 사용자가 없습니다" -} diff --git a/public/language/ko/admin/general/homepage.json b/public/language/ko/admin/general/homepage.json deleted file mode 100644 index 288d1a1f89..0000000000 --- a/public/language/ko/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "홈페이지", - "description": "사용자가 루트 URL에 들어갔을 때 어떤 페이지가 보일지 선택하세요.", - "home-page-route": "홈페이지 경로", - "custom-route": "사용자 지정 경로", - "allow-user-home-pages": "사용자가 직접 홈페이지를 설정할 수 있게 허용", - "home-page-title": "홈페이지의 타이틀 (기본값 \"Home\")" -} \ No newline at end of file diff --git a/public/language/ko/admin/general/languages.json b/public/language/ko/admin/general/languages.json deleted file mode 100644 index 2464b7b75a..0000000000 --- a/public/language/ko/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "언어 설정", - "description": "기본 언어 설정은 사이트를 방문하는 모든 사용자들에게 적용됩니다.
하지만 사용자들이 직접 본인의 계정 설정 페이지에서 언어 설정을 바꿀 수 있습니다.", - "default-language": "기본 언어", - "auto-detect": "사용자의 언어 설정 자동으로 감지합니다." -} \ No newline at end of file diff --git a/public/language/ko/admin/general/navigation.json b/public/language/ko/admin/general/navigation.json deleted file mode 100644 index 9adb375c75..0000000000 --- a/public/language/ko/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "아이콘:", - "change-icon": "변경", - "route": "경로:", - "tooltip": "툴팁:", - "text": "텍스트:", - "text-class": "텍스트 클래스: 선택 사항", - "class": "Class: optional", - "id": "ID: 선택 사항", - - "properties": "속성:", - "groups": "그룹:", - "open-new-window": "새 창에서 열기", - - "btn.delete": "삭제", - "btn.disable": "비활성화", - "btn.enable": "활성화", - - "available-menu-items": "이용 가능한 메뉴 항목", - "custom-route": "사용자 지정 경로", - "core": "핵심", - "plugin": "플러그인" -} \ No newline at end of file diff --git a/public/language/ko/admin/general/social.json b/public/language/ko/admin/general/social.json deleted file mode 100644 index 35c38ef758..0000000000 --- a/public/language/ko/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "포스트 공유", - "info-plugins-additional": "플러그인을 이용해서 포스트를 공유할 수 있는 네트워크를 추가할 수 있습니다.", - "save-success": "포스트 공유 네트워크 추가 완료!" -} \ No newline at end of file diff --git a/public/language/ko/admin/general/sounds.json b/public/language/ko/admin/general/sounds.json deleted file mode 100644 index 70cbb40922..0000000000 --- a/public/language/ko/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "알림", - "chat-messages": "채팅 메세지", - "play-sound": "재생", - "incoming-message": "수신 메시지", - "outgoing-message": "발신 메시지", - "upload-new-sound": "새로운 사운드 업로드", - "saved": "설정 저장됨" -} \ No newline at end of file diff --git a/public/language/ko/admin/manage/digest.json b/public/language/ko/admin/manage/digest.json index ace601e819..db9f7dc963 100644 --- a/public/language/ko/admin/manage/digest.json +++ b/public/language/ko/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "포럼 메일 수동 전송 완료", "resent-day": "일간 포럼 메일 재전송 완료", "resent-week": "주간 포럼 메일 재전송 완료", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "월간 포럼 메일 재전송 완료", "null": "기록 없음", "manual-run": "포럼 메일 수동 전송", diff --git a/public/language/ko/admin/manage/privileges.json b/public/language/ko/admin/manage/privileges.json index 2e16cda8e3..d01ba7c79e 100644 --- a/public/language/ko/admin/manage/privileges.json +++ b/public/language/ko/admin/manage/privileges.json @@ -51,13 +51,13 @@ "alert.saved": "변경된 권한이 적용되었습니다.", "alert.confirm-discard": "권한 변경을 취소하시겠습니까?", "alert.discarded": "권한 변경이 취소되었습니다.", - "alert.confirm-copyToAll": "Are you sure you wish to apply this set of %1 to all categories?", - "alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's set of %1 to all categories?", - "alert.confirm-copyToChildren": "Are you sure you wish to apply this set of %1 to all descendant (child) categories?", - "alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's set of %1 to all descendant (child) categories?", + "alert.confirm-copyToAll": "%1의 설정을 모든 카테고리에 적용하시겠습니까?", + "alert.confirm-copyToAllGroup": "%1 그룹의 설정을 모든 카테고리에 적용하시겠습니까?", + "alert.confirm-copyToChildren": "%1의 설정을 모든 하위 카테고리에 적용하시겠습니까?", + "alert.confirm-copyToChildrenGroup": "%1 그룹의 설정을 모든 하위 카테고리에 적용하시겠습니까?", "alert.no-undo": "이 행동은 되돌릴 수 없습니다.", "alert.admin-warning": "관리자에게는 절대적인 권한이 부여됩니다.", - "alert.copyPrivilegesFrom-title": "Select a category to copy from", - "alert.copyPrivilegesFrom-warning": "This will copy %1 from the selected category.", - "alert.copyPrivilegesFromGroup-warning": "This will copy this group's set of %1 from the selected category." + "alert.copyPrivilegesFrom-title": "복사할 카테고리 설정", + "alert.copyPrivilegesFrom-warning": "이 작업은 %1의 설정을 선택한 카테고리에서 복사합니다.", + "alert.copyPrivilegesFromGroup-warning": "이 작업은 %1 그룹의 설정을 선택한 카테고리에서 복사합니다." } \ No newline at end of file diff --git a/public/language/ko/admin/manage/uploads.json b/public/language/ko/admin/manage/uploads.json index e321e7f567..6a5fcf9282 100644 --- a/public/language/ko/admin/manage/uploads.json +++ b/public/language/ko/admin/manage/uploads.json @@ -6,6 +6,6 @@ "size/filecount": "크기 / 파일 수", "confirm-delete": "이 파일을 정말로 삭제하시겠습니까?", "filecount": "%1 파일", - "new-folder": "New Folder", - "name-new-folder": "Enter a name for new the folder" + "new-folder": "새로운 폴더", + "name-new-folder": "폴더의 이름을 입력해주세요." } \ No newline at end of file diff --git a/public/language/ko/admin/manage/users.json b/public/language/ko/admin/manage/users.json index 656d4f928d..948440a063 100644 --- a/public/language/ko/admin/manage/users.json +++ b/public/language/ko/admin/manage/users.json @@ -1,6 +1,6 @@ { "users": "사용자", - "edit": "Actions", + "edit": "작업", "make-admin": "관리자 등록", "remove-admin": "관리자 해제", "validate-email": "이메일 인증", @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "사용자명", "users.email": "이메일", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "글 개수", "users.reputation": "인지도", diff --git a/public/language/ko/admin/menu.json b/public/language/ko/admin/menu.json index 3999230bcc..b28b897736 100644 --- a/public/language/ko/admin/menu.json +++ b/public/language/ko/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "로그인 기록", "dashboard/users": "사용자", "dashboard/topics": "화제", + "dashboard/searches": "Searches", "section-general": "일반", "section-manage": "관리", diff --git a/public/language/ko/admin/settings/email.json b/public/language/ko/admin/settings/email.json index 94e89462f5..2b6b3587dd 100644 --- a/public/language/ko/admin/settings/email.json +++ b/public/language/ko/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "이메일에 표시할 발신자 이름", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "외부 이메일 서버를 통해 메일 발송", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "자주 사용되는 서비스 목록 중에 하나를 선택하거나 직접 입력할 수 있습니다.", "smtp-transport.service": "서비스 선택", "smtp-transport.service-custom": "직접 입력", @@ -37,8 +37,10 @@ "subscriptions.hour": "포럼 메일 발송 시간", "subscriptions.hour-help": "정기 포럼 메일을 보낼 시간을 입력해주세요. (예: 0은 자정, 17은 오후 5시 입니다. 이 시간은 서버 시간 기준이며, 사용자의 시스템 시간과 일치하지 않을 수 있습니다.
서버 시간은 입니다.
다음 정기 포럼 메일은 에 발송 예정입니다.", "notifications.remove-images": "이메일 알림에서 이미지 제거", - "require-email-address": "Require new users to specify an email address", - "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", + "require-email-address": "신규 사용자에게 이메일 주소 설정 요구", + "require-email-address-warning": "기본적으로 사용자들은 이메일 주소 입력을 거부할 수 있습니다. 이 설정을 활성화하면 사용자 등록 시 이메일 주소를 입력해야 진행할 수 있습니다. 하지만 해당 이메일 주소가 유효한 주소인지는 확인하지 않습니다.", "include-unverified-emails": "전자 메일을 명시적으로 확인하지 않은 수신자에게 전자 메일 보내기", - "include-unverified-warning": "기본적으로 계정과 연결된 전자 메일이 있는 사용자는 이미 확인되었지만 그렇지 않은 경우가 있습니다(예: SSO 로그인, 약관으로부터 제외된 사용자 등). 사용자가 위험을 감수하고 이 설정을 사용하도록 설정합니다. – 확인되지 않은 주소로 이메일을 보내는 것은 지역별 스팸 방지법을 위반하는 것일 수 있습니다." -} \ No newline at end of file + "include-unverified-warning": "기본적으로 계정과 연결된 전자 메일이 있는 사용자는 이미 확인되었지만 그렇지 않은 경우가 있습니다(예: SSO 로그인, 약관으로부터 제외된 사용자 등). 사용자가 위험을 감수하고 이 설정을 사용하도록 설정합니다. – 확인되지 않은 주소로 이메일을 보내는 것은 지역별 스팸 방지법을 위반하는 것일 수 있습니다.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/ko/admin/settings/general.json b/public/language/ko/admin/settings/general.json index 8771eb6b3f..c20abb4195 100644 --- a/public/language/ko/admin/settings/general.json +++ b/public/language/ko/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "사이트 이름", "title.short": "짧은 이름", "title.short-placeholder": "짧은 제목이 설정되지 않으면 일반 사이트 이름을 로고처럼 사용합니다.", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "사이트 이름을 눌렀을 때 이동할 URL", - "title.url-help": "사이트 상단의 사이트 이름을 클릭하면 사용자가 이 주소로 이동합니다. 비워두면 사용자가 포럼 인덱스로 이동합니다.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "커뮤니티 이름", "title.show-in-header": "상단바에 사이트 이름 표시", "browser-title": "브라우저 타이틀", @@ -20,9 +20,9 @@ "logo.image": "사진", "logo.image-placeholder": "로고 파일 저장 위치", "logo.upload": "업로드", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "사이트 로고 URL", - "logo.url-help": "사용자가 로고를 클릭했을 때 연결할 URL 주소. 빈칸으로 남겨두면 사이트 홈페이지로 연결됩니다.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "대체 텍스트", "log.alt-text-placeholder": "대체 텍스트", "favicon": "파비콘", @@ -35,10 +35,10 @@ "maskable-icon.help": "권장 사항: 512x512, PNG 확장자만 가능, 지정되지 않을 경우 터치 아이콘 사용", "outgoing-links": "외부 링크", "outgoing-links.warning-page": "외부 링크 경고페이지 사용", - "search": "Search", - "search-default-in": "Search In", - "search-default-in-quick": "Quick Search In", - "search-default-sort-by": "Sort by", + "search": "검색", + "search-default-in": "범위 검색", + "search-default-in-quick": "빠른 범위 검색", + "search-default-sort-by": "분류", "outgoing-links.whitelist": "경고 창이 필요 없는 외부 링크 도메인 whitelist", "site-colors": "사이트 색상 설정", "theme-color": "테마 색상", @@ -47,4 +47,4 @@ "undo-timeout": "되돌리기 시간 초과", "undo-timeout-help": "조정자는 주제 이동과 같은 일부 작업을 통해 특정 기간 내에 작업을 취소할 수 있습니다. 되돌리기를 완전히 비활성화하려면 0으로 설정합니다.", "topic-tools": "주제 도구" -} \ No newline at end of file +} diff --git a/public/language/ko/admin/settings/notifications.json b/public/language/ko/admin/settings/notifications.json index 54a7241021..c9a3ebb946 100644 --- a/public/language/ko/admin/settings/notifications.json +++ b/public/language/ko/admin/settings/notifications.json @@ -3,5 +3,5 @@ "welcome-notification": "환영 알림", "welcome-notification-link": "환영 알림 링크", "welcome-notification-uid": "환영 알림 사용자 (UID)", - "post-queue-notification-uid": "Post Queue User (UID)" + "post-queue-notification-uid": "게시 대기 중인 사용자 (UID)" } \ 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 475c087504..ef7b8ab1c6 100644 --- a/public/language/ko/admin/settings/post.json +++ b/public/language/ko/admin/settings/post.json @@ -56,9 +56,9 @@ "composer.show-help": "\"도움말\" 탭 표시", "composer.enable-plugin-help": "플러그인의 도움말 탭 내용 추가 허용", "composer.custom-help": "사용자 정의 \"도움말\" 텍스트", - "backlinks": "Backlinks", - "backlinks.enabled": "Enable topic backlinks", - "backlinks.help": "If a post references another topic, a link back to the post will be inserted into the referenced topic at that point in time.", + "backlinks": "역링크", + "backlinks.enabled": "화제 역링크 활성화", + "backlinks.help": "포스트가 다른 화제를 참조할 경우 참조한 화제에 해당 포스트의 역링크가 표시됩니다.", "ip-tracking": "IP 추적", "ip-tracking.each-post": "모든 포스트 IP 추적", "enable-post-history": "게시글 편집 기록 활성화" diff --git a/public/language/ko/admin/settings/user.json b/public/language/ko/admin/settings/user.json index 5deefd2b9e..feb1658be6 100644 --- a/public/language/ko/admin/settings/user.json +++ b/public/language/ko/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "해제", "digest-freq.daily": "매일", "digest-freq.weekly": "매주", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "매달", "email-chat-notifs": "오프라인일 때 채팅 메시지가 도착하면 알림 메일 보내기", "email-post-notif": "내가 관심있는 화제에 답글이 달리면 메일 보내기", diff --git a/public/language/ko/email.json b/public/language/ko/email.json index 9c910ac944..c4a36ab099 100644 --- a/public/language/ko/email.json +++ b/public/language/ko/email.json @@ -7,7 +7,7 @@ "greeting_with_name": "안녕하세요 %1님", "email.verify-your-email.subject": "사용자의 이메일을 인증해주세요.", "email.verify.text1": "이메일 주소 변경 또는 확인을 요청했습니다.", - "email.verify.text2": "For security purposes, we only change or confirm the email address on file once its ownership has been confirmed via email. If you did not request this, no action is required on your part.", + "email.verify.text2": "보안을 위해 이메일이 인증되어야만 변경이 가능합니다. 요청을 하지 않은 경우 사용자 측에서 수행할 작업이 없습니다.", "email.verify.text3": "이 전자 메일 주소를 확인하면 현재 전자 메일 주소를 %1로 바꿉니다.", "welcome.text1": "%1님 가입해주셔서 감사합니다.", "welcome.text2": "계정을 활성화하려면 등록한 메일 주소의 인증이 필요합니다.", diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 5b09333f7d..bc4af29b50 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -25,17 +25,18 @@ "invalid-event": "올바르지 않은 이벤트: %1", "local-login-disabled": "권한이 없는 계정에서의 로컬 로그인이 비활성화 되었습니다.", "csrf-invalid": "세션이 만료되어 로그인에 실패하였습니다. 다시 시도해주세요.", - "invalid-path": "Invalid path", - "folder-exists": "Folder exists", + "invalid-path": "올바르지 않은 경로입니다.", + "folder-exists": "폴더가 이미 존재합니다.", "invalid-pagination-value": "올바르지 않은 페이지 값입니다. 최소 %1에서 최대 2% 사이로 설정해야 합니다.", "username-taken": "이미 사용 중인 사용자명입니다.", "email-taken": "이미 사용 중인 이메일입니다.", "email-nochange": "입력한 전자 메일이 이미 등록되어 있는 전자 메일과 동일합니다.", "email-invited": "해당 이메일의 사용자는 이미 초대되었습니다.", - "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", + "email-not-confirmed": "이메일 인증이 완료된 후 카테고리나 화제에 새로운 포스트를 작성할 수 있습니다. 여기를 눌러 인증 메일을 다시 발송할 수 있습니다.", "email-not-confirmed-chat": "아직 이메일이 인증되지 않아 채팅 기능을 사용할 수 없습니다. 여기를 눌러 이메일 인증을 진행하세요.", - "email-not-confirmed-email-sent": "이메일 인증이 완료되지 않았습니다. 수신함에서 인증 메일을 확인해주세요. 인증이 완료되기 전까지는 글을 작성하거나 채팅 참여가 불가능합니다.", - "no-email-to-confirm": "계정에 전자 메일 설정이 없습니다. 계정 복구를 위해 이메일이 필요합니다. 이메일을 입력하려면 여기를 클릭하십시오.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "이메일 인증이 실패하였습니다. 잠시 후에 다시 시도하세요.", "confirm-email-already-sent": "인증 메일이 이미 발송되었습니다. 다시 보내려면 %1분을 기다리세요.", "sendmail-not-found": "Sendmail 실행파일을 찾을 수 없었습니다. 관리자가 sendmail을 설치했고 실행이 가능한 상태인지 확인해 주시기 바랍니다.", @@ -103,6 +104,7 @@ "already-bookmarked": "이미 즐겨찾기에 추가한 포스트 입니다.", "already-unbookmarked": "이미 즐겨찾기를 해제한 포스트 입니다.", "cant-ban-other-admins": "다른 관리자를 차단할 수 없습니다!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "당신은 유일한 관리자입니다. 관리자를 그만두기 전에 다른 사용자를 관리자로 임명하세요.", "account-deletion-disabled": "계정 삭제 기능이 비활성화 상태입니다.", "cant-delete-admin": "해당 계정을 삭제하기 전에 관리자 권한을 해제해주십시오.", diff --git a/public/language/ko/global.json b/public/language/ko/global.json index 6f78a5f9a5..1b22d7ce1d 100644 --- a/public/language/ko/global.json +++ b/public/language/ko/global.json @@ -70,7 +70,7 @@ "firstpost": "첫 포스트", "read_more": "더 보기", "more": "더 보기", - "none": "None", + "none": "없음", "posted_ago_by_guest": "비회원이 %1에 작성했습니다.", "posted_ago_by": "%2님이 %1에 작성했습니다.", "posted_ago": "%1에 작성되었습니다.", diff --git a/public/language/ko/modules.json b/public/language/ko/modules.json index 6fa30a1b5e..b82a889498 100644 --- a/public/language/ko/modules.json +++ b/public/language/ko/modules.json @@ -54,7 +54,7 @@ "composer.formatting.strikethrough": "취소선", "composer.formatting.code": "코드", "composer.formatting.link": "링크", - "composer.formatting.picture": "Image Link", + "composer.formatting.picture": "이미지 링크", "composer.upload-picture": "이미지 업로드", "composer.upload-file": "파일 업로드", "composer.zen_mode": "전체화면", diff --git a/public/language/ko/notifications.json b/public/language/ko/notifications.json index 1778a6e0e4..8fa50bb11f 100644 --- a/public/language/ko/notifications.json +++ b/public/language/ko/notifications.json @@ -14,7 +14,7 @@ "topics": "화제", "replies": "답글", "chat": "채팅", - "group-chat": "Group Chats", + "group-chat": "그룹 채팅", "follows": "팔로우", "upvote": "추천", "new-flags": "새로 들어온 신고", diff --git a/public/language/ko/register.json b/public/language/ko/register.json index 0c6547f61f..f9249dfbb5 100644 --- a/public/language/ko/register.json +++ b/public/language/ko/register.json @@ -20,9 +20,9 @@ "registration-added-to-queue": "회원가입이 요청되었습니다. 관리자의 승인 후 메일이 발송됩니다.", "registration-queue-average-time": "가입 승인에는 평균적으로 %1시간 %2분이 소요됩니다.", "registration-queue-auto-approve-time": "%1시간 내로 이 포럼에서 사용자의 계정이 완전히 활성화될 예정입니다.", - "interstitial.intro": "We'd like some additional information in order to update your account…", - "interstitial.intro-new": "We'd like some additional information before we can create your account…", - "interstitial.errors-found": "Please review the entered information:", + "interstitial.intro": "계정 정보를 수정하기 전 추가 정보가 필요합니다.", + "interstitial.intro-new": "계정을 생성하기 전 추가 정보가 필요합니다.", + "interstitial.errors-found": "입력한 정보를 다시 확인해주세요.", "gdpr_agree_data": "나는 이 웹사이트에서 개인 정보를 수집하고 처리하는데 동의합니다.", "gdpr_agree_email": "나는 이 웹사이트에서 포럼 메일 및 알림 메일을 수신하는데 동의합니다.", "gdpr_consent_denied": "사용자는 이 사이트가 사용자의 정보를 수집/처리하고 이메일을 보내는 것에 동의해야 합니다.", diff --git a/public/language/ko/top.json b/public/language/ko/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/ko/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/ko/topic.json b/public/language/ko/topic.json index 7b9c6331d4..385ec0f625 100644 --- a/public/language/ko/topic.json +++ b/public/language/ko/topic.json @@ -20,8 +20,8 @@ "login-to-view": "🔒 열람을 위해 로그인", "edit": "수정", "delete": "삭제", - "delete-event": "Delete Event", - "delete-event-confirm": "Are you sure you want to delete this event?", + "delete-event": "이벤트 삭제", + "delete-event-confirm": "이 이벤트를 삭제하시겠습니까?", "purge": "완전 삭제", "restore": "복원", "move": "이동", @@ -45,9 +45,9 @@ "unpinned-by": "상단 고정을 해제한 사용자:", "deleted-by": "삭제한 사용자:", "restored-by": "복원한 사용자:", - "moved-from-by": "Moved from %1 by", + "moved-from-by": "%1에서 이동됨 -", "queued-by": "게시 승인 대기 중 →", - "backlink": "Referenced by", + "backlink": "참조 -", "bookmark_instructions": "이 쓰레드에서 읽은 마지막 포스트로 이동하려면 여기를 클릭 하세요.", "flag-post": "해당 포스트 신고", "flag-user": "해당 유저 신고", @@ -139,6 +139,7 @@ "composer.handle_placeholder": "이름을 입력하세요.", "composer.discard": "취소", "composer.submit": "등록", + "composer.additional-options": "Additional Options", "composer.schedule": "예약", "composer.replying_to": "'%1'에 대한 답글", "composer.new_topic": "새 화제 생성", @@ -159,7 +160,7 @@ "newest_to_oldest": "최신순", "most_votes": "투표순", "most_posts": "포스트순", - "most_views": "Most Views", + "most_views": "조회수순", "stale.title": "새로운 화제를 생성하시겠습니까?", "stale.warning": "현재 답글을 작성 중인 화제는 오래전에 작성 되었습니다. 새로 화제를 생성하고 이 게시물을 인용하시겠습니까?", "stale.create": "새로운 화제 작성", @@ -179,5 +180,5 @@ "timeago_earlier": "%1 이전", "first-post": "첫 포스트", "last-post": "마지막 포스트", - "post-quick-reply": "Post quick reply" + "post-quick-reply": "빠른 답글" } \ No newline at end of file diff --git a/public/language/ko/user.json b/public/language/ko/user.json index 68fc02c4c7..e66a123f20 100644 --- a/public/language/ko/user.json +++ b/public/language/ko/user.json @@ -94,11 +94,12 @@ "digest_off": "해제", "digest_daily": "매일", "digest_weekly": "매주", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "매월", "has_no_follower": "이 사용자는 팔로워가 없습니다 :(", "follows_no_one": "이 사용자는 아무도 팔로우하고 있지 않습니다 :(", "has_no_posts": "이 사용자가 작성한 포스트가 없습니다.", - "has_no_best_posts": "This user does not have any upvoted posts yet.", + "has_no_best_posts": "해당 유저는 아직까지 추천을 받은 포스트가 없습니다.", "has_no_topics": "이 사용자가 작성한 화제가 없습니다.", "has_no_watched_topics": "이 사용자가 관심 목록에 추가한 화제가 없습니다.", "has_no_ignored_topics": "이 사용자는 아직 무시 중인 화제가 없습니다.", @@ -182,7 +183,7 @@ "consent.export-uploads-success": "업로드한 컨텐츠를 내보내기 합니다. 완료되면 알림을 수신합니다.", "consent.export_posts": "포스트 내보내기 (.csv)", "consent.export-posts-success": "포스트를 내보내기 합니다. 완료되면 알림을 수신합니다.", - "emailUpdate.intro": "Please enter your email address below. This forum uses your email address for scheduled digest and notifications, as well as for account recovery in the event of a lost password.", - "emailUpdate.optional": "This field is optional. You are not obligated to provide your email address, but without a validated email, you will not be able to recover your account.", - "emailUpdate.change-instructions": "A confirmation email will be sent to the entered email address with a unique link. Accessing that link will confirm your ownership of the email address and it will become active on your account. At any time, you are able to update your email on file from within your account page." + "emailUpdate.intro": "아래에 이메일 주소를 입력하세요. 해당 포럼은 입력한 이메일 주소로 정기 알림 메일과 그 외의 알림을 전송하고, 계정 복구 작업에도 해당 이메일 주소를 사용합니다.", + "emailUpdate.optional": "해당 항목은 선택 입력 항목입니다. 이메일 주소를 반드시 입력할 필요는 없지만 유효한 이메일 주소를 입력하지 않을 경우 계정을 잃어버렸을 때 복구하지 못 할 수도 있습니다.", + "emailUpdate.change-instructions": "입력하신 이메일 주소로 가입 인증 메일이 발송되었습니다. 메일 내의 링크에 접속할 경우 메일 소유자를 확인하고 계정이 활성화됩니다. 활성화 후에도 계정 페이지에서 이메일 주소를 변경할 수 있습니다." } \ No newline at end of file diff --git a/public/language/lt/admin/advanced/events.json b/public/language/lt/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/lt/admin/advanced/events.json +++ b/public/language/lt/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/lt/admin/dashboard.json b/public/language/lt/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/lt/admin/dashboard.json +++ b/public/language/lt/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/lt/admin/general/dashboard.json b/public/language/lt/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/lt/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/lt/admin/general/homepage.json b/public/language/lt/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/lt/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/lt/admin/general/languages.json b/public/language/lt/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/lt/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/lt/admin/general/navigation.json b/public/language/lt/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/lt/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/lt/admin/general/social.json b/public/language/lt/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/lt/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/lt/admin/general/sounds.json b/public/language/lt/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/lt/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/lt/admin/manage/digest.json b/public/language/lt/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/lt/admin/manage/digest.json +++ b/public/language/lt/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/lt/admin/manage/users.json b/public/language/lt/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/lt/admin/manage/users.json +++ b/public/language/lt/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/lt/admin/menu.json b/public/language/lt/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/lt/admin/menu.json +++ b/public/language/lt/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/lt/admin/settings/email.json b/public/language/lt/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/lt/admin/settings/email.json +++ b/public/language/lt/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/lt/admin/settings/general.json b/public/language/lt/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/lt/admin/settings/general.json +++ b/public/language/lt/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/lt/admin/settings/user.json b/public/language/lt/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/lt/admin/settings/user.json +++ b/public/language/lt/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/lt/error.json b/public/language/lt/error.json index df9b8e9d42..aa1e74f66a 100644 --- a/public/language/lt/error.json +++ b/public/language/lt/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Jūs negalite bendrauti, kol jūsų el.paštas nėra patvirtintas, prašome spausti čia kad aktyvuoti jūsų el.paštą", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Negalime patvirtinti jūsų el. adreso, prašom bandyti vėliau.", "confirm-email-already-sent": "Patvirtinimo laiškas išsiųstas, prašome palaukti %1 minute(s) kad išsiųstume kita", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Jūs jau turite žymekelį šiam įrašui", "already-unbookmarked": "Jūs jau nuėmėte žymeklį šiam įrašui", "cant-ban-other-admins": "Jūs negalite užblokuoti kitų administratorių!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Jūs esate vienintelis administratorius. Pridėkite kitą vartotoja kaip administratorių prieš pašalindamas save", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Pašalinkite administratoriaus teises šiai paskyrai prieš bandydami ją ištrinti.", diff --git a/public/language/lt/top.json b/public/language/lt/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/lt/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/lt/topic.json b/public/language/lt/topic.json index 731eabcbcb..b8d8436625 100644 --- a/public/language/lt/topic.json +++ b/public/language/lt/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Atšaukti", "composer.submit": "Patvirtinti", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Atsakymas %1", "composer.new_topic": "Nauja tema", diff --git a/public/language/lt/user.json b/public/language/lt/user.json index dcd1f0f102..dabce36492 100644 --- a/public/language/lt/user.json +++ b/public/language/lt/user.json @@ -94,6 +94,7 @@ "digest_off": "Išjungta", "digest_daily": "Kas dieną", "digest_weekly": "Kas savaitę", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Kas mėnesį", "has_no_follower": "Šis vartotojas neturi jokių sekėjų :(", "follows_no_one": "Šis vartotojas nieko neseka :(", diff --git a/public/language/lv/admin/advanced/events.json b/public/language/lv/admin/advanced/events.json index 5168d6544c..2836e7f88e 100644 --- a/public/language/lv/admin/advanced/events.json +++ b/public/language/lv/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Nav notikumu", "control-panel": "Notikumu vadības panelis", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/lv/admin/dashboard.json b/public/language/lv/admin/dashboard.json index 234cf4baee..076694b4ca 100644 --- a/public/language/lv/admin/dashboard.json +++ b/public/language/lv/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Kopēji", "active-users.connections": "Savienojumi", - "anonymous-registered-users": "Anonīmie lietotāji pret reģistrētiem lietotājiem", - "anonymous": "Anonīmie", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Reģistrētie", "user-presence": "Lietotāju novietojums", @@ -68,6 +68,7 @@ "unread": "Skatās nelasītos rakstus", "high-presence-topics": "Augstās klātesamības temati", + "popular-searches": "Popular Searches", "graphs.page-views": "Lapu skatījumi", "graphs.page-views-registered": "Lapu skatījumi no lietotājiem", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Lapu skatījumi no botiem", "graphs.unique-visitors": "Unikālie apmeklētāji", "graphs.registered-users": "Reģistrētie lietotāji", - "graphs.anonymous-users": "Anonīmie lietotāji", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Pēdējoreiz restartējis", "no-users-browsing": "Nav pārlūkojošo lietotāju", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/lv/admin/general/dashboard.json b/public/language/lv/admin/general/dashboard.json deleted file mode 100644 index f5b18c427d..0000000000 --- a/public/language/lv/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Foruma datplūsma", - "page-views": "Lapu skatījumi", - "unique-visitors": "Unikālie apmeklētāji", - "new-users": "New Users", - "posts": "Raksti", - "topics": "Temati", - "page-views-seven": "Pēdējās 7 dienās", - "page-views-thirty": "Pēdējās 30 dienās", - "page-views-last-day": "Pēdējās 24 stundās", - "page-views-custom": "Pielāgotais datumu diapazons", - "page-views-custom-start": "No", - "page-views-custom-end": "Līdz", - "page-views-custom-help": "Ievadīt datumu diapazonu, kā lapu skatījumu skaitu vēlies redzēt. Ja datumu atlasītājs nav pieejams, lietot formātu YYYY-MM-DD", - "page-views-custom-error": "Lūdzu, ievadīt derīgu datumu diapazonu formatā YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Visu laiku", - - "updates": "Atjauninājumi", - "running-version": "Ir palaists NodeBB v%1.", - "keep-updated": "Lūdzu, vienmēr pārliecināties, ka NodeBB ir atjaunināts ar jaunākajiem drošības ielāpiem un kļūdu labojumiem.", - "up-to-date": "

Šobrīd nav atjauninājumu

", - "upgrade-available": "

Ir izlaista jauna versija (v%1). Apsvērt NodeBB atjaunināšanu.

", - "prerelease-upgrade-available": "

Šī ir novecojusies pirmizlaides NodeBB versija. Jauna versija (v%1) ir bijusi izlaista. Apsvērt NodeBB atjaunināšanu.

", - "prerelease-warning": "

Ši ir pirmizlaides NodeBB versija. Neparedzētas kļūdas var rasties.

", - "running-in-development": "NodeBB darbojas attīstītāju režīmā. NodeBB var būt neaizsargāts pret iespējamiem uzbrukumiem; lūdzu, sazināties ar sistēmas administratoru.", - "latest-lookup-failed": "

Neizdevās atrast jaunāko pieejamo NodeBB versiju

", - - "notices": "Paziņojumi", - "restart-not-required": "Nav nepieciešama pārstartēšana", - "restart-required": "Nepieciešama pārstartēšana", - "search-plugin-installed": "Meklēšanas spraudnis instalēts", - "search-plugin-not-installed": "Meklēšanas spraudnis nav instalēts", - "search-plugin-tooltip": "Instalēt meklēšanas spraudni no spraudņu lapas, lai aktivizētu meklēšanu", - - "control-panel": "Sistēmas kontrole", - "rebuild-and-restart": "Pārkompilēt & pārstartēt", - "restart": "Pārstartēt", - "restart-warning": "NodeBB pārkompilēšana vai pārstartēšana pārtrauks visus esošos savienojumus uz dažām sekundēm.", - "restart-disabled": "NodeBB pārkompilēšana un pārstartēšana ir atspējota, jo, šķiet, ka tā nav bijusi palaista ar atbilstošo dēmona procesu.", - "maintenance-mode": "Uzturēšanas režīms", - "maintenance-mode-title": "Klikšķināt, lai pārietu uz NodeBB uzturēšanas režīmu", - "realtime-chart-updates": "Reālā laika grafiku atjauninājumi", - - "active-users": "Aktīvie lietotāji", - "active-users.users": "Lietotāji", - "active-users.guests": "Viesi", - "active-users.total": "Kopēji", - "active-users.connections": "Savienojumi", - - "anonymous-registered-users": "Anonīmie lietotāji pret reģistrētiem lietotājiem", - "anonymous": "Anonīmie", - "registered": "Reģistrētie", - - "user-presence": "Lietotāju novietojums", - "on-categories": "Skatās kategorijas", - "reading-posts": "Lasa rakstus", - "browsing-topics": "Pārlūko tematus", - "recent": "Skatās nesenos rakstus", - "unread": "Skatās nelasītos rakstus", - - "high-presence-topics": "Augstās klātesamības temati", - - "graphs.page-views": "Lapu skatījumi", - "graphs.page-views-registered": "Lapu skatījumi no lietotājiem", - "graphs.page-views-guest": "Lapu skatījumi no viesiem", - "graphs.page-views-bot": "Lapu skatījumi no botiem", - "graphs.unique-visitors": "Unikālie apmeklētāji", - "graphs.registered-users": "Reģistrētie lietotāji", - "graphs.anonymous-users": "Anonīmie lietotāji", - "last-restarted-by": "Pēdējoreiz restartējis", - "no-users-browsing": "Nav pārlūkojošo lietotāju" -} diff --git a/public/language/lv/admin/general/homepage.json b/public/language/lv/admin/general/homepage.json deleted file mode 100644 index 68249543f4..0000000000 --- a/public/language/lv/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Sākums", - "description": "Izvēlies, kādu lapu rādīt, kad lietotājs izvēlas foruma saknes URL.", - "home-page-route": "Sākumlapas ceļš", - "custom-route": "Pielāgotais ceļš", - "allow-user-home-pages": "Atļaut lietotājiem savas mājaslapas", - "home-page-title": "Sākumlapas titulis (pēc noklusējuma \"Sākums\")" -} \ No newline at end of file diff --git a/public/language/lv/admin/general/languages.json b/public/language/lv/admin/general/languages.json deleted file mode 100644 index 5e668f9147..0000000000 --- a/public/language/lv/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Valodas iestatījumi", - "description": "Noklusējuma valoda nosaka valodas iestatījumus visiem lietotājiem, kuri apmeklē forumu.
Lietotājs savā konta iestatījumu lapā var ignorēt noklusējuma valodu.", - "default-language": "Noklusējama valoda", - "auto-detect": "Viesiem automātiski izprast valodas iestatījumus" -} \ No newline at end of file diff --git a/public/language/lv/admin/general/navigation.json b/public/language/lv/admin/general/navigation.json deleted file mode 100644 index c6908195e0..0000000000 --- a/public/language/lv/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ikona:", - "change-icon": "izmaiņa", - "route": "Ceļš:", - "tooltip": "Paskaidre:", - "text": "Teksts:", - "text-class": "Teksta klase: neobligāta", - "class": "Class: optional", - "id": "ID: neobligāts", - - "properties": "Īpašības:", - "groups": "Grupas:", - "open-new-window": "Rādīt jaunā logā", - - "btn.delete": "Izdzēst", - "btn.disable": "Atspējot", - "btn.enable": "Iespējot", - - "available-menu-items": "Pieejamās izvēlnes iespējas", - "custom-route": "Pielāgotais ceļš", - "core": "kodols", - "plugin": "spraudnis" -} \ No newline at end of file diff --git a/public/language/lv/admin/general/social.json b/public/language/lv/admin/general/social.json deleted file mode 100644 index 03a4c2e035..0000000000 --- a/public/language/lv/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Rakstu kopīgošana", - "info-plugins-additional": "Spraudņi var pievienot papildu rakstu kopīgošanas tīklus.", - "save-success": "Rakstu kopīgošanas tīkli veiksmi saglabāti!" -} \ No newline at end of file diff --git a/public/language/lv/admin/general/sounds.json b/public/language/lv/admin/general/sounds.json deleted file mode 100644 index 421805409d..0000000000 --- a/public/language/lv/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Paziņojumi", - "chat-messages": "Sarunas", - "play-sound": "Spēlēt", - "incoming-message": "Ienākošā saruna", - "outgoing-message": "Izejošā saruna", - "upload-new-sound": "Augšupielādēt jaunu skaņu", - "saved": "Iestatījumi saglabāti" -} \ No newline at end of file diff --git a/public/language/lv/admin/manage/digest.json b/public/language/lv/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/lv/admin/manage/digest.json +++ b/public/language/lv/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/lv/admin/manage/users.json b/public/language/lv/admin/manage/users.json index a413d0b3d0..44619ba911 100644 --- a/public/language/lv/admin/manage/users.json +++ b/public/language/lv/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "lietotājvārds", "users.email": "e-pasta adrese", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "raksti", "users.reputation": "ranga punkti", diff --git a/public/language/lv/admin/menu.json b/public/language/lv/admin/menu.json index bbf5d97854..c97b9b0cb3 100644 --- a/public/language/lv/admin/menu.json +++ b/public/language/lv/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Vispārējie", "section-manage": "Pārvaldīt", diff --git a/public/language/lv/admin/settings/email.json b/public/language/lv/admin/settings/email.json index ccc035c86a..a170931724 100644 --- a/public/language/lv/admin/settings/email.json +++ b/public/language/lv/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Vārds vai nosaukums, ko saņēmējs redzēs kā sūtītāju.", "smtp-transport": "SMTP transports", - "smtp-transport.enabled": "Izmantot atsevišķu e-pasta serveri, lai nosūtītu e-pastus", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Izvēlies no labi zināmu pakalpojumu saraksta vai ievadi pielāgotu pakalpojumu.", "smtp-transport.service": "Atlasīt servisu", "smtp-transport.service-custom": "Pielāgotais serviss", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/lv/admin/settings/general.json b/public/language/lv/admin/settings/general.json index 753fb1261d..ea143d538f 100644 --- a/public/language/lv/admin/settings/general.json +++ b/public/language/lv/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Foruma nosaukums", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "Foruma virsrakta URL", - "title.url-help": "Kad virsraksts tiek noklikšķināts, nosūtīt uz šo adresi. Ja ir tukšs, nosūtīt uz foruma sākumlapu.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Foruma nosaukums", "title.show-in-header": "Rādīt foruma virsrakstu galvenē", "browser-title": "Virsraksts pārlūkā", @@ -20,9 +20,9 @@ "logo.image": "Bilde", "logo.image-placeholder": "Ceļš uz logo, ko parādītu foruma galvenē", "logo.upload": "Augšupielādēt", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "Foruma logo URL", - "logo.url-help": "Kad logo tiek noklikšķināts, nosūtīt uz šo adresi. Ja ir tukšs, nosūtīt uz foruma sākumlapu.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alternatīvais teksts", "log.alt-text-placeholder": "Alternatīvais teksts pieejamībai", "favicon": "Favorīta ikona", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/lv/admin/settings/user.json b/public/language/lv/admin/settings/user.json index 58b8fbfb5f..e70445837c 100644 --- a/public/language/lv/admin/settings/user.json +++ b/public/language/lv/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Nav", "digest-freq.daily": "Ik dienu", "digest-freq.weekly": "Ik nedēļu", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Ik mēnesi", "email-chat-notifs": "Sūtīt e-pastu, ja ierodas jauna saruna un es neesmu tiešsaistē", "email-post-notif": "Sūtīt e-pastu, kad kāds raksta tematā, kuru esmu abonējis", diff --git a/public/language/lv/error.json b/public/language/lv/error.json index b198b0273b..224e8d2b7b 100644 --- a/public/language/lv/error.json +++ b/public/language/lv/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Nevar sarunāties, kamēr Tava e-pasta adrese netiek apstiprināta, lūdzu, noklikšķini, lai apstiprinātu savu e-pasta adresi.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Mēs nevarējām apstiprināt Tavu e-pasta adresi, lūdzu, vēlāk mēģini vēlreiz.", "confirm-email-already-sent": "Apstiprinājuma e-pasts ir jau nosūtīts, lūdzu, uzgaidi %1 minūti(-es), lai nosūtītu vēl vienu.", "sendmail-not-found": "Sendmail programmu nevarēja atrast, lūdzu, pārliecinies, ka lietotājs, kas darbojas ar NodeBB, ir to instalējis un izdarījis palaižamu.", @@ -103,6 +104,7 @@ "already-bookmarked": "Tu jau esi atzīmējis šo rakstu ar grāmatzīmi", "already-unbookmarked": "Tu jau esi noņēmis grāmatzīmi no šī raksta", "cant-ban-other-admins": "Nevar bloķēt citus administratorus!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Tu esi vienīgais administrators. Pievieno vēl vienu lietotāju kā administratoru, pirms noņemi sevi kā administratoru", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Noņemi administratora tiesības no šī konta, pirms mēģināt to izdzēst.", diff --git a/public/language/lv/top.json b/public/language/lv/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/lv/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/lv/topic.json b/public/language/lv/topic.json index 958840aa41..a3d9f55252 100644 --- a/public/language/lv/topic.json +++ b/public/language/lv/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Atmest", "composer.submit": "Publicēt", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Atbild %1", "composer.new_topic": "Izveidot jaunu tematu", diff --git a/public/language/lv/user.json b/public/language/lv/user.json index ec39476be5..e1de0b47e6 100644 --- a/public/language/lv/user.json +++ b/public/language/lv/user.json @@ -94,6 +94,7 @@ "digest_off": "Izslēgts", "digest_daily": "Ik dienas", "digest_weekly": "Ik nedēļas", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Ik mēnesi", "has_no_follower": "Šim lietotājam nav nevienu sekotāju :(", "follows_no_one": "Šis lietotājs neseko nevienam :(", diff --git a/public/language/ms/admin/advanced/events.json b/public/language/ms/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/ms/admin/advanced/events.json +++ b/public/language/ms/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/ms/admin/dashboard.json b/public/language/ms/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/ms/admin/dashboard.json +++ b/public/language/ms/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/ms/admin/general/dashboard.json b/public/language/ms/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/ms/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/ms/admin/general/homepage.json b/public/language/ms/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/ms/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/ms/admin/general/languages.json b/public/language/ms/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/ms/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/ms/admin/general/navigation.json b/public/language/ms/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/ms/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/ms/admin/general/social.json b/public/language/ms/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/ms/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/ms/admin/general/sounds.json b/public/language/ms/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/ms/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/ms/admin/manage/digest.json b/public/language/ms/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/ms/admin/manage/digest.json +++ b/public/language/ms/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/ms/admin/manage/users.json b/public/language/ms/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/ms/admin/manage/users.json +++ b/public/language/ms/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/ms/admin/menu.json b/public/language/ms/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/ms/admin/menu.json +++ b/public/language/ms/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/ms/admin/settings/email.json b/public/language/ms/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/ms/admin/settings/email.json +++ b/public/language/ms/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/ms/admin/settings/general.json b/public/language/ms/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/ms/admin/settings/general.json +++ b/public/language/ms/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/ms/admin/settings/user.json b/public/language/ms/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/ms/admin/settings/user.json +++ b/public/language/ms/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/ms/error.json b/public/language/ms/error.json index f436510c21..d935916ebb 100644 --- a/public/language/ms/error.json +++ b/public/language/ms/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Anda tidak dibenarkan sembang sehingga emel disahkan, sila sahkan emel anda.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Kami tidak dapat memastikan emel anda, sila cuba lagi nanti", "confirm-email-already-sent": "Pengesahan emel telah dihantar, sila tunggu %1 minit() untuk menghantar yang baru.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Anda tidak boleh haramkan admin / pentadbir!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Anda satu-satunya pentadbir. Tambah pentadbir lain sebelum membuang diri anda sebagai pentadbir", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/ms/top.json b/public/language/ms/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/ms/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/ms/topic.json b/public/language/ms/topic.json index 407624794f..04fa232cda 100644 --- a/public/language/ms/topic.json +++ b/public/language/ms/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Abaikan", "composer.submit": "Hantar", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Balas ke %1", "composer.new_topic": "Topik baru", diff --git a/public/language/ms/user.json b/public/language/ms/user.json index 71a56eeca3..4e36a3091f 100644 --- a/public/language/ms/user.json +++ b/public/language/ms/user.json @@ -94,6 +94,7 @@ "digest_off": "Tutup", "digest_daily": "Harian", "digest_weekly": "Mingguan", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Bulanan", "has_no_follower": "Pengguna ini tiada pengikut :(", "follows_no_one": "Pengguna ini tidak mengikuti sesiapa :(", diff --git a/public/language/nb/admin/advanced/events.json b/public/language/nb/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/nb/admin/advanced/events.json +++ b/public/language/nb/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/nb/admin/dashboard.json b/public/language/nb/admin/dashboard.json index 2f744a1182..112aa9389e 100644 --- a/public/language/nb/admin/dashboard.json +++ b/public/language/nb/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "Høyt synlige tråder", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/nb/admin/general/dashboard.json b/public/language/nb/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/nb/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/nb/admin/general/homepage.json b/public/language/nb/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/nb/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/nb/admin/general/languages.json b/public/language/nb/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/nb/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/nb/admin/general/navigation.json b/public/language/nb/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/nb/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/nb/admin/general/social.json b/public/language/nb/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/nb/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/nb/admin/general/sounds.json b/public/language/nb/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/nb/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/nb/admin/manage/digest.json b/public/language/nb/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/nb/admin/manage/digest.json +++ b/public/language/nb/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/nb/admin/manage/users.json b/public/language/nb/admin/manage/users.json index 0bab898f7e..091c07f1e0 100644 --- a/public/language/nb/admin/manage/users.json +++ b/public/language/nb/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/nb/admin/menu.json b/public/language/nb/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/nb/admin/menu.json +++ b/public/language/nb/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/nb/admin/settings/email.json b/public/language/nb/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/nb/admin/settings/email.json +++ b/public/language/nb/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/nb/admin/settings/general.json b/public/language/nb/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/nb/admin/settings/general.json +++ b/public/language/nb/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/nb/admin/settings/user.json b/public/language/nb/admin/settings/user.json index 37f0b6fdfe..f218395cb3 100644 --- a/public/language/nb/admin/settings/user.json +++ b/public/language/nb/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Av", "digest-freq.daily": "Daglig", "digest-freq.weekly": "Ukentlig", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Månedlig ", "email-chat-notifs": "Send en e-post hvis jeg mottar en ny chatt-melding om jeg ikke er online. ", "email-post-notif": "Send en e-post når det kommer svar på tråder jeg abbonnerer på", diff --git a/public/language/nb/error.json b/public/language/nb/error.json index b8ad0e3b4c..c1cafd3303 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -34,8 +34,9 @@ "email-invited": "E-post har allerede fått invitasjon", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Du kan ikke chatte før e-posten din er bekreftet, vennligst klikk her for å bekrefte e-postadressen.", - "email-not-confirmed-email-sent": "Din e-post har enda ikke blitt bekreftet, vennligst sjekk innboksen din for bekreftelsesmailen. Du har ikke tilgang til å skrive innlegg eller chatte før e-posten din er bekreftet.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Vi kunne ikke bekrefte e-posten din, vennligst prøv igjen senere.", "confirm-email-already-sent": "E-post for bekreftelse er allerede sendt, vennligst vent %1 minutt(er) for å sende en til.", "sendmail-not-found": "Funksjonaliteten \"sendmail\" ble ikke funnet, vennligst sjekk at den er installert og kjørbar av brukeren som kjører NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Du har allerede bokmerket dette innlegget", "already-unbookmarked": "Du har allerede fjernet bokmerket fra dette innlegget", "cant-ban-other-admins": "Du kan ikke utestenge andre administratorer!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Du er den eneste administratoren. Legg til en annen bruker som administrator før du fjerner deg selv.", "account-deletion-disabled": "Kontosletting er deaktivert", "cant-delete-admin": "Fjern administratorrettigheter fra denne kontoen før du prøver å slette den.", diff --git a/public/language/nb/top.json b/public/language/nb/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/nb/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json index 83ca054214..0d65c4eb3d 100644 --- a/public/language/nb/topic.json +++ b/public/language/nb/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Skriv inn navnet ditt / signatur her", "composer.discard": "Forkast", "composer.submit": "Send", + "composer.additional-options": "Additional Options", "composer.schedule": "Timeplan", "composer.replying_to": "Svarer i %1", "composer.new_topic": "Ny tråd", diff --git a/public/language/nb/user.json b/public/language/nb/user.json index a55eaab12b..9ee05cd3d9 100644 --- a/public/language/nb/user.json +++ b/public/language/nb/user.json @@ -94,6 +94,7 @@ "digest_off": "Av", "digest_daily": "Daglig", "digest_weekly": "Ukentlig", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Månedlig", "has_no_follower": "Denne brukeren har ingen følgere :(", "follows_no_one": "Denne brukeren følger ingen :(", diff --git a/public/language/nl/admin/advanced/events.json b/public/language/nl/admin/advanced/events.json index 3ec8d7f418..79eb67d04a 100644 --- a/public/language/nl/admin/advanced/events.json +++ b/public/language/nl/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Er zijn geen events", "control-panel": "Events Controlepaneel", "delete-events": "Verwijder eventen", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/nl/admin/dashboard.json b/public/language/nl/admin/dashboard.json index bb81461688..2acaa26a6a 100644 --- a/public/language/nl/admin/dashboard.json +++ b/public/language/nl/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connecties", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Laatst herstart door", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/nl/admin/general/dashboard.json b/public/language/nl/admin/general/dashboard.json deleted file mode 100644 index b1b895aa9f..0000000000 --- a/public/language/nl/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connecties", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Laatst herstart door", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/nl/admin/general/homepage.json b/public/language/nl/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/nl/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/nl/admin/general/languages.json b/public/language/nl/admin/general/languages.json deleted file mode 100644 index 66f75f9248..0000000000 --- a/public/language/nl/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Taalinstellingen", - "description": "De standaard taal bepaald de taalinstellingen voor alle gebruikers die uw forum bezoeken.
Individuele gebruikers kunnen deze standaard instellingen overschrijven op hun gebruikersinstellingen pagina.", - "default-language": "Standaard taal", - "auto-detect": "Detecteer de taalinstellingen voor Gasten automatisch" -} \ No newline at end of file diff --git a/public/language/nl/admin/general/navigation.json b/public/language/nl/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/nl/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/nl/admin/general/social.json b/public/language/nl/admin/general/social.json deleted file mode 100644 index 85ed00c695..0000000000 --- a/public/language/nl/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Berichten delen", - "info-plugins-additional": "Plug-ins kunnen extra netwerken toevoegen om berichten mee te delen.", - "save-success": "Netwerken om berichten te delen is succesvol opgeslagen!" -} \ No newline at end of file diff --git a/public/language/nl/admin/general/sounds.json b/public/language/nl/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/nl/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/nl/admin/manage/digest.json b/public/language/nl/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/nl/admin/manage/digest.json +++ b/public/language/nl/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/nl/admin/manage/users.json b/public/language/nl/admin/manage/users.json index 151a177843..4002ccbe34 100644 --- a/public/language/nl/admin/manage/users.json +++ b/public/language/nl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/nl/admin/menu.json b/public/language/nl/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/nl/admin/menu.json +++ b/public/language/nl/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/nl/admin/settings/email.json b/public/language/nl/admin/settings/email.json index 6a2023db5a..3588f40700 100644 --- a/public/language/nl/admin/settings/email.json +++ b/public/language/nl/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "De from naam om te tonen in de e-mail.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Gebruik een externe mail server om mails te verzenden", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Je kunt een bekende dienst uit de lijst selecteren of vul een aangepaste dienst in.", "smtp-transport.service": "Selecteer een dienst", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/nl/admin/settings/general.json b/public/language/nl/admin/settings/general.json index 80e5a388e3..fedadad45d 100644 --- a/public/language/nl/admin/settings/general.json +++ b/public/language/nl/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Titel", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "De URL van de site titel", - "title.url-help": "Wanneer de titel word aangeklikt stuur gebruikers naar dit adress. Is het leeg gelaten dan worden gebruikers naar de forum hoofdpagina gestuurd.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Jouw Communiy Naam", "title.show-in-header": "Toon Site Titel in Header", "browser-title": "Browser Titel", @@ -20,9 +20,9 @@ "logo.image": "Afbeelding", "logo.image-placeholder": "Pad naar een logo om te tonen op de forum header", "logo.upload": "Uploaden", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "De URL van de site logo", - "logo.url-help": "Wanneer het logo aangeklikt is stuur gebruikers naar dit adress. Is het leeg gelaten dan worden gebruikers naar de forum hoofdpagina gestuurd.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Tekst", "log.alt-text-placeholder": "Alternatieve tekst voor toegankelijkheid", "favicon": "Favoicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/nl/admin/settings/user.json b/public/language/nl/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/nl/admin/settings/user.json +++ b/public/language/nl/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/nl/error.json b/public/language/nl/error.json index 79b8e2d3d8..a13dbcc830 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -34,8 +34,9 @@ "email-invited": "E-mail was reeds uitgenodigd", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Het gebruik van chatfunctionaliteit is pas toegestaan na validatie van het e-mailadres.", - "email-not-confirmed-email-sent": "Je e-mailadres is nog niet bevestigd, kijk of je de bevestigingsmail hebt ontvangen. Tot je e-mailadres is bevestigd kun je geen berichten plaatsen of aan chats deelnemen.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Helaas kon het e-mailadres niet bevestigd worden, probeer het later nog eens.", "confirm-email-already-sent": "Bevestigingsmail is zojuist al verzonden, wacht alsjeblieft %1 minuut (minuten) voordat je opnieuw een bevestigingsmail aanvraagt.", "sendmail-not-found": "De sendmail executable kon niet worden gevonden, zorg ervoor dat deze is geïnstalleerd en dat de gebruiker die NodeBB draait deze kan uitvoeren.", @@ -103,6 +104,7 @@ "already-bookmarked": "Je hebt dit bericht al als favoriet toegevoegd", "already-unbookmarked": "Je hebt dit bericht al verwijderd uit je favorieten", "cant-ban-other-admins": "Het is niet toegestaan andere beheerders te verbannen!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Je bent de enige beheerder. Stel eerst een andere gebruiker als beheerder in voordat je jezelf geen beheerder meer maakt.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Verwijder administratieve rechten van dit account voordat je probeert deze te verwijderen", diff --git a/public/language/nl/top.json b/public/language/nl/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/nl/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json index d323b9250e..ab10ab53ba 100644 --- a/public/language/nl/topic.json +++ b/public/language/nl/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Voer je naam/pseudoniem hier in", "composer.discard": "Annuleren", "composer.submit": "Verzenden", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Reactie op %1", "composer.new_topic": "Nieuw onderwerp", diff --git a/public/language/nl/user.json b/public/language/nl/user.json index 8c23f20862..44a374fca4 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -94,6 +94,7 @@ "digest_off": "Uit", "digest_daily": "Dagelijks", "digest_weekly": "Wekelijks", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Maandelijks", "has_no_follower": "Deze gebruiker heeft geen volgers :(", "follows_no_one": "Deze gebruiker volgt niemand :(", diff --git a/public/language/pl/admin/admin.json b/public/language/pl/admin/admin.json index af8aa5e642..5b36c0273d 100644 --- a/public/language/pl/admin/admin.json +++ b/public/language/pl/admin/admin.json @@ -1,5 +1,5 @@ { - "alert.confirm-rebuild-and-restart": "Jesteś pewny, że chciałbyś przebudować oraz zrestartować NodeBB?", + "alert.confirm-rebuild-and-restart": "Czy na pewno chcesz przebudować oraz zrestartować NodeBB?", "alert.confirm-restart": "Czy na pewno chcesz zrestartować NodeBB?", "acp-title": "%1 | Panel administracyjny NodeBB", diff --git a/public/language/pl/admin/advanced/events.json b/public/language/pl/admin/advanced/events.json index 02df129699..9a61d40c38 100644 --- a/public/language/pl/admin/advanced/events.json +++ b/public/language/pl/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Brak zdarzeń", "control-panel": "Panel zdarzeń", "delete-events": "Usuń zdarzenia", + "confirm-delete-all-events": "Czy na pewno chcesz usunąć wszystkie zapisane zdarzenia?", "filters": "Filtry", "filters-apply": "Zatwierdź filtry", "filter-type": "Typ zdarzenia", diff --git a/public/language/pl/admin/dashboard.json b/public/language/pl/admin/dashboard.json index d6c1c03b8a..ba2aed1b4d 100644 --- a/public/language/pl/admin/dashboard.json +++ b/public/language/pl/admin/dashboard.json @@ -2,7 +2,7 @@ "forum-traffic": "Ruch na forum", "page-views": "Wyświetlenia strony", "unique-visitors": "Unikalni goście", - "logins": "Logins", + "logins": "Loginy", "new-users": "Nowi użytkownicy", "posts": "Posty", "topics": "Tematy", @@ -30,7 +30,7 @@ "upgrade-available": "

Została wydana nowa wersja (v%1). Rozważ aktualizację NodeBB.

", "prerelease-upgrade-available": "

To jest nieaktualna przedpremierowa wersja NodeBB. Została wydana nowa wersja (v%1). Rozważ aktualizację NodeBB.

", "prerelease-warning": "

To jest przedpremierowa wersja NodeBB. Mogą występować błędy.

", - "fallback-emailer-not-found": "Fallback emailer not found!", + "fallback-emailer-not-found": "Nie znaleziono kopii maila!", "running-in-development": "Forum działa w trybie programistycznym i może być podatne na zagrożenia. Skontaktuj się z administratorem.", "latest-lookup-failed": "

Nie udało się odnaleźć najnowszej wersji NodeBB

", @@ -56,8 +56,8 @@ "active-users.total": "Łącznie", "active-users.connections": "Połączenia", - "anonymous-registered-users": "Użytkownicy anonimowi vs zarejestrowani", - "anonymous": "Anonimowi", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Zarejestrowani", "user-presence": "Obecność użytkownika", @@ -68,6 +68,7 @@ "unread": "Nieprzeczytane", "high-presence-topics": "Popularne tematy", + "popular-searches": "Popular Searches", "graphs.page-views": "Wyświetlenia strony", "graphs.page-views-registered": "Wyświetlenia użytkowników", @@ -75,14 +76,15 @@ "graphs.page-views-bot": "Wyświetlenia botów", "graphs.unique-visitors": "Unikalni użytkownicy", "graphs.registered-users": "Zarejestrowani użytkownicy", - "graphs.anonymous-users": "Anonimowi użytkownicy", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Ostatnio restartowany przez", "no-users-browsing": "Brak przeglądających", - "back-to-dashboard": "Back to Dashboard", - "details.no-users": "No users have joined within the selected timeframe", - "details.no-topics": "No topics have been posted within the selected timeframe", - "details.no-logins": "No logins have been recorded within the selected timeframe", - "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", - "details.logins-login-time": "Login Time" + "back-to-dashboard": "Powrót do Dashboardu", + "details.no-users": "Żaden użytkownik nie dołączył w wybranym okresie", + "details.no-topics": "Żadne tematy nie zostały opublikowane w wybranym okresie", + "details.no-searches": "No searches have been made yet", + "details.no-logins": "Żadne logi nie zostały zapisane w wybranym okresie", + "details.logins-static": "NodeBB zapisuje dane sesji tylko na %1 dzień, dlatego tabela poniżej zawierać będzie tylko ostatnią aktywną sesję", + "details.logins-login-time": "Czas logowania" } diff --git a/public/language/pl/admin/extend/plugins.json b/public/language/pl/admin/extend/plugins.json index de4b5ad0a9..fa3c3ebefc 100644 --- a/public/language/pl/admin/extend/plugins.json +++ b/public/language/pl/admin/extend/plugins.json @@ -39,7 +39,7 @@ "alert.upgraded": "Wtyczka zaktualizowana", "alert.installed": "Wtyczka zainstalowana", "alert.uninstalled": "Wtyczka odinstalowana", - "alert.activate-success": "Please rebuild and restart your NodeBB to fully activate this plugin", + "alert.activate-success": "Proszę odbudować i zrestartować NodeBB aby w pełni aktywować ten plugin", "alert.deactivate-success": "Wtyczka została dezaktywowana", "alert.upgrade-success": "Przebuduj i zrestartuj NodeBB, by w pełni zaktualizować tę wtyczkę.", "alert.install-success": "Wtyczka została zainstalowana, teraz należy ją aktywować.", diff --git a/public/language/pl/admin/general/dashboard.json b/public/language/pl/admin/general/dashboard.json deleted file mode 100644 index 2cb8462085..0000000000 --- a/public/language/pl/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Ruch na forum", - "page-views": "Wyświetlenia strony", - "unique-visitors": "Unikalni goście", - "new-users": "Nowi użytkownicy", - "posts": "Posty", - "topics": "Tematy", - "page-views-seven": "Ostatnie 7 dni", - "page-views-thirty": "Ostatnie 30 dni", - "page-views-last-day": "Ostatnie 24 godziny", - "page-views-custom": "Własny zakres dat", - "page-views-custom-start": "Początek zakresu", - "page-views-custom-end": "Koniec zakresu", - "page-views-custom-help": "Wprowadź zakres dat dla wyświetleń strony, które chcesz zobaczyć. Jeśli nie ma możliwości wyboru daty, obowiązuje format RRRR-MM-DD", - "page-views-custom-error": "Proszę wprowadzić poprawny zakres dat w formacie YYYY-MM-DD", - - "stats.yesterday": "Wczoraj", - "stats.today": "Dzisiaj", - "stats.last-week": "Poprzedni tydzień", - "stats.this-week": "Obecny tydzień", - "stats.last-month": "Poprzedni miesiąc", - "stats.this-month": "Obecny miesiąc", - "stats.all": "Cały czas", - - "updates": "Aktualizacje", - "running-version": "Forum działa dzięki NodeBB v%1", - "keep-updated": "Aktualizuj NodeBB regularnie, by zwiększać bezpieczeństwa i wprowadzać poprawki.", - "up-to-date": "

NodeBB jest aktualny

", - "upgrade-available": "

Została wydana nowa wersja (v%1). Rozważ aktualizację NodeBB.

", - "prerelease-upgrade-available": "

To jest nieaktualna przedpremierowa wersja NodeBB. Została wydana nowa wersja (v%1). Rozważ aktualizację NodeBB.

", - "prerelease-warning": "

To jest przedpremierowa wersja NodeBB. Mogą występować błędy.

", - "running-in-development": "Forum działa w trybie programistycznym i może być podatne na zagrożenia. Skontaktuj się z administratorem.", - "latest-lookup-failed": "

Nie udało się odnaleźć najnowszej wersji NodeBB

", - - "notices": "Powiadomienia", - "restart-not-required": "Restart nie jest wymagany", - "restart-required": "Wymagany restart", - "search-plugin-installed": "Wyszukiwarka jest zainstalowana", - "search-plugin-not-installed": "Wyszukiwarka nie jest zainstalowana", - "search-plugin-tooltip": "Zainstaluj wyszukiwarkę ze strony wtyczek, by aktywować funkcję wyszukiwania", - - "control-panel": "Zarządzanie systemem", - "rebuild-and-restart": "Przebudowa i restart", - "restart": "Restart", - "restart-warning": "Przebudowa i restart NodeBB zerwie na kilka sekund wszystkie aktywne połączenia. ", - "restart-disabled": "Zablokowano przebudowę i restart, ponieważ wygląda na to, że nie uruchamiasz NodeBB poprzez właściwy serwis.", - "maintenance-mode": "Tryb serwisowy", - "maintenance-mode-title": "Kliknij tutaj, by skonfigurować tryb konserwacji dla NodeBB", - "realtime-chart-updates": "Wykresy aktualizowane na żywo", - - "active-users": "Aktywni użytkownicy", - "active-users.users": "Użytkownicy", - "active-users.guests": "Goście", - "active-users.total": "Łącznie", - "active-users.connections": "Połączenia", - - "anonymous-registered-users": "Użytkownicy anonimowi vs zarejestrowani", - "anonymous": "Anonimowi", - "registered": "Zarejestrowani", - - "user-presence": "Obecność użytkownika", - "on-categories": "Na liście kategorii", - "reading-posts": "Czytanie postów", - "browsing-topics": "Przeglądanie tematów", - "recent": "Ostatnie", - "unread": "Nieprzeczytane", - - "high-presence-topics": "Popularne tematy", - - "graphs.page-views": "Wyświetlenia strony", - "graphs.page-views-registered": "Wyświetlenia użytkowników", - "graphs.page-views-guest": "Wyświetlenia gości", - "graphs.page-views-bot": "Wyświetlenia botów", - "graphs.unique-visitors": "Unikalni użytkownicy", - "graphs.registered-users": "Zarejestrowani użytkownicy", - "graphs.anonymous-users": "Anonimowi użytkownicy", - "last-restarted-by": "Ostatnio restartowany przez", - "no-users-browsing": "Brak przeglądających" -} diff --git a/public/language/pl/admin/general/homepage.json b/public/language/pl/admin/general/homepage.json deleted file mode 100644 index 0fc4160302..0000000000 --- a/public/language/pl/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Strona główna", - "description": "Wybierz stronę startową dla 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", - "home-page-title": "Tytuł strony głównej (domyślnie: „Strona Główna”)" -} \ No newline at end of file diff --git a/public/language/pl/admin/general/languages.json b/public/language/pl/admin/general/languages.json deleted file mode 100644 index 6fa0554e20..0000000000 --- a/public/language/pl/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Ustawienia językowe", - "description": "Domyślny język określa ustawienia języka dla wszystkich użytkowników, którzy odwiedzają forum.
Użytkownicy mogą zmienić domyślny język w ustawieniach swojego konta.", - "default-language": "Domyślny język", - "auto-detect": "Automatycznie wykrywaj język gości" -} \ No newline at end of file diff --git a/public/language/pl/admin/general/navigation.json b/public/language/pl/admin/general/navigation.json deleted file mode 100644 index 42a9e7c98c..0000000000 --- a/public/language/pl/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ikona:", - "change-icon": "zmień", - "route": "Ścieżka:", - "tooltip": "Tooltip:", - "text": "Tekst:", - "text-class": "Klasa tekstu opcjonalnie", - "class": "Klasa: opcjonalnie", - "id": "ID: opcjonalnie", - - "properties": "Ustawienia:", - "groups": "Grupy:", - "open-new-window": "Otwórz w nowym oknie", - - "btn.delete": "Usuń", - "btn.disable": "Wyłącz", - "btn.enable": "Włącz", - - "available-menu-items": "Dostępne obiekty menu", - "custom-route": "Niestandardowa ścieżka", - "core": "system", - "plugin": "wtyczka" -} \ No newline at end of file diff --git a/public/language/pl/admin/general/social.json b/public/language/pl/admin/general/social.json deleted file mode 100644 index e75834e540..0000000000 --- a/public/language/pl/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Udostępnianie postów", - "info-plugins-additional": "Wtyczki mogą dodać dodatkowe platformy do udostępniania postów", - "save-success": "Pomyślnie zapisano!" -} \ No newline at end of file diff --git a/public/language/pl/admin/general/sounds.json b/public/language/pl/admin/general/sounds.json deleted file mode 100644 index 1ab957ffa3..0000000000 --- a/public/language/pl/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Powiadomienia", - "chat-messages": "Wiadomości czatu", - "play-sound": "Odtwórz", - "incoming-message": "Przychodzące wiadomości", - "outgoing-message": "Wychodzące wiadomości", - "upload-new-sound": "Prześlij nowy dźwięk", - "saved": "Ustawienia zapisane" -} \ No newline at end of file diff --git a/public/language/pl/admin/manage/categories.json b/public/language/pl/admin/manage/categories.json index 924fa27e13..70dbbeba4b 100644 --- a/public/language/pl/admin/manage/categories.json +++ b/public/language/pl/admin/manage/categories.json @@ -10,16 +10,16 @@ "custom-class": "Niestandardowa klasa", "num-recent-replies": "# z ostatnich odpowiedzi", "ext-link": "Zewnętrzny odnośnik", - "subcategories-per-page": "Subcategories per page", + "subcategories-per-page": "Subkategorie na stronę", "is-section": "Traktuj tę kategorię jako sekcję", - "post-queue": "Post queue", + "post-queue": "Kolejka postów", "tag-whitelist": "Otaguj białą listę", "upload-image": "Prześlij obrazek", "delete-image": "Usuń", "category-image": "Obrazek kategorii", "parent-category": "Kategoria nadrzędna", "optional-parent-category": "(Opcjonalne) Kategoria nadrzędna", - "top-level": "Top Level", + "top-level": "Najwyższy poziom", "parent-category-none": "(Żadna)", "copy-parent": "Skopiuj od rodzica", "copy-settings": "Skopiuj ustawienia z", @@ -32,8 +32,8 @@ "edit": "Edytuj", "analytics": "Analityka", "view-category": "Wyświetl kategorię", - "set-order": "Set order", - "set-order-help": "Setting the order of the category will move this category to that order and update the order of other categories as necessary. Minimum order is 1 which puts the category at the top.", + "set-order": "Ustaw kolejnośc", + "set-order-help": "Ustawienie kolejności kategorii przesunie tę kategorię w żądanej kolejności i zaktualizuje kolejność zgodnie z potrzebą. Minimalna kolejność to 1, co umieści daną kategorię na górze.", "select-category": "Wybierz kategorię", "set-parent-category": "Ustaw nadrzędną kategorie", @@ -50,8 +50,8 @@ "privileges.no-users": "Brak uprawnień specyficznych dla użytkowników w tej kategorii", "privileges.section-group": "Grupa", "privileges.group-private": "Ta grupa jest prywatna", - "privileges.inheritance-exception": "This group does not inherit privileges from registered-users group", - "privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group", + "privileges.inheritance-exception": "W tej grupie nie obowiązują przywileje z grup dla zarejestrowanych użytkowników", + "privileges.banned-user-inheritance": "Przywileje z grup zablokowanych użytkowników obowiązują zablokowanych użytkowników", "privileges.search-group": "Dodaj grupę", "privileges.copy-to-children": "Skopiuj do podrzędnej", "privileges.copy-from-category": "Skopiuj z kategorii", diff --git a/public/language/pl/admin/manage/digest.json b/public/language/pl/admin/manage/digest.json index 26b1c8a39c..7ac8122adc 100644 --- a/public/language/pl/admin/manage/digest.json +++ b/public/language/pl/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Ręczne wysyłanie podsumowania zakończone", "resent-day": "Codzienne podsumowanie", "resent-week": "Tygodniowe podsumowanie", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Miesięczne podsumowanie", "null": "Nigdy", "manual-run": "Włącz ręcznie podsumowania", diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json index 85158e649a..783de0e01c 100644 --- a/public/language/pl/admin/manage/users.json +++ b/public/language/pl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nazwa użytkownika", "users.email": "adres e-mail", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "liczba postów", "users.reputation": "reputacja", diff --git a/public/language/pl/admin/menu.json b/public/language/pl/admin/menu.json index 8c38851bf7..55223f5f0e 100644 --- a/public/language/pl/admin/menu.json +++ b/public/language/pl/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Ogólne", "section-manage": "Zarządzanie", diff --git a/public/language/pl/admin/settings/email.json b/public/language/pl/admin/settings/email.json index d21ded0e7c..76895b0536 100644 --- a/public/language/pl/admin/settings/email.json +++ b/public/language/pl/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Nazwa „Od” widoczna w e-mailach", "smtp-transport": "Transport SMTP", - "smtp-transport.enabled": "Używaj zewnętrznego serwera e-mail do wysyłania e-maili.", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Możesz wybrać z listy dobrze znanych usług lub wskazać usługę niestandardową.", "smtp-transport.service": "Wybierz usługę", "smtp-transport.service-custom": "Usługa niestandardowa", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/pl/admin/settings/general.json b/public/language/pl/admin/settings/general.json index aeee7c067e..04284cbb99 100644 --- a/public/language/pl/admin/settings/general.json +++ b/public/language/pl/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Tytuł strony", "title.short": "Krótki tytuł", "title.short-placeholder": "Jeśli nie wskazano krótkiego tytułu, użyty zostanie tytuł strony", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "Adres URL strony tytułowej", - "title.url-help": "Po kliknięciu w tytuł użytkownik przejdzie pod ten adres. Jeśli pole to jest puste, użytkownik zostanie przeniesiony na stronę główną forum.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Nazwa twojej społeczności", "title.show-in-header": "Pokazuj tytuł strony w nagłówku", "browser-title": "Tytuł karty przeglądarki", @@ -20,9 +20,9 @@ "logo.image": "Obraz", "logo.image-placeholder": "Ścieżka do logo, które ma być wyświetlane w nagłówku forum", "logo.upload": "Prześlij", - "logo.url": "Adres URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "Adres URL logo strony", - "logo.url-help": "Po kliknięciu w logo użytkownik przejdzie pod ten adres. Jeśli pole to jest puste, użytkownik zostanie przeniesiony na stronę główną forum.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alternatywny tekst", "log.alt-text-placeholder": "Alternatywny tekst dla dostępności", "favicon": "Favikona", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/pl/admin/settings/user.json b/public/language/pl/admin/settings/user.json index 8c02686702..3de21179b2 100644 --- a/public/language/pl/admin/settings/user.json +++ b/public/language/pl/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Wyłączone", "digest-freq.daily": "Dzienny ", "digest-freq.weekly": "Tygodniowy", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Miesięczny", "email-chat-notifs": "Wyślij powiadomienie email, jeśli dostanę nową wiadomość, a nie jestem on-line", "email-post-notif": "Wyślij wiadomość email, kiedy w tematach, które subskrybuję, pojawią się odpowiedzi", diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 80b378c88c..90860a6ba5 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Nie możesz prowadzić rozmów, dopóki twój email nie zostanie potwierdzony. Kliknij tutaj, aby potwierdzić swój email.", - "email-not-confirmed-email-sent": "Twój e-mail nie został jeszcze potwierdzony, sprawdź swoją skrzynkę pocztową, aby znaleźć e-mail z potwierdzeniem. Nie będziesz mógł dodawać postów ani czatować, dopóki Twój adres e-mail nie zostanie potwierdzony.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Nie byliśmy w stanie potwierdzić Twojego adresu e-mail. Spróbuj później.", "confirm-email-already-sent": "Email potwierdzający został już wysłany, proszę odczekaj jeszcze %1 minut(y), aby wysłać kolejny.", "sendmail-not-found": "Program sendmail nie został znaleziony, proszę upewnij się, że jest zainstalowany i możliwy do uruchomienia przez użytkownika uruchamiającego NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Już dodałeś ten post do zakładek", "already-unbookmarked": "Już usunąłeś ten post z zakładek", "cant-ban-other-admins": "Nie możesz zbanować innych adminów!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Jesteś jedynym administratorem. Dodaj innego użytkownika jako administratora przed usunięciem siebie z tej grupy", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Usuń uprawnienia administratora z tego konta przed próbą jego usunięcia.", diff --git a/public/language/pl/groups.json b/public/language/pl/groups.json index 10210f90fb..70c903b8a0 100644 --- a/public/language/pl/groups.json +++ b/public/language/pl/groups.json @@ -35,7 +35,7 @@ "details.member_count": "Liczba Członków", "details.creation_date": "Data Utworzenia", "details.description": "Opis", - "details.member-post-cids": "Category IDs to display posts from", + "details.member-post-cids": "ID kategorii, z której wyświetlone są posty", "details.badge_preview": "Podgląd etykiety", "details.change_icon": "Zmień ikonę", "details.change_label_colour": "Zmień kolor etykiety", diff --git a/public/language/pl/register.json b/public/language/pl/register.json index 18e2303972..85efebfb12 100644 --- a/public/language/pl/register.json +++ b/public/language/pl/register.json @@ -18,10 +18,10 @@ "agree_to_terms_of_use": "Zgadzam się na powyższe warunki", "terms_of_use_error": "Musisz zaakceptować warunki korzystania z serwisu", "registration-added-to-queue": "Twoja rejestracja została dodana do kolejki oczekujących na akceptację. Otrzymasz e-mail, kiedy zostanie zatwierdzona przez administratora.", - "registration-queue-average-time": "Our average time for approving memberships is %1 hours %2 minutes.", - "registration-queue-auto-approve-time": "Your membership to this forum will be fully activated in up to %1 hours.", - "interstitial.intro": "We'd like some additional information in order to update your account…", - "interstitial.intro-new": "We'd like some additional information before we can create your account…", + "registration-queue-average-time": "Nasz średni czas zatwierdzania członkostwa wynosi %1 godzin i %2 minut.", + "registration-queue-auto-approve-time": "Twoje członkostwo na tym forum zostanie w pełni aktywowane w ciągu maksymalnie %1 godzin.", + "interstitial.intro": "Do zaktualizowania Twojego konta potrzebne są dodatkowe informacje…", + "interstitial.intro-new": "Do utworzenia Twojego konta potrzebne są dodatkowe informacje.", "interstitial.errors-found": "Please review the entered information:", "gdpr_agree_data": "Wyrażam zgodę na zbieranie i przetwarzanie moich danych przez tę stronę.", "gdpr_agree_email": "Wyrażam zgodę na otrzymywanie e-maili z podsumowaniami i powiadomieniami od tej strony.", diff --git a/public/language/pl/top.json b/public/language/pl/top.json new file mode 100644 index 0000000000..6dbf85cad0 --- /dev/null +++ b/public/language/pl/top.json @@ -0,0 +1,4 @@ +{ + "title": "Najlepsze", + "no_top_topics": "Nie ma żadnych tematów w najlepszych" +} \ No newline at end of file diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json index a5232eb3fe..9dd1311fb4 100644 --- a/public/language/pl/topic.json +++ b/public/language/pl/topic.json @@ -20,8 +20,8 @@ "login-to-view": "Zaloguj się by zobaczyć", "edit": "Edytuj", "delete": "Usuń", - "delete-event": "Delete Event", - "delete-event-confirm": "Are you sure you want to delete this event?", + "delete-event": "Usuń zdarzenie", + "delete-event-confirm": "Czy na pewno chcesz usunąć to zdarzenie?", "purge": "Wymaż", "restore": "Przywróć", "move": "Przenieś", @@ -32,20 +32,20 @@ "tools": "Narzędzia", "locked": "Zablokowany", "pinned": "Przypięty", - "pinned-with-expiry": "Pinned until %1", + "pinned-with-expiry": "Przypięte do %1", "scheduled": "Zaplanowany", "moved": "Przeniesiony", - "moved-from": "Moved from %1", + "moved-from": "Przeniesiony z %1", "copy-ip": "Kopiuj IP", "ban-ip": "Blokuj IP", "view-history": "Historia edycji", "locked-by": "Zamknięto przez", "unlocked-by": "Odblokowano przez", "pinned-by": "Przypięto przez", - "unpinned-by": "Unpinned by", - "deleted-by": "Deleted by", - "restored-by": "Restored by", - "moved-from-by": "Moved from %1 by", + "unpinned-by": "Odpięty przez", + "deleted-by": "Usunięty przez", + "restored-by": "Przywrócony przez", + "moved-from-by": "Przeniesiony z %1 przez", "queued-by": "Post queued for approval →", "backlink": "Referenced by", "bookmark_instructions": "Kliknij tutaj, by powrócić do ostatniego przeczytanego postu w tym temacie.", @@ -53,7 +53,7 @@ "flag-user": "Zgłoś tego użytkownika", "already-flagged": "Już zgłoszono", "view-flag-report": "Zobacz zgłoszenie", - "resolve-flag": "Resolve Flag", + "resolve-flag": "Oznacz flagę jako rozwiązaną", "merged_message": "Ten temat został połączony z %2", "deleted_message": "Ten temat został usunięty. Mogą go zobaczyć tylko użytkownicy upoważnieni do zarządzania tematami.", "following_topic.message": "Będziesz teraz otrzymywać powiadomienia o nowych odpowiedziach w tym temacie.", @@ -95,16 +95,16 @@ "thread_tools.purge_confirm": "Na pewno chcesz wyczyścić ten temat?", "thread_tools.merge_topics": "Połącz tematy", "thread_tools.merge": "Połącz", - "topic_move_success": "This topic will be moved to \"%1\" shortly. Click here to undo.", - "topic_move_multiple_success": "These topics will be moved to \"%1\" shortly. Click here to undo.", - "topic_move_all_success": "All topics will be moved to \"%1\" shortly. Click here to undo.", - "topic_move_undone": "Topic move undone", - "topic_move_posts_success": "Posts will be moved shortly. Click here to undo.", - "topic_move_posts_undone": "Post move undone", + "topic_move_success": "Ten temat zostanie wkrótce przeniesiony do \"%1\". Naciśnij tutaj by to cofnąć.", + "topic_move_multiple_success": "Te tematy zostaną wkrótce przeniesione do \"%1\". Naciśnij tutaj by to cofnąć.", + "topic_move_all_success": "Wszystkie tematy zostaną wkrótce przeniesione do \"%1\". Naciśnij tutaj by to cofnąć.", + "topic_move_undone": "Cofnięto przenoszenie tematu", + "topic_move_posts_success": "Posty zostaną wkrótce przeniesione. Naciśnij tutaj by to cofnąć.", + "topic_move_posts_undone": "Cofnięto przenoszenie postów", "post_delete_confirm": "Czy na pewno chcesz usunąć ten post?", "post_restore_confirm": "Czy na pewno chcesz przywrócić ten post?", "post_purge_confirm": "Czy na pewno chcesz wyczyścić ten post?", - "pin-modal-expiry": "Expiration Date", + "pin-modal-expiry": "Data wygaśnięcia", "pin-modal-help": "You can optionally set an expiration date for the pinned topic(s) here. Alternatively, you can leave this field blank to have the topic stay pinned until it is manually unpinned.", "load_categories": "Ładowanie kategorii", "confirm_move": "Przenieś", @@ -118,12 +118,12 @@ "move_post": "Przenieś post", "post_moved": "Post został przeniesiony!", "fork_topic": "Skopiuj temat", - "enter-new-topic-title": "Enter new topic title", + "enter-new-topic-title": "Wpisz nowy tytuł tematu", "fork_topic_instruction": "Zaznacz posty, które chcesz skopiować", "fork_no_pids": "Nie zaznaczono żadnych postów!", - "no-posts-selected": "No posts selected!", - "x-posts-selected": "%1 post(s) selected", - "x-posts-will-be-moved-to-y": "%1 post(s) will be moved to \"%2\"", + "no-posts-selected": "Nie zaznaczono żadnych postów!", + "x-posts-selected": "Zaznaczono %1 post(-ów)", + "x-posts-will-be-moved-to-y": "%1 post(-ów) zostanie przeniesione do \"%2\"", "fork_pid_count": "Zaznaczono %1 post(-ów)", "fork_success": "Temat został skopiowany. Kliknij tutaj, aby do niego przejść.", "delete_posts_instruction": "Zaznacz posty, które chcesz usunąć/wyczyścić", @@ -132,17 +132,18 @@ "merge-options": "Opcję łączenia tematów", "merge-select-main-topic": "Wybierz główny temat", "merge-new-title-for-topic": "Nowy tytuł tematu", - "topic-id": "Topic ID", + "topic-id": "Identyfikator tematu", "move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic", "change_owner_instruction": "Kliknij w posty, które chcesz przypisać do innego użytkownika", "composer.title_placeholder": "Tutaj wpisz tytuł tematu...", "composer.handle_placeholder": "Tutaj wpisz swoje imię/nazwę", "composer.discard": "Odrzuć", "composer.submit": "Utwórz", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Odpowiedź na %1", "composer.new_topic": "Nowy temat", - "composer.editing": "Editing", + "composer.editing": "Edytowanie", "composer.uploading": "wysyłanie...", "composer.thumb_url_label": "Wklej adres miniaturki tematu", "composer.thumb_title": "Dodaj miniaturkę do tego tematu", @@ -159,7 +160,7 @@ "newest_to_oldest": "Najpierw najnowsze", "most_votes": "Najwięcej głosów", "most_posts": "Najwięcej postów", - "most_views": "Most Views", + "most_views": "Najwięcej wyświetleń", "stale.title": "Stworzyć nowy temat?", "stale.warning": "Temat, na który chcesz udzielić odpowiedzi, jest dość stary. Czy nie wolisz utworzyć nowego tematu i jedynie odnieść się do tego?", "stale.create": "Stwórz nowy temat", @@ -171,13 +172,13 @@ "diffs.current-revision": "wersja obecna", "diffs.original-revision": "pierwsza zmiana", "diffs.restore": "Przywróć tę wersję", - "diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.", + "diffs.restore-description": "Nowa wersja zostanie dodana do historii edycji tego postu po przywróceniu.", "diffs.post-restored": "Post został przywrócony do poprzedniej wersji", - "diffs.delete": "Delete this revision", - "diffs.deleted": "Revision deleted", + "diffs.delete": "Usuń tę wersję", + "diffs.deleted": "Wersja usunięta", "timeago_later": "%1 później", "timeago_earlier": "%1 wcześniej", - "first-post": "First post", - "last-post": "Last post", - "post-quick-reply": "Post quick reply" + "first-post": "Pierwszy post", + "last-post": "Ostatni post", + "post-quick-reply": "Wyślij szybką odpowiedź" } \ No newline at end of file diff --git a/public/language/pl/user.json b/public/language/pl/user.json index 91476b411f..7bf84c9427 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -94,6 +94,7 @@ "digest_off": "Wyłączone", "digest_daily": "Codziennie", "digest_weekly": "Co tydzień", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Co miesiąc", "has_no_follower": "Ten użytkownik nie ma jeszcze żadnych obserwujących", "follows_no_one": "Ten użytkownik jeszcze nikogo nie obserwuje", diff --git a/public/language/pt-BR/admin/advanced/events.json b/public/language/pt-BR/admin/advanced/events.json index a03335b8ef..6a6aa9b69d 100644 --- a/public/language/pt-BR/admin/advanced/events.json +++ b/public/language/pt-BR/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Não há eventos", "control-panel": "Painel de Controle de Eventos", "delete-events": "Excluir Eventos", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filtros", "filters-apply": "Aplicar Filtros", "filter-type": "Tipo de Evento", diff --git a/public/language/pt-BR/admin/dashboard.json b/public/language/pt-BR/admin/dashboard.json index 5769a80e97..e59eb05ad1 100644 --- a/public/language/pt-BR/admin/dashboard.json +++ b/public/language/pt-BR/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Conexões", - "anonymous-registered-users": "Anônimos vs Usuários Registrados", - "anonymous": "Anônimo", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registrado", "user-presence": "Presença de Usuário", @@ -68,6 +68,7 @@ "unread": "Não-lidos", "high-presence-topics": "Tópicos de Alta Participação", + "popular-searches": "Popular Searches", "graphs.page-views": "Páginas Visualizadas", "graphs.page-views-registered": "Páginas Visualizadas por Registrados", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Páginas Visualizadas por Bot", "graphs.unique-visitors": "Visitantes Únicos", "graphs.registered-users": "Usuários Registrados", - "graphs.anonymous-users": "Usuários Anônimos", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Última vez reiniciado por", "no-users-browsing": "Nenhum usuário navegando", "back-to-dashboard": "De volta ao Painel", "details.no-users": "Nenhum usuário ingressou dentro do período de tempo selecionado", "details.no-topics": "Nenhum tópico foi postado dentro do período de tempo selecionado", + "details.no-searches": "No searches have been made yet", "details.no-logins": "Nenhum login foi registrado dentro do período de tempo selecionado", "details.logins-static": "O NodeBB só salva os dados da sessão por %1 dias, então esta tabela abaixo mostrará apenas as sessões ativas mais recentemente", "details.logins-login-time": "Hora de Login" diff --git a/public/language/pt-BR/admin/general/dashboard.json b/public/language/pt-BR/admin/general/dashboard.json deleted file mode 100644 index fc9b25d38d..0000000000 --- a/public/language/pt-BR/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Tráfego do Forum", - "page-views": "Visualizações de Página", - "unique-visitors": "Visitantes Únicos", - "new-users": "New Users", - "posts": "Posts", - "topics": "Tópicos", - "page-views-seven": "Últimos 7 Dias", - "page-views-thirty": "Últimos 30 Dias", - "page-views-last-day": "Últimas 24 horas", - "page-views-custom": "Intervalo de Data Personalizado", - "page-views-custom-start": "Ínicio do Intervalo", - "page-views-custom-end": "Fim do Intervalo", - "page-views-custom-help": "Entre com um intervalo de data de visualizações de página que gostaria de ver. Se nenhum selecionador de data estiver disponível, o formato aceito é AAAA-MM-DD", - "page-views-custom-error": "Por favor, entre com um intervalo de data válido no formato AAAA-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Todos os Tempos", - - "updates": "Atualizações", - "running-version": "Você está usando o NodeBB v%1.", - "keep-updated": "Sempre se certifique de que o seu NodeBB está atualizado com os últimos patches de segurança e de correções de bugs.", - "up-to-date": "

Você está atualizado

", - "upgrade-available": "

Uma nova versão (v%1) foi lançada. Considere atualizar o seu NodeBB.

", - "prerelease-upgrade-available": "

Esta é uma versão de pré-lançamento desatualizada do NodeBB. Uma nova versão (v%1) foi lançada. Considere atualizar o seu NodeBB.

", - "prerelease-warning": "

Esta é uma versão de pré-lançamento do NodeBB. Bugs inesperados podem ocorrer.

", - "running-in-development": "O fórum está sendo executado em modo de desenvolvedor. O fórum pode estar sujeito a potenciais vulnerabilidades; por favor, entre em contato com o seu administrador de sistemas.", - "latest-lookup-failed": "

Falha ao procurar a versão mais recente disponível do NodeBB

", - - "notices": "Avisos", - "restart-not-required": "Reiniciar não é necessário", - "restart-required": "É necessário reiniciar", - "search-plugin-installed": "Plugin de Pesquisa instalado", - "search-plugin-not-installed": "Plugin de Pesquisa não instalado", - "search-plugin-tooltip": "Instale um plugin de pesquisa na página de plugins para que a funcionalidade de pesquisa seja ativada", - - "control-panel": "Controle do Sistema", - "rebuild-and-restart": "Recompilar & Reiniciar", - "restart": "Reiniciar", - "restart-warning": "Recompilar ou Reiniciar o seu NodeBB desconectará todas as conexões existentes por alguns segundos.", - "restart-disabled": "Recompilar e Reiniciar o seu NodeBB foi desativado, pois parece que você não está fazendo-o por meios apropriados.", - "maintenance-mode": "Modo de Manutenção", - "maintenance-mode-title": "Clique aqui para ativar o modo de manutenção do NodeBB", - "realtime-chart-updates": "Atualização de Gráfico em Tempo Real", - - "active-users": "Usuários Ativos", - "active-users.users": "Usuários", - "active-users.guests": "Visitantes", - "active-users.total": "Total", - "active-users.connections": "Conexões", - - "anonymous-registered-users": "Anônimos vs Usuários Registrados", - "anonymous": "Anônimo", - "registered": "Registrado", - - "user-presence": "Presença de Usuário", - "on-categories": "Na lista de categorias", - "reading-posts": "Lendo posts", - "browsing-topics": "Explorando tópicos", - "recent": "Recente", - "unread": "Não-lidos", - - "high-presence-topics": "Tópicos de Alta Participação", - - "graphs.page-views": "Páginas Visualizadas", - "graphs.page-views-registered": "Páginas Visualizadas por Registrados", - "graphs.page-views-guest": "Páginas Visualizadas por Visitantes", - "graphs.page-views-bot": "Páginas Visualizadas por Bot", - "graphs.unique-visitors": "Visitantes Únicos", - "graphs.registered-users": "Usuários Registrados", - "graphs.anonymous-users": "Usuários Anônimos", - "last-restarted-by": "Última vez reiniciado por", - "no-users-browsing": "Nenhum usuário navegando" -} diff --git a/public/language/pt-BR/admin/general/homepage.json b/public/language/pt-BR/admin/general/homepage.json deleted file mode 100644 index d2a1bb0f7e..0000000000 --- a/public/language/pt-BR/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Página Inicial", - "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 Páginas Iniciais do Usuário", - "home-page-title": "Título da página inicial (padrão \"Home\")" -} \ No newline at end of file diff --git a/public/language/pt-BR/admin/general/languages.json b/public/language/pt-BR/admin/general/languages.json deleted file mode 100644 index 53fa515534..0000000000 --- a/public/language/pt-BR/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Configurações de Idioma", - "description": "O idioma padrão determina as configurações de idioma para todos os usuários que estiverem visitando o seu fórum.
Usuários individuais podem sobrepor o idioma padrão em sua página de configurações de conta.", - "default-language": "Idioma Padrão", - "auto-detect": "Auto Detectar Configurações de Idioma para Convidados" -} \ No newline at end of file diff --git a/public/language/pt-BR/admin/general/navigation.json b/public/language/pt-BR/admin/general/navigation.json deleted file mode 100644 index 84704c797e..0000000000 --- a/public/language/pt-BR/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ícone:", - "change-icon": "modificar", - "route": "Rota:", - "tooltip": "Tooltip:", - "text": "Texto:", - "text-class": "Classe do Texto: opcional", - "class": "Classe: opcional", - "id": "ID: opcional", - - "properties": "Propriedades:", - "groups": "Grupos:", - "open-new-window": "Abrir em uma nova janela", - - "btn.delete": "Deletar", - "btn.disable": "Desativar", - "btn.enable": "Ativar", - - "available-menu-items": "Itens Disponíveis no Menu", - "custom-route": "Rota Personalizada", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/pt-BR/admin/general/social.json b/public/language/pt-BR/admin/general/social.json deleted file mode 100644 index 3c58397604..0000000000 --- a/public/language/pt-BR/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Compartilhamento de Posts", - "info-plugins-additional": "Plugins podem adicionar redes sociais adicionais para compartilhar posts.", - "save-success": "Redes de Compartilhamento de Posts salvas com êxito!" -} \ No newline at end of file diff --git a/public/language/pt-BR/admin/general/sounds.json b/public/language/pt-BR/admin/general/sounds.json deleted file mode 100644 index 9c8d09b9bc..0000000000 --- a/public/language/pt-BR/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notificações", - "chat-messages": "Mensagens de Chat", - "play-sound": "Tocar", - "incoming-message": "Ao receber mensagem", - "outgoing-message": "Ao enviar mensagem", - "upload-new-sound": "Enviar Novo Som", - "saved": "Configurações Salvas" -} \ No newline at end of file diff --git a/public/language/pt-BR/admin/manage/digest.json b/public/language/pt-BR/admin/manage/digest.json index c62371c550..2ef72c7c9e 100644 --- a/public/language/pt-BR/admin/manage/digest.json +++ b/public/language/pt-BR/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Reenvio manual de resumos concluído", "resent-day": "Resumo diário reenviado", "resent-week": "Resumo semanal reenviado", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Resumo mensal reenviado", "null": "Nunca", "manual-run": "Execução de resumo manual:", diff --git a/public/language/pt-BR/admin/manage/users.json b/public/language/pt-BR/admin/manage/users.json index 0ee1d7655d..49f4284e34 100644 --- a/public/language/pt-BR/admin/manage/users.json +++ b/public/language/pt-BR/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nome de usuário", "users.email": "e-mail", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "quantidade de posts", "users.reputation": "reputação", diff --git a/public/language/pt-BR/admin/menu.json b/public/language/pt-BR/admin/menu.json index df133d872f..9e620cd716 100644 --- a/public/language/pt-BR/admin/menu.json +++ b/public/language/pt-BR/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Usuários", "dashboard/topics": "Tópicos", + "dashboard/searches": "Searches", "section-general": "Geral", "section-manage": "Administrar", diff --git a/public/language/pt-BR/admin/settings/email.json b/public/language/pt-BR/admin/settings/email.json index f17e1af1b9..ca02b536d0 100644 --- a/public/language/pt-BR/admin/settings/email.json +++ b/public/language/pt-BR/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "O nome que será mostrado em \"De\" no e-mail.", "smtp-transport": "Trasporte por SMTP", - "smtp-transport.enabled": "Utilizar um servidor de e-mail externo para enviar e-mails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Você pode escolher entre uma lista de serviços conhecidos ou adicionar um personalizado.", "smtp-transport.service": "Escolha um serviço", "smtp-transport.service-custom": "Serviço Personalizado", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/pt-BR/admin/settings/general.json b/public/language/pt-BR/admin/settings/general.json index 13e2a2b391..9527613308 100644 --- a/public/language/pt-BR/admin/settings/general.json +++ b/public/language/pt-BR/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Título do Site", "title.short": "Título Curto", "title.short-placeholder": "Se nenhum título curto for especificado, o título do site será usado", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "A URL do título do site", - "title.url-help": "Quando o título é clicado, enviar os usuários para este endereço. Se deixado em branco, o usuário será enviado para a página inicial do fórum.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Nome da Sua Comunidade", "title.show-in-header": "Mostrar o Título do Site no Cabeçalho", "browser-title": "Título do Navegador", @@ -20,9 +20,9 @@ "logo.image": "Imagem", "logo.image-placeholder": "Caminho de URL do logotipo para mostrar no cabeçalho do fórum", "logo.upload": "Enviar", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "A URL do logo do site", - "logo.url-help": "Quando o logotipo for clicado, enviar usuários para este endereço. Se deixado em branco, o usuário será enviado para a página inicial do fórum.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Todo o Texto", "log.alt-text-placeholder": "Texto alternativo para acessibilidade", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/pt-BR/admin/settings/user.json b/public/language/pt-BR/admin/settings/user.json index bb44efa13a..ecf98a2b12 100644 --- a/public/language/pt-BR/admin/settings/user.json +++ b/public/language/pt-BR/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Desligado", "digest-freq.daily": "Diário", "digest-freq.weekly": "Semanal", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mensal", "email-chat-notifs": "Envie um email se uma nova mensagem de chat chegar e eu não estiver online", "email-post-notif": "Envie um email quando respostas forem dadas a tópicos que estou inscrito", diff --git a/public/language/pt-BR/error.json b/public/language/pt-BR/error.json index 42bd09c915..07b0e0ff18 100644 --- a/public/language/pt-BR/error.json +++ b/public/language/pt-BR/error.json @@ -34,8 +34,9 @@ "email-invited": "O email já foi convidado", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Você não está habilitado a conversar até que seu email seja confirmado, por favor clique aqui para confirmar seu email.", - "email-not-confirmed-email-sent": "Seu e-mail ainda não foi confirmado, verifique sua caixa de entrada para o e-mail de confirmação. Você não poderá postar ou usar o chat até que seu e-mail seja confirmado.", - "no-email-to-confirm": "Sua conta não tem um email definido. Um email é necessário para recuperação de conta. Clique aqui para definir um email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Nós não pudemos confirmar seu email, por gentileza tente novamente mais tarde.", "confirm-email-already-sent": "O email de confirmação já foi enviado, por favor aguarde %1 minuto(s) para enviar outro.", "sendmail-not-found": "O executável do sendmail não pôde ser encontrado. Por favor, certifique-se de que ele está instalado e que está autorizado a ser executado pelo usuário que roda o NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Você já adicionou este post aos favoritos", "already-unbookmarked": "Você já removeu este post dos favoritos", "cant-ban-other-admins": "Você não pode banir outros administradores!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Você é o único administrador. Adicione outro usuário como administrador antes de remover a si mesmo como admin", "account-deletion-disabled": "A exclusão de conta está desabilitada", "cant-delete-admin": "Remova os privilégios de administrador dessa conta antes de tentar excluí-la.", diff --git a/public/language/pt-BR/top.json b/public/language/pt-BR/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/pt-BR/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/pt-BR/topic.json b/public/language/pt-BR/topic.json index 7af51142e4..95d363dbcc 100644 --- a/public/language/pt-BR/topic.json +++ b/public/language/pt-BR/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Digite seu nome/usuário aqui", "composer.discard": "Descartar", "composer.submit": "Enviar", + "composer.additional-options": "Additional Options", "composer.schedule": "Agendar", "composer.replying_to": "Respondendo para %1", "composer.new_topic": "Novo Tópico", diff --git a/public/language/pt-BR/user.json b/public/language/pt-BR/user.json index 102aa0fbfe..0cae3a081e 100644 --- a/public/language/pt-BR/user.json +++ b/public/language/pt-BR/user.json @@ -94,6 +94,7 @@ "digest_off": "Desativado", "digest_daily": "Diariamente", "digest_weekly": "Semanalmente", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mensalmente", "has_no_follower": "Este usuário não possui seguidores :(", "follows_no_one": "Este usuário não está seguindo ninguém :(", diff --git a/public/language/pt-PT/admin/advanced/events.json b/public/language/pt-PT/admin/advanced/events.json index 567cd6d09b..3063f1dbc2 100644 --- a/public/language/pt-PT/admin/advanced/events.json +++ b/public/language/pt-PT/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Não existem eventos", "control-panel": "Painel de Controlo de Eventos", "delete-events": "Apagar Eventos", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filtros", "filters-apply": "Aplicar Filtros", "filter-type": "Tipo de Evento", diff --git a/public/language/pt-PT/admin/dashboard.json b/public/language/pt-PT/admin/dashboard.json index 737a8ef13b..9f590b49c2 100644 --- a/public/language/pt-PT/admin/dashboard.json +++ b/public/language/pt-PT/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Conexões", - "anonymous-registered-users": "Utilizadores Anónimos vs Registados", - "anonymous": "Anónimos", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registados", "user-presence": "Presença dos Utilizadores", @@ -68,6 +68,7 @@ "unread": "Não lidos", "high-presence-topics": " Alta Presença em Tópicos", + "popular-searches": "Popular Searches", "graphs.page-views": "Visualizações de páginas", "graphs.page-views-registered": "Visualizações de páginas por utilizadores registados", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Visualizações de páginas por bots", "graphs.unique-visitors": "Visitantes únicos", "graphs.registered-users": "Utilizadores Registados", - "graphs.anonymous-users": "Utilizadores Anónimos", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Última vez reiniciado por", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/pt-PT/admin/general/dashboard.json b/public/language/pt-PT/admin/general/dashboard.json deleted file mode 100644 index 81b9783003..0000000000 --- a/public/language/pt-PT/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Tráfego do Fórum", - "page-views": "Visualizações de páginas", - "unique-visitors": "Visitantes únicos", - "new-users": "Novos Utilizadores", - "posts": "Publicações", - "topics": "Tópicos", - "page-views-seven": "Últimos 7 Dias", - "page-views-thirty": "Últimos 30 Dias", - "page-views-last-day": "Últimas 24 horas", - "page-views-custom": "Intervalo Personalizado", - "page-views-custom-start": "Início do Intervalo", - "page-views-custom-end": "Fim do Intervalo", - "page-views-custom-help": "Insere um intervalo entre datas de visualizações de página que gostarias de visualizar. Se o selecionador de datas não estiver disponível, o formato aceitável é AAAA-MM-DD", - "page-views-custom-error": "Por favor, insere um intervalo entre datas no formato AAAA-MM-DD", - - "stats.yesterday": "Ontem", - "stats.today": "Hoje", - "stats.last-week": "Última Semana", - "stats.this-week": "Esta Semana", - "stats.last-month": "Último Mês", - "stats.this-month": "Este Mês", - "stats.all": "Desde sempre", - - "updates": "Atualizações", - "running-version": "Estás a executar NodeBB v%1.", - "keep-updated": "Cetifica-te que o teu NodeBB está sempre atualizado para teres as mais recentes correções de segurança e correções de bugs.", - "up-to-date": "

Estás atualizado

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Ocorreu uma falha a obter a versão mais recente disponível para o NodeBB

", - - "notices": "Avisos", - "restart-not-required": "Não é necessário reiniciar", - "restart-required": "É necessário reiniciar", - "search-plugin-installed": "Plugin de pesquisa instalado", - "search-plugin-not-installed": "Plugin de pesquisa não instalado", - "search-plugin-tooltip": "Instala um plugin de pesquisa a partir da página de Plugins para conseguires ativar a funcionalidade de pesquisa", - - "control-panel": "Controlo do Sistema", - "rebuild-and-restart": "Reconstruir e Reiniciar", - "restart": "Reiniciar", - "restart-warning": "Reconstruir ou Reiniciar o teu NodeBB irá terminar todas as conexões existentes por alguns segundos.", - "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": "Modo de Manutenção", - "maintenance-mode-title": "Clica aqui para configurar o modo de manutenção para o teu NodeBB", - "realtime-chart-updates": "Actualizar Gráfico em Tempo Real", - - "active-users": "Utilizadores Ativos", - "active-users.users": "Utilizadores", - "active-users.guests": "Convidados", - "active-users.total": "Total", - "active-users.connections": "Conexões", - - "anonymous-registered-users": "Utilizadores Anónimos vs Registados", - "anonymous": "Anónimos", - "registered": "Registados", - - "user-presence": "Presença dos Utilizadores", - "on-categories": "Na lista de categorias", - "reading-posts": "A ler publicações", - "browsing-topics": "A procurar tópicos", - "recent": "Recente", - "unread": "Não lidos", - - "high-presence-topics": " Alta Presença em Tópicos", - - "graphs.page-views": "Visualizações de páginas", - "graphs.page-views-registered": "Visualizações de páginas por utilizadores registados", - "graphs.page-views-guest": "Visualizações de páginas por convidados", - "graphs.page-views-bot": "Visualizações de páginas por bots", - "graphs.unique-visitors": "Visitantes únicos", - "graphs.registered-users": "Utilizadores Registados", - "graphs.anonymous-users": "Utilizadores Anónimos", - "last-restarted-by": "Última vez reiniciado por", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/pt-PT/admin/general/homepage.json b/public/language/pt-PT/admin/general/homepage.json deleted file mode 100644 index e441f4d687..0000000000 --- a/public/language/pt-PT/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Página Principal", - "description": "Escolhe qual página é apresentada quando os utilizadores navegam para o URL raiz do teu fórum.", - "home-page-route": "Caminho da Página Principal", - "custom-route": "Caminho personalizado", - "allow-user-home-pages": "Permitir página principal personalizada para os utilizadores", - "home-page-title": "Título da página inicial (predefinido \"Página inicial\")" -} \ No newline at end of file diff --git a/public/language/pt-PT/admin/general/languages.json b/public/language/pt-PT/admin/general/languages.json deleted file mode 100644 index 56be63bc12..0000000000 --- a/public/language/pt-PT/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Definições de Idioma", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Idioma Predefinido", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/pt-PT/admin/general/navigation.json b/public/language/pt-PT/admin/general/navigation.json deleted file mode 100644 index 8e5ff802f9..0000000000 --- a/public/language/pt-PT/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ícone:", - "change-icon": "alterar", - "route": "Caminho:", - "tooltip": "Título:", - "text": "Texto:", - "text-class": "Classe: opcional", - "class": "Classe: opcional", - "id": "ID: opcional", - - "properties": "Propriedades:", - "groups": "Grupos:", - "open-new-window": "Abrir numa nova janela", - - "btn.delete": "Apagar", - "btn.disable": "Desativar", - "btn.enable": "Ativar", - - "available-menu-items": "Itens de menu disponíveis", - "custom-route": "Caminho Personalizado", - "core": "sistema", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/pt-PT/admin/general/social.json b/public/language/pt-PT/admin/general/social.json deleted file mode 100644 index e856606a7b..0000000000 --- a/public/language/pt-PT/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Partilhar Publicações", - "info-plugins-additional": "Os plugins podem adicionar outras redes sociais para partilhar publicações.", - "save-success": "Definições de partilhas de publicações em redes sociais guardadas com sucesso!" -} \ No newline at end of file diff --git a/public/language/pt-PT/admin/general/sounds.json b/public/language/pt-PT/admin/general/sounds.json deleted file mode 100644 index 167e6dbed4..0000000000 --- a/public/language/pt-PT/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notificações", - "chat-messages": "Mensagens de conversas", - "play-sound": "Reproduzir", - "incoming-message": "A Receber Mensagem", - "outgoing-message": "A Enviar Mensagem", - "upload-new-sound": "Enviar Novo Som", - "saved": "Definições guardadas" -} \ No newline at end of file diff --git a/public/language/pt-PT/admin/manage/digest.json b/public/language/pt-PT/admin/manage/digest.json index d1a8b0d2a4..83be67644b 100644 --- a/public/language/pt-PT/admin/manage/digest.json +++ b/public/language/pt-PT/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Reenvio do resumo manual concluído", "resent-day": "Resumo diário reenviado", "resent-week": "Resumo semanal reenviado", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Resumo mensal reenviado", "null": "Nunca", "manual-run": "Manual digest run:", diff --git a/public/language/pt-PT/admin/manage/users.json b/public/language/pt-PT/admin/manage/users.json index 366bcf25bf..296d0a8dd9 100644 --- a/public/language/pt-PT/admin/manage/users.json +++ b/public/language/pt-PT/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "nome de utilizador", "users.email": "e-mail", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "publicações", "users.reputation": "reputação", diff --git a/public/language/pt-PT/admin/menu.json b/public/language/pt-PT/admin/menu.json index 25d60dd92d..925af96d95 100644 --- a/public/language/pt-PT/admin/menu.json +++ b/public/language/pt-PT/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Geral", "section-manage": "Gerir", diff --git a/public/language/pt-PT/admin/settings/email.json b/public/language/pt-PT/admin/settings/email.json index 8ec1b5c482..8e9e871abc 100644 --- a/public/language/pt-PT/admin/settings/email.json +++ b/public/language/pt-PT/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Selecione um serviço", "smtp-transport.service-custom": "Serviço Personalizado", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/pt-PT/admin/settings/general.json b/public/language/pt-PT/admin/settings/general.json index 17c4855fd2..f5c13ef595 100644 --- a/public/language/pt-PT/admin/settings/general.json +++ b/public/language/pt-PT/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Título do Site", "title.short": "Título Curto", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "O URL do título do site", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Procurar Título", @@ -20,9 +20,9 @@ "logo.image": "Imagem", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Enviar", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "O URL do logótipo do site", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Texto Alternativo", "log.alt-text-placeholder": "Texto alternativo para acessibilidade", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/pt-PT/admin/settings/user.json b/public/language/pt-PT/admin/settings/user.json index 41ebad0764..eb7ee976c1 100644 --- a/public/language/pt-PT/admin/settings/user.json +++ b/public/language/pt-PT/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Desligado", "digest-freq.daily": "Diariamente ", "digest-freq.weekly": "Semanalmente", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mensalmente", "email-chat-notifs": "Enviar um e-mail se receber uma nova mensagem e não estiver online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/pt-PT/error.json b/public/language/pt-PT/error.json index 3c960870db..2750c5b577 100644 --- a/public/language/pt-PT/error.json +++ b/public/language/pt-PT/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Não podes utilizar o chat enquanto não confirmares o teu e-mail, por favor clica aqui para confirmares o teu e-mail.", - "email-not-confirmed-email-sent": "O teu e-mail ainda não foi confirmado, por favor verifica a tua caixa de entrada para obteres o e-mail de confirmação. Não poderás publicar ou conversar até que o teu e-mail seja confirmado.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Não conseguimos confirmar o teu e-mail, por favor tenta mais tarde.", "confirm-email-already-sent": "O e-mail de confirmação já foi enviado, por favor espera %1 minuto(s) para enviares outro.", "sendmail-not-found": "O executável sendmail não foi encontrado, por favor assegura-te que se encontra instalado e executável pelo utilizador a correr o NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Já marcaste esta publicação", "already-unbookmarked": "Já desmarcaste esta publicação", "cant-ban-other-admins": "Não podes banir outros administradores!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "És o único administrador. Adicionar outro utilizador como administrador antes de te removeres como administrador.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove os privilégios de administrador desta conta antes de tentares apagá-la.", diff --git a/public/language/pt-PT/top.json b/public/language/pt-PT/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/pt-PT/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/pt-PT/topic.json b/public/language/pt-PT/topic.json index 65aa9a3bf2..21d294c265 100644 --- a/public/language/pt-PT/topic.json +++ b/public/language/pt-PT/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Descartar", "composer.submit": "Publicar", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Respondendo a %1", "composer.new_topic": "Novo tópico", diff --git a/public/language/pt-PT/user.json b/public/language/pt-PT/user.json index 003633ab72..f7b641ea8b 100644 --- a/public/language/pt-PT/user.json +++ b/public/language/pt-PT/user.json @@ -94,6 +94,7 @@ "digest_off": "Desligado", "digest_daily": "Diariamente ", "digest_weekly": "Semanalmente", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mensalmente", "has_no_follower": "Este utilizador não tem nenhum seguidor :(", "follows_no_one": "Este utilizador não está a seguir ninguém :(", diff --git a/public/language/ro/admin/advanced/events.json b/public/language/ro/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/ro/admin/advanced/events.json +++ b/public/language/ro/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/ro/admin/dashboard.json b/public/language/ro/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/ro/admin/dashboard.json +++ b/public/language/ro/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/ro/admin/general/dashboard.json b/public/language/ro/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/ro/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/ro/admin/general/homepage.json b/public/language/ro/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/ro/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/ro/admin/general/languages.json b/public/language/ro/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/ro/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/ro/admin/general/navigation.json b/public/language/ro/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/ro/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/ro/admin/general/social.json b/public/language/ro/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/ro/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/ro/admin/general/sounds.json b/public/language/ro/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/ro/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/ro/admin/manage/digest.json b/public/language/ro/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/ro/admin/manage/digest.json +++ b/public/language/ro/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/ro/admin/manage/users.json b/public/language/ro/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/ro/admin/manage/users.json +++ b/public/language/ro/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/ro/admin/menu.json b/public/language/ro/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/ro/admin/menu.json +++ b/public/language/ro/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/ro/admin/settings/email.json b/public/language/ro/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/ro/admin/settings/email.json +++ b/public/language/ro/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/ro/admin/settings/general.json b/public/language/ro/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/ro/admin/settings/general.json +++ b/public/language/ro/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/ro/admin/settings/user.json b/public/language/ro/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/ro/admin/settings/user.json +++ b/public/language/ro/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/ro/error.json b/public/language/ro/error.json index ab5ba55acd..d21bdd06c4 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Nu vei putea trimite mesaje daca email-ul tau nu e confirmat, click aici sa il confirmi.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Mail-ul tau nu a putut fi confirmat, te rog incearca mai tarziu.", "confirm-email-already-sent": "Email-ul de confirmare ti-a fost trimis, asteapta te rog %1 minut(e) ca sa trimiti inca unul.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Nu poți bana alți administratori!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/ro/top.json b/public/language/ro/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/ro/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/ro/topic.json b/public/language/ro/topic.json index e418c2667c..e0cf667911 100644 --- a/public/language/ro/topic.json +++ b/public/language/ro/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Renunță", "composer.submit": "Trimite", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Îi raspunde lui %1", "composer.new_topic": "Subiect Nou", diff --git a/public/language/ro/user.json b/public/language/ro/user.json index 7293421e86..799a2d2178 100644 --- a/public/language/ro/user.json +++ b/public/language/ro/user.json @@ -94,6 +94,7 @@ "digest_off": "Închis", "digest_daily": "Zilnic", "digest_weekly": "Săptămânal", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Lunar", "has_no_follower": "Pe acest utilizator nu îl urmărește nimeni :(", "follows_no_one": "Acest utilizator nu urmărește pe nimeni :(", diff --git a/public/language/ru/admin/advanced/events.json b/public/language/ru/admin/advanced/events.json index ffa09e2b83..a1647e7c6b 100644 --- a/public/language/ru/admin/advanced/events.json +++ b/public/language/ru/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Нет событий", "control-panel": "Панель управления событиями", "delete-events": "Удалить события", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Фильтр", "filters-apply": "Применить фильтр", "filter-type": "Тип события", diff --git a/public/language/ru/admin/dashboard.json b/public/language/ru/admin/dashboard.json index 067bcae894..f8e093c304 100644 --- a/public/language/ru/admin/dashboard.json +++ b/public/language/ru/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Всего", "active-users.connections": "Соединений", - "anonymous-registered-users": "Анонимные / Авторизованные", - "anonymous": "Анонимные", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Авторизованные", "user-presence": "Присутствие", @@ -68,6 +68,7 @@ "unread": "Просм. непрочитанные", "high-presence-topics": "Популярные темы", + "popular-searches": "Popular Searches", "graphs.page-views": "Просмотры", "graphs.page-views-registered": "Просм. авторизованными", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Просмотров ботами", "graphs.unique-visitors": "Уникальных посетителей", "graphs.registered-users": "Авторизованных пользователей", - "graphs.anonymous-users": "Анонимных пользователей", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Последний перезапуск:", "no-users-browsing": "Просмотров нет", "back-to-dashboard": "Вернуться на Панель управления", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/ru/admin/general/dashboard.json b/public/language/ru/admin/general/dashboard.json deleted file mode 100644 index 77ccd68c98..0000000000 --- a/public/language/ru/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Трафик ", - "page-views": "Просмотров", - "unique-visitors": "Посетителей", - "new-users": "Новых пользователей", - "posts": "Сообщений", - "topics": "Тем", - "page-views-seven": "За 7 дней", - "page-views-thirty": "За 30 дней", - "page-views-last-day": "За 24 часа", - "page-views-custom": "Другой диапазон дат", - "page-views-custom-start": "Начало", - "page-views-custom-end": "Конец", - "page-views-custom-help": "Укажите начало и конец периода, за который вы хотите получить данные о просмотрах. Если выбор даты не доступен, то вы можете указать дату в формате ГГГГ-ММ-ДД ", - "page-views-custom-error": "Пожалуйста, укажите правильный диапазон дат в формате ГГГГ-ММ-ДД", - - "stats.yesterday": "Вчера", - "stats.today": "Сегодня", - "stats.last-week": "За прошл. неделю", - "stats.this-week": "За эту неделю", - "stats.last-month": "За прошл. месяц", - "stats.this-month": "За этот месяц", - "stats.all": "За всё время", - - "updates": "Обновления", - "running-version": "Вы используете NodeBB версии %1", - "keep-updated": "Пожалуйста, следите за тем, чтобы NodeBB своевременно обновлялся и получал все необходимые исправления ошибок и уязвимостей.", - "up-to-date": "

Вы используете актуальную версию

", - "upgrade-available": "

Вышла новая версия NodeBB (v%1). Хотите установить обновление?

", - "prerelease-upgrade-available": "

Вы используете устаревшую предрелизную версию NodeBB. Вышла новая (v%1). Хотите установить обновление?

", - "prerelease-warning": "

Вы используете предрелизную версию NodeBB. Вы можете столкнуться с разнообразными ошибками в её работе.

", - "running-in-development": "Форум работает в режиме для разработчиков. Это значит, что он может быть более уязвим для внешних угроз; пожалуйста, свяжитесь с вашим сисадмином.", - "latest-lookup-failed": "

Не удалось проверить наличие обновлений NodeBB

", - - "notices": "Примечания", - "restart-not-required": "Перезапуск не требуется", - "restart-required": "Требуется перезапуск", - "search-plugin-installed": "Плагин поиска установлен", - "search-plugin-not-installed": "Плагин поиска не установлен", - "search-plugin-tooltip": "Чтобы включить функцию поиска, установите соответствующий плагин на странице управления плагинами", - - "control-panel": "Управление системой", - "rebuild-and-restart": "Пересобрать и Перезапустить", - "restart": "Перезапустить", - "restart-warning": "Пересборка или перезапуск вашего NodeBB на несколько секунд оборвёт все имеющиеся соединения.", - "restart-disabled": "Пересборка и перезапуск вашего NodeBB была отключена, поскольку вы запустили форум без использования соответствующего демона.", - "maintenance-mode": "Режим техобслуживания", - "maintenance-mode-title": "Нажмите, чтобы включить и настроить режим техобслуживания", - "realtime-chart-updates": "Обновление графиков в реальном времени", - - "active-users": "Активных посетителей", - "active-users.users": "Польз.", - "active-users.guests": "Гостей", - "active-users.total": "Всего", - "active-users.connections": "Соединений", - - "anonymous-registered-users": "Анонимные / Авторизованные", - "anonymous": "Анонимные", - "registered": "Авторизованные", - - "user-presence": "Присутствие", - "on-categories": "В списке категорий", - "reading-posts": "Читают сообщения", - "browsing-topics": "Просматривают темы", - "recent": "Просм. последние темы", - "unread": "Просм. непрочитанные", - - "high-presence-topics": "Популярные темы", - - "graphs.page-views": "Просмотры", - "graphs.page-views-registered": "Просм. авторизованными", - "graphs.page-views-guest": "Просмотров гостями", - "graphs.page-views-bot": "Просмотров ботами", - "graphs.unique-visitors": "Уникальных посетителей", - "graphs.registered-users": "Авторизованных пользователей", - "graphs.anonymous-users": "Анонимных пользователей", - "last-restarted-by": "Последний перезапуск:", - "no-users-browsing": "Просмотров нет" -} diff --git a/public/language/ru/admin/general/homepage.json b/public/language/ru/admin/general/homepage.json deleted file mode 100644 index 2b6c14fe4d..0000000000 --- a/public/language/ru/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Главная страница", - "description": "Выберите, какую страницу показывать по корневому URL форума.", - "home-page-route": "Маршрут для главной страницы", - "custom-route": "Другой маршрут", - "allow-user-home-pages": "Разрешить пользователям выбирать персональные главные страницы", - "home-page-title": "Заголовок домашней страницы («Главная» по умолчанию)" -} \ No newline at end of file diff --git a/public/language/ru/admin/general/languages.json b/public/language/ru/admin/general/languages.json deleted file mode 100644 index f7a6b365f9..0000000000 --- a/public/language/ru/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Языковые настройки", - "description": "Язык по умолчанию определяет языковые настройки для всех посетителей форума.
Зарегистрированные пользователи могут выбрать другой язык в настройках своего профиля.", - "default-language": "Язык по умолчанию", - "auto-detect": "Автоматически определять язык для гостей" -} \ No newline at end of file diff --git a/public/language/ru/admin/general/navigation.json b/public/language/ru/admin/general/navigation.json deleted file mode 100644 index 4bcef87827..0000000000 --- a/public/language/ru/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Иконка:", - "change-icon": "изменить", - "route": "Маршрут:", - "tooltip": "Подсказка:", - "text": "Текст:", - "text-class": "Класс текста: опционально", - "class": "Класс: опционально", - "id": "ID: опционально", - - "properties": "Свойства:", - "groups": "Группы:", - "open-new-window": "Открывать в новом окне", - - "btn.delete": "Удалить", - "btn.disable": "Выключить", - "btn.enable": "Включить", - - "available-menu-items": "Доступные пункты меню", - "custom-route": "Произвольный маршрут", - "core": "ядро", - "plugin": "плагин" -} \ No newline at end of file diff --git a/public/language/ru/admin/general/social.json b/public/language/ru/admin/general/social.json deleted file mode 100644 index 7a4239e955..0000000000 --- a/public/language/ru/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Делиться сообщениями в", - "info-plugins-additional": "Плагины могут добавить дополнительные опции для функции «поделиться сообщением»", - "save-success": "Настройки функции «поделиться сообщением» сохранены!" -} \ No newline at end of file diff --git a/public/language/ru/admin/general/sounds.json b/public/language/ru/admin/general/sounds.json deleted file mode 100644 index f84b71d629..0000000000 --- a/public/language/ru/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Уведомления", - "chat-messages": "Сообщения чата", - "play-sound": "Воспроизвести", - "incoming-message": "Входящие сообщения", - "outgoing-message": "Исходящие сообщения", - "upload-new-sound": "Загрузить новый звук", - "saved": "Настройки сохранены" -} \ No newline at end of file diff --git a/public/language/ru/admin/manage/digest.json b/public/language/ru/admin/manage/digest.json index e92c46b18a..aa17069fb7 100644 --- a/public/language/ru/admin/manage/digest.json +++ b/public/language/ru/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Повтор рассылки вручную завершён", "resent-day": "Ежедневная рассылка отправлена повторно", "resent-week": "Еженедельная рассылка отправлена повторно", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Ежемесячная рассылка отправлена повторно", "null": "Никогда", "manual-run": "Повтор вручную:", diff --git a/public/language/ru/admin/manage/users.json b/public/language/ru/admin/manage/users.json index c713895473..33642a429f 100644 --- a/public/language/ru/admin/manage/users.json +++ b/public/language/ru/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "ID", "users.username": "Логин", "users.email": "E-mail", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "Сообщения", "users.reputation": "Репутация", diff --git a/public/language/ru/admin/menu.json b/public/language/ru/admin/menu.json index 1cdfbb55d7..76f895e641 100644 --- a/public/language/ru/admin/menu.json +++ b/public/language/ru/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Авторизаций", "dashboard/users": "Пользователи", "dashboard/topics": "Темы", + "dashboard/searches": "Searches", "section-general": "Общие", "section-manage": "Управление", diff --git a/public/language/ru/admin/settings/email.json b/public/language/ru/admin/settings/email.json index c7ba003930..05028e66f2 100644 --- a/public/language/ru/admin/settings/email.json +++ b/public/language/ru/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Имя отправителя письма (или название форума).", "smtp-transport": "Сервис SMTP", - "smtp-transport.enabled": "Использовать сторонний сервис для рассылки писем", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Выберите один из популярных сервисов или укажите свой почтовый сервер.", "smtp-transport.service": "Выберите сервис", "smtp-transport.service-custom": "Другой сервис", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/ru/admin/settings/general.json b/public/language/ru/admin/settings/general.json index 7daa89aa62..06263dbb2d 100644 --- a/public/language/ru/admin/settings/general.json +++ b/public/language/ru/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Название сайта", "title.short": "Краткий заголовок", "title.short-placeholder": "Если здесь ничего не указано, будет использовано название сайта", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "URL для названия сайта", - "title.url-help": "Когда пользователь нажмёт на название сайта, он перейдёт по этой ссылке.\nОставьте поле пустым, чтобы отправлять пользователей на главную страницу форума.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Название вашего сообщества", "title.show-in-header": "Показывать название в шапке сайта", "browser-title": "Название для браузера", @@ -20,9 +20,9 @@ "logo.image": "Логотип в шапке сайта", "logo.image-placeholder": "Путь к файлу логотипа ", "logo.upload": "Загрузить", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "URL для логотипа", - "logo.url-help": "Когда пользователь нажмёт на логотип, он перейдёт по этой ссылке.\nОставьте поле пустым, чтобы отправлять пользователей на главную страницу форума.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Замещающий текст", "log.alt-text-placeholder": "Текст, который появится, если логотип не загрузится или загрузка изображений будет отключена", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/ru/admin/settings/user.json b/public/language/ru/admin/settings/user.json index 264614898d..9dfd0f7d5d 100644 --- a/public/language/ru/admin/settings/user.json +++ b/public/language/ru/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Отключена", "digest-freq.daily": "Ежедневная", "digest-freq.weekly": "Еженедельная", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Ежемесячная", "email-chat-notifs": "Уведомить по электронной почте, если пришло новое сообщение в чат, а я не в сети", "email-post-notif": "Уведомить по электронной почте, если в отслеживаемой теме появилось новое сообщение", diff --git a/public/language/ru/error.json b/public/language/ru/error.json index 63b9b3f179..20a8a9dbe0 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -34,8 +34,9 @@ "email-invited": "Электронная почта уже была приглашена", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Вы не можете оставлять сообщения, пока ваша электронная почта не подтверждена. Отправить письмо с кодом подтверждения повторно.", - "email-not-confirmed-email-sent": "Ваш адрес электронной почты ещё не подтверждён. Пожалуйста, проверьте ваш почтовый ящик и пройдите по ссылке в письме с кодом подтверждения. Пока ваш e-mail не подтверждён, вы не можете пользоваться чатом или публиковать сообщения.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "По техническим причинам мы не можем подтвердить ваш адрес электронной почты. Приносим вам наши извинения, пожалуйста, попробуйте позже.", "confirm-email-already-sent": "Сообщение для подтверждения регистрации уже выслано на ваш адрес электронной почты. Повторная отправка возможна через %1 мин.", "sendmail-not-found": "Не можем найти sendmail, убедитесь что он установлен и управляется NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Вы уже добавили это сообщение в закладки", "already-unbookmarked": "Вы уже удалили это сообщение из закладок", "cant-ban-other-admins": "Вы не можете заблокировать других администраторов!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Вы единственный администратор. Чтобы отказаться от своих полномочий, пожалуйста, назначьте администратором другого участника.", "account-deletion-disabled": "Удаление аккаунта отключено", "cant-delete-admin": "Чтобы удалить эту учётную запись, сначала надо снять с неё полномочия администратора.", diff --git a/public/language/ru/top.json b/public/language/ru/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/ru/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/ru/topic.json b/public/language/ru/topic.json index ab3da55d0d..87041a00e1 100644 --- a/public/language/ru/topic.json +++ b/public/language/ru/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Введите ваше имя здесь", "composer.discard": "Отменить", "composer.submit": "Отправить", + "composer.additional-options": "Additional Options", "composer.schedule": "Запланировать", "composer.replying_to": "Ответ %1", "composer.new_topic": "Создать тему", diff --git a/public/language/ru/user.json b/public/language/ru/user.json index f7eac3da49..5642660e8b 100644 --- a/public/language/ru/user.json +++ b/public/language/ru/user.json @@ -94,6 +94,7 @@ "digest_off": "Отключена", "digest_daily": "Ежедневная", "digest_weekly": "Еженедельная", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Ежемесячная", "has_no_follower": "На этого пользователя никто не подписан :(", "follows_no_one": "Этот пользователь ни на кого не подписан :(", diff --git a/public/language/rw/admin/advanced/events.json b/public/language/rw/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/rw/admin/advanced/events.json +++ b/public/language/rw/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/rw/admin/dashboard.json b/public/language/rw/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/rw/admin/dashboard.json +++ b/public/language/rw/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/rw/admin/general/dashboard.json b/public/language/rw/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/rw/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/rw/admin/general/homepage.json b/public/language/rw/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/rw/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/rw/admin/general/languages.json b/public/language/rw/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/rw/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/rw/admin/general/navigation.json b/public/language/rw/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/rw/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/rw/admin/general/social.json b/public/language/rw/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/rw/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/rw/admin/general/sounds.json b/public/language/rw/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/rw/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/rw/admin/manage/digest.json b/public/language/rw/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/rw/admin/manage/digest.json +++ b/public/language/rw/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/rw/admin/manage/users.json b/public/language/rw/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/rw/admin/manage/users.json +++ b/public/language/rw/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/rw/admin/menu.json b/public/language/rw/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/rw/admin/menu.json +++ b/public/language/rw/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/rw/admin/settings/email.json b/public/language/rw/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/rw/admin/settings/email.json +++ b/public/language/rw/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/rw/admin/settings/general.json b/public/language/rw/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/rw/admin/settings/general.json +++ b/public/language/rw/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/rw/admin/settings/user.json b/public/language/rw/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/rw/admin/settings/user.json +++ b/public/language/rw/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/rw/error.json b/public/language/rw/error.json index 7b9d56fc4e..51ef2785a9 100644 --- a/public/language/rw/error.json +++ b/public/language/rw/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Ntabwo uremererwa kuganirira mu gikari kuko email yawe itari yemezwa. Kanda hano kugirango wemeze email yawe. ", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Ntabwo email yawe yabashije kwemezwa. Ongera ugerageze mu bundi buryo. ", "confirm-email-already-sent": "Email yo kwemeza yamaze koherezwa. Tegereza iminota (umunota) %1 mbere yo kohereza indi. ", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Ntabwo wakwirukana abandi bayobozi!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Ni wowe muyobozi wenyine. Ongeramo undi muntu nk'umuyobozi mbere y'uko wikura ku buyobozi", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/rw/top.json b/public/language/rw/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/rw/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/rw/topic.json b/public/language/rw/topic.json index 6de704a7b1..69f3834b85 100644 --- a/public/language/rw/topic.json +++ b/public/language/rw/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Byihorere", "composer.submit": "Shyiraho", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Gusubiza %1", "composer.new_topic": "Ikiganiro Gishya", diff --git a/public/language/rw/user.json b/public/language/rw/user.json index 8235f4f6e9..4c548c42bb 100644 --- a/public/language/rw/user.json +++ b/public/language/rw/user.json @@ -94,6 +94,7 @@ "digest_off": "Birafunze", "digest_daily": "Buri Munsi", "digest_weekly": "Buri Cyumweru", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Buri Kwezi", "has_no_follower": "Uyu muntu ntabwo afite abamukurikira :(", "follows_no_one": "Uyu muntu ntabwo akurikira umuntu numwe :(", diff --git a/public/language/sc/admin/advanced/events.json b/public/language/sc/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/sc/admin/advanced/events.json +++ b/public/language/sc/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/sc/admin/dashboard.json b/public/language/sc/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/sc/admin/dashboard.json +++ b/public/language/sc/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/sc/admin/general/dashboard.json b/public/language/sc/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/sc/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/sc/admin/general/homepage.json b/public/language/sc/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/sc/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/sc/admin/general/languages.json b/public/language/sc/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/sc/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/sc/admin/general/navigation.json b/public/language/sc/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/sc/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/sc/admin/general/social.json b/public/language/sc/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/sc/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/sc/admin/general/sounds.json b/public/language/sc/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/sc/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/sc/admin/manage/digest.json b/public/language/sc/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/sc/admin/manage/digest.json +++ b/public/language/sc/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/sc/admin/manage/users.json b/public/language/sc/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/sc/admin/manage/users.json +++ b/public/language/sc/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/sc/admin/menu.json b/public/language/sc/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/sc/admin/menu.json +++ b/public/language/sc/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/sc/admin/settings/email.json b/public/language/sc/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/sc/admin/settings/email.json +++ b/public/language/sc/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/sc/admin/settings/general.json b/public/language/sc/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/sc/admin/settings/general.json +++ b/public/language/sc/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/sc/admin/settings/user.json b/public/language/sc/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/sc/admin/settings/user.json +++ b/public/language/sc/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/sc/error.json b/public/language/sc/error.json index b806ec9367..6eb0983661 100644 --- a/public/language/sc/error.json +++ b/public/language/sc/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "We could not confirm your email, please try again later.", "confirm-email-already-sent": "Confirmation email already sent, please wait %1 minute(s) to send another one.", "sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "You can't ban other admins!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "You are the only administrator. Add another user as an administrator before removing yourself as admin", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Remove administrator privileges from this account before attempting to delete it.", diff --git a/public/language/sc/top.json b/public/language/sc/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/sc/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/sc/topic.json b/public/language/sc/topic.json index 4fdfd25116..0bf27e5997 100644 --- a/public/language/sc/topic.json +++ b/public/language/sc/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Lassa a Pèrdere", "composer.submit": "Imbia", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Replying to %1", "composer.new_topic": "Arresonada Noa", diff --git a/public/language/sc/user.json b/public/language/sc/user.json index 75bb5d915a..47a7d04625 100644 --- a/public/language/sc/user.json +++ b/public/language/sc/user.json @@ -94,6 +94,7 @@ "digest_off": "Off", "digest_daily": "Daily", "digest_weekly": "Weekly", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Monthly", "has_no_follower": "Custu impitadore non tenet perunu sighidore :(", "follows_no_one": "Custu impitadore no est sighende nissunu :(", diff --git a/public/language/sk/admin/advanced/events.json b/public/language/sk/admin/advanced/events.json index 4e1313ab92..7f68cdf8bf 100644 --- a/public/language/sk/admin/advanced/events.json +++ b/public/language/sk/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Žiadne nové udalosti", "control-panel": "Ovládací panel udalostí", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/sk/admin/dashboard.json b/public/language/sk/admin/dashboard.json index 6fef088b74..b1c6670e81 100644 --- a/public/language/sk/admin/dashboard.json +++ b/public/language/sk/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Celkovo", "active-users.connections": "Pripojenia", - "anonymous-registered-users": "Anonymný vs zaregistrovaný používatelia", - "anonymous": "Anonymné", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Zaregistrovaný", "user-presence": "Výskyt používateľa", @@ -68,6 +68,7 @@ "unread": "Neprečitané", "high-presence-topics": "Témy s vysokou účasťou", + "popular-searches": "Popular Searches", "graphs.page-views": "Zobrazenia stránok", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unikátny navštevníci", "graphs.registered-users": "Zarestrovaný užívatelia", - "graphs.anonymous-users": "Neznámy užívatelia", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Posledná obnova od", "no-users-browsing": "Žiadni používatelia neprehliadajú", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/sk/admin/general/dashboard.json b/public/language/sk/admin/general/dashboard.json deleted file mode 100644 index fd1f988bb3..0000000000 --- a/public/language/sk/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Prevádzka fóra", - "page-views": "Zobrazenia stránok", - "unique-visitors": "Jedineční návštevníci", - "new-users": "New Users", - "posts": "Príspevky", - "topics": "Témy", - "page-views-seven": "Posledných 7 dní", - "page-views-thirty": "Posledných 30 dní", - "page-views-last-day": "Posledných 24 hodín", - "page-views-custom": "Podľa rozsahu dátumu", - "page-views-custom-start": "Začiatok rozsahu", - "page-views-custom-end": "Koniec rozsahu", - "page-views-custom-help": "Zadajte rozsah obdobia zobrazenia stránok, ktoré chcete vidieť. Ak nie je obdobie nastavené, predvolený formát je YYYY-MM-DD", - "page-views-custom-error": "Zadajte správny rozsah vo formáte YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Celé obdobie", - - "updates": "Aktualizácie", - "running-version": "Fungujete na NodeBB v%1.", - "keep-updated": "Vždy udržujte NodeBB aktuálne kvôli bezpečnostným záplatám a opravám.", - "up-to-date": "

Máte aktuálnu verziu

", - "upgrade-available": "

Nová verzia (v%1) bola zverejnená. Zvážte aktualizáciu vášho NodeBB.

", - "prerelease-upgrade-available": "

Toto je zastaralá testovacia verzia NodeBB. Nová verzia (v%1) bola zverejnená. Zvážte aktualizáciu vášho NodeBB.

", - "prerelease-warning": "

Toto je skúšobná verzia NodeBB. Môžu sa vyskytnúť rôzne chyby.

", - "running-in-development": "Fórum beží vo vývojárskom režime a môže byť potenciálne zraniteľné. Kontaktujte správcu systému.", - "latest-lookup-failed": "

Chyba pri zistení poslednej dostupnej verzie NodeBB

", - - "notices": "Oznámenia", - "restart-not-required": "Reštart nie je potrebný", - "restart-required": "Je potrebný reštart", - "search-plugin-installed": "Vyhľadávací doplnok bol nainštalovaný", - "search-plugin-not-installed": "Vyhľadávací doplnok nebol nainštalovaný", - "search-plugin-tooltip": "Pre aktivácie funkcie vyhľadávania, nainštalujte rozšírenie pre hľadanie zo stránky rozšírení.", - - "control-panel": "Ovládanie systému", - "rebuild-and-restart": "Znovu zostaviť a reštartovať", - "restart": "Reštartovať", - "restart-warning": "Znovu zostavenie alebo reštartovanie NodeBB odpojí všetky existujúce pripojenia na niekoľko sekúnd.", - "restart-disabled": "Znovu zostavenie a reštartovanie vášho NodeBB bolo zablokované, pretože sa nezdá, že ste bol pripojený cez príslušného „daemona”.", - "maintenance-mode": "Režim údržby", - "maintenance-mode-title": "Pre nastavenia režimu údržby NodeBB, kliknite sem", - "realtime-chart-updates": "Aktualizácie grafov v reálnom čase", - - "active-users": "Aktívny užívatelia", - "active-users.users": "Užívatelia", - "active-users.guests": "Hostia", - "active-users.total": "Celkovo", - "active-users.connections": "Pripojenia", - - "anonymous-registered-users": "Anonymný vs zaregistrovaný používatelia", - "anonymous": "Anonymné", - "registered": "Zaregistrovaný", - - "user-presence": "Výskyt používateľa", - "on-categories": "V zozname kategórií", - "reading-posts": "Čítanie príspevkov", - "browsing-topics": "Prehľadávanie tém", - "recent": "Nedávne", - "unread": "Neprečitané", - - "high-presence-topics": "Témy s vysokou účasťou", - - "graphs.page-views": "Zobrazenia stránok", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unikátny navštevníci", - "graphs.registered-users": "Zarestrovaný užívatelia", - "graphs.anonymous-users": "Neznámy užívatelia", - "last-restarted-by": "Posledná obnova od", - "no-users-browsing": "Žiadni používatelia neprehliadajú" -} diff --git a/public/language/sk/admin/general/homepage.json b/public/language/sk/admin/general/homepage.json deleted file mode 100644 index 08e12e04ca..0000000000 --- a/public/language/sk/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Domovská stránka", - "description": "Vyberte, akú stránku sa zobrazí, keď sa používatelia dostanú do koreňovej adresy URL vášho fóra.", - "home-page-route": "Cesta k domovskej stránke", - "custom-route": "Upraviť cestu", - "allow-user-home-pages": "Povoliť používateľom domovské stránky", - "home-page-title": "Titulok domovskej stránky (Predvolený „Domov”)" -} \ No newline at end of file diff --git a/public/language/sk/admin/general/languages.json b/public/language/sk/admin/general/languages.json deleted file mode 100644 index 96072b9642..0000000000 --- a/public/language/sk/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Jazykové nastavenia", - "description": "Predvolený jazyk určuje nastavenie jazyka pre všetkých používateľov navštevujúcich vaše fórum.
Každý používateľ si môže potom nastaviť predvolený jazyk na stránke nastavenia účtu.", - "default-language": "Predvolený jazyk", - "auto-detect": "Automaticky rozpoznávať nastavenie jazyka pre hostí" -} \ No newline at end of file diff --git a/public/language/sk/admin/general/navigation.json b/public/language/sk/admin/general/navigation.json deleted file mode 100644 index 24125b086b..0000000000 --- a/public/language/sk/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Ikona:", - "change-icon": "zmeniť", - "route": "Cesta:", - "tooltip": "Tip:", - "text": "Text:", - "text-class": "Textová trieda: doporučené", - "class": "Class: optional", - "id": "ID: doporučené", - - "properties": "Vlastnosti:", - "groups": "Groups:", - "open-new-window": "Otvoriť v novom okne", - - "btn.delete": "Odstrániť", - "btn.disable": "Zakázať", - "btn.enable": "Povoliť", - - "available-menu-items": "Dostupné položky ponuky", - "custom-route": "Upraviť cestu", - "core": "jadro", - "plugin": "zásuvný modul" -} \ No newline at end of file diff --git a/public/language/sk/admin/general/social.json b/public/language/sk/admin/general/social.json deleted file mode 100644 index 0b19aa798a..0000000000 --- a/public/language/sk/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Zdieľanie príspevku", - "info-plugins-additional": "Doplnky môžu pridávať ďalšie siete na zdieľanie príspevkov.", - "save-success": "Úspešne uložené siete zdieľajúce príspevky." -} \ No newline at end of file diff --git a/public/language/sk/admin/general/sounds.json b/public/language/sk/admin/general/sounds.json deleted file mode 100644 index c408efe93f..0000000000 --- a/public/language/sk/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Oznámenia", - "chat-messages": "Správy konverzácie", - "play-sound": "Prehrať", - "incoming-message": "Prichádzajúca správa", - "outgoing-message": "Odchádzajúca správa", - "upload-new-sound": "Nahrať novú zvuk", - "saved": "Nastavenie bolo uložené" -} \ No newline at end of file diff --git a/public/language/sk/admin/manage/digest.json b/public/language/sk/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/sk/admin/manage/digest.json +++ b/public/language/sk/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/sk/admin/manage/flags.json b/public/language/sk/admin/manage/flags.json deleted file mode 100644 index 4b11c7990d..0000000000 --- a/public/language/sk/admin/manage/flags.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "daily": "Daily flags", - "by-user": "Označené používateľom", - "by-user-search": "Vyhľadávať označené príspevky podľa používateľa", - "category": "Category", - "sort-by": "Sort By", - "sort-by.most-flags": "Najviac označené", - "sort-by.most-recent": "Most Recent", - "search": "Search", - "dismiss-all": "Dismiss All", - "none-flagged": "Žiadne označené príspevky!", - "posted-in": "Posted in %1", - "read-more": "Read More", - "flagged-x-times": "This post has been flagged %1 time(s):", - "dismiss": "Dismiss this Flag", - "delete-post": "Delete the Post", - - "alerts.confirm-delete-post": "Do you really want to delete this post?" -} \ No newline at end of file diff --git a/public/language/sk/admin/manage/users.json b/public/language/sk/admin/manage/users.json index 7b569e6ceb..5494728eae 100644 --- a/public/language/sk/admin/manage/users.json +++ b/public/language/sk/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "používateľské meno", "users.email": "e-mail", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "počet príspevkov", "users.reputation": "reputácia", diff --git a/public/language/sk/admin/menu.json b/public/language/sk/admin/menu.json index a1f427f47c..12aa2962be 100644 --- a/public/language/sk/admin/menu.json +++ b/public/language/sk/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Všeobecné", "section-manage": "Spravovať", diff --git a/public/language/sk/admin/settings/email.json b/public/language/sk/admin/settings/email.json index e05f5ca09a..894bd512e3 100644 --- a/public/language/sk/admin/settings/email.json +++ b/public/language/sk/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Zobrazené meno v e-maily v - Od", "smtp-transport": "Prenos SMTP", - "smtp-transport.enabled": "Pre odosielanie e-mailov použiť externý e-mailový server", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Zo zoznamu môžete vybrať známe služby alebo zadať vlastné.", "smtp-transport.service": "Vyberte službu", "smtp-transport.service-custom": "Používateľská služba", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/sk/admin/settings/general.json b/public/language/sk/admin/settings/general.json index 2d9a7f6a43..697f33a976 100644 --- a/public/language/sk/admin/settings/general.json +++ b/public/language/sk/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Názov stránky", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "URL názov stránky", - "title.url-help": "Ak bude kliknuté na názov, používateľ bude presmerovaný na túto adresu. Ak zostane prázdne, užívateľ bude odoslaný na index fóra.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Názov vašej komunity", "title.show-in-header": "Zobraziť názov stránky v hlavičke", "browser-title": "Názov prehliadača", @@ -20,9 +20,9 @@ "logo.image": "Obrázok", "logo.image-placeholder": "Cesta k logu, aby mohlo byť zobrazené v hlavičke fóra", "logo.upload": "Nahrať", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "URL logo stránky", - "logo.url-help": "Ak bude kliknuté na logo, používateľ bude presmerovaný na túto adresu. Ak zostane prázdne, používateľ bude presmerovaný na index fóra.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Opisujúci text", "log.alt-text-placeholder": "Alternatívny text pre prístupnosť", "favicon": "Ikona (favicon)", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/sk/admin/settings/user.json b/public/language/sk/admin/settings/user.json index e35c29d33f..eac0739010 100644 --- a/public/language/sk/admin/settings/user.json +++ b/public/language/sk/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Vypnuté", "digest-freq.daily": "Denne", "digest-freq.weekly": "Týždenne", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mesačne", "email-chat-notifs": "Poslať mi e-mail, ak nie som online a dorazí mi nová správa z konverzácie", "email-post-notif": "Poslať e-mail, ak sa objaví odpoveď v téme, ktorú sledujem", diff --git a/public/language/sk/error.json b/public/language/sk/error.json index a8e8e29498..81d83d10ab 100644 --- a/public/language/sk/error.json +++ b/public/language/sk/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Nemôžete vytvoriť konverzáciu pokiaľ Váš e-mail nebude overený. Prosím kliknite sem, pre overenie Vášho e-mailu.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Momentálne nemôžeme overiť Váš e-mail, prosím zopakujte to neskôr.", "confirm-email-already-sent": "Overovací e-mail už bol odoslaný. Prosím počkajte %1 minút(y) k odoslaniu ďalšieho.", "sendmail-not-found": "Odoslaný spúšťač nebol nájdený, prosím uistite sa že je nainštalovaný a spustiteľný užívateľom používajúcim NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Tento príspevok máte už medzi záložkami", "already-unbookmarked": "Tento príspevok už nemáte medzi záložkami", "cant-ban-other-admins": "Nemôžte zablokovať iných správcov.", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Momentálne ste jediný správca. Najskôr pridajte ďalšieho užívateľa za správcu predtým, ako zrušíte svoje výsady správcu", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Odobrať oprávnenie správcu z tohto účtu pred pokusom ho odstrániť.", diff --git a/public/language/sk/top.json b/public/language/sk/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/sk/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/sk/topic.json b/public/language/sk/topic.json index 9f742f4009..ba19316c05 100644 --- a/public/language/sk/topic.json +++ b/public/language/sk/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Zahodiť", "composer.submit": "Odoslať", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Odpovedať na %1", "composer.new_topic": "Nová téma", diff --git a/public/language/sk/user.json b/public/language/sk/user.json index 31fda96283..3a775de1bd 100644 --- a/public/language/sk/user.json +++ b/public/language/sk/user.json @@ -94,6 +94,7 @@ "digest_off": "Vypnuté", "digest_daily": "Denne", "digest_weekly": "Týždenne", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mesačne", "has_no_follower": "Tohto užívateľa nikto nesleduje :(", "follows_no_one": "Tento užívateľ nikoho nesleduje :(", diff --git a/public/language/sl/admin/advanced/events.json b/public/language/sl/admin/advanced/events.json index 2d24611e2b..1b5a03dc18 100644 --- a/public/language/sl/admin/advanced/events.json +++ b/public/language/sl/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Ni dogodkov", "control-panel": "Nadzorna plošča za dogodke", "delete-events": "Izbriši dogodke", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filtri", "filters-apply": "Uveljavi filtre", "filter-type": "Tip dogodka", diff --git a/public/language/sl/admin/dashboard.json b/public/language/sl/admin/dashboard.json index 366af71742..9f7b21b93a 100644 --- a/public/language/sl/admin/dashboard.json +++ b/public/language/sl/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Skupaj", "active-users.connections": "Povezave", - "anonymous-registered-users": "Anonimni : Registrirani uporabniki", - "anonymous": "Anonimni", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registrirani", "user-presence": "Prisotnost uporabnikov", @@ -68,6 +68,7 @@ "unread": "Neprebrano", "high-presence-topics": "Teme z visoko prisotnostjo", + "popular-searches": "Popular Searches", "graphs.page-views": "Ogledov strani", "graphs.page-views-registered": "Ogledov strani-registrirani", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Ogledov strani-robot", "graphs.unique-visitors": "Edinstveni obiskovalci", "graphs.registered-users": "Registrirani uporabniki", - "graphs.anonymous-users": "Anonimni uporabniki", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Nazadnje ponovno zagnal(a)", "no-users-browsing": "Ne brska noben uporabnik", "back-to-dashboard": "Nazaj na nadzorno ploščo", "details.no-users": "V izbranem časovnem okviru se ni pridružil noben uporabnik", "details.no-topics": "V izbranem časovnem okviru ni bila objavljena nobena tema", + "details.no-searches": "No searches have been made yet", "details.no-logins": "V izbranem časovnem okviru ni bila zabeležena nobena prijava", "details.logins-static": "NodeBB shranjuje samo podatke o sejah za %1 dni, zato bo ta spodnja tabela prikazala samo zadnje aktivne seje", "details.logins-login-time": "Čas prijave" diff --git a/public/language/sl/admin/general/dashboard.json b/public/language/sl/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/sl/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/sl/admin/general/homepage.json b/public/language/sl/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/sl/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/sl/admin/general/languages.json b/public/language/sl/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/sl/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/sl/admin/general/navigation.json b/public/language/sl/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/sl/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/sl/admin/general/social.json b/public/language/sl/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/sl/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/sl/admin/general/sounds.json b/public/language/sl/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/sl/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/sl/admin/manage/digest.json b/public/language/sl/admin/manage/digest.json index 7698903956..441af32d3c 100644 --- a/public/language/sl/admin/manage/digest.json +++ b/public/language/sl/admin/manage/digest.json @@ -6,15 +6,16 @@ "user": "Uporabnik", "subscription": "Vrsta naročnine", "last-delivery": "Zadnja uspešna dostava", - "default": "System default", - "default-help": "System default means the user has not explicitly overridden the global forum setting for digests, which is currently: "%1"", - "resend": "Resend Digest", + "default": "Privzeta nastavitev sistema", + "default-help": "Privzeta nastavitev sistema pomeni, uporabnik ni izrecno preglasil globalne nastavitve foruma za povzetke, ki je trenutno: "%1"", + "resend": "Ponovno pošlji povzetek", "resend-all-confirm": "Are you sure you wish to manually execute this digest run?", "resent-single": "Manual digest resend completed", - "resent-day": "Daily digest resent", - "resent-week": "Weekly digest resent", - "resent-month": "Monthly digest resent", - "null": "Never", + "resent-day": "Dnevni povzetek je ponovno poslan", + "resent-week": "Tedenski povzetek je ponovno poslan", + "resent-biweek": "Dvotedenski povzetek je ponovno poslan", + "resent-month": "Mesečni povzetek je ponovno poslan", + "null": "Nikoli", "manual-run": "Manual digest run:", "no-delivery-data": "No delivery data found" diff --git a/public/language/sl/admin/manage/users.json b/public/language/sl/admin/manage/users.json index 20d9d392a4..4f9ca41006 100644 --- a/public/language/sl/admin/manage/users.json +++ b/public/language/sl/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "uporabniško ime", "users.email": "e-poštni naslov", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "ugled", diff --git a/public/language/sl/admin/menu.json b/public/language/sl/admin/menu.json index e9734fac37..0484b96aee 100644 --- a/public/language/sl/admin/menu.json +++ b/public/language/sl/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Prijave", "dashboard/users": "Uporabniki", "dashboard/topics": "Teme", + "dashboard/searches": "Searches", "section-general": "Splošno", "section-manage": "Upravljaj", diff --git a/public/language/sl/admin/settings/email.json b/public/language/sl/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/sl/admin/settings/email.json +++ b/public/language/sl/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/sl/admin/settings/general.json b/public/language/sl/admin/settings/general.json index dbb815b484..0705ada86f 100644 --- a/public/language/sl/admin/settings/general.json +++ b/public/language/sl/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Naslov spletnega mesta", "title.short": "Kratki naslov", "title.short-placeholder": "Če kratek naslov ni naveden, bo uporabljen naslov spletnega mesta", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "URL naslova spletnega mesta", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Ime vaše skupnosti", "title.show-in-header": "V glavi pokaži naslov strani", "browser-title": "Naslov brskalnika", @@ -20,9 +20,9 @@ "logo.image": "Slika", "logo.image-placeholder": "Pot do logotipa za prikaz v glavi foruma", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "URL logotipa spletnega mesta", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Razveljavi časovno omejitev", "undo-timeout-help": "Nekatere operacije, kot so premikanje tem, bodo moderatorju omogočile, da v določenem časovnem okviru razveljavi svoje dejanje. Nastavite na 0, da popolnoma onemogočite razveljavitev.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/sl/admin/settings/user.json b/public/language/sl/admin/settings/user.json index f0a2955907..d680faf1ad 100644 --- a/public/language/sl/admin/settings/user.json +++ b/public/language/sl/admin/settings/user.json @@ -8,7 +8,7 @@ "allow-login-with.username": "Samo uporabniško ime", "allow-login-with.email": "Samo e-poštni naslov", "account-settings": "Nastavitve računa", - "gdpr_enabled": "Enable GDPR consent collection", + "gdpr_enabled": "Omogoči zbiranje GDPR soglasij", "gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the General Data Protection Regulation (GDPR). Note: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.", "disable-username-changes": "Onemogoči spreminjanje uporabniškega imena", "disable-email-changes": "Onemogoči spreminjanje e-poštnega naslova", @@ -61,16 +61,17 @@ "user-search": "User Search", "user-search-results-per-page": "Number of results to display", "default-user-settings": "Default User Settings", - "show-email": "Show email", - "show-fullname": "Show fullname", - "restrict-chat": "Only allow chat messages from users I follow", - "outgoing-new-tab": "Open outgoing links in new tab", - "topic-search": "Enable In-Topic Searching", - "update-url-with-post-index": "Update url with post index while browsing topics", + "show-email": "Pokaži e-poštni naslov", + "show-fullname": "Pokaži polno ime", + "restrict-chat": "V klepetu dovoli samo sporočila uporabnikov, ki jih spremljam", + "outgoing-new-tab": "Zunanje povezave odpri na novem zavihku", + "topic-search": "Omogoči iskanje v temi", + "update-url-with-post-index": "Med brskanjem po temah posodobite URL z indeksom objav", "digest-freq": "Subscribe to Digest", "digest-freq.off": "Off", "digest-freq.daily": "Dnevno", "digest-freq.weekly": "Tedensko", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mesečno", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/sl/error.json b/public/language/sl/error.json index ff9b1be6a6..e87f4d0f4e 100644 --- a/public/language/sl/error.json +++ b/public/language/sl/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Ne morete klepetati, dokler ne potrdite svojega e-poštnega naslova. Prosimo, kliknite tu za potrditev e-poštnega naslova.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Potrditev vašega e-poštnega naslova ni uspela. Prosimo, poskusite ponovno pozneje.", "confirm-email-already-sent": "Potrditveno e-sporočilo je že bilo poslano. Prosimo, počakajte %1 min za ponovno pošiljanje.", "sendmail-not-found": "Ne najdem izvršljive datoteke za pošiljanje e-pošte. Prepričajte se, da je ta nameščena in izvršljiva prek uporabnika, ki izvaja NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "You have already bookmarked this post", "already-unbookmarked": "You have already unbookmarked this post", "cant-ban-other-admins": "Ne morete izločati drugih skrbnikov!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Ste edini skrbnik. Preden se odstranite, dodajte novega skrbnika.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Pred brisanjem tega računa morate odstraniti skrbniške pravice.", diff --git a/public/language/sl/top.json b/public/language/sl/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/sl/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/sl/topic.json b/public/language/sl/topic.json index bfa42068c4..79e903581e 100644 --- a/public/language/sl/topic.json +++ b/public/language/sl/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Zavrzi", "composer.submit": "Pošlji", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Odgovor na %1", "composer.new_topic": "Nova tema", diff --git a/public/language/sl/user.json b/public/language/sl/user.json index 707996621b..1b3a56a24c 100644 --- a/public/language/sl/user.json +++ b/public/language/sl/user.json @@ -94,6 +94,7 @@ "digest_off": "Izključi", "digest_daily": "Dnevno", "digest_weekly": "Tedensko", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Mesečno", "has_no_follower": "Uporabniku nihče ne sledi :(", "follows_no_one": "Uporabnik nikomur ne sledi :(", diff --git a/public/language/sr/admin/advanced/events.json b/public/language/sr/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/sr/admin/advanced/events.json +++ b/public/language/sr/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/sr/admin/dashboard.json b/public/language/sr/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/sr/admin/dashboard.json +++ b/public/language/sr/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/sr/admin/general/dashboard.json b/public/language/sr/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/sr/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/sr/admin/general/homepage.json b/public/language/sr/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/sr/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/sr/admin/general/languages.json b/public/language/sr/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/sr/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/sr/admin/general/navigation.json b/public/language/sr/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/sr/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/sr/admin/general/social.json b/public/language/sr/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/sr/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/sr/admin/general/sounds.json b/public/language/sr/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/sr/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/sr/admin/manage/digest.json b/public/language/sr/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/sr/admin/manage/digest.json +++ b/public/language/sr/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/sr/admin/manage/users.json b/public/language/sr/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/sr/admin/manage/users.json +++ b/public/language/sr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/sr/admin/menu.json b/public/language/sr/admin/menu.json index 9294dcad89..1b369a0fcd 100644 --- a/public/language/sr/admin/menu.json +++ b/public/language/sr/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Uopšteno", "section-manage": "Menadžment", diff --git a/public/language/sr/admin/settings/email.json b/public/language/sr/admin/settings/email.json index 9e68a88f6f..f0a4584fb4 100644 --- a/public/language/sr/admin/settings/email.json +++ b/public/language/sr/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/sr/admin/settings/general.json b/public/language/sr/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/sr/admin/settings/general.json +++ b/public/language/sr/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/sr/admin/settings/user.json b/public/language/sr/admin/settings/user.json index d4d6e440cc..a0327e470c 100644 --- a/public/language/sr/admin/settings/user.json +++ b/public/language/sr/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Isključeno", "digest-freq.daily": "Dnevno", "digest-freq.weekly": "Nedeljno", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Mesečno", "email-chat-notifs": "Pošalji email ako nova chat poruka stigne dok nisam online", "email-post-notif": "Pošalji email kada odgovori su načinjeni u temu u kojoj sam ja pretplaćen", diff --git a/public/language/sr/error.json b/public/language/sr/error.json index b07e597d71..d5a1e83818 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -34,8 +34,9 @@ "email-invited": "Е-пошта је већ позвана", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Није вам дозвољено да ћаскате док не потврдите вашу е-пошту, кликните овде да то учините.", - "email-not-confirmed-email-sent": "Ваша е-пошта још увек није потврђена, проверите ваше пријемно сандуче. Неће вам бити дозвољено да шаљете поруке или ћаскате док не потврдите е-пошту.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Потврда е-поште није успела, молимо вас да покушате касније.", "confirm-email-already-sent": "Е-порука за потврду је већ послата, молимо вас да сачекате %1 минут(а) да бисте послали други.", "sendmail-not-found": "Програм за слање поште није пронађен, проверите да ли је инсталиран и покренут од стране корисника NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Већ сте додали ову поруку у обележиваче", "already-unbookmarked": "Већ сте одстранили ову поруку из обележивача", "cant-ban-other-admins": "Не можете забранити друге администраторе!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Ви сте једини администратор. Додајте другог корисника као администратора пре него што уклоните себе као администратора.", "account-deletion-disabled": "Брисање налога је онемогућено", "cant-delete-admin": "Уклоните администраторске привилегије овом налогу пре него што покушате да га избришете.", diff --git a/public/language/sr/top.json b/public/language/sr/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/sr/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/sr/topic.json b/public/language/sr/topic.json index 798f6d2dca..c95851bc0d 100644 --- a/public/language/sr/topic.json +++ b/public/language/sr/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Унесите ваше име/идентитет овде", "composer.discard": "Одбаци", "composer.submit": "Пошаљи", + "composer.additional-options": "Additional Options", "composer.schedule": "Испланирај", "composer.replying_to": "Писање одговора на %1", "composer.new_topic": "Нова тема", diff --git a/public/language/sr/user.json b/public/language/sr/user.json index 66b9e95715..270180a713 100644 --- a/public/language/sr/user.json +++ b/public/language/sr/user.json @@ -94,6 +94,7 @@ "digest_off": "Искључено", "digest_daily": "Дневно", "digest_weekly": "Седмично", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Месечно", "has_no_follower": "Овај корисник нема пратиоце :(", "follows_no_one": "Овај корисник не прати никога :(", diff --git a/public/language/sv/admin/advanced/events.json b/public/language/sv/admin/advanced/events.json index 56d9457971..b2c2033fb5 100644 --- a/public/language/sv/admin/advanced/events.json +++ b/public/language/sv/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "There are no events", "control-panel": "Events Control Panel", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/sv/admin/dashboard.json b/public/language/sv/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/sv/admin/dashboard.json +++ b/public/language/sv/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/sv/admin/general/dashboard.json b/public/language/sv/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/sv/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/sv/admin/general/homepage.json b/public/language/sv/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/sv/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/sv/admin/general/languages.json b/public/language/sv/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/sv/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/sv/admin/general/navigation.json b/public/language/sv/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/sv/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/sv/admin/general/social.json b/public/language/sv/admin/general/social.json deleted file mode 100644 index 23aedfcfaa..0000000000 --- a/public/language/sv/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Post Sharing", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" -} \ No newline at end of file diff --git a/public/language/sv/admin/general/sounds.json b/public/language/sv/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/sv/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/sv/admin/manage/digest.json b/public/language/sv/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/sv/admin/manage/digest.json +++ b/public/language/sv/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/sv/admin/manage/users.json b/public/language/sv/admin/manage/users.json index 38a065b954..2a3c0c4829 100644 --- a/public/language/sv/admin/manage/users.json +++ b/public/language/sv/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "username", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "postcount", "users.reputation": "reputation", diff --git a/public/language/sv/admin/menu.json b/public/language/sv/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/sv/admin/menu.json +++ b/public/language/sv/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/sv/admin/settings/email.json b/public/language/sv/admin/settings/email.json index 4aa2ff5daa..381ab387df 100644 --- a/public/language/sv/admin/settings/email.json +++ b/public/language/sv/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/sv/admin/settings/general.json b/public/language/sv/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/sv/admin/settings/general.json +++ b/public/language/sv/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/sv/admin/settings/user.json b/public/language/sv/admin/settings/user.json index 48be13b75e..7923bf8cbe 100644 --- a/public/language/sv/admin/settings/user.json +++ b/public/language/sv/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "Daily", "digest-freq.weekly": "Weekly", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Monthly", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/sv/error.json b/public/language/sv/error.json index f109a020bf..5b65ecb344 100644 --- a/public/language/sv/error.json +++ b/public/language/sv/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Du kan ej använda chatten förrän din epostadress har blivit bekräftad, var god klicka här för att bekräfta din epostadress.", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Vi kunde ej bekräfta din epostadress, var god försök igen senare.", "confirm-email-already-sent": "Bekräftningsbrev redan skickat, var god vänta %1 minut(er) innan du skickar ett nytt.", "sendmail-not-found": "Kunde inte hitta Sendmail, vänligen se till att den är installerad och får köras av den användare som kör NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Du har redan bokmärkt det här inlägget", "already-unbookmarked": "Du har redan tagit bort bokmärket för det här inlägget", "cant-ban-other-admins": "Du kan inte bannlysa andra administratörer!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Du är den enda administratören. Lägg till en annan användare som administratör innan du tar bort dig själv.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Ta bort administratörsbehörighet från detta konto innan du försöker ta bort den.", diff --git a/public/language/sv/top.json b/public/language/sv/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/sv/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/sv/topic.json b/public/language/sv/topic.json index f88cf9d472..cf335a343c 100644 --- a/public/language/sv/topic.json +++ b/public/language/sv/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Avbryt", "composer.submit": "Skicka", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Svarar till %1", "composer.new_topic": "Nytt ämne", diff --git a/public/language/sv/user.json b/public/language/sv/user.json index 9fd68192ea..955318aae7 100644 --- a/public/language/sv/user.json +++ b/public/language/sv/user.json @@ -94,6 +94,7 @@ "digest_off": "Avslagen", "digest_daily": "Dagligen", "digest_weekly": "Veckovis", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Månadsvis", "has_no_follower": "Denna användare har inga följare :(", "follows_no_one": "Denna användare följer ingen :(", diff --git a/public/language/th/admin/advanced/events.json b/public/language/th/admin/advanced/events.json index d37ba45659..1cd0c87bb1 100644 --- a/public/language/th/admin/advanced/events.json +++ b/public/language/th/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "ไม่มีอีเวนท์", "control-panel": "แผงควบคุมอีเวนท์", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/th/admin/dashboard.json b/public/language/th/admin/dashboard.json index 0de31d4917..4d39626882 100644 --- a/public/language/th/admin/dashboard.json +++ b/public/language/th/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Total", "active-users.connections": "Connections", - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Registered", "user-presence": "User Presence", @@ -68,6 +68,7 @@ "unread": "Unread", "high-presence-topics": "High Presence Topics", + "popular-searches": "Popular Searches", "graphs.page-views": "Page Views", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Unique Visitors", "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Last restarted by", "no-users-browsing": "No users browsing", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/th/admin/general/dashboard.json b/public/language/th/admin/general/dashboard.json deleted file mode 100644 index 37ae537786..0000000000 --- a/public/language/th/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Traffic", - "page-views": "Page Views", - "unique-visitors": "Unique Visitors", - "new-users": "New Users", - "posts": "Posts", - "topics": "Topics", - "page-views-seven": "Last 7 Days", - "page-views-thirty": "Last 30 Days", - "page-views-last-day": "Last 24 hours", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "All Time", - - "updates": "Updates", - "running-version": "You are running NodeBB v%1.", - "keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.", - "up-to-date": "

You are up-to-date

", - "upgrade-available": "

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

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "System Control", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/th/admin/general/homepage.json b/public/language/th/admin/general/homepage.json deleted file mode 100644 index 48f9ebe23a..0000000000 --- a/public/language/th/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "หน้าแรก", - "description": "เลือกหน้าเว็บที่จะแสดงเมื่อผู้ใช้ไปที่ URL หลักของฟอรัม", - "home-page-route": "เส้นทางหน้าแรก", - "custom-route": "เส้นทางที่กำหนดเอง", - "allow-user-home-pages": "อนุญาตหน้าแรกของผู้ใช้", - "home-page-title": "Title ของหน้าแรก (ค่าเริ่มต้น \"Home\")" -} \ No newline at end of file diff --git a/public/language/th/admin/general/languages.json b/public/language/th/admin/general/languages.json deleted file mode 100644 index bdd57849b3..0000000000 --- a/public/language/th/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Language Settings", - "description": "The default language determines the language settings for all users who are visiting your forum.
Individual users can override the default language on their account settings page.", - "default-language": "Default Language", - "auto-detect": "Auto Detect Language Setting for Guests" -} \ No newline at end of file diff --git a/public/language/th/admin/general/navigation.json b/public/language/th/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/th/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/th/admin/general/social.json b/public/language/th/admin/general/social.json deleted file mode 100644 index 7d6a9a8c83..0000000000 --- a/public/language/th/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "การแชร์กระทู้", - "info-plugins-additional": "ส่วนเสริมสามารถเพิ่มการเชือมต่อโซเชียลมิเดียเพื่อแชร์กระทู้", - "save-success": "การบันทึกการโพสแชร์เนื้อหาเสร็จสมบูรณ์!" -} \ No newline at end of file diff --git a/public/language/th/admin/general/sounds.json b/public/language/th/admin/general/sounds.json deleted file mode 100644 index 2be53c2cf0..0000000000 --- a/public/language/th/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "การแจ้งเตือน", - "chat-messages": "ข้อความแชท", - "play-sound": "เล่น", - "incoming-message": "ข้อความเข้า", - "outgoing-message": "ข้อความออก", - "upload-new-sound": "อัปโหลดเสียงใหม่", - "saved": "การตั้งค่าได้ถูกบันทึกแล้ว" -} \ No newline at end of file diff --git a/public/language/th/admin/manage/digest.json b/public/language/th/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/th/admin/manage/digest.json +++ b/public/language/th/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/th/admin/manage/users.json b/public/language/th/admin/manage/users.json index c5fc0e13b9..9a09edd168 100644 --- a/public/language/th/admin/manage/users.json +++ b/public/language/th/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "ชื่อผู้ใช้", "users.email": "อีเมล", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "จำนวนกระทู้", "users.reputation": "ชื่อเสียง", diff --git a/public/language/th/admin/menu.json b/public/language/th/admin/menu.json index 1c5ea73b4f..5b22fbeb36 100644 --- a/public/language/th/admin/menu.json +++ b/public/language/th/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "General", "section-manage": "Manage", diff --git a/public/language/th/admin/settings/email.json b/public/language/th/admin/settings/email.json index af4e100eb6..65f579d28c 100644 --- a/public/language/th/admin/settings/email.json +++ b/public/language/th/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Custom Service", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/th/admin/settings/general.json b/public/language/th/admin/settings/general.json index be7df90870..29b939861b 100644 --- a/public/language/th/admin/settings/general.json +++ b/public/language/th/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Title", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Your Community Name", "title.show-in-header": "Show Site Title in Header", "browser-title": "Browser Title", @@ -20,9 +20,9 @@ "logo.image": "Image", "logo.image-placeholder": "Path to a logo to display on forum header", "logo.upload": "Upload", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Text", "log.alt-text-placeholder": "Alternative text for accessibility", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/th/admin/settings/user.json b/public/language/th/admin/settings/user.json index 04814386d3..a6c888499c 100644 --- a/public/language/th/admin/settings/user.json +++ b/public/language/th/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Off", "digest-freq.daily": "ทุกวัน", "digest-freq.weekly": "ทุกอาทิตย์", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "ทุกเดือน", "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-post-notif": "Send an email when replies are made to topics I am subscribed to", diff --git a/public/language/th/error.json b/public/language/th/error.json index e7537f01dd..17adfbe6b9 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "คุณไม่สามารถแชทได้จนกว่าอีเมล์ของคุณจะได้รับการยืนยัน กรุณาคลิกที่นี่เพื่อยืนยันอีกมเมล์ของคุณ", - "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You won't be able to post or chat until your email is confirmed.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "เราไม่สามารถยืนยันอีเมลของคุณ ณ ขณะนี้ กรุณาลองใหม่อีกครั้งภายหลัง", "confirm-email-already-sent": "อีเมล์ยืนยันตัวตนถูกส่งไปยังคุณเรียบร้อยแล้ว กรุณารอ %1 นาที(s) ก่อนการตัดสินใจส่งอีกครั้ง", "sendmail-not-found": "ไม่พบการประมวลผลสำหรับการส่งอีเมล์ กรุณาตรวจสอบให้แน่ใจว่าได้มีการติดตั้งโปรแกรมการประมวลผลแล้วโดยผู้ใช้ที่กำลังใช้ NodeBB", @@ -103,6 +104,7 @@ "already-bookmarked": "คุณได้ติดบุ๊กมาร์คของโพสต์นี้แล้ว", "already-unbookmarked": "คุณได้ลบบุ๊กมาร์คของโพสต์นี้แล้ว", "cant-ban-other-admins": "คุณแบนแอดมินไม่ได้!!!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "คุณเป็นแอดมินเพียงคนเดียว กรุณาเพิ่มผู้ใช้คนอื่นเป็นแอดมิน ก่อนการลบตัวเองออกจากแอดมิน", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "ลบสิทธิพิเศษของแอดมินจากบัญชีผู้ใช้นี้ ก่อนทำการลบ", diff --git a/public/language/th/top.json b/public/language/th/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/th/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/th/topic.json b/public/language/th/topic.json index 5af3eb6a83..c7fc1707e3 100644 --- a/public/language/th/topic.json +++ b/public/language/th/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "ยกเลิก", "composer.submit": "ส่ง", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "ตอบไปยัง %1", "composer.new_topic": "กระทู้ใหม่", diff --git a/public/language/th/user.json b/public/language/th/user.json index 5a2b910b58..78759eadb0 100644 --- a/public/language/th/user.json +++ b/public/language/th/user.json @@ -94,6 +94,7 @@ "digest_off": "ปิด", "digest_daily": "รายวัน", "digest_weekly": "รายสัปดาห์", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "รายเดือน", "has_no_follower": "ผู้ใช้รายนี้ไม่มีใครติดตาม :(", "follows_no_one": "ผู้ใช้รายนี้ไม่ติดตามใคร :(", diff --git a/public/language/tr/admin/advanced/events.json b/public/language/tr/admin/advanced/events.json index 6f42b7c4d2..aebc5bd0da 100644 --- a/public/language/tr/admin/advanced/events.json +++ b/public/language/tr/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Aktivite yok", "control-panel": "Aktivite Kontrol Paneli", "delete-events": "Aktiviteyi Sil", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filtreler", "filters-apply": "Filtreleri Uygula", "filter-type": "Aktivite türü", diff --git a/public/language/tr/admin/dashboard.json b/public/language/tr/admin/dashboard.json index 8634d80734..132f58a29a 100644 --- a/public/language/tr/admin/dashboard.json +++ b/public/language/tr/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Genel Toplam", "active-users.connections": "Bağlantılar", - "anonymous-registered-users": "Anonim vs Kayıtlı Kullanıcılar", - "anonymous": "Anonim", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Kayıtlı", "user-presence": "Kullanıcı Durumları", @@ -68,6 +68,7 @@ "unread": "Okunmamış Konular Sayfasında", "high-presence-topics": "Öne Çıkan Başlıklar", + "popular-searches": "Popular Searches", "graphs.page-views": "Sayfa Gösterimi", "graphs.page-views-registered": "Kayıtlı Kullanıcıların Sayfa Gösterimi", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Bot Sayfa Gösterimi", "graphs.unique-visitors": "Benzersiz Ziyaretçiler", "graphs.registered-users": "Kayıtlı Kullanıcılar", - "graphs.anonymous-users": "Anonim Kullanıcılar", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Son yeniden başlatma bilgisi", "no-users-browsing": "İnceleyen kullanıcı yok", "back-to-dashboard": "Yönetim Paneline geri dön", "details.no-users": "Seçilen zaman aralığında herhangi bir kullanıcı üye olmadı.", "details.no-topics": "Seçilen zaman aralığında herhangi bir başlık oluşturulmadı. ", + "details.no-searches": "No searches have been made yet", "details.no-logins": "Seçilen zaman aralığında herhangi bir giriş yapılmadı.", "details.logins-static": "NodeBB oturum kayıtlarını sadece %1 gün tutar, o nedenle aşağıdaki tablo sadece en yakın aktif oturumları listeler", "details.logins-login-time": "Giriş zamanı" diff --git a/public/language/tr/admin/general/dashboard.json b/public/language/tr/admin/general/dashboard.json deleted file mode 100644 index 9cadcf0391..0000000000 --- a/public/language/tr/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Forum Trafiği", - "page-views": "Sayfa Gösterim Sayısı", - "unique-visitors": "Tekil Ziyaretçiler", - "new-users": "Yeni Kullanıcılar", - "posts": "İletiler", - "topics": "Başlıklar", - "page-views-seven": "Son 7 Gün", - "page-views-thirty": "Son 30 Gün", - "page-views-last-day": "Son 24 saat", - "page-views-custom": "Özel Tarih Aralığı", - "page-views-custom-start": "Başlangıç Tarihi", - "page-views-custom-end": "Bitiş Tarihi", - "page-views-custom-help": "İncelemek istediğiniz sayfa gösterim sayıları için bir tarih aralığı girin. Tarih seçeceğiniz panel görünmezse, kabul edilebilir format YYYY-AA-GG'dir.", - "page-views-custom-error": "Lütfen tarih aralığını geçerli formatta girin YYYY-MM-DD", - - "stats.yesterday": "Dün", - "stats.today": "Bugün", - "stats.last-week": "Geçen Hafta", - "stats.this-week": "Bu Hafta", - "stats.last-month": "Geçen Ay", - "stats.this-month": "Bu Ay", - "stats.all": "Tüm Zamanlar", - - "updates": "Güncellemeler", - "running-version": "NodeBB v%1 çalışıyor.", - "keep-updated": "En son güvenlik değişiklikleri ve hata düzeltmeleri için NodeBB'nin güncel olduğundan emin olun.", - "up-to-date": "

Sürümünüzgüncel

", - "upgrade-available": "

Yeni bir sürüm (v% 1) yayımlandı. NodeBB yükseltmeyi göz önünde bulundurun

", - "prerelease-upgrade-available": "

Bu, NodeBB'nin eski bir sürümü. Yeni bir sürüm (v% 1) yayımlandı. NodeBB’nizi yükseltmeyi düşünün.

", - "prerelease-warning": "

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

", - "running-in-development": "Forum, geliştirici modunda çalışıyor. Forum, potansiyel güvenlik açıklarına açık olabilir; lütfen sistem yöneticinize başvurun.", - "latest-lookup-failed": "

En güncel kullanılabilecek NodeBB sürümü görüntülenemedi

", - - "notices": "Bildirimler", - "restart-not-required": "Yeniden başlatma gerekmiyor", - "restart-required": "Yeniden başlatma gerekiyor", - "search-plugin-installed": "Arama Eklentisi yüklendi", - "search-plugin-not-installed": "Arama Eklentisi yüklenmedi", - "search-plugin-tooltip": "Arama işlevselliğini etkinleştirmek için eklenti sayfasından bir arama eklentisi kurun", - - "control-panel": "Sistem Kontrol Paneli", - "rebuild-and-restart": "Yeniden oluştur & Yeniden Başlat", - "restart": "Yeniden Başlat", - "restart-warning": "NodeBB'yi yeniden oluşturmak (yapılandırmak) veya yeniden başlatmak, mevcut tüm bağlantıları birkaç saniye için sonlandırır.", - "restart-disabled": "NodeBB'nizi yeniden oluşturma ve yeniden başlatma devre dışı bırakıldı.", - "maintenance-mode": "Bakım Modu", - "maintenance-mode-title": "NodeBB için bakım modunu ayarlamak için buraya tıklayın", - "realtime-chart-updates": "Gerçek Zamanlı Grafik Güncellemeleri", - - "active-users": "Aktif Kullanıcılar", - "active-users.users": "Kullanıcılar", - "active-users.guests": "Ziyaretçiler", - "active-users.total": "Genel Toplam", - "active-users.connections": "Bağlantılar", - - "anonymous-registered-users": "Anonim vs Kayıtlı Kullanıcılar", - "anonymous": "Anonim", - "registered": "Kayıtlı", - - "user-presence": "Kullanıcı Durumları", - "on-categories": "Kategoriler Listesinde", - "reading-posts": "İleti Okuyor", - "browsing-topics": "Konuları İnceliyor", - "recent": "Yeni Konular Sayfasında", - "unread": "Okunmamış Konular Sayfasında", - - "high-presence-topics": "Öne Çıkan Başlıklar", - - "graphs.page-views": "Sayfa Gösterimi", - "graphs.page-views-registered": "Kayıtlı Kullanıcıların Sayfa Gösterimi", - "graphs.page-views-guest": "Ziyaretçilerin Sayfa Gösterimi", - "graphs.page-views-bot": "Bot Sayfa Gösterimi", - "graphs.unique-visitors": "Benzersiz Ziyaretçiler", - "graphs.registered-users": "Kayıtlı Kullanıcılar", - "graphs.anonymous-users": "Anonim Kullanıcılar", - "last-restarted-by": "Son yeniden başlatma bilgisi", - "no-users-browsing": "İnceleyen kullanıcı yok" -} diff --git a/public/language/tr/admin/general/homepage.json b/public/language/tr/admin/general/homepage.json deleted file mode 100644 index 3c3b08f9bd..0000000000 --- a/public/language/tr/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Ana Sayfa", - "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": "Ana Sayfa Yolu", - "custom-route": "Özel Yol", - "allow-user-home-pages": "Kullanıcılara ana sayfalarını özelleştirmeleri için izin ver", - "home-page-title": "Ana sayfanın başlığı (varsayılan \"Ana Sayfa\")" -} \ No newline at end of file diff --git a/public/language/tr/admin/general/languages.json b/public/language/tr/admin/general/languages.json deleted file mode 100644 index 5ca8e3ec08..0000000000 --- a/public/language/tr/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Dil Ayarları", - "description": "Varsayılan dil, forumunuzu ziyaret eden tüm kullanıcılar için dil ayarlarını belirler.
Kullanıcılar, bireysel olarak hesap ayarları sayfasında varsayılan dili geçersiz kılabilir.", - "default-language": "Varsayılan Dil", - "auto-detect": "Ziyaretçiler için dili otomatik tespit et" -} \ No newline at end of file diff --git a/public/language/tr/admin/general/navigation.json b/public/language/tr/admin/general/navigation.json deleted file mode 100644 index d961c240de..0000000000 --- a/public/language/tr/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "İkon:", - "change-icon": "değiştir", - "route": "Yol:", - "tooltip": "Araç ipucu: ", - "text": "Yazı:", - "text-class": "Metin Sınıfı: opsiyonel", - "class": "Sınıf: opsiyonel", - "id": "ID: opsiyonel", - - "properties": "Özellikler:", - "groups": "Gruplar", - "open-new-window": "Yeni pencerede aç", - - "btn.delete": "Sil", - "btn.disable": "Etkinsizleştir", - "btn.enable": "Etkinleştir", - - "available-menu-items": "Kullanılabilir Menü Öğeleri", - "custom-route": "Özel Yol", - "core": "çekirdek", - "plugin": "eklenti" -} \ No newline at end of file diff --git a/public/language/tr/admin/general/social.json b/public/language/tr/admin/general/social.json deleted file mode 100644 index 5b186a82c4..0000000000 --- a/public/language/tr/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "İleti Paylaşımı", - "info-plugins-additional": "Eklentiler, paylaşımda bulunmak için ek sosyal ağlar ekleyebilir.", - "save-success": "İleti Paylaşım Ağları başarıyla kaydedildi!" -} \ No newline at end of file diff --git a/public/language/tr/admin/general/sounds.json b/public/language/tr/admin/general/sounds.json deleted file mode 100644 index e1d8a3c4a7..0000000000 --- a/public/language/tr/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Bildirimler", - "chat-messages": "Sohbet Mesajları", - "play-sound": "Oynat", - "incoming-message": "Gelen İleti", - "outgoing-message": "Giden İleti", - "upload-new-sound": "Yeni Ses Yükle", - "saved": "Ayarlar Kaydedildi" -} \ No newline at end of file diff --git a/public/language/tr/admin/manage/digest.json b/public/language/tr/admin/manage/digest.json index 712494d3a0..1548169764 100644 --- a/public/language/tr/admin/manage/digest.json +++ b/public/language/tr/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "El ile özet gönderimi tamamlandı", "resent-day": "Günlük özet yeniden gönderildi", "resent-week": "Haftalık özet yeniden gönderildi", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Aylık özet yeniden gönderildi", "null": "Hiçbir zaman", "manual-run": "El ile özet gönderimi:", diff --git a/public/language/tr/admin/manage/users.json b/public/language/tr/admin/manage/users.json index 308c7320cc..ebe7d2c28b 100644 --- a/public/language/tr/admin/manage/users.json +++ b/public/language/tr/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "benzersiz id", "users.username": "kullanıcı adı", "users.email": "e-posta", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "ileti sayısı", "users.reputation": "itibar", diff --git a/public/language/tr/admin/menu.json b/public/language/tr/admin/menu.json index c9ce2dc287..0d5e14bc14 100644 --- a/public/language/tr/admin/menu.json +++ b/public/language/tr/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Girişler", "dashboard/users": "Kullanıcılar", "dashboard/topics": "Başlıklar", + "dashboard/searches": "Searches", "section-general": "Genel", "section-manage": "Yönet", diff --git a/public/language/tr/admin/settings/email.json b/public/language/tr/admin/settings/email.json index 69a18e522a..3d77ac0d53 100644 --- a/public/language/tr/admin/settings/email.json +++ b/public/language/tr/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "The from name to display in the email.", "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", "smtp-transport.service": "Select a service", "smtp-transport.service-custom": "Özel Servis", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/tr/admin/settings/general.json b/public/language/tr/admin/settings/general.json index d0b248f56a..2d58a0e610 100644 --- a/public/language/tr/admin/settings/general.json +++ b/public/language/tr/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Site Başlığı", "title.short": "Başlık Kısaltması", "title.short-placeholder": "Eğer başlık kısaltması girilmediyse \"Site Başlığı\" kullanılacak", - "title.url": "Bağlantı", + "title.url": "Title Link URL", "title.url-placeholder": "Site başlığının URL adresi", - "title.url-help": "Başlık tıklandığında, kullanıcıları bu adrese gönder. Boş bırakılırsa, kullanıcı forum dizinine gönderilir.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Topluluk İsmi", "title.show-in-header": "Site Konusunu Başlık'ta Göster", "browser-title": "Tarayıcı Başlığı", @@ -20,9 +20,9 @@ "logo.image": "Görsel", "logo.image-placeholder": "Forum başlığında görüntülenecek bir logo yolu", "logo.upload": "Yükle", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "Site Logo URL'si", - "logo.url-help": "Logo tıklandığında, kullanıcıları bu adrese gönder. Boş bırakılırsa, kullanıcı forum dizinine gönderilir.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Alt Yazı", "log.alt-text-placeholder": "Erişilebilirlik için alternatif metin", "favicon": "Favicon", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/tr/admin/settings/user.json b/public/language/tr/admin/settings/user.json index 35ef948bf5..99f120b5d8 100644 --- a/public/language/tr/admin/settings/user.json +++ b/public/language/tr/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Kapalı", "digest-freq.daily": "Günlük", "digest-freq.weekly": "Haftalık", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Aylık", "email-chat-notifs": "Çevrimiçi değilken gelen mesajları e-posta olarak gönder", "email-post-notif": "Abone olduğum konulara cevap gelince bana e-posta gönder", diff --git a/public/language/tr/error.json b/public/language/tr/error.json index 18fea0e934..28e7e76b52 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -25,17 +25,18 @@ "invalid-event": "Geçersiz Aktivite: %1", "local-login-disabled": "Ayrıcalıklı-olmayan hesaplar için yerel giriş sistemi devre dışı bırakıldı.", "csrf-invalid": "Büyük olasılıkla süresi dolmuş oturum nedeniyle girişinizi geçersiz kıldık. Lütfen tekrar deneyiniz.", - "invalid-path": "Invalid path", - "folder-exists": "Folder exists", + "invalid-path": "Geçersiz yol", + "folder-exists": "Dosya mevcut", "invalid-pagination-value": "Geçersiz sayfa numarası girdiniz, en az %1 ve en fazla %2 olabilir", "username-taken": "Kullanıcı İsmi Alınmış", "email-taken": "E-posta Alınmış", - "email-nochange": "The email entered is the same as the email already on file.", + "email-nochange": "Girdiğiniz e-posta var olan e-posta ile aynı", "email-invited": "E-posta halihazırda davet edilmiş", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "E-postanız onaylanana kadar sohbet edemezsiniz, onaylamak için lütfen buraya tıklayın.", - "email-not-confirmed-email-sent": "E-posta adresiniz henüz onaylanmamış, lütfen onay e-postası için gelen kutunuzu kontrol ediniz. E-posta adresinizi onaylayana kadar foruma ileti gönderemeyeceksiniz veya sohbet edemeyeceksiniz!", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "\"%1\" kullanıcısı bir e-posta belirlememiş.", "email-confirm-failed": "E-posta adresinizi doğrulayamıyoruz. Lütfen daha sonra tekrar deneyin.", "confirm-email-already-sent": "E-posta onayı zaten gönderilmiş, yeni bir onay göndermek için lütfen %1 dakika bekleyin.", "sendmail-not-found": "Sendmail yürütülemedi, lüften indirildiğinden ve NodeBB kullanıcısı tarafından uygulanabilir olduğundan emin olun.", @@ -88,7 +89,7 @@ "not-enough-tags": "Yeterince etiket yok. Başlılar en az %1 etikete sahip olmalıdır", "too-many-tags": "Etiket sayısı çok fazla. Başlıklar en fazla %1 etikete sahip olabilir", "cant-use-system-tag": "Bu sistem etiketini kullanamazsınız.", - "cant-remove-system-tag": "You can not remove this system tag.", + "cant-remove-system-tag": "Bu sistem etiketini kaldıramazsınız.", "still-uploading": "Lütfen yüklemelerin bitmesini bekleyin.", "file-too-big": "İzin verilen en büyük dosya boyutu %1 kb - lütfen daha küçük bir dosya yükleyin", "guest-upload-disabled": "Ziyaretçilerin yükleme yapması devre dışı bırakıldı", @@ -103,6 +104,7 @@ "already-bookmarked": "Bu iletiyi yer imine ekledin", "already-unbookmarked": "Bu iletiyi yer iminden çıkardın", "cant-ban-other-admins": "Başka yöneticileri yasaklayamazsınız!", + "cant-make-banned-users-admin": "Yasaklanmış üyeleri yönetici yapamazsınız.", "cant-remove-last-admin": "Tek yönetici sizsiniz. Kendinizi adminlikten çıkarmadan önce başka bir kullanıcıyı admin olarak ekleyiniz", "account-deletion-disabled": "Hesap silme devre dışı bırakılmış", "cant-delete-admin": "Öncelikle yönetici izinlerini kaldırman gerekiyor.", @@ -178,10 +180,10 @@ "cant-kick-self": "Kendinizi gruptan atamazsınız.", "no-users-selected": "Seçili kullanıcı(lar) bulunamadı", "invalid-home-page-route": "Geçersiz anasayfa yolu", - "invalid-session": "Invalid Session", - "invalid-session-text": "It looks like your login session is no longer active. Please refresh this page.", - "session-mismatch": "Session Mismatch", - "session-mismatch-text": "It looks like your login session no longer matches with the server. Please refresh this page.", + "invalid-session": "Geçersiz Oturum", + "invalid-session-text": "Giriş oturumunuz aktif görünmüyor. Lütfen sayfayı yenileyiniz.", + "session-mismatch": "Oturum Uyuşmazlığı", + "session-mismatch-text": "Giriş oturumunuz sunucu ile eşleşmiyor. Lütfen sayfayı yenileyiniz.", "no-topics-selected": "Hiçbir başlık seçilmedi!", "cant-move-to-same-topic": "İletiyi aynı başlığa taşıyamazsın!", "cant-move-topic-to-same-category": "Başlığı bulunduğu kategoriye taşıyamazsınız!", @@ -198,12 +200,12 @@ "cant-set-self-as-parent": "Kendisini üst kategori olarak ayarlayamazsınız!", "api.master-token-no-uid": "A master token was received without a corresponding `_uid` in the request body", "api.400": "Something was wrong with the request payload you passed in.", - "api.401": "A valid login session was not found. Please log in and try again.", + "api.401": "Geçerli bir giriş oturumu bulunamadı. Lütfen yeniden giriş yapıp tekrar deneyin.", "api.403": "You are not authorised to make this call", "api.404": "Invalid API call", "api.426": "HTTPS is required for requests to the write api, please re-send your request via HTTPS", - "api.429": "You have made too many requests, please try again later", - "api.500": "An unexpected error was encountered while attempting to service your request.", + "api.429": "Fazla sayıda istekte bulundunuz, lütfen daha sonra tekrar deneyiniz.", + "api.500": "İsteğinizi gerçekleştirmeye çalışırken beklenmeyen bir hata ile karşılaşıldı.", "api.501": "The route you are trying to call is not implemented yet, please try again tomorrow", "api.503": "The route you are trying to call is not currently available due to a server configuration" } \ No newline at end of file diff --git a/public/language/tr/notifications.json b/public/language/tr/notifications.json index df1dc6ad41..efa0ce04c8 100644 --- a/public/language/tr/notifications.json +++ b/public/language/tr/notifications.json @@ -14,7 +14,7 @@ "topics": "Konular", "replies": "Yanıtlar", "chat": "Sohbetler", - "group-chat": "Group Chats", + "group-chat": "Grup Sohbetleri", "follows": "Takip Edilenler", "upvote": "Artı Oylananlar", "new-flags": "Yeni Şikayetler", diff --git a/public/language/tr/top.json b/public/language/tr/top.json new file mode 100644 index 0000000000..012cabb42d --- /dev/null +++ b/public/language/tr/top.json @@ -0,0 +1,4 @@ +{ + "title": "Zirve", + "no_top_topics": "Zirve Konu Yok" +} \ No newline at end of file diff --git a/public/language/tr/topic.json b/public/language/tr/topic.json index 172e29cdbb..803a9e53af 100644 --- a/public/language/tr/topic.json +++ b/public/language/tr/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Kullanıcı adınızı buraya girin", "composer.discard": "Vazgeç", "composer.submit": "Gönder", + "composer.additional-options": "Additional Options", "composer.schedule": "Konu Zamanla", "composer.replying_to": "Yanıtlanan Başlık: %1", "composer.new_topic": "Yeni Başlık", diff --git a/public/language/tr/user.json b/public/language/tr/user.json index 284bb5d18e..ae99629a6b 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -94,6 +94,7 @@ "digest_off": "Kapalı", "digest_daily": "Günlük", "digest_weekly": "Haftalık", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Aylık", "has_no_follower": "Bu kullanıcının hiç takipçisi yok :(", "follows_no_one": "Bu kullanıcı kimseyi takip etmiyor :(", diff --git a/public/language/uk/admin/advanced/events.json b/public/language/uk/admin/advanced/events.json index 5298722da0..997d177a47 100644 --- a/public/language/uk/admin/advanced/events.json +++ b/public/language/uk/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Подій немає", "control-panel": "Панель керування подіями", "delete-events": "Delete Events", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "Filters", "filters-apply": "Apply Filters", "filter-type": "Event Type", diff --git a/public/language/uk/admin/dashboard.json b/public/language/uk/admin/dashboard.json index 02416fb058..62eee08e51 100644 --- a/public/language/uk/admin/dashboard.json +++ b/public/language/uk/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Разом", "active-users.connections": "З'єднання", - "anonymous-registered-users": "Аноніми проти Зареєстрованих", - "anonymous": "Аноніми", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Зареєстровані", "user-presence": "Присутність користувача", @@ -68,6 +68,7 @@ "unread": "Непрочитані", "high-presence-topics": "Теми з високою присутністю", + "popular-searches": "Popular Searches", "graphs.page-views": "Перегляди сторінок", "graphs.page-views-registered": "Page Views Registered", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Page Views Bot", "graphs.unique-visitors": "Унікальні відвідувачі", "graphs.registered-users": "Зареєстровані користувачі", - "graphs.anonymous-users": "Анонімні користувачі", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Останнє перезавантаження", "no-users-browsing": "Немає користувачів онлайн", "back-to-dashboard": "Back to Dashboard", "details.no-users": "No users have joined within the selected timeframe", "details.no-topics": "No topics have been posted within the selected timeframe", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "Login Time" diff --git a/public/language/uk/admin/general/dashboard.json b/public/language/uk/admin/general/dashboard.json deleted file mode 100644 index e3096f077f..0000000000 --- a/public/language/uk/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Трафік форуму", - "page-views": "Перегляди сторінок", - "unique-visitors": "Унікальні відвідувачі", - "new-users": "New Users", - "posts": "Пости", - "topics": "Теми", - "page-views-seven": "Останні 7 Днів", - "page-views-thirty": "Останні 30 Днів", - "page-views-last-day": "Останні 24 Години", - "page-views-custom": "Заданий Період", - "page-views-custom-start": "Початок Періоду", - "page-views-custom-end": "Кінець Періоду", - "page-views-custom-help": "Вкажіть календарний період, за який ви хочете побачити переглянуті сторінки. Якщо ви не можете використати селектор дат, допустимий формат дати YYYY-MM-DD", - "page-views-custom-error": "Будь-ласка вкажіть календарний період у форматі YYYY-MM-DD", - - "stats.yesterday": "Yesterday", - "stats.today": "Today", - "stats.last-week": "Last Week", - "stats.this-week": "This Week", - "stats.last-month": "Last Month", - "stats.this-month": "This Month", - "stats.all": "Увесь час", - - "updates": "Оновлень", - "running-version": "У вас працює NodeBB v%1.", - "keep-updated": "Регулярно перевіряйте, що ваш NodeBB знаходиться в актуальному стані, щоб мати останні патчі та виправлення.", - "up-to-date": "

Ваша версія актуальна

", - "upgrade-available": "

Було випущено нову версію (v%1). Подумайте про оновлення вашого NodeBB.

", - "prerelease-upgrade-available": "

Це застаріла до-релізна версія NodeBB. Було випущено нову версію (v%1). Подумайте про оновлення вашого NodeBB.

", - "prerelease-warning": "

Це пре-релізна версія NodeBB. Можуть виникати неочікувані помилки.

", - "running-in-development": "Форум працює в режимі розробки. Форум потенційно може бути незахищеним, будь-ласка повідомте вашого системного адміністратора.", - "latest-lookup-failed": "

Помилка при спробі перевірки останньої версії NodeBB

", - - "notices": "Сповіщення", - "restart-not-required": "Перезавантаження не потрібне", - "restart-required": "Потрібне перезавантаження", - "search-plugin-installed": "Пошуковий плагін встановлено", - "search-plugin-not-installed": "Пошуковий плагін не встановлено", - "search-plugin-tooltip": "Встановіть пошуковий плагін зі сторінки плагінів, що активувати пошуковий функціонал", - - "control-panel": "Керування системою", - "rebuild-and-restart": "Перебудувати & Перезавантажити", - "restart": "Перезавантажити", - "restart-warning": "Перебудування або перезапуск вашого NodeBB призведе до втрати всіх існуючих з'єднань протягом декількох секунд.", - "restart-disabled": "Перебудування та перезапуск вашого NodeBB вимкнено, оскільки ви, здається, не запускаєте його через відповідний демон.", - "maintenance-mode": "Режим обслуговування", - "maintenance-mode-title": "Натисніть тут, щоб налаштувати режим обслуговування NodeBB", - "realtime-chart-updates": "Оновлення графіків в реальному часі", - - "active-users": "Активні користувачі", - "active-users.users": "Користувачі", - "active-users.guests": "Гості", - "active-users.total": "Разом", - "active-users.connections": "З'єднання", - - "anonymous-registered-users": "Аноніми проти Зареєстрованих", - "anonymous": "Аноніми", - "registered": "Зареєстровані", - - "user-presence": "Присутність користувача", - "on-categories": "На списку категорій", - "reading-posts": "Читають пости", - "browsing-topics": "Переглядають теми", - "recent": "Недавні", - "unread": "Непрочитані", - - "high-presence-topics": "Теми з високою присутністю", - - "graphs.page-views": "Перегляди сторінок", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Унікальні відвідувачі", - "graphs.registered-users": "Зареєстровані користувачі", - "graphs.anonymous-users": "Анонімні користувачі", - "last-restarted-by": "Останнє перезавантаження", - "no-users-browsing": "Немає користувачів онлайн" -} diff --git a/public/language/uk/admin/general/homepage.json b/public/language/uk/admin/general/homepage.json deleted file mode 100644 index f0b146ca8f..0000000000 --- a/public/language/uk/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Головна сторінка", - "description": "Вкажіть яку сторінку показувати коли користувач переходить на корньовий URL форуму.", - "home-page-route": "Шлях головної сторінки", - "custom-route": "Користувацький шлях", - "allow-user-home-pages": "Дозволити користувачам власні сторінки", - "home-page-title": "Назва домашньої сторінки (за замовчуванням \"Домашня сторінка\")" -} \ No newline at end of file diff --git a/public/language/uk/admin/general/languages.json b/public/language/uk/admin/general/languages.json deleted file mode 100644 index 7f2118d887..0000000000 --- a/public/language/uk/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Налаштування мов", - "description": "Мова за замовчуванням задає мову для всіх користувачів, що відвідують форум.
Кожен користувач може перевизначити мову в своїх налаштуваннях акаунта.", - "default-language": "Мова за замовчуванням", - "auto-detect": "Автоматично визначати мову для гостей" -} \ No newline at end of file diff --git a/public/language/uk/admin/general/navigation.json b/public/language/uk/admin/general/navigation.json deleted file mode 100644 index 7e80dd4304..0000000000 --- a/public/language/uk/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Іконка:", - "change-icon": "змінити", - "route": "Шлях:", - "tooltip": "Підказка:", - "text": "Текст:", - "text-class": "Класс тексту: необов'язковий", - "class": "Class: optional", - "id": "ID: необов'язковий", - - "properties": "Властивості:", - "groups": "Groups:", - "open-new-window": "Відкривати у новому вікні", - - "btn.delete": "Видалити", - "btn.disable": "Вимкнути", - "btn.enable": "Увімкнути", - - "available-menu-items": "Доступні пункти меню", - "custom-route": "Користувацький шлях", - "core": "ядро", - "plugin": "плагін" -} \ No newline at end of file diff --git a/public/language/uk/admin/general/social.json b/public/language/uk/admin/general/social.json deleted file mode 100644 index ce739d8b13..0000000000 --- a/public/language/uk/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Поширення постів", - "info-plugins-additional": "Плагіни можуть доповнювати набір доступних мереж для поширення постів", - "save-success": "Набір мереж для поширення постів успішно збережено!" -} \ No newline at end of file diff --git a/public/language/uk/admin/general/sounds.json b/public/language/uk/admin/general/sounds.json deleted file mode 100644 index 17214deba0..0000000000 --- a/public/language/uk/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Сповіщення", - "chat-messages": "Повідомлення чату", - "play-sound": "Грати", - "incoming-message": "Вхідне повідомлення", - "outgoing-message": "Вихідне повідомлення", - "upload-new-sound": "Завантажити новий звук", - "saved": "Налаштування зберережні" -} \ No newline at end of file diff --git a/public/language/uk/admin/manage/digest.json b/public/language/uk/admin/manage/digest.json index 8f3661698a..38c634d1f6 100644 --- a/public/language/uk/admin/manage/digest.json +++ b/public/language/uk/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Manual digest resend completed", "resent-day": "Daily digest resent", "resent-week": "Weekly digest resent", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "Monthly digest resent", "null": "Never", "manual-run": "Manual digest run:", diff --git a/public/language/uk/admin/manage/users.json b/public/language/uk/admin/manage/users.json index 7fd325c7d2..afef4cee35 100644 --- a/public/language/uk/admin/manage/users.json +++ b/public/language/uk/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "ім'я", "users.email": "email", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "постів", "users.reputation": "репутація", diff --git a/public/language/uk/admin/menu.json b/public/language/uk/admin/menu.json index 4da4abf0fc..7dd7c875fb 100644 --- a/public/language/uk/admin/menu.json +++ b/public/language/uk/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "Загальні", "section-manage": "Керування", diff --git a/public/language/uk/admin/settings/email.json b/public/language/uk/admin/settings/email.json index 306cd06969..912ca7528a 100644 --- a/public/language/uk/admin/settings/email.json +++ b/public/language/uk/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Ім'я відправника, що буде показано в електронних листах", "smtp-transport": "Протокол SMTP", - "smtp-transport.enabled": "Використовувати зовнішній поштовий сервер для відправлення повідомлень", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "Ви можете обрати поштовий сервіс зі списку або використати ваш власний сервіс.", "smtp-transport.service": "Оберіть сервіс", "smtp-transport.service-custom": "Власний Сервіс", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/uk/admin/settings/general.json b/public/language/uk/admin/settings/general.json index 27ffb53f48..964027ac2b 100644 --- a/public/language/uk/admin/settings/general.json +++ b/public/language/uk/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Назва сайту", "title.short": "Short Title", "title.short-placeholder": "If no short title is specified, the site title will be used", - "title.url": "URL", + "title.url": "Title Link URL", "title.url-placeholder": "URL заголовку сайту", - "title.url-help": "По кліку на заголовок, спрямовувати користувача за цією адресою. Якщо залишити порожнім, користувач буде спрямований в корінь форуму.", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "Назва вашої спільноти", "title.show-in-header": "Показувати заголовок сайту в шапці", "browser-title": "Заголовок браузера", @@ -20,9 +20,9 @@ "logo.image": "Зображення", "logo.image-placeholder": "Шлях до логотипу для відображення в шапці форуму", "logo.upload": "Завантажити", - "logo.url": "URL", + "logo.url": "Logo Link URL", "logo.url-placeholder": "URL логотипу сайту", - "logo.url-help": "По кліку на логотип, направляти користувача за цією адресою. Якщо залишити пустим, користувач буде направлений в корінь сайту.", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "Текст alt", "log.alt-text-placeholder": "Альтернативний текст для доступності", "favicon": "Фавіконка", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/uk/admin/settings/user.json b/public/language/uk/admin/settings/user.json index 7594e7cee7..e2036b2820 100644 --- a/public/language/uk/admin/settings/user.json +++ b/public/language/uk/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Ніколи", "digest-freq.daily": "Щоденно", "digest-freq.weekly": "Щотижнево", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "Щомісячно", "email-chat-notifs": "Надсилати листа, коли я не в мережі, якщо приходить чат повідомлення", "email-post-notif": "Надсилати листа, коли в темах на які я підписаний з'являються відповіді", diff --git a/public/language/uk/error.json b/public/language/uk/error.json index c70a32ab1e..eae362e14b 100644 --- a/public/language/uk/error.json +++ b/public/language/uk/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "Ви не можете користуватися чатом поки ваша електронна пошта не буде підтверджена, натисніть тут, щоб це зробити.", - "email-not-confirmed-email-sent": "Ваша електронна адреса ще не була підтверджена, будь-ласка перевірте свою поштову скриньку. Ви не зможете постити або чатитись до того як ваш емейл підтверджено.", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "Ми не можемо підтвердити вашу електронну пошту, будь ласка, спробуйте пізніше.", "confirm-email-already-sent": "Підтвердження по електронній пошті вже було надіслано, зачекайте, будь ласка, %1 хвилин(и), щоб відправити ще одне. ", "sendmail-not-found": "Виконуваний файл sendmail не знайдено, переконайтесь, будь ласка, що його встановлено та що він виконується власником процесу NodeBB.", @@ -103,6 +104,7 @@ "already-bookmarked": "Ви вже додали цей пост собі в закладки", "already-unbookmarked": "Ви вже видалили цей пост із закладок", "cant-ban-other-admins": "Ви не можете банити інших адмінів!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "Ви єдиний адміністратор. Додайте іншого користувача в якості адміністратора перш ніж знімати з себе ці обов'язки.", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "Зніміть обов'язки адміністратора з цього акаунту перш ніж видаляти його.", diff --git a/public/language/uk/flags.json b/public/language/uk/flags.json new file mode 100644 index 0000000000..44502005fc --- /dev/null +++ b/public/language/uk/flags.json @@ -0,0 +1,85 @@ +{ + "state": "Стан", + "reports": "Reports", + "first-reported": "First Reported", + "no-flags": "Ура! Скарг немає.", + "assignee": "Виконавець", + "update": "Оновлення", + "updated": "Оновлено", + "resolved": "Resolved", + "target-purged": "Зміст на який подана ця скарга було стерто і він більше недоступний.", + + "graph-label": "Щоденні прапорці", + "quick-filters": "Швидкі фільтри", + "filter-active": "У цьому списку скарг активовано один або більше фільтрів", + "filter-reset": "Видалити фільтри", + "filters": "Параметри фільтру", + "filter-reporterId": "UID скаржника", + "filter-targetUid": "UID оскаржуваного", + "filter-type": "Тип скарги", + "filter-type-all": "Увесь зміст", + "filter-type-post": "Пост", + "filter-type-user": "Користувач", + "filter-state": "Стан", + "filter-assignee": "UID виконавця", + "filter-cid": "Категорія", + "filter-quick-mine": "Призначені мені", + "filter-cid-all": "Всі категорії", + "apply-filters": "Примінити фільтри", + "more-filters": "More Filters", + "fewer-filters": "Fewer Filters", + + "quick-actions": "Quick Actions", + "flagged-user": "Користувач зі скаргою", + "view-profile": "Переглянути профіль", + "start-new-chat": "Почати новий чат", + "go-to-target": "Переглянути ціль скарги", + "assign-to-me": "Assign To Me", + "delete-post": "Delete Post", + "purge-post": "Purge Post", + "restore-post": "Restore Post", + + "user-view": "Переглянути профіль", + "user-edit": "Редагувати профіль", + + "notes": "Коментарі до скарги", + "add-note": "Додати коментар", + "no-notes": "Немає загальних коментарів.", + "delete-note-confirm": "Are you sure you want to delete this flag note?", + "note-added": "Коментар додано", + "note-deleted": "Note Deleted", + + "history": "Account & Flag History", + "no-history": "Немає історії скарг.", + + "state-all": "Всі стани", + "state-open": "Нова/Відкрита", + "state-wip": "У роботі", + "state-resolved": "Вирішена", + "state-rejected": "Відхилена", + "no-assignee": "Не призначена", + + "sort": "Sort by", + "sort-newest": "Newest first", + "sort-oldest": "Oldest first", + "sort-reports": "Most reports", + "sort-all": "All flag types...", + "sort-posts-only": "Posts only...", + "sort-downvotes": "Most downvotes", + "sort-upvotes": "Most upvotes", + "sort-replies": "Most replies", + + "modal-title": "Report Content", + "modal-body": "Будь ласка, вкажіть причину скарги на %1 %2 або використайте одну з відповідних швидких кнопок.", + "modal-reason-spam": "Спам", + "modal-reason-offensive": "Образа", + "modal-reason-other": "Інше (зазначте нижче)", + "modal-reason-custom": "Причина скарги на цей вміст...", + "modal-submit": "Надіслати скаргу", + "modal-submit-success": "Скарга на цей зміст надіслана модератору.", + + "bulk-actions": "Bulk Actions", + "bulk-resolve": "Resolve Flag(s)", + "bulk-success": "%1 flags updated", + "flagged-timeago-readable": "Flagged (%2)" +} \ No newline at end of file diff --git a/public/language/uk/top.json b/public/language/uk/top.json new file mode 100644 index 0000000000..b8a05bfa5f --- /dev/null +++ b/public/language/uk/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "No top topics" +} \ No newline at end of file diff --git a/public/language/uk/topic.json b/public/language/uk/topic.json index 732286d2ce..8fcb386cd0 100644 --- a/public/language/uk/topic.json +++ b/public/language/uk/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Enter your name/handle here", "composer.discard": "Скасувати", "composer.submit": "Надіслати", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "Відповідь для %1", "composer.new_topic": "Cтворити тему", diff --git a/public/language/uk/user.json b/public/language/uk/user.json index 3e19831fed..4b3c3b5512 100644 --- a/public/language/uk/user.json +++ b/public/language/uk/user.json @@ -94,6 +94,7 @@ "digest_off": "Ніколи", "digest_daily": "Щоденно", "digest_weekly": "Щотижнево", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "Щомісячно", "has_no_follower": "Цей користувач не має відстежувачів :(", "follows_no_one": "Цей користувач нікого не відстежує :(", diff --git a/public/language/vi/admin/advanced/events.json b/public/language/vi/admin/advanced/events.json index f51fd591d0..1ac68d471b 100644 --- a/public/language/vi/admin/advanced/events.json +++ b/public/language/vi/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "Không có sự kiện", "control-panel": "Bảng Điều Khiển Sự Kiện", "delete-events": "Xóa Sự Kiện", + "confirm-delete-all-events": "Bạn có chắc chắn muốn xóa tất cả các sự kiện đã ghi không?", "filters": "Bộ lọc", "filters-apply": "Áp Dụng Bộ Lọc", "filter-type": "Loại Sự Kiện", diff --git a/public/language/vi/admin/dashboard.json b/public/language/vi/admin/dashboard.json index 9b81d59690..a3d4dc5c28 100644 --- a/public/language/vi/admin/dashboard.json +++ b/public/language/vi/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "Tổng", "active-users.connections": "Kết nối", - "anonymous-registered-users": "Người Dùng Ẩn Danh và Đã Đăng Ký", - "anonymous": "Ẩn Danh", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "Đã đăng ký", "user-presence": "Người Dùng Có Mặt", @@ -68,6 +68,7 @@ "unread": "Chưa đọc", "high-presence-topics": "Chủ Đề Hiện Diện Cao", + "popular-searches": "Popular Searches", "graphs.page-views": "Xem Trang", "graphs.page-views-registered": "Đã Đăng Ký Xem Trang", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "Bot Xem Trang", "graphs.unique-visitors": "Khách Truy Cập Duy Nhất", "graphs.registered-users": "Thành Viên Chính Thức", - "graphs.anonymous-users": "Người Dùng Ẩn Danh", + "graphs.guest-users": "Guest Users", "last-restarted-by": "Khởi động lại lần cuối bởi", "no-users-browsing": "Người không xem bài", "back-to-dashboard": "Quay lại Bảng điều khiển", "details.no-users": "Không có người dùng nào tham gia trong khung thời gian đã chọn", "details.no-topics": "Không có chủ đề nào được đăng trong khung thời gian đã chọn", + "details.no-searches": "No searches have been made yet", "details.no-logins": "Không có thông tin đăng nhập nào được ghi lại trong khung thời gian đã chọn", "details.logins-static": "NodeBB chỉ lưu dữ liệu phiên trong %1 ngày và do đó, bảng này bên dưới sẽ chỉ hiển thị các phiên hoạt động gần đây nhất", "details.logins-login-time": "Thời gian đăng nhập" diff --git a/public/language/vi/admin/general/dashboard.json b/public/language/vi/admin/general/dashboard.json deleted file mode 100644 index 0cbc260f5e..0000000000 --- a/public/language/vi/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "Lưu lượng truy cập", - "page-views": "Lượt xem trang", - "unique-visitors": "Khách truy cập duy nhất", - "new-users": "Người dùng mới", - "posts": "Bài viết", - "topics": "Chủ đề", - "page-views-seven": "7 ngày trước", - "page-views-thirty": "30 ngày trước", - "page-views-last-day": "24 giờ trước", - "page-views-custom": "Tùy chỉnh phạm vi ngày", - "page-views-custom-start": "Phạm vi bắt đầu", - "page-views-custom-end": "Phạm vi kết thúc", - "page-views-custom-help": "Nhập phạm vi ngày của lượt xem trang bạn muốn xem. Nếu không có bộ chọn ngày, định dạng được chấp nhận là YYYY-MM-DD", - "page-views-custom-error": "Vui lòng nhập một phạm vi ngày hợp lệ trong định dạng YYYY-MM-DD", - - "stats.yesterday": "Hôm qua", - "stats.today": "Hôm nay", - "stats.last-week": "Tuần trước", - "stats.this-week": "Tuần này", - "stats.last-month": "Tháng trước", - "stats.this-month": "Tháng này", - "stats.all": "Mọi lúc", - - "updates": "Cập nhật", - "running-version": "Bạn đang chạy NodeBB v%1.", - "keep-updated": "Luôn đảm bảo rằng NodeBB của bạn được cập nhật cho các bản vá bảo mật và sửa lỗi mới nhất.", - "up-to-date": "

Bạn đang bản mới nhất

", - "upgrade-available": "

Phiên bản mới (v%1) đã được phát hành. Xem xét nâng cấp NodeBB của bạn.

", - "prerelease-upgrade-available": "

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

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", - "latest-lookup-failed": "

Failed to look up latest available version of NodeBB

", - - "notices": "Notices", - "restart-not-required": "Restart not required", - "restart-required": "Restart required", - "search-plugin-installed": "Search Plugin installed", - "search-plugin-not-installed": "Search Plugin not installed", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", - - "control-panel": "Điều khiển hệ thống", - "rebuild-and-restart": "Rebuild & Restart", - "restart": "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", - - "active-users": "Active Users", - "active-users.users": "Users", - "active-users.guests": "Guests", - "active-users.total": "Total", - "active-users.connections": "Connections", - - "anonymous-registered-users": "Anonymous vs Registered Users", - "anonymous": "Anonymous", - "registered": "Registered", - - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", - "recent": "Recent", - "unread": "Unread", - - "high-presence-topics": "High Presence Topics", - - "graphs.page-views": "Page Views", - "graphs.page-views-registered": "Page Views Registered", - "graphs.page-views-guest": "Page Views Guest", - "graphs.page-views-bot": "Page Views Bot", - "graphs.unique-visitors": "Unique Visitors", - "graphs.registered-users": "Registered Users", - "graphs.anonymous-users": "Anonymous Users", - "last-restarted-by": "Last restarted by", - "no-users-browsing": "No users browsing" -} diff --git a/public/language/vi/admin/general/homepage.json b/public/language/vi/admin/general/homepage.json deleted file mode 100644 index 7428d59eeb..0000000000 --- a/public/language/vi/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "Home Page", - "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", - "home-page-title": "Title of the home page (default \"Home\")" -} \ No newline at end of file diff --git a/public/language/vi/admin/general/languages.json b/public/language/vi/admin/general/languages.json deleted file mode 100644 index fc78a8345a..0000000000 --- a/public/language/vi/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "Cài đặt ngôn ngữ", - "description": "Ngôn ngữ mặc định xác định cài đặt ngôn ngữ cho tất cả người dùng đang truy cập diễn đàn của bạn.
Người dùng cá nhân có thể ghi đè ngôn ngữ mặc định trên trang cài đặt tài khoản của họ", - "default-language": "Ngôn ngữ mặc định", - "auto-detect": "Tự động phát hiện cài đặt ngôn ngữ cho khách" -} \ No newline at end of file diff --git a/public/language/vi/admin/general/navigation.json b/public/language/vi/admin/general/navigation.json deleted file mode 100644 index 13dd01aae7..0000000000 --- a/public/language/vi/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "Icon:", - "change-icon": "change", - "route": "Route:", - "tooltip": "Tooltip:", - "text": "Text:", - "text-class": "Text Class: optional", - "class": "Class: optional", - "id": "ID: optional", - - "properties": "Properties:", - "groups": "Groups:", - "open-new-window": "Open in a new window", - - "btn.delete": "Delete", - "btn.disable": "Disable", - "btn.enable": "Enable", - - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", - "core": "core", - "plugin": "plugin" -} \ No newline at end of file diff --git a/public/language/vi/admin/general/social.json b/public/language/vi/admin/general/social.json deleted file mode 100644 index f9dcde47ad..0000000000 --- a/public/language/vi/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "Chia sẻ bài viết", - "info-plugins-additional": "Plugin có thể thêm các mạng bổ sung để chia sẻ bài viết.", - "save-success": "Mạng chia sẻ bài đã lưu thành công!" -} \ No newline at end of file diff --git a/public/language/vi/admin/general/sounds.json b/public/language/vi/admin/general/sounds.json deleted file mode 100644 index 95ccbde0f1..0000000000 --- a/public/language/vi/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "Notifications", - "chat-messages": "Chat Messages", - "play-sound": "Play", - "incoming-message": "Incoming Message", - "outgoing-message": "Outgoing Message", - "upload-new-sound": "Upload New Sound", - "saved": "Settings Saved" -} \ No newline at end of file diff --git a/public/language/vi/admin/manage/digest.json b/public/language/vi/admin/manage/digest.json index f852e6b586..80010b7fb1 100644 --- a/public/language/vi/admin/manage/digest.json +++ b/public/language/vi/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "Đã hoàn tất gửi lại thông báo thủ công", "resent-day": "Đã gửi lại thông báo hàng ngày", "resent-week": "Đã gửi lại thông báo hàng tuần", + "resent-biweek": "Gửi lại thông báo hai tuần một lần", "resent-month": "Đã gửi lại thông báo hàng tháng", "null": "Không", "manual-run": "Chạy thông báo thủ công:", diff --git a/public/language/vi/admin/manage/users.json b/public/language/vi/admin/manage/users.json index de73acdc38..2b9507036e 100644 --- a/public/language/vi/admin/manage/users.json +++ b/public/language/vi/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "uid", "users.username": "tên đăng nhập", "users.email": "thư điện tử", + "users.no-email": "(không có email)", "users.ip": "IP", "users.postcount": "số lượng bài viết", "users.reputation": "uy tín", diff --git a/public/language/vi/admin/menu.json b/public/language/vi/admin/menu.json index c983024553..2e71acff00 100644 --- a/public/language/vi/admin/menu.json +++ b/public/language/vi/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Đăng nhập", "dashboard/users": "Người dùng", "dashboard/topics": "Chủ đề", + "dashboard/searches": "Searches", "section-general": "Chung", "section-manage": "Quản lý", diff --git a/public/language/vi/admin/settings/email.json b/public/language/vi/admin/settings/email.json index cfabb2a7f9..066d64e9f7 100644 --- a/public/language/vi/admin/settings/email.json +++ b/public/language/vi/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Tên người gửi hiển thị trong email.", "smtp-transport": "Truyền Tải SMTP", - "smtp-transport.enabled": "Sử dụng máy chủ email bên ngoài để gửi email", + "smtp-transport.enabled": "Bật truyền tải SMTP", "smtp-transport-help": "Bạn có thể chọn từ danh sách các dịch vụ nổi bật hoặc nhập một dịch vụ tùy chỉnh.", "smtp-transport.service": "Chọn một dịch vụ", "smtp-transport.service-custom": "Tùy chỉnh dịch vụ ", @@ -40,5 +40,7 @@ "require-email-address": "Bắt buộc người dùng mới phải điền địa chỉ email", "require-email-address-warning": "Mặc định, người dùng có thể chọn không nhập địa chỉ email. Bật tùy chọn này nghĩa là họ buộc phải nhập địa chỉ email để đăng ký. Việc này không chắc người dùng sẽ nhập địa chỉ email thực, hoặc không phải địa chỉ mà họ sở hữu.", "include-unverified-emails": "Gửi email đến những người nhận chưa xác nhận rõ ràng email của họ", - "include-unverified-warning": "Theo mặc định, người dùng có email được liên kết với tài khoản của họ đã được xác minh, nhưng có những trường hợp không phải như vậy (ví dụ: đăng nhập SSO, người dùng phổ thông, v.v.). Bạn tự chịu rủi ro khi bật cài đặt này – gửi email đến các địa chỉ chưa được xác minh có thể vi phạm luật chống thư rác trong khu vực." -} \ No newline at end of file + "include-unverified-warning": "Theo mặc định, người dùng có email được liên kết với tài khoản của họ đã được xác minh, nhưng có những trường hợp không phải như vậy (ví dụ: đăng nhập SSO, người dùng phổ thông, v.v.). Bạn tự chịu rủi ro khi bật cài đặt này – gửi email đến các địa chỉ chưa được xác minh có thể vi phạm luật chống thư rác trong khu vực.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/vi/admin/settings/general.json b/public/language/vi/admin/settings/general.json index d4f3073728..7034716c95 100644 --- a/public/language/vi/admin/settings/general.json +++ b/public/language/vi/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "Tiêu Đề Trang Web", "title.short": "Tiêu Đề Ngắn", "title.short-placeholder": "Nếu không có tiêu đề ngắn nào được chỉ định, tiêu đề trang web sẽ được sử dụng", - "title.url": "URL", + "title.url": "Liên kết URL Tiêu đề", "title.url-placeholder": "URL của tiêu đề trang web", - "title.url-help": "Khi tiêu đề được nhấn, hãy đưa người dùng đến địa chỉ này. Nếu để trống, người dùng sẽ được chuyển đến trang chủ diễn đàn.", + "title.url-help": "Khi tiêu đề được nhấp vào, hãy đưa người dùng đến địa chỉ này. Nếu để trống, người dùng sẽ được chuyển đến chỉ mục diễn đàn.
Lưu ý: Đây không phải là URL bên ngoài được sử dụng trong email, v.v. Nó được đặt bởi thuộc tính url trong config.json", "title.name": "Tên Cộng Đồng Của Bạn", "title.show-in-header": "Hiển Thị Tiêu Đề Trang Ở Phần Đầu", "browser-title": "Tiêu Đề Trình Duyệt", @@ -20,9 +20,9 @@ "logo.image": "Ảnh", "logo.image-placeholder": "Đường dẫn đến biểu trưng để hiển thị phần đầu diễn đàn", "logo.upload": "Tải lên", - "logo.url": "URL", + "logo.url": "Liên kết URL Logo", "logo.url-placeholder": "URL biểu trưng trang web", - "logo.url-help": "Khi nhấp vào logo, ​​hãy đưa người dùng đến địa chỉ này. Nếu để trống, người dùng sẽ được chuyển đến trang chủ diễn đàn.", + "logo.url-help": "Khi nhấp vào logo, ​​hãy đưa người dùng đến địa chỉ này. Nếu để trống, người dùng sẽ được chuyển đến chỉ mục diễn đàn.
Lưu ý: Đây không phải là URL bên ngoài được sử dụng trong email, v.v. Nó được đặt bởi thuộc tính url trong config.json", "logo.alt-text": "Văn Bản Thay Thế", "log.alt-text-placeholder": "Văn bản thay thế cho khả năng tiếp cận", "favicon": "Biểu tượng ưa thích", @@ -47,4 +47,4 @@ "undo-timeout": "Hoàn tác thời gian chờ", "undo-timeout-help": "Một số thao tác như chuyển chủ đề sẽ cho phép người kiểm duyệt hoàn tác hành động của họ trong một khung thời gian nhất định. Đặt thành 0 để tắt hoàn toàn hoàn tác.", "topic-tools": "Công cụ chủ đề" -} \ No newline at end of file +} diff --git a/public/language/vi/admin/settings/notifications.json b/public/language/vi/admin/settings/notifications.json index 76e4a8a1dc..c7055b3c21 100644 --- a/public/language/vi/admin/settings/notifications.json +++ b/public/language/vi/admin/settings/notifications.json @@ -3,5 +3,5 @@ "welcome-notification": "Thông Báo Chào Mừng", "welcome-notification-link": "Liên Kết Thông Báo Chào Mừng", "welcome-notification-uid": "Thông Báo Chào Mừng Người Dùng (UID)", - "post-queue-notification-uid": "Post Queue User (UID)" + "post-queue-notification-uid": "Hàng Đợi Người Dùng Đăng Bài (UID)" } \ No newline at end of file diff --git a/public/language/vi/admin/settings/user.json b/public/language/vi/admin/settings/user.json index d8e44700b4..9074776f44 100644 --- a/public/language/vi/admin/settings/user.json +++ b/public/language/vi/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "Tắt", "digest-freq.daily": "Hàng ngày", "digest-freq.weekly": "Hàng tuần", + "digest-freq.biweekly": "Hai tuần một lần", "digest-freq.monthly": "Hàng tháng", "email-chat-notifs": "Gửi email nếu có tin nhắn trò chuyện mới và tôi không trực tuyến", "email-post-notif": "Gửi email khi có trả lời ở các chủ đề tôi đã đăng ký", diff --git a/public/language/vi/error.json b/public/language/vi/error.json index 48d63b3474..6dd9b00f2d 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -34,8 +34,9 @@ "email-invited": "Email đã được mời", "email-not-confirmed": "Đăng trong một số danh mục hoặc chủ đề được bật sau khi email của bạn được xác nhận, vui lòng nhấp vào đây để gửi email xác nhận.", "email-not-confirmed-chat": "Bạn không thể trò chuyện cho đến khi email của bạn được xác nhận, vui lòng nhấp vào đây để xác nhận email của bạn.", - "email-not-confirmed-email-sent": "Email của bạn vẫn chưa được xác nhận, vui lòng kiểm tra hộp thư đến của bạn. Bạn sẽ không thể đăng hoặc trò chuyện cho đến khi email được xác nhận.", - "no-email-to-confirm": "Tài khoản của bạn không có email. Email là cần thiết để khôi phục tài khoản. Vui lòng bấm vào đây để nhập email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "Người dùng \"%1\" chưa đặt email.", "email-confirm-failed": "Chúng tôi không thể xác nhận email của bạn, vui lòng thử lại sau.", "confirm-email-already-sent": "Email xác nhận đã được gửi, vui lòng chờ %1 phút để yêu cầu gửi lại.", "sendmail-not-found": "Không tìm thấy lệnh thực thi \"sendmail\", hãy chắc chắn nó đã được cài đặt và thực thi bởi người quản trị đang vận hành NodeBB", @@ -103,6 +104,7 @@ "already-bookmarked": "Bạn đã đánh dấu trang chủ đề này rồi", "already-unbookmarked": "Bạn đã hủy đánh dấu trang chủ đề này rồi", "cant-ban-other-admins": "Bạn không thể cấm quản trị viên khác!", + "cant-make-banned-users-admin": "Bạn không thể đặt người dùng bị cấm làm quản trị viên.", "cant-remove-last-admin": "Bạn là quản trị viên duy nhất. Hãy cho thành viên khác làm quản trị viên trước khi huỷ bỏ quyền quản trị của bạn.", "account-deletion-disabled": "Tính năng xóa tài khoản đã bị tắt", "cant-delete-admin": "Gỡ bỏ đặc quyền quản trị viên khỏi tài khoản này trước khi cố gắng xóa nó.", diff --git a/public/language/vi/modules.json b/public/language/vi/modules.json index 86b2e7342e..5f910b23b1 100644 --- a/public/language/vi/modules.json +++ b/public/language/vi/modules.json @@ -54,7 +54,7 @@ "composer.formatting.strikethrough": "Gạch ngang", "composer.formatting.code": "Mã", "composer.formatting.link": "Liên kết", - "composer.formatting.picture": "Image Link", + "composer.formatting.picture": "Liên Kết Ảnh", "composer.upload-picture": "Tải ảnh lên", "composer.upload-file": "Tải Lên Tệp", "composer.zen_mode": "Chế Độ Zen", diff --git a/public/language/vi/top.json b/public/language/vi/top.json new file mode 100644 index 0000000000..18d3e3238b --- /dev/null +++ b/public/language/vi/top.json @@ -0,0 +1,4 @@ +{ + "title": "Hàng Đầu", + "no_top_topics": "Không có chủ đề hàng đầu" +} \ No newline at end of file diff --git a/public/language/vi/topic.json b/public/language/vi/topic.json index 04c1344637..bce14caa6a 100644 --- a/public/language/vi/topic.json +++ b/public/language/vi/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "Nhập tên/xử lý của bạn ở đây", "composer.discard": "Huỷ bỏ", "composer.submit": "Gửi", + "composer.additional-options": "Tùy chọn bổ sung", "composer.schedule": "Lên lịch", "composer.replying_to": "Đang trả lời %1", "composer.new_topic": "Chủ đề mới", diff --git a/public/language/vi/user.json b/public/language/vi/user.json index d30e2d126e..235c199efb 100644 --- a/public/language/vi/user.json +++ b/public/language/vi/user.json @@ -94,6 +94,7 @@ "digest_off": "Tắt", "digest_daily": "Hàng ngày", "digest_weekly": "Hàng tuần", + "digest_biweekly": "Hai tuần một lần", "digest_monthly": "Hàng tháng", "has_no_follower": "Người dùng này không có ai theo dõi :(", "follows_no_one": "Người dùng này không theo dõi ai :(", diff --git a/public/language/zh-CN/admin/advanced/events.json b/public/language/zh-CN/admin/advanced/events.json index 48ba6e3a6f..e49a2510fe 100644 --- a/public/language/zh-CN/admin/advanced/events.json +++ b/public/language/zh-CN/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "暂无事件", "control-panel": "事件控制面板", "delete-events": "删除事件", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "过滤器", "filters-apply": "应用过滤器", "filter-type": "事件类型", diff --git a/public/language/zh-CN/admin/dashboard.json b/public/language/zh-CN/admin/dashboard.json index 427fdb412a..28a008851f 100644 --- a/public/language/zh-CN/admin/dashboard.json +++ b/public/language/zh-CN/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "全部", "active-users.connections": "连接", - "anonymous-registered-users": "匿名 vs 注册用户", - "anonymous": "匿名", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "已注册", "user-presence": "用户光临", @@ -68,6 +68,7 @@ "unread": "未读", "high-presence-topics": "热门话题", + "popular-searches": "Popular Searches", "graphs.page-views": "页面浏览量", "graphs.page-views-registered": "注册用户页面浏览量", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "爬虫页面浏览量", "graphs.unique-visitors": "单一访客", "graphs.registered-users": "已注册用户", - "graphs.anonymous-users": "匿名用户", + "graphs.guest-users": "Guest Users", "last-restarted-by": "上次重启管理员/时间", "no-users-browsing": "没有用户正在浏览", "back-to-dashboard": "返回控制面板", "details.no-users": "选定的时间内没有用户加入", "details.no-topics": "选定的时间内没有发布主题", + "details.no-searches": "No searches have been made yet", "details.no-logins": "选定的时间内没有登录记录", "details.logins-static": "NodeBB只保留%1天登录数据,下列表格显示最近活动的登录。", "details.logins-login-time": "登录时间" diff --git a/public/language/zh-CN/admin/general/dashboard.json b/public/language/zh-CN/admin/general/dashboard.json deleted file mode 100644 index 0feb4970cd..0000000000 --- a/public/language/zh-CN/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "论坛流量", - "page-views": "页面浏览量", - "unique-visitors": "单一访客", - "new-users": "新用户", - "posts": "发帖", - "topics": "主题", - "page-views-seven": "最近7天", - "page-views-thirty": "最近30天", - "page-views-last-day": "最近24小时", - "page-views-custom": "自定义日期范围", - "page-views-custom-start": "范围开始", - "page-views-custom-end": "范围结束", - "page-views-custom-help": "输入您要查看的网页浏览日期范围。 如果没有日期选择器可用,则接受的格式是 YYYY-MM-DD", - "page-views-custom-error": "请输入 YYYY-MM-DD格式的有效日期范围 ", - - "stats.yesterday": "昨天", - "stats.today": "今天", - "stats.last-week": "上一周", - "stats.this-week": "本周", - "stats.last-month": "上一月", - "stats.this-month": "本月", - "stats.all": "总计", - - "updates": "更新", - "running-version": "您正在运行 NodeBB v%1 .", - "keep-updated": "请确保您已及时更新 NodeBB 以获得最新的安全补丁与 Bug 修复。", - "up-to-date": "

正在使用 最新版本

", - "upgrade-available": "

新的版本 (v%1) 已经发布。建议您 升级 NodeBB

", - "prerelease-upgrade-available": "

这是一个已经过期的预发布版本的 NodeBB,新的版本 (v%1) 已经发布。建议您 升级 NodeBB

", - "prerelease-warning": "

正在使用测试版 NodeBB。可能会出现意外的 Bug。

", - "running-in-development": "论坛正处于开发模式,这可能使其暴露于潜在的危险之中;请联系您的系统管理员。", - "latest-lookup-failed": "

无法查找 NodeBB 的最新可用版本

", - - "notices": "提醒", - "restart-not-required": "不需要重启", - "restart-required": "需要重启", - "search-plugin-installed": "已安装搜索插件", - "search-plugin-not-installed": "未安装搜索插件", - "search-plugin-tooltip": "在插件页面安装搜索插件来激活搜索功能", - - "control-panel": "系统控制", - "rebuild-and-restart": "部署 & 重启", - "restart": "重启", - "restart-warning": "重载或重启 NodeBB 会丢失数秒内全部的连接。", - "restart-disabled": "重建和重新启动NodeBB已被禁用,因为您似乎没有通过适当的守护进程运行它。", - "maintenance-mode": "维护模式", - "maintenance-mode-title": "点击此处设置 NodeBB 的维护模式", - "realtime-chart-updates": "实时图表更新", - - "active-users": "活跃用户", - "active-users.users": "用户", - "active-users.guests": "游客", - "active-users.total": "全部", - "active-users.connections": "连接", - - "anonymous-registered-users": "匿名 vs 注册用户", - "anonymous": "匿名", - "registered": "已注册", - - "user-presence": "用户光临", - "on-categories": "在版块列表", - "reading-posts": "读帖子", - "browsing-topics": "浏览话题", - "recent": "最近", - "unread": "未读", - - "high-presence-topics": "热门话题", - - "graphs.page-views": "页面浏览量", - "graphs.page-views-registered": "注册用户页面浏览量", - "graphs.page-views-guest": "游客页面浏览量", - "graphs.page-views-bot": "爬虫页面浏览量", - "graphs.unique-visitors": "单一访客", - "graphs.registered-users": "已注册用户", - "graphs.anonymous-users": "匿名用户", - "last-restarted-by": "上次重启管理员/时间", - "no-users-browsing": "没有用户正在浏览" -} diff --git a/public/language/zh-CN/admin/general/homepage.json b/public/language/zh-CN/admin/general/homepage.json deleted file mode 100644 index 8864e4eb34..0000000000 --- a/public/language/zh-CN/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "主页", - "description": "请选择用户到达根 URL 时所显示的页面。", - "home-page-route": "主页路由", - "custom-route": "自定义路由", - "allow-user-home-pages": "允许用户主页", - "home-page-title": "首页标题(默认“Home”)" -} \ No newline at end of file diff --git a/public/language/zh-CN/admin/general/languages.json b/public/language/zh-CN/admin/general/languages.json deleted file mode 100644 index b8cb60203e..0000000000 --- a/public/language/zh-CN/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "语言设置", - "description": "默认语言会决定所有用户的语言设定。
单一用户可以各自在帐户设置中覆盖此项设定。", - "default-language": "默认语言", - "auto-detect": "自动检测游客的语言设置" -} \ No newline at end of file diff --git a/public/language/zh-CN/admin/general/navigation.json b/public/language/zh-CN/admin/general/navigation.json deleted file mode 100644 index f7f9003ed1..0000000000 --- a/public/language/zh-CN/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "图标:", - "change-icon": "更改", - "route": "路由:", - "tooltip": "提示:", - "text": "文本:", - "text-class": "文本类:可选", - "class": "类: 可选", - "id": "ID:可选", - - "properties": "属性:", - "groups": "群组:", - "open-new-window": "在新窗口中打开", - - "btn.delete": "删除", - "btn.disable": "禁用", - "btn.enable": "启用", - - "available-menu-items": "可用的菜单项目", - "custom-route": "自定义路由", - "core": "核心", - "plugin": "插件" -} \ No newline at end of file diff --git a/public/language/zh-CN/admin/general/social.json b/public/language/zh-CN/admin/general/social.json deleted file mode 100644 index 0882ee95e9..0000000000 --- a/public/language/zh-CN/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "帖子分享", - "info-plugins-additional": "插件可以增加可选的用于分享帖子的网络。", - "save-success": "已成功保存帖子分享网络。" -} \ No newline at end of file diff --git a/public/language/zh-CN/admin/general/sounds.json b/public/language/zh-CN/admin/general/sounds.json deleted file mode 100644 index d330e309ac..0000000000 --- a/public/language/zh-CN/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "通知", - "chat-messages": "聊天信息", - "play-sound": "播放", - "incoming-message": "收到的消息", - "outgoing-message": "发出的消息", - "upload-new-sound": "上传新的声音", - "saved": "设置已保存" -} \ No newline at end of file diff --git a/public/language/zh-CN/admin/manage/digest.json b/public/language/zh-CN/admin/manage/digest.json index 7c1f27c795..3621e92cff 100644 --- a/public/language/zh-CN/admin/manage/digest.json +++ b/public/language/zh-CN/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "摘要重发操作完成", "resent-day": "已发送每日摘要", "resent-week": "已发送每周摘要", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "已发送每月摘要", "null": "从不", "manual-run": "手动运行摘要:", diff --git a/public/language/zh-CN/admin/manage/users.json b/public/language/zh-CN/admin/manage/users.json index 2958f2f4eb..2aec55959e 100644 --- a/public/language/zh-CN/admin/manage/users.json +++ b/public/language/zh-CN/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "UID", "users.username": "用户名", "users.email": "电子邮件", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "发帖数", "users.reputation": "声望", diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json index 283c64c2f6..cc413ef8b3 100644 --- a/public/language/zh-CN/admin/menu.json +++ b/public/language/zh-CN/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "登录", "dashboard/users": "用户", "dashboard/topics": "主题", + "dashboard/searches": "Searches", "section-general": "基本", "section-manage": "管理", diff --git a/public/language/zh-CN/admin/settings/email.json b/public/language/zh-CN/admin/settings/email.json index c1a6816fff..5afd0ca782 100644 --- a/public/language/zh-CN/admin/settings/email.json +++ b/public/language/zh-CN/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "用于邮件中显示的发送者", "smtp-transport": "SMTP 通信", - "smtp-transport.enabled": "使用一个外部电子邮箱系统来发送邮件", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "您可以从列表中选取一个已知的服务或自定义。", "smtp-transport.service": "选择服务", "smtp-transport.service-custom": "自定义", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/zh-CN/admin/settings/general.json b/public/language/zh-CN/admin/settings/general.json index f9dda72c8c..7cc3e0a53b 100644 --- a/public/language/zh-CN/admin/settings/general.json +++ b/public/language/zh-CN/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "站点标题", "title.short": "短标题", "title.short-placeholder": "如果没有指定短标题,将会使用站点标题", - "title.url": "网址", + "title.url": "Title Link URL", "title.url-placeholder": "网站标题链接", - "title.url-help": "当标题被点击,用户将跳转到该地址。如果留空,用户将跳转到论坛首页。", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "您的社区名称", "title.show-in-header": "在顶部显示站点标题", "browser-title": "浏览器标题", @@ -20,9 +20,9 @@ "logo.image": "图像", "logo.image-placeholder": "要在论坛标题上显示的 Logo 的路径", "logo.upload": "上传", - "logo.url": "网址", + "logo.url": "Logo Link URL", "logo.url-placeholder": "站点 Logo 链接", - "logo.url-help": "当 Logo 被点击时,将用户跳转到此地址。如果留空,用户将被跳转到论坛首页。", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "替代文本", "log.alt-text-placeholder": "辅助功能的替代文本", "favicon": "站点图标", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/zh-CN/admin/settings/user.json b/public/language/zh-CN/admin/settings/user.json index 78ee3b04fe..baae37bbfc 100644 --- a/public/language/zh-CN/admin/settings/user.json +++ b/public/language/zh-CN/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "关闭", "digest-freq.daily": "每日", "digest-freq.weekly": "每周", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "每月", "email-chat-notifs": "当我不在线并收到新的聊天消息时,给我发送邮件通知", "email-post-notif": "当我订阅的主题有新回复时,给我发送邮件通知", diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json index b4b57239ec..1c087addf7 100644 --- a/public/language/zh-CN/error.json +++ b/public/language/zh-CN/error.json @@ -34,8 +34,9 @@ "email-invited": "已通过电子邮件进行邀请", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "您的电子邮箱尚未确认,无法聊天,请点击这里确认您的电子邮箱。", - "email-not-confirmed-email-sent": "您的电子邮件账户尚未确认,请检查您的收件箱。在电子邮件帐户被确认前您不能发帖和聊天。", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "我们无法确认您的电子邮箱,请重试", "confirm-email-already-sent": "确认邮件已发出,如需重新发送请等待 %1 分钟后再试。", "sendmail-not-found": "无法找到 sendmail 可执行程序,请确保 sendmail 已经安装并可被运行 NodeBB 的用户执行", @@ -103,6 +104,7 @@ "already-bookmarked": "您已将此贴存为了书签", "already-unbookmarked": "您已取消了此贴的书签", "cant-ban-other-admins": "您不能封禁其他管理员!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "您是唯一的管理员。在删除您的管理员权限前,请添加另一个管理员。", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "在删除该账号之前,请先移除其管理权限。", diff --git a/public/language/zh-CN/top.json b/public/language/zh-CN/top.json new file mode 100644 index 0000000000..fb0e71e2e6 --- /dev/null +++ b/public/language/zh-CN/top.json @@ -0,0 +1,4 @@ +{ + "title": "置顶", + "no_top_topics": "没有置顶主题" +} \ No newline at end of file diff --git a/public/language/zh-CN/topic.json b/public/language/zh-CN/topic.json index 20188e117a..970b7f8155 100644 --- a/public/language/zh-CN/topic.json +++ b/public/language/zh-CN/topic.json @@ -139,6 +139,7 @@ "composer.handle_placeholder": "在这里输入您的姓名/昵称", "composer.discard": "撤销", "composer.submit": "提交", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "正在回复 %1", "composer.new_topic": "新主题", diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json index ca479e9dd3..335df13c7b 100644 --- a/public/language/zh-CN/user.json +++ b/public/language/zh-CN/user.json @@ -94,6 +94,7 @@ "digest_off": "关闭", "digest_daily": "每天", "digest_weekly": "每周", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "每月", "has_no_follower": "此用户还没有粉丝 :(", "follows_no_one": "此用户尚未关注任何人 :(", diff --git a/public/language/zh-TW/admin/advanced/events.json b/public/language/zh-TW/admin/advanced/events.json index d964ae59a8..5ecc44a954 100644 --- a/public/language/zh-TW/admin/advanced/events.json +++ b/public/language/zh-TW/admin/advanced/events.json @@ -3,6 +3,7 @@ "no-events": "暫無事件", "control-panel": "事件控制面板", "delete-events": "刪除事件", + "confirm-delete-all-events": "Are you sure you want to delete all logged events?", "filters": "過濾器", "filters-apply": "應用過濾器", "filter-type": "事件類型", diff --git a/public/language/zh-TW/admin/dashboard.json b/public/language/zh-TW/admin/dashboard.json index 90adfc831a..4b9601493e 100644 --- a/public/language/zh-TW/admin/dashboard.json +++ b/public/language/zh-TW/admin/dashboard.json @@ -56,8 +56,8 @@ "active-users.total": "全部", "active-users.connections": "連線", - "anonymous-registered-users": "匿名 vs 註冊使用者", - "anonymous": "匿名", + "guest-registered-users": "Guest vs Registered Users", + "guest": "Guest", "registered": "已註冊", "user-presence": "使用者光臨", @@ -68,6 +68,7 @@ "unread": "未讀", "high-presence-topics": "熱門主題", + "popular-searches": "Popular Searches", "graphs.page-views": "頁面瀏覽量", "graphs.page-views-registered": "註冊使用者頁面瀏覽量", @@ -75,13 +76,14 @@ "graphs.page-views-bot": "爬蟲頁面瀏覽量", "graphs.unique-visitors": "不重複訪客", "graphs.registered-users": "已註冊使用者", - "graphs.anonymous-users": "匿名使用者", + "graphs.guest-users": "Guest Users", "last-restarted-by": "上次重啟管理員/時間", "no-users-browsing": "沒有使用者正在瀏覽", "back-to-dashboard": "回到儀表板", "details.no-users": "沒有使用者有在選定的時間內註冊", "details.no-topics": "沒有新增的主題在選定的時間內", + "details.no-searches": "No searches have been made yet", "details.no-logins": "No logins have been recorded within the selected timeframe", "details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions", "details.logins-login-time": "登入時間" diff --git a/public/language/zh-TW/admin/general/dashboard.json b/public/language/zh-TW/admin/general/dashboard.json deleted file mode 100644 index 82b1238d28..0000000000 --- a/public/language/zh-TW/admin/general/dashboard.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "forum-traffic": "論壇流量", - "page-views": "頁面瀏覽量", - "unique-visitors": "不重複訪客", - "new-users": "新使用者", - "posts": "貼文", - "topics": "主題", - "page-views-seven": "最近7天", - "page-views-thirty": "最近30天", - "page-views-last-day": "最近24小時", - "page-views-custom": "自定義日期範圍", - "page-views-custom-start": "範圍開始", - "page-views-custom-end": "範圍結束", - "page-views-custom-help": "輸入您要查看的網頁瀏覽日期範圍。 如果沒有日期選擇器可用,則接受的格式是 YYYY-MM-DD", - "page-views-custom-error": "請輸入 YYYY-MM-DD格式的有效日期範圍 ", - - "stats.yesterday": "昨天", - "stats.today": "今天", - "stats.last-week": "上一週", - "stats.this-week": "本週", - "stats.last-month": "上一月", - "stats.this-month": "本月", - "stats.all": "總計", - - "updates": "更新", - "running-version": "您正在運行 NodeBB v%1 .", - "keep-updated": "請確保您已及時更新 NodeBB 以獲得最新的安全修補程式與 Bug 修復。", - "up-to-date": "

正在使用 最新版本

", - "upgrade-available": "

新的版本 (v%1) 已經發布。建議您 升級 NodeBB

", - "prerelease-upgrade-available": "

這是一個已經過期的預發佈版本的 NodeBB,新的版本 (v%1) 已經發布。建議您 升級 NodeBB

", - "prerelease-warning": "

正在使用測試版 NodeBB。可能會出現意外的 Bug。

", - "running-in-development": "論壇正處於開發模式,這可能使其暴露於潛在的危險之中;請聯繫您的系統管理員。", - "latest-lookup-failed": "

無法找到 NodeBB 的最新可用版本

", - - "notices": "提醒", - "restart-not-required": "不需要重啟", - "restart-required": "需要重啟", - "search-plugin-installed": "已安裝搜尋外掛", - "search-plugin-not-installed": "未安裝搜尋外掛", - "search-plugin-tooltip": "在外掛頁面安裝搜尋外掛來啟用搜尋功能", - - "control-panel": "系統控制", - "rebuild-and-restart": "重建 & 重啟", - "restart": "重啟", - "restart-warning": "重載或重啟 NodeBB 會丟失數秒內全部的連接。", - "restart-disabled": "重建和重新啟動NodeBB已被禁用,因為您似乎沒有通過適當的守護進程運行它。", - "maintenance-mode": "維護模式", - "maintenance-mode-title": "點擊此處設置 NodeBB 的維護模式", - "realtime-chart-updates": "即時圖表更新", - - "active-users": "活躍使用者", - "active-users.users": "使用者", - "active-users.guests": "訪客", - "active-users.total": "全部", - "active-users.connections": "連線", - - "anonymous-registered-users": "匿名 vs 註冊使用者", - "anonymous": "匿名", - "registered": "已註冊", - - "user-presence": "使用者光臨", - "on-categories": "在版面列表", - "reading-posts": "閱讀貼文", - "browsing-topics": "瀏覽主題", - "recent": "最近", - "unread": "未讀", - - "high-presence-topics": "熱門主題", - - "graphs.page-views": "頁面瀏覽量", - "graphs.page-views-registered": "註冊使用者頁面瀏覽量", - "graphs.page-views-guest": "訪客頁面瀏覽量", - "graphs.page-views-bot": "爬蟲頁面瀏覽量", - "graphs.unique-visitors": "不重複訪客", - "graphs.registered-users": "已註冊使用者", - "graphs.anonymous-users": "匿名使用者", - "last-restarted-by": "上次重啟管理員/時間", - "no-users-browsing": "沒有使用者正在瀏覽" -} diff --git a/public/language/zh-TW/admin/general/homepage.json b/public/language/zh-TW/admin/general/homepage.json deleted file mode 100644 index 28e579ad56..0000000000 --- a/public/language/zh-TW/admin/general/homepage.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "home-page": "首頁", - "description": "請選擇使用者到達根 URL 時所顯示的頁面。", - "home-page-route": "首頁路徑", - "custom-route": "自訂路徑", - "allow-user-home-pages": "允許使用者自訂首頁", - "home-page-title": "首頁標題(預設為“Home”)" -} \ No newline at end of file diff --git a/public/language/zh-TW/admin/general/languages.json b/public/language/zh-TW/admin/general/languages.json deleted file mode 100644 index c8f7db09de..0000000000 --- a/public/language/zh-TW/admin/general/languages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "language-settings": "語言設定", - "description": "預設語言會決定所有使用者的語言設定。
單一使用者可以各自在帳戶設定中覆蓋此項設定。", - "default-language": "預設語言", - "auto-detect": "自動檢測訪客的語言設定" -} \ No newline at end of file diff --git a/public/language/zh-TW/admin/general/navigation.json b/public/language/zh-TW/admin/general/navigation.json deleted file mode 100644 index 15ac71b9a0..0000000000 --- a/public/language/zh-TW/admin/general/navigation.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "icon": "圖示:", - "change-icon": "更改", - "route": "路徑:", - "tooltip": "提示:", - "text": "文字:", - "text-class": "文字類別:可選", - "class": "類: 可選", - "id": "ID:可選", - - "properties": "屬性:", - "groups": "群組:", - "open-new-window": "在新窗口中打開", - - "btn.delete": "刪除", - "btn.disable": "禁用", - "btn.enable": "啟用", - - "available-menu-items": "可用的選單項目", - "custom-route": "自訂路徑", - "core": "核心", - "plugin": "外掛" -} \ No newline at end of file diff --git a/public/language/zh-TW/admin/general/social.json b/public/language/zh-TW/admin/general/social.json deleted file mode 100644 index aa16e3b8f5..0000000000 --- a/public/language/zh-TW/admin/general/social.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "post-sharing": "貼文分享", - "info-plugins-additional": "外掛可以增加額外用於分享貼文的社群媒體。", - "save-success": "已成功儲存貼文分享社群媒體。" -} \ No newline at end of file diff --git a/public/language/zh-TW/admin/general/sounds.json b/public/language/zh-TW/admin/general/sounds.json deleted file mode 100644 index e30202df06..0000000000 --- a/public/language/zh-TW/admin/general/sounds.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "notifications": "通知", - "chat-messages": "聊天訊息", - "play-sound": "播放", - "incoming-message": "收到的訊息", - "outgoing-message": "發出的訊息", - "upload-new-sound": "上傳新的音檔", - "saved": "設定已儲存" -} \ No newline at end of file diff --git a/public/language/zh-TW/admin/manage/digest.json b/public/language/zh-TW/admin/manage/digest.json index 85796e9f16..368cab446c 100644 --- a/public/language/zh-TW/admin/manage/digest.json +++ b/public/language/zh-TW/admin/manage/digest.json @@ -13,6 +13,7 @@ "resent-single": "摘要重發操作完成", "resent-day": "已發送每日摘要", "resent-week": "已發送每週摘要", + "resent-biweek": "Bi-Weekly digest resent", "resent-month": "已發送每月摘要", "null": "從不", "manual-run": "手動執行摘要:", diff --git a/public/language/zh-TW/admin/manage/users.json b/public/language/zh-TW/admin/manage/users.json index 43b4b84d09..c755feaf71 100644 --- a/public/language/zh-TW/admin/manage/users.json +++ b/public/language/zh-TW/admin/manage/users.json @@ -47,6 +47,7 @@ "users.uid": "UID", "users.username": "使用者名", "users.email": "電子郵件", + "users.no-email": "(no email)", "users.ip": "IP", "users.postcount": "發文數", "users.reputation": "聲望", diff --git a/public/language/zh-TW/admin/menu.json b/public/language/zh-TW/admin/menu.json index 77c408d4be..22213c257f 100644 --- a/public/language/zh-TW/admin/menu.json +++ b/public/language/zh-TW/admin/menu.json @@ -4,6 +4,7 @@ "dashboard/logins": "Logins", "dashboard/users": "Users", "dashboard/topics": "Topics", + "dashboard/searches": "Searches", "section-general": "基本", "section-manage": "管理", diff --git a/public/language/zh-TW/admin/settings/email.json b/public/language/zh-TW/admin/settings/email.json index bda1858459..bddc247003 100644 --- a/public/language/zh-TW/admin/settings/email.json +++ b/public/language/zh-TW/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "用於郵件中顯示的發送人", "smtp-transport": "SMTP 通信", - "smtp-transport.enabled": "使用一個外部電子郵件系統來發送郵件", + "smtp-transport.enabled": "Enable SMTP Transport", "smtp-transport-help": "您可以從列表中選取一個已知的服務或自訂。", "smtp-transport.service": "選擇服務", "smtp-transport.service-custom": "自訂", @@ -40,5 +40,7 @@ "require-email-address": "Require new users to specify an email address", "require-email-address-warning": "By default, users can opt-out of entering an email address. Enabling this option means they have to enter an email address in order to proceed with registration. It does not ensure user will enter a real email address, nor even an address they own.", "include-unverified-emails": "Send emails to recipients who have not explicitly confirmed their emails", - "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws." -} \ No newline at end of file + "include-unverified-warning": "By default, users with emails associated with their account have already been verified, but there are situations where this is not the case (e.g. SSO logins, grandfathered users, etc). Enable this setting at your own risk – sending emails to unverified addresses may be a violation of regional anti-spam laws.", + "prompt": "Prompt users to enter or confirm their emails", + "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen." +} diff --git a/public/language/zh-TW/admin/settings/general.json b/public/language/zh-TW/admin/settings/general.json index 6ed79255b4..28f7187fee 100644 --- a/public/language/zh-TW/admin/settings/general.json +++ b/public/language/zh-TW/admin/settings/general.json @@ -3,9 +3,9 @@ "title": "網站標題", "title.short": "短標題", "title.short-placeholder": "如短標題為指定則會使用網站標題", - "title.url": "網址", + "title.url": "Title Link URL", "title.url-placeholder": "網站標題連結", - "title.url-help": "當標題被點擊,使用者將轉導到該地址。如果留白,使用者將跳轉到論壇首頁。", + "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "title.name": "您的社區名稱", "title.show-in-header": "在頂部顯示網站標題", "browser-title": "瀏覽器標題", @@ -20,9 +20,9 @@ "logo.image": "圖檔", "logo.image-placeholder": "要在論壇標題上顯示的 Logo 的路徑", "logo.upload": "上傳", - "logo.url": "網址", + "logo.url": "Logo Link URL", "logo.url-placeholder": "網站 Logo 連結", - "logo.url-help": "當 Logo 被點擊時,將使用者轉導到此地址。如果留白,使用者將被轉導到論壇首頁。", + "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
Note: This is not the external URL used in emails, etc. That is set by the url property in config.json", "logo.alt-text": "替代文字", "log.alt-text-placeholder": "輔助功能的替代文字", "favicon": "網站圖示", @@ -47,4 +47,4 @@ "undo-timeout": "Undo Timeout", "undo-timeout-help": "Some operations such as moving topics will allow for the moderator to undo their action within a certain timeframe. Set to 0 to disable undo completely.", "topic-tools": "Topic Tools" -} \ No newline at end of file +} diff --git a/public/language/zh-TW/admin/settings/user.json b/public/language/zh-TW/admin/settings/user.json index b01a691a39..2e73dd1945 100644 --- a/public/language/zh-TW/admin/settings/user.json +++ b/public/language/zh-TW/admin/settings/user.json @@ -71,6 +71,7 @@ "digest-freq.off": "關閉", "digest-freq.daily": "每日", "digest-freq.weekly": "每週", + "digest-freq.biweekly": "Bi-Weekly", "digest-freq.monthly": "每月", "email-chat-notifs": "當我不在線並收到新的聊天訊息時,給我發送電郵通知", "email-post-notif": "當我訂閱的主題有新回覆時,給我發送電郵通知", diff --git a/public/language/zh-TW/category.json b/public/language/zh-TW/category.json index 66cdd37f8c..1d5770ad7f 100644 --- a/public/language/zh-TW/category.json +++ b/public/language/zh-TW/category.json @@ -19,5 +19,5 @@ "notwatching.message": "您未關注了此版面和全部子版面的動態。", "ignoring.message": "您忽略了此版面和全部子版面的動態。", "watched-categories": "已關注的版面", - "x-more-categories": "%1 more categories" + "x-more-categories": "還有 %1 個版面" } \ No newline at end of file diff --git a/public/language/zh-TW/email.json b/public/language/zh-TW/email.json index 971cb7a6b7..769259fb67 100644 --- a/public/language/zh-TW/email.json +++ b/public/language/zh-TW/email.json @@ -6,9 +6,9 @@ "greeting_no_name": "您好", "greeting_with_name": "%1,您好", "email.verify-your-email.subject": "請驗證你的電子信箱", - "email.verify.text1": "You've requested that we change or confirm your email address", - "email.verify.text2": "For security purposes, we only change or confirm the email address on file once its ownership has been confirmed via email. If you did not request this, no action is required on your part.", - "email.verify.text3": "Once you confirm this email address, we will replace your current email address with this one (%1).", + "email.verify.text1": "您要求我們更改或者驗證您的電子信箱地址", + "email.verify.text2": "為了安全起見,我們只會在透過電子郵件確認過電子信箱所有權後才會更改登錄的信箱地址。 假如您沒有提出過這個要求, 您不用進行任何動作。", + "email.verify.text3": "一旦您確認此信箱地址,我們將使用此地址取代您目前的信箱地址(%1)。", "welcome.text1": "感謝您註冊 %1 帳戶!", "welcome.text2": "在您驗證您綁定的郵件地址之後,您的帳戶才能啟用。", "welcome.text3": "管理員批准了您的註冊申請,現在您可以登入您的帳戶了。", @@ -23,8 +23,8 @@ "reset.notify.text1": "您在 %1 上的密碼已經成功修改。", "reset.notify.text2": "如果您沒有授權此操作,請立即聯繫管理員。", "digest.latest_topics": "來自 %1 的最新主題", - "digest.top-topics": "Top topics from %1", - "digest.popular-topics": "Popular topics from %1", + "digest.top-topics": "來自 %1 的置頂主題", + "digest.popular-topics": "來自 %1 的熱門主題", "digest.cta": "點擊這裡訪問 %1", "digest.unsub.info": "根據您的訂閱設定,為您發送此摘要。", "digest.day": "天", diff --git a/public/language/zh-TW/error.json b/public/language/zh-TW/error.json index b44267318d..00e6cc398c 100644 --- a/public/language/zh-TW/error.json +++ b/public/language/zh-TW/error.json @@ -34,8 +34,9 @@ "email-invited": "Email was already invited", "email-not-confirmed": "Posting in some categories or topics is enabled once your email is confirmed, please click here to send a confirmation email.", "email-not-confirmed-chat": "您的電子信箱尚未確認,無法聊天,請點擊這裡確認您的電子信箱。", - "email-not-confirmed-email-sent": "您的電子信箱尚未確認,請檢查您的收件匣。在電子信箱被確認前您不能貼文和聊天。", - "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery. Please click here to enter an email.", + "email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email. You may not be able to post in some categories or chat until your email is confirmed.", + "no-email-to-confirm": "Your account does not have an email set. An email is necessary for account recovery, and may be necessary for chatting and posting in some categories. Please click here to enter an email.", + "user-doesnt-have-email": "User \"%1\" does not have an email set.", "email-confirm-failed": "我們無法確認您的電子信箱,請重試", "confirm-email-already-sent": "確認郵件已發出,如需重新發送請等待 %1 分鐘後再試。", "sendmail-not-found": "無法找到 sendmail 可執行檔,請確保 sendmail 已經安裝並可被運行 NodeBB 的系統帳戶執行", @@ -103,6 +104,7 @@ "already-bookmarked": "您已將此貼文存為了書籤", "already-unbookmarked": "您已移除了此貼文的書籤", "cant-ban-other-admins": "您不能封鎖其他管理員!", + "cant-make-banned-users-admin": "You can't make banned users admin.", "cant-remove-last-admin": "您是唯一的管理員。在刪除您的管理員權限前,請增加另一個管理員。", "account-deletion-disabled": "Account deletion is disabled", "cant-delete-admin": "在刪除該帳戶之前,請先移除其管理權限。", diff --git a/public/language/zh-TW/top.json b/public/language/zh-TW/top.json new file mode 100644 index 0000000000..62fae776f8 --- /dev/null +++ b/public/language/zh-TW/top.json @@ -0,0 +1,4 @@ +{ + "title": "Top", + "no_top_topics": "無置頂主題" +} \ No newline at end of file diff --git a/public/language/zh-TW/topic.json b/public/language/zh-TW/topic.json index 4bfd341313..c967c2b415 100644 --- a/public/language/zh-TW/topic.json +++ b/public/language/zh-TW/topic.json @@ -1,6 +1,6 @@ { "topic": "主題", - "title": "Title", + "title": "標題", "no_topics_found": "沒有找到主題!", "no_posts_found": "沒有找到回覆!", "post_is_deleted": "此回覆已被刪除!", @@ -139,6 +139,7 @@ "composer.handle_placeholder": "在此輸入您的名稱/代稱", "composer.discard": "撤銷", "composer.submit": "提交", + "composer.additional-options": "Additional Options", "composer.schedule": "Schedule", "composer.replying_to": "正在回覆 %1", "composer.new_topic": "新主題", diff --git a/public/language/zh-TW/user.json b/public/language/zh-TW/user.json index 836434b84d..23924c8386 100644 --- a/public/language/zh-TW/user.json +++ b/public/language/zh-TW/user.json @@ -8,20 +8,20 @@ "email": "電子信箱", "confirm_email": "確認電子信箱", "account_info": "帳戶訊息", - "admin_actions_label": "Administrative Actions", + "admin_actions_label": "管理行動", "ban_account": "禁用帳戶", "ban_account_confirm": "您確定要禁用此帳戶、嗎?", "unban_account": "解禁帳戶", "delete_account": "刪除帳戶", - "delete_account_as_admin": "Delete Account", - "delete_content": "Delete Account Content", + "delete_account_as_admin": "刪除 帳戶", + "delete_content": "刪除帳戶 內容", "delete_all": "Delete Account and Content", "delete_account_confirm": "Are you sure you want to anonymize your posts and delete your account?
This action is irreversible and you will not be able to recover any of your data

Enter your password to confirm that you wish to destroy this account.", "delete_this_account_confirm": "Are you sure you want to delete this account while leaving its contents behind?
This action is irreversible, posts will be anonymized, and you will not be able to restore post associations with the deleted account

", "delete_account_content_confirm": "Are you sure you want to delete this account's content (posts/topics/uploads)?
This action is irreversible and you will not be able to recover any data

", "delete_all_confirm": "Are you sure you want to delete this account and all of its content (posts/topics/uploads)?
This action is irreversible and you will not be able to recover any data

", "account-deleted": "帳戶已刪除", - "account-content-deleted": "Account content deleted", + "account-content-deleted": "帳戶內容已刪除", "fullname": "姓名", "website": "網站", "location": "位置", @@ -94,6 +94,7 @@ "digest_off": "關閉", "digest_daily": "每天", "digest_weekly": "每週", + "digest_biweekly": "Bi-Weekly", "digest_monthly": "每月", "has_no_follower": "此使用者還沒有追隨者 :(", "follows_no_one": "此使用者尚未追隨任何人 :(", diff --git a/public/language/zh-TW/users.json b/public/language/zh-TW/users.json index 07e076f86c..6af6963b18 100644 --- a/public/language/zh-TW/users.json +++ b/public/language/zh-TW/users.json @@ -11,7 +11,7 @@ "online-only": "只看在線", "invite": "邀請註冊", "prompt-email": "郵件:", - "groups-to-join": "Groups to be joined when invite is accepted:", + "groups-to-join": "同意邀請後要加入的群組:", "invitation-email-sent": "已發送邀請給 %1", "user_list": "使用者列表", "recent_topics": "最新主題", diff --git a/public/less/admin/general/dashboard.less b/public/less/admin/general/dashboard.less index e42c1ef8ac..f7e3f8ff72 100644 --- a/public/less/admin/general/dashboard.less +++ b/public/less/admin/general/dashboard.less @@ -124,7 +124,7 @@ border-color: rgba(151,187,205,1); background-color: rgba(151,187,205,0.2); } - &.anonymous { + &.guest { border-color: #46BFBD; background-color: #5AD3D1; } diff --git a/public/openapi/read.yaml b/public/openapi/read.yaml index 6605079d47..857621dd86 100644 --- a/public/openapi/read.yaml +++ b/public/openapi/read.yaml @@ -78,6 +78,8 @@ paths: $ref: 'read/admin/dashboard/users.yaml' /api/admin/dashboard/topics: $ref: 'read/admin/dashboard/topics.yaml' + /api/admin/dashboard/searches: + $ref: 'read/admin/dashboard/searches.yaml' "/api/admin/settings/{term}": $ref: 'read/admin/settings/term.yaml' /api/admin/settings/languages: diff --git a/public/openapi/read/admin/dashboard/searches.yaml b/public/openapi/read/admin/dashboard/searches.yaml new file mode 100644 index 0000000000..7097c8bcb8 --- /dev/null +++ b/public/openapi/read/admin/dashboard/searches.yaml @@ -0,0 +1,25 @@ +get: + tags: + - admin + summary: Get detailed user registration analytics + responses: + "200": + description: A JSON object containing popular searches. + content: + application/json: + schema: + allOf: + - type: object + properties: + searches: + type: array + items: + type: object + properties: + value: + type: string + description: The string that was searched + score: + type: number + description: Number of times this string has been searched + - $ref: ../../../components/schemas/CommonProps.yaml#/CommonProps \ No newline at end of file diff --git a/public/openapi/write/login.yaml b/public/openapi/write/login.yaml index 43ba2f8cb9..001cd5da01 100644 --- a/public/openapi/write/login.yaml +++ b/public/openapi/write/login.yaml @@ -4,6 +4,8 @@ post: summary: verify login credentials description: | This route accepts a username/password or email/password pair (dependent on forum settings), returning a standard user object if credentials are validated successfully. + This route also initializes a standard login session and returns a valid cookie that can be used in subsequent API calls as though it were a browser session. + **Note**: Cookie-based sessions require a CSRF token for non-`GET` routes. requestBody: content: application/json: diff --git a/public/src/admin/admin.js b/public/src/admin/admin.js index bdc6afb35f..ebb697f42d 100644 --- a/public/src/admin/admin.js +++ b/public/src/admin/admin.js @@ -1,8 +1,8 @@ 'use strict'; (function () { - var logoutTimer = 0; - var logoutMessage; + let logoutTimer = 0; + let logoutMessage; function startLogoutTimer() { if (app.config.adminReloginDuration <= 0) { return; @@ -20,12 +20,14 @@ } logoutTimer = setTimeout(function () { - bootbox.alert({ - closeButton: false, - message: logoutMessage, - callback: function () { - window.location.reload(); - }, + require(['bootbox'], function (bootbox) { + bootbox.alert({ + closeButton: false, + message: logoutMessage, + callback: function () { + window.location.reload(); + }, + }); }); }, 3600000); } @@ -92,11 +94,11 @@ } url = [config.relative_path, url].join('/'); - var fallback; + let fallback; $('#main-menu li').removeClass('active'); $('#main-menu a').removeClass('active').filter('[href="' + url + '"]').each(function () { - var menu = $(this); + const menu = $(this); if (menu.parent().attr('data-link')) { return; } @@ -107,13 +109,13 @@ fallback = menu.text(); }); - var mainTitle; - var pageTitle; + let mainTitle; + let pageTitle; if (/admin\/plugins\//.test(url)) { mainTitle = fallback; pageTitle = '[[admin/menu:section-plugins]] > ' + mainTitle; } else { - var matches = url.match(/admin\/(.+?)\/(.+?)$/); + const matches = url.match(/admin\/(.+?)\/(.+?)$/); if (matches) { mainTitle = '[[admin/menu:' + matches[1] + '/' + matches[2] + ']]'; pageTitle = '[[admin/menu:section-' + @@ -141,31 +143,35 @@ function setupRestartLinks() { $('.rebuild-and-restart').off('click').on('click', function () { - bootbox.confirm('[[admin/admin:alert.confirm-rebuild-and-restart]]', function (confirm) { - if (confirm) { - require(['admin/modules/instance'], function (instance) { - instance.rebuildAndRestart(); - }); - } + require(['bootbox'], function (bootbox) { + bootbox.confirm('[[admin/admin:alert.confirm-rebuild-and-restart]]', function (confirm) { + if (confirm) { + require(['admin/modules/instance'], function (instance) { + instance.rebuildAndRestart(); + }); + } + }); }); }); $('.restart').off('click').on('click', function () { - bootbox.confirm('[[admin/admin:alert.confirm-restart]]', function (confirm) { - if (confirm) { - require(['admin/modules/instance'], function (instance) { - instance.restart(); - }); - } + require(['bootbox'], function (bootbox) { + bootbox.confirm('[[admin/admin:alert.confirm-restart]]', function (confirm) { + if (confirm) { + require(['admin/modules/instance'], function (instance) { + instance.restart(); + }); + } + }); }); }); } function configureSlidemenu() { require(['slideout'], function (Slideout) { - var env = utils.findBootstrapEnvironment(); + let env = utils.findBootstrapEnvironment(); - var slideout = new Slideout({ + const slideout = new Slideout({ panel: document.getElementById('panel'), menu: document.getElementById('menu'), padding: 256, diff --git a/public/src/admin/advanced/cache.js b/public/src/admin/advanced/cache.js index 7a97a09e8d..7bb1cbff7c 100644 --- a/public/src/admin/advanced/cache.js +++ b/public/src/admin/advanced/cache.js @@ -1,14 +1,14 @@ 'use strict'; define('admin/advanced/cache', function () { - var Cache = {}; + const Cache = {}; Cache.init = function () { require(['admin/settings'], function (Settings) { Settings.prepare(); }); $('.clear').on('click', function () { - var name = $(this).attr('data-name'); + const name = $(this).attr('data-name'); socket.emit('admin.cache.clear', { name: name }, function (err) { if (err) { return app.alertError(err.message); @@ -18,9 +18,9 @@ define('admin/advanced/cache', function () { }); $('.checkbox').on('change', function () { - var input = $(this).find('input'); - var flag = input.is(':checked'); - var name = $(this).attr('data-name'); + const input = $(this).find('input'); + const flag = input.is(':checked'); + const name = $(this).attr('data-name'); socket.emit('admin.cache.toggle', { name: name, enabled: flag }, function (err) { if (err) { return app.alertError(err.message); diff --git a/public/src/admin/advanced/errors.js b/public/src/admin/advanced/errors.js index 6356d5690b..ac9e7db071 100644 --- a/public/src/admin/advanced/errors.js +++ b/public/src/admin/advanced/errors.js @@ -1,8 +1,8 @@ 'use strict'; -define('admin/advanced/errors', ['Chart'], function (Chart) { - var Errors = {}; +define('admin/advanced/errors', ['bootbox', 'Chart'], function (bootbox, Chart) { + const Errors = {}; Errors.init = function () { Errors.setupCharts(); @@ -26,9 +26,9 @@ define('admin/advanced/errors', ['Chart'], function (Chart) { }; Errors.setupCharts = function () { - var notFoundCanvas = document.getElementById('not-found'); - var tooBusyCanvas = document.getElementById('toobusy'); - var dailyLabels = utils.getDaysArray(); + const notFoundCanvas = document.getElementById('not-found'); + const tooBusyCanvas = document.getElementById('toobusy'); + let dailyLabels = utils.getDaysArray(); dailyLabels = dailyLabels.slice(-7); @@ -36,7 +36,7 @@ define('admin/advanced/errors', ['Chart'], function (Chart) { Chart.defaults.global.tooltips.enabled = false; } - var data = { + const data = { 'not-found': { labels: dailyLabels, datasets: [ diff --git a/public/src/admin/advanced/events.js b/public/src/admin/advanced/events.js index 147ad193e5..0ebc945a80 100644 --- a/public/src/admin/advanced/events.js +++ b/public/src/admin/advanced/events.js @@ -1,27 +1,31 @@ 'use strict'; -define('admin/advanced/events', function () { - var Events = {}; +define('admin/advanced/events', ['bootbox'], function (bootbox) { + const Events = {}; Events.init = function () { $('[data-action="clear"]').on('click', function () { - socket.emit('admin.deleteAllEvents', function (err) { - if (err) { - return app.alertError(err.message); + bootbox.confirm('[[admin/advanced/events:confirm-delete-all-events]]', (confirm) => { + if (confirm) { + socket.emit('admin.deleteAllEvents', function (err) { + if (err) { + return app.alertError(err.message); + } + $('.events-list').empty(); + }); } - $('.events-list').empty(); }); }); $('.delete-event').on('click', function () { - var parentEl = $(this).parents('[data-eid]'); - var eid = parentEl.attr('data-eid'); + const $parentEl = $(this).parents('[data-eid]'); + const eid = $parentEl.attr('data-eid'); socket.emit('admin.deleteEvents', [eid], function (err) { if (err) { return app.alertError(err.message); } - parentEl.remove(); + $parentEl.remove(); }); }); @@ -31,8 +35,8 @@ define('admin/advanced/events', function () { Events.refresh = function (event) { event.preventDefault(); - var formEl = $('#filters'); - ajaxify.go('admin/advanced/events?' + formEl.serialize()); + const $formEl = $('#filters'); + ajaxify.go('admin/advanced/events?' + $formEl.serialize()); }; return Events; diff --git a/public/src/admin/advanced/logs.js b/public/src/admin/advanced/logs.js index 42aebba080..6a236b49e3 100644 --- a/public/src/admin/advanced/logs.js +++ b/public/src/admin/advanced/logs.js @@ -2,17 +2,17 @@ define('admin/advanced/logs', function () { - var Logs = {}; + const Logs = {}; Logs.init = function () { - var logsEl = $('.logs pre'); + const logsEl = $('.logs pre'); logsEl.scrollTop(logsEl.prop('scrollHeight')); // Affix menu $('.affix').affix(); $('.logs').find('button[data-action]').on('click', function () { - var btnEl = $(this); - var action = btnEl.attr('data-action'); + const btnEl = $(this); + const action = btnEl.attr('data-action'); switch (action) { case 'reload': diff --git a/public/src/admin/appearance/customise.js b/public/src/admin/appearance/customise.js index 70393a50ae..d0a95050fd 100644 --- a/public/src/admin/appearance/customise.js +++ b/public/src/admin/appearance/customise.js @@ -1,7 +1,7 @@ 'use strict'; define('admin/appearance/customise', ['admin/settings', 'ace/ace'], function (Settings, ace) { - var Customise = {}; + const Customise = {}; Customise.init = function () { Settings.prepare(function () { @@ -9,9 +9,9 @@ define('admin/appearance/customise', ['admin/settings', 'ace/ace'], function (Se $('#customJS').text($('#customJS-holder').val()); $('#customHTML').text($('#customHTML-holder').val()); - var customCSS = ace.edit('customCSS'); - var customJS = ace.edit('customJS'); - var customHTML = ace.edit('customHTML'); + const customCSS = ace.edit('customCSS'); + const customJS = ace.edit('customJS'); + const customHTML = ace.edit('customHTML'); customCSS.setTheme('ace/theme/twilight'); customCSS.getSession().setMode('ace/mode/less'); diff --git a/public/src/admin/appearance/skins.js b/public/src/admin/appearance/skins.js index 157d227ba6..653742bd7d 100644 --- a/public/src/admin/appearance/skins.js +++ b/public/src/admin/appearance/skins.js @@ -2,7 +2,7 @@ define('admin/appearance/skins', ['translator'], function (translator) { - var Skins = {}; + const Skins = {}; Skins.init = function () { // Populate skins from Bootswatch API @@ -12,19 +12,19 @@ define('admin/appearance/skins', ['translator'], function (translator) { }).done(Skins.render); $('#skins').on('click', function (e) { - var target = $(e.target); + let target = $(e.target); if (!target.attr('data-action')) { target = target.parents('[data-action]'); } - var action = target.attr('data-action'); + const action = target.attr('data-action'); if (action && action === 'use') { - var parentEl = target.parents('[data-theme]'); - var themeType = parentEl.attr('data-type'); - var cssSrc = parentEl.attr('data-css'); - var themeId = parentEl.attr('data-theme'); + const parentEl = target.parents('[data-theme]'); + const themeType = parentEl.attr('data-type'); + const cssSrc = parentEl.attr('data-css'); + const themeId = parentEl.attr('data-theme'); socket.emit('admin.themes.set', { @@ -50,7 +50,7 @@ define('admin/appearance/skins', ['translator'], function (translator) { }; Skins.render = function (bootswatch) { - var themeContainer = $('#bootstrap_themes'); + const themeContainer = $('#bootstrap_themes'); app.parseAndTranslate('admin/partials/theme_list', { themes: bootswatch.themes.map(function (theme) { @@ -70,7 +70,7 @@ define('admin/appearance/skins', ['translator'], function (translator) { themeContainer.html(html); if (config['theme:src']) { - var skin = config['theme:src'] + const skin = config['theme:src'] .match(/latest\/(\S+)\/bootstrap.min.css/)[1] .replace(/(^|\s)([a-z])/g, function (m, p1, p2) { return p1 + p2.toUpperCase(); }); @@ -82,8 +82,8 @@ define('admin/appearance/skins', ['translator'], function (translator) { function highlightSelectedTheme(themeId) { translator.translate('[[admin/appearance/skins:select-skin]] || [[admin/appearance/skins:current-skin]]', function (text) { text = text.split(' || '); - var select = text[0]; - var current = text[1]; + const select = text[0]; + const current = text[1]; $('[data-theme]') .removeClass('selected') diff --git a/public/src/admin/appearance/themes.js b/public/src/admin/appearance/themes.js index 94510fd248..7a27d94c9d 100644 --- a/public/src/admin/appearance/themes.js +++ b/public/src/admin/appearance/themes.js @@ -1,19 +1,19 @@ 'use strict'; -define('admin/appearance/themes', ['translator'], function (translator) { - var Themes = {}; +define('admin/appearance/themes', ['bootbox', 'translator'], function (bootbox, translator) { + const Themes = {}; Themes.init = function () { $('#installed_themes').on('click', function (e) { - var target = $(e.target); - var action = target.attr('data-action'); + const target = $(e.target); + const action = target.attr('data-action'); if (action && action === 'use') { - var parentEl = target.parents('[data-theme]'); - var themeType = parentEl.attr('data-type'); - var cssSrc = parentEl.attr('data-css'); - var themeId = parentEl.attr('data-theme'); + const parentEl = target.parents('[data-theme]'); + const themeType = parentEl.attr('data-type'); + const cssSrc = parentEl.attr('data-css'); + const themeId = parentEl.attr('data-theme'); socket.emit('admin.themes.set', { type: themeType, @@ -70,7 +70,7 @@ define('admin/appearance/themes', ['translator'], function (translator) { return app.alertError(err.message); } - var instListEl = $('#installed_themes'); + const instListEl = $('#installed_themes'); if (!themes.length) { instListEl.append($('
  • ').addClass('no-themes').translateHtml('[[admin/appearance/themes:no-themes]]')); @@ -88,8 +88,8 @@ define('admin/appearance/themes', ['translator'], function (translator) { function highlightSelectedTheme(themeId) { translator.translate('[[admin/appearance/themes:select-theme]] || [[admin/appearance/themes:current-theme]]', function (text) { text = text.split(' || '); - var select = text[0]; - var current = text[1]; + const select = text[0]; + const current = text[1]; $('[data-theme]') .removeClass('selected') diff --git a/public/src/admin/dashboard.js b/public/src/admin/dashboard.js index 548e1fe996..645023b563 100644 --- a/public/src/admin/dashboard.js +++ b/public/src/admin/dashboard.js @@ -1,29 +1,29 @@ 'use strict'; -define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart, translator, Benchpress) { - var Admin = {}; - var intervals = { +define('admin/dashboard', ['Chart', 'translator', 'benchpress', 'bootbox'], function (Chart, translator, Benchpress, bootbox) { + const Admin = {}; + const intervals = { rooms: false, graphs: false, }; - var isMobile = false; - var graphData = { + let isMobile = false; + const graphData = { rooms: {}, traffic: {}, }; - var currentGraph = { + const currentGraph = { units: 'hours', until: undefined, }; - var DEFAULTS = { + const DEFAULTS = { roomInterval: 10000, graphInterval: 15000, realtimeInterval: 1500, }; - var usedTopicColors = []; + const usedTopicColors = []; $(window).on('action:ajaxify.start', function () { clearInterval(intervals.rooms); @@ -62,7 +62,7 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart graphData.rooms = data; - var html = '
    ' + + const html = '
    ' + '' + data.onlineRegisteredCount + '' + '
    [[admin/dashboard:active-users.users]]
    ' + '
    ' + @@ -86,38 +86,38 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart $('#active-users').translateHtml(html); }; - var graphs = { + const graphs = { traffic: null, registered: null, presence: null, topics: null, }; - var topicColors = ['#bf616a', '#5B90BF', '#d08770', '#ebcb8b', '#a3be8c', '#96b5b4', '#8fa1b3', '#b48ead', '#ab7967', '#46BFBD']; + const topicColors = ['#bf616a', '#5B90BF', '#d08770', '#ebcb8b', '#a3be8c', '#96b5b4', '#8fa1b3', '#b48ead', '#ab7967', '#46BFBD']; /* eslint-disable */ // from chartjs.org function lighten(col, amt) { - var usePound = false; + let usePound = false; if (col[0] === '#') { col = col.slice(1); usePound = true; } - var num = parseInt(col, 16); + const num = parseInt(col, 16); - var r = (num >> 16) + amt; + let r = (num >> 16) + amt; if (r > 255) r = 255; else if (r < 0) r = 0; - var b = ((num >> 8) & 0x00FF) + amt; + let b = ((num >> 8) & 0x00FF) + amt; if (b > 255) b = 255; else if (b < 0) b = 0; - var g = (num & 0x0000FF) + amt; + let g = (num & 0x0000FF) + amt; if (g > 255) g = 255; else if (g < 0) g = 0; @@ -128,21 +128,21 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart function setupGraphs(callback) { callback = callback || function () {}; - var trafficCanvas = document.getElementById('analytics-traffic'); - var registeredCanvas = document.getElementById('analytics-registered'); - var presenceCanvas = document.getElementById('analytics-presence'); - var topicsCanvas = document.getElementById('analytics-topics'); - var trafficCtx = trafficCanvas.getContext('2d'); - var registeredCtx = registeredCanvas.getContext('2d'); - var presenceCtx = presenceCanvas.getContext('2d'); - var topicsCtx = topicsCanvas.getContext('2d'); - var trafficLabels = utils.getHoursArray(); + const trafficCanvas = document.getElementById('analytics-traffic'); + const registeredCanvas = document.getElementById('analytics-registered'); + const presenceCanvas = document.getElementById('analytics-presence'); + const topicsCanvas = document.getElementById('analytics-topics'); + const trafficCtx = trafficCanvas.getContext('2d'); + const registeredCtx = registeredCanvas.getContext('2d'); + const presenceCtx = presenceCanvas.getContext('2d'); + const topicsCtx = topicsCanvas.getContext('2d'); + const trafficLabels = utils.getHoursArray(); if (isMobile) { Chart.defaults.global.tooltips.enabled = false; } - var t = translator.Translator.create(); + const t = translator.Translator.create(); Promise.all([ t.translateKey('admin/dashboard:graphs.page-views', []), t.translateKey('admin/dashboard:graphs.page-views-registered', []), @@ -150,14 +150,14 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart t.translateKey('admin/dashboard:graphs.page-views-bot', []), t.translateKey('admin/dashboard:graphs.unique-visitors', []), t.translateKey('admin/dashboard:graphs.registered-users', []), - t.translateKey('admin/dashboard:graphs.anonymous-users', []), + t.translateKey('admin/dashboard:graphs.guest-users', []), t.translateKey('admin/dashboard:on-categories', []), t.translateKey('admin/dashboard:reading-posts', []), t.translateKey('admin/dashboard:browsing-topics', []), t.translateKey('admin/dashboard:recent', []), t.translateKey('admin/dashboard:unread', []), ]).then(function (translations) { - var data = { + const data = { labels: trafficLabels, datasets: [ { @@ -323,8 +323,8 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart adjustPieCharts(); $('[data-action="updateGraph"]:not([data-units="custom"])').on('click', function () { - var until = new Date(); - var amount = $(this).attr('data-amount'); + let until = new Date(); + const amount = $(this).attr('data-amount'); if ($(this).attr('data-units') === 'days') { until.setHours(0, 0, 0, 0); } @@ -339,10 +339,10 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart }); $('[data-action="updateGraph"][data-units="custom"]').on('click', function () { - var targetEl = $(this); + const targetEl = $(this); Benchpress.render('admin/partials/pageviews-range-select', {}).then(function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ title: '[[admin/dashboard:page-views-custom]]', message: html, buttons: { @@ -353,10 +353,10 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart }, }, }).on('shown.bs.modal', function () { - var date = new Date(); - var today = date.toISOString().substr(0, 10); + const date = new Date(); + const today = date.toISOString().substr(0, 10); date.setDate(date.getDate() - 1); - var yesterday = date.toISOString().substr(0, 10); + const yesterday = date.toISOString().substr(0, 10); modal.find('#startRange').val(targetEl.attr('data-startRange') || yesterday); modal.find('#endRange').val(targetEl.attr('data-endRange') || today); @@ -364,8 +364,8 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart function submit() { // NEED TO ADD VALIDATION HERE FOR YYYY-MM-DD - var formData = modal.find('form').serializeObject(); - var validRegexp = /\d{4}-\d{2}-\d{2}/; + const formData = modal.find('form').serializeObject(); + const validRegexp = /\d{4}-\d{2}-\d{2}/; // Input validation if (!formData.startRange && !formData.endRange) { @@ -378,10 +378,10 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart return false; } - var until = new Date(formData.endRange); + let until = new Date(formData.endRange); until.setDate(until.getDate() + 1); until = until.getTime(); - var amount = (until - new Date(formData.startRange).getTime()) / (1000 * 60 * 60 * 24); + const amount = (until - new Date(formData.startRange).getTime()) / (1000 * 60 * 60 * 24); updateTrafficGraph('days', until, amount); @@ -401,7 +401,7 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart function adjustPieCharts() { $('.pie-chart.legend-up').each(function () { - var $this = $(this); + const $this = $(this); if ($this.width() < 320) { $this.addClass('compact'); @@ -459,8 +459,8 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart currentGraph.amount = amount; // Update the View as JSON button url - var apiEl = $('#view-as-json'); - var newHref = $.param({ + const apiEl = $('#view-as-json'); + const newHref = $.param({ units: units || 'hours', until: until, count: amount, @@ -469,11 +469,11 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart }); } - function updateRegisteredGraph(registered, anonymous) { + function updateRegisteredGraph(registered, guest) { $('#analytics-legend .registered').parent().find('.count').text(registered); - $('#analytics-legend .anonymous').parent().find('.count').text(anonymous); + $('#analytics-legend .guest').parent().find('.count').text(guest); graphs.registered.data.datasets[0].data[0] = registered; - graphs.registered.data.datasets[0].data[1] = anonymous; + graphs.registered.data.datasets[0].data[1] = guest; graphs.registered.update(); } @@ -517,10 +517,10 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart }); function buildTopicsLegend() { - var html = ''; + let html = ''; topics.forEach(function (t, i) { - var link = t.tid ? ' ' + t.title + '' : t.title; - var label = t.count === '0' ? t.title : link; + const link = t.tid ? ' ' + t.title + '' : t.title; + const label = t.count === '0' ? t.title : link; html += '
  • ' + '
    ' + @@ -536,7 +536,7 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart function setupRealtimeButton() { $('#toggle-realtime .fa').on('click', function () { - var $this = $(this); + const $this = $(this); if ($this.hasClass('fa-toggle-on')) { $this.removeClass('fa-toggle-on').addClass('fa-toggle-off'); $this.parent().find('strong').html('OFF'); @@ -565,11 +565,11 @@ define('admin/dashboard', ['Chart', 'translator', 'benchpress'], function (Chart } function setupFullscreen() { - var container = document.getElementById('analytics-panel'); - var $container = $(container); - var btn = $container.find('.fa-expand'); - var fsMethod; - var exitMethod; + const container = document.getElementById('analytics-panel'); + const $container = $(container); + const btn = $container.find('.fa-expand'); + let fsMethod; + let exitMethod; if (container.requestFullscreen) { fsMethod = 'requestFullscreen'; diff --git a/public/src/admin/extend/plugins.js b/public/src/admin/extend/plugins.js index b51e8e4189..36ff1fdb1d 100644 --- a/public/src/admin/extend/plugins.js +++ b/public/src/admin/extend/plugins.js @@ -4,13 +4,14 @@ define('admin/extend/plugins', [ 'translator', 'benchpress', + 'bootbox', 'jquery-ui/widgets/sortable', -], function (translator, Benchpress) { - var Plugins = {}; +], function (translator, Benchpress, bootbox) { + const Plugins = {}; Plugins.init = function () { - var pluginsList = $('.plugins'); - var numPlugins = pluginsList[0].querySelectorAll('li').length; - var pluginID; + const pluginsList = $('.plugins'); + const numPlugins = pluginsList[0].querySelectorAll('li').length; + let pluginID; if (!numPlugins) { translator.translate('
  • [[admin/extend/plugins:none-found]]

  • ', function (html) { @@ -23,11 +24,11 @@ define('admin/extend/plugins', [ searchInputEl.value = ''; pluginsList.on('click', 'button[data-action="toggleActive"]', function () { - var pluginEl = $(this).parents('li'); + const pluginEl = $(this).parents('li'); pluginID = pluginEl.attr('data-plugin-id'); - var btn = $('[id="' + pluginID + '"] [data-action="toggleActive"]'); + const btn = $('[id="' + pluginID + '"] [data-action="toggleActive"]'); - var pluginData = ajaxify.data.installed[pluginEl.attr('data-plugin-index')]; + const pluginData = ajaxify.data.installed[pluginEl.attr('data-plugin-index')]; function toggleActivate() { socket.emit('admin.plugins.toggleActive', pluginID, function (err, status) { @@ -93,7 +94,7 @@ define('admin/extend/plugins', [ }); pluginsList.on('click', 'button[data-action="toggleInstall"]', function () { - var btn = $(this); + const btn = $(this); btn.attr('disabled', true); pluginID = $(this).parents('li').attr('data-plugin-id'); @@ -130,8 +131,8 @@ define('admin/extend/plugins', [ }); pluginsList.on('click', 'button[data-action="upgrade"]', function () { - var btn = $(this); - var parent = btn.parents('li'); + const btn = $(this); + const parent = btn.parents('li'); pluginID = parent.attr('data-plugin-id'); Plugins.suggest(pluginID, function (err, payload) { @@ -140,7 +141,7 @@ define('admin/extend/plugins', [ } require(['compare-versions'], function (compareVersions) { - var currentVersion = parent.find('.currentVersion').text(); + const currentVersion = parent.find('.currentVersion').text(); if (payload.version !== 'latest' && compareVersions.compare(payload.version, currentVersion, '>')) { upgrade(pluginID, btn, payload.version); } else if (payload.version === 'latest') { @@ -155,9 +156,9 @@ define('admin/extend/plugins', [ }); $(searchInputEl).on('input propertychange', function () { - var term = $(this).val(); + const term = $(this).val(); $('.plugins li').each(function () { - var pluginId = $(this).attr('data-plugin-id'); + const pluginId = $(this).attr('data-plugin-id'); $(this).toggleClass('hide', pluginId && pluginId.indexOf(term) === -1); }); }); @@ -178,7 +179,7 @@ define('admin/extend/plugins', [ if (err) { return app.alertError(err); } - var html = ''; + let html = ''; activePlugins.forEach(function (plugin) { html += '
  • ' + plugin + '
  • '; }); @@ -188,24 +189,24 @@ define('admin/extend/plugins', [ }); return; } - var list = $('#order-active-plugins-modal .plugin-list'); + const list = $('#order-active-plugins-modal .plugin-list'); list.html(html).sortable(); list.find('.fa-chevron-up').on('click', function () { - var item = $(this).parents('li'); + const item = $(this).parents('li'); item.prev().before(item); }); list.find('.fa-chevron-down').on('click', function () { - var item = $(this).parents('li'); + const item = $(this).parents('li'); item.next().after(item); }); }); }); $('#save-plugin-order').on('click', function () { - var plugins = $('#order-active-plugins-modal .plugin-list').children(); - var data = []; + const plugins = $('#order-active-plugins-modal .plugin-list').children(); + const data = []; plugins.each(function (index, el) { data.push({ name: $(el).text(), order: index }); }); @@ -251,7 +252,7 @@ define('admin/extend/plugins', [ if (err) { return app.alertError(err.message); } - var parent = btn.parents('li'); + const parent = btn.parents('li'); parent.find('.fa-exclamation-triangle').remove(); parent.find('.currentVersion').text(version); btn.remove(); @@ -273,7 +274,7 @@ define('admin/extend/plugins', [ } Plugins.toggleInstall = function (pluginID, version, callback) { - var btn = $('li[data-plugin-id="' + pluginID + '"] button[data-action="toggleInstall"]'); + const btn = $('li[data-plugin-id="' + pluginID + '"] button[data-action="toggleInstall"]'); btn.find('i').attr('class', 'fa fa-refresh fa-spin'); socket.emit('admin.plugins.toggleInstall', { @@ -302,7 +303,7 @@ define('admin/extend/plugins', [ }; Plugins.suggest = function (pluginId, callback) { - var nbbVersion = app.config.version.match(/^\d+\.\d+\.\d+/); + const nbbVersion = app.config.version.match(/^\d+\.\d+\.\d+/); $.ajax((app.config.registry || 'https://packages.nodebb.org') + '/api/v1/suggest', { type: 'GET', data: { diff --git a/public/src/admin/extend/rewards.js b/public/src/admin/extend/rewards.js index 93f6227ccd..2a07c4601f 100644 --- a/public/src/admin/extend/rewards.js +++ b/public/src/admin/extend/rewards.js @@ -2,13 +2,13 @@ define('admin/extend/rewards', [], function () { - var rewards = {}; + const rewards = {}; - var available; - var active; - var conditions; - var conditionals; + let available; + let active; + let conditions; + let conditionals; rewards.init = function () { available = ajaxify.data.rewards; @@ -25,8 +25,8 @@ define('admin/extend/rewards', [], function () { update($(this)); }) .on('click', '.delete', function () { - var parent = $(this).parents('[data-id]'); - var id = parent.attr('data-id'); + const parent = $(this).parents('[data-id]'); + const id = parent.attr('data-id'); socket.emit('admin.rewards.delete', { id: id }, function (err) { if (err) { @@ -40,8 +40,8 @@ define('admin/extend/rewards', [], function () { return false; }) .on('click', '.toggle', function () { - var btn = $(this); - var disabled = btn.hasClass('btn-success'); + const btn = $(this); + const disabled = btn.hasClass('btn-success'); btn.toggleClass('btn-warning').toggleClass('btn-success').translateHtml('[[admin/extend/rewards:' + (disabled ? 'disable' : 'enable') + ']]'); // send disable api call return false; @@ -72,12 +72,12 @@ define('admin/extend/rewards', [], function () { } function selectReward(el) { - var parent = el.parents('[data-rid]'); - var div = parent.find('.inputs'); - var inputs; - var html = ''; + const parent = el.parents('[data-rid]'); + const div = parent.find('.inputs'); + let inputs; + let html = ''; - for (var reward in available) { + for (const reward in available) { if (available.hasOwnProperty(reward)) { if (available[reward].rid === el.attr('data-selected')) { inputs = available[reward].inputs; @@ -112,10 +112,10 @@ define('admin/extend/rewards', [], function () { function populateInputs() { $('[data-rid]').each(function (i) { - var div = $(this).find('.inputs'); - var rewards = active[i].rewards; + const div = $(this).find('.inputs'); + const rewards = active[i].rewards; - for (var reward in rewards) { + for (const reward in rewards) { if (rewards.hasOwnProperty(reward)) { div.find('[name="' + reward + '"]').val(rewards[reward]); } @@ -124,9 +124,9 @@ define('admin/extend/rewards', [], function () { } function newReward() { - var ul = $('#active'); + const ul = $('#active'); - var data = { + const data = { active: [{ disabled: true, value: '', @@ -146,12 +146,12 @@ define('admin/extend/rewards', [], function () { } function saveRewards() { - var activeRewards = []; + const activeRewards = []; $('#active li').each(function () { - var data = { rewards: {} }; - var main = $(this).find('form.main').serializeArray(); - var rewards = $(this).find('form.rewards').serializeArray(); + const data = { rewards: {} }; + const main = $(this).find('form.main').serializeArray(); + const rewards = $(this).find('form.rewards').serializeArray(); main.forEach(function (obj) { data[obj.name] = obj.value; diff --git a/public/src/admin/extend/widgets.js b/public/src/admin/extend/widgets.js index 5660cc8f05..aad32fe7e1 100644 --- a/public/src/admin/extend/widgets.js +++ b/public/src/admin/extend/widgets.js @@ -2,18 +2,19 @@ define('admin/extend/widgets', [ + 'bootbox', 'jquery-ui/widgets/sortable', 'jquery-ui/widgets/draggable', 'jquery-ui/widgets/droppable', 'jquery-ui/widgets/datepicker', -], function () { - var Widgets = {}; +], function (bootbox) { + const Widgets = {}; Widgets.init = function () { $('#widgets .nav-pills .dropdown-menu a').on('click', function (ev) { - var $this = $(this); + const $this = $(this); $('#widgets .tab-pane').removeClass('active'); - var templateName = $this.attr('data-template'); + const templateName = $this.attr('data-template'); $('#widgets .tab-pane[data-template="' + templateName + '"]').addClass('active'); $('#widgets .selected-template').text(templateName); $('#widgets .nav-pills .dropdown').trigger('click'); @@ -46,7 +47,7 @@ define('admin/extend/widgets', [ $('#widgets .available-containers .containers > [data-container-html]') .draggable({ helper: function (e) { - var target = $(e.target); + let target = $(e.target); target = target.attr('data-container-html') ? target : target.parents('[data-container-html]'); return target.clone().addClass('block').width(target.width()).css('opacity', '0.5'); @@ -64,7 +65,7 @@ define('admin/extend/widgets', [ }, connectWith: 'div', }).on('click', '.delete-widget', function () { - var panel = $(this).parents('.widget-panel'); + const panel = $(this).parents('.widget-panel'); bootbox.confirm('[[admin/extend/widgets:alert.confirm-delete]]', function (confirm) { if (confirm) { @@ -80,20 +81,20 @@ define('admin/extend/widgets', [ $('#save').on('click', saveWidgets); function saveWidgets() { - var saveData = []; + const saveData = []; $('#widgets [data-template][data-location]').each(function (i, el) { el = $(el); - var template = el.attr('data-template'); - var location = el.attr('data-location'); - var area = el.children('.widget-area'); - var widgets = []; + const template = el.attr('data-template'); + const location = el.attr('data-location'); + const area = el.children('.widget-area'); + const widgets = []; area.find('.widget-panel[data-widget]').each(function () { - var widgetData = {}; - var data = $(this).find('form').serializeArray(); + const widgetData = {}; + const data = $(this).find('form').serializeArray(); - for (var d in data) { + for (const d in data) { if (data.hasOwnProperty(d)) { if (data[d].name) { if (widgetData[data[d].name]) { @@ -139,10 +140,10 @@ define('admin/extend/widgets', [ } $('.color-selector').on('click', '.btn', function () { - var btn = $(this); - var selector = btn.parents('.color-selector'); - var container = selector.parents('[data-container-html]'); - var classList = []; + const btn = $(this); + const selector = btn.parents('.color-selector'); + const container = selector.parents('[data-container-html]'); + const classList = []; selector.children().each(function () { classList.push($(this).attr('data-class')); @@ -158,7 +159,7 @@ define('admin/extend/widgets', [ } function createDatePicker(el) { - var currentYear = new Date().getFullYear(); + const currentYear = new Date().getFullYear(); el.find('.date-selector').datepicker({ changeMonth: true, changeYear: true, @@ -172,7 +173,7 @@ define('admin/extend/widgets', [ .droppable({ accept: '[data-container-html]', drop: function (event, ui) { - var el = $(this); + const el = $(this); el.find('.panel-body .container-html').val(ui.draggable.attr('data-container-html')); el.find('.panel-body').removeClass('hidden'); @@ -189,13 +190,13 @@ define('admin/extend/widgets', [ function loadWidgetData() { function populateWidget(widget, data) { if (data.title) { - var title = widget.find('.panel-heading strong'); + const title = widget.find('.panel-heading strong'); title.text(title.text() + ' - ' + data.title); } widget.find('input, textarea, select').each(function () { - var input = $(this); - var value = data[input.attr('name')]; + const input = $(this); + const value = data[input.attr('name')]; if (input.attr('type') === 'checkbox') { input.prop('checked', !!value).trigger('change'); @@ -208,17 +209,17 @@ define('admin/extend/widgets', [ } $.get(config.relative_path + '/api/admin/extend/widgets', function (data) { - var areas = data.areas; + const areas = data.areas; - for (var i = 0; i < areas.length; i += 1) { - var area = areas[i]; - var widgetArea = $('#widgets .area[data-template="' + area.template + '"][data-location="' + area.location + '"]').find('.widget-area'); + for (let i = 0; i < areas.length; i += 1) { + const area = areas[i]; + const widgetArea = $('#widgets .area[data-template="' + area.template + '"][data-location="' + area.location + '"]').find('.widget-area'); widgetArea.html(''); - for (var k = 0; k < area.data.length; k += 1) { - var widgetData = area.data[k]; - var widgetEl = $('.available-widgets [data-widget="' + widgetData.widget + '"]').clone(true).removeClass('hide'); + for (let k = 0; k < area.data.length; k += 1) { + const widgetData = area.data[k]; + const widgetEl = $('.available-widgets [data-widget="' + widgetData.widget + '"]').clone(true).removeClass('hide'); widgetArea.append(populateWidget(widgetEl, widgetData.data)); appendToggle(widgetEl); @@ -231,44 +232,44 @@ define('admin/extend/widgets', [ } function setupCloneButton() { - var clone = $('[component="clone"]'); - var cloneBtn = $('[component="clone/button"]'); + const clone = $('[component="clone"]'); + const cloneBtn = $('[component="clone/button"]'); clone.find('.dropdown-menu li').on('click', function () { - var template = $(this).find('a').text(); + const template = $(this).find('a').text(); cloneBtn.translateHtml('[[admin/extend/widgets:clone-from]] ' + template + ''); cloneBtn.attr('data-template', template); }); cloneBtn.on('click', function () { - var template = cloneBtn.attr('data-template'); + const template = cloneBtn.attr('data-template'); if (!template) { return app.alertError('[[admin/extend/widgets:error.select-clone]]'); } - var currentTemplate = $('#active-widgets .active.tab-pane[data-template] .area'); - var templateToClone = $('#active-widgets .tab-pane[data-template="' + template + '"] .area'); + const currentTemplate = $('#active-widgets .active.tab-pane[data-template] .area'); + const templateToClone = $('#active-widgets .tab-pane[data-template="' + template + '"] .area'); - var currentAreas = currentTemplate.map(function () { + const currentAreas = currentTemplate.map(function () { return $(this).attr('data-location'); }).get(); - var areasToClone = templateToClone.map(function () { - var location = $(this).attr('data-location'); + const areasToClone = templateToClone.map(function () { + const location = $(this).attr('data-location'); return currentAreas.indexOf(location) !== -1 ? location : undefined; }).get().filter(function (i) { return i; }); function clone(location) { $('#active-widgets .tab-pane[data-template="' + template + '"] [data-location="' + location + '"]').each(function () { $(this).find('[data-widget]').each(function () { - var widget = $(this).clone(true); + const widget = $(this).clone(true); $('#active-widgets .active.tab-pane[data-template]:not([data-template="global"]) [data-location="' + location + '"] .widget-area').append(widget); }); }); } - for (var i = 0, ii = areasToClone.length; i < ii; i++) { - var location = areasToClone[i]; + for (let i = 0, ii = areasToClone.length; i < ii; i++) { + const location = areasToClone[i]; clone(location); } diff --git a/public/src/admin/manage/admins-mods.js b/public/src/admin/manage/admins-mods.js index 2bceceb15e..0a8ec2dc62 100644 --- a/public/src/admin/manage/admins-mods.js +++ b/public/src/admin/manage/admins-mods.js @@ -3,7 +3,7 @@ define('admin/manage/admins-mods', [ 'autocomplete', 'api', 'bootbox', 'categorySelector', ], function (autocomplete, api, bootbox, categorySelector) { - var AdminsMods = {}; + const AdminsMods = {}; AdminsMods.init = function () { autocomplete.user($('#admin-search'), function (ev, ui) { @@ -25,8 +25,8 @@ define('admin/manage/admins-mods', [ }); $('.administrator-area').on('click', '.remove-user-icon', function () { - var userCard = $(this).parents('[data-uid]'); - var uid = userCard.attr('data-uid'); + const userCard = $(this).parents('[data-uid]'); + const 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]]'); } @@ -60,8 +60,8 @@ define('admin/manage/admins-mods', [ }); $('.global-moderator-area').on('click', '.remove-user-icon', function () { - var userCard = $(this).parents('[data-uid]'); - var uid = userCard.attr('data-uid'); + const userCard = $(this).parents('[data-uid]'); + const uid = userCard.attr('data-uid'); bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-global-mod]]', function (confirm) { if (confirm) { @@ -85,8 +85,8 @@ define('admin/manage/admins-mods', [ }); autocomplete.user($('.moderator-search'), function (ev, ui) { - var input = $(ev.target); - var cid = $(ev.target).attr('data-cid'); + const input = $(ev.target); + const cid = $(ev.target).attr('data-cid'); socket.emit('admin.categories.setPrivilege', { cid: cid, privilege: ajaxify.data.allPrivileges, @@ -111,10 +111,10 @@ define('admin/manage/admins-mods', [ }); $('.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'); + const moderatorArea = $(this).parents('[data-cid]'); + const cid = moderatorArea.attr('data-cid'); + const userCard = $(this).parents('[data-uid]'); + const uid = userCard.attr('data-uid'); bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-moderator]]', function (confirm) { if (confirm) { diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index c6d1307a4d..c8a8a10bfd 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -8,9 +8,9 @@ define('admin/manage/categories', [ 'Sortable', 'bootbox', ], function (translator, Benchpress, categorySelector, api, Sortable, bootbox) { - var Categories = {}; - var newCategoryId = -1; - var sortables; + const Categories = {}; + let newCategoryId = -1; + let sortables; Categories.init = function () { categorySelector.init($('.category [component="category-selector"]'), { @@ -26,12 +26,12 @@ define('admin/manage/categories', [ // Enable/Disable toggle events $('.categories').on('click', '.category-tools [data-action="toggle"]', function () { - var $this = $(this); - var cid = $this.attr('data-disable-cid'); - var parentEl = $this.parents('li[data-cid="' + cid + '"]'); - var disabled = parentEl.hasClass('disabled'); - var childrenEls = parentEl.find('li[data-cid]'); - var childrenCids = childrenEls.map(function () { + const $this = $(this); + const cid = $this.attr('data-disable-cid'); + const parentEl = $this.parents('li[data-cid="' + cid + '"]'); + const disabled = parentEl.hasClass('disabled'); + const childrenEls = parentEl.find('li[data-cid]'); + const childrenCids = childrenEls.map(function () { return $(this).attr('data-cid'); }).get(); @@ -39,15 +39,15 @@ define('admin/manage/categories', [ }); $('.categories').on('click', '.toggle', function () { - var el = $(this); + const el = $(this); el.find('i').toggleClass('fa-minus').toggleClass('fa-plus'); el.closest('[data-cid]').find('> ul[data-cid]').toggleClass('hidden'); }); $('.categories').on('click', '.set-order', function () { - var cid = $(this).attr('data-cid'); - var order = $(this).attr('data-order'); - var modal = bootbox.dialog({ + const cid = $(this).attr('data-cid'); + const order = $(this).attr('data-order'); + const modal = bootbox.dialog({ title: '[[admin/manage/categories:set-order]]', message: '

    [[admin/manage/categories:set-order-help]]

    ', show: true, @@ -56,9 +56,9 @@ define('admin/manage/categories', [ label: '[[modules:bootbox.confirm]]', className: 'btn-primary', callback: function () { - var val = modal.find('input').val(); + const val = modal.find('input').val(); if (val && cid) { - var modified = {}; + const modified = {}; modified[cid] = { order: Math.max(1, parseInt(val, 10)) }; api.put('/categories/' + cid, modified[cid]).then(function () { ajaxify.refresh(); @@ -81,7 +81,7 @@ define('admin/manage/categories', [ }); function toggleAll(expand) { - var el = $('.categories .toggle'); + const el = $('.categories .toggle'); el.find('i').toggleClass('fa-minus', expand).toggleClass('fa-plus', !expand); el.closest('[data-cid]').find('> ul[data-cid]').toggleClass('hidden', !expand); } @@ -89,7 +89,7 @@ define('admin/manage/categories', [ Categories.throwCreateModal = function () { Benchpress.render('admin/partials/categories/create', {}).then(function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ title: '[[admin/manage/categories:alert.create]]', message: html, buttons: { @@ -100,7 +100,7 @@ define('admin/manage/categories', [ }, }, }); - var options = { + const options = { localCategories: [ { cid: 0, @@ -109,10 +109,10 @@ define('admin/manage/categories', [ }, ], }; - var parentSelector = categorySelector.init(modal.find('#parentCidGroup [component="category-selector"]'), options); - var cloneFromSelector = categorySelector.init(modal.find('#cloneFromCidGroup [component="category-selector"]'), options); + const parentSelector = categorySelector.init(modal.find('#parentCidGroup [component="category-selector"]'), options); + const cloneFromSelector = categorySelector.init(modal.find('#cloneFromCidGroup [component="category-selector"]'), options); function submit() { - var formData = modal.find('form').serializeObject(); + const formData = modal.find('form').serializeObject(); formData.description = ''; formData.icon = 'fa-comments'; formData.uid = app.user.uid; @@ -125,8 +125,8 @@ define('admin/manage/categories', [ } $('#cloneChildren').on('change', function () { - var check = $(this); - var parentSelect = modal.find('#parentCidGroup [component="category-selector"] .dropdown-toggle'); + const check = $(this); + const parentSelect = modal.find('#parentCidGroup [component="category-selector"] .dropdown-toggle'); if (check.prop('checked')) { parentSelect.attr('disabled', 'disabled'); @@ -159,7 +159,7 @@ define('admin/manage/categories', [ }; Categories.render = function (categories) { - var container = $('.categories'); + const container = $('.categories'); if (!categories || !categories.length) { translator.translate('[[admin/manage/categories:alert.none-active]]', function (text) { @@ -190,15 +190,15 @@ define('admin/manage/categories', [ } function itemDragDidEnd(e) { - var isCategoryUpdate = parseInt(newCategoryId, 10) !== -1; + const isCategoryUpdate = parseInt(newCategoryId, 10) !== -1; // Update needed? if ((e.newIndex != null && parseInt(e.oldIndex, 10) !== parseInt(e.newIndex, 10)) || isCategoryUpdate) { - var cid = e.item.dataset.cid; - var modified = {}; + const cid = e.item.dataset.cid; + const modified = {}; // on page 1 baseIndex is 0, on page n baseIndex is (n - 1) * ajaxify.data.categoriesPerPage // this makes sure order is correct when drag & drop is used on pages > 1 - var baseIndex = (ajaxify.data.pagination.currentPage - 1) * ajaxify.data.categoriesPerPage; + const baseIndex = (ajaxify.data.pagination.currentPage - 1) * ajaxify.data.categoriesPerPage; modified[cid] = { order: baseIndex + e.newIndex + 1, }; @@ -222,7 +222,7 @@ define('admin/manage/categories', [ */ function renderList(categories, container, parentId) { // Translate category names if needed - var count = 0; + let count = 0; categories.forEach(function (category, idx, parent) { translator.translate(category.name, function (translated) { if (category.name !== translated) { @@ -248,7 +248,7 @@ define('admin/manage/categories', [ container.append(html); // Handle and children categories in this level have - for (var x = 0, numCategories = categories.length; x < numCategories; x += 1) { + for (let x = 0, numCategories = categories.length; x < numCategories; x += 1) { renderList(categories[x].children, $('li[data-cid="' + categories[x].cid + '"]'), categories[x].cid); } diff --git a/public/src/admin/manage/category-analytics.js b/public/src/admin/manage/category-analytics.js index 089f34ae08..6a283ef43f 100644 --- a/public/src/admin/manage/category-analytics.js +++ b/public/src/admin/manage/category-analytics.js @@ -2,17 +2,17 @@ define('admin/manage/category-analytics', ['Chart'], function (Chart) { - var CategoryAnalytics = {}; + const CategoryAnalytics = {}; CategoryAnalytics.init = function () { - var hourlyCanvas = document.getElementById('pageviews:hourly'); - var dailyCanvas = document.getElementById('pageviews:daily'); - var topicsCanvas = document.getElementById('topics:daily'); - var postsCanvas = document.getElementById('posts:daily'); - var hourlyLabels = utils.getHoursArray().map(function (text, idx) { + const hourlyCanvas = document.getElementById('pageviews:hourly'); + const dailyCanvas = document.getElementById('pageviews:daily'); + const topicsCanvas = document.getElementById('topics:daily'); + const postsCanvas = document.getElementById('posts:daily'); + const hourlyLabels = utils.getHoursArray().map(function (text, idx) { return idx % 3 ? '' : text; }); - var dailyLabels = utils.getDaysArray().map(function (text, idx) { + const dailyLabels = utils.getDaysArray().map(function (text, idx) { return idx % 3 ? '' : text; }); @@ -20,7 +20,7 @@ define('admin/manage/category-analytics', ['Chart'], function (Chart) { Chart.defaults.global.tooltips.enabled = false; } - var data = { + const data = { 'pageviews:hourly': { labels: hourlyLabels, datasets: [ diff --git a/public/src/admin/manage/category.js b/public/src/admin/manage/category.js index 1873d4de7a..10f665ecab 100644 --- a/public/src/admin/manage/category.js +++ b/public/src/admin/manage/category.js @@ -6,13 +6,14 @@ define('admin/manage/category', [ 'categorySelector', 'benchpress', 'api', -], function (uploader, iconSelect, categorySelector, Benchpress, api) { - var Category = {}; - var updateHash = {}; + 'bootbox', +], function (uploader, iconSelect, categorySelector, Benchpress, api, bootbox) { + const Category = {}; + let updateHash = {}; Category.init = function () { $('#category-settings select').each(function () { - var $this = $(this); + const $this = $(this); $this.val($this.attr('data-value')); }); @@ -34,8 +35,8 @@ define('admin/manage/category', [ }); $('[data-name="bgColor"], [data-name="color"]').on('input', function () { - var $inputEl = $(this); - var previewEl = $inputEl.parents('[data-cid]').find('.category-preview'); + const $inputEl = $(this); + const previewEl = $inputEl.parents('[data-cid]').find('.category-preview'); if ($inputEl.attr('data-name') === 'bgColor') { previewEl.css('background-color', $inputEl.val()); } else if ($inputEl.attr('data-name') === 'color') { @@ -46,12 +47,12 @@ define('admin/manage/category', [ }); $('#save').on('click', function () { - var tags = $('#tag-whitelist').val() ? $('#tag-whitelist').val().split(',') : []; + const tags = $('#tag-whitelist').val() ? $('#tag-whitelist').val().split(',') : []; if (tags.length && tags.length < parseInt($('#cid-min-tags').val(), 10)) { return app.alertError('[[admin/manage/categories:alert.not-enough-whitelisted-tags]]'); } - var cid = ajaxify.data.category.cid; + const cid = ajaxify.data.category.cid; api.put('/categories/' + cid, updateHash).then((res) => { app.flags._unsaved = false; app.alert({ @@ -73,7 +74,7 @@ define('admin/manage/category', [ name: ajaxify.data.category.name, topic_count: ajaxify.data.category.topic_count, }).then(function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ title: '[[admin/manage/categories:purge]]', message: html, size: 'large', @@ -84,13 +85,13 @@ define('admin/manage/category', [ callback: function () { modal.find('.modal-footer button').prop('disabled', true); - var intervalId = setInterval(function () { + const intervalId = setInterval(function () { socket.emit('categories.getTopicCount', ajaxify.data.category.cid, function (err, count) { if (err) { return app.alertError(err); } - var percent = 0; + let percent = 0; if (ajaxify.data.category.topic_count > 0) { percent = Math.max(0, (1 - (count / ajaxify.data.category.topic_count))) * 100; } @@ -118,8 +119,8 @@ define('admin/manage/category', [ $('.copy-settings').on('click', function () { Benchpress.render('admin/partials/categories/copy-settings', {}).then(function (html) { - var selectedCid; - var modal = bootbox.dialog({ + let selectedCid; + const modal = bootbox.dialog({ title: '[[modules:composer.select_category]]', message: html, buttons: { @@ -164,8 +165,8 @@ define('admin/manage/category', [ }); $('.upload-button').on('click', function () { - var inputEl = $(this); - var cid = inputEl.attr('data-cid'); + const inputEl = $(this); + const cid = inputEl.attr('data-cid'); uploader.show({ title: '[[admin/manage/categories:alert.upload-image]]', @@ -173,7 +174,7 @@ define('admin/manage/category', [ params: { cid: cid }, }, function (imageUrlOnServer) { $('#category-image').val(imageUrlOnServer); - var previewBox = inputEl.parent().parent().siblings('.category-preview'); + const previewBox = inputEl.parent().parent().siblings('.category-preview'); previewBox.css('background', 'url(' + imageUrlOnServer + '?' + new Date().getTime() + ')'); modified($('#category-image')); @@ -188,8 +189,8 @@ define('admin/manage/category', [ $('.delete-image').on('click', function (e) { e.preventDefault(); - var inputEl = $('#category-image'); - var previewBox = $('.category-preview'); + const inputEl = $('#category-image'); + const previewBox = $('.category-preview'); inputEl.val(''); previewBox.css('background-image', ''); @@ -216,8 +217,8 @@ define('admin/manage/category', [ }).catch(app.alertError); }); $('button[data-action="toggle"]').on('click', function () { - var $this = $(this); - var disabled = $this.attr('data-disabled') === '1'; + const $this = $(this); + const disabled = $this.attr('data-disabled') === '1'; api.put('/categories/' + ajaxify.data.category.cid, { disabled: disabled ? 0 : 1, }).then(() => { @@ -229,14 +230,14 @@ define('admin/manage/category', [ }; function modified(el) { - var value; + let value; if ($(el).is(':checkbox')) { value = $(el).is(':checked') ? 1 : 0; } else { value = $(el).val(); } - var dataName = $(el).attr('data-name'); - var fields = dataName.match(/[^\][.]+/g); + const dataName = $(el).attr('data-name'); + const fields = dataName.match(/[^\][.]+/g); function setNestedFields(obj, index) { if (index === fields.length) { @@ -262,7 +263,7 @@ define('admin/manage/category', [ } function handleTags() { - var tagEl = $('#tag-whitelist'); + const tagEl = $('#tag-whitelist'); tagEl.tagsinput({ confirmKeys: [13, 44], trimValue: true, @@ -280,7 +281,7 @@ define('admin/manage/category', [ Category.launchParentSelector = function () { categorySelector.modal({ onSubmit: function (selectedCategory) { - var parentCid = selectedCategory.cid; + const parentCid = selectedCategory.cid; if (!parentCid) { return; } @@ -289,7 +290,7 @@ define('admin/manage/category', [ }).then(() => { api.get(`/categories/${parentCid}`, {}).then(function (parent) { if (parent && parent.icon && parent.name) { - var buttonHtml = ' ' + parent.name; + const buttonHtml = ' ' + parent.name; $('button[data-action="changeParent"]').html(buttonHtml).parent().removeClass('hide'); } }); diff --git a/public/src/admin/manage/digest.js b/public/src/admin/manage/digest.js index 3b07918277..86b19e6576 100644 --- a/public/src/admin/manage/digest.js +++ b/public/src/admin/manage/digest.js @@ -1,16 +1,16 @@ 'use strict'; -define('admin/manage/digest', function () { - var Digest = {}; +define('admin/manage/digest', ['bootbox'], function (bootbox) { + const Digest = {}; Digest.init = function () { $('table').on('click', '[data-action]', function () { - var action = this.getAttribute('data-action'); - var uid = this.getAttribute('data-uid'); + const action = this.getAttribute('data-action'); + const uid = this.getAttribute('data-uid'); if (action.startsWith('resend-')) { - var interval = action.slice(7); + const interval = action.slice(7); bootbox.confirm('[[admin/manage/digest:resend-all-confirm]]', function (ok) { if (ok) { Digest.send(action, undefined, function (err) { diff --git a/public/src/admin/manage/group.js b/public/src/admin/manage/group.js index c7fb51d6ae..8e7ea9133e 100644 --- a/public/src/admin/manage/group.js +++ b/public/src/admin/manage/group.js @@ -8,18 +8,19 @@ define('admin/manage/group', [ 'groupSearch', 'slugify', 'api', -], function (memberList, iconSelect, translator, categorySelector, groupSearch, slugify, api) { - var Groups = {}; + 'bootbox', +], function (memberList, iconSelect, translator, categorySelector, groupSearch, slugify, api, bootbox) { + const Groups = {}; Groups.init = function () { - var groupIcon = $('#group-icon'); - var changeGroupUserTitle = $('#change-group-user-title'); - var changeGroupLabelColor = $('#change-group-label-color'); - var changeGroupTextColor = $('#change-group-text-color'); - var groupLabelPreview = $('#group-label-preview'); - var groupLabelPreviewText = $('#group-label-preview-text'); + const groupIcon = $('#group-icon'); + const changeGroupUserTitle = $('#change-group-user-title'); + const changeGroupLabelColor = $('#change-group-label-color'); + const changeGroupTextColor = $('#change-group-text-color'); + const groupLabelPreview = $('#group-label-preview'); + const groupLabelPreviewText = $('#group-label-preview-text'); - var groupName = ajaxify.data.group.name; + const groupName = ajaxify.data.group.name; $('#group-selector').on('change', function () { ajaxify.go('admin/manage/groups/' + $(this).val() + window.location.hash); @@ -42,9 +43,9 @@ define('admin/manage/group', [ setupGroupMembersMenu(); $('#group-icon, #group-icon-label').on('click', function () { - var currentIcon = groupIcon.attr('value'); + const currentIcon = groupIcon.attr('value'); iconSelect.init(groupIcon, function () { - var newIcon = groupIcon.attr('value'); + let newIcon = groupIcon.attr('value'); if (newIcon === currentIcon) { return; } @@ -64,9 +65,9 @@ define('admin/manage/group', [ showLinks: true, }); - var cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), { + const cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), { onSelect: function (selectedCategory) { - var cids = ($('#memberPostCids').val() || '').split(',').map(cid => parseInt(cid, 10)); + let cids = ($('#memberPostCids').val() || '').split(',').map(cid => parseInt(cid, 10)); cids.push(selectedCategory.cid); cids = cids.filter((cid, index, array) => array.indexOf(cid) === index); $('#memberPostCids').val(cids.join(',')); @@ -96,7 +97,7 @@ define('admin/manage/group', [ disableJoinRequests: $('#group-disableJoinRequests').is(':checked'), disableLeave: $('#group-disableLeave').is(':checked'), }).then(() => { - var newName = $('#change-group-name').val(); + const newName = $('#change-group-name').val(); // If the group name changed, change url if (groupName !== newName) { @@ -111,12 +112,12 @@ define('admin/manage/group', [ function setupGroupMembersMenu() { $('[component="groups/members"]').on('click', '[data-action]', function () { - var btnEl = $(this); - var userRow = btnEl.parents('[data-uid]'); - var ownerFlagEl = userRow.find('.member-name .user-owner-icon'); - var isOwner = !ownerFlagEl.hasClass('invisible'); - var uid = userRow.attr('data-uid'); - var action = btnEl.attr('data-action'); + const btnEl = $(this); + const userRow = btnEl.parents('[data-uid]'); + const ownerFlagEl = userRow.find('.member-name .user-owner-icon'); + const isOwner = !ownerFlagEl.hasClass('invisible'); + const uid = userRow.attr('data-uid'); + const action = btnEl.attr('data-action'); switch (action) { case 'toggleOwnership': @@ -143,7 +144,7 @@ define('admin/manage/group', [ function navigateToCategory(cid) { if (cid) { - var url = 'admin/manage/privileges/' + cid + '?group=' + ajaxify.data.group.nameEncoded; + const url = 'admin/manage/privileges/' + cid + '?group=' + ajaxify.data.group.nameEncoded; if (app.flags && app.flags._unsaved === true) { translator.translate('[[global:unsaved-changes]]', function (text) { bootbox.confirm(text, function (navigate) { diff --git a/public/src/admin/manage/groups.js b/public/src/admin/manage/groups.js index 8a812e8897..10867bede5 100644 --- a/public/src/admin/manage/groups.js +++ b/public/src/admin/manage/groups.js @@ -4,14 +4,15 @@ define('admin/manage/groups', [ 'categorySelector', 'slugify', 'api', -], function (categorySelector, slugify, api) { - var Groups = {}; + 'bootbox', +], function (categorySelector, slugify, api, bootbox) { + const Groups = {}; Groups.init = function () { - var createModal = $('#create-modal'); - var createGroupName = $('#create-group-name'); - var createModalGo = $('#create-modal-go'); - var createModalError = $('#create-modal-error'); + const createModal = $('#create-modal'); + const createGroupName = $('#create-group-name'); + const createModalGo = $('#create-modal-go'); + const createModalError = $('#create-modal-error'); handleSearch(); @@ -29,7 +30,7 @@ define('admin/manage/groups', [ }); createModalGo.on('click', function () { - var submitObj = { + const submitObj = { name: createGroupName.val(), description: $('#create-group-desc').val(), private: $('#create-group-private').is(':checked') ? 1 : 0, @@ -52,9 +53,9 @@ define('admin/manage/groups', [ }); $('.groups-list').on('click', '[data-action]', function () { - var el = $(this); - var action = el.attr('data-action'); - var groupName = el.parents('tr[data-groupname]').attr('data-groupname'); + const el = $(this); + const action = el.attr('data-action'); + const groupName = el.parents('tr[data-groupname]').attr('data-groupname'); switch (action) { case 'delete': @@ -72,7 +73,7 @@ define('admin/manage/groups', [ function enableCategorySelectors() { $('.groups-list [component="category-selector"]').each(function () { - var nameEncoded = $(this).parents('[data-name-encoded]').attr('data-name-encoded'); + const nameEncoded = $(this).parents('[data-name-encoded]').attr('data-name-encoded'); categorySelector.init($(this), { onSelect: function (selectedCategory) { ajaxify.go('admin/manage/privileges/' + selectedCategory.cid + '?group=' + nameEncoded); @@ -83,14 +84,14 @@ define('admin/manage/groups', [ } function handleSearch() { - var queryEl = $('#group-search'); + const queryEl = $('#group-search'); function doSearch() { if (!queryEl.val()) { return ajaxify.refresh(); } $('.pagination').addClass('hide'); - var groupsEl = $('.groups-list'); + const groupsEl = $('.groups-list'); socket.emit('groups.search', { query: queryEl.val(), options: { diff --git a/public/src/admin/manage/registration.js b/public/src/admin/manage/registration.js index 08f8b6722b..90f0387f87 100644 --- a/public/src/admin/manage/registration.js +++ b/public/src/admin/manage/registration.js @@ -1,15 +1,15 @@ 'use strict'; -define('admin/manage/registration', function () { - var Registration = {}; +define('admin/manage/registration', ['bootbox'], function (bootbox) { + const Registration = {}; Registration.init = function () { $('.users-list').on('click', '[data-action]', function () { - var parent = $(this).parents('[data-username]'); - var action = $(this).attr('data-action'); - var username = parent.attr('data-username'); - var method = action === 'accept' ? 'user.acceptRegistration' : 'user.rejectRegistration'; + const parent = $(this).parents('[data-username]'); + const action = $(this).attr('data-action'); + const username = parent.attr('data-username'); + const method = action === 'accept' ? 'user.acceptRegistration' : 'user.rejectRegistration'; socket.emit(method, { username: username }, function (err) { if (err) { @@ -21,16 +21,16 @@ define('admin/manage/registration', function () { }); $('.invites-list').on('click', '[data-action]', function () { - var parent = $(this).parents('[data-invitation-mail][data-invited-by]'); - var email = parent.attr('data-invitation-mail'); - var invitedBy = parent.attr('data-invited-by'); - var action = $(this).attr('data-action'); - var method = 'user.deleteInvitation'; + const parent = $(this).parents('[data-invitation-mail][data-invited-by]'); + const email = parent.attr('data-invitation-mail'); + const invitedBy = parent.attr('data-invited-by'); + const action = $(this).attr('data-action'); + const method = 'user.deleteInvitation'; - var removeRow = function () { - var nextRow = parent.next(); - var thisRowinvitedBy = parent.find('.invited-by'); - var nextRowInvitedBy = nextRow.find('.invited-by'); + const removeRow = function () { + const nextRow = parent.next(); + const thisRowinvitedBy = parent.find('.invited-by'); + const nextRowInvitedBy = nextRow.find('.invited-by'); if (nextRowInvitedBy.html() !== undefined && nextRowInvitedBy.html().length < 2) { nextRowInvitedBy.html(thisRowinvitedBy.html()); } diff --git a/public/src/admin/manage/tags.js b/public/src/admin/manage/tags.js index 0fb7dbf39f..836c8f7be9 100644 --- a/public/src/admin/manage/tags.js +++ b/public/src/admin/manage/tags.js @@ -2,10 +2,11 @@ define('admin/manage/tags', [ + 'bootbox', 'forum/infinitescroll', 'admin/modules/selectable', -], function (infinitescroll, selectable) { - var Tags = {}; +], function (bootbox, infinitescroll, selectable) { + const Tags = {}; Tags.init = function () { selectable.enable('.tag-management', '.tag-row'); @@ -17,9 +18,9 @@ define('admin/manage/tags', [ }; function handleCreate() { - var createModal = $('#create-modal'); - var createTagName = $('#create-tag-name'); - var createModalGo = $('#create-modal-go'); + const createModal = $('#create-modal'); + const createTagName = $('#create-tag-name'); + const createModalGo = $('#create-modal-go'); createModal.on('keypress', function (e) { if (e.keyCode === 13) { @@ -73,12 +74,12 @@ define('admin/manage/tags', [ function handleRename() { $('#rename').on('click', function () { - var tagsToModify = $('.tag-row.ui-selected'); + const tagsToModify = $('.tag-row.ui-selected'); if (!tagsToModify.length) { return; } - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ title: '[[admin/manage/tags:alerts.editing]]', message: $('.rename-modal').html(), buttons: { @@ -86,7 +87,7 @@ define('admin/manage/tags', [ label: 'Save', className: 'btn-primary save', callback: function () { - var data = []; + const data = []; tagsToModify.each(function (idx, tag) { tag = $(tag); data.push({ @@ -111,7 +112,7 @@ define('admin/manage/tags', [ function handleDeleteSelected() { $('#deleteSelected').on('click', function () { - var tagsToDelete = $('.tag-row.ui-selected'); + const tagsToDelete = $('.tag-row.ui-selected'); if (!tagsToDelete.length) { return; } @@ -120,7 +121,7 @@ define('admin/manage/tags', [ if (!confirm) { return; } - var tags = []; + const tags = []; tagsToDelete.each(function (index, el) { tags.push($(el).attr('data-tag')); }); diff --git a/public/src/admin/manage/uploads.js b/public/src/admin/manage/uploads.js index 6ed59d2f77..ef19b1aaf8 100644 --- a/public/src/admin/manage/uploads.js +++ b/public/src/admin/manage/uploads.js @@ -1,7 +1,7 @@ 'use strict'; define('admin/manage/uploads', ['api', 'bootbox', 'uploader'], function (api, bootbox, uploader) { - var Uploads = {}; + const Uploads = {}; Uploads.init = function () { $('#upload').on('click', function () { @@ -15,7 +15,7 @@ define('admin/manage/uploads', ['api', 'bootbox', 'uploader'], function (api, bo }); $('.delete').on('click', function () { - var file = $(this).parents('[data-path]'); + const file = $(this).parents('[data-path]'); bootbox.confirm('[[admin/manage/uploads:confirm-delete]]', function (ok) { if (!ok) { return; diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index 41d9a1a86d..7c6543fa75 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -3,13 +3,13 @@ define('admin/manage/users', [ 'translator', 'benchpress', 'autocomplete', 'api', 'slugify', 'bootbox', 'accounts/invite', ], function (translator, Benchpress, autocomplete, api, slugify, bootbox, AccountInvite) { - var Users = {}; + const Users = {}; Users.init = function () { $('#results-per-page').val(ajaxify.data.resultsPerPage).on('change', function () { - var query = utils.params(); + const query = utils.params(); query.resultsPerPage = $('#results-per-page').val(); - var qs = buildSearchQuery(query); + const qs = buildSearchQuery(query); ajaxify.go(window.location.pathname + '?' + qs); }); @@ -42,7 +42,7 @@ define('admin/manage/users', [ }); function getSelectedUids() { - var uids = []; + const uids = []; $('.users-table [component="user/select/single"]').each(function () { if ($(this).is(':checked')) { @@ -99,7 +99,7 @@ define('admin/manage/users', [ }); $('.manage-groups').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { app.alertError('[[error:no-users-selected]]'); return false; @@ -109,14 +109,14 @@ define('admin/manage/users', [ return app.alertError(err); } Benchpress.render('admin/partials/manage_user_groups', data).then(function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ message: html, title: '[[admin/manage/users:manage-groups]]', onEscape: true, }); modal.on('shown.bs.modal', function () { autocomplete.group(modal.find('.group-search'), function (ev, ui) { - var uid = $(ev.target).attr('data-uid'); + const uid = $(ev.target).attr('data-uid'); api.put('/groups/' + ui.item.group.slug + '/membership/' + uid, undefined).then(() => { ui.item.group.nameEscaped = translator.escape(ui.item.group.displayName); app.parseAndTranslate('admin/partials/manage_user_groups', { users: [{ groups: [ui.item.group] }] }, function (html) { @@ -129,9 +129,9 @@ define('admin/manage/users', [ modal.modal('hide'); }); modal.on('click', '.remove-group-icon', function () { - var groupCard = $(this).parents('[data-group-name]'); - var groupName = groupCard.attr('data-group-name'); - var uid = $(this).parents('[data-uid]').attr('data-uid'); + const groupCard = $(this).parents('[data-group-name]'); + const groupName = groupCard.attr('data-group-name'); + const uid = $(this).parents('[data-uid]').attr('data-uid'); api.del('/groups/' + slugify(groupName) + '/membership/' + uid).then(() => { groupCard.remove(); }).catch(app.alertError); @@ -142,7 +142,7 @@ define('admin/manage/users', [ }); $('.ban-user').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { app.alertError('[[error:no-users-selected]]'); return false; // specifically to keep the menu open @@ -160,7 +160,7 @@ define('admin/manage/users', [ }); $('.ban-user-temporary').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { app.alertError('[[error:no-users-selected]]'); return false; // specifically to keep the menu open @@ -180,11 +180,11 @@ define('admin/manage/users', [ submit: { label: '[[admin/manage/users:alerts.button-ban-x, ' + uids.length + ']]', callback: function () { - var formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) { + const formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) { data[cur.name] = cur.value; return data; }, {}); - var until = formData.length > 0 ? ( + const until = formData.length > 0 ? ( Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) ) : 0; @@ -204,7 +204,7 @@ define('admin/manage/users', [ }); $('.unban-user').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { app.alertError('[[error:no-users-selected]]'); return false; // specifically to keep the menu open @@ -218,7 +218,7 @@ define('admin/manage/users', [ }); $('.reset-lockout').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { return; } @@ -227,7 +227,7 @@ define('admin/manage/users', [ }); $('.validate-email').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { return; } @@ -249,7 +249,7 @@ define('admin/manage/users', [ }); $('.send-validation-email').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { return; } @@ -262,7 +262,7 @@ define('admin/manage/users', [ }); $('.password-reset-email').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { return; } @@ -275,7 +275,7 @@ define('admin/manage/users', [ }); $('.force-password-reset').on('click', function () { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { return; } @@ -304,7 +304,7 @@ define('admin/manage/users', [ tableEl.addEventListener('change', (e) => { const subselector = e.target.closest('[component="user/select/single"]') || e.target.closest('[component="user/select/all"]'); if (subselector) { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (uids.length) { actionBtn.removeAttribute('disabled'); } else { @@ -314,7 +314,7 @@ define('admin/manage/users', [ }); function handleDelete(confirmMsg, path) { - var uids = getSelectedUids(); + const uids = getSelectedUids(); if (!uids.length) { return; } @@ -347,7 +347,7 @@ define('admin/manage/users', [ function handleUserCreate() { $('[data-action="create"]').on('click', function () { Benchpress.render('admin/partials/create_user_modal', {}).then(function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ message: html, title: '[[admin/manage/users:alerts.create]]', onEscape: true, @@ -375,19 +375,19 @@ define('admin/manage/users', [ } function createUser() { - var modal = this; - var username = document.getElementById('create-user-name').value; - var email = document.getElementById('create-user-email').value; - var password = document.getElementById('create-user-password').value; - var passwordAgain = document.getElementById('create-user-password-again').value; + const modal = this; + const username = document.getElementById('create-user-name').value; + const email = document.getElementById('create-user-email').value; + const password = document.getElementById('create-user-password').value; + const passwordAgain = document.getElementById('create-user-password-again').value; - var errorEl = $('#create-modal-error'); + const errorEl = $('#create-modal-error'); if (password !== passwordAgain) { return errorEl.translateHtml('[[admin/manage/users:alerts.error-x, [[admin/manage/users:alerts.error-passwords-different]]]]').removeClass('hide'); } - var user = { + const user = { username: username, email: email, password: password, @@ -425,12 +425,12 @@ define('admin/manage/users', [ } function loadSearchPage(query) { - var params = utils.params(); + const params = utils.params(); params.searchBy = query.searchBy; params.query = query.query; params.page = query.page; params.sortBy = params.sortBy || 'lastonline'; - var qs = decodeURIComponent($.param(params)); + const qs = decodeURIComponent($.param(params)); $.get(config.relative_path + '/api/admin/manage/users?' + qs, function (data) { renderSearchResults(data); const url = config.relative_path + '/admin/manage/users?' + qs; @@ -488,12 +488,12 @@ define('admin/manage/users', [ function handleSort() { $('.users-table thead th').on('click', function () { - var $this = $(this); - var sortBy = $this.attr('data-sort'); + const $this = $(this); + const sortBy = $this.attr('data-sort'); if (!sortBy) { return; } - var params = utils.params(); + const params = utils.params(); params.sortBy = sortBy; if (ajaxify.data.sortBy === sortBy) { params.sortDirection = ajaxify.data.reverse ? 'asc' : 'desc'; @@ -501,13 +501,13 @@ define('admin/manage/users', [ params.sortDirection = 'desc'; } - var qs = buildSearchQuery(params); + const qs = buildSearchQuery(params); ajaxify.go('admin/manage/users?' + qs); }); } function getFilters() { - var filters = []; + const filters = []; $('#filter-by').find('[data-filter-by]').each(function () { if ($(this).find('.fa-check').length) { filters.push($(this).attr('data-filter-by')); @@ -517,16 +517,16 @@ define('admin/manage/users', [ } function handleFilter() { - var currentFilters = getFilters(); + let currentFilters = getFilters(); $('#filter-by').on('click', 'li', function () { - var $this = $(this); + const $this = $(this); $this.find('i').toggleClass('fa-check', !$this.find('i').hasClass('fa-check')); return false; }); $('#filter-by').on('hidden.bs.dropdown', function () { - var filters = getFilters(); - var changed = filters.length !== currentFilters.length; + const filters = getFilters(); + let changed = filters.length !== currentFilters.length; if (filters.length === currentFilters.length) { filters.forEach(function (filter, i) { if (filter !== currentFilters[i]) { @@ -536,9 +536,9 @@ define('admin/manage/users', [ } currentFilters = getFilters(); if (changed) { - var params = utils.params(); + const params = utils.params(); params.filters = filters; - var qs = buildSearchQuery(params); + const qs = buildSearchQuery(params); ajaxify.go('admin/manage/users?' + qs); } }); diff --git a/public/src/admin/modules/colorpicker.js b/public/src/admin/modules/colorpicker.js index 6000c416d6..3b64164647 100644 --- a/public/src/admin/modules/colorpicker.js +++ b/public/src/admin/modules/colorpicker.js @@ -1,12 +1,12 @@ 'use strict'; - +// TODO: no longer used remove in 1.19.0 define('admin/modules/colorpicker', function () { - var colorpicker = {}; + const colorpicker = {}; colorpicker.enable = function (inputEl, callback) { (inputEl instanceof jQuery ? inputEl : $(inputEl)).each(function () { - var $this = $(this); + const $this = $(this); $this.ColorPicker({ color: $this.val() || '#000', diff --git a/public/src/admin/modules/dashboard-line-graph.js b/public/src/admin/modules/dashboard-line-graph.js index ac53497ce7..38f75e62cc 100644 --- a/public/src/admin/modules/dashboard-line-graph.js +++ b/public/src/admin/modules/dashboard-line-graph.js @@ -1,6 +1,6 @@ 'use strict'; -define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress', 'api', 'hooks'], function (Chart, translator, Benchpress, api, hooks) { +define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress', 'api', 'hooks', 'bootbox'], function (Chart, translator, Benchpress, api, hooks, bootbox) { const Graph = { _current: null, }; @@ -18,7 +18,7 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress Graph.handleUpdateControls({ set }); - var t = translator.Translator.create(); + const t = translator.Translator.create(); return new Promise((resolve) => { t.translateKey(`admin/menu:${ajaxify.data.template.name.replace('admin/', '')}`, []).then((key) => { const data = { @@ -81,8 +81,8 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress Graph.handleUpdateControls = ({ set }) => { $('[data-action="updateGraph"]:not([data-units="custom"])').on('click', function () { - var until = new Date(); - var amount = $(this).attr('data-amount'); + let until = new Date(); + const amount = $(this).attr('data-amount'); if ($(this).attr('data-units') === 'days') { until.setHours(0, 0, 0, 0); } @@ -97,10 +97,10 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress }); $('[data-action="updateGraph"][data-units="custom"]').on('click', function () { - var targetEl = $(this); + const targetEl = $(this); Benchpress.render('admin/partials/pageviews-range-select', {}).then(function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ title: '[[admin/dashboard:page-views-custom]]', message: html, buttons: { @@ -111,10 +111,10 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress }, }, }).on('shown.bs.modal', function () { - var date = new Date(); - var today = date.toISOString().substr(0, 10); + const date = new Date(); + const today = date.toISOString().substr(0, 10); date.setDate(date.getDate() - 1); - var yesterday = date.toISOString().substr(0, 10); + const yesterday = date.toISOString().substr(0, 10); modal.find('#startRange').val(targetEl.attr('data-startRange') || yesterday); modal.find('#endRange').val(targetEl.attr('data-endRange') || today); @@ -122,8 +122,8 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress function submit() { // NEED TO ADD VALIDATION HERE FOR YYYY-MM-DD - var formData = modal.find('form').serializeObject(); - var validRegexp = /\d{4}-\d{2}-\d{2}/; + const formData = modal.find('form').serializeObject(); + const validRegexp = /\d{4}-\d{2}-\d{2}/; // Input validation if (!formData.startRange && !formData.endRange) { @@ -136,10 +136,10 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress return false; } - var until = new Date(formData.endRange); + let until = new Date(formData.endRange); until.setDate(until.getDate() + 1); until = until.getTime(); - var amount = (until - new Date(formData.startRange).getTime()) / (1000 * 60 * 60 * 24); + const amount = (until - new Date(formData.startRange).getTime()) / (1000 * 60 * 60 * 24); Graph.update(set, 'days', until, amount); @@ -175,8 +175,8 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress Graph._current.update(); // Update address bar and "View as JSON" button url - var apiEl = $('#view-as-json'); - var newHref = $.param({ + const apiEl = $('#view-as-json'); + const newHref = $.param({ units: units || 'hours', until: until, count: amount, diff --git a/public/src/admin/modules/instance.js b/public/src/admin/modules/instance.js index bdb2aad21b..996e381229 100644 --- a/public/src/admin/modules/instance.js +++ b/public/src/admin/modules/instance.js @@ -6,7 +6,7 @@ define('admin/modules/instance', [ // the client can't fetch the template file, resulting in an error config.relative_path + '/assets/templates/alert.js', ], function () { - var instance = {}; + const instance = {}; instance.rebuildAndRestart = function (callback) { app.alert({ diff --git a/public/src/admin/modules/search.js b/public/src/admin/modules/search.js index e2ea2a4c3d..1bb62ad2cc 100644 --- a/public/src/admin/modules/search.js +++ b/public/src/admin/modules/search.js @@ -1,18 +1,18 @@ 'use strict'; define('admin/modules/search', ['mousetrap'], function (mousetrap) { - var search = {}; + const search = {}; function find(dict, term) { - var html = dict.filter(function (elem) { + const html = dict.filter(function (elem) { return elem.translations.toLowerCase().includes(term); }).map(function (params) { - var namespace = params.namespace; - var translations = params.translations; - var title = params.title; - var escaped = utils.escapeRegexChars(term); + const namespace = params.namespace; + const translations = params.translations; + let title = params.title; + const escaped = utils.escapeRegexChars(term); - var results = translations + const results = translations // remove all lines without a match .replace(new RegExp('^(?:(?!' + escaped + ').)*$', 'gmi'), '') // remove lines that only match the title @@ -60,9 +60,9 @@ define('admin/modules/search', ['mousetrap'], function (mousetrap) { }; function setupACPSearch(dict) { - var dropdown = $('#acp-search .dropdown'); - var menu = $('#acp-search .dropdown-menu'); - var input = $('#acp-search input'); + const dropdown = $('#acp-search .dropdown'); + const menu = $('#acp-search .dropdown-menu'); + const input = $('#acp-search input'); if (!config.searchEnabled) { menu.addClass('search-disabled'); @@ -73,11 +73,11 @@ define('admin/modules/search', ['mousetrap'], function (mousetrap) { }); $('#acp-search').parents('form').on('submit', function (ev) { - var selected = menu.find('li.result > a.focus').attr('href'); + let selected = menu.find('li.result > a.focus').attr('href'); if (!selected.length) { selected = menu.find('li.result > a').first().attr('href'); } - var href = selected || config.relative_path + '/search?in=titlesposts&term=' + escape(input.val()); + const href = selected || config.relative_path + '/search?in=titlesposts&term=' + escape(input.val()); ajaxify.go(href.replace(/^\//, '')); @@ -96,7 +96,7 @@ define('admin/modules/search', ['mousetrap'], function (mousetrap) { }); mousetrap(input[0]).bind(['up', 'down'], function (ev, key) { - var next; + let next; if (key === 'up') { next = menu.find('li.result > a.focus').removeClass('focus').parent().prev('.result') .children(); @@ -122,10 +122,10 @@ define('admin/modules/search', ['mousetrap'], function (mousetrap) { ev.preventDefault(); }); - var prevValue; + let prevValue; input.on('keyup focus', function () { - var value = input.val().toLowerCase(); + const value = input.val().toLowerCase(); if (value === prevValue) { return; @@ -134,8 +134,8 @@ define('admin/modules/search', ['mousetrap'], function (mousetrap) { menu.children('.result').remove(); - var len = /\W/.test(value) ? 3 : value.length; - var results; + const len = /\W/.test(value) ? 3 : value.length; + let results; menu.toggleClass('state-start-typing', len === 0); menu.toggleClass('state-keep-typing', len > 0 && len < 3); diff --git a/public/src/admin/modules/selectable.js b/public/src/admin/modules/selectable.js index 34949a4e10..470462d558 100644 --- a/public/src/admin/modules/selectable.js +++ b/public/src/admin/modules/selectable.js @@ -4,7 +4,7 @@ define('admin/modules/selectable', [ 'jquery-ui/widgets/selectable', ], function () { - var selectable = {}; + const selectable = {}; selectable.enable = function (containerEl, targets) { $(containerEl).selectable({ diff --git a/public/src/admin/settings.js b/public/src/admin/settings.js index 5b5dee579e..c7166305a0 100644 --- a/public/src/admin/settings.js +++ b/public/src/admin/settings.js @@ -2,21 +2,21 @@ define('admin/settings', ['uploader', 'mousetrap', 'hooks'], function (uploader, mousetrap, hooks) { - var Settings = {}; + const Settings = {}; Settings.populateTOC = function () { - var headers = $('.settings-header'); + const headers = $('.settings-header'); if (headers.length > 1) { headers.each(function () { - var header = $(this).text(); - var anchor = header.toLowerCase().replace(/ /g, '-').trim(); + const header = $(this).text(); + const anchor = header.toLowerCase().replace(/ /g, '-').trim(); $(this).prepend(''); $('.section-content ul').append('
  • ' + header + '
  • '); }); - var scrollTo = $('a[name="' + window.location.hash.replace('#', '') + '"]'); + const scrollTo = $('a[name="' + window.location.hash.replace('#', '') + '"]'); if (scrollTo.length) { $('html, body').animate({ scrollTop: (scrollTo.offset().top) + 'px', @@ -29,28 +29,28 @@ define('admin/settings', ['uploader', 'mousetrap', 'hooks'], function (uploader, Settings.prepare = function (callback) { // Populate the fields on the page from the config - var fields = $('#content [data-field]'); - var numFields = fields.length; - var saveBtn = $('#save'); - var revertBtn = $('#revert'); - var x; - var key; - var inputType; - var field; + const fields = $('#content [data-field]'); + const numFields = fields.length; + const saveBtn = $('#save'); + const revertBtn = $('#revert'); + let x; + let key; + let inputType; + let field; // Handle unsaved changes fields.on('change', function () { app.flags = app.flags || {}; app.flags._unsaved = true; }); - var defaultInputs = ['text', 'hidden', 'password', 'textarea', 'number']; + const defaultInputs = ['text', 'hidden', 'password', 'textarea', 'number']; for (x = 0; x < numFields; x += 1) { field = fields.eq(x); key = field.attr('data-field'); inputType = field.attr('type'); if (app.config.hasOwnProperty(key)) { if (field.is('input') && inputType === 'checkbox') { - var checked = parseInt(app.config[key], 10) === 1; + const checked = parseInt(app.config[key], 10) === 1; field.prop('checked', checked); field.parents('.mdl-switch').toggleClass('is-checked', checked); } else if (field.is('textarea') || field.is('select') || (field.is('input') && defaultInputs.indexOf(inputType) !== -1)) { @@ -117,7 +117,7 @@ define('admin/settings', ['uploader', 'mousetrap', 'hooks'], function (uploader, function handleUploads() { $('#content input[data-action="upload"]').each(function () { - var uploadBtn = $(this); + const uploadBtn = $(this); uploadBtn.on('click', function () { uploader.show({ title: uploadBtn.attr('data-title'), @@ -146,13 +146,13 @@ define('admin/settings', ['uploader', 'mousetrap', 'hooks'], function (uploader, }; function saveFields(fields, callback) { - var data = {}; + const data = {}; fields.each(function () { - var field = $(this); - var key = field.attr('data-field'); - var value; - var inputType; + const field = $(this); + const key = field.attr('data-field'); + let value; + let inputType; if (field.is('input')) { inputType = field.attr('type'); @@ -181,7 +181,7 @@ define('admin/settings', ['uploader', 'mousetrap', 'hooks'], function (uploader, return callback(err); } - for (var field in data) { + for (const field in data) { if (data.hasOwnProperty(field)) { app.config[field] = data[field]; } diff --git a/public/src/admin/settings/api.js b/public/src/admin/settings/api.js index e2a755ee6c..6f70813a76 100644 --- a/public/src/admin/settings/api.js +++ b/public/src/admin/settings/api.js @@ -1,7 +1,7 @@ 'use strict'; define('admin/settings/api', ['settings'], function (settings) { - var ACP = {}; + const ACP = {}; ACP.init = function () { settings.load('core.api', $('.core-api-settings')); diff --git a/public/src/admin/settings/cookies.js b/public/src/admin/settings/cookies.js index 0a2e8c7243..886fc7ad99 100644 --- a/public/src/admin/settings/cookies.js +++ b/public/src/admin/settings/cookies.js @@ -1,14 +1,9 @@ 'use strict'; - -define('admin/settings/cookies', [ - 'admin/modules/colorpicker', -], function (colorpicker) { - var Module = {}; +define('admin/settings/cookies', function () { + const Module = {}; Module.init = function () { - colorpicker.enable($('[data-colorpicker="1"]')); - $('#delete-all-sessions').on('click', function () { socket.emit('admin.deleteAllSessions', function (err) { if (err) { diff --git a/public/src/admin/settings/email.js b/public/src/admin/settings/email.js index 8f2f7f46ed..83a6137e77 100644 --- a/public/src/admin/settings/email.js +++ b/public/src/admin/settings/email.js @@ -2,8 +2,8 @@ define('admin/settings/email', ['ace/ace', 'admin/settings'], function (ace) { - var module = {}; - var emailEditor; + const module = {}; + let emailEditor; module.init = function () { configureEmailTester(); @@ -40,14 +40,14 @@ define('admin/settings/email', ['ace/ace', 'admin/settings'], function (ace) { emailEditor.getSession().setMode('ace/mode/html'); emailEditor.on('change', function () { - var emailPath = $('#email-editor-selector').val(); - var original; + const emailPath = $('#email-editor-selector').val(); + let original; ajaxify.data.emails.forEach(function (email) { if (email.path === emailPath) { original = email.original; } }); - var newEmail = emailEditor.getValue(); + const newEmail = emailEditor.getValue(); $('#email-editor-holder').val(newEmail !== original ? newEmail : ''); }); @@ -75,7 +75,7 @@ define('admin/settings/email', ['ace/ace', 'admin/settings'], function (ace) { } function handleDigestHourChange() { - var hour = parseInt($('#digestHour').val(), 10); + let hour = parseInt($('#digestHour').val(), 10); if (isNaN(hour)) { hour = 17; @@ -88,8 +88,8 @@ define('admin/settings/email', ['ace/ace', 'admin/settings'], function (ace) { return app.alertError(err.message); } - var date = new Date(now.timestamp); - var offset = (new Date().getTimezoneOffset() - now.offset) / 60; + const date = new Date(now.timestamp); + const offset = (new Date().getTimezoneOffset() - now.offset) / 60; date.setHours(date.getHours() + offset); $('#serverTime').text(date.toLocaleTimeString()); @@ -106,7 +106,7 @@ define('admin/settings/email', ['ace/ace', 'admin/settings'], function (ace) { } function handleSmtpServiceChange() { - var isCustom = $('[id="email:smtpTransport:service"]').val() === 'nodebb-custom-smtp'; + const isCustom = $('[id="email:smtpTransport:service"]').val() === 'nodebb-custom-smtp'; $('[id="email:smtpTransport:custom-service"]')[isCustom ? 'slideDown' : 'slideUp'](isCustom); } diff --git a/public/src/admin/settings/general.js b/public/src/admin/settings/general.js index bf88ded896..805f9f1c8f 100644 --- a/public/src/admin/settings/general.js +++ b/public/src/admin/settings/general.js @@ -2,7 +2,7 @@ define('admin/settings/general', ['admin/settings'], function () { - var Module = {}; + const Module = {}; Module.init = function () { $('button[data-action="removeLogo"]').on('click', function () { diff --git a/public/src/admin/settings/homepage.js b/public/src/admin/settings/homepage.js index 87c845921e..96447d9bbb 100644 --- a/public/src/admin/settings/homepage.js +++ b/public/src/admin/settings/homepage.js @@ -10,7 +10,7 @@ define('admin/settings/homepage', ['admin/settings'], function () { } } - var Homepage = {}; + const Homepage = {}; Homepage.init = function () { $('[data-field="homePageRoute"]').on('change', toggleCustomRoute); diff --git a/public/src/admin/settings/navigation.js b/public/src/admin/settings/navigation.js index 563709ad0b..a2fef0a0d3 100644 --- a/public/src/admin/settings/navigation.js +++ b/public/src/admin/settings/navigation.js @@ -9,8 +9,8 @@ define('admin/settings/navigation', [ 'jquery-ui/widgets/droppable', 'jquery-ui/widgets/sortable', ], function (translator, iconSelect, Benchpress) { - var navigation = {}; - var available; + const navigation = {}; + let available; navigation.init = function () { available = ajaxify.data.available; @@ -27,10 +27,10 @@ define('admin/settings/navigation', [ }); $('#enabled').on('click', '.iconPicker', function () { - var iconEl = $(this).find('i'); + const iconEl = $(this).find('i'); iconSelect.init(iconEl, function (el) { - var newIconClass = el.attr('value'); - var index = iconEl.parents('[data-index]').attr('data-index'); + const newIconClass = el.attr('value'); + const index = iconEl.parents('[data-index]').attr('data-index'); $('#active-navigation [data-index="' + index + '"] i').attr('class', 'fa fa-fw ' + newIconClass); iconEl.siblings('[name="iconClass"]').val(newIconClass); iconEl.siblings('.change-icon-link').toggleClass('hidden', !!newIconClass); @@ -47,11 +47,11 @@ define('admin/settings/navigation', [ }; function onSelect() { - var clickedIndex = $(this).attr('data-index'); + const clickedIndex = $(this).attr('data-index'); $('#active-navigation li').removeClass('active'); $(this).addClass('active'); - var detailsForm = $('#enabled').children('[data-index="' + clickedIndex + '"]'); + const detailsForm = $('#enabled').children('[data-index="' + clickedIndex + '"]'); $('#enabled li').addClass('hidden'); if (detailsForm.length) { @@ -61,9 +61,9 @@ define('admin/settings/navigation', [ } function drop(ev, ui) { - var id = ui.helper.attr('data-id'); - var el = $('#active-navigation [data-id="' + id + '"]'); - var data = id === 'custom' ? { iconClass: 'fa-navicon', groups: available[0].groups } : available[id]; + const id = ui.helper.attr('data-id'); + const el = $('#active-navigation [data-id="' + id + '"]'); + const data = id === 'custom' ? { iconClass: 'fa-navicon', groups: available[0].groups } : available[id]; data.enabled = false; data.index = (parseInt($('#enabled').children().last().attr('data-index'), 10) || 0) + 1; @@ -87,18 +87,18 @@ define('admin/settings/navigation', [ } function save() { - var nav = []; + const nav = []; - var indices = []; + const indices = []; $('#active-navigation li').each(function () { indices.push($(this).attr('data-index')); }); indices.forEach(function (index) { - var el = $('#enabled').children('[data-index="' + index + '"]'); - var form = el.find('form').serializeArray(); - var data = {}; - var properties = {}; + const el = $('#enabled').children('[data-index="' + index + '"]'); + const form = el.find('form').serializeArray(); + const data = {}; + const properties = {}; form.forEach(function (input) { if (input.name.slice(0, 9) === 'property:' && input.value === 'on') { @@ -117,7 +117,7 @@ define('admin/settings/navigation', [ data.properties = {}; - for (var prop in properties) { + for (const prop in properties) { if (properties.hasOwnProperty(prop)) { data.properties[prop] = properties[prop]; } @@ -136,15 +136,15 @@ define('admin/settings/navigation', [ } function remove() { - var index = $(this).parents('[data-index]').attr('data-index'); + const index = $(this).parents('[data-index]').attr('data-index'); $('#active-navigation [data-index="' + index + '"]').remove(); $('#enabled [data-index="' + index + '"]').remove(); return false; } function toggle() { - var btn = $(this); - var disabled = btn.hasClass('btn-success'); + const btn = $(this); + const disabled = btn.hasClass('btn-success'); translator.translate(disabled ? '[[admin/settings/navigation:btn.disable]]' : '[[admin/settings/navigation:btn.enable]]', function (html) { btn.toggleClass('btn-warning').toggleClass('btn-success').html(html); btn.parents('li').find('[name="enabled"]').val(disabled ? 'on' : ''); diff --git a/public/src/admin/settings/notifications.js b/public/src/admin/settings/notifications.js index e58dc4c628..9235478482 100644 --- a/public/src/admin/settings/notifications.js +++ b/public/src/admin/settings/notifications.js @@ -3,10 +3,10 @@ define('admin/settings/notifications', [ 'autocomplete', ], function (autocomplete) { - var Notifications = {}; + const Notifications = {}; Notifications.init = function () { - var searchInput = $('[data-field="welcomeUid"]'); + const searchInput = $('[data-field="welcomeUid"]'); autocomplete.user(searchInput, function (event, selected) { setTimeout(function () { searchInput.val(selected.item.user.uid); diff --git a/public/src/admin/settings/social.js b/public/src/admin/settings/social.js index 294357eb84..32ff8d7840 100644 --- a/public/src/admin/settings/social.js +++ b/public/src/admin/settings/social.js @@ -2,11 +2,11 @@ define('admin/settings/social', [], function () { - var social = {}; + const social = {}; social.init = function () { $('#save').on('click', function () { - var networks = []; + const networks = []; $('#postSharingNetworks input[type="checkbox"]').each(function () { if ($(this).prop('checked')) { networks.push($(this).attr('id')); diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 26576dabbd..d42a0b89d1 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -4,16 +4,16 @@ ajaxify = window.ajaxify || {}; (function () { - var apiXHR = null; - var ajaxifyTimer; + let apiXHR = null; + let ajaxifyTimer; - var retry = true; - var previousBodyClass = ''; + let retry = true; + let previousBodyClass = ''; ajaxify.count = 0; ajaxify.currentPage = null; - var hooks; + let hooks; require(['hooks'], function (_hooks) { hooks = _hooks; }); @@ -89,7 +89,7 @@ ajaxify = window.ajaxify || {}; // this function is called just once from footer on page load ajaxify.coldLoad = function () { - var url = ajaxify.start(window.location.pathname.slice(1) + window.location.search + window.location.hash); + const url = ajaxify.start(window.location.pathname.slice(1) + window.location.search + window.location.hash); ajaxify.updateHistory(url, true); ajaxify.end(url, ajaxify.data.template.name); hooks.fire('action:ajaxify.coldLoad'); @@ -101,8 +101,8 @@ ajaxify = window.ajaxify || {}; ajaxify.handleRedirects = function (url) { url = ajaxify.removeRelativePath(url.replace(/^\/|\/$/g, '')).toLowerCase(); - var isClientToAdmin = url.startsWith('admin') && window.location.pathname.indexOf(config.relative_path + '/admin') !== 0; - var isAdminToClient = !url.startsWith('admin') && window.location.pathname.indexOf(config.relative_path + '/admin') === 0; + const isClientToAdmin = url.startsWith('admin') && window.location.pathname.indexOf(config.relative_path + '/admin') !== 0; + const isAdminToClient = !url.startsWith('admin') && window.location.pathname.indexOf(config.relative_path + '/admin') === 0; if (isClientToAdmin || isAdminToClient) { window.open(config.relative_path + '/' + url, '_top'); @@ -114,7 +114,7 @@ ajaxify = window.ajaxify || {}; ajaxify.start = function (url) { url = ajaxify.removeRelativePath(url.replace(/^\/|\/$/g, '')); - var payload = { + const payload = { url: url, }; @@ -135,11 +135,11 @@ ajaxify = window.ajaxify || {}; }; function onAjaxError(err, url, callback, quiet) { - var data = err.data; - var textStatus = err.textStatus; + const data = err.data; + const textStatus = err.textStatus; if (data) { - var status = parseInt(data.status, 10); + let status = parseInt(data.status, 10); if (status === 403 || status === 404 || status === 500 || status === 502 || status === 503) { if (status === 502 && retry) { retry = false; @@ -214,7 +214,7 @@ ajaxify = window.ajaxify || {}; // Allow translation strings in title on ajaxify (#5927) title = translator.unescape(title); - var data = { title: title }; + const data = { title: title }; hooks.fire('action:ajaxify.updateTitle', data); translator.translate(data.title, function (translated) { window.document.title = $('
    ').html(translated).text(); @@ -223,16 +223,16 @@ ajaxify = window.ajaxify || {}; } function updateTags() { - var metaWhitelist = ['title', 'description', /og:.+/, /article:.+/].map(function (val) { + const metaWhitelist = ['title', 'description', /og:.+/, /article:.+/, 'robots'].map(function (val) { return new RegExp(val); }); - var linkWhitelist = ['canonical', 'alternate', 'up']; + const linkWhitelist = ['canonical', 'alternate', 'up']; // Delete the old meta tags Array.prototype.slice .call(document.querySelectorAll('head meta')) .filter(function (el) { - var name = el.getAttribute('property') || el.getAttribute('name'); + const name = el.getAttribute('property') || el.getAttribute('name'); return metaWhitelist.some(function (exp) { return !!exp.test(name); }); @@ -244,7 +244,7 @@ ajaxify = window.ajaxify || {}; // Add new meta tags ajaxify.data._header.tags.meta .filter(function (tagObj) { - var name = tagObj.name || tagObj.property; + const name = tagObj.name || tagObj.property; return metaWhitelist.some(function (exp) { return !!exp.test(name); }); @@ -252,7 +252,7 @@ ajaxify = window.ajaxify || {}; if (tagObj.content) { tagObj.content = await translator.translate(tagObj.content); } - var metaEl = document.createElement('meta'); + const metaEl = document.createElement('meta'); Object.keys(tagObj).forEach(function (prop) { metaEl.setAttribute(prop, tagObj[prop]); }); @@ -264,7 +264,7 @@ ajaxify = window.ajaxify || {}; Array.prototype.slice .call(document.querySelectorAll('head link')) .filter(function (el) { - var name = el.getAttribute('rel'); + const name = el.getAttribute('rel'); return linkWhitelist.some(function (item) { return item === name; }); @@ -281,7 +281,7 @@ ajaxify = window.ajaxify || {}; }); }) .forEach(function (tagObj) { - var linkEl = document.createElement('link'); + const linkEl = document.createElement('link'); Object.keys(tagObj).forEach(function (prop) { linkEl.setAttribute(prop, tagObj[prop]); }); @@ -305,7 +305,7 @@ ajaxify = window.ajaxify || {}; }; ajaxify.parseData = function () { - var dataEl = $('#ajaxify-data'); + const dataEl = $('#ajaxify-data'); if (dataEl.length) { ajaxify.data = JSON.parse(dataEl.text()); dataEl.remove(); @@ -324,7 +324,7 @@ ajaxify = window.ajaxify || {}; }; ajaxify.loadScript = function (tpl_url, callback) { - var location = !app.inAdmin ? 'forum/' : ''; + let location = !app.inAdmin ? 'forum/' : ''; if (tpl_url.startsWith('admin')) { location = ''; @@ -338,7 +338,7 @@ ajaxify = window.ajaxify || {}; hooks.fire('action:script.load', data); hooks.fire('filter:script.load', data).then((data) => { // Require and parse modules - var outstanding = data.scripts.length; + let outstanding = data.scripts.length; data.scripts.map(function (script) { if (typeof script === 'function') { @@ -440,7 +440,7 @@ ajaxify = window.ajaxify || {}; }()); $(document).ready(function () { - var hooks; + let hooks; require(['hooks'], function (_hooks) { hooks = _hooks; }); @@ -466,26 +466,26 @@ $(document).ready(function () { // eslint-disable-next-line no-script-url return href === undefined || href === '' || href === 'javascript:;'; } - var location = document.location || window.location; - var rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''); - var contentEl = document.getElementById('content'); + const location = document.location || window.location; + const rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''); + const contentEl = document.getElementById('content'); // Enhancing all anchors to ajaxify... $(document.body).on('click', 'a', function (e) { - var _self = this; + const _self = this; if (this.target !== '' || (this.protocol !== 'http:' && this.protocol !== 'https:')) { return; } - var $this = $(this); - var href = $this.attr('href'); - var internalLink = utils.isInternalURI(this, window.location, config.relative_path); + const $this = $(this); + const href = $this.attr('href'); + const internalLink = utils.isInternalURI(this, window.location, config.relative_path); const rootAndPath = new RegExp(`^${rootUrl}${config.relative_path}/?`); - var process = function () { + const process = function () { if (!e.ctrlKey && !e.shiftKey && !e.metaKey && e.which === 1) { if (internalLink) { - var pathname = this.href.replace(rootAndPath, ''); + const pathname = this.href.replace(rootAndPath, ''); // Special handling for urls with hashes if (window.location.pathname === this.pathname && this.hash.length) { @@ -495,13 +495,13 @@ $(document).ready(function () { } } else if (window.location.pathname !== config.relative_path + '/outgoing') { if (config.openOutgoingLinksInNewTab && $.contains(contentEl, this)) { - var externalTab = window.open(); + const externalTab = window.open(); externalTab.opener = null; externalTab.location = this.href; e.preventDefault(); } else if (config.useOutgoingLinksPage) { - var safeUrls = config.outgoingLinksWhitelist.trim().split(/[\s,]+/g).filter(Boolean); - var href = this.href; + const safeUrls = config.outgoingLinksWhitelist.trim().split(/[\s,]+/g).filter(Boolean); + const href = this.href; if (!safeUrls.length || !safeUrls.some(function (url) { return href.indexOf(url) !== -1; })) { ajaxify.go('outgoing?url=' + encodeURIComponent(href)); e.preventDefault(); @@ -545,11 +545,13 @@ $(document).ready(function () { return; } - bootbox.confirm('[[global:unsaved-changes]]', function (navigate) { - if (navigate) { - app.flags._unsaved = false; - process.call(_self); - } + require(['bootbox'], function (bootbox) { + bootbox.confirm('[[global:unsaved-changes]]', function (navigate) { + if (navigate) { + app.flags._unsaved = false; + process.call(_self); + } + }); }); return e.preventDefault(); } diff --git a/public/src/app.js b/public/src/app.js index a4c97f5f9a..63787b6fe3 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -10,15 +10,15 @@ app.flags = {}; app.cacheBuster = null; (function () { - var appLoaded = false; - var params = utils.params(); - var showWelcomeMessage = !!params.loggedin; - var registerMessage = params.register; - var isTouchDevice = utils.isTouchDevice(); + let appLoaded = false; + const params = utils.params(); + let showWelcomeMessage = !!params.loggedin; + let registerMessage = params.register; + const isTouchDevice = utils.isTouchDevice(); app.cacheBuster = config['cache-buster']; - var hooks; + let hooks; require(['hooks'], function (_hooks) { hooks = _hooks; }); @@ -46,10 +46,10 @@ app.cacheBuster = null; * e.g. New Topic/Reply, post tools */ if (document.body) { - var earlyQueue = []; // once we can ES6, use Set instead - var earlyClick = function (ev) { - var btnEl = ev.target.closest('button'); - var anchorEl = ev.target.closest('a'); + let earlyQueue = []; // once we can ES6, use Set instead + const earlyClick = function (ev) { + let btnEl = ev.target.closest('button'); + const anchorEl = ev.target.closest('a'); if (!btnEl && anchorEl && (anchorEl.getAttribute('data-ajaxify') === 'false' || anchorEl.href === '#')) { btnEl = anchorEl; } @@ -97,6 +97,7 @@ app.cacheBuster = null; }); createHeaderTooltips(); + app.showEmailConfirmWarning(); app.showCookieWarning(); registerServiceWorker(); @@ -217,13 +218,15 @@ app.cacheBuster = null; app.handleInvalidSession = function () { socket.disconnect(); app.logout(false); - bootbox.alert({ - title: '[[error:invalid-session]]', - message: '[[error:invalid-session-text]]', - closeButton: false, - callback: function () { - window.location.reload(); - }, + require(['bootbox'], function (bootbox) { + bootbox.alert({ + title: '[[error:invalid-session]]', + message: '[[error:invalid-session-text]]', + closeButton: false, + callback: function () { + window.location.reload(); + }, + }); }); }; @@ -233,20 +236,22 @@ app.cacheBuster = null; } socket.disconnect(); - bootbox.alert({ - title: '[[error:session-mismatch]]', - message: '[[error:session-mismatch-text]]', - closeButton: false, - callback: function () { - window.location.reload(); - }, + require(['bootbox'], function (bootbox) { + bootbox.alert({ + title: '[[error:session-mismatch]]', + message: '[[error:session-mismatch-text]]', + closeButton: false, + callback: function () { + window.location.reload(); + }, + }); }); }; app.enterRoom = function (room, callback) { callback = callback || function () { }; if (socket && app.user.uid && app.currentRoom !== room) { - var previousRoom = app.currentRoom; + const previousRoom = app.currentRoom; app.currentRoom = room; socket.emit('meta.rooms.enter', { enter: room, @@ -265,7 +270,7 @@ app.cacheBuster = null; if (!socket || config.maintenanceMode) { return; } - var previousRoom = app.currentRoom; + const previousRoom = app.currentRoom; app.currentRoom = ''; socket.emit('meta.rooms.leaveCurrent', function (err) { if (err) { @@ -325,7 +330,7 @@ app.cacheBuster = null; }; app.showMessages = function () { - var messages = { + const messages = { login: { format: 'alert', title: '[[global:welcome_back]] ' + app.user.username + '!', @@ -434,10 +439,12 @@ app.cacheBuster = null; if (!isDnD) { return createChat(); } - bootbox.confirm('[[modules:chat.confirm-chat-with-dnd-user]]', function (ok) { - if (ok) { - createChat(); - } + require(['bootbox'], function (bootbox) { + bootbox.confirm('[[modules:chat.confirm-chat-with-dnd-user]]', function (ok) { + if (ok) { + createChat(); + } + }); }); }); }; @@ -450,7 +457,7 @@ app.cacheBuster = null; }; function createHeaderTooltips() { - var env = utils.findBootstrapEnvironment(); + const env = utils.findBootstrapEnvironment(); if (env === 'xs' || env === 'sm' || isTouchDevice) { return; } @@ -482,17 +489,17 @@ app.cacheBuster = null; return; } /* eslint-disable-next-line */ - var searchOptions = Object.assign({ in: config.searchDefaultInQuick || 'titles' }, options.searchOptions); - var quickSearchResults = options.searchElements.resultEl; - var inputEl = options.searchElements.inputEl; - var oldValue = inputEl.val(); - var filterCategoryEl = quickSearchResults.find('.filter-category'); + const searchOptions = Object.assign({ in: config.searchDefaultInQuick || 'titles' }, options.searchOptions); + const quickSearchResults = options.searchElements.resultEl; + const inputEl = options.searchElements.inputEl; + let oldValue = inputEl.val(); + const filterCategoryEl = quickSearchResults.find('.filter-category'); function updateCategoryFilterName() { if (ajaxify.data.template.category) { require(['translator'], function (translator) { translator.translate('[[search:search-in-category, ' + ajaxify.data.name + ']]', function (translated) { - var name = $('
    ').html(translated).text(); + const name = $('
    ').html(translated).text(); filterCategoryEl.find('.name').text(name); }); }); @@ -524,8 +531,9 @@ app.cacheBuster = null; return quickSearchResults.addClass('hidden').find('.quick-search-results-container').html(''); } data.posts.forEach(function (p) { - var text = $('
    ' + p.content + '
    ').text(); - var start = Math.max(0, text.toLowerCase().indexOf(inputEl.val().toLowerCase()) - 40); + const text = $('
    ' + p.content + '
    ').text(); + const query = inputEl.val().toLowerCase().replace(/^in:topic-\d+/, ''); + const start = Math.max(0, text.toLowerCase().indexOf(query) - 40); p.snippet = utils.escapeHTML((start > 0 ? '...' : '') + text.slice(start, start + 80) + (text.length - start > 80 ? '...' : '')); @@ -537,7 +545,7 @@ app.cacheBuster = null; quickSearchResults.toggleClass('hidden', !html.length || !inputEl.is(':focus')) .find('.quick-search-results-container') .html(html.length ? html : ''); - var highlightEls = quickSearchResults.find( + const highlightEls = quickSearchResults.find( '.quick-search-results .quick-search-title, .quick-search-results .snippet' ); search.highlightMatches(options.searchOptions.term, highlightEls); @@ -569,9 +577,9 @@ app.cacheBuster = null; return quickSearchResults.addClass('hidden'); } doSearch(); - }, 250)); + }, 500)); - var mousedownOnResults = false; + let mousedownOnResults = false; quickSearchResults.on('mousedown', function () { $(window).one('mouseup', function () { quickSearchResults.addClass('hidden'); @@ -584,13 +592,28 @@ app.cacheBuster = null; } }); + let ajaxified = false; + hooks.on('action:ajaxify.end', function () { + if (!ajaxify.isCold()) { + ajaxified = true; + } + }); inputEl.on('focus', function () { mousedownOnResults = false; - oldValue = inputEl.val(); - if (inputEl.val() && quickSearchResults.find('#quick-search-results').children().length) { + const query = inputEl.val(); + oldValue = query; + if (query && quickSearchResults.find('#quick-search-results').children().length) { updateCategoryFilterName(); - doSearch(); - inputEl[0].setSelectionRange(0, inputEl.val().length); + if (ajaxified) { + doSearch(); + ajaxified = false; + } else { + quickSearchResults.removeClass('hidden'); + } + inputEl[0].setSelectionRange( + query.startsWith('in:topic') ? query.indexOf(' ') + 1 : 0, + query.length + ); } }); @@ -601,10 +624,10 @@ app.cacheBuster = null; app.handleSearch = function (searchOptions) { searchOptions = searchOptions || { in: config.searchDefaultInQuick || 'titles' }; - var searchButton = $('#search-button'); - var searchFields = $('#search-fields'); - var searchInput = $('#search-fields input'); - var quickSearchContainer = $('#quick-search-container'); + const searchButton = $('#search-button'); + const searchFields = $('#search-fields'); + const searchInput = $('#search-fields input'); + const quickSearchContainer = $('#quick-search-container'); $('#search-form .advanced-search-link').off('mousedown').on('mousedown', function () { ajaxify.go('/search'); @@ -616,7 +639,7 @@ app.cacheBuster = null; searchInput.off('blur').on('blur', dismissSearch); searchInput.off('focus'); - var searchElements = { + const searchElements = { inputEl: searchInput, resultEl: quickSearchContainer, }; @@ -651,9 +674,9 @@ app.cacheBuster = null; }); $('#search-form').off('submit').on('submit', function () { - var input = $(this).find('input'); + const input = $(this).find('input'); require(['search'], function (search) { - var data = search.getSearchPreferences(); + const data = search.getSearchPreferences(); data.term = input.val(); hooks.fire('action:search.submit', { searchOptions: data, @@ -675,7 +698,7 @@ app.cacheBuster = null; function handleStatusChange() { $('[component="header/usercontrol"] [data-status]').off('click').on('click', function (e) { - var status = $(this).attr('data-status'); + const status = $(this).attr('data-status'); socket.emit('user.setStatus', status, function (err) { if (err) { return app.alertError(err.message); @@ -732,27 +755,10 @@ app.cacheBuster = null; app.showEmailConfirmWarning = async (err) => { const storage = await app.require('storage'); - let showModal = false; - switch (ajaxify.data.template.name) { - case 'recent': { - showModal = !ajaxify.data.canPost; - break; - } - - case 'category': { - showModal = !ajaxify.data.privileges['topics:create']; - break; - } - - case 'topic': { - showModal = !ajaxify.data.privileges['topics:reply']; - } - } - - if (!showModal || !app.user.uid || parseInt(storage.getItem('email-confirm-dismiss'), 10) === 1) { + if (!config.emailPrompt || !app.user.uid || parseInt(storage.getItem('email-confirm-dismiss'), 10) === 1) { return; } - var msg = { + const msg = { alert_id: 'email_confirm', type: 'warning', timeout: 0, @@ -831,8 +837,8 @@ app.cacheBuster = null; $(document.body).append(html); $(document.body).addClass('cookie-consent-open'); - var warningEl = $('.cookie-consent'); - var dismissEl = warningEl.find('button'); + const warningEl = $('.cookie-consent'); + const dismissEl = warningEl.find('button'); dismissEl.on('click', function () { // Save consent cookie and remove warning element storage.setItem('cookieconsent', '1'); diff --git a/public/src/client/account/best.js b/public/src/client/account/best.js index ebd61760bc..b8327a3e39 100644 --- a/public/src/client/account/best.js +++ b/public/src/client/account/best.js @@ -2,7 +2,7 @@ define('forum/account/best', ['forum/account/header', 'forum/account/posts'], function (header, posts) { - var Best = {}; + const Best = {}; Best.init = function () { header.init(); diff --git a/public/src/client/account/blocks.js b/public/src/client/account/blocks.js index 0469cf957d..98bd96a8ff 100644 --- a/public/src/client/account/blocks.js +++ b/public/src/client/account/blocks.js @@ -5,13 +5,13 @@ define('forum/account/blocks', [ 'api', 'hooks', ], function (header, api, hooks) { - var Blocks = {}; + const Blocks = {}; Blocks.init = function () { header.init(); $('#user-search').on('keyup', function () { - var username = this.value; + const username = this.value; api.get('/api/users', { query: username, @@ -36,7 +36,7 @@ define('forum/account/blocks', [ }); $('.block-edit').on('click', '[data-action="toggle"]', function () { - var uid = parseInt(this.getAttribute('data-uid'), 10); + const uid = parseInt(this.getAttribute('data-uid'), 10); socket.emit('user.toggleBlock', { blockeeUid: uid, blockerUid: ajaxify.data.uid, diff --git a/public/src/client/account/bookmarks.js b/public/src/client/account/bookmarks.js index 56f9983e9f..4959a24d73 100644 --- a/public/src/client/account/bookmarks.js +++ b/public/src/client/account/bookmarks.js @@ -2,7 +2,7 @@ define('forum/account/bookmarks', ['forum/account/header', 'forum/account/posts'], function (header, posts) { - var Bookmarks = {}; + const Bookmarks = {}; Bookmarks.init = function () { header.init(); diff --git a/public/src/client/account/categories.js b/public/src/client/account/categories.js index 1522af929a..49a52b68cd 100644 --- a/public/src/client/account/categories.js +++ b/public/src/client/account/categories.js @@ -2,7 +2,7 @@ define('forum/account/categories', ['forum/account/header'], function (header) { - var Categories = {}; + const Categories = {}; Categories.init = function () { header.init(); @@ -12,8 +12,8 @@ define('forum/account/categories', ['forum/account/header'], function (header) { }); $('[component="category/watch/all"]').find('[component="category/watching"], [component="category/ignoring"], [component="category/notwatching"]').on('click', function () { - var cids = []; - var state = $(this).attr('data-state'); + const cids = []; + const state = $(this).attr('data-state'); $('[data-parent-cid="0"]').each(function (index, el) { cids.push($(el).attr('data-cid')); }); @@ -28,10 +28,10 @@ define('forum/account/categories', ['forum/account/header'], function (header) { }; function handleIgnoreWatch(cid) { - var category = $('[data-cid="' + cid + '"]'); + const category = $('[data-cid="' + cid + '"]'); category.find('[component="category/watching"], [component="category/ignoring"], [component="category/notwatching"]').on('click', function () { - var $this = $(this); - var state = $this.attr('data-state'); + const $this = $(this); + const state = $this.attr('data-state'); socket.emit('categories.setWatchState', { cid: cid, state: state, uid: ajaxify.data.uid }, function (err, modified_cids) { if (err) { @@ -46,7 +46,7 @@ define('forum/account/categories', ['forum/account/header'], function (header) { function updateDropdowns(modified_cids, state) { modified_cids.forEach(function (cid) { - var category = $('[data-cid="' + cid + '"]'); + const category = $('[data-cid="' + cid + '"]'); category.find('[component="category/watching/menu"]').toggleClass('hidden', state !== 'watching'); category.find('[component="category/watching/check"]').toggleClass('fa-check', state === 'watching'); diff --git a/public/src/client/account/consent.js b/public/src/client/account/consent.js index f53bc365b0..01e97bb4cf 100644 --- a/public/src/client/account/consent.js +++ b/public/src/client/account/consent.js @@ -2,7 +2,7 @@ define('forum/account/consent', ['forum/account/header'], function (header) { - var Consent = {}; + const Consent = {}; Consent.init = function () { header.init(); diff --git a/public/src/client/account/downvoted.js b/public/src/client/account/downvoted.js index 86252758d8..4ebf742237 100644 --- a/public/src/client/account/downvoted.js +++ b/public/src/client/account/downvoted.js @@ -2,7 +2,7 @@ define('forum/account/downvoted', ['forum/account/header', 'forum/account/posts'], function (header, posts) { - var Downvoted = {}; + const Downvoted = {}; Downvoted.init = function () { header.init(); diff --git a/public/src/client/account/edit.js b/public/src/client/account/edit.js index 5ccccd0730..6a001084fc 100644 --- a/public/src/client/account/edit.js +++ b/public/src/client/account/edit.js @@ -6,8 +6,9 @@ define('forum/account/edit', [ 'translator', 'api', 'hooks', -], function (header, picture, translator, api, hooks) { - var AccountEdit = {}; + 'bootbox', +], function (header, picture, translator, api, hooks, bootbox) { + const AccountEdit = {}; AccountEdit.init = function () { header.init(); @@ -63,12 +64,12 @@ define('forum/account/edit', [ function handleAccountDelete() { $('#deleteAccountBtn').on('click', function () { translator.translate('[[user:delete_account_confirm]]', function (translated) { - var modal = bootbox.confirm(translated + '

    ', function (confirm) { + const modal = bootbox.confirm(translated + '

    ', function (confirm) { if (!confirm) { return; } - var confirmBtn = modal.find('.btn-primary'); + const confirmBtn = modal.find('.btn-primary'); confirmBtn.html(''); confirmBtn.prop('disabled', true); @@ -104,7 +105,7 @@ define('forum/account/edit', [ function handleEmailConfirm() { $('#confirm-email').on('click', function () { - var btn = $(this).attr('disabled', true); + const btn = $(this).attr('disabled', true); socket.emit('user.emailConfirm', {}, function (err) { btn.removeAttr('disabled'); if (err) { @@ -120,7 +121,7 @@ define('forum/account/edit', [ } function updateSignature() { - var el = $('#signature'); + const el = $('#signature'); $('#signatureCharCountLeft').html(getCharsLeft(el, ajaxify.data.maximumSignatureLength)); el.on('keyup change', function () { @@ -129,7 +130,7 @@ define('forum/account/edit', [ } function updateAboutMe() { - var el = $('#aboutme'); + const el = $('#aboutme'); $('#aboutMeCharCountLeft').html(getCharsLeft(el, ajaxify.data.maximumAboutMeLength)); el.on('keyup change', function () { @@ -139,11 +140,11 @@ define('forum/account/edit', [ function handleGroupSort() { function move(direction) { - var selected = $('#groupTitle').val(); + const selected = $('#groupTitle').val(); if (!ajaxify.data.allowMultipleBadges || (Array.isArray(selected) && selected.length > 1)) { return; } - var el = $('#groupTitle').find(':selected'); + const el = $('#groupTitle').find(':selected'); if (el.length && el.val()) { if (direction > 0) { el.insertAfter(el.next()); diff --git a/public/src/client/account/edit/email.js b/public/src/client/account/edit/email.js index 824b7aaf5e..96d40877ff 100644 --- a/public/src/client/account/edit/email.js +++ b/public/src/client/account/edit/email.js @@ -1,14 +1,14 @@ 'use strict'; define('forum/account/edit/email', ['forum/account/header', 'api'], function (header, api) { - var AccountEditEmail = {}; + const AccountEditEmail = {}; AccountEditEmail.init = function () { header.init(); $('#submitBtn').on('click', function () { - var curPasswordEl = $('#inputCurrentPassword'); - var userData = { + const curPasswordEl = $('#inputCurrentPassword'); + const userData = { uid: $('#inputUID').val(), email: $('#inputNewEmail').val(), password: curPasswordEl.val(), @@ -23,7 +23,7 @@ define('forum/account/edit/email', ['forum/account/header', 'api'], function (he return app.alertError('[[user:email_same_as_password]]'); } - var btn = $(this); + const btn = $(this); btn.addClass('disabled').find('i').removeClass('hide'); api.put('/users/' + userData.uid, userData).then((res) => { diff --git a/public/src/client/account/edit/password.js b/public/src/client/account/edit/password.js index 99b8cdde71..1e9257790a 100644 --- a/public/src/client/account/edit/password.js +++ b/public/src/client/account/edit/password.js @@ -3,7 +3,7 @@ define('forum/account/edit/password', [ 'forum/account/header', 'translator', 'zxcvbn', 'api', ], function (header, translator, zxcvbn, api) { - var AccountEditPassword = {}; + const AccountEditPassword = {}; AccountEditPassword.init = function () { header.init(); @@ -12,16 +12,16 @@ define('forum/account/edit/password', [ }; function handlePasswordChange() { - var currentPassword = $('#inputCurrentPassword'); - var password_notify = $('#password-notify'); - var password_confirm_notify = $('#password-confirm-notify'); - var password = $('#inputNewPassword'); - var password_confirm = $('#inputNewPasswordAgain'); - var passwordvalid = false; - var passwordsmatch = false; + const currentPassword = $('#inputCurrentPassword'); + const password_notify = $('#password-notify'); + const password_confirm_notify = $('#password-confirm-notify'); + const password = $('#inputNewPassword'); + const password_confirm = $('#inputNewPasswordAgain'); + let passwordvalid = false; + let passwordsmatch = false; function onPasswordChanged() { - var passwordStrength = zxcvbn(password.val()); + const passwordStrength = zxcvbn(password.val()); passwordvalid = false; if (password.val().length < ajaxify.data.minimumPasswordLength) { showError(password_notify, '[[reset_password:password_too_short]]'); @@ -65,7 +65,7 @@ define('forum/account/edit/password', [ onPasswordChanged(); onPasswordConfirmChanged(); - var btn = $(this); + const btn = $(this); if (passwordvalid && passwordsmatch) { btn.addClass('disabled').find('i').removeClass('hide'); api.put('/users/' + ajaxify.data.theirid + '/password', { diff --git a/public/src/client/account/edit/username.js b/public/src/client/account/edit/username.js index 487b7872ee..a854a4b520 100644 --- a/public/src/client/account/edit/username.js +++ b/public/src/client/account/edit/username.js @@ -3,13 +3,13 @@ define('forum/account/edit/username', [ 'forum/account/header', 'api', 'slugify', ], function (header, api, slugify) { - var AccountEditUsername = {}; + const AccountEditUsername = {}; AccountEditUsername.init = function () { header.init(); $('#submitBtn').on('click', function updateUsername() { - var userData = { + const userData = { uid: $('#inputUID').val(), username: $('#inputNewUsername').val(), password: $('#inputCurrentPassword').val(), @@ -23,11 +23,11 @@ define('forum/account/edit/username', [ return app.alertError('[[user:username_same_as_password]]'); } - var btn = $(this); + const btn = $(this); btn.addClass('disabled').find('i').removeClass('hide'); api.put('/users/' + userData.uid, userData).then((response) => { - var userslug = slugify(userData.username); + const userslug = slugify(userData.username); if (userData.username && userslug && parseInt(userData.uid, 10) === parseInt(app.user.uid, 10)) { $('[component="header/profilelink"]').attr('href', config.relative_path + '/user/' + userslug); $('[component="header/profilelink/edit"]').attr('href', config.relative_path + '/user/' + userslug + '/edit'); diff --git a/public/src/client/account/followers.js b/public/src/client/account/followers.js index bae7343262..89b67561d8 100644 --- a/public/src/client/account/followers.js +++ b/public/src/client/account/followers.js @@ -2,7 +2,7 @@ define('forum/account/followers', ['forum/account/header'], function (header) { - var Followers = {}; + const Followers = {}; Followers.init = function () { header.init(); diff --git a/public/src/client/account/following.js b/public/src/client/account/following.js index 5881ae1bec..8bc5c92614 100644 --- a/public/src/client/account/following.js +++ b/public/src/client/account/following.js @@ -2,7 +2,7 @@ define('forum/account/following', ['forum/account/header'], function (header) { - var Following = {}; + const Following = {}; Following.init = function () { header.init(); diff --git a/public/src/client/account/groups.js b/public/src/client/account/groups.js index ba3fb3ce7c..17c78b1aa4 100644 --- a/public/src/client/account/groups.js +++ b/public/src/client/account/groups.js @@ -2,15 +2,15 @@ define('forum/account/groups', ['forum/account/header'], function (header) { - var AccountTopics = {}; + const AccountTopics = {}; AccountTopics.init = function () { header.init(); - var groupsEl = $('#groups-list'); + const groupsEl = $('#groups-list'); groupsEl.on('click', '.list-cover', function () { - var groupSlug = $(this).parents('[data-slug]').attr('data-slug'); + const groupSlug = $(this).parents('[data-slug]').attr('data-slug'); ajaxify.go('groups/' + groupSlug); }); diff --git a/public/src/client/account/header.js b/public/src/client/account/header.js index d7d04ebdd5..e46bded766 100644 --- a/public/src/client/account/header.js +++ b/public/src/client/account/header.js @@ -9,9 +9,10 @@ define('forum/account/header', [ 'benchpress', 'accounts/delete', 'api', -], function (coverPhoto, pictureCropper, components, translator, Benchpress, AccountsDelete, api) { - var AccountHeader = {}; - var isAdminOrSelfOrGlobalMod; + 'bootbox', +], function (coverPhoto, pictureCropper, components, translator, Benchpress, AccountsDelete, api, bootbox) { + const AccountHeader = {}; + let isAdminOrSelfOrGlobalMod; AccountHeader.init = function () { isAdminOrSelfOrGlobalMod = ajaxify.data.isAdmin || ajaxify.data.isSelf || ajaxify.data.isGlobalModerator; @@ -77,7 +78,7 @@ define('forum/account/header', [ function selectActivePill() { $('.account-sub-links li').removeClass('active').each(function () { - var href = $(this).find('a').attr('href'); + const href = $(this).find('a').attr('href'); if (decodeURIComponent(href) === decodeURIComponent(window.location.pathname)) { $(this).addClass('active'); @@ -145,12 +146,12 @@ define('forum/account/header', [ submit: { label: '[[user:ban_account]]', callback: function () { - var formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) { + const formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) { data[cur.name] = cur.value; return data; }, {}); - var until = formData.length > 0 ? ( + const until = formData.length > 0 ? ( Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) ) : 0; @@ -187,7 +188,7 @@ define('forum/account/header', [ } function toggleBlockAccount() { - var targetEl = this; + const targetEl = this; socket.emit('user.toggleBlock', { blockeeUid: ajaxify.data.uid, blockerUid: app.user.uid, diff --git a/public/src/client/account/ignored.js b/public/src/client/account/ignored.js index 0664325d8e..802985e141 100644 --- a/public/src/client/account/ignored.js +++ b/public/src/client/account/ignored.js @@ -1,7 +1,7 @@ 'use strict'; define('forum/account/ignored', ['forum/account/header', 'forum/account/topics'], function (header, topics) { - var AccountIgnored = {}; + const AccountIgnored = {}; AccountIgnored.init = function () { header.init(); diff --git a/public/src/client/account/info.js b/public/src/client/account/info.js index 05631ffa4f..9a653fb582 100644 --- a/public/src/client/account/info.js +++ b/public/src/client/account/info.js @@ -2,7 +2,7 @@ define('forum/account/info', ['forum/account/header', 'components', 'forum/account/sessions'], function (header, components, sessions) { - var Info = {}; + const Info = {}; Info.init = function () { header.init(); @@ -12,15 +12,15 @@ define('forum/account/info', ['forum/account/header', 'components', 'forum/accou function handleModerationNote() { $('[component="account/save-moderation-note"]').on('click', function () { - var note = $('[component="account/moderation-note"]').val(); + const note = $('[component="account/moderation-note"]').val(); socket.emit('user.setModerationNote', { uid: ajaxify.data.uid, note: note }, function (err) { if (err) { return app.alertError(err.message); } $('[component="account/moderation-note"]').val(''); app.alertSuccess('[[user:info.moderation-note.success]]'); - var timestamp = Date.now(); - var data = [{ + const timestamp = Date.now(); + const data = [{ note: utils.escapeHTML(note), user: app.user, timestamp: timestamp, diff --git a/public/src/client/account/posts.js b/public/src/client/account/posts.js index dbf1a6f7d8..27442e21a5 100644 --- a/public/src/client/account/posts.js +++ b/public/src/client/account/posts.js @@ -2,10 +2,10 @@ define('forum/account/posts', ['forum/account/header', 'forum/infinitescroll', 'hooks'], function (header, infinitescroll, hooks) { - var AccountPosts = {}; + const AccountPosts = {}; - var template; - var page = 1; + let template; + let page = 1; AccountPosts.init = function () { header.init(); @@ -27,7 +27,7 @@ define('forum/account/posts', ['forum/account/header', 'forum/infinitescroll', ' if (direction < 0) { return; } - var params = utils.params(); + const params = utils.params(); page += 1; params.page = page; diff --git a/public/src/client/account/profile.js b/public/src/client/account/profile.js index 421c108113..63024e4d04 100644 --- a/public/src/client/account/profile.js +++ b/public/src/client/account/profile.js @@ -5,7 +5,7 @@ define('forum/account/profile', [ 'forum/account/header', 'bootbox', ], function (header, bootbox) { - var Account = {}; + const Account = {}; Account.init = function () { header.init(); diff --git a/public/src/client/account/sessions.js b/public/src/client/account/sessions.js index f9dab2419f..13414bda6a 100644 --- a/public/src/client/account/sessions.js +++ b/public/src/client/account/sessions.js @@ -2,7 +2,7 @@ define('forum/account/sessions', ['forum/account/header', 'components', 'api'], function (header, components, api) { - var Sessions = {}; + const Sessions = {}; Sessions.init = function () { header.init(); @@ -11,8 +11,8 @@ define('forum/account/sessions', ['forum/account/header', 'components', 'api'], Sessions.prepareSessionRevocation = function () { components.get('user/sessions').on('click', '[data-action]', function () { - var parentEl = $(this).parents('[data-uuid]'); - var uuid = parentEl.attr('data-uuid'); + const parentEl = $(this).parents('[data-uuid]'); + const uuid = parentEl.attr('data-uuid'); if (uuid) { // This is done via DELETE because a user shouldn't be able to @@ -21,7 +21,7 @@ define('forum/account/sessions', ['forum/account/header', 'components', 'api'], parentEl.remove(); }).catch((err) => { try { - var errorObj = JSON.parse(err.responseText); + const errorObj = JSON.parse(err.responseText); if (errorObj.loggedIn === false) { window.location.href = config.relative_path + '/login?error=' + errorObj.title; } diff --git a/public/src/client/account/settings.js b/public/src/client/account/settings.js index 7994e552de..995fbbd4b6 100644 --- a/public/src/client/account/settings.js +++ b/public/src/client/account/settings.js @@ -2,7 +2,7 @@ define('forum/account/settings', ['forum/account/header', 'components', 'translator', 'api'], function (header, components, translator, api) { - var AccountSettings = {}; + const AccountSettings = {}; // If page skin is changed but not saved, switch the skin back $(window).on('action:ajaxify.start', function () { @@ -15,7 +15,7 @@ define('forum/account/settings', ['forum/account/header', 'components', 'transla header.init(); $('#submitBtn').on('click', function () { - var settings = loadSettings(); + const settings = loadSettings(); if (settings.homePageRoute === 'custom' && settings.homePageCustom) { $.get(config.relative_path + '/' + settings.homePageCustom, function () { @@ -42,11 +42,11 @@ define('forum/account/settings', ['forum/account/header', 'components', 'transla }; function loadSettings() { - var settings = {}; + const settings = {}; $('.account').find('input, textarea, select').each(function (id, input) { input = $(input); - var setting = input.attr('data-property'); + const setting = input.attr('data-property'); if (input.is('select')) { settings[setting] = input.val(); return; @@ -68,8 +68,8 @@ define('forum/account/settings', ['forum/account/header', 'components', 'transla function saveSettings(settings) { api.put(`/users/${ajaxify.data.uid}/settings`, { settings }).then((newSettings) => { app.alertSuccess('[[success:settings-saved]]'); - var languageChanged = false; - for (var key in newSettings) { + let languageChanged = false; + for (const key in newSettings) { if (newSettings.hasOwnProperty(key)) { if (key === 'userLang' && config.userLang !== newSettings.userLang) { languageChanged = true; @@ -82,7 +82,7 @@ define('forum/account/settings', ['forum/account/header', 'components', 'transla if (languageChanged && parseInt(app.user.uid, 10) === parseInt(ajaxify.data.theirid, 10)) { translator.translate('[[language:dir]]', config.userLang, function (translated) { - var htmlEl = $('html'); + const htmlEl = $('html'); htmlEl.attr('data-dir', translated); htmlEl.css('direction', translated); }); @@ -105,20 +105,20 @@ define('forum/account/settings', ['forum/account/header', 'components', 'transla } function reskin(skinName) { - var clientEl = Array.prototype.filter.call(document.querySelectorAll('link[rel="stylesheet"]'), function (el) { + const clientEl = Array.prototype.filter.call(document.querySelectorAll('link[rel="stylesheet"]'), function (el) { return el.href.indexOf(config.relative_path + '/assets/client') !== -1; })[0] || null; if (!clientEl) { return; } - var currentSkinClassName = $('body').attr('class').split(/\s+/).filter(function (className) { + const currentSkinClassName = $('body').attr('class').split(/\s+/).filter(function (className) { return className.startsWith('skin-'); }); if (!currentSkinClassName[0]) { return; } - var currentSkin = currentSkinClassName[0].slice(5); + let currentSkin = currentSkinClassName[0].slice(5); currentSkin = currentSkin !== 'noskin' ? currentSkin : ''; // Stop execution if skin didn't change @@ -126,7 +126,7 @@ define('forum/account/settings', ['forum/account/header', 'components', 'transla return; } - var linkEl = document.createElement('link'); + const linkEl = document.createElement('link'); linkEl.rel = 'stylesheet'; linkEl.type = 'text/css'; linkEl.href = config.relative_path + '/assets/client' + (skinName ? '-' + skinName : '') + '.css'; diff --git a/public/src/client/account/topics.js b/public/src/client/account/topics.js index de005271d9..cba3358275 100644 --- a/public/src/client/account/topics.js +++ b/public/src/client/account/topics.js @@ -6,10 +6,10 @@ define('forum/account/topics', [ 'forum/infinitescroll', 'hooks', ], function (header, infinitescroll, hooks) { - var AccountTopics = {}; + const AccountTopics = {}; - var template; - var page = 1; + let template; + let page = 1; AccountTopics.init = function () { header.init(); @@ -29,7 +29,7 @@ define('forum/account/topics', [ if (direction < 0) { return; } - var params = utils.params(); + const params = utils.params(); page += 1; params.page = page; diff --git a/public/src/client/account/uploads.js b/public/src/client/account/uploads.js index 222e30e9a0..51fdb8a614 100644 --- a/public/src/client/account/uploads.js +++ b/public/src/client/account/uploads.js @@ -1,14 +1,14 @@ 'use strict'; define('forum/account/uploads', ['forum/account/header'], function (header) { - var AccountUploads = {}; + const AccountUploads = {}; AccountUploads.init = function () { header.init(); $('[data-action="delete"]').on('click', function () { - var el = $(this).parents('[data-name]'); - var name = el.attr('data-name'); + const el = $(this).parents('[data-name]'); + const name = el.attr('data-name'); socket.emit('user.deleteUpload', { name: name, uid: ajaxify.data.uid }, function (err) { if (err) { diff --git a/public/src/client/account/upvoted.js b/public/src/client/account/upvoted.js index fb14f58111..274cdfb025 100644 --- a/public/src/client/account/upvoted.js +++ b/public/src/client/account/upvoted.js @@ -2,7 +2,7 @@ define('forum/account/upvoted', ['forum/account/header', 'forum/account/posts'], function (header, posts) { - var Upvoted = {}; + const Upvoted = {}; Upvoted.init = function () { header.init(); diff --git a/public/src/client/account/watched.js b/public/src/client/account/watched.js index a2c22f90f7..15861122c0 100644 --- a/public/src/client/account/watched.js +++ b/public/src/client/account/watched.js @@ -2,7 +2,7 @@ define('forum/account/watched', ['forum/account/header', 'forum/account/topics'], function (header, topics) { - var AccountWatched = {}; + const AccountWatched = {}; AccountWatched.init = function () { header.init(); diff --git a/public/src/client/categories.js b/public/src/client/categories.js index c7a05e7af5..44025e8b8c 100644 --- a/public/src/client/categories.js +++ b/public/src/client/categories.js @@ -2,7 +2,7 @@ define('forum/categories', ['components', 'categorySelector', 'hooks'], function (components, categorySelector, hooks) { - var categories = {}; + const categories = {}; $(window).on('action:ajaxify.start', function (ev, data) { if (ajaxify.currentPage !== data.url) { @@ -34,8 +34,8 @@ define('forum/categories', ['components', 'categorySelector', 'hooks'], function }; function renderNewPost(cid, post) { - var category = components.get('categories/category', 'cid', cid); - var numRecentReplies = category.attr('data-numRecentReplies'); + const category = components.get('categories/category', 'cid', cid); + const numRecentReplies = category.attr('data-numRecentReplies'); if (!numRecentReplies || !parseInt(numRecentReplies, 10)) { return; } @@ -43,7 +43,7 @@ define('forum/categories', ['components', 'categorySelector', 'hooks'], function return; } - var recentPosts = category.find('[component="category/posts"]'); + const recentPosts = category.find('[component="category/posts"]'); app.parseAndTranslate('partials/categories/lastpost', 'posts', { posts: [post] }, function (html) { html.find('.post-content img:not(.not-responsive)').addClass('img-responsive'); diff --git a/public/src/client/category.js b/public/src/client/category.js index 43c828a4af..03d63bae86 100644 --- a/public/src/client/category.js +++ b/public/src/client/category.js @@ -9,7 +9,7 @@ define('forum/category', [ 'categorySelector', 'hooks', ], function (infinitescroll, share, navigator, topicList, sort, categorySelector, hooks) { - var Category = {}; + const Category = {}; $(window).on('action:ajaxify.start', function (ev, data) { if (!String(data.url).startsWith('category/')) { @@ -18,7 +18,7 @@ define('forum/category', [ }); Category.init = function () { - var cid = ajaxify.data.cid; + const cid = ajaxify.data.cid; app.enterRoom('category_' + cid); @@ -48,14 +48,12 @@ define('forum/category', [ }, }); - app.showEmailConfirmWarning(); - hooks.fire('action:topics.loaded', { topics: ajaxify.data.topics }); hooks.fire('action:category.loaded', { cid: ajaxify.data.cid }); }; function handleScrollToTopicIndex() { - var topicIndex = ajaxify.data.topicIndex; + let topicIndex = ajaxify.data.topicIndex; if (topicIndex && utils.isNumber(topicIndex)) { topicIndex = Math.max(0, parseInt(topicIndex, 10)); if (topicIndex && window.location.search.indexOf('page=') === -1) { @@ -66,8 +64,8 @@ define('forum/category', [ function handleIgnoreWatch(cid) { $('[component="category/watching"], [component="category/ignoring"], [component="category/notwatching"]').on('click', function () { - var $this = $(this); - var state = $this.attr('data-state'); + const $this = $(this); + const state = $this.attr('data-state'); socket.emit('categories.setWatchState', { cid: cid, state: state }, function (err) { if (err) { @@ -90,7 +88,7 @@ define('forum/category', [ function handleLoadMoreSubcategories() { $('[component="category/load-more-subcategories"]').on('click', function () { - var btn = $(this); + const btn = $(this); socket.emit('categories.loadMoreSubCategories', { cid: ajaxify.data.cid, start: ajaxify.data.nextSubCategoryStart, @@ -138,7 +136,7 @@ define('forum/category', [ callback = callback || function () {}; hooks.fire('action:category.loading'); - var params = utils.params(); + const params = utils.params(); infinitescroll.loadMore('categories.loadMore', { cid: ajaxify.data.cid, after: after, diff --git a/public/src/client/category/tools.js b/public/src/client/category/tools.js index a46624536c..84e2829d0c 100644 --- a/public/src/client/category/tools.js +++ b/public/src/client/category/tools.js @@ -10,7 +10,7 @@ define('forum/category/tools', [ 'api', 'bootbox', ], function (topicSelect, threadTools, components, translator, api, bootbox) { - var CategoryTools = {}; + const CategoryTools = {}; CategoryTools.init = function () { topicSelect.init(updateDropdownOptions); @@ -54,7 +54,7 @@ define('forum/category/tools', [ // todo: should also use categoryCommand, but no write api call exists for this yet components.get('topic/mark-unread-for-all').on('click', function () { - var tids = topicSelect.getSelectedTids(); + const tids = topicSelect.getSelectedTids(); if (!tids.length) { return app.alertError('[[error:no-topics-selected]]'); } @@ -73,7 +73,7 @@ define('forum/category/tools', [ components.get('topic/move').on('click', function () { require(['forum/topic/move'], function (move) { - var tids = topicSelect.getSelectedTids(); + const tids = topicSelect.getSelectedTids(); if (!tids.length) { return app.alertError('[[error:no-topics-selected]]'); @@ -85,7 +85,7 @@ define('forum/category/tools', [ }); components.get('topic/move-all').on('click', function () { - var cid = ajaxify.data.cid; + const cid = ajaxify.data.cid; if (!ajaxify.data.template.category) { return app.alertError('[[error:invalid-data]]'); } @@ -101,7 +101,7 @@ define('forum/category/tools', [ }); components.get('topic/merge').on('click', function () { - var tids = topicSelect.getSelectedTids(); + const tids = topicSelect.getSelectedTids(); require(['forum/topic/merge'], function (merge) { merge.init(function () { if (tids.length) { @@ -185,11 +185,11 @@ define('forum/category/tools', [ } function updateDropdownOptions() { - var tids = topicSelect.getSelectedTids(); - var isAnyDeleted = isAny(isTopicDeleted, tids); - var areAllDeleted = areAll(isTopicDeleted, tids); - var isAnyPinned = isAny(isTopicPinned, tids); - var isAnyLocked = isAny(isTopicLocked, tids); + const tids = topicSelect.getSelectedTids(); + const isAnyDeleted = isAny(isTopicDeleted, tids); + const areAllDeleted = areAll(isTopicDeleted, tids); + const isAnyPinned = isAny(isTopicPinned, tids); + const isAnyLocked = isAny(isTopicLocked, tids); const isAnyScheduled = isAny(isTopicScheduled, tids); const areAllScheduled = areAll(isTopicScheduled, tids); @@ -207,7 +207,7 @@ define('forum/category/tools', [ } function isAny(method, tids) { - for (var i = 0; i < tids.length; i += 1) { + for (let i = 0; i < tids.length; i += 1) { if (method(tids[i])) { return true; } @@ -216,7 +216,7 @@ define('forum/category/tools', [ } function areAll(method, tids) { - for (var i = 0; i < tids.length; i += 1) { + for (let i = 0; i < tids.length; i += 1) { if (!method(tids[i])) { return false; } @@ -245,20 +245,20 @@ define('forum/category/tools', [ } function setDeleteState(data) { - var topic = getTopicEl(data.tid); + const topic = getTopicEl(data.tid); topic.toggleClass('deleted', data.isDeleted); topic.find('[component="topic/locked"]').toggleClass('hide', !data.isDeleted); } function setPinnedState(data) { - var topic = getTopicEl(data.tid); + const topic = getTopicEl(data.tid); topic.toggleClass('pinned', data.isPinned); topic.find('[component="topic/pinned"]').toggleClass('hide', !data.isPinned); ajaxify.refresh(); } function setLockedState(data) { - var topic = getTopicEl(data.tid); + const topic = getTopicEl(data.tid); topic.toggleClass('locked', data.isLocked); topic.find('[component="topic/locked"]').toggleClass('hide', !data.isLocked); } @@ -275,20 +275,20 @@ define('forum/category/tools', [ if (!ajaxify.data.topics || !ajaxify.data.template.category) { return; } - var numPinned = ajaxify.data.topics.filter(topic => topic.pinned).length; + const numPinned = ajaxify.data.topics.filter(topic => topic.pinned).length; if ((!app.user.isAdmin && !app.user.isMod) || numPinned < 2) { return; } app.loadJQueryUI(function () { - var topicListEl = $('[component="category"]').filter(function (i, e) { + const topicListEl = $('[component="category"]').filter(function (i, e) { return !$(e).parents('[widget-area],[data-widget-area]').length; }); topicListEl.sortable({ handle: '[component="topic/pinned"]', items: '[component="category/topic"].pinned', update: function (ev, ui) { - var baseIndex = parseInt(topicListEl.find('[component="category/topic"].pinned').first().attr('data-index'), 10); + const baseIndex = parseInt(topicListEl.find('[component="category/topic"].pinned').first().attr('data-index'), 10); socket.emit('topics.orderPinnedTopics', { tid: ui.item.attr('data-tid'), order: baseIndex + ui.item.index() - 1, diff --git a/public/src/client/chats.js b/public/src/client/chats.js index de1f74763c..45b958e4f1 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -11,15 +11,20 @@ define('forum/chats', [ 'benchpress', 'composer/autocomplete', 'hooks', -], function (components, translator, mousetrap, recentChats, search, messages, Benchpress, autocomplete, hooks) { - var Chats = { + 'bootbox', +], function ( + components, translator, mousetrap, + recentChats, search, messages, Benchpress, + autocomplete, hooks, bootbox +) { + const Chats = { initialised: false, }; - var newMessage = false; + let newMessage = false; Chats.init = function () { - var env = utils.findBootstrapEnvironment(); + const env = utils.findBootstrapEnvironment(); if (!Chats.initialised) { Chats.addSocketListeners(); @@ -70,8 +75,8 @@ define('forum/chats', [ Chats.addIPHandler = function (container) { container.on('click', '.chat-ip-button', function () { - var ipEl = $(this).parent(); - var mid = ipEl.parents('[data-mid]').attr('data-mid'); + const ipEl = $(this).parent(); + const mid = ipEl.parents('[data-mid]').attr('data-mid'); socket.emit('modules.chats.getIP', mid, function (err, ip) { if (err) { return app.alertError(err); @@ -83,8 +88,8 @@ define('forum/chats', [ Chats.addPopoutHandler = function () { $('[data-action="pop-out"]').on('click', function () { - var text = components.get('chat/input').val(); - var roomId = ajaxify.data.roomId; + const text = components.get('chat/input').val(); + const roomId = ajaxify.data.roomId; if (app.previousUrl && app.previousUrl.match(/chats/)) { ajaxify.go('user/' + ajaxify.data.userslug + '/chats', function () { @@ -102,19 +107,19 @@ define('forum/chats', [ }; Chats.addScrollHandler = function (roomId, uid, el) { - var loading = false; + let loading = false; el.off('scroll').on('scroll', function () { messages.toggleScrollUpAlert(el); if (loading) { return; } - var top = (el[0].scrollHeight - el.height()) * 0.1; + const top = (el[0].scrollHeight - el.height()) * 0.1; if (el.scrollTop() >= top) { return; } loading = true; - var start = parseInt(el.children('[data-mid]').length, 10); + const start = parseInt(el.children('[data-mid]').length, 10); socket.emit('modules.chats.getMessages', { roomId: roomId, uid: uid, @@ -135,8 +140,8 @@ define('forum/chats', [ return; } messages.parseMessage(data, function (html) { - var currentScrollTop = el.scrollTop(); - var previousHeight = el[0].scrollHeight; + const currentScrollTop = el.scrollTop(); + const previousHeight = el[0].scrollHeight; html = $(html); el.prepend(html); html.find('.timeago').timeago(); @@ -157,7 +162,7 @@ define('forum/chats', [ }; Chats.addCharactersLeftHandler = function (parent) { - var element = parent.find('[component="chat/input"]'); + const element = parent.find('[component="chat/input"]'); element.on('change keyup paste', function () { messages.updateRemainingLength(parent); }); @@ -165,15 +170,15 @@ define('forum/chats', [ Chats.addActionHandlers = function (element, roomId) { element.on('click', '[data-action]', function () { - var messageId = $(this).parents('[data-mid]').attr('data-mid'); - var action = this.getAttribute('data-action'); + const messageId = $(this).parents('[data-mid]').attr('data-mid'); + const action = this.getAttribute('data-action'); switch (action) { - case 'edit': - var inputEl = $('[data-roomid="' + roomId + '"] [component="chat/input"]'); + case 'edit': { + const inputEl = $('[data-roomid="' + roomId + '"] [component="chat/input"]'); messages.prepEdit(inputEl, messageId, roomId); break; - + } case 'delete': messages.delete(messageId, roomId); break; @@ -187,16 +192,16 @@ define('forum/chats', [ Chats.addHotkeys = function () { mousetrap.bind('ctrl+up', function () { - var activeContact = $('.chats-list .bg-info'); - var prev = activeContact.prev(); + const activeContact = $('.chats-list .bg-info'); + const prev = activeContact.prev(); if (prev.length) { Chats.switchChat(prev.attr('data-roomid')); } }); mousetrap.bind('ctrl+down', function () { - var activeContact = $('.chats-list .bg-info'); - var next = activeContact.next(); + const activeContact = $('.chats-list .bg-info'); + const next = activeContact.next(); if (next.length) { Chats.switchChat(next.attr('data-roomid')); @@ -205,12 +210,12 @@ define('forum/chats', [ mousetrap.bind('up', function (e) { if (e.target === components.get('chat/input').get(0)) { // Retrieve message id from messages list - var message = components.get('chat/messages').find('.chat-message[data-self="1"]').last(); + const message = components.get('chat/messages').find('.chat-message[data-self="1"]').last(); if (!message.length) { return; } - var lastMid = message.attr('data-mid'); - var inputEl = components.get('chat/input'); + const lastMid = message.attr('data-mid'); + const inputEl = components.get('chat/input'); messages.prepEdit(inputEl, lastMid, ajaxify.data.roomId); } @@ -218,7 +223,7 @@ define('forum/chats', [ }; Chats.addMemberHandler = function (roomId, buttonEl) { - var modal; + let modal; buttonEl.on('click', function () { app.parseAndTranslate('partials/modals/manage_room', {}, function (html) { @@ -232,8 +237,8 @@ define('forum/chats', [ Chats.refreshParticipantsList(roomId, modal); Chats.addKickHandler(roomId, modal); - var searchInput = modal.find('input'); - var errorEl = modal.find('.text-danger'); + const searchInput = modal.find('input'); + const errorEl = modal.find('.text-danger'); require(['autocomplete', 'translator'], function (autocomplete, translator) { autocomplete.user(searchInput, function (event, selected) { errorEl.text(''); @@ -258,7 +263,7 @@ define('forum/chats', [ Chats.addKickHandler = function (roomId, modal) { modal.on('click', '[data-action="kick"]', function () { - var uid = parseInt(this.getAttribute('data-uid'), 10); + const uid = parseInt(this.getAttribute('data-uid'), 10); socket.emit('modules.chats.removeUserFromRoom', { roomId: roomId, @@ -287,7 +292,7 @@ define('forum/chats', [ } // Return user to chats page. If modal, close modal. - var modal = buttonEl.parents('.chat-modal'); + const modal = buttonEl.parents('.chat-modal'); if (modal.length) { require(['chat'], function (chatLib) { chatLib.close(modal); @@ -304,7 +309,7 @@ define('forum/chats', [ Chats.refreshParticipantsList = function (roomId, modal) { socket.emit('modules.chats.getUsersInRoom', { roomId: roomId }, function (err, users) { - var listEl = modal.find('.list-group'); + const listEl = modal.find('.list-group'); if (err) { return translator.translate('[[error:invalid-data]]', function (translated) { @@ -321,7 +326,7 @@ define('forum/chats', [ }; Chats.addRenameHandler = function (roomId, buttonEl, roomName) { - var modal; + let modal; buttonEl.on('click', function () { app.parseAndTranslate('partials/modals/rename_room', { @@ -373,7 +378,7 @@ define('forum/chats', [ return; } - var data = { + const data = { element: element, strategies: [], options: { @@ -393,7 +398,7 @@ define('forum/chats', [ }; Chats.leave = function (el) { - var roomId = el.attr('data-roomid'); + const roomId = el.attr('data-roomid'); socket.emit('modules.chats.leave', roomId, function (err) { if (err) { return app.alertError(err.message); @@ -404,7 +409,7 @@ define('forum/chats', [ el.remove(); } require(['chat'], function (chat) { - var modal = chat.getModal(roomId); + const modal = chat.getModal(roomId); if (modal.length) { chat.close(modal); } @@ -418,7 +423,7 @@ define('forum/chats', [ roomid = ''; } - var url = 'user/' + ajaxify.data.userslug + '/chats/' + roomid + window.location.search; + const url = 'user/' + ajaxify.data.userslug + '/chats/' + roomid + window.location.search; if (self.fetch) { fetch(config.relative_path + '/api/' + url, { credentials: 'include' }) .then(function (response) { @@ -470,12 +475,12 @@ define('forum/chats', [ messages.appendChatMessage($('.expanded-chat .chat-content'), data.message); } else if (ajaxify.data.template.chats) { - var roomEl = $('[data-roomid=' + data.roomId + ']'); + const roomEl = $('[data-roomid=' + data.roomId + ']'); if (roomEl.length > 0) { roomEl.addClass('unread'); } else { - var recentEl = components.get('chat/recent'); + const recentEl = components.get('chat/recent'); app.parseAndTranslate('partials/chats/recent_room', { rooms: { roomId: data.roomId, @@ -497,8 +502,8 @@ define('forum/chats', [ messages.addSocketListeners(); socket.on('event:chats.roomRename', function (data) { - var roomEl = components.get('chat/recent/room', data.roomId); - var titleEl = roomEl.find('[component="chat/title"]'); + const roomEl = components.get('chat/recent/room', data.roomId); + const titleEl = roomEl.find('[component="chat/title"]'); ajaxify.data.roomName = data.newName; titleEl.text(data.newName); @@ -506,10 +511,10 @@ define('forum/chats', [ }; Chats.resizeMainWindow = function () { - var viewportHeight = $(window).height(); - var mainWrapper = components.get('chat/main-wrapper'); - var navWrapper = components.get('chat/nav-wrapper'); - var fromTop = 0; + const viewportHeight = $(window).height(); + const mainWrapper = components.get('chat/main-wrapper'); + const navWrapper = components.get('chat/nav-wrapper'); + let fromTop = 0; if (mainWrapper.length && navWrapper.length) { fromTop = mainWrapper.offset().top || navWrapper.offset().top; } diff --git a/public/src/client/chats/messages.js b/public/src/client/chats/messages.js index 29ab113e9b..5d43497014 100644 --- a/public/src/client/chats/messages.js +++ b/public/src/client/chats/messages.js @@ -1,12 +1,12 @@ 'use strict'; -define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks'], function (components, translator, Benchpress, hooks) { - var messages = {}; +define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks', 'bootbox'], function (components, translator, Benchpress, hooks, bootbox) { + const messages = {}; messages.sendMessage = function (roomId, inputEl) { - var msg = inputEl.val(); - var mid = inputEl.attr('data-mid'); + const msg = inputEl.val(); + const mid = inputEl.attr('data-mid'); if (!msg.trim().length) { return; @@ -59,7 +59,7 @@ define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks }; messages.updateRemainingLength = function (parent) { - var element = parent.find('[component="chat/input"]'); + const element = parent.find('[component="chat/input"]'); parent.find('[component="chat/message/length"]').text(element.val().length); parent.find('[component="chat/message/remaining"]').text(config.maximumChatMessageLength - element.val().length); hooks.fire('action:chat.updateRemainingLength', { @@ -68,8 +68,8 @@ define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks }; messages.appendChatMessage = function (chatContentEl, data) { - var lastSpeaker = parseInt(chatContentEl.find('.chat-message').last().attr('data-uid'), 10); - var lasttimestamp = parseInt(chatContentEl.find('.chat-message').last().attr('data-timestamp'), 10); + const lastSpeaker = parseInt(chatContentEl.find('.chat-message').last().attr('data-uid'), 10); + const lasttimestamp = parseInt(chatContentEl.find('.chat-message').last().attr('data-timestamp'), 10); if (!Array.isArray(data)) { data.newSet = lastSpeaker !== parseInt(data.fromuid, 10) || parseInt(data.timestamp, 10) > parseInt(lasttimestamp, 10) + (1000 * 60 * 3); @@ -81,8 +81,8 @@ define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks }; function onMessagesParsed(chatContentEl, html) { - var newMessage = $(html); - var isAtBottom = messages.isAtBottom(chatContentEl); + const newMessage = $(html); + const isAtBottom = messages.isAtBottom(chatContentEl); newMessage.appendTo(chatContentEl); newMessage.find('.timeago').timeago(); newMessage.find('img:not(.not-responsive)').addClass('img-responsive'); @@ -114,7 +114,7 @@ define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks messages.isAtBottom = function (containerEl, threshold) { if (containerEl.length) { - var distanceToBottom = containerEl[0].scrollHeight - ( + const distanceToBottom = containerEl[0].scrollHeight - ( containerEl.outerHeight() + containerEl.scrollTop() ); return distanceToBottom < (threshold || 100); @@ -131,7 +131,7 @@ define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks }; messages.toggleScrollUpAlert = function (containerEl) { - var isAtBottom = messages.isAtBottom(containerEl, 300); + const isAtBottom = messages.isAtBottom(containerEl, 300); containerEl.parent() .find('[component="chat/messages/scroll-up-alert"]') .toggleClass('hidden', isAtBottom); @@ -171,10 +171,10 @@ define('forum/chats/messages', ['components', 'translator', 'benchpress', 'hooks function onChatMessageEdited(data) { data.messages.forEach(function (message) { - var self = parseInt(message.fromuid, 10) === parseInt(app.user.uid, 10); + const self = parseInt(message.fromuid, 10) === parseInt(app.user.uid, 10); message.self = self ? 1 : 0; messages.parseMessage(message, function (html) { - var body = components.get('chat/message', message.messageId); + const body = components.get('chat/message', message.messageId); if (body.length) { body.replaceWith(html); components.get('chat/message', message.messageId).find('.timeago').timeago(); diff --git a/public/src/client/chats/recent.js b/public/src/client/chats/recent.js index 32156cfc8f..de69baf45e 100644 --- a/public/src/client/chats/recent.js +++ b/public/src/client/chats/recent.js @@ -2,7 +2,7 @@ define('forum/chats/recent', function () { - var recent = {}; + const recent = {}; recent.init = function () { require(['forum/chats'], function (Chats) { @@ -11,8 +11,8 @@ define('forum/chats/recent', function () { }); $('[component="chat/recent"]').on('scroll', function () { - var $this = $(this); - var bottom = ($this[0].scrollHeight - $this.height()) * 0.9; + const $this = $(this); + const bottom = ($this[0].scrollHeight - $this.height()) * 0.9; if ($this.scrollTop() > bottom) { loadMoreRecentChats(); } @@ -21,7 +21,7 @@ define('forum/chats/recent', function () { }; function loadMoreRecentChats() { - var recentChats = $('[component="chat/recent"]'); + const recentChats = $('[component="chat/recent"]'); if (recentChats.attr('loading')) { return; } diff --git a/public/src/client/chats/search.js b/public/src/client/chats/search.js index 0c83dd101f..82bfcba8cc 100644 --- a/public/src/client/chats/search.js +++ b/public/src/client/chats/search.js @@ -2,14 +2,14 @@ define('forum/chats/search', ['components', 'api'], function (components, api) { - var search = {}; + const search = {}; search.init = function () { components.get('chat/search').on('keyup', utils.debounce(doSearch, 250)); }; function doSearch() { - var username = components.get('chat/search').val(); + const username = components.get('chat/search').val(); if (!username) { return $('[component="chat/search/list"]').empty(); } @@ -23,7 +23,7 @@ define('forum/chats/search', ['components', 'api'], function (components, api) { } function displayResults(data) { - var chatsListEl = $('[component="chat/search/list"]'); + const chatsListEl = $('[component="chat/search/list"]'); chatsListEl.empty(); data.users = data.users.filter(function (user) { @@ -35,7 +35,7 @@ define('forum/chats/search', ['components', 'api'], function (components, api) { } data.users.forEach(function (userObj) { - var chatEl = displayUser(chatsListEl, userObj); + const chatEl = displayUser(chatsListEl, userObj); onUserClick(chatEl, userObj); }); @@ -50,7 +50,7 @@ define('forum/chats/search', ['components', 'api'], function (components, api) { ' ' + userObj.username; } - var chatEl = $('
  • ') + const chatEl = $('
  • ') .attr('data-uid', userObj.uid) .appendTo(chatsListEl); diff --git a/public/src/client/compose.js b/public/src/client/compose.js index a7890679a5..2c0267c374 100644 --- a/public/src/client/compose.js +++ b/public/src/client/compose.js @@ -2,10 +2,10 @@ define('forum/compose', ['hooks'], function (hooks) { - var Compose = {}; + const Compose = {}; Compose.init = function () { - var container = $('.composer'); + const container = $('.composer'); if (container.length) { hooks.fire('action:composer.enhance', { diff --git a/public/src/client/flags/detail.js b/public/src/client/flags/detail.js index b43c7bcc5d..81b1592a73 100644 --- a/public/src/client/flags/detail.js +++ b/public/src/client/flags/detail.js @@ -1,7 +1,7 @@ 'use strict'; -define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'benchpress', 'forum/account/header', 'accounts/delete', 'api'], function (FlagsList, components, translator, Benchpress, AccountHeader, AccountsDelete, api) { - var Detail = {}; +define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'benchpress', 'forum/account/header', 'accounts/delete', 'api', 'bootbox'], function (FlagsList, components, translator, Benchpress, AccountHeader, AccountsDelete, api, bootbox) { + const Detail = {}; Detail.init = function () { // Update attributes @@ -9,9 +9,9 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b $('#assignee').val(ajaxify.data.assignee).removeAttr('disabled'); $('#content > div').on('click', '[data-action]', function () { - var action = this.getAttribute('data-action'); - var uid = $(this).parents('[data-uid]').attr('data-uid'); - var noteEl = document.getElementById('note'); + const action = this.getAttribute('data-action'); + const uid = $(this).parents('[data-uid]').attr('data-uid'); + const noteEl = document.getElementById('note'); switch (action) { case 'assign': @@ -45,8 +45,8 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b }).catch(app.alertError); break; - case 'delete-note': - var datetime = parseInt(this.closest('[data-datetime]').getAttribute('data-datetime'), 10); + case 'delete-note': { + const datetime = parseInt(this.closest('[data-datetime]').getAttribute('data-datetime'), 10); bootbox.confirm('[[flags:delete-note-confirm]]', function (ok) { if (ok) { api.delete(`/flags/${ajaxify.data.flagId}/notes/${datetime}`, {}).then((payload) => { @@ -57,7 +57,7 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b } }); break; - + } case 'chat': app.newChat(uid); break; @@ -90,15 +90,15 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b postAction('restore', ajaxify.data.target.pid, ajaxify.data.target.tid); break; - case 'prepare-edit': - var selectedNoteEl = this.closest('[data-index]'); - var index = selectedNoteEl.getAttribute('data-index'); - var textareaEl = document.getElementById('note'); + case 'prepare-edit': { + const selectedNoteEl = this.closest('[data-index]'); + const index = selectedNoteEl.getAttribute('data-index'); + const textareaEl = document.getElementById('note'); textareaEl.value = ajaxify.data.notes[index].content; textareaEl.setAttribute('data-datetime', ajaxify.data.notes[index].datetime); - var siblings = selectedNoteEl.parentElement.children; - for (var el in siblings) { + const siblings = selectedNoteEl.parentElement.children; + for (const el in siblings) { if (siblings.hasOwnProperty(el)) { siblings[el].classList.remove('editing'); } @@ -106,6 +106,7 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b selectedNoteEl.classList.add('editing'); textareaEl.focus(); break; + } } }); }; @@ -136,7 +137,7 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b Benchpress.render('flags/detail', { notes: notes, }, 'notes').then(function (html) { - var wrapperEl = components.get('flag/notes'); + const wrapperEl = components.get('flag/notes'); wrapperEl.empty(); wrapperEl.html(html); wrapperEl.find('span.timeago').timeago(); @@ -148,7 +149,7 @@ define('forum/flags/detail', ['forum/flags/list', 'components', 'translator', 'b app.parseAndTranslate('flags/detail', 'history', { history: history, }, function (html) { - var wrapperEl = components.get('flag/history'); + const wrapperEl = components.get('flag/history'); wrapperEl.empty(); wrapperEl.html(html); wrapperEl.find('span.timeago').timeago(); diff --git a/public/src/client/flags/list.js b/public/src/client/flags/list.js index a46dbade1c..2e3000c2d2 100644 --- a/public/src/client/flags/list.js +++ b/public/src/client/flags/list.js @@ -1,9 +1,9 @@ 'use strict'; define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomplete', 'api'], function (components, Chart, categoryFilter, autocomplete, api) { - var Flags = {}; + const Flags = {}; - var selectedCids; + let selectedCids; Flags.init = function () { Flags.enableFilterForm(); @@ -30,7 +30,7 @@ define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomple return; } - var flagId = this.getAttribute('data-flag-id'); + const flagId = this.getAttribute('data-flag-id'); ajaxify.go('flags/' + flagId); }); @@ -75,13 +75,13 @@ define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomple }; Flags.enableCheckboxes = function () { - var flagsList = document.querySelector('[component="flags/list"]'); - var checkboxes = flagsList.querySelectorAll('[data-flag-id] input[type="checkbox"]'); - var bulkEl = document.querySelector('[component="flags/bulk-actions"] button'); - var lastClicked; + const flagsList = document.querySelector('[component="flags/list"]'); + const checkboxes = flagsList.querySelectorAll('[data-flag-id] input[type="checkbox"]'); + const bulkEl = document.querySelector('[component="flags/bulk-actions"] button'); + let lastClicked; document.querySelector('[data-action="toggle-all"]').addEventListener('click', function () { - var state = this.checked; + const state = this.checked; checkboxes.forEach(function (el) { el.checked = state; @@ -90,15 +90,15 @@ define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomple }); flagsList.addEventListener('click', function (e) { - var subselector = e.target.closest('input[type="checkbox"]'); + const subselector = e.target.closest('input[type="checkbox"]'); if (subselector) { // Stop checkbox clicks from going into the flag details e.stopImmediatePropagation(); if (lastClicked && e.shiftKey && lastClicked !== subselector) { // Select all the checkboxes in between - var state = subselector.checked; - var started = false; + const state = subselector.checked; + let started = false; checkboxes.forEach(function (el) { if ([subselector, lastClicked].some(function (ref) { @@ -130,16 +130,16 @@ define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomple Flags.handleBulkActions = function () { document.querySelector('[component="flags/bulk-actions"]').addEventListener('click', function (e) { - var subselector = e.target.closest('[data-action]'); + const subselector = e.target.closest('[data-action]'); if (subselector) { - var action = subselector.getAttribute('data-action'); - var flagIds = Flags.getSelected(); - var promises = []; + const action = subselector.getAttribute('data-action'); + const flagIds = Flags.getSelected(); + const promises = []; // TODO: this can be better done with flagIds.map to return promises flagIds.forEach(function (flagId) { promises.push(new Promise(function (resolve, reject) { - var handler = function (err) { + const handler = function (err) { if (err) { reject(err); } @@ -164,10 +164,10 @@ define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomple }); Promise.allSettled(promises).then(function (results) { - var fulfilled = results.filter(function (res) { + const fulfilled = results.filter(function (res) { return res.status === 'fulfilled'; }).length; - var errors = results.filter(function (res) { + const errors = results.filter(function (res) { return res.status === 'rejected'; }); if (fulfilled) { @@ -184,8 +184,8 @@ define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomple }; Flags.getSelected = function () { - var checkboxes = document.querySelectorAll('[component="flags/list"] [data-flag-id] input[type="checkbox"]'); - var payload = []; + const checkboxes = document.querySelectorAll('[component="flags/list"] [data-flag-id] input[type="checkbox"]'); + const payload = []; checkboxes.forEach(function (el) { if (el.checked) { payload.push(el.closest('[data-flag-id]').getAttribute('data-flag-id')); @@ -196,15 +196,15 @@ define('forum/flags/list', ['components', 'Chart', 'categoryFilter', 'autocomple }; Flags.handleGraphs = function () { - var dailyCanvas = document.getElementById('flags:daily'); - var dailyLabels = utils.getDaysArray().map(function (text, idx) { + const dailyCanvas = document.getElementById('flags:daily'); + const dailyLabels = utils.getDaysArray().map(function (text, idx) { return idx % 3 ? '' : text; }); if (utils.isMobile()) { Chart.defaults.global.tooltips.enabled = false; } - var data = { + const data = { 'flags:daily': { labels: dailyLabels, datasets: [ diff --git a/public/src/client/groups/details.js b/public/src/client/groups/details.js index 531c62532e..b0ed482c0c 100644 --- a/public/src/client/groups/details.js +++ b/public/src/client/groups/details.js @@ -10,6 +10,7 @@ define('forum/groups/details', [ 'api', 'slugify', 'categorySelector', + 'bootbox', ], function ( memberList, iconSelect, @@ -19,13 +20,14 @@ define('forum/groups/details', [ translator, api, slugify, - categorySelector + categorySelector, + bootbox ) { - var Details = {}; - var groupName; + const Details = {}; + let groupName; Details.init = function () { - var detailsPage = components.get('groups/container'); + const detailsPage = components.get('groups/container'); groupName = ajaxify.data.group.name; @@ -66,12 +68,12 @@ define('forum/groups/details', [ components.get('groups/activity').find('.content img:not(.not-responsive)').addClass('img-responsive'); detailsPage.on('click', '[data-action]', function () { - var btnEl = $(this); - var userRow = btnEl.parents('[data-uid]'); - var ownerFlagEl = userRow.find('.member-name > i'); - var isOwner = !ownerFlagEl.hasClass('invisible'); - var uid = userRow.attr('data-uid'); - var action = btnEl.attr('data-action'); + const btnEl = $(this); + const userRow = btnEl.parents('[data-uid]'); + const ownerFlagEl = userRow.find('.member-name > i'); + const isOwner = !ownerFlagEl.hasClass('invisible'); + const uid = userRow.attr('data-uid'); + const action = btnEl.attr('data-action'); switch (action) { case 'toggleOwnership': @@ -133,16 +135,16 @@ define('forum/groups/details', [ }; Details.prepareSettings = function () { - var settingsFormEl = components.get('groups/settings'); - var labelColorValueEl = settingsFormEl.find('[name="labelColor"]'); - var textColorValueEl = settingsFormEl.find('[name="textColor"]'); - var iconBtn = settingsFormEl.find('[data-action="icon-select"]'); - var previewEl = settingsFormEl.find('.label'); - var previewElText = settingsFormEl.find('.label-text'); - var previewIcon = previewEl.find('i'); - var userTitleEl = settingsFormEl.find('[name="userTitle"]'); - var userTitleEnabledEl = settingsFormEl.find('[name="userTitleEnabled"]'); - var iconValueEl = settingsFormEl.find('[name="icon"]'); + const settingsFormEl = components.get('groups/settings'); + const labelColorValueEl = settingsFormEl.find('[name="labelColor"]'); + const textColorValueEl = settingsFormEl.find('[name="textColor"]'); + const iconBtn = settingsFormEl.find('[data-action="icon-select"]'); + const previewEl = settingsFormEl.find('.label'); + const previewElText = settingsFormEl.find('.label-text'); + const previewIcon = previewEl.find('i'); + const userTitleEl = settingsFormEl.find('[name="userTitle"]'); + const userTitleEnabledEl = settingsFormEl.find('[name="userTitleEnabled"]'); + const iconValueEl = settingsFormEl.find('[name="icon"]'); labelColorValueEl.on('input', function () { previewEl.css('background-color', labelColorValueEl.val()); @@ -166,7 +168,7 @@ define('forum/groups/details', [ // Disable user title customisation options if the the user title itself is disabled userTitleEnabledEl.on('change', function () { - var customOpts = components.get('groups/userTitleOption'); + const customOpts = components.get('groups/userTitleOption'); if (this.checked) { customOpts.removeAttr('disabled'); @@ -177,9 +179,9 @@ define('forum/groups/details', [ } }); - var cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), { + const cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), { onSelect: function (selectedCategory) { - var cids = ($('#memberPostCids').val() || '').split(',').map(cid => parseInt(cid, 10)); + let cids = ($('#memberPostCids').val() || '').split(',').map(cid => parseInt(cid, 10)); cids.push(selectedCategory.cid); cids = cids.filter((cid, index, array) => array.indexOf(cid) === index); $('#memberPostCids').val(cids.join(',')); @@ -189,11 +191,11 @@ define('forum/groups/details', [ }; Details.update = function () { - var settingsFormEl = components.get('groups/settings'); - var checkboxes = settingsFormEl.find('input[type="checkbox"][name]'); + const settingsFormEl = components.get('groups/settings'); + const checkboxes = settingsFormEl.find('input[type="checkbox"][name]'); if (settingsFormEl.length) { - var settings = settingsFormEl.serializeObject(); + const settings = settingsFormEl.serializeObject(); // serializeObject doesnt return array for multi selects if only one item is selected if (!Array.isArray(settings.memberPostCids)) { @@ -210,7 +212,7 @@ define('forum/groups/details', [ api.put(`/groups/${ajaxify.data.group.slug}`, settings).then(() => { if (settings.name) { - var pathname = window.location.pathname; + let pathname = window.location.pathname; pathname = pathname.substr(1, pathname.lastIndexOf('/')); ajaxify.go(pathname + slugify(settings.name)); } else { @@ -242,7 +244,7 @@ define('forum/groups/details', [ return; } - var searchInput = $('[component="groups/members/invite"]'); + const searchInput = $('[component="groups/members/invite"]'); require(['autocomplete'], function (autocomplete) { autocomplete.user(searchInput, function (event, selected) { socket.emit('groups.issueInvite', { @@ -258,7 +260,7 @@ define('forum/groups/details', [ }); $('[component="groups/members/bulk-invite-button"]').on('click', function () { - var usernames = $('[component="groups/members/bulk-invite"]').val(); + const usernames = $('[component="groups/members/bulk-invite"]').val(); if (!usernames) { return false; } diff --git a/public/src/client/groups/list.js b/public/src/client/groups/list.js index abfae6716d..d7645668e9 100644 --- a/public/src/client/groups/list.js +++ b/public/src/client/groups/list.js @@ -1,9 +1,9 @@ 'use strict'; define('forum/groups/list', [ - 'forum/infinitescroll', 'benchpress', 'api', -], function (infinitescroll, Benchpress, api) { - var Groups = {}; + 'forum/infinitescroll', 'benchpress', 'api', 'bootbox', +], function (infinitescroll, Benchpress, api, bootbox) { + const Groups = {}; Groups.init = function () { infinitescroll.init(Groups.loadMoreGroups); @@ -20,7 +20,7 @@ define('forum/groups/list', [ } }); }); - var params = utils.params(); + const params = utils.params(); $('#search-sort').val(params.sort || 'alpha'); // Group searching @@ -58,9 +58,9 @@ define('forum/groups/list', [ }; Groups.search = function () { - var groupsEl = $('#groups-list'); - var queryEl = $('#search-text'); - var sortEl = $('#search-sort'); + const groupsEl = $('#groups-list'); + const queryEl = $('#search-text'); + const sortEl = $('#search-sort'); socket.emit('groups.search', { query: queryEl.val(), diff --git a/public/src/client/groups/memberlist.js b/public/src/client/groups/memberlist.js index 679f270cbc..61f2c53334 100644 --- a/public/src/client/groups/memberlist.js +++ b/public/src/client/groups/memberlist.js @@ -1,10 +1,10 @@ 'use strict'; -define('forum/groups/memberlist', ['api'], function (api) { - var MemberList = {}; - var searchInterval; - var groupName; - var templateName; +define('forum/groups/memberlist', ['api', 'bootbox'], function (api, bootbox) { + const MemberList = {}; + let searchInterval; + let groupName; + let templateName; MemberList.init = function (_templateName) { templateName = _templateName || 'groups/details'; @@ -18,14 +18,14 @@ define('forum/groups/memberlist', ['api'], function (api) { function handleMemberAdd() { $('[component="groups/members/add"]').on('click', function () { app.parseAndTranslate('admin/partials/groups/add-members', {}, function (html) { - var foundUsers = []; - var modal = bootbox.dialog({ + const foundUsers = []; + const modal = bootbox.dialog({ title: '[[groups:details.add-member]]', message: html, buttons: { ok: { callback: function () { - var users = []; + const users = []; modal.find('[data-uid][data-selected]').each(function (index, el) { users.push(foundUsers[$(el).attr('data-uid')]); }); @@ -37,7 +37,7 @@ define('forum/groups/memberlist', ['api'], function (api) { }, }); modal.on('click', '[data-username]', function () { - var isSelected = $(this).attr('data-selected') === '1'; + const isSelected = $(this).attr('data-selected') === '1'; if (isSelected) { $(this).removeAttr('data-selected'); } else { @@ -75,7 +75,7 @@ define('forum/groups/memberlist', ['api'], function (api) { }); callback(); } - var uids = users.map(function (user) { return user.uid; }); + const uids = users.map(function (user) { return user.uid; }); if (groupName === 'administrators') { socket.emit('admin.user.makeAdmins', uids, function (err) { if (err) { @@ -90,7 +90,7 @@ define('forum/groups/memberlist', ['api'], function (api) { function handleMemberSearch() { $('[component="groups/members/search"]').on('keyup', function () { - var query = $(this).val(); + const query = $(this).val(); if (searchInterval) { clearInterval(searchInterval); searchInterval = 0; @@ -112,8 +112,8 @@ define('forum/groups/memberlist', ['api'], function (api) { function handleMemberInfiniteScroll() { $('[component="groups/members"] tbody').on('scroll', function () { - var $this = $(this); - var bottom = ($this[0].scrollHeight - $this.innerHeight()) * 0.9; + const $this = $(this); + const bottom = ($this[0].scrollHeight - $this.innerHeight()) * 0.9; if ($this.scrollTop() > bottom && !$('[component="groups/members/search"]').val()) { loadMoreMembers(); @@ -122,7 +122,7 @@ define('forum/groups/memberlist', ['api'], function (api) { } function loadMoreMembers() { - var members = $('[component="groups/members"]'); + const members = $('[component="groups/members"]'); if (members.attr('loading')) { return; } diff --git a/public/src/client/header/chat.js b/public/src/client/header/chat.js index 188bd4386d..8f87e2c513 100644 --- a/public/src/client/header/chat.js +++ b/public/src/client/header/chat.js @@ -1,11 +1,11 @@ 'use strict'; define('forum/header/chat', ['components'], function (components) { - var chat = {}; + const chat = {}; chat.prepareDOM = function () { - var chatsToggleEl = components.get('chat/dropdown'); - var chatsListEl = components.get('chat/list'); + const chatsToggleEl = components.get('chat/dropdown'); + const chatsListEl = components.get('chat/list'); chatsToggleEl.on('click', function () { if (chatsToggleEl.parent().hasClass('open')) { diff --git a/public/src/client/header/notifications.js b/public/src/client/header/notifications.js index b30535f0fd..024cc5960f 100644 --- a/public/src/client/header/notifications.js +++ b/public/src/client/header/notifications.js @@ -1,12 +1,12 @@ 'use strict'; define('forum/header/notifications', ['components'], function (components) { - var notifications = {}; + const notifications = {}; notifications.prepareDOM = function () { - var notifContainer = components.get('notifications'); - var notifTrigger = notifContainer.children('a'); - var notifList = components.get('notifications/list'); + const notifContainer = components.get('notifications'); + const notifTrigger = notifContainer.children('a'); + const notifList = components.get('notifications/list'); notifTrigger.on('click', function (e) { e.preventDefault(); diff --git a/public/src/client/infinitescroll.js b/public/src/client/infinitescroll.js index c8aebb413e..e734cf455e 100644 --- a/public/src/client/infinitescroll.js +++ b/public/src/client/infinitescroll.js @@ -2,12 +2,12 @@ define('forum/infinitescroll', ['hooks'], function (hooks) { - var scroll = {}; - var callback; - var previousScrollTop = 0; - var loadingMore = false; - var container; - var scrollTimeout = 0; + const scroll = {}; + let callback; + let previousScrollTop = 0; + let loadingMore = false; + let container; + let scrollTimeout = 0; scroll.init = function (el, cb) { const $body = $('body'); @@ -37,20 +37,20 @@ define('forum/infinitescroll', ['hooks'], function (hooks) { } function onScroll() { - var bsEnv = utils.findBootstrapEnvironment(); - var mobileComposerOpen = (bsEnv === 'xs' || bsEnv === 'sm') && $('html').hasClass('composing'); + const bsEnv = utils.findBootstrapEnvironment(); + const mobileComposerOpen = (bsEnv === 'xs' || bsEnv === 'sm') && $('html').hasClass('composing'); if (loadingMore || mobileComposerOpen) { return; } - var currentScrollTop = $(window).scrollTop(); - var wh = $(window).height(); - var viewportHeight = container.height() - wh; - var offsetTop = container.offset() ? container.offset().top : 0; - var scrollPercent = 100 * (currentScrollTop - offsetTop) / (viewportHeight <= 0 ? wh : viewportHeight); + const currentScrollTop = $(window).scrollTop(); + const wh = $(window).height(); + const viewportHeight = container.height() - wh; + const offsetTop = container.offset() ? container.offset().top : 0; + const scrollPercent = 100 * (currentScrollTop - offsetTop) / (viewportHeight <= 0 ? wh : viewportHeight); - var top = 15; - var bottom = 85; - var direction = currentScrollTop > previousScrollTop ? 1 : -1; + const top = 15; + const bottom = 85; + const direction = currentScrollTop > previousScrollTop ? 1 : -1; if (scrollPercent < top && currentScrollTop < previousScrollTop) { callback(direction); @@ -69,7 +69,7 @@ define('forum/infinitescroll', ['hooks'], function (hooks) { } loadingMore = true; - var hookData = { method: method, data: data }; + const hookData = { method: method, data: data }; hooks.fire('action:infinitescroll.loadmore', hookData); socket.emit(hookData.method, hookData.data, function (err, data) { @@ -88,8 +88,8 @@ define('forum/infinitescroll', ['hooks'], function (hooks) { return; } loadingMore = true; - var url = config.relative_path + '/api' + location.pathname.replace(new RegExp('^' + config.relative_path), ''); - var hookData = { url: url, data: data }; + const url = config.relative_path + '/api' + location.pathname.replace(new RegExp('^' + config.relative_path), ''); + const hookData = { url: url, data: data }; hooks.fire('action:infinitescroll.loadmore.xhr', hookData); $.get(url, data, function (data) { @@ -107,10 +107,10 @@ define('forum/infinitescroll', ['hooks'], function (hooks) { return; } - var removeCount = els.length - count; + const removeCount = els.length - count; if (direction > 0) { - var height = $(document).height(); - var scrollTop = $(window).scrollTop(); + const height = $(document).height(); + const scrollTop = $(window).scrollTop(); els.slice(0, removeCount).remove(); diff --git a/public/src/client/ip-blacklist.js b/public/src/client/ip-blacklist.js index cf4a7c12b9..624fe70ee5 100644 --- a/public/src/client/ip-blacklist.js +++ b/public/src/client/ip-blacklist.js @@ -1,11 +1,11 @@ 'use strict'; -define('forum/ip-blacklist', ['Chart', 'benchpress'], function (Chart, Benchpress) { - var Blacklist = {}; +define('forum/ip-blacklist', ['Chart', 'benchpress', 'bootbox'], function (Chart, Benchpress, bootbox) { + const Blacklist = {}; Blacklist.init = function () { - var blacklist = $('#blacklist-rules'); + const blacklist = $('#blacklist-rules'); blacklist.on('keyup', function () { $('#blacklist-rules-holder').val(blacklist.val()); @@ -42,12 +42,12 @@ define('forum/ip-blacklist', ['Chart', 'benchpress'], function (Chart, Benchpres }; Blacklist.setupAnalytics = function () { - var hourlyCanvas = document.getElementById('blacklist:hourly'); - var dailyCanvas = document.getElementById('blacklist:daily'); - var hourlyLabels = utils.getHoursArray().map(function (text, idx) { + const hourlyCanvas = document.getElementById('blacklist:hourly'); + const dailyCanvas = document.getElementById('blacklist:daily'); + const hourlyLabels = utils.getHoursArray().map(function (text, idx) { return idx % 3 ? '' : text; }); - var dailyLabels = utils.getDaysArray().slice(-7).map(function (text, idx) { + const dailyLabels = utils.getDaysArray().slice(-7).map(function (text, idx) { return idx % 3 ? '' : text; }); @@ -55,7 +55,7 @@ define('forum/ip-blacklist', ['Chart', 'benchpress'], function (Chart, Benchpres Chart.defaults.global.tooltips.enabled = false; } - var data = { + const data = { 'blacklist:hourly': { labels: hourlyLabels, datasets: [ diff --git a/public/src/client/login.js b/public/src/client/login.js index b839c00efb..9b130a4939 100644 --- a/public/src/client/login.js +++ b/public/src/client/login.js @@ -2,14 +2,14 @@ define('forum/login', ['hooks', 'translator', 'jquery-form'], function (hooks, translator) { - var Login = { + const Login = { _capsState: false, }; Login.init = function () { - var errorEl = $('#login-error-notify'); - var submitEl = $('#login'); - var formEl = $('#login-form'); + const errorEl = $('#login-error-notify'); + const submitEl = $('#login'); + const formEl = $('#login-form'); submitEl.on('click', function (e) { e.preventDefault(); @@ -36,17 +36,17 @@ define('forum/login', ['hooks', 'translator', 'jquery-form'], function (hooks, t }, success: function (data) { hooks.fire('action:app.loggedIn', data); - var pathname = utils.urlToLocation(data.next).pathname; - var params = utils.params({ url: data.next }); + const pathname = utils.urlToLocation(data.next).pathname; + const params = utils.params({ url: data.next }); params.loggedin = true; delete params.register; // clear register message incase it exists - var qs = decodeURIComponent($.param(params)); + const qs = decodeURIComponent($.param(params)); window.location.href = pathname + '?' + qs; }, error: function (data) { - var message = data.responseText; - var errInfo = data.responseJSON; + let message = data.responseText; + const errInfo = data.responseJSON; if (data.status === 403 && data.responseText === 'Forbidden') { window.location.href = config.relative_path + '/login?error=csrf-invalid'; } else if (errInfo && errInfo.hasOwnProperty('banned_until')) { diff --git a/public/src/client/notifications.js b/public/src/client/notifications.js index 97e7bb3129..e13da8f707 100644 --- a/public/src/client/notifications.js +++ b/public/src/client/notifications.js @@ -2,12 +2,12 @@ define('forum/notifications', ['components'], function (components) { - var Notifications = {}; + const Notifications = {}; Notifications.init = function () { - var listEl = $('.notifications-list'); + const listEl = $('.notifications-list'); listEl.on('click', '[component="notifications/item/link"]', function () { - var nid = $(this).parents('[data-nid]').attr('data-nid'); + const nid = $(this).parents('[data-nid]').attr('data-nid'); socket.emit('notifications.markRead', nid, function (err) { if (err) { return app.alertError(err); diff --git a/public/src/client/pagination.js b/public/src/client/pagination.js index 543f7534b7..8055708a90 100644 --- a/public/src/client/pagination.js +++ b/public/src/client/pagination.js @@ -1,8 +1,8 @@ 'use strict'; -define('forum/pagination', function () { - var pagination = {}; +define('forum/pagination', ['bootbox'], function (bootbox) { + const pagination = {}; pagination.init = function () { $('body').on('click', '[component="pagination/select-page"]', function () { @@ -20,10 +20,10 @@ define('forum/pagination', function () { return; } - var query = utils.params(); + const query = utils.params(); query.page = page; - var url = window.location.pathname + '?' + $.param(query); + const url = window.location.pathname + '?' + $.param(query); ajaxify.go(url, callback); }; diff --git a/public/src/client/popular.js b/public/src/client/popular.js index df9a656411..0ce846b784 100644 --- a/public/src/client/popular.js +++ b/public/src/client/popular.js @@ -2,7 +2,7 @@ define('forum/popular', ['topicList'], function (topicList) { - var Popular = {}; + const Popular = {}; Popular.init = function () { app.enterRoom('popular_topics'); diff --git a/public/src/client/post-queue.js b/public/src/client/post-queue.js index 6551fb031b..37934b0ea8 100644 --- a/public/src/client/post-queue.js +++ b/public/src/client/post-queue.js @@ -4,7 +4,7 @@ define('forum/post-queue', [ 'categoryFilter', 'categorySelector', 'api', ], function (categoryFilter, categorySelector, api) { - var PostQueue = {}; + const PostQueue = {}; PostQueue.init = function () { $('[data-toggle="tooltip"]').tooltip(); @@ -14,10 +14,10 @@ define('forum/post-queue', [ }); $('.posts-list').on('click', '[data-action]', function () { - var parent = $(this).parents('[data-id]'); - var action = $(this).attr('data-action'); - var id = parent.attr('data-id'); - var listContainer = parent.get(0).parentNode; + const parent = $(this).parents('[data-id]'); + const action = $(this).attr('data-action'); + const id = parent.attr('data-id'); + const listContainer = parent.get(0).parentNode; if (!['accept', 'reject'].some(function (valid) { return action === valid; @@ -42,8 +42,8 @@ define('forum/post-queue', [ handleContentEdit('.topic-title', '.topic-title-editable', 'input'); $('.posts-list').on('click', '.topic-category[data-editable]', function () { - var $this = $(this); - var id = $this.parents('[data-id]').attr('data-id'); + const $this = $(this); + const id = $this.parents('[data-id]').attr('data-id'); categorySelector.modal({ onSubmit: function (selectedCategory) { Promise.all([ @@ -53,7 +53,7 @@ define('forum/post-queue', [ cid: selectedCategory.cid, }), ]).then(function (result) { - var category = result[0]; + const category = result[0]; app.parseAndTranslate('post-queue', 'posts', { posts: [{ category: category, @@ -79,8 +79,8 @@ define('forum/post-queue', [ function handleContentEdit(displayClass, editableClass, inputSelector) { $('.posts-list').on('click', displayClass, function () { - var el = $(this); - var inputEl = el.parent().find(editableClass); + const el = $(this); + const inputEl = el.parent().find(editableClass); if (inputEl.length) { el.addClass('hidden'); inputEl.removeClass('hidden').find(inputSelector).focus(); @@ -88,10 +88,10 @@ define('forum/post-queue', [ }); $('.posts-list').on('blur', editableClass + ' ' + inputSelector, function () { - var textarea = $(this); - var preview = textarea.parent().parent().find(displayClass); - var id = textarea.parents('[data-id]').attr('data-id'); - var titleEdit = displayClass === '.topic-title'; + const textarea = $(this); + const preview = textarea.parent().parent().find(displayClass); + const id = textarea.parents('[data-id]').attr('data-id'); + const titleEdit = displayClass === '.topic-title'; socket.emit('posts.editQueuedContent', { id: id, diff --git a/public/src/client/recent.js b/public/src/client/recent.js index 93e3593039..9d0a9904a2 100644 --- a/public/src/client/recent.js +++ b/public/src/client/recent.js @@ -1,13 +1,12 @@ 'use strict'; define('forum/recent', ['topicList'], function (topicList) { - var Recent = {}; + const Recent = {}; Recent.init = function () { app.enterRoom('recent_topics'); topicList.init('recent'); - app.showEmailConfirmWarning(); }; return Recent; diff --git a/public/src/client/register.js b/public/src/client/register.js index 068ba9a6ed..758f402feb 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -2,23 +2,23 @@ define('forum/register', [ - 'translator', 'zxcvbn', 'slugify', 'api', 'forum/login', 'jquery-form', -], function (translator, zxcvbn, slugify, api, Login) { - var Register = {}; - var validationError = false; - var successIcon = ''; + 'translator', 'zxcvbn', 'slugify', 'api', 'bootbox', 'forum/login', 'jquery-form', +], function (translator, zxcvbn, slugify, api, bootbox, Login) { + const Register = {}; + let validationError = false; + const successIcon = ''; Register.init = function () { - var username = $('#username'); - var password = $('#password'); - var password_confirm = $('#password-confirm'); - var register = $('#register'); + const username = $('#username'); + const password = $('#password'); + const password_confirm = $('#password-confirm'); + const register = $('#register'); handleLanguageOverride(); $('#content #noscript').val('false'); - var query = utils.params(); + const query = utils.params(); if (query.token) { $('#token').val(query.token); } @@ -57,8 +57,8 @@ define('forum/register', [ Login.capsLockCheck(document.querySelector('#password'), document.querySelector('#caps-lock-warning')); register.on('click', function (e) { - var registerBtn = $(this); - var errorEl = $('#register-error-notify'); + const registerBtn = $(this); + const errorEl = $('#register-error-notify'); errorEl.addClass('hidden'); e.preventDefault(); validateForm(function () { @@ -78,11 +78,11 @@ define('forum/register', [ return; } if (data.next) { - var pathname = utils.urlToLocation(data.next).pathname; + const pathname = utils.urlToLocation(data.next).pathname; - var params = utils.params({ url: data.next }); + const params = utils.params({ url: data.next }); params.registered = true; - var qs = decodeURIComponent($.param(params)); + const qs = decodeURIComponent($.param(params)); window.location.href = pathname + '?' + qs; } else if (data.message) { @@ -114,8 +114,8 @@ define('forum/register', [ function validateUsername(username, callback) { callback = callback || function () {}; - var username_notify = $('#username-notify'); - var userslug = slugify(username); + const username_notify = $('#username-notify'); + const userslug = slugify(username); if (username.length < ajaxify.data.minimumUsernameLength || userslug.length < ajaxify.data.minimumUsernameLength) { showError(username_notify, '[[error:username-too-short]]'); } else if (username.length > ajaxify.data.maximumUsernameLength) { @@ -139,9 +139,9 @@ define('forum/register', [ } function validatePassword(password, password_confirm) { - var password_notify = $('#password-notify'); - var password_confirm_notify = $('#password-confirm-notify'); - var passwordStrength = zxcvbn(password); + const password_notify = $('#password-notify'); + const password_confirm_notify = $('#password-confirm-notify'); + const passwordStrength = zxcvbn(password); if (password.length < ajaxify.data.minimumPasswordLength) { showError(password_notify, '[[reset_password:password_too_short]]'); @@ -163,8 +163,8 @@ define('forum/register', [ } function validatePasswordConfirm(password, password_confirm) { - var password_notify = $('#password-notify'); - var password_confirm_notify = $('#password-confirm-notify'); + const password_notify = $('#password-notify'); + const password_confirm_notify = $('#password-confirm-notify'); if (!password || password_notify.hasClass('alert-error')) { return; @@ -200,8 +200,8 @@ define('forum/register', [ function handleLanguageOverride() { if (!app.user.uid && config.defaultLang !== config.userLang) { - var formEl = $('[component="register/local"]'); - var langEl = $(''); + const formEl = $('[component="register/local"]'); + const langEl = $(''); formEl.append(langEl); } diff --git a/public/src/client/reset.js b/public/src/client/reset.js index 06bda6307a..0c2f4d6066 100644 --- a/public/src/client/reset.js +++ b/public/src/client/reset.js @@ -2,12 +2,12 @@ define('forum/reset', function () { - var ResetPassword = {}; + const ResetPassword = {}; ResetPassword.init = function () { - var inputEl = $('#email'); - var errorEl = $('#error'); - var successEl = $('#success'); + const inputEl = $('#email'); + const errorEl = $('#error'); + const successEl = $('#success'); $('#reset').on('click', function () { if (inputEl.val() && inputEl.val().indexOf('@') !== -1) { diff --git a/public/src/client/reset_code.js b/public/src/client/reset_code.js index 5a27b16978..16333e8c3f 100644 --- a/public/src/client/reset_code.js +++ b/public/src/client/reset_code.js @@ -2,17 +2,17 @@ define('forum/reset_code', ['zxcvbn'], function (zxcvbn) { - var ResetCode = {}; + const ResetCode = {}; ResetCode.init = function () { - var reset_code = ajaxify.data.code; + const reset_code = ajaxify.data.code; - var resetEl = $('#reset'); - var password = $('#password'); - var repeat = $('#repeat'); + const resetEl = $('#reset'); + const password = $('#password'); + const repeat = $('#repeat'); resetEl.on('click', function () { - var strength = zxcvbn(password.val()); + const strength = zxcvbn(password.val()); if (password.val().length < ajaxify.data.minimumPasswordLength) { $('#notice').removeClass('hidden'); $('#notice strong').translateText('[[reset_password:password_too_short]]'); diff --git a/public/src/client/search.js b/public/src/client/search.js index 9412acc6d8..ac0d1ccfb1 100644 --- a/public/src/client/search.js +++ b/public/src/client/search.js @@ -7,12 +7,12 @@ define('forum/search', [ 'storage', 'hooks', ], function (searchModule, autocomplete, storage, hooks) { - var Search = {}; + const Search = {}; Search.init = function () { - var searchQuery = $('#results').attr('data-search-query'); + const searchQuery = $('#results').attr('data-search-query'); - var searchIn = $('#search-in'); + const searchIn = $('#search-in'); searchIn.on('change', function () { updateFormItemVisiblity(searchIn.val()); @@ -36,8 +36,8 @@ define('forum/search', [ }; function getSearchDataFromDOM() { - var form = $('#advanced-search'); - var searchData = { + const form = $('#advanced-search'); + const searchData = { in: $('#search-in').val(), }; searchData.term = $('#search-input').val(); @@ -65,17 +65,17 @@ define('forum/search', [ } function updateFormItemVisiblity(searchIn) { - var hide = searchIn.indexOf('posts') === -1 && searchIn.indexOf('titles') === -1; + const hide = searchIn.indexOf('posts') === -1 && searchIn.indexOf('titles') === -1; $('.post-search-item').toggleClass('hide', hide); } function fillOutForm() { - var params = utils.params({ + const params = utils.params({ disableToType: true, }); - var searchData = searchModule.getSearchPreferences(); - var formData = utils.merge(searchData, params); + const searchData = searchModule.getSearchPreferences(); + const formData = utils.merge(searchData, params); if (formData) { if (ajaxify.data.term) { @@ -127,8 +127,8 @@ define('forum/search', [ $('#post-sort-direction').val(formData.sortDirection || 'desc'); if (formData.showAs) { - var isTopic = formData.showAs === 'topics'; - var isPost = formData.showAs === 'posts'; + const isTopic = formData.showAs === 'topics'; + const isPost = formData.showAs === 'posts'; $('#show-as-topics').prop('checked', isTopic).parent().toggleClass('active', isTopic); $('#show-as-posts').prop('checked', isPost).parent().toggleClass('active', isPost); } @@ -148,7 +148,7 @@ define('forum/search', [ $('#clear-preferences').on('click', function () { storage.removeItem('search-preferences'); - var query = $('#search-input').val(); + const query = $('#search-input').val(); $('#advanced-search')[0].reset(); $('#search-input').val(query); app.alertSuccess('[[search:search-preferences-cleared]]'); @@ -157,7 +157,7 @@ define('forum/search', [ } function enableAutoComplete() { - var userEl = $('#posted-by-user'); + const userEl = $('#posted-by-user'); userEl.tagsinput({ confirmKeys: [13, 44], trimValue: true, @@ -166,7 +166,7 @@ define('forum/search', [ autocomplete.user(userEl.siblings('.bootstrap-tagsinput').find('input')); } - var tagEl = $('#has-tags'); + const tagEl = $('#has-tags'); tagEl.tagsinput({ confirmKeys: [13, 44], trimValue: true, diff --git a/public/src/client/tag.js b/public/src/client/tag.js index ce45a94aae..4d4a048a2c 100644 --- a/public/src/client/tag.js +++ b/public/src/client/tag.js @@ -1,7 +1,7 @@ 'use strict'; define('forum/tag', ['topicList', 'forum/infinitescroll'], function (topicList) { - var Tag = {}; + const Tag = {}; Tag.init = function () { app.enterRoom('tags'); diff --git a/public/src/client/tags.js b/public/src/client/tags.js index bde065269e..b5f88d05b0 100644 --- a/public/src/client/tags.js +++ b/public/src/client/tags.js @@ -2,7 +2,7 @@ define('forum/tags', ['forum/infinitescroll'], function (infinitescroll) { - var Tags = {}; + const Tags = {}; Tags.init = function () { app.enterRoom('tags'); diff --git a/public/src/client/top.js b/public/src/client/top.js index 9ad2e7b886..b2eb44e99f 100644 --- a/public/src/client/top.js +++ b/public/src/client/top.js @@ -1,7 +1,7 @@ 'use strict'; define('forum/top', ['topicList'], function (topicList) { - var Top = {}; + const Top = {}; Top.init = function () { app.enterRoom('top_topics'); diff --git a/public/src/client/topic.js b/public/src/client/topic.js index adf46848e5..5cc2da69a5 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -18,8 +18,8 @@ define('forum/topic', [ events, posts, images, navigator, sort, components, storage, hooks ) { - var Topic = {}; - var currentUrl = ''; + const Topic = {}; + let currentUrl = ''; $(window).on('action:ajaxify.start', function (ev, data) { if (Topic.replaceURLTimeout) { @@ -42,7 +42,7 @@ define('forum/topic', [ }); Topic.init = function () { - var tid = ajaxify.data.tid; + const tid = ajaxify.data.tid; currentUrl = ajaxify.currentPage; hooks.fire('action:topic.loading'); @@ -74,7 +74,6 @@ define('forum/topic', [ $(window).on('scroll', updateTopicTitle); handleTopicSearch(); - app.showEmailConfirmWarning(); hooks.fire('action:topic.loaded', ajaxify.data); }; @@ -95,12 +94,9 @@ define('forum/topic', [ if (config.topicSearchEnabled) { require(['mousetrap'], function (mousetrap) { mousetrap.bind(['command+f', 'ctrl+f'], function (e) { - var match = ajaxify.currentPage.match(/^topic\/([\d]+)/); - var tid; - if (match) { + if (ajaxify.data.template.topic) { e.preventDefault(); - tid = match[1]; - $('#search-fields input').val('in:topic-' + tid + ' '); + $('#search-fields input').val('in:topic-' + ajaxify.data.tid + ' '); app.prepareSearch(); } }); @@ -124,13 +120,13 @@ define('forum/topic', [ function handleBookmark(tid) { if (window.location.hash) { - var el = $(utils.escapeHTML(window.location.hash)); + const el = $(utils.escapeHTML(window.location.hash)); if (el.length) { return navigator.scrollToElement(el, true, 0); } } - var bookmark = ajaxify.data.bookmark || storage.getItem('topic:' + tid + ':bookmark'); - var postIndex = ajaxify.data.postIndex; + const bookmark = ajaxify.data.bookmark || storage.getItem('topic:' + tid + ':bookmark'); + const postIndex = ajaxify.data.postIndex; if (postIndex > 1) { if (components.get('post/anchor', postIndex - 1).length) { @@ -160,19 +156,19 @@ define('forum/topic', [ function addBlockQuoteHandler() { components.get('topic').on('click', 'blockquote .toggle', function () { - var blockQuote = $(this).parent('blockquote'); - var toggle = $(this); + const blockQuote = $(this).parent('blockquote'); + const toggle = $(this); blockQuote.toggleClass('uncollapsed'); - var collapsed = !blockQuote.hasClass('uncollapsed'); + const collapsed = !blockQuote.hasClass('uncollapsed'); toggle.toggleClass('fa-angle-down', collapsed).toggleClass('fa-angle-up', !collapsed); }); } function addParentHandler() { components.get('topic').on('click', '[component="post/parent"]', function (e) { - var toPid = $(this).attr('data-topid'); + const toPid = $(this).attr('data-topid'); - var toPost = $('[component="topic"]>[component="post"][data-pid="' + toPid + '"]'); + const toPost = $('[component="topic"]>[component="post"][data-pid="' + toPid + '"]'); if (toPost.length) { e.preventDefault(); navigator.scrollToIndex(toPost.attr('data-index'), true); @@ -183,18 +179,18 @@ define('forum/topic', [ function addDropupHandler() { // Locate all dropdowns - var target = $('#content .dropdown-menu').parent(); + const target = $('#content .dropdown-menu').parent(); // Toggle dropup if past 50% of screen $(target).on('show.bs.dropdown', function () { - var dropUp = this.getBoundingClientRect().top > ($(window).height() / 2); + const dropUp = this.getBoundingClientRect().top > ($(window).height() / 2); $(this).toggleClass('dropup', dropUp); }); } function addRepliesHandler() { $('[component="topic"]').on('click', '[component="post/reply-count"]', function () { - var btn = $(this); + const btn = $(this); require(['forum/topic/replies'], function (replies) { replies.init(btn); }); @@ -202,7 +198,7 @@ define('forum/topic', [ } function updateTopicTitle() { - var span = components.get('navbar/title').find('span'); + const span = components.get('navbar/title').find('span'); if ($(window).scrollTop() > 50 && span.hasClass('hidden')) { span.html(ajaxify.data.title).removeClass('hidden'); } else if ($(window).scrollTop() <= 50 && !span.hasClass('hidden')) { @@ -214,7 +210,7 @@ define('forum/topic', [ } Topic.navigatorCallback = function (index, elementCount) { - var path = ajaxify.removeRelativePath(window.location.pathname.slice(1)); + const path = ajaxify.removeRelativePath(window.location.pathname.slice(1)); if (!path.startsWith('topic')) { return; } @@ -223,7 +219,7 @@ define('forum/topic', [ return; } - var newUrl = 'topic/' + ajaxify.data.slug + (index > 1 ? ('/' + index) : ''); + const newUrl = 'topic/' + ajaxify.data.slug + (index > 1 ? ('/' + index) : ''); if (newUrl !== currentUrl) { if (Topic.replaceURLTimeout) { clearTimeout(Topic.replaceURLTimeout); @@ -239,7 +235,7 @@ define('forum/topic', [ Topic.replaceURLTimeout = 0; if (ajaxify.data.updateUrlWithPostIndex && history.replaceState) { - var search = window.location.search || ''; + let search = window.location.search || ''; if (!config.usePagination) { search = (search && !/^\?page=\d+$/.test(search) ? search : ''); } @@ -253,8 +249,8 @@ define('forum/topic', [ }; function updateUserBookmark(index) { - var bookmarkKey = 'topic:' + ajaxify.data.tid + ':bookmark'; - var currentBookmark = ajaxify.data.bookmark || storage.getItem(bookmarkKey); + const bookmarkKey = 'topic:' + ajaxify.data.tid + ':bookmark'; + const currentBookmark = ajaxify.data.bookmark || storage.getItem(bookmarkKey); if (config.topicPostSort === 'newest_to_oldest') { index = Math.max(1, ajaxify.data.postcount - index + 2); } diff --git a/public/src/client/topic/change-owner.js b/public/src/client/topic/change-owner.js index 04fda698f5..f11a75099c 100644 --- a/public/src/client/topic/change-owner.js +++ b/public/src/client/topic/change-owner.js @@ -6,11 +6,11 @@ define('forum/topic/change-owner', [ 'postSelect', 'autocomplete', ], function (components, postSelect, autocomplete) { - var ChangeOwner = {}; + const ChangeOwner = {}; - var modal; - var commit; - var toUid = 0; + let modal; + let commit; + let toUid = 0; ChangeOwner.init = function (postEl) { if (modal) { return; diff --git a/public/src/client/topic/delete-posts.js b/public/src/client/topic/delete-posts.js index 76cd4ed9c2..b08697c18a 100644 --- a/public/src/client/topic/delete-posts.js +++ b/public/src/client/topic/delete-posts.js @@ -2,11 +2,11 @@ define('forum/topic/delete-posts', ['components', 'postSelect'], function (components, postSelect) { - var DeletePosts = {}; - var modal; - var deleteBtn; - var purgeBtn; - var tid; + const DeletePosts = {}; + let modal; + let deleteBtn; + let purgeBtn; + let tid; DeletePosts.init = function () { tid = ajaxify.data.tid; diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js index e3ae6d82f1..fe08787232 100644 --- a/public/src/client/topic/events.js +++ b/public/src/client/topic/events.js @@ -12,9 +12,9 @@ define('forum/topic/events', [ 'benchpress', 'hooks', ], function (postTools, threadTools, posts, images, components, translator, Benchpress, hooks) { - var Events = {}; + const Events = {}; - var events = { + const events = { 'event:user_status_change': onUserStatusChange, 'event:voted': updatePostVotesAndUserReputation, 'event:bookmarked': updateBookmarkCount, @@ -50,7 +50,7 @@ define('forum/topic/events', [ Events.init = function () { Events.removeListeners(); - for (var eventName in events) { + for (const eventName in events) { if (events.hasOwnProperty(eventName)) { socket.on(eventName, events[eventName]); } @@ -58,7 +58,7 @@ define('forum/topic/events', [ }; Events.removeListeners = function () { - for (var eventName in events) { + for (const eventName in events) { if (events.hasOwnProperty(eventName)) { socket.removeListener(eventName, events[eventName]); } @@ -70,10 +70,10 @@ define('forum/topic/events', [ } function updatePostVotesAndUserReputation(data) { - var votes = $('[data-pid="' + data.post.pid + '"] [component="post/vote-count"]').filter(function (index, el) { + const votes = $('[data-pid="' + data.post.pid + '"] [component="post/vote-count"]').filter(function (index, el) { return parseInt($(el).closest('[data-pid]').attr('data-pid'), 10) === parseInt(data.post.pid, 10); }); - var reputationElements = $('.reputation[data-uid="' + data.post.uid + '"]'); + const reputationElements = $('.reputation[data-uid="' + data.post.uid + '"]'); votes.html(data.post.votes).attr('data-votes', data.post.votes); reputationElements.html(data.user.reputation).attr('data-reputation', data.user.reputation); } @@ -104,16 +104,16 @@ define('forum/topic/events', [ if (!data || !data.post || parseInt(data.post.tid, 10) !== parseInt(ajaxify.data.tid, 10)) { return; } - var editedPostEl = components.get('post/content', data.post.pid).filter(function (index, el) { + const editedPostEl = components.get('post/content', data.post.pid).filter(function (index, el) { return parseInt($(el).closest('[data-pid]').attr('data-pid'), 10) === parseInt(data.post.pid, 10); }); - var editorEl = $('[data-pid="' + data.post.pid + '"] [component="post/editor"]').filter(function (index, el) { + const editorEl = $('[data-pid="' + data.post.pid + '"] [component="post/editor"]').filter(function (index, el) { return parseInt($(el).closest('[data-pid]').attr('data-pid'), 10) === parseInt(data.post.pid, 10); }); - var topicTitle = components.get('topic/title'); - var navbarTitle = components.get('navbar/title').find('span'); - var breadCrumb = components.get('breadcrumb/current'); + const topicTitle = components.get('topic/title'); + const navbarTitle = components.get('navbar/title').find('span'); + const breadCrumb = components.get('breadcrumb/current'); if (data.topic.rescheduled) { return ajaxify.go('topic/' + data.topic.slug, null, true); @@ -121,7 +121,7 @@ define('forum/topic/events', [ if (topicTitle.length && data.topic.title && data.topic.renamed) { ajaxify.data.title = data.topic.title; - var newUrl = 'topic/' + data.topic.slug + (window.location.search ? window.location.search : ''); + const newUrl = 'topic/' + data.topic.slug + (window.location.search ? window.location.search : ''); history.replaceState({ url: newUrl }, null, window.location.protocol + '//' + window.location.host + config.relative_path + '/' + newUrl); topicTitle.fadeOut(250, function () { @@ -143,7 +143,7 @@ define('forum/topic/events', [ posts.addBlockquoteEllipses(editedPostEl.parent()); editedPostEl.fadeIn(250); - var editData = { + const editData = { editor: data.editor, editedISO: utils.toISOString(data.post.edited), }; @@ -160,7 +160,7 @@ define('forum/topic/events', [ if (data.topic.tags && tagsUpdated(data.topic.tags)) { Benchpress.render('partials/topic/tags', { tags: data.topic.tags }).then(function (html) { - var tags = $('.tags'); + const tags = $('.tags'); tags.fadeOut(250, function () { tags.html(html).fadeIn(250); @@ -176,7 +176,7 @@ define('forum/topic/events', [ return true; } - for (var i = 0; i < tags.length; i += 1) { + for (let i = 0; i < tags.length; i += 1) { if (!$('.tags .tag-item[data-tag="' + tags[i].value + '"]').length) { return true; } @@ -200,14 +200,14 @@ define('forum/topic/events', [ } function togglePostDeleteState(data) { - var postEl = components.get('post', 'pid', data.pid); + const postEl = components.get('post', 'pid', data.pid); if (!postEl.length) { return; } postEl.toggleClass('deleted'); - var isDeleted = postEl.hasClass('deleted'); + const isDeleted = postEl.hasClass('deleted'); postTools.toggle(data.pid, isDeleted); if (!ajaxify.data.privileges.isAdminOrMod && parseInt(data.uid, 10) !== parseInt(app.user.uid, 10)) { @@ -221,7 +221,7 @@ define('forum/topic/events', [ } function togglePostBookmark(data) { - var el = $('[data-pid="' + data.post.pid + '"] [component="post/bookmark"]').filter(function (index, el) { + const el = $('[data-pid="' + data.post.pid + '"] [component="post/bookmark"]').filter(function (index, el) { return parseInt($(el).closest('[data-pid]').attr('data-pid'), 10) === parseInt(data.post.pid, 10); }); if (!el.length) { @@ -235,7 +235,7 @@ define('forum/topic/events', [ } function togglePostVote(data) { - var post = $('[data-pid="' + data.post.pid + '"]'); + const post = $('[data-pid="' + data.post.pid + '"]'); post.find('[component="post/upvote"]').filter(function (index, el) { return parseInt($(el).closest('[data-pid]').attr('data-pid'), 10) === parseInt(data.post.pid, 10); }).toggleClass('upvoted', data.upvote); @@ -245,7 +245,7 @@ define('forum/topic/events', [ } function onNewNotification(data) { - var tid = ajaxify.data.tid; + const tid = ajaxify.data.tid; if (data && data.tid && parseInt(data.tid, 10) === parseInt(tid, 10)) { socket.emit('topics.markTopicNotificationsRead', [tid]); } diff --git a/public/src/client/topic/fork.js b/public/src/client/topic/fork.js index 3b540e58e7..ba4e220d2c 100644 --- a/public/src/client/topic/fork.js +++ b/public/src/client/topic/fork.js @@ -2,10 +2,10 @@ define('forum/topic/fork', ['components', 'postSelect'], function (components, postSelect) { - var Fork = {}; - var forkModal; - var forkCommit; - var fromTid; + const Fork = {}; + let forkModal; + let forkCommit; + let fromTid; Fork.init = function () { fromTid = ajaxify.data.tid; diff --git a/public/src/client/topic/images.js b/public/src/client/topic/images.js index c1dc5866db..a04b22a9e9 100644 --- a/public/src/client/topic/images.js +++ b/public/src/client/topic/images.js @@ -2,14 +2,14 @@ define('forum/topic/images', [], function () { - var Images = {}; + const Images = {}; Images.wrapImagesInLinks = function (posts) { posts.find('[component="post/content"] img:not(.emoji)').each(function () { - var $this = $(this); - var src = $this.attr('src') || ''; - var alt = $this.attr('alt') || ''; - var suffixRegex = /-resized(\.[\w]+)?$/; + const $this = $(this); + let src = $this.attr('src') || ''; + const alt = $this.attr('alt') || ''; + const suffixRegex = /-resized(\.[\w]+)?$/; if (src === 'about:blank') { return; @@ -18,9 +18,9 @@ define('forum/topic/images', [], function () { if (utils.isRelativeUrl(src) && suffixRegex.test(src)) { src = src.replace(suffixRegex, '$1'); } - var srcExt = src.split('.').slice(1).pop(); - var altFilename = alt.split('/').pop(); - var altExt = altFilename.split('.').slice(1).pop(); + const srcExt = src.split('.').slice(1).pop(); + const altFilename = alt.split('/').pop(); + const altExt = altFilename.split('.').slice(1).pop(); if (!$this.parent().is('a')) { $this.wrap(' 1) { message = '[[topic:topic_move_multiple_success, ' + selectedCategory.name + ']]'; } else if (!Move.tids) { message = '[[topic:topic_move_all_success, ' + selectedCategory.name + ']]'; } - var data = { + const data = { tids: Move.tids ? Move.tids.slice() : null, cid: selectedCategory.cid, currentCid: Move.currentCid, diff --git a/public/src/client/topic/postTools.js b/public/src/client/topic/postTools.js index 793153325c..8dab0b0874 100644 --- a/public/src/client/topic/postTools.js +++ b/public/src/client/topic/postTools.js @@ -11,9 +11,9 @@ define('forum/topic/postTools', [ 'bootbox', 'hooks', ], function (share, navigator, components, translator, votes, api, bootbox, hooks) { - var PostTools = {}; + const PostTools = {}; - var staleReplyAnyway = false; + let staleReplyAnyway = false; PostTools.init = function (tid) { staleReplyAnyway = false; @@ -31,14 +31,14 @@ define('forum/topic/postTools', [ function renderMenu() { $('[component="topic"]').on('show.bs.dropdown', '.moderator-tools', function () { - var $this = $(this); - var dropdownMenu = $this.find('.dropdown-menu'); + const $this = $(this); + const dropdownMenu = $this.find('.dropdown-menu'); if (dropdownMenu.html()) { return; } - var postEl = $this.parents('[data-pid]'); - var pid = postEl.attr('data-pid'); - var index = parseInt(postEl.attr('data-index'), 10); + const postEl = $this.parents('[data-pid]'); + const pid = postEl.attr('data-pid'); + const index = parseInt(postEl.attr('data-index'), 10); socket.emit('posts.loadPostTools', { pid: pid, cid: ajaxify.data.cid }, function (err, data) { if (err) { @@ -58,7 +58,7 @@ define('forum/topic/postTools', [ } PostTools.toggle = function (pid, isDeleted) { - var postEl = components.get('post', 'pid', pid); + const postEl = components.get('post', 'pid', pid); postEl.find('[component="post/quote"], [component="post/bookmark"], [component="post/reply"], [component="post/flag"], [component="user/chat"]') .toggleClass('hidden', isDeleted); @@ -75,14 +75,16 @@ define('forum/topic/postTools', [ }; PostTools.updatePostCount = function (postCount) { - var postCountEl = components.get('topic/post-count'); + const postCountEl = components.get('topic/post-count'); postCountEl.html(postCount).attr('title', postCount); utils.makeNumbersHumanReadable(postCountEl); navigator.setCount(postCount); }; function addPostHandlers(tid) { - var postContainer = components.get('topic'); + const postContainer = components.get('topic'); + + handleSelectionTooltip(); postContainer.on('click', '[component="post/quote"]', function () { onQuoteClicked($(this), tid); @@ -123,7 +125,7 @@ define('forum/topic/postTools', [ }); postContainer.on('click', '[component="post/flag"]', function () { - var pid = getData($(this), 'data-pid'); + const pid = getData($(this), 'data-pid'); require(['flags'], function (flags) { flags.showFlagModal({ type: 'post', @@ -133,7 +135,7 @@ define('forum/topic/postTools', [ }); postContainer.on('click', '[component="post/flagUser"]', function () { - var uid = getData($(this), 'data-uid'); + const uid = getData($(this), 'data-uid'); require(['flags'], function (flags) { flags.showFlagModal({ type: 'user', @@ -143,17 +145,17 @@ define('forum/topic/postTools', [ }); postContainer.on('click', '[component="post/flagResolve"]', function () { - var flagId = $(this).attr('data-flagId'); + const flagId = $(this).attr('data-flagId'); require(['flags'], function (flags) { flags.resolve(flagId); }); }); postContainer.on('click', '[component="post/edit"]', function () { - var btn = $(this); + const btn = $(this); - var timestamp = parseInt(getData(btn, 'data-timestamp'), 10); - var postEditDuration = parseInt(ajaxify.data.postEditDuration, 10); + const timestamp = parseInt(getData(btn, 'data-timestamp'), 10); + const postEditDuration = parseInt(ajaxify.data.postEditDuration, 10); if (checkDuration(postEditDuration, timestamp, 'post-edit-duration-expired')) { hooks.fire('action:composer.post.edit', { @@ -164,7 +166,7 @@ define('forum/topic/postTools', [ if (config.enablePostHistory && ajaxify.data.privileges['posts:history']) { postContainer.on('click', '[component="post/view-history"], [component="post/edit-indicator"]', function () { - var btn = $(this); + const btn = $(this); require(['forum/topic/diffs'], function (diffs) { diffs.open(getData(btn, 'data-pid')); }); @@ -172,9 +174,9 @@ define('forum/topic/postTools', [ } postContainer.on('click', '[component="post/delete"]', function () { - var btn = $(this); - var timestamp = parseInt(getData(btn, 'data-timestamp'), 10); - var postDeleteDuration = parseInt(ajaxify.data.postDeleteDuration, 10); + const btn = $(this); + const timestamp = parseInt(getData(btn, 'data-timestamp'), 10); + const postDeleteDuration = parseInt(ajaxify.data.postDeleteDuration, 10); if (checkDuration(postDeleteDuration, timestamp, 'post-delete-duration-expired')) { togglePostDelete($(this)); } @@ -182,11 +184,11 @@ define('forum/topic/postTools', [ function checkDuration(duration, postTimestamp, languageKey) { if (!ajaxify.data.privileges.isAdminOrMod && duration && Date.now() - postTimestamp > duration * 1000) { - var numDays = Math.floor(duration / 86400); - var numHours = Math.floor((duration % 86400) / 3600); - var numMinutes = Math.floor(((duration % 86400) % 3600) / 60); - var numSeconds = ((duration % 86400) % 3600) % 60; - var msg = '[[error:' + languageKey + ', ' + duration + ']]'; + const numDays = Math.floor(duration / 86400); + const numHours = Math.floor((duration % 86400) / 3600); + const numMinutes = Math.floor(((duration % 86400) % 3600) / 60); + const numSeconds = ((duration % 86400) % 3600) % 60; + let msg = '[[error:' + languageKey + ', ' + duration + ']]'; if (numDays) { if (numHours) { msg = '[[error:' + languageKey + '-days-hours, ' + numDays + ', ' + numHours + ']]'; @@ -221,21 +223,21 @@ define('forum/topic/postTools', [ }); postContainer.on('click', '[component="post/move"]', function () { - var btn = $(this); + const btn = $(this); require(['forum/topic/move-post'], function (movePost) { movePost.init(btn.parents('[data-pid]')); }); }); postContainer.on('click', '[component="post/change-owner"]', function () { - var btn = $(this); + const btn = $(this); require(['forum/topic/change-owner'], function (changeOwner) { changeOwner.init(btn.parents('[data-pid]')); }); }); postContainer.on('click', '[component="post/ban-ip"]', function () { - var ip = $(this).attr('data-ip'); + const ip = $(this).attr('data-ip'); socket.emit('blacklist.addRule', ip, function (err) { if (err) { return app.alertError(err.message); @@ -250,16 +252,16 @@ define('forum/topic/postTools', [ } function onReplyClicked(button, tid) { - var selectedNode = getSelectedNode(); + const selectedNode = getSelectedNode(); showStaleWarning(function () { - var username = getUserSlug(button); + let username = getUserSlug(button); if (getData(button, 'data-uid') === '0' || !getData(button, 'data-userslug')) { username = ''; } - var toPid = button.is('[component="post/reply"]') ? getData(button, 'data-pid') : null; - var isQuoteToPid = !toPid || !selectedNode.pid || toPid === selectedNode.pid; + const toPid = button.is('[component="post/reply"]') ? getData(button, 'data-pid') : null; + const isQuoteToPid = !toPid || !selectedNode.pid || toPid === selectedNode.pid; if (selectedNode.text && isQuoteToPid) { username = username || selectedNode.username; @@ -283,11 +285,11 @@ define('forum/topic/postTools', [ } function onQuoteClicked(button, tid) { - var selectedNode = getSelectedNode(); + const selectedNode = getSelectedNode(); showStaleWarning(function () { - var username = getUserSlug(button); - var toPid = getData(button, 'data-pid'); + const username = getUserSlug(button); + const toPid = getData(button, 'data-pid'); function quote(text) { hooks.fire('action:composer.addQuote', { @@ -313,12 +315,12 @@ define('forum/topic/postTools', [ } function getSelectedNode() { - var selectedText = ''; - var selectedPid; - var username = ''; - var selection = window.getSelection ? window.getSelection() : document.selection.createRange(); - var postContents = $('[component="post"] [component="post/content"]'); - var content; + let selectedText = ''; + let selectedPid; + let username = ''; + const selection = window.getSelection ? window.getSelection() : document.selection.createRange(); + const postContents = $('[component="post"] [component="post/content"]'); + let content; postContents.each(function (index, el) { if (selection && selection.containsNode && el && selection.containsNode(el, true)) { content = el; @@ -326,9 +328,9 @@ define('forum/topic/postTools', [ }); if (content) { - var bounds = document.createRange(); + const bounds = document.createRange(); bounds.selectNodeContents(content); - var range = selection.getRangeAt(0).cloneRange(); + const range = selection.getRangeAt(0).cloneRange(); if (range.compareBoundaryPoints(Range.START_TO_START, bounds) < 0) { range.setStart(bounds.startContainer, bounds.startOffset); } @@ -337,7 +339,7 @@ define('forum/topic/postTools', [ } bounds.detach(); selectedText = range.toString(); - var postEl = $(content).parents('[component="post"]'); + const postEl = $(content).parents('[component="post"]'); selectedPid = postEl.attr('data-pid'); username = getUserSlug($(content)); range.detach(); @@ -346,13 +348,13 @@ define('forum/topic/postTools', [ } function bookmarkPost(button, pid) { - var method = button.attr('data-bookmarked') === 'false' ? 'put' : 'del'; + const method = button.attr('data-bookmarked') === 'false' ? 'put' : 'del'; api[method](`/posts/${pid}/bookmark`, undefined, function (err) { if (err) { return app.alertError(err); } - var type = method === 'put' ? 'bookmark' : 'unbookmark'; + const type = method === 'put' ? 'bookmark' : 'unbookmark'; hooks.fire(`action:post.${type}`, { pid: pid }); }); return false; @@ -363,8 +365,8 @@ define('forum/topic/postTools', [ } function getUserSlug(button) { - var slug = ''; - var post = button.parents('[data-pid]'); + let slug = ''; + const post = button.parents('[data-pid]'); if (button.attr('component') === 'topic/reply') { return slug; @@ -388,9 +390,9 @@ define('forum/topic/postTools', [ } function togglePostDelete(button) { - var pid = getData(button, 'data-pid'); - var postEl = components.get('post', 'pid', pid); - var action = !postEl.hasClass('deleted') ? 'delete' : 'restore'; + const pid = getData(button, 'data-pid'); + const postEl = components.get('post', 'pid', pid); + const action = !postEl.hasClass('deleted') ? 'delete' : 'restore'; postAction(action, pid); } @@ -417,7 +419,7 @@ define('forum/topic/postTools', [ } function openChat(button) { - var post = button.parents('[data-pid]'); + const post = button.parents('[data-pid]'); app.newChat(post.attr('data-uid')); button.parents('.btn-group').find('.dropdown-toggle').click(); @@ -425,12 +427,12 @@ define('forum/topic/postTools', [ } function showStaleWarning(callback) { - var staleThreshold = Math.min(Date.now() - (1000 * 60 * 60 * 24 * ajaxify.data.topicStaleDays), 8640000000000000); + const staleThreshold = Math.min(Date.now() - (1000 * 60 * 60 * 24 * ajaxify.data.topicStaleDays), 8640000000000000); if (staleReplyAnyway || ajaxify.data.lastposttime >= staleThreshold) { return callback(); } - var warning = bootbox.dialog({ + const warning = bootbox.dialog({ title: '[[topic:stale.title]]', message: '[[topic:stale.warning]]', buttons: { @@ -461,5 +463,63 @@ define('forum/topic/postTools', [ warning.modal(); } + function handleSelectionTooltip() { + hooks.onPage('action:posts.loaded', delayedTooltip); + + $(document).off('mouseup', delayedTooltip).on('mouseup', delayedTooltip); + $(document).off('selectionchange', selectionChange).on('selectionchange', selectionChange); + } + + let selectionEmpty = true; + function selectionChange() { + selectionEmpty = window.getSelection().toString() === ''; + if (selectionEmpty) { + $('[component="selection/tooltip"]').addClass('hidden'); + } + } + + function delayedTooltip() { + setTimeout(async function () { + let selectionTooltip = $('[component="selection/tooltip"]'); + selectionTooltip.addClass('hidden'); + const selection = window.getSelection(); + if (selection.focusNode && selection.type === 'Range' && ajaxify.data.template.topic && !selectionEmpty) { + const focusNode = $(selection.focusNode); + const anchorNode = $(selection.anchorNode); + const firstPid = anchorNode.parents('[data-pid]').attr('data-pid'); + const lastPid = focusNode.parents('[data-pid]').attr('data-pid'); + if (firstPid !== lastPid || !focusNode.parents('[component="post/content"]').length || !anchorNode.parents('[component="post/content"]').length) { + return; + } + const postEl = focusNode.parents('[data-pid]'); + const selectionRange = selection.getRangeAt(0); + if (!postEl.length || selectionRange.collapsed) { + return; + } + const rects = selectionRange.getClientRects(); + const lastRect = rects[rects.length - 1]; + + if (!selectionTooltip.length) { + selectionTooltip = await app.parseAndTranslate('partials/topic/selection-tooltip', ajaxify.data); + selectionTooltip.addClass('hidden').appendTo('body'); + } + selectionTooltip.off('click').on('click', '[component="selection/tooltip/quote"]', function () { + selectionTooltip.addClass('hidden'); + onQuoteClicked(postEl.find('[component="post/quote"]'), ajaxify.data.tid); + }); + selectionTooltip.removeClass('hidden'); + $(window).one('action:ajaxify.start', function () { + selectionTooltip.remove(); + $(document).off('selectionchange', selectionChange); + }); + const tooltipWidth = selectionTooltip.outerWidth(true); + selectionTooltip.css({ + top: lastRect.bottom + $(window).scrollTop(), + left: tooltipWidth > lastRect.width ? lastRect.left : lastRect.left + lastRect.width - tooltipWidth, + }); + } + }, 0); + } + return PostTools; }); diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 7545e2199e..0914497bb2 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -12,7 +12,7 @@ define('forum/topic/posts', [ 'hooks', 'helpers', ], function (pagination, infinitescroll, postTools, images, navigator, components, translator, hooks, helpers) { - var Posts = { }; + const Posts = { }; Posts.onNewPost = function (data) { if ( @@ -68,8 +68,8 @@ define('forum/topic/posts', [ }; function updatePostCounts(posts) { - for (var i = 0; i < posts.length; i += 1) { - var cmp = components.get('user/postcount', posts[i].uid); + for (let i = 0; i < posts.length; i += 1) { + const cmp = components.get('user/postcount', posts[i].uid); cmp.html(parseInt(cmp.attr('data-postcount'), 10) + 1); utils.addCommasToNumbers(cmp); } @@ -79,7 +79,7 @@ define('forum/topic/posts', [ if (config.topicPostSort === 'newest_to_oldest') { posts[0].index = 1; components.get('post').not('[data-index=0]').each(function () { - var newIndex = parseInt($(this).attr('data-index'), 10) + 1; + const newIndex = parseInt($(this).attr('data-index'), 10) + 1; $(this).attr('data-index', newIndex); }); } @@ -90,18 +90,18 @@ define('forum/topic/posts', [ scrollToPostIfSelf(data.posts[0]); } - var posts = data.posts; + const posts = data.posts; 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; + const direction = config.topicPostSort === 'oldest_to_newest' || config.topicPostSort === 'most_votes' ? 1 : -1; - var isPostVisible = ( + const isPostVisible = ( ajaxify.data.pagination.currentPage === ajaxify.data.pagination.pageCount && direction === 1 ) || (ajaxify.data.pagination.currentPage === 1 && direction === -1); if (isPostVisible) { - var repliesSelector = $('[component="post"]:not([data-index=0]), [component="topic/event"]'); + const repliesSelector = $('[component="post"]:not([data-index=0]), [component="topic/event"]'); createNewPosts(data, repliesSelector, direction, false, scrollToPost); } else if (ajaxify.data.scrollToMyPost && parseInt(posts[0].uid, 10) === parseInt(app.user.uid, 10)) { // https://github.com/NodeBB/NodeBB/issues/5004#issuecomment-247157441 @@ -122,9 +122,9 @@ define('forum/topic/posts', [ } function onNewPostInfiniteScroll(data) { - var direction = (config.topicPostSort === 'oldest_to_newest' || config.topicPostSort === 'most_votes') ? 1 : -1; + const direction = (config.topicPostSort === 'oldest_to_newest' || config.topicPostSort === 'most_votes') ? 1 : -1; - var isPreviousPostAdded = $('[component="post"][data-index="' + (data.posts[0].index - 1) + '"]').length; + const isPreviousPostAdded = $('[component="post"][data-index="' + (data.posts[0].index - 1) + '"]').length; if (!isPreviousPostAdded && (!data.posts[0].selfPost || !ajaxify.data.scrollToMyPost)) { return; } @@ -132,7 +132,7 @@ define('forum/topic/posts', [ if (!isPreviousPostAdded && data.posts[0].selfPost) { return ajaxify.go('post/' + data.posts[0].pid); } - var repliesSelector = $('[component="post"]:not([data-index=0]), [component="topic/event"]'); + const repliesSelector = $('[component="post"]:not([data-index=0]), [component="topic/event"]'); createNewPosts(data, repliesSelector, direction, false, function (html) { if (html) { html.addClass('new'); @@ -154,10 +154,10 @@ define('forum/topic/posts', [ } function removeAlreadyAddedPosts() { - var newPosts = $('[component="post"].new'); + const newPosts = $('[component="post"].new'); if (newPosts.length === data.posts.length) { - var allSamePids = true; + let allSamePids = true; newPosts.each(function (index, el) { if (parseInt($(el).attr('data-pid'), 10) !== parseInt(data.posts[index].pid, 10)) { allSamePids = false; @@ -175,7 +175,7 @@ define('forum/topic/posts', [ if (newPosts.length && data.posts.length > 1) { data.posts.forEach(function (post) { - var p = components.get('post', 'pid', post.pid); + const p = components.get('post', 'pid', post.pid); if (p.hasClass('new')) { p.remove(); } @@ -193,8 +193,8 @@ define('forum/topic/posts', [ return callback(); } - var after; - var before; + let after; + let before; if (direction > 0 && repliesSelector.length) { after = repliesSelector.last(); @@ -206,7 +206,7 @@ define('forum/topic/posts', [ app.parseAndTranslate('topic', 'posts', Object.assign({}, ajaxify.data, data), function (html) { html = html.filter(function () { - var pid = $(this).attr('data-pid'); + const pid = $(this).attr('data-pid'); return pid && $('[component="post"][data-pid="' + pid + '"]').length === 0; }); @@ -214,8 +214,8 @@ define('forum/topic/posts', [ html.insertAfter(after); } else if (before) { // Save document height and position for future reference (about 5 lines down) - var height = $(document).height(); - var scrollTop = $(window).scrollTop(); + const height = $(document).height(); + const scrollTop = $(window).scrollTop(); html.insertBefore(before); @@ -242,16 +242,16 @@ define('forum/topic/posts', [ return; } - var replies = components.get('topic').find(components.get('post').not('[data-index=0]').not('.new')); - var afterEl = direction > 0 ? replies.last() : replies.first(); - var after = parseInt(afterEl.attr('data-index'), 10) || 0; + const replies = components.get('topic').find(components.get('post').not('[data-index=0]').not('.new')); + const afterEl = direction > 0 ? replies.last() : replies.first(); + const after = parseInt(afterEl.attr('data-index'), 10) || 0; - var tid = ajaxify.data.tid; + const tid = ajaxify.data.tid; if (!utils.isNumber(tid) || !utils.isNumber(after) || (direction < 0 && components.get('post', 'index', 0).length)) { return; } - var indicatorEl = $('.loading-indicator'); + const indicatorEl = $('.loading-indicator'); if (!indicatorEl.is(':animated')) { indicatorEl.fadeIn(); } @@ -266,7 +266,7 @@ define('forum/topic/posts', [ indicatorEl.fadeOut(); if (data && data.posts && data.posts.length) { - var repliesSelector = $('[component="post"]:not([data-index=0]):not(.new), [component="topic/event"]'); + const repliesSelector = $('[component="post"]:not([data-index=0]):not(.new), [component="topic/event"]'); createNewPosts(data, repliesSelector, direction, true, done); } else { navigator.update(); @@ -294,15 +294,15 @@ define('forum/topic/posts', [ }; function addNecroPostMessage(callback) { - var necroThreshold = ajaxify.data.necroThreshold * 24 * 60 * 60 * 1000; + const necroThreshold = ajaxify.data.necroThreshold * 24 * 60 * 60 * 1000; if (!necroThreshold || (config.topicPostSort !== 'newest_to_oldest' && config.topicPostSort !== 'oldest_to_newest')) { return callback && callback(); } - var postEls = $('[component="post"]').toArray(); + const postEls = $('[component="post"]').toArray(); Promise.all(postEls.map(function (post) { post = $(post); - var prev = post.prev('[component="post"]'); + const prev = post.prev('[component="post"]'); if (post.is(':has(.necro-post)') || !prev.length) { return; } @@ -310,20 +310,20 @@ define('forum/topic/posts', [ return; } - var diff = post.attr('data-timestamp') - prev.attr('data-timestamp'); + const diff = post.attr('data-timestamp') - prev.attr('data-timestamp'); return new Promise(function (resolve) { if (Math.abs(diff) >= necroThreshold) { - var suffixAgo = $.timeago.settings.strings.suffixAgo; - var prefixAgo = $.timeago.settings.strings.prefixAgo; - var suffixFromNow = $.timeago.settings.strings.suffixFromNow; - var prefixFromNow = $.timeago.settings.strings.prefixFromNow; + const suffixAgo = $.timeago.settings.strings.suffixAgo; + const prefixAgo = $.timeago.settings.strings.prefixAgo; + const suffixFromNow = $.timeago.settings.strings.suffixFromNow; + const prefixFromNow = $.timeago.settings.strings.prefixFromNow; $.timeago.settings.strings.suffixAgo = ''; $.timeago.settings.strings.prefixAgo = ''; $.timeago.settings.strings.suffixFromNow = ''; $.timeago.settings.strings.prefixFromNow = ''; - var translationText = (diff > 0 ? '[[topic:timeago_later,' : '[[topic:timeago_earlier,') + $.timeago.inWords(diff) + ']]'; + const translationText = (diff > 0 ? '[[topic:timeago_later,' : '[[topic:timeago_earlier,') + $.timeago.inWords(diff) + ']]'; $.timeago.settings.strings.suffixAgo = suffixAgo; $.timeago.settings.strings.prefixAgo = prefixAgo; @@ -350,7 +350,7 @@ define('forum/topic/posts', [ } // Replace all requests for uploaded images/files with a login link - var loginEl = document.createElement('a'); + const loginEl = document.createElement('a'); loginEl.className = 'login-required'; loginEl.href = config.relative_path + '/login'; @@ -378,9 +378,9 @@ define('forum/topic/posts', [ }; Posts.showBottomPostBar = function () { - var mainPost = components.get('post', 'index', 0); - var placeHolder = $('.post-bar-placeholder'); - var posts = $('[component="post"]'); + const mainPost = components.get('post', 'index', 0); + const placeHolder = $('.post-bar-placeholder'); + const posts = $('[component="post"]'); if (!!mainPost.length && posts.length > 1 && $('.post-bar').length < 2 && placeHolder.length) { $('.post-bar').clone().insertAfter(placeHolder); placeHolder.remove(); @@ -398,9 +398,9 @@ define('forum/topic/posts', [ } Posts.addBlockquoteEllipses = function (posts) { - var blockquotes = posts.find('[component="post/content"] > blockquote > blockquote'); + const blockquotes = posts.find('[component="post/content"] > blockquote > blockquote'); blockquotes.each(function () { - var $this = $(this); + const $this = $(this); if ($this.find(':hidden:not(br)').length && !$this.find('.toggle').length) { $this.append(''); } diff --git a/public/src/client/topic/replies.js b/public/src/client/topic/replies.js index bc017d25f6..51a4064f0b 100644 --- a/public/src/client/topic/replies.js +++ b/public/src/client/topic/replies.js @@ -2,14 +2,14 @@ define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts', 'hooks'], function (navigator, components, posts, hooks) { - var Replies = {}; + const Replies = {}; Replies.init = function (button) { - var post = button.closest('[data-pid]'); - var pid = post.data('pid'); - var open = button.find('[component="post/replies/open"]'); - var loading = button.find('[component="post/replies/loading"]'); - var close = button.find('[component="post/replies/close"]'); + const post = button.closest('[data-pid]'); + const pid = post.data('pid'); + const open = button.find('[component="post/replies/open"]'); + const loading = button.find('[component="post/replies/loading"]'); + const close = button.find('[component="post/replies/close"]'); if (open.is(':not(.hidden)') && loading.is('.hidden')) { open.addClass('hidden'); @@ -25,7 +25,7 @@ define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts', ' close.removeClass('hidden'); posts.modifyPostsByPrivileges(data); - var tplData = { + const tplData = { posts: data, privileges: ajaxify.data.privileges, 'downvote:disabled': ajaxify.data['downvote:disabled'], @@ -34,7 +34,7 @@ define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts', ' hideReplies: config.hasOwnProperty('showNestedReplies') ? !config.showNestedReplies : true, }; app.parseAndTranslate('topic', 'posts', tplData, function (html) { - var repliesEl = $('
    ', { component: 'post/replies' }).html(html).hide(); + const repliesEl = $('
    ', { component: 'post/replies' }).html(html).hide(); if (button.attr('data-target-component')) { post.find('[component="' + button.attr('data-target-component') + '"]').html(repliesEl); } else { @@ -57,14 +57,14 @@ define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts', ' }; Replies.onNewPost = function (data) { - var post = data.posts[0]; + const post = data.posts[0]; if (!post) { return; } incrementCount(post, 1); data.hideReplies = config.hasOwnProperty('showNestedReplies') ? !config.showNestedReplies : true; app.parseAndTranslate('topic', 'posts', data, function (html) { - var replies = $('[component="post"][data-pid="' + post.toPid + '"] [component="post/replies"]').first(); + const replies = $('[component="post"][data-pid="' + post.toPid + '"] [component="post/replies"]').first(); if (replies.length) { if (config.topicPostSort === 'newest_to_oldest') { replies.prepend(html); @@ -81,11 +81,11 @@ define('forum/topic/replies', ['navigator', 'components', 'forum/topic/posts', ' }; function incrementCount(post, inc) { - var replyCount = $('[component="post"][data-pid="' + post.toPid + '"]').find('[component="post/reply-count"]').first(); - var countEl = replyCount.find('[component="post/reply-count/text"]'); - var avatars = replyCount.find('[component="post/reply-count/avatars"]'); - var count = Math.max(0, parseInt(countEl.attr('data-replies'), 10) + inc); - var timestamp = replyCount.find('.timeago').attr('title', post.timestampISO); + const replyCount = $('[component="post"][data-pid="' + post.toPid + '"]').find('[component="post/reply-count"]').first(); + const countEl = replyCount.find('[component="post/reply-count/text"]'); + const avatars = replyCount.find('[component="post/reply-count/avatars"]'); + const count = Math.max(0, parseInt(countEl.attr('data-replies'), 10) + inc); + const timestamp = replyCount.find('.timeago').attr('title', post.timestampISO); countEl.attr('data-replies', count); replyCount.toggleClass('hidden', count <= 0); diff --git a/public/src/client/topic/threadTools.js b/public/src/client/topic/threadTools.js index 0dcf444c2a..a393b00b1d 100644 --- a/public/src/client/topic/threadTools.js +++ b/public/src/client/topic/threadTools.js @@ -8,8 +8,9 @@ define('forum/topic/threadTools', [ 'forum/topic/posts', 'api', 'hooks', -], function (components, translator, handleBack, posts, api, hooks) { - var ThreadTools = {}; + 'bootbox', +], function (components, translator, handleBack, posts, api, hooks, bootbox) { + const ThreadTools = {}; ThreadTools.init = function (tid, topicContainer) { renderMenu(topicContainer); @@ -85,7 +86,7 @@ define('forum/topic/threadTools', [ }); topicContainer.on('click', '[component="topic/mark-unread-for-all"]', function () { - var btn = $(this); + const btn = $(this); socket.emit('topics.markAsUnreadForAll', [tid], function (err) { if (err) { return app.alertError(err.message); @@ -134,7 +135,7 @@ define('forum/topic/threadTools', [ function changeWatching(type, state = 1) { const method = state ? 'put' : 'del'; api[method](`/topics/${tid}/${type}`, {}, () => { - var message = ''; + let message = ''; if (type === 'follow') { message = state ? '[[topic:following_topic.message]]' : '[[topic:not_following_topic.message]]'; } else if (type === 'ignore') { @@ -172,8 +173,8 @@ define('forum/topic/threadTools', [ function renderMenu(container) { container.on('show.bs.dropdown', '.thread-tools', function () { - var $this = $(this); - var dropdownMenu = $this.find('.dropdown-menu'); + const $this = $(this); + const dropdownMenu = $this.find('.dropdown-menu'); if (dropdownMenu.html()) { return; } @@ -264,17 +265,17 @@ define('forum/topic/threadTools', [ }; ThreadTools.setLockedState = function (data) { - var threadEl = components.get('topic'); + const threadEl = components.get('topic'); if (parseInt(data.tid, 10) !== parseInt(threadEl.attr('data-tid'), 10)) { return; } - var isLocked = data.isLocked && !ajaxify.data.privileges.isAdminOrMod; + const isLocked = data.isLocked && !ajaxify.data.privileges.isAdminOrMod; components.get('topic/lock').toggleClass('hidden', data.isLocked).parent().attr('hidden', data.isLocked ? '' : null); components.get('topic/unlock').toggleClass('hidden', !data.isLocked).parent().attr('hidden', !data.isLocked ? '' : null); - var hideReply = !!((data.isLocked || ajaxify.data.deleted) && !ajaxify.data.privileges.isAdminOrMod); + const hideReply = !!((data.isLocked || ajaxify.data.deleted) && !ajaxify.data.privileges.isAdminOrMod); components.get('topic/reply/container').toggleClass('hidden', hideReply); components.get('topic/reply/locked').toggleClass('hidden', ajaxify.data.privileges.isAdminOrMod || !data.isLocked || ajaxify.data.deleted); @@ -292,7 +293,7 @@ define('forum/topic/threadTools', [ }; ThreadTools.setDeleteState = function (data) { - var threadEl = components.get('topic'); + const threadEl = components.get('topic'); if (parseInt(data.tid, 10) !== parseInt(threadEl.attr('data-tid'), 10)) { return; } @@ -312,7 +313,7 @@ define('forum/topic/threadTools', [ html.find('.timeago').timeago(); }); } - var hideReply = data.isDelete && !ajaxify.data.privileges.isAdminOrMod; + const hideReply = data.isDelete && !ajaxify.data.privileges.isAdminOrMod; components.get('topic/reply/container').toggleClass('hidden', hideReply); components.get('topic/reply/locked').toggleClass('hidden', ajaxify.data.privileges.isAdminOrMod || !ajaxify.data.locked || data.isDelete); @@ -326,14 +327,14 @@ define('forum/topic/threadTools', [ ThreadTools.setPinnedState = function (data) { - var threadEl = components.get('topic'); + const threadEl = components.get('topic'); if (parseInt(data.tid, 10) !== parseInt(threadEl.attr('data-tid'), 10)) { return; } components.get('topic/pin').toggleClass('hidden', data.pinned).parent().attr('hidden', data.pinned ? '' : null); components.get('topic/unpin').toggleClass('hidden', !data.pinned).parent().attr('hidden', !data.pinned ? '' : null); - var icon = $('.topic-header [component="topic/pinned"]'); + const icon = $('.topic-header [component="topic/pinned"]'); icon.toggleClass('hidden', !data.pinned); if (data.pinned) { icon.translateAttr('title', ( @@ -348,7 +349,7 @@ define('forum/topic/threadTools', [ }; function setFollowState(state) { - var titles = { + const titles = { follow: '[[topic:watching]]', unfollow: '[[topic:not-watching]]', ignore: '[[topic:ignoring]]', @@ -359,7 +360,7 @@ define('forum/topic/threadTools', [ .tooltip('fixTitle'); }); - var menu = components.get('topic/following/menu'); + let menu = components.get('topic/following/menu'); menu.toggleClass('hidden', state !== 'follow'); components.get('topic/following/check').toggleClass('fa-check', state === 'follow'); diff --git a/public/src/client/topic/votes.js b/public/src/client/topic/votes.js index 797d27dee4..8c895e6ccb 100644 --- a/public/src/client/topic/votes.js +++ b/public/src/client/topic/votes.js @@ -2,9 +2,9 @@ define('forum/topic/votes', [ - 'components', 'translator', 'benchpress', 'api', 'hooks', -], function (components, translator, Benchpress, api, hooks) { - var Votes = {}; + 'components', 'translator', 'benchpress', 'api', 'hooks', 'bootbox', +], function (components, translator, Benchpress, api, hooks, bootbox) { + const Votes = {}; Votes.addVoteHandler = function () { components.get('topic').on('mouseenter', '[data-pid] [component="post/vote-count"]', loadDataAndCreateTooltip); @@ -13,10 +13,10 @@ define('forum/topic/votes', [ function loadDataAndCreateTooltip(e) { e.stopPropagation(); - var $this = $(this); - var el = $this.parent(); + const $this = $(this); + const el = $this.parent(); el.find('.tooltip').css('display', 'none'); - var pid = el.parents('[data-pid]').attr('data-pid'); + const pid = el.parents('[data-pid]').attr('data-pid'); socket.emit('posts.getUpvoters', [pid], function (err, data) { if (err) { @@ -35,7 +35,7 @@ define('forum/topic/votes', [ el.attr('title', title).tooltip('fixTitle').tooltip('show'); el.parent().find('.tooltip').css('display', ''); } - var usernames = data.usernames + let usernames = data.usernames .filter(name => name !== '[[global:former_user]]'); if (!usernames.length) { return; @@ -54,11 +54,11 @@ define('forum/topic/votes', [ Votes.toggleVote = function (button, className, delta) { - var post = button.closest('[data-pid]'); - var currentState = post.find(className).length; + const post = button.closest('[data-pid]'); + const currentState = post.find(className).length; const method = currentState ? 'del' : 'put'; - var pid = post.attr('data-pid'); + const pid = post.attr('data-pid'); api[method](`/posts/${pid}/vote`, { delta: delta, }, function (err) { @@ -92,7 +92,7 @@ define('forum/topic/votes', [ } app.parseAndTranslate('partials/modals/votes_modal', data, function (html) { - var dialog = bootbox.dialog({ + const dialog = bootbox.dialog({ title: '[[global:voters]]', message: html, className: 'vote-modal', diff --git a/public/src/client/unread.js b/public/src/client/unread.js index 6af50e0472..43983abbac 100644 --- a/public/src/client/unread.js +++ b/public/src/client/unread.js @@ -4,9 +4,9 @@ define('forum/unread', [ 'topicSelect', 'components', 'topicList', 'categorySelector', ], function (topicSelect, components, topicList, categorySelector) { - var Unread = {}; + const Unread = {}; - var watchStates = { + const watchStates = { ignoring: 1, notwatching: 2, watching: 3, @@ -39,7 +39,7 @@ define('forum/unread', [ } function markSelectedRead() { - var tids = topicSelect.getSelectedTids(); + const tids = topicSelect.getSelectedTids(); if (!tids.length) { return; } @@ -54,13 +54,13 @@ define('forum/unread', [ function markCategoryRead(cid) { function getCategoryTids(cid) { - var tids = []; + const tids = []; components.get('category/topic', 'cid', cid).each(function () { tids.push($(this).attr('data-tid')); }); return tids; } - var tids = getCategoryTids(cid); + const tids = getCategoryTids(cid); socket.emit('topics.markCategoryTopicsRead', cid, function (err) { if (err) { @@ -71,7 +71,7 @@ define('forum/unread', [ }); } - var selector = categorySelector.init($('[component="category-selector"]'), { + const selector = categorySelector.init($('[component="category-selector"]'), { onSelect: function (category) { selector.selectCategory(0); if (category.cid === 'all') { @@ -110,7 +110,7 @@ define('forum/unread', [ } function removeTids(tids) { - for (var i = 0; i < tids.length; i += 1) { + for (let i = 0; i < tids.length; i += 1) { components.get('category/topic', 'tid', tids[i]).remove(); } } @@ -126,18 +126,18 @@ define('forum/unread', [ } Unread.initUnreadTopics = function () { - var unreadTopics = app.user.unreadData; + const unreadTopics = app.user.unreadData; function onNewPost(data) { if (data && data.posts && data.posts.length && unreadTopics) { - var post = data.posts[0]; + const post = data.posts[0]; if (parseInt(post.uid, 10) === parseInt(app.user.uid, 10) || (!post.topic.isFollowing && post.categoryWatchState !== watchStates.watching) ) { return; } - var tid = post.topic.tid; + const tid = post.topic.tid; if (!unreadTopics[''][tid] || !unreadTopics.new[tid] || !unreadTopics.watched[tid] || !unreadTopics.unreplied[tid]) { markTopicsUnread(tid); @@ -147,12 +147,12 @@ define('forum/unread', [ increaseUnreadCount(''); unreadTopics[''][tid] = true; } - var isNewTopic = post.isMain && parseInt(post.uid, 10) !== parseInt(app.user.uid, 10); + const isNewTopic = post.isMain && parseInt(post.uid, 10) !== parseInt(app.user.uid, 10); if (isNewTopic && !unreadTopics.new[tid]) { increaseUnreadCount('new'); unreadTopics.new[tid] = true; } - var isUnreplied = parseInt(post.topic.postcount, 10) <= 1; + const isUnreplied = parseInt(post.topic.postcount, 10) <= 1; if (isUnreplied && !unreadTopics.unreplied[tid]) { increaseUnreadCount('unreplied'); unreadTopics.unreplied[tid] = true; @@ -166,8 +166,8 @@ define('forum/unread', [ } function increaseUnreadCount(filter) { - var unreadUrl = '/unread' + (filter ? '?filter=' + filter : ''); - var newCount = 1 + parseInt($('a[href="' + config.relative_path + unreadUrl + '"].navigation-link i').attr('data-content'), 10); + const unreadUrl = '/unread' + (filter ? '?filter=' + filter : ''); + const newCount = 1 + parseInt($('a[href="' + config.relative_path + unreadUrl + '"].navigation-link i').attr('data-content'), 10); updateUnreadTopicCount(unreadUrl, newCount); } diff --git a/public/src/client/users.js b/public/src/client/users.js index 794cf04e90..2b732c7632 100644 --- a/public/src/client/users.js +++ b/public/src/client/users.js @@ -4,14 +4,14 @@ define('forum/users', [ 'translator', 'benchpress', 'api', 'accounts/invite', ], function (translator, Benchpress, api, AccountInvite) { - var Users = {}; + const Users = {}; - var searchResultCount = 0; + let searchResultCount = 0; Users.init = function () { app.enterRoom('user_list'); - var section = utils.params().section ? ('?section=' + utils.params().section) : ''; + const section = utils.params().section ? ('?section=' + utils.params().section) : ''; $('.nav-pills li').removeClass('active').find('a[href="' + window.location.pathname + section + '"]').parent() .addClass('active'); @@ -34,10 +34,10 @@ define('forum/users', [ return; } $('[component="user/search/icon"]').removeClass('fa-search').addClass('fa-spinner fa-spin'); - var username = $('#search-user').val(); - var activeSection = getActiveSection(); + const username = $('#search-user').val(); + const activeSection = getActiveSection(); - var query = { + const query = { section: activeSection, page: 1, }; @@ -48,7 +48,7 @@ define('forum/users', [ query.query = username; query.sortBy = getSortBy(); - var filters = []; + const filters = []; if ($('.search .online-only').is(':checked') || (activeSection === 'online')) { filters.push('online'); } @@ -66,8 +66,8 @@ define('forum/users', [ } function getSortBy() { - var sortBy; - var activeSection = getActiveSection(); + let sortBy; + const activeSection = getActiveSection(); if (activeSection === 'sort-posts') { sortBy = 'postcount'; } else if (activeSection === 'sort-reputation') { @@ -103,7 +103,7 @@ define('forum/users', [ } function onUserStatusChange(data) { - var section = getActiveSection(); + const section = getActiveSection(); if ((section.startsWith('online') || section.startsWith('users'))) { updateUser(data); diff --git a/public/src/installer/install.js b/public/src/installer/install.js index a4ac88a763..48b1d1eba7 100644 --- a/public/src/installer/install.js +++ b/public/src/installer/install.js @@ -25,12 +25,12 @@ $('document').ready(function () { function setupInputs() { $('form').on('focus', '.form-control', function () { - var parent = $(this).parents('.input-row'); + const parent = $(this).parents('.input-row'); $('.input-row.active').removeClass('active'); parent.addClass('active').removeClass('error'); - var help = parent.find('.help-text'); + const help = parent.find('.help-text'); help.html(help.attr('data-help')); }); @@ -56,9 +56,9 @@ $('document').ready(function () { } function activate(type, el) { - var field = el.val(); - var parent = el.parents('.input-row'); - var help = parent.children('.help-text'); + const field = el.val(); + const parent = el.parents('.input-row'); + const help = parent.children('.help-text'); function validateUsername(field) { if (!utils.isUserNameValid(field) || !slugify(field)) { @@ -123,8 +123,8 @@ $('document').ready(function () { function launchForum() { $('#launch .working').removeClass('hide'); $.post('/launch', function () { - var successCount = 0; - var url = $('#launch').attr('data-url'); + let successCount = 0; + const url = $('#launch').attr('data-url'); setInterval(function () { $.get(url + '/admin').done(function () { if (successCount >= 5) { diff --git a/public/src/modules/accounts/delete.js b/public/src/modules/accounts/delete.js index 1b79634de0..cff044cfae 100644 --- a/public/src/modules/accounts/delete.js +++ b/public/src/modules/accounts/delete.js @@ -1,7 +1,7 @@ 'use strict'; -define('accounts/delete', ['api', 'bootbox'], function (api) { - var Delete = {}; +define('accounts/delete', ['api', 'bootbox'], function (api, bootbox) { + const Delete = {}; Delete.account = function (uid, callback) { executeAction( diff --git a/public/src/modules/accounts/invite.js b/public/src/modules/accounts/invite.js index 621c84bcba..937ab6401f 100644 --- a/public/src/modules/accounts/invite.js +++ b/public/src/modules/accounts/invite.js @@ -36,10 +36,10 @@ define('accounts/invite', ['api', 'benchpress', 'bootbox'], function (api, Bench }; Invite.send = function () { - var $emails = $('#invite-modal-emails'); - var $groups = $('#invite-modal-groups'); + const $emails = $('#invite-modal-emails'); + const $groups = $('#invite-modal-groups'); - var data = { + const data = { emails: $emails.val() .split(',') .map(m => m.trim()) diff --git a/public/src/modules/accounts/picture.js b/public/src/modules/accounts/picture.js index 3893f2e27a..7b62c96867 100644 --- a/public/src/modules/accounts/picture.js +++ b/public/src/modules/accounts/picture.js @@ -3,7 +3,8 @@ define('accounts/picture', [ 'pictureCropper', 'api', -], (pictureCropper, api) => { + 'bootbox', +], (pictureCropper, api, bootbox) => { const Picture = {}; Picture.openChangeModal = () => { @@ -15,7 +16,7 @@ define('accounts/picture', [ } // boolean to signify whether an uploaded picture is present in the pictures list - var uploaded = pictures.reduce(function (memo, cur) { + const uploaded = pictures.reduce(function (memo, cur) { return memo || cur.type === 'uploaded'; }, false); @@ -34,7 +35,7 @@ define('accounts/picture', [ 'icon:bgColor': ajaxify.data['icon:bgColor'], }, }, function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ className: 'picture-switcher', title: '[[user:change_picture]]', message: html, @@ -87,7 +88,7 @@ define('accounts/picture', [ } function saveSelection() { - var type = modal.find('.list-group-item.active').attr('data-type'); + const type = modal.find('.list-group-item.active').attr('data-type'); const iconBgColor = document.querySelector('.modal.picture-switcher input[type="radio"]:checked').value || 'transparent'; changeUserPicture(type, iconBgColor).then(() => { @@ -173,7 +174,7 @@ define('accounts/picture', [ uploadModal.modal('show'); uploadModal.find('.upload-btn').on('click', function () { - var url = uploadModal.find('#uploadFromUrl').val(); + const url = uploadModal.find('#uploadFromUrl').val(); if (!url) { return false; } diff --git a/public/src/modules/alerts.js b/public/src/modules/alerts.js index d9cffeb114..5bbd40bf3c 100644 --- a/public/src/modules/alerts.js +++ b/public/src/modules/alerts.js @@ -2,7 +2,7 @@ define('alerts', ['translator', 'components', 'hooks'], function (translator, components, hooks) { - var module = {}; + const module = {}; module.alert = function (params) { params.alert_id = 'alert_button_' + (params.alert_id ? params.alert_id : new Date().getTime()); @@ -10,7 +10,7 @@ define('alerts', ['translator', 'components', 'hooks'], function (translator, co params.message = params.message ? params.message.trim() : ''; params.type = params.type || 'info'; - var alert = $('#' + params.alert_id); + const alert = $('#' + params.alert_id); if (alert.length) { updateAlert(alert, params); } else { @@ -20,7 +20,7 @@ define('alerts', ['translator', 'components', 'hooks'], function (translator, co function createNew(params) { app.parseAndTranslate('alert', params, function (html) { - var alert = $('#' + params.alert_id); + let alert = $('#' + params.alert_id); if (alert.length) { return updateAlert(alert, params); } @@ -98,9 +98,9 @@ define('alerts', ['translator', 'components', 'hooks'], function (translator, co } function startTimeout(alert, params) { - var timeout = params.timeout; + const timeout = params.timeout; - var timeoutId = setTimeout(function () { + const timeoutId = setTimeout(function () { fadeOut(alert); if (typeof params.timeoutfn === 'function') { diff --git a/public/src/modules/autocomplete.js b/public/src/modules/autocomplete.js index 7aa1d7744e..3fb216edb7 100644 --- a/public/src/modules/autocomplete.js +++ b/public/src/modules/autocomplete.js @@ -3,7 +3,7 @@ define('autocomplete', ['api'], function (api) { - var module = {}; + const module = {}; module.user = function (input, params, onselect) { if (typeof params === 'function') { @@ -29,8 +29,8 @@ define('autocomplete', ['api'], function (api) { } if (result && result.users) { - var names = result.users.map(function (user) { - var username = $('
    ').html(user.username).text(); + const names = result.users.map(function (user) { + const username = $('
    ').html(user.username).text(); return user && { label: username, value: username, @@ -75,7 +75,7 @@ define('autocomplete', ['api'], function (api) { return app.alertError(err.message); } if (results && results.length) { - var names = results.map(function (group) { + const names = results.map(function (group) { return group && { label: group.name, value: group.name, @@ -121,7 +121,7 @@ define('autocomplete', ['api'], function (api) { function handleOnSelect(input, onselect, event, ui) { onselect = onselect || function () { }; - var e = jQuery.Event('keypress'); + const e = jQuery.Event('keypress'); e.which = 13; e.keyCode = 13; setTimeout(function () { diff --git a/public/src/modules/categoryFilter.js b/public/src/modules/categoryFilter.js index 25b9a80a96..b1593a5dec 100644 --- a/public/src/modules/categoryFilter.js +++ b/public/src/modules/categoryFilter.js @@ -1,7 +1,7 @@ 'use strict'; define('categoryFilter', ['categorySearch', 'api', 'hooks'], function (categorySearch, api, hooks) { - var categoryFilter = {}; + const categoryFilter = {}; categoryFilter.init = function (el, options) { if (!el || !el.length) { @@ -15,8 +15,8 @@ define('categoryFilter', ['categorySearch', 'api', 'hooks'], function (categoryS categorySearch.init(el, options); - var selectedCids = []; - var initialCids = []; + let selectedCids = []; + let initialCids = []; if (Array.isArray(options.selectedCids)) { selectedCids = options.selectedCids.map(cid => parseInt(cid, 10)); } else if (Array.isArray(ajaxify.data.selectedCids)) { @@ -25,7 +25,7 @@ define('categoryFilter', ['categorySearch', 'api', 'hooks'], function (categoryS initialCids = selectedCids.slice(); el.on('hidden.bs.dropdown', function () { - var changed = initialCids.length !== selectedCids.length; + let changed = initialCids.length !== selectedCids.length; initialCids.forEach(function (cid, index) { if (cid !== selectedCids[index]) { changed = true; @@ -39,8 +39,8 @@ define('categoryFilter', ['categorySearch', 'api', 'hooks'], function (categoryS return; } if (changed) { - var url = window.location.pathname; - var currentParams = utils.params(); + let url = window.location.pathname; + const currentParams = utils.params(); if (selectedCids.length) { currentParams.cid = selectedCids; url += '?' + decodeURIComponent($.param(currentParams)); @@ -50,14 +50,14 @@ define('categoryFilter', ['categorySearch', 'api', 'hooks'], function (categoryS }); el.on('click', '[component="category/list"] [data-cid]', function () { - var listEl = el.find('[component="category/list"]'); - var categoryEl = $(this); - var link = categoryEl.find('a').attr('href'); + const listEl = el.find('[component="category/list"]'); + const categoryEl = $(this); + const link = categoryEl.find('a').attr('href'); if (link && link !== '#' && link.length) { return; } - var cid = parseInt(categoryEl.attr('data-cid'), 10); - var icon = categoryEl.find('[component="category/select/icon"]'); + const cid = parseInt(categoryEl.attr('data-cid'), 10); + const icon = categoryEl.find('[component="category/select/icon"]'); if (selectedCids.includes(cid)) { selectedCids.splice(selectedCids.indexOf(cid), 1); diff --git a/public/src/modules/categorySearch.js b/public/src/modules/categorySearch.js index cf9a42bad4..f6453da65a 100644 --- a/public/src/modules/categorySearch.js +++ b/public/src/modules/categorySearch.js @@ -1,26 +1,26 @@ 'use strict'; define('categorySearch', function () { - var categorySearch = {}; + const categorySearch = {}; categorySearch.init = function (el, options) { - var categoriesList = null; + let categoriesList = null; options = options || {}; options.privilege = options.privilege || 'topics:read'; options.states = options.states || ['watching', 'notwatching', 'ignoring']; - var localCategories = []; + let localCategories = []; if (Array.isArray(options.localCategories)) { localCategories = options.localCategories.map(c => ({ ...c })); } options.selectedCids = options.selectedCids || ajaxify.data.selectedCids || []; - var searchEl = el.find('[component="category-selector-search"]'); + const searchEl = el.find('[component="category-selector-search"]'); if (!searchEl.length) { return; } - var toggleVisibility = searchEl.parent('[component="category/dropdown"]').length > 0 || + const toggleVisibility = searchEl.parent('[component="category/dropdown"]').length > 0 || searchEl.parent('[component="category-selector"]').length > 0; el.on('show.bs.dropdown', function () { @@ -30,7 +30,7 @@ define('categorySearch', function () { } function doSearch() { - var val = searchEl.find('input').val(); + const val = searchEl.find('input').val(); if (val.length > 1 || (!val && !categoriesList)) { loadList(val, function (categories) { categoriesList = categoriesList || categories; diff --git a/public/src/modules/categorySelector.js b/public/src/modules/categorySelector.js index 0ac9da7229..c0a36931a3 100644 --- a/public/src/modules/categorySelector.js +++ b/public/src/modules/categorySelector.js @@ -3,14 +3,14 @@ define('categorySelector', [ 'categorySearch', 'bootbox', 'hooks', ], function (categorySearch, bootbox, hooks) { - var categorySelector = {}; + const categorySelector = {}; categorySelector.init = function (el, options) { if (!el || !el.length) { return; } options = options || {}; - var onSelect = options.onSelect || function () {}; + const onSelect = options.onSelect || function () {}; options.states = options.states || ['watching', 'notwatching', 'ignoring']; options.template = 'partials/category-selector'; @@ -18,12 +18,12 @@ define('categorySelector', [ categorySearch.init(el, options); - var selector = { + const selector = { el: el, selectedCategory: null, }; el.on('click', '[data-cid]', function () { - var categoryEl = $(this); + const categoryEl = $(this); if (categoryEl.hasClass('disabled')) { return false; } @@ -32,7 +32,7 @@ define('categorySelector', [ }); const defaultSelectHtml = selector.el.find('[component="category-selector-selected"]').html(); selector.selectCategory = function (cid) { - var categoryEl = selector.el.find('[data-cid="' + cid + '"]'); + const categoryEl = selector.el.find('[data-cid="' + cid + '"]'); selector.selectedCategory = { cid: cid, name: categoryEl.attr('data-name'), @@ -62,7 +62,7 @@ define('categorySelector', [ options.onSelect = options.onSelect || function () {}; options.onSubmit = options.onSubmit || function () {}; app.parseAndTranslate('admin/partials/categories/select-category', { message: options.message }, function (html) { - var modal = bootbox.dialog({ + const modal = bootbox.dialog({ title: options.title || '[[modules:composer.select_category]]', message: html, buttons: { @@ -74,7 +74,7 @@ define('categorySelector', [ }, }); - var selector = categorySelector.init(modal.find('[component="category-selector"]'), options); + const selector = categorySelector.init(modal.find('[component="category-selector"]'), options); function submit(ev) { ev.preventDefault(); if (selector.selectedCategory) { diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index ff703a85a9..94e4764ec8 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -6,8 +6,8 @@ define('chat', [ 'translator', 'hooks', ], function (components, taskbar, translator, hooks) { - var module = {}; - var newMessage = false; + const module = {}; + let newMessage = false; module.loadChatsDropdown = function (chatsListEl) { socket.emit('modules.chats.getRecentChats', { @@ -18,12 +18,12 @@ define('chat', [ return app.alertError(err.message); } - var rooms = data.rooms.filter(function (room) { + const rooms = data.rooms.filter(function (room) { return room.teaser; }); translator.toggleTimeagoShorthand(function () { - for (var i = 0; i < rooms.length; i += 1) { + for (let i = 0; i < rooms.length; i += 1) { rooms[i].teaser.timeago = $.timeago(new Date(parseInt(rooms[i].teaser.timestamp, 10))); } translator.toggleTimeagoShorthand(); @@ -35,7 +35,7 @@ define('chat', [ if ($(ev.target).parents('.user-link').length) { return; } - var roomId = $(this).attr('data-roomid'); + const roomId = $(this).attr('data-roomid'); if (!ajaxify.currentPage.match(/^chats\//)) { app.openChat(roomId); } else { @@ -57,7 +57,7 @@ define('chat', [ module.onChatMessageReceived = function (data) { - var isSelf = data.self === 1; + const isSelf = data.self === 1; data.message.self = data.self; newMessage = data.self === 0; @@ -83,9 +83,9 @@ define('chat', [ }; function addMessageToModal(data) { - var modal = module.getModal(data.roomId); - var username = data.message.fromUser.username; - var isSelf = data.self === 1; + const modal = module.getModal(data.roomId); + const username = data.message.fromUser.username; + const isSelf = data.self === 1; require(['forum/chats/messages'], function (ChatsMessages) { // don't add if already added if (!modal.find('[data-mid="' + data.message.messageId + '"]').length) { @@ -113,13 +113,13 @@ define('chat', [ } module.onUserStatusChange = function (data) { - var modal = module.getModal(data.uid); + const modal = module.getModal(data.uid); app.updateUserStatus(modal.find('[component="user/status"]'), data.status); }; module.onRoomRename = function (data) { - var newTitle = $('
    ').html(data.newName).text(); - var modal = module.getModal(data.roomId); + const newTitle = $('
    ').html(data.newName).text(); + const modal = module.getModal(data.roomId); modal.find('[component="chat/room/name"]').text(newTitle); taskbar.update('chat', modal.attr('data-uuid'), { title: newTitle, @@ -144,8 +144,8 @@ define('chat', [ if (module.modalExists(data.roomId)) { return callback(module.getModal(data.roomId)); } - var uuid = utils.generateUUID(); - var dragged = false; + const uuid = utils.generateUUID(); + let dragged = false; chatModal.attr('id', 'chat-modal-' + data.roomId); chatModal.attr('data-roomid', data.roomId); @@ -190,7 +190,7 @@ define('chat', [ }); function gotoChats() { - var text = components.get('chat/input').val(); + const text = components.get('chat/input').val(); $(window).one('action:ajaxify.end', function () { components.get('chat/input').val(text); }); @@ -202,7 +202,7 @@ define('chat', [ chatModal.find('.modal-header').on('dblclick', gotoChats); chatModal.find('button[data-action="maximize"]').on('click', gotoChats); chatModal.find('button[data-action="minimize"]').on('click', function () { - var uuid = chatModal.attr('data-uuid'); + const uuid = chatModal.attr('data-uuid'); module.minimize(uuid); }); @@ -265,7 +265,7 @@ define('chat', [ }; module.close = function (chatModal) { - var uuid = chatModal.attr('data-uuid'); + const uuid = chatModal.attr('data-uuid'); clearInterval(chatModal.attr('intervalId')); chatModal.attr('intervalId', 0); chatModal.remove(); @@ -284,12 +284,12 @@ define('chat', [ // TODO: see taskbar.js:44 module.closeByUUID = function (uuid) { - var chatModal = $('.chat-modal[data-uuid="' + uuid + '"]'); + const chatModal = $('.chat-modal[data-uuid="' + uuid + '"]'); module.close(chatModal); }; module.center = function (chatModal) { - var hideAfter = false; + let hideAfter = false; if (chatModal.hasClass('hide')) { chatModal.removeClass('hide'); hideAfter = true; @@ -305,14 +305,14 @@ define('chat', [ module.load = function (uuid) { require(['forum/chats/messages'], function (ChatsMessages) { - var chatModal = $('.chat-modal[data-uuid="' + uuid + '"]'); + const chatModal = $('.chat-modal[data-uuid="' + uuid + '"]'); chatModal.removeClass('hide'); taskbar.updateActive(uuid); ChatsMessages.scrollToBottom(chatModal.find('.chat-content')); module.focusInput(chatModal); socket.emit('modules.chats.markRead', chatModal.attr('data-roomid')); - var env = utils.findBootstrapEnvironment(); + const env = utils.findBootstrapEnvironment(); if (env === 'xs' || env === 'sm') { module.enableMobileBehaviour(chatModal); } @@ -322,7 +322,7 @@ define('chat', [ module.enableMobileBehaviour = function (modalEl) { app.toggleNavbar(false); modalEl.attr('data-mobile', '1'); - var messagesEl = modalEl.find('.modal-body'); + const messagesEl = modalEl.find('.modal-body'); messagesEl.css('height', module.calculateChatListHeight(modalEl)); function resize() { messagesEl.css('height', module.calculateChatListHeight(modalEl)); @@ -348,7 +348,7 @@ define('chat', [ }; module.minimize = function (uuid) { - var chatModal = $('.chat-modal[data-uuid="' + uuid + '"]'); + const chatModal = $('.chat-modal[data-uuid="' + uuid + '"]'); chatModal.addClass('hide'); taskbar.minimize('chat', uuid); clearInterval(chatModal.attr('intervalId')); diff --git a/public/src/modules/components.js b/public/src/modules/components.js index 618ee81ee8..2ebd952f91 100644 --- a/public/src/modules/components.js +++ b/public/src/modules/components.js @@ -1,7 +1,7 @@ 'use strict'; define('components', function () { - var components = {}; + const components = {}; components.core = { 'topic/teaser': function (tid) { @@ -61,7 +61,7 @@ define('components', function () { }; components.get = function () { - var args = Array.prototype.slice.call(arguments, 1); + const args = Array.prototype.slice.call(arguments, 1); if (components.core[arguments[0]] && args.length) { return components.core[arguments[0]].apply(this, args); diff --git a/public/src/modules/coverPhoto.js b/public/src/modules/coverPhoto.js index 8cae013101..7c1a1e21e6 100644 --- a/public/src/modules/coverPhoto.js +++ b/public/src/modules/coverPhoto.js @@ -4,7 +4,7 @@ define('coverPhoto', [ 'vendor/jquery/draggable-background/backgroundDraggable', ], function () { - var coverPhoto = { + const coverPhoto = { coverEl: null, saveFn: null, }; @@ -37,8 +37,8 @@ define('coverPhoto', [ e.stopPropagation(); e.preventDefault(); - var files = e.originalEvent.dataTransfer.files; - var reader = new FileReader(); + const files = e.originalEvent.dataTransfer.files; + const reader = new FileReader(); if (files.length && files[0].type.match('image.*')) { reader.onload = function (e) { diff --git a/public/src/modules/flags.js b/public/src/modules/flags.js index fb6a171d9a..0e9fa13928 100644 --- a/public/src/modules/flags.js +++ b/public/src/modules/flags.js @@ -2,10 +2,10 @@ define('flags', ['hooks', 'components', 'api'], function (hooks, components, api) { - var Flag = {}; - var flagModal; - var flagCommit; - var flagReason; + const Flag = {}; + let flagModal; + let flagCommit; + let flagReason; Flag.showFlagModal = function (data) { app.parseAndTranslate('partials/modals/flag_modal', data, function (html) { @@ -30,8 +30,8 @@ define('flags', ['hooks', 'components', 'api'], function (hooks, components, api }); flagCommit.on('click', function () { - var selected = $('input[name="flag-reason"]:checked'); - var reason = selected.val(); + const selected = $('input[name="flag-reason"]:checked'); + let reason = selected.val(); if (selected.attr('id') === 'flag-reason-other') { reason = flagReason.val(); } @@ -66,7 +66,7 @@ define('flags', ['hooks', 'components', 'api'], function (hooks, components, api if (!type || !id || !reason) { return; } - var data = { type: type, id: id, reason: reason }; + const data = { type: type, id: id, reason: reason }; api.post('/flags', data, function (err, flagId) { if (err) { return app.alertError(err.message); @@ -75,7 +75,7 @@ define('flags', ['hooks', 'components', 'api'], function (hooks, components, api flagModal.modal('hide'); app.alertSuccess('[[flags:modal-submit-success]]'); if (type === 'post') { - var postEl = components.get('post', 'pid', id); + const postEl = components.get('post', 'pid', id); postEl.find('[component="post/flag"]').addClass('hidden').parent().attr('hidden', ''); postEl.find('[component="post/already-flagged"]').removeClass('hidden').parent().attr('hidden', null); } diff --git a/public/src/modules/groupSearch.js b/public/src/modules/groupSearch.js index 6a650ac2b0..b77e559757 100644 --- a/public/src/modules/groupSearch.js +++ b/public/src/modules/groupSearch.js @@ -1,26 +1,26 @@ 'use strict'; define('groupSearch', function () { - var groupSearch = {}; + const groupSearch = {}; groupSearch.init = function (el) { if (utils.isTouchDevice()) { return; } - var searchEl = el.find('[component="group-selector-search"]'); + const searchEl = el.find('[component="group-selector-search"]'); if (!searchEl.length) { return; } - var toggleVisibility = searchEl.parent('[component="group-selector"]').length > 0; + const toggleVisibility = searchEl.parent('[component="group-selector"]').length > 0; - var groupEls = el.find('[component="group-list"] [data-name]'); + const groupEls = el.find('[component="group-list"] [data-name]'); el.on('show.bs.dropdown', function () { function updateList() { - var val = searchEl.find('input').val().toLowerCase(); - var noMatch = true; + const val = searchEl.find('input').val().toLowerCase(); + let noMatch = true; groupEls.each(function () { - var liEl = $(this); - var isMatch = liEl.attr('data-name').toLowerCase().indexOf(val) !== -1; + const liEl = $(this); + const isMatch = liEl.attr('data-name').toLowerCase().indexOf(val) !== -1; if (noMatch && isMatch) { noMatch = false; } diff --git a/public/src/modules/handleBack.js b/public/src/modules/handleBack.js index e16546b705..2df8baceda 100644 --- a/public/src/modules/handleBack.js +++ b/public/src/modules/handleBack.js @@ -6,8 +6,8 @@ define('handleBack', [ 'navigator', 'forum/pagination', ], function (components, storage, navigator, pagination) { - var handleBack = {}; - var loadTopicsMethod; + const handleBack = {}; + let loadTopicsMethod; handleBack.init = function (_loadTopicsMethod) { loadTopicsMethod = _loadTopicsMethod; @@ -19,8 +19,8 @@ define('handleBack', [ function saveClickedIndex() { $('[component="category"]').on('click', '[component="topic/header"]', function () { - var clickedIndex = $(this).parents('[data-index]').attr('data-index'); - var windowScrollTop = $(window).scrollTop(); + const clickedIndex = $(this).parents('[data-index]').attr('data-index'); + const windowScrollTop = $(window).scrollTop(); $('[component="category/topic"]').each(function (index, el) { if ($(el).offset().top - windowScrollTop > 0) { storage.setItem('category:bookmark', $(el).attr('data-index')); @@ -33,15 +33,15 @@ define('handleBack', [ } function onBackClicked(isMarkedUnread) { - var highlightUnread = isMarkedUnread && ajaxify.data.template.unread; + const highlightUnread = isMarkedUnread && ajaxify.data.template.unread; if ( ajaxify.data.template.category || ajaxify.data.template.recent || ajaxify.data.template.popular || highlightUnread ) { - var bookmarkIndex = storage.getItem('category:bookmark'); - var clickedIndex = storage.getItem('category:bookmark:clicked'); + let bookmarkIndex = storage.getItem('category:bookmark'); + let clickedIndex = storage.getItem('category:bookmark:clicked'); storage.removeItem('category:bookmark'); storage.removeItem('category:bookmark:clicked'); @@ -53,7 +53,7 @@ define('handleBack', [ clickedIndex = Math.max(0, parseInt(clickedIndex, 10) || 0); if (config.usePagination) { - var page = Math.ceil((parseInt(bookmarkIndex, 10) + 1) / config.topicsPerPage); + const page = Math.ceil((parseInt(bookmarkIndex, 10) + 1) / config.topicsPerPage); if (parseInt(page, 10) !== ajaxify.data.pagination.currentPage) { pagination.loadPage(page, function () { handleBack.scrollToTopic(bookmarkIndex, clickedIndex); @@ -76,7 +76,7 @@ define('handleBack', [ } handleBack.highlightTopic = function (topicIndex) { - var highlight = components.get('category/topic', 'index', topicIndex); + const highlight = components.get('category/topic', 'index', topicIndex); if (highlight.length && !highlight.hasClass('highlight')) { highlight.addClass('highlight'); @@ -91,10 +91,10 @@ define('handleBack', [ return; } - var scrollTo = components.get('category/topic', 'index', bookmarkIndex); + const scrollTo = components.get('category/topic', 'index', bookmarkIndex); if (scrollTo.length) { - var offset = storage.getItem('category:bookmark:offset'); + const offset = storage.getItem('category:bookmark:offset'); storage.removeItem('category:bookmark:offset'); $(window).scrollTop(scrollTo.offset().top - offset); handleBack.highlightTopic(clickedIndex); diff --git a/public/src/modules/helpers.js b/public/src/modules/helpers.js index d34266b093..b1778c92b1 100644 --- a/public/src/modules/helpers.js +++ b/public/src/modules/helpers.js @@ -2,7 +2,7 @@ (function (factory) { if (typeof module === 'object' && module.exports) { - var relative_path = require('nconf').get('relative_path'); + const relative_path = require('nconf').get('relative_path'); module.exports = factory(require('../utils'), require('benchpressjs'), relative_path); } else if (typeof define === 'function' && define.amd) { define('helpers', ['benchpress'], function (Benchpress) { @@ -13,7 +13,7 @@ Benchpress.setGlobal('true', true); Benchpress.setGlobal('false', false); - var helpers = { + const helpers = { displayMenuItem, buildMetaTag, buildLinkTag, @@ -41,7 +41,7 @@ } function displayMenuItem(data, index) { - var item = data.navigation[index]; + const item = data.navigation[index]; if (!item) { return false; } @@ -62,9 +62,9 @@ } function buildMetaTag(tag) { - var name = tag.name ? 'name="' + tag.name + '" ' : ''; - var property = tag.property ? 'property="' + tag.property + '" ' : ''; - var content = tag.content ? 'content="' + tag.content.replace(/\n/g, ' ') + '" ' : ''; + const name = tag.name ? 'name="' + tag.name + '" ' : ''; + const property = tag.property ? 'property="' + tag.property + '" ' : ''; + const content = tag.content ? 'content="' + tag.content.replace(/\n/g, ' ') + '" ' : ''; return '\n\t'; } @@ -94,7 +94,7 @@ if (!category) { return ''; } - var style = []; + const style = []; if (category.bgColor) { style.push('background-color: ' + category.bgColor); @@ -115,13 +115,13 @@ } function generateChildrenCategories(category) { - var html = ''; + let html = ''; if (!category || !category.children || !category.children.length) { return html; } category.children.forEach(function (child) { if (child && !child.isSection) { - var link = child.link ? child.link : (relative_path + '/category/' + child.slug); + const link = child.link ? child.link : (relative_path + '/category/' + child.slug); html += '' + '

    [[admin/settings/email:include-unverified-warning]]

    + +
    + +
    +

    [[admin/settings/email:prompt-help]]

    @@ -130,14 +138,14 @@
    - +

    [[admin/settings/email:smtp-transport.username-help]]

    - +
    @@ -146,7 +154,7 @@
    [[admin/settings/email:template]]
    -
    +
    diff --git a/src/views/admin/settings/general.tpl b/src/views/admin/settings/general.tpl index f2ece80c61..1453e047b5 100644 --- a/src/views/admin/settings/general.tpl +++ b/src/views/admin/settings/general.tpl @@ -6,8 +6,8 @@
    - - + + @@ -23,23 +23,23 @@
    - - + +

    [[admin/settings/general:browser-title-help]]

    - - + +

    [[admin/settings/general:title-layout-help]]

    - -
    + +
    -
    -
    +
    +
    @@ -52,7 +52,7 @@
    - +
    @@ -75,7 +75,7 @@
    - +
    @@ -92,7 +92,7 @@
    - +
    @@ -110,7 +110,7 @@
    - +
    @@ -120,11 +120,11 @@
    - +
    - +
    @@ -139,8 +139,8 @@
    [[admin/settings/general:search]]
    - - @@ -150,15 +150,15 @@
    - -
    - + + + - - + +

    [[admin/settings/general:background-color-help]]

    @@ -215,8 +215,8 @@
    [[admin/settings/general:topic-tools]]
    - - + +

    [[admin/settings/general:undo-timeout-help]]

    diff --git a/src/views/admin/settings/group.tpl b/src/views/admin/settings/group.tpl index cbfe08339c..8033448b01 100644 --- a/src/views/admin/settings/group.tpl +++ b/src/views/admin/settings/group.tpl @@ -29,11 +29,11 @@ [[admin/settings/group:allow-multiple-badges-help]]

    - - + + - - + +
    diff --git a/src/views/admin/settings/homepage.tpl b/src/views/admin/settings/homepage.tpl index 310185856b..625a59aa62 100644 --- a/src/views/admin/settings/homepage.tpl +++ b/src/views/admin/settings/homepage.tpl @@ -6,16 +6,16 @@

    - -
    @@ -26,8 +26,8 @@

    - - + +
    diff --git a/src/views/admin/settings/languages.tpl b/src/views/admin/settings/languages.tpl index 46033ef380..5f6bb114b1 100644 --- a/src/views/admin/settings/languages.tpl +++ b/src/views/admin/settings/languages.tpl @@ -9,7 +9,7 @@
    - + + +
    - - + +
    - - + +
    - - + +
    - - + +
    - - + +
    diff --git a/src/views/admin/settings/post.tpl b/src/views/admin/settings/post.tpl index b010065321..8e7029e906 100644 --- a/src/views/admin/settings/post.tpl +++ b/src/views/admin/settings/post.tpl @@ -5,16 +5,16 @@
    - -
    - - @@ -140,8 +140,8 @@
    - - @@ -186,8 +186,8 @@
    - - @@ -254,8 +254,8 @@
    - - + +
    diff --git a/src/views/admin/settings/tags.tpl b/src/views/admin/settings/tags.tpl index 81871bcd7c..ff10590ec4 100644 --- a/src/views/admin/settings/tags.tpl +++ b/src/views/admin/settings/tags.tpl @@ -12,7 +12,7 @@
    - +

    [[admin/settings/tags:system-tags-help]]

    diff --git a/src/views/admin/settings/uploads.tpl b/src/views/admin/settings/uploads.tpl index 2936f6abfb..36edc6ff8a 100644 --- a/src/views/admin/settings/uploads.tpl +++ b/src/views/admin/settings/uploads.tpl @@ -22,7 +22,7 @@
    - +

    [[admin/settings/uploads:private-uploads-extensions-help]]

    @@ -32,7 +32,7 @@
    - +

    [[admin/settings/uploads:resize-image-width-threshold-help]]

    @@ -42,7 +42,7 @@
    - +

    [[admin/settings/uploads:resize-image-width-help]]

    @@ -52,7 +52,7 @@
    - +

    [[admin/settings/uploads:resize-image-quality-help]]

    @@ -60,7 +60,7 @@
    - +

    [[admin/settings/uploads:max-file-size-help]]

    @@ -68,7 +68,7 @@
    - +

    [[admin/settings/uploads:reject-image-width-help]]

    @@ -76,7 +76,7 @@
    - +

    [[admin/settings/uploads:reject-image-height-help]]

    @@ -91,12 +91,12 @@
    - +
    - +

    [[admin/settings/uploads:allowed-file-extensions-help]]

    @@ -104,7 +104,7 @@
    -
    +
    @@ -148,7 +148,7 @@
    - +
    @@ -162,16 +162,16 @@
    - - + +

    [[admin/settings/uploads:max-profile-image-size-help]]

    - - + +

    [[admin/settings/uploads:max-cover-image-size-help]]

    diff --git a/src/views/admin/settings/user.tpl b/src/views/admin/settings/user.tpl index 63308932b6..bc879b9d4c 100644 --- a/src/views/admin/settings/user.tpl +++ b/src/views/admin/settings/user.tpl @@ -12,8 +12,8 @@
    - - @@ -117,8 +117,8 @@
    - - + +
    @@ -133,14 +133,14 @@
    - - + +
    - - + +
    @@ -150,8 +150,8 @@
    - - + +

    [[admin/settings/user:online-cutoff-help]]

    @@ -163,8 +163,8 @@
    - - @@ -175,8 +175,8 @@

    - - @@ -186,8 +186,8 @@

    - - + +

    [[admin/settings/user:registration-queue-auto-approve-time-help]]

    @@ -208,34 +208,34 @@

    [[admin/settings/email:require-email-address-warning]]

    - - + +

    [[admin/settings/user:max-invites-help]]

    - - + +

    [[admin/settings/user:invite-expiration-help]]

    - - + +
    - - + +
    - - + +
    - - @@ -244,12 +244,12 @@
    - - + +
    - - + +
    @@ -260,8 +260,8 @@
    - - + +
    @@ -315,11 +315,12 @@
    - - +
    @@ -339,8 +340,8 @@
    - - diff --git a/src/views/admin/settings/web-crawler.tpl b/src/views/admin/settings/web-crawler.tpl index bc14fc72fd..bf818358e2 100644 --- a/src/views/admin/settings/web-crawler.tpl +++ b/src/views/admin/settings/web-crawler.tpl @@ -29,8 +29,8 @@
    - - + +

    diff --git a/src/views/emails/digest.tpl b/src/views/emails/digest.tpl index 1426807c2e..cb30a3afab 100644 --- a/src/views/emails/digest.tpl +++ b/src/views/emails/digest.tpl @@ -27,7 +27,7 @@ - +
    {notifications.user.icon:text}
    diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index 5b84d66ee6..e022d64639 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -42,8 +42,8 @@
    - - + +
    @@ -58,28 +58,28 @@
    - +
    - +
    - +
    - +
    @@ -98,8 +98,8 @@
    - - @@ -140,7 +140,7 @@
    - +
    {{{ end }}} diff --git a/src/views/modals/crop_picture.tpl b/src/views/modals/crop_picture.tpl index c301436124..181302d756 100644 --- a/src/views/modals/crop_picture.tpl +++ b/src/views/modals/crop_picture.tpl @@ -12,7 +12,7 @@
    - +

    diff --git a/src/views/modals/topic-thumbs.tpl b/src/views/modals/topic-thumbs.tpl index 7c87b3e439..e7ecd24e13 100644 --- a/src/views/modals/topic-thumbs.tpl +++ b/src/views/modals/topic-thumbs.tpl @@ -5,7 +5,7 @@ {{{ each thumbs }}}
    - +

    diff --git a/src/webserver.js b/src/webserver.js index 22343f6036..c246272b85 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -148,15 +148,8 @@ function setupExpressApp(app) { configureBodyParser(app); app.use(cookieParser(nconf.get('secret'))); - const userAgentMiddleware = useragent.express(); - app.use((req, res, next) => { - userAgentMiddleware(req, res, next); - }); - const spiderDetectorMiddleware = detector.middleware(); - app.use((req, res, next) => { - spiderDetectorMiddleware(req, res, next); - }); - + app.use(useragent.express()); + app.use(detector.middleware()); app.use(session({ store: db.sessionStore, secret: nconf.get('secret'), diff --git a/test/controllers-admin.js b/test/controllers-admin.js index 70538e522d..467652d88a 100644 --- a/test/controllers-admin.js +++ b/test/controllers-admin.js @@ -736,7 +736,8 @@ describe('Admin Controllers', () => { }); }); - it('should allow normal user access to admin pages', async () => { + it('should allow normal user access to admin pages', async function () { + this.timeout(50000); function makeRequest(url) { return new Promise((resolve, reject) => { request(url, { jar: userJar, json: true }, (err, res, body) => { diff --git a/test/i18n.js b/test/i18n.js new file mode 100644 index 0000000000..af066098f9 --- /dev/null +++ b/test/i18n.js @@ -0,0 +1,111 @@ +'use strict'; + +// For tests relating to the translator module, check translator.js + +const assert = require('assert'); +const path = require('path'); +const fs = require('fs'); + +const file = require('../src/file'); + +const db = require('./mocks/databasemock'); + +describe('i18n', () => { + let folders; + + before(async () => { + folders = await fs.promises.readdir(path.resolve(__dirname, '../public/language')); + folders = folders.filter(f => f !== 'README.md'); + }); + + it('should contain folders named after the language code', async () => { + const valid = /(?:README.md|^[a-z]{2}(?:-[A-Z]{2})?$|^[a-z]{2}(?:-x-[a-z]+)?$)/; // good luck + + folders.forEach((folder) => { + assert(valid.test(folder)); + }); + }); + + // There has to be a better way to generate tests asynchronously... + it('', async () => { + const sourcePath = path.resolve(__dirname, '../public/language/en-GB'); + const fullPaths = await file.walk(sourcePath); + const sourceFiles = fullPaths.map(path => path.replace(sourcePath, '')); + const sourceStrings = new Map(); + + describe('source language file structure', () => { + it('should only contain valid JSON files', async () => { + try { + fullPaths.forEach((fullPath) => { + const hash = require(fullPath); + sourceStrings.set(fullPath.replace(sourcePath, ''), hash); + }); + } catch (e) { + assert(!e, `Invalid JSON found: ${e.message}`); + } + }); + }); + + folders.forEach((language) => { + describe(`"${language}" file structure`, () => { + let files; + + before(async () => { + const translationPath = path.resolve(__dirname, `../public/language/${language}`); + files = (await file.walk(translationPath)).map(path => path.replace(translationPath, '')); + }); + + it('translations should contain every language file contained in the source language directory', () => { + sourceFiles.forEach((relativePath) => { + assert(files.includes(relativePath), `${relativePath.slice(1)} was found in source files but was not found in language "${language}" (likely not internationalized)`); + }); + }); + + it('should not contain any extraneous files not included in the source language directory', () => { + files.forEach((relativePath) => { + assert(sourceFiles.includes(relativePath), `${relativePath.slice(1)} was found in language "${language}" but there is no source file for it (likely removed from en-GB)`); + }); + }); + }); + + describe(`"${language}" file contents`, () => { + let fullPaths; + const translationPath = path.resolve(__dirname, `../public/language/${language}`); + const strings = new Map(); + + before(async () => { + fullPaths = await file.walk(translationPath); + }); + + it('should contain only valid JSON files', () => { + try { + fullPaths.forEach((fullPath) => { + const hash = require(fullPath); + strings.set(fullPath.replace(translationPath, ''), hash); + }); + } catch (e) { + assert(!e, `Invalid JSON found: ${e.message}`); + } + }); + + it('should contain every translation key contained in its source counterpart', () => { + const sourceArr = Array.from(sourceStrings.keys()); + sourceArr.forEach((namespace) => { + const sourceKeys = Object.keys(sourceStrings.get(namespace)); + const translationKeys = Object.keys(strings.get(namespace)); + + assert(sourceKeys && translationKeys); + sourceKeys.forEach((key) => { + assert(translationKeys.includes(key), `${namespace.slice(1, -5)}:${key} missing in ${language}`); + }); + assert.strictEqual( + sourceKeys.length, + translationKeys.length, + `Extra keys found in namespace ${namespace.slice(1, -5)} for language "${language}"` + ); + }); + }); + }); + }); + }); +}); diff --git a/test/posts.js b/test/posts.js index 20a7661da1..e6fa092536 100644 --- a/test/posts.js +++ b/test/posts.js @@ -1,7 +1,7 @@ 'use strict'; -const assert = require('assert'); +const assert = require('assert'); const async = require('async'); const request = require('request'); const nconf = require('nconf'); diff --git a/test/topics.js b/test/topics.js index de44b53ed0..a50157cc8d 100644 --- a/test/topics.js +++ b/test/topics.js @@ -1,6 +1,7 @@ 'use strict'; const async = require('async'); +const path = require('path'); const assert = require('assert'); const validator = require('validator'); const mockdate = require('mockdate'); @@ -9,6 +10,7 @@ const request = require('request'); const util = require('util'); const db = require('./mocks/databasemock'); +const file = require('../src/file'); const topics = require('../src/topics'); const posts = require('../src/posts'); const categories = require('../src/categories'); @@ -20,7 +22,6 @@ const helpers = require('./helpers'); const socketPosts = require('../src/socket.io/posts'); const socketTopics = require('../src/socket.io/topics'); - const requestType = util.promisify((type, url, opts, cb) => { request[type](url, opts, (err, res, body) => cb(err, { res: res, body: body })); }); @@ -2860,3 +2861,17 @@ describe('Topic\'s', () => { }); }); }); + +describe('Topics\'s', async () => { + let files; + + before(async () => { + files = await file.walk(path.resolve(__dirname, './topics')); + }); + + it('subfolder tests', () => { + files.forEach((filePath) => { + require(filePath); + }); + }); +}); diff --git a/test/topicEvents.js b/test/topics/events.js similarity index 91% rename from test/topicEvents.js rename to test/topics/events.js index 889a73e5d5..8a35400587 100644 --- a/test/topicEvents.js +++ b/test/topics/events.js @@ -2,12 +2,12 @@ const assert = require('assert'); -const db = require('./mocks/databasemock'); +const db = require('../mocks/databasemock'); -const plugins = require('../src/plugins'); -const categories = require('../src/categories'); -const topics = require('../src/topics'); -const user = require('../src/user'); +const plugins = require('../../src/plugins'); +const categories = require('../../src/categories'); +const topics = require('../../src/topics'); +const user = require('../../src/user'); describe('Topic Events', () => { let fooUid; diff --git a/test/topicThumbs.js b/test/topics/thumbs.js similarity index 81% rename from test/topicThumbs.js rename to test/topics/thumbs.js index 024df284e1..417d4c55d8 100644 --- a/test/topicThumbs.js +++ b/test/topics/thumbs.js @@ -4,21 +4,20 @@ const fs = require('fs'); const path = require('path'); const assert = require('assert'); const nconf = require('nconf'); -const request = require('request-promise-native'); -const db = require('./mocks/databasemock'); +const db = require('../mocks/databasemock'); -const meta = require('../src/meta'); -const user = require('../src/user'); -const groups = require('../src/groups'); -const topics = require('../src/topics'); -const posts = require('../src/posts'); -const categories = require('../src/categories'); -const plugins = require('../src/plugins'); -const file = require('../src/file'); -const utils = require('../src/utils'); +const meta = require('../../src/meta'); +const user = require('../../src/user'); +const groups = require('../../src/groups'); +const topics = require('../../src/topics'); +const posts = require('../../src/posts'); +const categories = require('../../src/categories'); +const plugins = require('../../src/plugins'); +const file = require('../../src/file'); +const utils = require('../../src/utils'); -const helpers = require('./helpers'); +const helpers = require('../helpers'); describe('Topic thumbs', () => { let topicObj; @@ -38,8 +37,8 @@ describe('Topic thumbs', () => { const uuid = utils.generateUUID(); function createFiles() { - fs.closeSync(fs.openSync(path.resolve(__dirname, './uploads', thumbPaths[0]), 'w')); - fs.closeSync(fs.openSync(path.resolve(__dirname, './uploads', thumbPaths[1]), 'w')); + fs.closeSync(fs.openSync(path.resolve(__dirname, '../uploads', thumbPaths[0]), 'w')); + fs.closeSync(fs.openSync(path.resolve(__dirname, '../uploads', thumbPaths[1]), 'w')); } before(async () => { @@ -90,10 +89,10 @@ describe('Topic thumbs', () => { describe('.get()', () => { it('should return an array of thumbs', async () => { - require('../src/cache').del(`topic:${topicObj.topicData.tid}:thumbs`); + require('../../src/cache').del(`topic:${topicObj.topicData.tid}:thumbs`); const thumbs = await topics.thumbs.get(topicObj.topicData.tid); assert.deepStrictEqual(thumbs, [{ - id: 1, + id: 2, name: 'test.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[0]}`, }]); @@ -103,7 +102,7 @@ describe('Topic thumbs', () => { const thumbs = await topics.thumbs.get([topicObj.topicData.tid, topicObj.topicData.tid + 1]); assert.deepStrictEqual(thumbs, [ [{ - id: 1, + id: 2, name: 'test.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[0]}`, }], @@ -133,7 +132,7 @@ describe('Topic thumbs', () => { path: relativeThumbPaths[0], }); - const exists = await db.isSortedSetMember(`topic:2:thumbs`, relativeThumbPaths[0]); + const exists = await db.isSortedSetMember(`topic:3:thumbs`, relativeThumbPaths[0]); assert(exists); }); @@ -154,17 +153,17 @@ describe('Topic thumbs', () => { path: relativeThumbPaths[2], }); - const exists = await db.isSortedSetMember(`topic:2:thumbs`, relativeThumbPaths[2]); + const exists = await db.isSortedSetMember(`topic:3:thumbs`, relativeThumbPaths[2]); assert(exists); }); it('should have a score equal to the number of thumbs prior to addition', async () => { - const scores = await db.sortedSetScores('topic:2:thumbs', [relativeThumbPaths[0], relativeThumbPaths[2]]); + const scores = await db.sortedSetScores('topic:3:thumbs', [relativeThumbPaths[0], relativeThumbPaths[2]]); assert.deepStrictEqual(scores, [0, 1]); }); it('should update the relevant topic hash with the number of thumbnails', async () => { - const numThumbs = await topics.getTopicField(2, 'numThumbs'); + const numThumbs = await topics.getTopicField(3, 'numThumbs'); assert.strictEqual(parseInt(numThumbs, 10), 2); }); @@ -174,7 +173,7 @@ describe('Topic thumbs', () => { path: relativeThumbPaths[0], }); - const score = await db.sortedSetScore(`topic:2:thumbs`, relativeThumbPaths[0]); + const score = await db.sortedSetScore(`topic:3:thumbs`, relativeThumbPaths[0]); assert(isFinite(score)); // exists in set assert.strictEqual(score, 2); @@ -187,7 +186,7 @@ describe('Topic thumbs', () => { score: 0, }); - const score = await db.sortedSetScore(`topic:2:thumbs`, relativeThumbPaths[0]); + const score = await db.sortedSetScore(`topic:3:thumbs`, relativeThumbPaths[0]); assert(isFinite(score)); // exists in set assert.strictEqual(score, 0); @@ -207,23 +206,23 @@ describe('Topic thumbs', () => { describe('.migrate()', () => { it('should combine the thumbs uploaded to a UUID zset and combine it with a topic\'s thumb zset', async () => { - await topics.thumbs.migrate(uuid, 2); + await topics.thumbs.migrate(uuid, 3); - const thumbs = await topics.thumbs.get(2); + const thumbs = await topics.thumbs.get(3); assert.strictEqual(thumbs.length, 3); assert.deepStrictEqual(thumbs, [ { - id: 2, + id: 3, name: 'test.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[0]}`, }, { - id: 2, + id: 3, name: 'example.org', url: 'https://example.org', }, { - id: 2, + id: 3, name: 'test2.png', url: `${nconf.get('relative_path')}${nconf.get('upload_url')}${relativeThumbPaths[1]}`, }, @@ -283,7 +282,7 @@ describe('Topic thumbs', () => { }); it('should succeed with a valid tid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/1/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/1/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 200); done(); @@ -291,7 +290,7 @@ describe('Topic thumbs', () => { }); it('should succeed with a uuid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 200); done(); @@ -309,7 +308,7 @@ describe('Topic thumbs', () => { }); await new Promise((resolve) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 200); resolve(); @@ -320,7 +319,7 @@ describe('Topic thumbs', () => { }); it('should fail with a non-existant tid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/3/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/4/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 404); done(); @@ -328,7 +327,7 @@ describe('Topic thumbs', () => { }); it('should fail when garbage is passed in', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/abracadabra/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/abracadabra/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 404); done(); @@ -336,7 +335,7 @@ describe('Topic thumbs', () => { }); it('should fail when calling user cannot edit the tid', (done) => { - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/1/thumbs`, path.join(__dirname, './files/test.png'), {}, fooJar, fooCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/2/thumbs`, path.join(__dirname, '../files/test.png'), {}, fooJar, fooCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 403); done(); @@ -346,7 +345,7 @@ describe('Topic thumbs', () => { it('should fail if thumbnails are not enabled', (done) => { meta.config.allowTopicsThumbnail = 0; - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/test.png'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 503); assert(body && body.status); @@ -358,7 +357,7 @@ describe('Topic thumbs', () => { it('should fail if file is not image', (done) => { meta.config.allowTopicsThumbnail = 1; - helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, './files/503.html'), {}, adminJar, adminCSRF, (err, res, body) => { + helpers.uploadFile(`${nconf.get('url')}/api/v3/topics/${uuid}/thumbs`, path.join(__dirname, '../files/503.html'), {}, adminJar, adminCSRF, (err, res, body) => { assert.ifError(err); assert.strictEqual(res.statusCode, 500); assert(body && body.status); diff --git a/test/translator.js b/test/translator.js index c5479ed7e8..02bc6de1ea 100644 --- a/test/translator.js +++ b/test/translator.js @@ -1,5 +1,6 @@ 'use strict'; +// For tests relating to Transifex configuration, check i18n.js const assert = require('assert'); const shim = require('../public/src/modules/translator'); @@ -34,6 +35,11 @@ describe('Translator shim', () => { const translated = await shim.translate('', 'en-GB'); assert.strictEqual(translated, ''); }); + + it('should not allow path traversal', async () => { + const t = await shim.translate('[[../../../../config:secret]]'); + assert.strictEqual(t, 'secret'); + }); }); });