diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 108c060ea7..4594517869 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -50,7 +50,7 @@ jobs: services: postgres: - image: 'postgres:10-alpine' + image: 'postgres:14-alpine' env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres diff --git a/CHANGELOG.md b/CHANGELOG.md index 50531c9433..37c93c0f8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,23 +1,47 @@ +#### v2.5.8 (2022-11-09) + +##### Chores + +* really fix indents this time (c2024f34) +* fix indents (d50512e7) +* add bootstrap5 to test runner for now (be5d6d29) +* incrementing version number - v2.5.7 (5836bf4a) +* update changelog for v2.5.7 (17e948ab) + +##### New Features + +* new search hooks (b5d38bc6) +* add search data to filter:search.inContent (e3f21562) + +##### Bug Fixes + +* pass csrf_token into calls to /register/abort, #11017 (2f9d8c35) +* check for csrf token on /register/abort, + theme changes for v2.x branches of themes (55a197a7) +* upgrade script to work from 0.x to 2.x (a31ba824) +* #10519, image height in emails (673261ff) +* fallback language strings for #10987 (b9c8c02f) +* #10993, apply autoLocale middleware to guests only (6f673f80) +* check cid as well as template (9227b82e) +* revert breaking change, add back SocketUser.emailConfirm (9ee30fe7) +* in appropriately named language key `email-confirm-email2` (09f3ac65) +* correctly pass dev flag to package installer (7672194c) +* use `--omit=dev` flag for npm instead of `--production` (09cfd0bd) + +##### Refactors + +* use utils.debounce (d264c6ac) + +##### Tests + +* fix tests again (06d15391) +* fix test (c833d3cd) + #### v2.5.7 (2022-10-14) ##### Chores * incrementing version number - v2.5.6 (c7bd7dbf) * update changelog for v2.5.6 (e92238d0) -* incrementing version number - v2.5.5 (3509ed94) -* incrementing version number - v2.5.4 (e83260ca) -* incrementing version number - v2.5.3 (7e922936) -* incrementing version number - v2.5.2 (babcd17e) -* incrementing version number - v2.5.1 (ce3aa950) -* incrementing version number - v2.5.0 (01d276cb) -* incrementing version number - v2.4.5 (dd3e1a28) -* incrementing version number - v2.4.4 (d5525c87) -* incrementing version number - v2.4.3 (9c647c6c) -* incrementing version number - v2.4.2 (3aa7b855) -* incrementing version number - v2.4.1 (60cbd148) -* incrementing version number - v2.4.0 (4834cde3) -* incrementing version number - v2.3.1 (d2425942) -* incrementing version number - v2.3.0 (046ea120) ##### Performance Improvements @@ -29,19 +53,6 @@ * incrementing version number - v2.5.5 (3509ed94) * update changelog for v2.5.5 (e7d0040d) -* incrementing version number - v2.5.4 (e83260ca) -* incrementing version number - v2.5.3 (7e922936) -* incrementing version number - v2.5.2 (babcd17e) -* incrementing version number - v2.5.1 (ce3aa950) -* incrementing version number - v2.5.0 (01d276cb) -* incrementing version number - v2.4.5 (dd3e1a28) -* incrementing version number - v2.4.4 (d5525c87) -* incrementing version number - v2.4.3 (9c647c6c) -* incrementing version number - v2.4.2 (3aa7b855) -* incrementing version number - v2.4.1 (60cbd148) -* incrementing version number - v2.4.0 (4834cde3) -* incrementing version number - v2.3.1 (d2425942) -* incrementing version number - v2.3.0 (046ea120) ##### Bug Fixes @@ -55,18 +66,6 @@ * up plugins (b91ef6dd) * incrementing version number - v2.5.4 (e83260ca) * update changelog for v2.5.4 (aabf073c) -* incrementing version number - v2.5.3 (7e922936) -* incrementing version number - v2.5.2 (babcd17e) -* incrementing version number - v2.5.1 (ce3aa950) -* incrementing version number - v2.5.0 (01d276cb) -* incrementing version number - v2.4.5 (dd3e1a28) -* incrementing version number - v2.4.4 (d5525c87) -* incrementing version number - v2.4.3 (9c647c6c) -* incrementing version number - v2.4.2 (3aa7b855) -* incrementing version number - v2.4.1 (60cbd148) -* incrementing version number - v2.4.0 (4834cde3) -* incrementing version number - v2.3.1 (d2425942) -* incrementing version number - v2.3.0 (046ea120) #### v2.5.4 (2022-10-11) @@ -75,17 +74,6 @@ * 🤔 (7240e8ce) * incrementing version number - v2.5.3 (7e922936) * update changelog for v2.5.3 (fdf240f6) -* incrementing version number - v2.5.2 (babcd17e) -* incrementing version number - v2.5.1 (ce3aa950) -* incrementing version number - v2.5.0 (01d276cb) -* incrementing version number - v2.4.5 (dd3e1a28) -* incrementing version number - v2.4.4 (d5525c87) -* incrementing version number - v2.4.3 (9c647c6c) -* incrementing version number - v2.4.2 (3aa7b855) -* incrementing version number - v2.4.1 (60cbd148) -* incrementing version number - v2.4.0 (4834cde3) -* incrementing version number - v2.3.1 (d2425942) -* incrementing version number - v2.3.0 (046ea120) ##### Continuous Integration diff --git a/install/data/defaults.json b/install/data/defaults.json index 130e72fd5a..e7bf3f65f4 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -25,6 +25,7 @@ "postQueue": 0, "postQueueReputationThreshold": 0, "groupsExemptFromPostQueue": ["administrators", "Global Moderators"], + "groupsExemptFromMaintenanceMode": ["administrators", "Global Moderators"], "minimumPostLength": 8, "maximumPostLength": 32767, "systemTags": "", diff --git a/install/package.json b/install/package.json index 2425804386..bc1aa5d2c4 100644 --- a/install/package.json +++ b/install/package.json @@ -29,14 +29,14 @@ }, "dependencies": { "@adactive/bootstrap-tagsinput": "0.8.2", - "@isaacs/ttlcache": "1.2.0", - "ace-builds": "1.9.5", + "@isaacs/ttlcache": "1.2.1", + "ace-builds": "1.13.1", "archiver": "5.3.1", "async": "3.2.4", - "autoprefixer": "10.4.8", + "autoprefixer": "10.4.13", "bcryptjs": "2.4.3", "benchpressjs": "2.4.3", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "bootbox": "5.5.3", "bootstrap": "3.4.1", "chalk": "4.1.2", @@ -44,22 +44,22 @@ "cli-graph": "3.2.2", "clipboard": "2.0.11", "colors": "1.4.0", - "commander": "9.4.0", - "compare-versions": "4.1.4", + "commander": "9.4.1", + "compare-versions": "5.0.1", "compression": "1.7.4", "connect-flash": "0.1.1", "connect-mongo": "4.6.0", "connect-multiparty": "2.2.0", - "connect-pg-simple": "7.0.0", + "connect-pg-simple": "8.0.0", "connect-redis": "6.1.3", "cookie-parser": "1.4.6", "cron": "2.1.0", - "cropperjs": "1.5.12", + "cropperjs": "1.5.13", "csurf": "1.11.0", "daemon": "1.1.0", "diff": "5.1.0", - "esbuild": "0.15.10", - "express": "4.18.1", + "esbuild": "0.15.15", + "express": "4.18.2", "express-session": "1.17.3", "express-useragent": "1.0.15", "file-loader": "6.2.0", @@ -68,7 +68,7 @@ "helmet": "5.1.1", "html-to-text": "8.2.1", "ipaddr.js": "2.0.1", - "jquery": "3.6.0", + "jquery": "3.6.1", "jquery-deserialize": "2.0.0", "jquery-form": "4.3.0", "jquery-serializeobject": "1.0.0", @@ -79,54 +79,54 @@ "less": "4.1.3", "lodash": "4.17.21", "logrotate-stream": "0.2.8", - "lru-cache": "7.14.0", + "lru-cache": "7.14.1", "material-design-lite": "1.3.0", "mime": "3.0.0", "mkdirp": "1.0.4", - "mongodb": "4.9.0", + "mongodb": "4.12.0", "morgan": "1.10.0", "mousetrap": "1.6.5", "multiparty": "4.2.3", "@nodebb/bootswatch": "3.4.2", "nconf": "0.12.0", - "nodebb-plugin-2factor": "5.0.2", - "nodebb-plugin-composer-default": "9.1.1", + "nodebb-plugin-2factor": "5.1.1", + "nodebb-plugin-composer-default": "9.2.4", "nodebb-plugin-dbsearch": "5.1.5", "nodebb-plugin-emoji": "4.0.6", "nodebb-plugin-emoji-android": "3.0.0", - "nodebb-plugin-markdown": "10.1.0", + "nodebb-plugin-markdown": "10.1.1", "nodebb-plugin-mentions": "3.0.12", "nodebb-plugin-spam-be-gone": "1.0.2", "nodebb-rewards-essentials": "0.2.1", "nodebb-theme-lavender": "6.0.0", - "nodebb-theme-persona": "12.1.10", + "nodebb-theme-persona": "12.1.12", "nodebb-theme-slick": "2.0.2", "nodebb-theme-vanilla": "12.1.19", "nodebb-widget-essentials": "6.0.0", - "nodemailer": "6.7.8", + "nodemailer": "6.8.0", "nprogress": "0.2.0", "passport": "0.6.0", "passport-http-bearer": "1.0.1", "passport-local": "1.0.0", - "pg": "8.7.3", - "pg-cursor": "2.7.3", - "postcss": "8.4.14", + "pg": "8.8.0", + "pg-cursor": "2.7.4", + "postcss": "8.4.19", "postcss-clean": "1.2.0", "progress-webpack-plugin": "1.0.16", "prompt": "1.3.0", - "ioredis": "5.2.2", + "ioredis": "5.2.4", "request": "2.88.2", "request-promise-native": "1.0.9", "rimraf": "3.0.2", "rss": "1.2.2", - "sanitize-html": "2.7.1", - "semver": "7.3.7", + "sanitize-html": "2.7.3", + "semver": "7.3.8", "serve-favicon": "2.5.0", - "sharp": "0.30.7", + "sharp": "0.31.2", "sitemap": "7.1.1", "slideout": "1.0.1", - "socket.io": "4.5.1", - "socket.io-client": "4.5.1", + "socket.io": "4.5.4", + "socket.io-client": "4.5.4", "@socket.io/redis-adapter": "7.2.0", "sortablejs": "1.15.0", "spdx-license-list": "6.6.0", @@ -139,33 +139,36 @@ "toobusy-js": "0.5.1", "uglify-es": "3.3.9", "validator": "13.7.0", - "webpack": "5.74.0", + "webpack": "5.75.0", "webpack-merge": "5.8.0", - "winston": "3.8.1", + "winston": "3.8.2", "xml": "1.0.1", "xregexp": "5.1.1", - "yargs": "17.5.1", + "yargs": "17.6.2", "zxcvbn": "4.4.2" }, "devDependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@commitlint/cli": "17.0.3", - "@commitlint/config-angular": "17.0.3", + "@commitlint/cli": "17.3.0", + "@commitlint/config-angular": "17.3.0", "coveralls": "3.1.1", - "eslint": "8.22.0", - "eslint-config-nodebb": "0.1.1", + "eslint": "8.28.0", + "eslint-config-nodebb": "0.2.1", "eslint-plugin-import": "2.26.0", "grunt": "1.5.3", "grunt-contrib-watch": "1.1.0", - "husky": "8.0.1", - "jsdom": "20.0.0", + "husky": "8.0.2", + "jsdom": "20.0.3", "lint-staged": "13.0.3", - "mocha": "10.0.0", + "mocha": "10.1.0", "mocha-lcov-reporter": "1.3.0", "mockdate": "3.0.5", "nyc": "15.1.0", "smtp-server": "3.11.0" }, + "resolutions": { + "*/jquery": "3.6.1" + }, "bugs": { "url": "https://github.com/NodeBB/NodeBB/issues" }, @@ -189,4 +192,4 @@ "url": "https://github.com/barisusakli" } ] -} \ No newline at end of file +} diff --git a/public/language/ar/admin/settings/advanced.json b/public/language/ar/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/ar/admin/settings/advanced.json +++ b/public/language/ar/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/ar/admin/settings/user.json b/public/language/ar/admin/settings/user.json index 4c6829de8f..56f835492a 100644 --- a/public/language/ar/admin/settings/user.json +++ b/public/language/ar/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "المصادقة", "email-confirm-interval": "لا يمكن للمستخدم إعادة إرسال رسالة تأكيد البريد الالكتروني حتى مرور", - "email-confirm-interval2": "دقائق", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "السماح بتسجيل الدخول باستخدام", "allow-login-with.username-email": "اسم المستخدم أو البريد الالكتروني", "allow-login-with.username": "اسم المستخدم فقط", diff --git a/public/language/bg/admin/settings/advanced.json b/public/language/bg/admin/settings/advanced.json index 9ecc674fab..32caf79de0 100644 --- a/public/language/bg/admin/settings/advanced.json +++ b/public/language/bg/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Когато форумът е в режим на профилактика, всички заявки ще бъдат пренасочвани към статична страница за изчакване, с изключение на администраторите, които ще могат да използват уеб сайта нормално.", "maintenance-mode.status": "Код на състоянието за режима на профилактика", "maintenance-mode.message": "Съобщение за профилактиката", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Изберете групи, които да бъдат изключени от режима на профилактика", "headers": "Заглавни части", "headers.allow-from": "Задайте „ALLOW-FROM“, за да поставите NodeBB в „iFrame“", "headers.csp-frame-ancestors": "Задайте заглавката „Content-Security-Policy frame-ancestors“ за да поставите NodeBB „iFrame“", @@ -19,6 +20,8 @@ "headers.coep-help": "Когато е включено (по подразбиране), стойността на заглавката ще бъде require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Стриктна транспортна сигурност", "hsts.enabled": "Включване на HSTS (препоръчително)", "hsts.maxAge": "Максимална възраст на HSTS", diff --git a/public/language/bg/admin/settings/user.json b/public/language/bg/admin/settings/user.json index af5aa57464..618e3c7361 100644 --- a/public/language/bg/admin/settings/user.json +++ b/public/language/bg/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Удостоверяване", "email-confirm-interval": "Потребителят не може да изпраща повторно е-писмото за потвърждение, преди да са минали", - "email-confirm-interval2": "минути", + "email-confirm-interval2": "минути са изминали", "allow-login-with": "Позволяване на вписването чрез", "allow-login-with.username-email": "Потребителско име или е-поща", "allow-login-with.username": "Само потребителско име", diff --git a/public/language/bn/admin/settings/advanced.json b/public/language/bn/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/bn/admin/settings/advanced.json +++ b/public/language/bn/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/cs/admin/settings/advanced.json b/public/language/cs/admin/settings/advanced.json index 4aad647e91..bc10146c76 100644 --- a/public/language/cs/admin/settings/advanced.json +++ b/public/language/cs/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Je-li fórum v režimu údržby, všechny požadavky budou přesměrovány na statickou stránku. Správci jsou vyloučeni z tohoto přesměrování a budou mít normálně zobrazené stránky.", "maintenance-mode.status": "Stavový kód režimu údržby", "maintenance-mode.message": "Zpráva údržby", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Hlavičky", "headers.allow-from": "Nastavte ALLOW-FROM pro umístění NodeBB do iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Přísné zabezpečení přenosu", "hsts.enabled": "Povolit HSTS (doporučeno)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/cs/admin/settings/user.json b/public/language/cs/admin/settings/user.json index 6e10f3f8c4..da3647a63f 100644 --- a/public/language/cs/admin/settings/user.json +++ b/public/language/cs/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Ověření", "email-confirm-interval": "Uživatel nesmí požádat o znovu zaslání potvrzujícího e-mailu do", - "email-confirm-interval2": "minut uplynulo", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Povolit přihlášení pomocí", "allow-login-with.username-email": "Uživatelské jméno nebo e-mail", "allow-login-with.username": "Pouze uživatelské jméno", diff --git a/public/language/da/admin/settings/advanced.json b/public/language/da/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/da/admin/settings/advanced.json +++ b/public/language/da/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/de/admin/advanced/cache.json b/public/language/de/admin/advanced/cache.json index e5c0e8fdfd..7818db96ec 100644 --- a/public/language/de/admin/advanced/cache.json +++ b/public/language/de/admin/advanced/cache.json @@ -1,8 +1,8 @@ { "post-cache": "Post-Cache", - "group-cache": "Group Cache", - "local-cache": "Local Cache", - "object-cache": "Object Cache", + "group-cache": "Gruppen-Cache", + "local-cache": "Lokaler Cache", + "object-cache": "Objekt-Cache", "percent-full": "%1% Voll", "post-cache-size": "Post-Cache-Größe", "items-in-cache": "Elemente im Cache" diff --git a/public/language/de/admin/menu.json b/public/language/de/admin/menu.json index 07a3c5937b..be0255aeeb 100644 --- a/public/language/de/admin/menu.json +++ b/public/language/de/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Abmelden", "view-forum": "Forum anzeigen", - "search.placeholder": "Search settings", + "search.placeholder": "Nach Einstellungen suchen", "search.no-results": "Keine Ergebnisse...", "search.search-forum": "Suche im Forum nach ", "search.keep-typing": "Gib mehr ein, um die Ergebnisse zu sehen...", diff --git a/public/language/de/admin/settings/advanced.json b/public/language/de/admin/settings/advanced.json index 0ebe167a14..1f75026bc5 100644 --- a/public/language/de/admin/settings/advanced.json +++ b/public/language/de/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Wenn sich das Forum im Wartungsmodus befindet, werden alle Anfragen auf eine statische Warteseite umgeleitet. Administratoren sind von dieser Umleitung ausgenommen und können normal auf die Site zugreifen.", "maintenance-mode.status": "Statuscode für Wartungsmodus", "maintenance-mode.message": "Wartungsnachricht", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "ALLOW-FROM setzen um NodeBB in einem iFrame zu platzieren", "headers.csp-frame-ancestors": "Content-Security-Policy frame-ancestors header setzen, um NodeBB in einem iFrame zu platzieren", @@ -19,6 +20,8 @@ "headers.coep-help": "Wenn aktiviert (Standard), wird der Header auf require-corp gesetzt", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "HSTS Aktivieren (empfohlen)", "hsts.maxAge": "HSTS Maximales Alter", diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json index 1444ca221c..db1e0d1de4 100644 --- a/public/language/de/admin/settings/email.json +++ b/public/language/de/admin/settings/email.json @@ -5,8 +5,8 @@ "from": "Name des Absenders", "from-help": "Der Name des Absenders, welcher in der E-Mail angezeigt werden soll.", - "confirmation-settings": "Confirmation", - "confirmation.expiry": "Hours to keep email confirmation link valid", + "confirmation-settings": "Konfirmation", + "confirmation.expiry": "Stunden, um den E-Mail-Bestätigungslink gültig zu halten", "smtp-transport": "SMTP Konfiguration", "smtp-transport.enabled": "SMTP-Transport aktivieren", diff --git a/public/language/de/admin/settings/post.json b/public/language/de/admin/settings/post.json index 33d1885e40..74e262d7ec 100644 --- a/public/language/de/admin/settings/post.json +++ b/public/language/de/admin/settings/post.json @@ -51,7 +51,7 @@ "signature.disable": "Signaturen deaktivieren", "signature.no-links": "Links in signaturen deaktivieren", "signature.no-images": "Bilder in Signaturen deaktivieren", - "signature.hide-duplicates": "Hide duplicate signatures in topics", + "signature.hide-duplicates": "Doppelte Signaturen in Themen ausblenden", "signature.max-length": "Maximale Signaturlänge", "composer": "Editor Einstellungen", "composer-help": "Die folgenden Einstellungen bestimmen die funktionalität und/oder das Aussehen des Beitragseditors, der Nutzern angezeigt wird, webb sie neue Themen erstellen, oder bereits existierenden Antworten.", diff --git a/public/language/de/admin/settings/reputation.json b/public/language/de/admin/settings/reputation.json index d7b7585c7b..ffb9f2effc 100644 --- a/public/language/de/admin/settings/reputation.json +++ b/public/language/de/admin/settings/reputation.json @@ -24,8 +24,8 @@ "flags.limit-per-target-help": "Wenn ein Beitrag oder ein Benutzer mehrfach markiert wird, wird jede zusätzliche Markierung als "Nachricht" betrachtet und zur ursprünglichen Markierung hinzugezählt. Setzen Sie diese Option auf eine andere Zahl als Null, um die Anzahl der Nachricht, die ein Artikel erhalten kann, zu begrenzen.", "flags.auto-flag-on-downvote-threshold": "Anzahl der Downvotes für Posts mit automatischer Markierung (zum Deaktivieren auf 0 setzen, Standard: 0)", "flags.auto-resolve-on-ban": "Automatisches Beenden aller Tickets eines Benutzers, wenn dieser gesperrt wird", - "flags.action-on-resolve": "Do the following when a flag is resolved", - "flags.action-on-reject": "Do the following when a flag is rejected", - "flags.action.nothing": "Do nothing", - "flags.action.rescind": "Rescind the notification send to moderators/administrators" + "flags.action-on-resolve": "Führe Folgendes aus, wenn eine Flagge aufgelöst wird", + "flags.action-on-reject": "Gehe folgendermaßen vor, wenn eine Flagge abgelehnt wird", + "flags.action.nothing": "Nichts tun", + "flags.action.rescind": "Aufhebung der Benachrichtigung an Moderatoren/Administratoren" } \ 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 e89b47c755..2af71b2cc6 100644 --- a/public/language/de/admin/settings/user.json +++ b/public/language/de/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Authentifizierung", "email-confirm-interval": "Der Benutzer kann für ", - "email-confirm-interval2": " Minuten keine Bestätigungsmail erneut senden.", + "email-confirm-interval2": "Minuten sind verstrichen", "allow-login-with": "Erlaube Login mit", "allow-login-with.username-email": "Benutzername oder E-Mail", "allow-login-with.username": "Nur Benutzername", diff --git a/public/language/de/error.json b/public/language/de/error.json index 6767540d5f..bd3dd4083d 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -205,8 +205,8 @@ "no-connection": "Es scheint als gäbe es ein Problem mit deiner Internetverbindung", "socket-reconnect-failed": "Der Server kann zurzeit nicht erreicht werden. Klicken Sie hier, um es erneut zu versuchen, oder versuchen Sie es später erneut", "plugin-not-whitelisted": "Plugin kann nicht installiert werden – nur Plugins, die vom NodeBB Package Manager in die Whitelist aufgenommen wurden, können über den ACP installiert werden", - "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", - "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", + "plugins-set-in-configuration": "Du darfst den Status der Plugins nicht ändern, da sie zur Laufzeit definiert werden (config.json, Umgebungsvariablen oder Terminalargumente). Bitte ändere stattdessen die Konfiguration.", + "theme-not-set-in-configuration": "Wenn in der Konfiguration aktive Plugins definiert werden, muss bei einem Themenwechsel das neue Thema zur Liste der aktiven Plugins hinzugefügt werden, bevor es im ACP aktualisiert wird.", "topic-event-unrecognized": "Themenereignis „%1“ nicht erkannt", "cant-set-child-as-parent": "Untergeordnete Kategorie kann nicht als übergeordnete Kategorie festgelegt werden", "cant-set-self-as-parent": "Die aktuelle Kategorie kann nicht als übergeordnete Kategorie festgelegt werden", diff --git a/public/language/de/global.json b/public/language/de/global.json index c9f894223a..fa6d78dcdf 100644 --- a/public/language/de/global.json +++ b/public/language/de/global.json @@ -18,7 +18,7 @@ "posting_restriction_info": "Nur registrierte Mitglieder dürfen Beiträge verfassen. Hier klicken zum Anmelden.", "welcome_back": "Willkommen zurück", "you_have_successfully_logged_in": "Du hast dich erfolgreich angemeldet", - "save_changes": "Speichere Änderungen", + "save_changes": "Änderungen speichern", "save": "Speichern", "close": "Schließen", "pagination": "Seitennummerierung", diff --git a/public/language/de/modules.json b/public/language/de/modules.json index b35ecf2a57..f5ba9f93d7 100644 --- a/public/language/de/modules.json +++ b/public/language/de/modules.json @@ -1,5 +1,5 @@ { - "chat.chatting_with": "Chat mit", + "chat.chatting_with": "Chatte mit", "chat.placeholder": "Gebe hier eine Chatnachricht ein, ziehe Bilder per Drag & Drop und drücke die Eingabetaste, um sie zu senden", "chat.scroll-up-alert": "Diese Nachrichten sind möglicherweise veraltet, klicke hier um neuere Nachrichten anzuzeigen.", "chat.send": "Senden", diff --git a/public/language/de/user.json b/public/language/de/user.json index e208e413bf..ae3f62dd99 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -195,5 +195,5 @@ "emailUpdate.optional": "Dieses Feld ist optional. Du bist nicht verpflichtet, deine E-Mail-Adresse anzugeben, doch ohne eine validierte E-Mail-Adresse kannst du dein Konto nicht wiederherstellen oder dich mit deiner E-Mail-Adresse anmelden.", "emailUpdate.required": "Dieses Feld ist erforderlich.", "emailUpdate.change-instructions": "An die eingegebene E-Mail-Adresse wird eine Bestätigungs-E-Mail mit einem eindeutigen Link gesendet. Durch den Zugriff auf diesen Link wird dein Eigentum an der E-Mail-Adresse bestätigt und diese wird in deinem Konto aktiv. Du kannst deine E-Mail-Adresse jederzeit auf deiner Kontoseite aktualisieren.", - "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership." + "emailUpdate.password-challenge": "Bitte gib dein Passwort ein, um dein Konto zu verifizieren." } \ No newline at end of file diff --git a/public/language/el/admin/settings/advanced.json b/public/language/el/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/el/admin/settings/advanced.json +++ b/public/language/el/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/en-GB/admin/settings/advanced.json b/public/language/en-GB/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/en-GB/admin/settings/advanced.json +++ b/public/language/en-GB/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/en-US/admin/settings/advanced.json b/public/language/en-US/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/en-US/admin/settings/advanced.json +++ b/public/language/en-US/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/en-x-pirate/admin/settings/advanced.json b/public/language/en-x-pirate/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/en-x-pirate/admin/settings/advanced.json +++ b/public/language/en-x-pirate/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/es/admin/settings/advanced.json b/public/language/es/admin/settings/advanced.json index d79f6c9a56..4c912b4d14 100644 --- a/public/language/es/admin/settings/advanced.json +++ b/public/language/es/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Cuando este foro están en Modo de Mantenimiento, todas las peticiones serán redirigidas a una página estática de mantenimiento. Los administradores están exentos de esta redirección, y pueden acceder al sitio normalmente.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Mensaje de Mantenimiento", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Cabeceras", "headers.allow-from": "Establecer ALLOW-FROM para poner NodeBB en un iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Seguridad estricta del transporte", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/es/admin/settings/user.json b/public/language/es/admin/settings/user.json index 14c840f44c..60eebe04bf 100644 --- a/public/language/es/admin/settings/user.json +++ b/public/language/es/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticación", "email-confirm-interval": "El usuario no puede re-enviar una confirmación por email hasta", - "email-confirm-interval2": "minutos han pasado", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Permitir login con", "allow-login-with.username-email": "Nombre de usuario o Email", "allow-login-with.username": "Solo Nombre de Usuario", diff --git a/public/language/et/admin/settings/advanced.json b/public/language/et/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/et/admin/settings/advanced.json +++ b/public/language/et/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/fa-IR/admin/settings/advanced.json b/public/language/fa-IR/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/fa-IR/admin/settings/advanced.json +++ b/public/language/fa-IR/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/fi/admin/settings/advanced.json b/public/language/fi/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/fi/admin/settings/advanced.json +++ b/public/language/fi/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/fr/admin/settings/advanced.json b/public/language/fr/admin/settings/advanced.json index a893503aa2..13058af0d3 100644 --- a/public/language/fr/admin/settings/advanced.json +++ b/public/language/fr/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Quand le forum est en mode maintenance, toutes les requêtes sont redirigées vers une page de garde statique. Les administrateurs sont exemptés de cette redirection et peuvent accéder normalement au site. ", "maintenance-mode.status": "Mode maintenance", "maintenance-mode.message": "Message de maintenance", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Sélectionner les groupes qui doivent être exemptés du mode maintenance", "headers": "En-têtes", "headers.allow-from": "Définissez ALLOW-FROM pour afficher NodeBB dans un iFrame", "headers.csp-frame-ancestors": "Définir la politique de sécurité pour pouvoir intégrer des iframes", @@ -19,6 +20,8 @@ "headers.coep-help": "Lorsqu'il est activé (par défaut), définira l'en-tête sur require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Activer HSTS (recommandé)", "hsts.maxAge": "HSTS Age Max", diff --git a/public/language/fr/admin/settings/email.json b/public/language/fr/admin/settings/email.json index a741aa8dbf..42b64a4343 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", "confirmation-settings": "Confirmation", - "confirmation.expiry": "Hours to keep email confirmation link valid", + "confirmation.expiry": "Heures de validité du lien de confirmation par e-mail", "smtp-transport": "Protocole SMTP", "smtp-transport.enabled": "Activer l'envoi via SMTP", diff --git a/public/language/gl/admin/settings/advanced.json b/public/language/gl/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/gl/admin/settings/advanced.json +++ b/public/language/gl/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index 6952a385e1..f84ad38851 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -63,7 +63,7 @@ "create.password": "סיסמה", "create.password-confirm": "אשר סיסמה", - "temp-ban.length": "Length", + "temp-ban.length": "זמן הרחקה", "temp-ban.reason": "סיבה (אופציונאלי)", "temp-ban.hours": "שעות", "temp-ban.days": "ימים", diff --git a/public/language/he/admin/settings/advanced.json b/public/language/he/admin/settings/advanced.json index d506ad2d83..7be6b15566 100644 --- a/public/language/he/admin/settings/advanced.json +++ b/public/language/he/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "כאשר הפורום נמצא במצב תחזוקה, כל הבקשות יופנו לדף אחזקה סטטי. מנהלים לא יגיעו להפניה זו, והם יוכלו לגשת לאתר כרגיל.", "maintenance-mode.status": "קוד מצב תחזוקה", "maintenance-mode.message": "הודעת תחזוקה", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "כותרות", "headers.allow-from": "הגדר ALLOW-FROM למקם NodeBB ב- iFrame", "headers.csp-frame-ancestors": "הגדר את מדיניות האבטחה (Content-Security-Policy) עבור ההטמעה (frame-ancestors) של NodeBB בתוך Iframe", @@ -19,17 +20,19 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", - "hsts.enabled": "Enabled HSTS (recommended)", - "hsts.maxAge": "HSTS Max Age", - "hsts.subdomains": "Include subdomains in HSTS header", + "hsts.enabled": "הפעל HSTS (מומלץ)", + "hsts.maxAge": "גיל כותרת HSTS", + "hsts.subdomains": "כלול תת-דומיינים בכותרת HSTS", "hsts.preload": "Allow preloading of HSTS header", "hsts.help": "If enabled, an HSTS header will be set for this site. You can elect to include subdomains and preloading flags in your header. If in doubt, you can leave these unchecked. More information ", "traffic-management": "ניהול תעבורה", - "traffic.help": "NodeBB uses a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.", - "traffic.enable": "Enable Traffic Management", + "traffic.help": "NodeBB משתמש במודול שדוחה אוטומטית בקשות במצבים עם תעבורה גבוהה. אתה יכול לכוונן את ההגדרות האלה כאן, למרות שברירות המחדל הן נקודת התחלה טובה.", + "traffic.enable": "הפעל ניהול תעבורה", "traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)", - "traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)", + "traffic.event-lag-help": "הורדת ערך זה מקטינה את זמני ההמתנה לטעינת הדפים, אך גם תציג את ההודעה \"עומס מופרז\" ליותר משתמשים. (אתחול נדרש)", "traffic.lag-check-interval": "מרווח זמן בין בדיקות (במילישניות)", "traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)", @@ -38,10 +41,10 @@ "sockets.default-placeholder": "ברירת מחדל: %1", "sockets.delay": "זמן השעייה בן נסיונות חיבור מחדש", - "analytics.settings": "Analytics Settings", - "analytics.max-cache": "Analytics Cache Max Value", + "analytics.settings": "הגדרות אנליטיקס", + "analytics.max-cache": "גודל מקסימלי של מטמון Analytics", "analytics.max-cache-help": "On high-traffic installs, the cache could be exhausted continuously if there are more concurrent active users than the Max Cache value. (Restart required)", "compression.settings": "הגדרות דחיסה", "compression.enable": "אפשר דחיסה", - "compression.help": "This setting enables gzip compression. For a high-traffic website in production, the best way to put compression in place is to implement it at a reverse proxy level. You can enable it here for testing purposes." + "compression.help": "הגדרה זו מפעילה דחיסת gzip. עבור אתר אינטרנט מרובה תנועה בייצור, הדרך הטובה ביותר להפעיל דחיסה היא ליישם אותו ברמת פרוקסי הפוך. אתה יכול להפעיל אותו כאן למטרות בדיקה." } \ No newline at end of file diff --git a/public/language/he/admin/settings/post.json b/public/language/he/admin/settings/post.json index f3f938f47e..5b39f4250c 100644 --- a/public/language/he/admin/settings/post.json +++ b/public/language/he/admin/settings/post.json @@ -45,13 +45,13 @@ "unread.cutoff": "ימי ניתוק שלא נקראו", "unread.min-track-last": "פוסטים מינימליים בנושא לפני מעקב אחר קריאה אחרונה", "recent": "הגדרות פוסטים אחרונים", - "recent.max-topics": "מקסימום נושאים ב פוסטים אחרונים", + "recent.max-topics": "מקסימום נושאים בעמוד פוסטים אחרונים", "recent.categoryFilter.disable": "הפיכת סינון נושאים ללא זמין בקטגוריות שהתעלמו מהן בדף פוסטים אחרונים", "signature": "הגדרות חתימה", "signature.disable": "השבת חתימות", "signature.no-links": "השבת קישורים בחתימות", "signature.no-images": "השבת תמונות בחתימות", - "signature.hide-duplicates": "Hide duplicate signatures in topics", + "signature.hide-duplicates": "הצג חתימות פעם אחת בלבד בכל נושא", "signature.max-length": "אורך חתימה מרבי", "composer": "הגדרות יצירת פוסט", "composer-help": "ההגדרות הבאות חלות על הפונקציונליות ו/או המראה של יוצר הפוסט המוצג\n\t\t\t\tלמשתמשים בעת יצירת נושאים חדשים, או מענה לנושאים קיימים.", diff --git a/public/language/he/admin/settings/reputation.json b/public/language/he/admin/settings/reputation.json index a583635a09..9683ce420f 100644 --- a/public/language/he/admin/settings/reputation.json +++ b/public/language/he/admin/settings/reputation.json @@ -24,8 +24,8 @@ "flags.limit-per-target-help": "כשפוסט או משתמש מסומן כמה פעמים, כל דיווח נוסף נחשב ל "דיווח" ונוסף לדיווח הראשון. הגדר את האופציה הזאת לכל מספר שהוא לא 0 כדי להגביל את כמות הדיווחים שפוסט או משתמש יכול לקבל.", "flags.auto-flag-on-downvote-threshold": "מספר הצבעות למטה כדי ליצור דיווח אטומטי (הגדר ל-0 כדי להשבית; ברירת מחדל: 0)", "flags.auto-resolve-on-ban": "פתור אוטומטי כל כרטיסי משתמש כאשר הוא מוחרם", - "flags.action-on-resolve": "Do the following when a flag is resolved", - "flags.action-on-reject": "Do the following when a flag is rejected", + "flags.action-on-resolve": "בצע את הפעולות הבאות כאשר דיווח נפתר", + "flags.action-on-reject": "בצע את הפעולות הבאות כאשר דיווח נדחה", "flags.action.nothing": "Do nothing", "flags.action.rescind": "Rescind the notification send to moderators/administrators" } \ No newline at end of file diff --git a/public/language/he/admin/settings/uploads.json b/public/language/he/admin/settings/uploads.json index e850a57c65..96d398a357 100644 --- a/public/language/he/admin/settings/uploads.json +++ b/public/language/he/admin/settings/uploads.json @@ -5,7 +5,7 @@ "strip-exif-data": "הפשט נתוני EXIF", "preserve-orphaned-uploads": "שמור את הקבצים שהועלו בדיסק גם לאחר מחיקת הפוסט", "orphanExpiryDays": "מספר ימים לשמירת קבצים יתומים", - "orphanExpiryDays-help": "After this many days, orphaned uploads will be deleted from the file system.
Set 0 or leave blank to disable.", + "orphanExpiryDays-help": "לאחר מספר ימים אלה, העלאות מיותמות יימחקו ממערכת הקבצים.
הגדר ל-0 או השאר ריק כדי להשבית.", "private-extensions": "סיומות קובצים להפוך לפרטיים", "private-uploads-extensions-help": "הכנס כאן רשימה של פורמטי הקבצים, מופרדים בפסיק, כדי להפוך אותם לפרטיים (לדוגמא pdf,xls,doc). שורה ריקה פירושו שכל הקבצים פרטיים.", "resize-image-width-threshold": "שנה גודל תמונות אם הם רחבים יותר מהרוחב המוגדר", diff --git a/public/language/he/admin/settings/user.json b/public/language/he/admin/settings/user.json index 6c3ce0caae..6601d20392 100644 --- a/public/language/he/admin/settings/user.json +++ b/public/language/he/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "אימות", "email-confirm-interval": "המשתמש לא יוכל לשלוח הודעת אישור מייל עד שיחלוף", - "email-confirm-interval2": "דקות", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "אפשר התחברות עם", "allow-login-with.username-email": "שם משתמש או סיסמא", "allow-login-with.username": "שם משתמש בלבד", @@ -29,7 +29,7 @@ "session-time-days": "ימים", "session-time-seconds": "שניות", "session-time-help": "ערכים אלו משמשים כדי להגדיר כמה זמן משתמשים יישארו מחוברים כאשר הם סימנו "זכור אותי" בהתחברות. שים לב שייעשה שימוש רק באחד מהערכים האלו. אם אין ערך שניות נשתמש בערך ימים. אם אין ערך ימים הערך יחזור לברירת מחדל 14 יום.", - "online-cutoff": "דקות אחרי שהמשתמש נחשב לא פעיל", + "online-cutoff": "אחרי כמה דקות דקות המשתמש ייחשב ללא פעיל", "online-cutoff-help": "אם משתמש אינו מבצע פעולות במשך זמן זה, הוא נחשב כלא פעיל ואינו מקבל עדכונים בזמן אמת.", "registration": "רישום משתמש", "registration-type": "סוג הרשמה", @@ -40,8 +40,8 @@ "registration-type.invite-only": "הזמנה בלבד", "registration-type.admin-invite-only": "הזמנת מנהל בלבד", "registration-type.disabled": "בטל הרשמה", - "registration-type.help": "רגיל - משתמשים יכולים להירשם על ידי שימוש בדף /register.
\nהזמנה בלבד - משתמשים אחרים יכולים להזמין משתמשים מדף המשתמש.
\nהזמנת מנהל בלבד - רק מנהלים יכולים להזמין משתמשים אחרים מדף
המשתמש ודף ההנהלת משתמשים.
\nבטל הרשמה - לא ניתן להירשם.
ד", - "registration-approval-type.help": "רגיל - משתמשים נרשמים באופן מיידי.
\nאישור מנהל - משתמשים אשר נרשמו מוכנים לתוך רשימת אישור למנהלים.
\nאישור מנהל לכתובות IP - רגיל למשתמשים חדשים, אישור מנהל לכתובות IP אשר כבר מקושר אליהם חשבון.
", + "registration-type.help": "רגיל - משתמשים יכולים להירשם על ידי שימוש בדף ההרשמה (/register).
\nהזמנה בלבד - משתמשים אחרים יכולים להזמין משתמשים מדף המשתמשים.
\nהזמנת מנהל בלבד - רק מנהלים יכולים להזמין משתמשים אחרים מדף
המשתמשים ודף ניהול משתמשים.
\nבטל הרשמה - לא ניתן להירשם.
ד", + "registration-approval-type.help": "רגיל - משתמשים נרשמים באופן מיידי.
\nאישור מנהל - משתמשים אשר נרשמו מוכנסים לתוך רשימת אישור למנהלים.
\nאישור מנהל לכתובות IP - רגיל למשתמשים חדשים, אישור מנהל לכתובות IP אשר כבר מקושר אליהם חשבון.
", "registration-queue-auto-approve-time": "זמן אישור אוטומטי", "registration-queue-auto-approve-time-help": "שעות לפני שהמשתמש מאושר באופן אוטומטי. רשום 0 על-מנת להשבית.", "registration-queue-show-average-time": "הצג למשתמשים זמן ממוצע שנדרש על-מנת לאשר משתמש חדש", diff --git a/public/language/he/global.json b/public/language/he/global.json index 5089e30de6..e9f3feca1a 100644 --- a/public/language/he/global.json +++ b/public/language/he/global.json @@ -23,7 +23,7 @@ "close": "סגור", "pagination": "הגדרות עמוד", "pagination.out_of": "%1 מתוך %2", - "pagination.enter_index": "Go to post index", + "pagination.enter_index": "עבור למיקום פוסט", "header.admin": "ניהול", "header.categories": "קטגוריות", "header.recent": "פוסטים אחרונים", diff --git a/public/language/he/modules.json b/public/language/he/modules.json index bed09d654c..fefaec201a 100644 --- a/public/language/he/modules.json +++ b/public/language/he/modules.json @@ -3,7 +3,7 @@ "chat.placeholder": "כתבו תוכן הודעת הצ'אט כאן, ניתן לגרור ולשחרר כאן תמונות, הקישו אנטר לשליחה.", "chat.scroll-up-alert": "הנכם צופים כעת בהודעות ישנות. לחצו כאן למעבר להודעה האחרונה.", "chat.send": "שליחה", - "chat.no_active": "אין לכם צ'אטים פעילים", + "chat.no_active": "אין לכם צ'אטים פעילים.", "chat.user_typing": "%1 מקליד...", "chat.user_has_messaged_you": "ל%1 יש הודעה עבורכם.", "chat.see_all": "צפו בכל הצ'אטים", diff --git a/public/language/he/register.json b/public/language/he/register.json index 177e9e543f..c1ee9e3bf3 100644 --- a/public/language/he/register.json +++ b/public/language/he/register.json @@ -1,5 +1,5 @@ { - "register": "הרשם", + "register": "הרשמה", "cancel_registration": "בטל רישום", "help.email": "כברירת מחדל, כתובת האימייל שלך לא גלויה למשתמשים אחרים", "help.username_restrictions": "שם משתמש ייחודי בין %1 ל %2 תווים. משתמשים אחרים יכולים לציין את שמך באמצעות @שם המשתמש שלך.", diff --git a/public/language/he/topic.json b/public/language/he/topic.json index e9f6dc897d..f36bf4277e 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -113,7 +113,7 @@ "bookmark": "הוספה למועדפים", "bookmarks": "מועדפים", "bookmarks.has_no_bookmarks": "לא צירפתם פוסט למועדפים עדיין", - "copy-permalink": "העתקת קישור ישיר", + "copy-permalink": "העתקת קישור פוסט", "loading_more_posts": "טוען פוסטים נוספים", "move_topic": "העברת נושא", "move_topics": "העברת נושאים", diff --git a/public/language/he/unread.json b/public/language/he/unread.json index b89887ee85..4735920e80 100644 --- a/public/language/he/unread.json +++ b/public/language/he/unread.json @@ -6,7 +6,7 @@ "selected": "נבחר", "all": "הכל", "all_categories": "כל הקטגוריות", - "topics_marked_as_read.success": "נושאים שמסומנים כנקרא!", + "topics_marked_as_read.success": "הנושאים שבחרת סומנו כנקרא!", "all-topics": "כל הנושאים", "new-topics": "נושאים חדשים", "watched-topics": "נושאים שאתה עוקב אחריהם", diff --git a/public/language/he/user.json b/public/language/he/user.json index bc41b57ba7..738821cd16 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -76,7 +76,7 @@ "change_password_success": "הסיסמה שלך עודכנה!", "confirm_password": "אימות סיסמה", "password": "סיסמה", - "username_taken_workaround": "שם המשתמש שבחרת כבר תפוס, ולכן שינינו אותו מעט. שם המשתמש שלך כעת הוא %1", + "username_taken_workaround": "שם המשתמש שבחרת כבר תפוס, ולכן שינינו אותו מעט. שם המשתמש שלך כעת הוא: %1", "password_same_as_username": "הסיסמה שלך זהה לשם המשתמש, בחר סיסמה שונה.", "password_same_as_email": "הסיסמה שלך זהה לכתובת המייל שלך, בחר סיסמה שונה.", "weak_password": "סיסמה חלשה.", @@ -84,7 +84,7 @@ "upload_a_picture": "העלה תמונה", "remove_uploaded_picture": "מחק את התמונה שהועלתה", "upload_cover_picture": "העלה תמונת נושא", - "remove_cover_picture_confirm": "האם אתה בטוח שאתה רוצה למחוק תמונת נושא?", + "remove_cover_picture_confirm": "האם אתה בטוח שאתה רוצה למחוק את תמונת נושא?", "crop_picture": "חתוך תמונה", "upload_cropped_picture": "חתוך והעלה", "avatar-background-colour": "צבע רקע של תמונת נושא", @@ -92,27 +92,27 @@ "show_email": "הצג את כתובת האימייל שלי", "show_fullname": "הצג את שמי המלא", "restrict_chats": "אשר הודעות צ'אט ממשתמשים שאני עוקב אחריהם בלבד", - "digest_label": "הרשם לקבלת תקציר", - "digest_description": "הירשם לקבלת עדכונים בדואר אלקטרוני מפורום זה (הודעות ונושאים חדשים) בהתאם ללוח זמנים מוגדר מראש", + "digest_label": "הרשמה לקבלת תקציר", + "digest_description": "הרשמה לקבלת עדכונים בדואר אלקטרוני מפורום זה (הודעות ונושאים חדשים) בהתאם ללוח זמנים מוגדר מראש", "digest_off": "כבוי", "digest_daily": "יומי", "digest_weekly": "שבועי", "digest_biweekly": "דו שבועי", "digest_monthly": "חודשי", "has_no_follower": "למשתמש זה אין עוקבים :(", - "follows_no_one": "משתמש זה אינו עוקב אחרי אחרים :(", - "has_no_posts": "המשתמש טרם יצר פוסטים כלשהם.", - "has_no_best_posts": "למשתמש זה אין עדיין פוסטים נבחרים.", + "follows_no_one": "משתמש זה אינו עוקב אחרי אחרים", + "has_no_posts": "משתמש זה טרם יצר פוסטים כלשהם.", + "has_no_best_posts": "למשתמש זה אין עדיין פוסטים עם הצבעה בעד.", "has_no_topics": "המשתמש טרם יצר נושאים כלשהם.", "has_no_watched_topics": "המשתמש טרם צפה בנושאים כלשהם.", "has_no_ignored_topics": "המשתמש הזה טרם התעלם מנושאים.", "has_no_upvoted_posts": "המשתמש טרם הצביע בעד פוסטים כלשהם.", "has_no_downvoted_posts": "המשתמש טרם הצביע נגד פוסטים כלשהם.", "has_no_controversial_posts": "למשתמש זה אין עדיין פוסטים עם הצבעה למטה.", - "has_no_blocks": "לא חסמת אף משתמש.", + "has_no_blocks": "לא חסמתם אף משתמש.", "email_hidden": "כתובת אימייל מוסתרת", "hidden": "מוסתר", - "paginate_description": "הצג נושאים ופוסטים בעמודים במקום כרשימת גלילה אין-סופית", + "paginate_description": "הצגת נושאים ופוסטים בעמודים במקום כרשימת גלילה אין-סופית", "topics_per_page": "כמות נושאים בעמוד", "posts_per_page": "כמות פוסטים בעמוד", "max_items_per_page": "מקסימום %1", @@ -160,7 +160,7 @@ "info.mute-history": "הסטוריית השתקות", "info.no-mute-history": "משתמש זה מעולם לא הושתק", "info.muted-until": "מושתק עד %1", - "info.muted-expiry": "Expiry", + "info.muted-expiry": "תפוגה", "info.muted-no-reason": "לא סופקה סיבה.", "info.username-history": "היסטוריית שם משתמש", "info.email-history": "היסטוריית אימייל", @@ -182,10 +182,10 @@ "consent.right_to_rectification": "זכותך לתקן טעויות", "consent.right_to_rectification_description": "יש לך זכות לשנות או לעדכן נתונים שנאספו. ניתן לעדכן את הפרופיל שלך וכן לערוך כל תוכן שפורסם. במידת הצורך, אנא צור קשר עם צוות ניהול האתר.", "consent.right_to_erasure": "זכותך למחוק את חשבונך", - "consent.right_to_erasure_description": "בכל עת תוכל לבטל את הסכמתך לאיסוף נתונים ו / או עיבודם על ידי מחיקת חשבונך. מחיקת הפרופיל שלך לא תגרום למחיקת התוכנים שפרסמת. על מנת למחוק את חשבונך ואת התוכן המקושר לו צור קשר עם צוות הניהול של האתר.", + "consent.right_to_erasure_description": "בכל עת תוכל לבטל את הסכמתך לאיסוף נתונים ו/או עיבודם על ידי מחיקת חשבונך. מחיקת הפרופיל שלך לא תגרום למחיקת התוכנים שפרסמת. על מנת למחוק את חשבונך ואת התוכן המקושר לו צור קשר עם צוות הניהול של האתר.", "consent.right_to_data_portability": "זכותך לניוד הנתונים", "consent.right_to_data_portability_description": "באפרותך לבקש ייצוא של כל הנתונים שנאספו מחשבונך אודותיך. תוכל לעשות זאת על ידי לחיצה על הלחצן המתאים מטה.", - "consent.export_profile": "יצוא פרופיל (.json)", + "consent.export_profile": "יצוא פרופיל (json.)", "consent.export-profile-success": "ייצוא הפרופיל מתבצע כעת. תקבל התראה כאשר הייצוא יסתיים.", "consent.export_uploads": "יצוא תוכן שהועלה (ZIP.)", "consent.export-uploads-success": "ייצוא ההעלאות מתבצע כעת. תקבל התראה כאשר הייצוא יסתיים.", @@ -195,5 +195,5 @@ "emailUpdate.optional": "שדה זה הוא אופציונלי. אינך מחויב לספק את כתובת הדוא\"ל שלך, אך ללא דוא\"ל מאומת לא תוכל לשחזר את חשבונך או להתחבר באמצעות הדוא\"ל שלך.", "emailUpdate.required": "זהו שדה חובה", "emailUpdate.change-instructions": "מייל אימות יישלח לכתובת דוא\"ל שהכנסת עם קישור ייחודי. לחיצה על הקישור יאמת את בעלותך על הדוא\"ל ותקבל גישה לחשבונך. בכל זמן, תוכל לעדכן את כתובת הדוא\"ל שלך בדף החשבון שלך.", - "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership." + "emailUpdate.password-challenge": "אנא הזן את הסיסמה שלך כדי לאמת את הבעלות על החשבון." } \ No newline at end of file diff --git a/public/language/hr/admin/settings/advanced.json b/public/language/hr/admin/settings/advanced.json index 071321ff45..cdf6f454c4 100644 --- a/public/language/hr/admin/settings/advanced.json +++ b/public/language/hr/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Kada je forum u stanju održavanja,svi zahtjevi će biti preusmjereni statičnoj stranici.Administratori su izuzeti od ovog preusmjerenja i mogu normalno koristiti stranicu.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Poruka održavanja", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Zaglavlje", "headers.allow-from": "Izaberi ALLOW-FROM da bi ste postavili NodeBB u iFrame.", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/hr/admin/settings/user.json b/public/language/hr/admin/settings/user.json index 43c20bfdb1..e1aa153b52 100644 --- a/public/language/hr/admin/settings/user.json +++ b/public/language/hr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentifikacija", "email-confirm-interval": "Korisnik ne može ponovno poslati potvrdni email do ", - "email-confirm-interval2": "prošlo je minuta", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Dozvoli prijavu sa", "allow-login-with.username-email": "Korisničko ime ili Email", "allow-login-with.username": "Korisničko ime", diff --git a/public/language/hu/admin/settings/advanced.json b/public/language/hu/admin/settings/advanced.json index 0ed27c3041..24a7537fe3 100644 --- a/public/language/hu/admin/settings/advanced.json +++ b/public/language/hu/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Amikor a fórum karbantartási módban van, minden kérés átirányításra kerül egy statikus feltartóztató oldalra. Az adminisztrátorok kivételnek számítanak ez alól, és szokásos módon hozzáférhetnek az oldalhoz.", "maintenance-mode.status": "Karbantartási mód HTTP státuszkódja", "maintenance-mode.message": "A karbantartás üzenete", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Fejlécek", "headers.allow-from": "ALLOW-FROM beállítása, hogy a NodeBB egy iFrame-be kerüljön", "headers.csp-frame-ancestors": "Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Szigorú HTTP biztonság (HSTS)", "hsts.enabled": "Szigorú HTTP biztonság (HSTS) bekapcsolása (ajánlott)", "hsts.maxAge": "HSTS maximális kora", diff --git a/public/language/hu/admin/settings/user.json b/public/language/hu/admin/settings/user.json index 3db2f70226..f679e5b510 100644 --- a/public/language/hu/admin/settings/user.json +++ b/public/language/hu/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Hitelesítés", "email-confirm-interval": "A felhasználó nem küldetheti újra az emailt ameddig nem telt el", - "email-confirm-interval2": "perc", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Bejelentkezés engedélyezése ezzel:", "allow-login-with.username-email": "Felhasználónév vagy email cím", "allow-login-with.username": "Csak felhasználónév", diff --git a/public/language/id/admin/settings/advanced.json b/public/language/id/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/id/admin/settings/advanced.json +++ b/public/language/id/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/it/admin/settings/advanced.json b/public/language/it/admin/settings/advanced.json index 119192b6a4..23de6ede5e 100644 --- a/public/language/it/admin/settings/advanced.json +++ b/public/language/it/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Quando il forum è in modalità manutenzione, tutte le richieste saranno reindirizzate ad una pagina di attesa statica. Gli amministratori sono esenti da questo reindirizzamento e sono in grado di accedere al sito normalmente.", "maintenance-mode.status": "Codice stato modalità manutenzione", "maintenance-mode.message": "Messaggio di manutenzione", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Seleziona i gruppi che dovrebbero essere esenti dalla modalità di manutenzione", "headers": "Intestazioni", "headers.allow-from": "Imposta ALLOW-FROM per posizionare NodeBBB in un iFrame", "headers.csp-frame-ancestors": "Imposta l'intestazione Content-Security-Policy frame-ancestors su Place NodeBB in un iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "Se abilitato (impostazione predefinita), imposterà l'intestazione su require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Rigorosa sicurezza trasporto", "hsts.enabled": "Abilita HSTS (consigliato)", "hsts.maxAge": "Età massima HSTS", diff --git a/public/language/it/admin/settings/user.json b/public/language/it/admin/settings/user.json index e3d5969aa6..b418763c86 100644 --- a/public/language/it/admin/settings/user.json +++ b/public/language/it/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticazione", "email-confirm-interval": "L'utente non può mandare una nuova email di conferma fino a", - "email-confirm-interval2": "minuti trascorsi", + "email-confirm-interval2": "sono trascorsi minuti", "allow-login-with": "Consenti l'accesso con", "allow-login-with.username-email": "Username o Email", "allow-login-with.username": "Solo Username", diff --git a/public/language/ja/admin/settings/advanced.json b/public/language/ja/admin/settings/advanced.json index a162199c96..72ad0891bf 100644 --- a/public/language/ja/admin/settings/advanced.json +++ b/public/language/ja/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "フォーラムがメンテナンスモードの場合、すべてのリクエストは静的な一時ページにリダイレクトされます。管理者はこのリダイレクトから免除され、通常のサイトにアクセスできます。", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "メンテナンスメッセージ", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "ヘッダー", "headers.allow-from": "NodeBBをインラインフレーム内に配置するようALLOW-FROMを設定する", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/ja/admin/settings/user.json b/public/language/ja/admin/settings/user.json index cac5496aba..dcd8a4edaf 100644 --- a/public/language/ja/admin/settings/user.json +++ b/public/language/ja/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "認証", "email-confirm-interval": "ユーザーが確認するまでEメールを再送信しない", - "email-confirm-interval2": "分経過", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "ログインを許可", "allow-login-with.username-email": "ユーザー名または電子メール", "allow-login-with.username": "ユーザー名のみ", diff --git a/public/language/ko/admin/settings/advanced.json b/public/language/ko/admin/settings/advanced.json index 9a33814940..9d6966eab9 100644 --- a/public/language/ko/admin/settings/advanced.json +++ b/public/language/ko/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "포럼이 점검 모드일 경우 모든 접속 요청은 정적 페이지로 리다이렉트됩니다. 관리자는 이 리다이렉션에 적용되지 않고 사이트에 접속하는 것이 가능합니다.", "maintenance-mode.status": "점검 모드 상태 코드", "maintenance-mode.message": "점검 공지", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "헤더", "headers.allow-from": "NodeBB를 iFrame에 삽입할 수 있게 하시려면, ALLOW-FROM(NodeBB를 Embedding할 수 있는 도메인)을 설정하세요.", "headers.csp-frame-ancestors": "NodeBB를 iFrame에 삽입하기 위한 컨텐츠 보안 정책 frame-ancestors 헤더 설정", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "HSTS 활성화 (권장)", "hsts.maxAge": "HSTS 유효 기간", diff --git a/public/language/ko/admin/settings/user.json b/public/language/ko/admin/settings/user.json index 01d7ea0ec3..ac9db811b2 100644 --- a/public/language/ko/admin/settings/user.json +++ b/public/language/ko/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "인증", "email-confirm-interval": "사용자는", - "email-confirm-interval2": "분이 지나기 전까지 인증 메일 재요청이 불가능합니다.", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "로그인 허용 수단", "allow-login-with.username-email": "사용자명 또는 이메일", "allow-login-with.username": "사용자명", diff --git a/public/language/lt/admin/settings/advanced.json b/public/language/lt/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/lt/admin/settings/advanced.json +++ b/public/language/lt/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/lv/admin/settings/advanced.json b/public/language/lv/admin/settings/advanced.json index 5358182884..1899c0dd8f 100644 --- a/public/language/lv/admin/settings/advanced.json +++ b/public/language/lv/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Kad forums atrodas apkopes režīmā, visa piekļuve tiks novirzīta uz statisku lapu. Uz administratoriem neattiecas šī novirzīšana un viņi var piekļūt vietnei kā parasti.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Apkopes paziņojums", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Iezīmes", "headers.allow-from": "Iestatīt ALLOW-FROM, lai atļautu NodeBB ievietot iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "HTTP Strict Transport Security (HSTS)", "hsts.enabled": "Iespējots HSTS (ieteicams)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/lv/admin/settings/user.json b/public/language/lv/admin/settings/user.json index 78653597fd..9a3d3d0c7d 100644 --- a/public/language/lv/admin/settings/user.json +++ b/public/language/lv/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentifikācija", "email-confirm-interval": "Lietotājs nevar atkārtoti nosūtīt apstiprinājuma e-pastu pirms", - "email-confirm-interval2": "minūtes nav pagājušas", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Ielogoties", "allow-login-with.username-email": "Ar lietotājvārdu vai e-pasta adresi", "allow-login-with.username": "Tikai ar lietotājvārdu", diff --git a/public/language/ms/admin/settings/advanced.json b/public/language/ms/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/ms/admin/settings/advanced.json +++ b/public/language/ms/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/nb/admin/admin.json b/public/language/nb/admin/admin.json index 83e867a30f..65bbbc4f99 100644 --- a/public/language/nb/admin/admin.json +++ b/public/language/nb/admin/admin.json @@ -5,7 +5,7 @@ "acp-title": "%1 | NodeBB Admin Kontrollpanel", "settings-header-contents": "Innhold", "changes-saved": "Endringer lagret", - "changes-saved-message": "Dine endringer til NodeBB-konfigurasjonen har blitt lagret.", + "changes-saved-message": "Dine endringer i NodeBB-konfigurasjonen har blitt lagret.", "changes-not-saved": "Endringer ikke lagret", "changes-not-saved-message": "NodeBB støtte på et problem ved lagring av endringer. (%1)" } \ No newline at end of file diff --git a/public/language/nb/admin/manage/registration.json b/public/language/nb/admin/manage/registration.json index f51b4d56e6..70676dfe9f 100644 --- a/public/language/nb/admin/manage/registration.json +++ b/public/language/nb/admin/manage/registration.json @@ -10,11 +10,11 @@ "list.email-spam": "Frequency: %1 Appears: %2", "list.ip-spam": "Frequency: %1 Appears: %2", - "invitations": "Invitations", + "invitations": "Invitasjoner", "invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username.

The username will be displayed to the right of the emails for users who have redeemed their invitations.", "invitations.inviter-username": "Inviter Username", "invitations.invitee-email": "Invitee Email", "invitations.invitee-username": "Invitee Username (if registered)", - "invitations.confirm-delete": "Are you sure you wish to delete this invitation?" + "invitations.confirm-delete": "Er du sikker på at du ønsker å slette denne invitasjonen?" } \ No newline at end of file diff --git a/public/language/nb/admin/manage/users.json b/public/language/nb/admin/manage/users.json index 0df8de0517..c63f6819b5 100644 --- a/public/language/nb/admin/manage/users.json +++ b/public/language/nb/admin/manage/users.json @@ -24,7 +24,7 @@ "filter-by": "Filter by", "pills.unvalidated": "Not Validated", "pills.validated": "Validated", - "pills.banned": "Banned", + "pills.banned": "Utestengt", "50-per-page": "50 per page", "100-per-page": "100 per page", @@ -105,7 +105,7 @@ "alerts.create-success": "User created!", "alerts.prompt-email": "Emails: ", - "alerts.email-sent-to": "An invitation email has been sent to %1", + "alerts.email-sent-to": "En invitasjonse-post har blitt sendt til %1", "alerts.x-users-found": "%1 user(s) found, (%2 seconds)", "export-users-started": "Exporting users as csv, this might take a while. You will receive a notification when it is complete.", "export-users-completed": "Users exported as csv, click here to download." diff --git a/public/language/nb/admin/settings/advanced.json b/public/language/nb/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/nb/admin/settings/advanced.json +++ b/public/language/nb/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/nb/admin/settings/email.json b/public/language/nb/admin/settings/email.json index 35e713adc0..f5aa006956 100644 --- a/public/language/nb/admin/settings/email.json +++ b/public/language/nb/admin/settings/email.json @@ -1,9 +1,9 @@ { - "email-settings": "Email Settings", - "address": "Email Address", - "address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.", + "email-settings": "E-postinnstillinger", + "address": "E-postadresse", + "address-help": "Følgende e-postadresse viser til e-postadressen som mottakeren vil se i \"Fra\" og \"Svar til\"-feltene. ", "from": "From Name", - "from-help": "The from name to display in the email.", + "from-help": "Avsendernavnet som skal vises i e-posten.", "confirmation-settings": "Confirmation", "confirmation.expiry": "Hours to keep email confirmation link valid", @@ -16,37 +16,37 @@ "smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select "Custom Service" and enter the details below.", "smtp-transport.gmail-warning1": "If you are using GMail as your email provider, you will have to generate an "App Password" in order for NodeBB to authenticate successfully. You can generate one at the App Passwords page.", "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", - "smtp-transport.auto-enable-toast": "It looks like you're configuring an SMTP transport. We enabled the \"SMTP Transport\" option for you.", + "smtp-transport.auto-enable-toast": "Det ser ut som at du konfigurerer en SMTP transport. Vi skrudde på «SMTP Transport»-alternativet for deg.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", "smtp-transport.security": "Connection security", "smtp-transport.security-encrypted": "Encrypted", "smtp-transport.security-starttls": "StartTLS", "smtp-transport.security-none": "None", - "smtp-transport.username": "Username", + "smtp-transport.username": "Brukernavn", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", "smtp-transport.pool": "Enable pooled connections", "smtp-transport.pool-help": "Pooling connections prevents NodeBB from creating a new connection for every email. This option only applies if SMTP Transport is enabled.", - "template": "Edit Email Template", - "template.select": "Select Email Template", + "template": "Endre e-postmal", + "template.select": "Velg e-postmal", "template.revert": "Revert to Original", - "testing": "Email Testing", - "testing.select": "Select Email Template", - "testing.send": "Send Test Email", + "testing": "E-posttesting", + "testing.select": "Velg e-postmal", + "testing.send": "Send test-e-post", "testing.send-help": "The test email will be sent to the currently logged in user's email address.", - "subscriptions": "Email Digests", - "subscriptions.disable": "Disable email digests", + "subscriptions": "E-postsammendrag", + "subscriptions.disable": "Deaktiver e-postsammendrag", "subscriptions.hour": "Digest Hour", - "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent ", + "subscriptions.hour-help": "Skriv inn et tall som representerer den timen planlagte e-postsammendrag skal sendes ut (f.eks. 0 for midnatt, 17 for 17:00). Husk at denne tiden forholder seg til serverens tid, og kan avvike fra din systemklokke.
Den omtrentlige servertiden er:
Det neste daglige sammendraget er planlagt utsendt ", "notifications.remove-images": "Remove images from email notifications", - "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 by leaving the field blank. 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.", - "send-validation-email": "Send validation emails when an email is added or changed", - "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.", + "require-email-address": "Krev at nye brukere legger til en e-postadresse", + "require-email-address-warning": "Som standard, kan brukere velge bort å fylle ut e-postadresse ved å la feltet stå tomt. Å skru på dette valget innebærer at de må legge inn en e-postadresse for å kunne fortsette registreringen. Dette sikrer ikke at brukeren vil legge inn en gyldig e-postadresse, heller ikke en e-postadresse de eier.", + "send-validation-email": "Send bekreftelses-e-post når en e-post legges til eller endres", + "include-unverified-emails": "Send e-post til mottakere som ikke eksplisitt har bekreftet e-postadressen sin.", + "include-unverified-warning": "Som standard, vil brukere som har e-postadresse knyttet til deres konto allerede være verifisert, men det er noen situasjoner hvor dette ikke er tilfelle (f.eks. SSO-innlogginger, grandfathered users, etc). Skru på denne innstillingen på egen risiko – å sende e-poster til uverifiserte e-postadresser kan være brudd på regionale anti-spam-regler.", "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.", - "sendEmailToBanned": "Send emails to users even if they have been banned" + "prompt-help": "Hvis en bruker mangler e-postadresse, eller e-postadressen ikke er bekreftet, vil en advarsel vises på skjermen. ", + "sendEmailToBanned": "Send e-post til brukere selv om de har blitt utestengt" } diff --git a/public/language/nb/admin/settings/languages.json b/public/language/nb/admin/settings/languages.json index bdd57849b3..812345597c 100644 --- a/public/language/nb/admin/settings/languages.json +++ b/public/language/nb/admin/settings/languages.json @@ -1,6 +1,6 @@ { "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.", + "description": "Det prevalgte språket avgjør språkinnstillingene for alle brukere som besøker forumet ditt.
Indiviuelle brukere kan overstyre det prevalgte språket inne på deres kontoinnstillinger.", "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/settings/reputation.json b/public/language/nb/admin/settings/reputation.json index 59cf488dea..ddf6fd0f44 100644 --- a/public/language/nb/admin/settings/reputation.json +++ b/public/language/nb/admin/settings/reputation.json @@ -12,7 +12,7 @@ "downvotes-per-user-per-day": "Downvotes per user per day (set to 0 for unlimited downvotes)", "min-rep-chat": "Minimum reputation to send chat messages", "min-rep-flag": "Minimum omdømme for å flagge innlegg", - "min-rep-website": "Minimum reputation to add \"Website\" to user profile", + "min-rep-website": "Minimum omdømme som kreves for å legge \"Nettsted\" til brukerprofil", "min-rep-aboutme": "Minimum reputation to add \"About me\" to user profile", "min-rep-signature": "Minimum reputation to add \"Signature\" to user profile", "min-rep-profile-picture": "Minimum reputation to add \"Profile Picture\" to user profile", diff --git a/public/language/nb/admin/settings/user.json b/public/language/nb/admin/settings/user.json index 47b00c8486..7998884043 100644 --- a/public/language/nb/admin/settings/user.json +++ b/public/language/nb/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autentisering ", "email-confirm-interval": "Brukeren kan ikke sende en bekreftelses-e-post på nytt før", - "email-confirm-interval2": "minutter har gått", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Tillat innlogging med", "allow-login-with.username-email": "Brukernavn eller e-post", "allow-login-with.username": "Kun brukernavn", @@ -13,7 +13,7 @@ "disable-password-changes": "Deaktiver endringer for passord", "allow-account-deletion": "Tillat kontosletting ", "hide-fullname": "Skjul fullt navn for andre brukere", - "hide-email": "Skjul e-post for brukere", + "hide-email": "Skjul e-post for andre brukere", "show-fullname-as-displayname": "Vis brukerens fulle navn som navn ved visning hvis tilgjengelig", "themes": "Temaer", "disable-user-skins": "Forhindre brukere fra å velge en tilpasset skin", @@ -72,7 +72,7 @@ "digest-freq.biweekly": "Annenhver uke", "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å", + "email-post-notif": "Send en e-post når det kommer svar på tråder jeg abonnerer på", "follow-created-topics": "Følg tråder du lager", "follow-replied-topics": "Følg tråder du svarer på", "default-notification-settings": "Standard varslingsinnstillinger", diff --git a/public/language/nb/email.json b/public/language/nb/email.json index 46ffe70a84..e36f798865 100644 --- a/public/language/nb/email.json +++ b/public/language/nb/email.json @@ -8,7 +8,7 @@ "email.verify-your-email.subject": "Bekreft e-postadressen din ", "email.verify.text1": "Du har bedt oss om å endre eller bekrefte e-postadressen din", "email.verify.text2": "Av sikkerhetshensyn endrer eller bekrefter vi bare e-postadressen som er registrert når eierskapet er bekreftet via e-post. Hvis du ikke har bedt om dette, er det ikke nødvendig å gjøre noe fra din side.", - "email.verify.text3": "Når du bekrefter denne e-postadressen, skifter vi ut din nåværende e-postadresse med denne (%1). ", + "email.verify.text3": "Når du bekrefter denne e-postadressen, bytter vi ut din nåværende e-postadresse med denne (%1). ", "welcome.text1": "Takk for at du registrerte deg hos %1!", "welcome.text2": "For å aktivere kontoen din må vi verifisere at du eier e-postadressen du registrerte deg med.", "welcome.text3": "En administrator har akseptert din søknad om registering. Du kan nå logge inn med ditt brukernavn og passord.", @@ -43,13 +43,13 @@ "notif.cta-new-reply": "Vis post", "notif.cta-new-chat": "Vis chatt", "notif.test.short": "Testing av varsler ", - "notif.test.long": "Dette er en test av e-postmeldingen. Send hjelp!", + "notif.test.long": "Dette er en test av e-postmeldingen for varsler. Send hjelp!", "test.text1": "Dette er en test e-post for å verifisere at e-postsystemet i NodeBB fungerer som det skal.", "unsub.cta": "Klikk her for å endre disse innstillingene", "unsubscribe": "Avfølg", "unsub.success": "Du vil ikke lenger motta e-poster fra %1 utsendelseslisten ", - "unsub.failure.title": "kan ikke avslutte abonnementet", - "unsub.failure.message": "Dessverre kunne vi ikke melde deg av e-postlisten, da det var et problem med lenke. Du kan imidlertid endre preferansene for e-post ved å gå tilinnstillinger.

(error:1%):", + "unsub.failure.title": "Kan ikke avslutte abonnementet", + "unsub.failure.message": "Dessverre kunne vi ikke melde deg av e-postlisten, da det var et problem med lenken. Du kan imidlertid endre preferansene for e-post ved å gå tilinnstillinger.

(feil:1%):", "banned.subject": "Du har blitt utestengt fra %1", "banned.text1": "Brukeren %1 er utestengt fra %2.", "banned.text2": "Dette forbudet varer til %1.", diff --git a/public/language/nb/error.json b/public/language/nb/error.json index 450515b027..5a56fc2e75 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -35,11 +35,11 @@ "email-taken": "E-post opptatt", "email-nochange": "E-posten som er angitt er den samme e-posten som allerede er lagret.", "email-invited": "E-post har allerede fått invitasjon", - "email-not-confirmed": "Posting i enkelte kategorier eller emner er aktivert når e-posten din er bekreftet. Klikk her for å sende en bekreftelses-e-post. ", + "email-not-confirmed": "Posting i enkelte kategorier eller emner blir aktivert når e-posten din er bekreftet. Klikk her for å sende en bekreftelses-e-post. ", "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": "E-posten din er ikke bekreftet ennå, sjekk innboksen din for bekreftelses-e-post. Det kan hende du ikke kan legge ut innlegg i enkelte kategorier eller chatte før e-posten din er bekreftet.", - "no-email-to-confirm": "Kontoen din har ikke et e-postsett. En e-post er nødvendig for gjenoppretting av konto, og kan være nødvendig for chatting og innlegg i enkelte kategorier. Klikk her for å skrive inn en e-post.", - "user-doesnt-have-email": "Brukeren «%1» har ikke angitt en e-post. ", + "no-email-to-confirm": "Kontoen din mangler e-postadresse. En e-postadresse er nødvendig for gjenoppretting av konto, og kan være nødvendig for chatting og innlegg i enkelte kategorier. Klikk her for å skrive inn en e-postadresse.", + "user-doesnt-have-email": "Brukeren «%1» har ikke lagt til e-postadresse. ", "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.", @@ -53,7 +53,7 @@ "user-banned-reason": "Beklager, denne kontoen har blitt utestengt (Grunn: %1)", "user-banned-reason-until": "Beklager, denne kontoen har blit utestengt til %1 (Grunn: %2)", "user-too-new": "Beklager, du må vente %1 sekund(er) før du oppretter ditt første innlegg", - "blacklisted-ip": "Beklager, din IP-adresse har blitt utestengt fra dette forumet. Hvis du føler dette er en feil, vennligst kontakt en sideadministrator.", + "blacklisted-ip": "Beklager, din IP-adresse har blitt utestengt fra dette forumet. Hvis du mener dette er en feil, vennligst kontakt en sideadministrator.", "ban-expiry-missing": "Vennligst oppgi et sluttidspunkt for denne utestengingen.", "no-category": "Kategorien eksisterer ikke", "no-topic": "Emne eksisterer ikke", @@ -87,7 +87,7 @@ "title-too-long": "Vennligst skriv en kortere tittel. Tittel kan ikke være lengre enn %1 tegn.", "category-not-selected": "Kategori ikke valgt", "too-many-posts": "Du kan bare poste en gang per %1 sekund(er) – vennligst vent før du poster igjen", - "too-many-posts-newbie": "Som ny bruker kan du bare poste en gang per %1. sekund(er), før du har opparbeidet %2 i rykte – vennligst vent før du poster igjen", + "too-many-posts-newbie": "Som ny bruker kan du bare poste en gang per %1. sekund(er), før du har opparbeidet %2 i omdømme – vennligst vent før du poster igjen", "tag-too-short": "Vennligst skriv et lengre emneord. Disse må være på minst %1 tegn", "tag-too-long": "Vennligst skriv et kortere emneord. Disse kan ikke være lengre enn %1 tegn", "not-enough-tags": "Ikke nok emneord. Emner må ha minst %1.", @@ -108,9 +108,9 @@ "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-mute-other-admins": "Du kan ikke kneble andre administratorer. ", - "user-muted-for-hours": "Du har blitt kneblet, du vil være i stand til å skrive innlegg innen %1 time(r). ", - "user-muted-for-minutes": "Du har blitt kneblet, du vil være i stand til å skrive innlegg innen %1 minutt(er).", + "cant-mute-other-admins": "Du kan ikke kneble andre administratorer.", + "user-muted-for-hours": "Du har blitt kneblet, du vil være i stand til å skrive innlegg om %1 time(r). ", + "user-muted-for-minutes": "Du har blitt kneblet, du vil være i stand til å skrive innlegg om %1 minutt(er).", "cant-make-banned-users-admin": "Du kan ikke gjøre utestengte brukere til administrator. ", "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", @@ -156,7 +156,7 @@ "chat-restored-already": "Denne meldingen har allerede blitt gjenopprettet.", "chat-room-does-not-exist": "Dette chatterommet finnes ikke.", "already-voting-for-this-post": "Du har allerede stemt på dette innlegget", - "reputation-system-disabled": "Ryktesystemet er deaktivert.", + "reputation-system-disabled": "Omdømmesystemet er deaktivert.", "downvoting-disabled": "Nedstemming er deaktivert", "not-enough-reputation-to-chat": "You need %1 reputation to chat", "not-enough-reputation-to-upvote": "Du trenger %1 omdømme for å stemme opp. ", @@ -182,7 +182,7 @@ "parse-error": "Noe gikk feil under analysering av serversvar", "wrong-login-type-email": "Vennligst benytt e-posten din for å logge inn", "wrong-login-type-username": "Vennligst benytt brukernavnet ditt for å logge inn", - "sso-registration-disabled": "Registrering har blitt deaktivert for %1 konto(er), vennligst registrer deg med en e-post adresse først", + "sso-registration-disabled": "Registrering har blitt deaktivert for %1 konto(er), registrer deg med en e-post adresse først", "sso-multiple-association": "Du kan ikke knytte flere kontoer til din NodeBB konto. Vennligst koble fra din eksisterende konto og prøv igjen.", "invite-maximum-met": "Du har invitert maks antall personer (%1 av %2).", "no-session-found": "Ingen innlogget sesjon funnet!", diff --git a/public/language/nb/global.json b/public/language/nb/global.json index 9c8254dc1d..4ea9222a50 100644 --- a/public/language/nb/global.json +++ b/public/language/nb/global.json @@ -47,7 +47,7 @@ "alert.error": "Feil", "alert.banned": "Utestengt", "alert.banned.message": "Du har nettop blitt utestengt, din tilgang er nå begrenset.", - "alert.unbanned": "Ikke utestengt", + "alert.unbanned": "Utestengelse opphevet", "alert.unbanned.message": "Utestengelsen er opphevet", "alert.unfollow": "Du følger ikke lenger %1!", "alert.follow": "Du følger nå %1!", @@ -66,7 +66,7 @@ "downvoted": "Nedstemte ", "views": "Visninger", "posters": "Innlegg ", - "reputation": "Rykte", + "reputation": "Omdømme", "lastpost": "Seneste innlegg", "firstpost": "Første innlegg ", "read_more": "les mer", @@ -87,11 +87,11 @@ "recentposts": "Seneste innlegg", "recentips": "Seneste innloggede IPer", "moderator_tools": "Moderatorverktøy", - "online": "Pålogget", + "online": "Tilkoblet", "away": "Borte", "dnd": "Ikke forstyrr", "invisible": "Usynlig", - "offline": "Avlogget", + "offline": "Frakoblet", "email": "E-post", "language": "Språk", "guest": "Gjest", diff --git a/public/language/nb/login.json b/public/language/nb/login.json index 597b4ad124..fc6eb92fc8 100644 --- a/public/language/nb/login.json +++ b/public/language/nb/login.json @@ -4,7 +4,7 @@ "remember_me": "Husk meg?", "forgot_password": "Glemt passord?", "alternative_logins": "Alternativ innlogging", - "failed_login_attempt": "Innlogging misslyktes", + "failed_login_attempt": "Innlogging mislyktes", "login_successful": "Du har blitt logget inn!", "dont_have_account": "Har du ikke en konto?", "logged-out-due-to-inactivity": "Du har blitt logget ut av administratorsidene fordi du har vært inaktiv for lenge", diff --git a/public/language/nb/notifications.json b/public/language/nb/notifications.json index 8087f11a98..9ae49a8f93 100644 --- a/public/language/nb/notifications.json +++ b/public/language/nb/notifications.json @@ -53,8 +53,8 @@ "post-queue-notify": "Varsel mottatt for innlegg i kø:
\"%1\"", "email-confirmed": "E-post bekreftet", "email-confirmed-message": "Takk for at du har validert din e-post. Kontoen din er nå fullstendig aktivert.", - "email-confirm-error-message": "Det oppsto et problem under valdiering av din e-post. Koden kan ha vært ugyldig eller ha utløpt.", - "email-confirm-sent": "Bekreftelsesepost sendt.", + "email-confirm-error-message": "Det oppsto et problem under validering av e-posten din. Koden kan ha vært ugyldig eller ha utløpt.", + "email-confirm-sent": "Bekreftelses-e-post sendt.", "none": "Ingen", "notification_only": "Kun notifikasjon ", "email_only": "Kun e-post", diff --git a/public/language/nb/pages.json b/public/language/nb/pages.json index a9bad8f617..e44c00e42d 100644 --- a/public/language/nb/pages.json +++ b/public/language/nb/pages.json @@ -17,7 +17,7 @@ "users/online": "Påloggede Brukere", "users/latest": "Nyeste Brukere", "users/sort-posts": "Brukere med flest innlegg", - "users/sort-reputation": "Brukere med best rykte", + "users/sort-reputation": "Brukere med best omdømme", "users/banned": "Utestengte brukere", "users/most-flags": "Brukere som er mest flagget ", "users/search": "Brukersøk", diff --git a/public/language/nb/register.json b/public/language/nb/register.json index 43cece6dea..55ed85a0e9 100644 --- a/public/language/nb/register.json +++ b/public/language/nb/register.json @@ -25,7 +25,7 @@ "interstitial.errors-found": "Vennligst gå igjennom oppgitt informasjon:", "gdpr_agree_data": "Jeg samtykker til innsamling og behandling av min personlige informasjon på dette nettstedet.", "gdpr_agree_email": "Jeg samtykker i å motta forumsammendrag og varsler på e-postmeldinger fra dette nettstedet. ", - "gdpr_consent_denied": "Du må gi samtykke til at dette nettstedet kan samle inn / behandle informasjonen din, og til å sende deg e-post. ", + "gdpr_consent_denied": "Du må gi samtykke til at dette nettstedet kan samle inn/behandle informasjonen din, og sende deg e-post.", "invite.error-admin-only": "Direkte brukerregistrering er deaktivert. Kontakt en administrator for mer informasjon. ", "invite.error-invite-only": "Direkte brukerregistrering er deaktivert. Du må bli invitert av en eksisterende bruker for å få tilgang til dette forumet. ", "invite.error-invalid-data": "Registrerte data som mottas samsvarer ikke med registrene våre. Kontakt en administrator for mer informasjon." diff --git a/public/language/nb/user.json b/public/language/nb/user.json index 5c3e8867d7..4a2782610f 100644 --- a/public/language/nb/user.json +++ b/public/language/nb/user.json @@ -1,13 +1,13 @@ { "banned": "Utestengt", "muted": "Muted", - "offline": "Offline", + "offline": "Frakoblet", "deleted": "Slettet", "username": "Brukernavn", "joindate": "Registereringsdato", "postcount": "Antall innlegg", "email": "E-post", - "confirm_email": "Bekfreft e-post", + "confirm_email": "Bekreft e-post", "account_info": "Kontoinformasjon", "admin_actions_label": "Administrative handlinger ", "ban_account": "Utesteng kont", @@ -30,7 +30,7 @@ "location": "Plassering", "age": "Alder", "joined": "Ble med", - "lastonline": "Senest online", + "lastonline": "Sist tilkoblet", "profile": "Profil", "profile_views": "Profilvisninger", "reputation": "Omdømme", @@ -60,7 +60,7 @@ "change_picture": "Bytt bilde", "change_username": "Endre brukernavn", "change_email": "Endre e-post", - "email_same_as_password": "Vennligst skriv inn ditt nåværende passord for å fortsette & ndash; du har skrevet inn den nye e-posten din igjen", + "email_same_as_password": "Skriv inn ditt nåværende passord for å fortsette – du har skrevet inn den nye e-posten din igjen", "edit": "Endre", "edit-profile": "Rediger profil", "default_picture": "Standardikonet", @@ -76,8 +76,8 @@ "change_password_success": "Passordet ditt ble oppdatert!", "confirm_password": "Bekreft passord", "password": "Passord", - "username_taken_workaround": "Brukernavnet du ønsket er opptatt, så vi har endret ditt litt. Du er nå kjent som %1", - "password_same_as_username": "Ditt passord er det samme som ditt brukernavn, vennligst velg et annet passord.", + "username_taken_workaround": "Brukernavnet du ønsket er opptatt, så vi har endret det litt. Du er nå kjent som %1", + "password_same_as_username": "Passordet ditt er det samme som brukernavnet ditt. Velg et annet passord.", "password_same_as_email": "Passordet ditt er det samme som e-postadressen din. Velg et annet passord.", "weak_password": "Svakt passord", "upload_picture": "Last opp bilde", @@ -163,26 +163,26 @@ "info.muted-expiry": "Expiry", "info.muted-no-reason": "Ingen grunn oppgitt.", "info.username-history": "Brukernavnhistorikk", - "info.email-history": "E-post historikk", + "info.email-history": "E-post-historikk", "info.moderation-note": "Moderasjonsnotat ", "info.moderation-note.success": "Moderasjonsnotat ikke lagret ", "info.moderation-note.add": "Legg til notat", "sessions.description": "Denne siden lar deg se alle aktivitetsøkter på dette forumet og tilbakekalle dem om nødvendig. Du kan tilbakekalle din egen økt ved å logge av brukerkontoen din.", "consent.title": "Dine rettigheter & amp; Samtykke", "consent.lead": "Dette forumet samler inn og behandler dine personopplysninger. ", - "consent.intro": "Vi bruker denne informasjonen for å tilpasse brukeropplevelsen din i dette nettforumet, samt for å knytte innleggene du lager til brukerkontoen din. Under registreringstrinnet i Felles brukerhåndtering ble du bedt om å oppgi fullt navn og en e-postadresse. Du kan også velge å oppgi tilleggsinformasjon for å fullføre brukerprofilen din på dette nettstedet.

Vi oppbevarer denne informasjonen i løpet av den tiden du er aktivt på brukerkontoen din, og du kan når som helst trekke tilbake samtykke ved å slette kontoen din. Du kan når som helst be om en kopi av ditt bidrag til dette nettstedet, via dine rettigheter & amp; Samtykke side.

Hvis du har spørsmål eller spørsmål, oppfordrer vi deg til å ta kontakt med dette forumets administrative team.", - "consent.email_intro": "Vi kan fra tid til annen sende deg en e-post til din registrerte e-postadresse for å varsle deg om oppdateringer og/eller informere deg om ny aktivitet som er relevant for deg. Du kan endre hvor ofte vi sender forumsammendrag (eller du kan slå det helt av), og endre hvilke typer oppdateringer du vil motta via brukerinnstillingene dine. Med mindre du har endret dette i brukerinnstillingene, sender ikke dette forumet ut sammendrag via e-post.", - "consent.digest_frequency": "Med mindre dette er eksplisitt endret i brukerinnstillingene dine, leverer dette fellesskapet e-postkoder hver %1.", - "consent.digest_off": "Med mindre dette er eksplisitt endret i brukerinnstillingene dine, sender ikke dette fellesskapet ut e-postkoder", + "consent.intro": "Vi bruker kun denne informasjonen for å tilpasse brukeropplevelsen din i dette nettforumet, og for å knytte innleggene du lager til brukerkontoen din. Under registreringstrinnet i Felles brukerhåndtering ble du bedt om å oppgi fullt navn og en e-postadresse. Du kan også velge å oppgi tilleggsinformasjon for å fullføre brukerprofilen din på dette nettstedet.

Vi oppbevarer denne informasjonen så lenge brukerprofilen din er aktiv, og du kan når som helst trekke tilbake samtykke ved å slette kontoen din. Du kan når som helst be om en kopi av ditt bidrag til dette nettstedet, via dine rettigheter & Samtykkeside.

Hvis du har spørsmål eller bekymringer, oppfordrer vi deg til å ta kontakt med forumets administrative team.", + "consent.email_intro": "Vi kan fra tid til annen sende deg en e-post til din registrerte e-postadresse for å varsle deg om oppdateringer og/eller informere deg om ny aktivitet som er relevant for deg. Du kan endre hvor ofte vi sender forumsammendrag (eller du kan slå det helt av), og endre hvilke typer oppdateringer du vil motta via brukerinnstillingene dine.", + "consent.digest_frequency": "Med mindre dette er eksplisitt endret i brukerinnstillingene dine, leverer dette fellesskapet e-postsammendrag hver %1.", + "consent.digest_off": "Med mindre dette er eksplisitt endret i brukerinnstillingene dine, sender ikke dette fellesskapet ut e-postsammendrag", "consent.received": "Du har gitt samtykke til at dette nettstedet samler inn og behandler informasjonen din. Ingen ytterligere tiltak er nødvendig.", - "consent.not_received": "Du har ikke gitt samtykke til datainnsamling og behandling. Når som helst kan derfor nettsidens administrasjon velge å slette kontoen din for å bli kompatibel med personvernforordningen. ", + "consent.not_received": "Du har ikke gitt samtykke til datainnsamling og behandling. Nettsidens administrasjon kan derfor velge å slette kontoen din når som helst, for å bli kompatibel med personvernforordningen. ", "consent.give": "Gi samtykke", "consent.right_of_access": "Du har rett til innsyn", "consent.right_of_access_description": "På forespørsel har du har rett til å få tilgang til data som samles inn av dette nettstedet. Du kan hente en kopi av disse dataene ved å klikke på riktig knapp nedenfor.", "consent.right_to_rectification": "Du har rett til å få rettet uriktige data ", "consent.right_to_rectification_description": "Du har rett til å endre eller oppdatere uriktige data som er gitt til oss. Brukerprofilen din kan oppdateres ved å redigere profilen din, og innhold på innlegg kan alltid redigeres. Hvis dette ikke er tilfelle, kan du kontakte dette nettstedets administrasjonsteam.", "consent.right_to_erasure": "Du har rett til sletting", - "consent.right_to_erasure_description": "Når som helst kan du tilbakekalle ditt samtykke til datainnsamling og / eller behandling ved å slette brukerkontoen din. Den individuelle profilen din kan slettes, selv om de publiserte innleggene dine blir værende igjen. Hvis du vil slette begge kontoer og alt innhold, vennligst kontakt administrasjonsteamet for dette nettstedet. ", + "consent.right_to_erasure_description": "Du kan når som helst tilbakekalle ditt samtykke til datainnsamling og/eller behandling ved å slette brukerkontoen din. Den individuelle profilen din kan slettes, selv om de publiserte innleggene dine blir værende igjen. Hvis du vil slette begge kontoer og alt innhold, kontakt administrasjonsteamet for dette nettstedet. ", "consent.right_to_data_portability": "Du har retten til dataportabilitet", "consent.right_to_data_portability_description": "Du kan be oss om maskinlesbar eksport av innsamlede data om deg og brukerkontoen din. Du kan gjøre det ved å klikke på riktig knapp nedenfor.", "consent.export_profile": "Eksporter profil (.json)", @@ -191,9 +191,9 @@ "consent.export-uploads-success": "Når du eksporterer opplastinger, får du et varsel når det er fullført.", "consent.export_posts": "Eksporter innlegg (.csv)", "consent.export-posts-success": "Eksporterer innlegg, du får en notifikasjon når eksporten er fullført.", - "emailUpdate.intro": "Vennligst skriv inn e-postadressen din nedenfor. Dette forumet bruker e-postadressen din for å planlegge sammendrag og varsler, samt for gjenoppretting av konto i tilfelle tapt passord.", - "emailUpdate.optional": "Dette feltet e valgfritt. Du er ikke forpliktet til å oppgi e-postadressen din, men uten en validert e-post vil du ikke kunne gjenopprette kontoen din eller logge på med e-posten din.", + "emailUpdate.intro": "Skriv inn e-postadressen din nedenfor. Dette forumet bruker e-postadressen din til planlagte sammendrag og varsler, og for gjenoppretting av konto ved glemt passord.", + "emailUpdate.optional": "Dette feltet er valgfritt. Du er ikke forpliktet til å oppgi e-postadressen din, men uten en validert e-postadresse vil du ikke kunne gjenopprette kontoen din eller logge på med e-postadressen din.", "emailUpdate.required": "Dette feltet er obligatorisk", - "emailUpdate.change-instructions": "En bekreftelses-e-post vil bli sendt til den angitte e-postadressen med en unik lenke. Å få tilgang til den koblingen vil bekrefte at du eier e-postadressen, og den blir aktiv på kontoen din. Du kan når som helst oppdatere e-posten din fra siden til kontoen din.", + "emailUpdate.change-instructions": "En bekreftelses-e-post med en unik lenke vil bli sendt til den angitte e-postadressen. Ved å klikke på lenken, vil du bekrefte at du eier e-postadressen, og den blir aktiv på kontoen din. Du kan når som helst oppdatere e-postadressen på brukerprofilen din.", "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership." } \ No newline at end of file diff --git a/public/language/nb/users.json b/public/language/nb/users.json index d5365477cc..b1aac09034 100644 --- a/public/language/nb/users.json +++ b/public/language/nb/users.json @@ -9,11 +9,11 @@ "load_more": "Last flere", "users-found-search-took": "%1 bruker(e) funnet. Søket tok %2 sekunder.", "filter-by": "Filtrer etter", - "online-only": "Bare påloggede", + "online-only": "Kun tilkoblede", "invite": "Invitér", "prompt-email": "E-poster:", "groups-to-join": "Grupper som en kan bli med i når invitasjonen godtas:", - "invitation-email-sent": "En invitasjons-epost ble sendt til %1", + "invitation-email-sent": "En invitasjons-e-post ble sendt til %1", "user_list": "Brukerliste", "recent_topics": "Seneste tråder", "popular_topics": "Populære tråder", diff --git a/public/language/nl/admin/settings/advanced.json b/public/language/nl/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/nl/admin/settings/advanced.json +++ b/public/language/nl/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/pl/admin/settings/advanced.json b/public/language/pl/admin/settings/advanced.json index d15d74825e..619e26b8de 100644 --- a/public/language/pl/admin/settings/advanced.json +++ b/public/language/pl/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Kiedy forum jest w trybie konserwacji, wszystkie żądania będą przekierowane do statycznej strony oczekiwania. Administratorzy nie są objęci tym przekierowaniem i mogą normalnie korzystać ze strony.", "maintenance-mode.status": "Kod stanu trybu konserwacji", "maintenance-mode.message": "Komunikat na ekranie konserwacji", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Nagłówki", "headers.allow-from": "Ustaw ALLOW-FROM, aby umieścić NodeBB w ramce iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Włączony HSTS (zalecane)", "hsts.maxAge": "Maksymalny wiek HSTS", diff --git a/public/language/pl/admin/settings/user.json b/public/language/pl/admin/settings/user.json index e019daa806..0389a4abaa 100644 --- a/public/language/pl/admin/settings/user.json +++ b/public/language/pl/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Uwierzytelnianie", "email-confirm-interval": "Użytkownik nie może ponownie wysłać e-maila z potwierdzeniem, dopóki nie minie", - "email-confirm-interval2": "minut", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Zezwalaj na logowanie przy użyciu", "allow-login-with.username-email": "Nazwy użytkownika lub adresu email", "allow-login-with.username": "Tylko nazwy użytkownika", diff --git a/public/language/pt-BR/admin/settings/advanced.json b/public/language/pt-BR/admin/settings/advanced.json index f9ebbe4c99..84d1f48c6f 100644 --- a/public/language/pt-BR/admin/settings/advanced.json +++ b/public/language/pt-BR/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Quando o fórum está em modo de manutenção, todas as solicitações serão redirecionadas para uma página estática. Administradores não sofrem este redirecionamento e podem acessar o site normalmente.", "maintenance-mode.status": "Código de Status de Modo de Mautenção", "maintenance-mode.message": "Mensagem de Manutenção", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Cabeçalhos", "headers.allow-from": "Defina ALLOW-FROM para Colocar o NodeBB em um iFrame", "headers.csp-frame-ancestors": "Define o cabeçalho de Content-Security-Policy frame-ancestors para Colocar o NodeBB em um iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Habilitar HSTS (recomendado)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/pt-BR/admin/settings/user.json b/public/language/pt-BR/admin/settings/user.json index a5b0a196a8..069cfb422f 100644 --- a/public/language/pt-BR/admin/settings/user.json +++ b/public/language/pt-BR/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Autenticação", "email-confirm-interval": "O usuário não pode reenviar um e-mail de confirmação até", - "email-confirm-interval2": "minutos decorridos", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Permitir login com", "allow-login-with.username-email": "Nome de Usuário ou E-mail", "allow-login-with.username": "Apenas Nome de Usuário", diff --git a/public/language/pt-PT/admin/settings/advanced.json b/public/language/pt-PT/admin/settings/advanced.json index b31b5f7579..5b01a7fefd 100644 --- a/public/language/pt-PT/admin/settings/advanced.json +++ b/public/language/pt-PT/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Código de Estado do Modo de Manutenção", "maintenance-mode.message": "Mensagem de Manutenção", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/ro/admin/settings/advanced.json b/public/language/ro/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/ro/admin/settings/advanced.json +++ b/public/language/ro/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/ru/admin/settings/advanced.json b/public/language/ru/admin/settings/advanced.json index b778295dfa..caf3bd0ef3 100644 --- a/public/language/ru/admin/settings/advanced.json +++ b/public/language/ru/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Когда включен режим техобслуживания, все запросы перенаправляются на специальную страницу-заглушку. Только администраторы сохраняют обычный доступ к форуму.", "maintenance-mode.status": "Код состояния HTTP для страницы-заглушки", "maintenance-mode.message": "Сообщение для пользователей", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Заголовки", "headers.allow-from": "Опция ALLOW-FROM для использования NodeBB через iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Строгая политика безопасности транспортного уровня", "hsts.enabled": "Включить HSTS (рекомендуется)", "hsts.maxAge": "Срок действия заголовка HSTS", diff --git a/public/language/ru/admin/settings/user.json b/public/language/ru/admin/settings/user.json index 357396a153..cfd9c08a47 100644 --- a/public/language/ru/admin/settings/user.json +++ b/public/language/ru/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Авторизация", "email-confirm-interval": "Пользователь не сможет снова запросить код подтверждения, пока не пройдёт", - "email-confirm-interval2": "минут", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Разрешить вход с помощью", "allow-login-with.username-email": "Имени пользователя или адреса электронной почты", "allow-login-with.username": "Только имени пользователя", diff --git a/public/language/rw/admin/settings/advanced.json b/public/language/rw/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/rw/admin/settings/advanced.json +++ b/public/language/rw/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/sc/admin/settings/advanced.json b/public/language/sc/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/sc/admin/settings/advanced.json +++ b/public/language/sc/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/sk/admin/settings/advanced.json b/public/language/sk/admin/settings/advanced.json index 10bf96a719..a464b384da 100644 --- a/public/language/sk/admin/settings/advanced.json +++ b/public/language/sk/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Ak je fórum v režime údržby, všetky požiadavky budú presmerované na statickú stránku. Administrátori sú vylúčení z tohto presmerovania a majú prístup na stránku normálne.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Správa údržby", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Hlavičky", "headers.allow-from": "Nastavte ALLOW-FROM pro umístění NodeBB do iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Prísne zabezpečenie prenosu", "hsts.enabled": "Povoliť HSTS (odporúčané)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/sk/admin/settings/user.json b/public/language/sk/admin/settings/user.json index 0c3cddcb0a..18b8367c0b 100644 --- a/public/language/sk/admin/settings/user.json +++ b/public/language/sk/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Overenie", "email-confirm-interval": "Používateľ nesmie požiadať o znovu odoslanie potvrdzujúceho e-mailu do", - "email-confirm-interval2": "minút uplynulo", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Povoliť prihlásenie pomocou", "allow-login-with.username-email": "Používateľské meno alebo e-mail", "allow-login-with.username": "Iba používateľské meno", diff --git a/public/language/sl/admin/settings/advanced.json b/public/language/sl/admin/settings/advanced.json index be9f3de4dd..ab1242a9b4 100644 --- a/public/language/sl/admin/settings/advanced.json +++ b/public/language/sl/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Ko je forum v načinu vzdrževanja, bodo vse zahteve preusmerjene na statično stran za shranjevanje. Skrbniki so izvzeti iz te preusmeritve in lahko normalno dostopajo do spletnega mesta.", "maintenance-mode.status": "Koda stanja načina vzdrževanja", "maintenance-mode.message": "Sporočilo o vzdrževanju", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Glave", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Omogočen HSTS (priporočeno)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/sq-AL/admin/settings/advanced.json b/public/language/sq-AL/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/sq-AL/admin/settings/advanced.json +++ b/public/language/sq-AL/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/sr/admin/settings/advanced.json b/public/language/sr/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/sr/admin/settings/advanced.json +++ b/public/language/sr/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/sr/admin/settings/user.json b/public/language/sr/admin/settings/user.json index c8fc77bfd9..041e750fcc 100644 --- a/public/language/sr/admin/settings/user.json +++ b/public/language/sr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Auntentifikacija", "email-confirm-interval": "Korisnik možda neće moći da ponovo pošalje email konfirmaciju sve dok", - "email-confirm-interval2": "minuta je prošlo", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Dozvoli login sa", "allow-login-with.username-email": "Korisničko ime ili Email", "allow-login-with.username": "Samo korisničko ime", diff --git a/public/language/sr/error.json b/public/language/sr/error.json index 0e27c0d5c0..ad5e181e66 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -205,8 +205,8 @@ "no-connection": "Изгледа да постоји проблем са вашом интернет везом", "socket-reconnect-failed": "Тренутно није могуће приступити серверу. Кликните овде да бисте покушали поново или покушајте поново касније", "plugin-not-whitelisted": "Инсталација додатне компоненте &ndash није могућа; преко ACP-а могу се инсталирати само додатне компоненте које је на белој листи ставио NodeBB Package Manager", - "plugins-set-in-configuration": "You are not allowed to change plugin state as they are defined at runtime (config.json, environmental variables or terminal arguments), please modify the configuration instead.", - "theme-not-set-in-configuration": "When defining active plugins in configuration, changing themes requires adding the new theme to the list of active plugins before updating it in the ACP", + "plugins-set-in-configuration": "Није вам дозвољено да мењате стање додатне компоненте онако како је дефинисано у време извршавања (config.json, променљиве окружења или аргументи терминала), уместо тога измените конфигурацију.", + "theme-not-set-in-configuration": "Приликом дефинисања активних додатних компоненти у конфигурацији, промена тема захтева додавање нове теме на листу активних додатних компоненти пре ажурирања у ACP", "topic-event-unrecognized": "Догађај из теме „%1“ није препознат", "cant-set-child-as-parent": "Није могуће поставити подређену категорију као надређену", "cant-set-self-as-parent": "Није могуће поставити себе као надређену категорију", diff --git a/public/language/sr/notifications.json b/public/language/sr/notifications.json index 51f985cce3..fe330c996b 100644 --- a/public/language/sr/notifications.json +++ b/public/language/sr/notifications.json @@ -24,8 +24,8 @@ "upvoted_your_post_in": "%1 је гласао за вашу поруку у %2", "upvoted_your_post_in_dual": "%1 и %2 осталих су гласали за вашу поруку у %3.", "upvoted_your_post_in_multiple": "%1 и %2 осталих су гласали за вашу поруку у %3.", - "moved_your_post": "%1 је померио вашу поруку у %2", - "moved_your_topic": "%1 је померио %2", + "moved_your_post": "%1 је преместио вашу поруку у %2", + "moved_your_topic": "%1 је преместио %2", "user_flagged_post_in": "%1 је означио заставицом поруку у %2", "user_flagged_post_in_dual": "%1 и %2 су означили заставицом поруку у %3", "user_flagged_post_in_multiple": "%1 и осталих %2 су означили заставицом поруку у %3", diff --git a/public/language/sr/user.json b/public/language/sr/user.json index b30dc871fa..6c2bca7c1f 100644 --- a/public/language/sr/user.json +++ b/public/language/sr/user.json @@ -195,5 +195,5 @@ "emailUpdate.optional": "Ово поље је опционо. Нисте обавезни да наведете своју адресу е-поште, али без ваљане е-поште нећете моћи да вратите свој налог или да се пријавите помоћу своје е-поште.", "emailUpdate.required": "Ово поље је обавезно.", "emailUpdate.change-instructions": "На унету адресу е-поште биће послата потврдна порука са јединственом везом. Приступ тој вези потврдиће ваше власништво над адресом е-поште и она ће постати активна на вашем налогу. У било ком тренутку можете да ажурирате своју е-пошту на страници налога.", - "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership." + "emailUpdate.password-challenge": "Унесите лозинку да бисте потврдили власништво над налогом." } \ No newline at end of file diff --git a/public/language/sv/admin/settings/advanced.json b/public/language/sv/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/sv/admin/settings/advanced.json +++ b/public/language/sv/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/th/admin/settings/advanced.json b/public/language/th/admin/settings/advanced.json index e372d48d70..982eaa2f64 100644 --- a/public/language/th/admin/settings/advanced.json +++ b/public/language/th/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Maintenance Message", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Headers", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/tr/admin/advanced/cache.json b/public/language/tr/admin/advanced/cache.json index a3f3620c89..a22bd4e060 100644 --- a/public/language/tr/admin/advanced/cache.json +++ b/public/language/tr/admin/advanced/cache.json @@ -1,8 +1,8 @@ { "post-cache": "İleti Önbelleği", - "group-cache": "Group Cache", - "local-cache": "Local Cache", - "object-cache": "Object Cache", + "group-cache": "Grup Önbelleği", + "local-cache": "Yerel Önbellek", + "object-cache": "Öğe Önbelleği", "percent-full": "%1% Tam", "post-cache-size": "İleti Önbellek Boyutu", "items-in-cache": "Önbellekteki Öğeler" diff --git a/public/language/tr/admin/settings/advanced.json b/public/language/tr/admin/settings/advanced.json index 91131d3bdd..84fc2f5ad5 100644 --- a/public/language/tr/admin/settings/advanced.json +++ b/public/language/tr/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Forum bakım modundayken, tüm istekler statik bir bekletme sayfasına yönlendirilir. Yöneticiler bu yönlendirmeden muaftır ve siteye normal olarak erişebilirler.", "maintenance-mode.status": "Bakım Modu Durum Kodu", "maintenance-mode.message": "Bakım Mesajı", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Başlıklar", "headers.allow-from": "NodeBB'yi bir iFrame'e yerleştirmek için ALLOW-FROM'u ayarla", "headers.csp-frame-ancestors": "NodeBB'yi bir iFrame'e yerleştirmek için Content-Security-Policy frame-ancestors başlığını ayarla", @@ -19,6 +20,8 @@ "headers.coep-help": "Etkinleştirildiğinde (varsayılan), başlığı require-corp olarak ayarlayacaktır.", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin Kaynak Politikası", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "STS", "hsts.enabled": "HSTS'yi etkinleştir (önerilir)", "hsts.maxAge": "HSTS Maksimum Yaş", diff --git a/public/language/tr/admin/settings/post.json b/public/language/tr/admin/settings/post.json index d3577d4d42..8034b6f1d6 100644 --- a/public/language/tr/admin/settings/post.json +++ b/public/language/tr/admin/settings/post.json @@ -51,7 +51,7 @@ "signature.disable": "İmzaları devre dışı bırak", "signature.no-links": "İmzalarda linkleri devre dışı bırak", "signature.no-images": "İmzalarda resimleri devre dışı bırak", - "signature.hide-duplicates": "Hide duplicate signatures in topics", + "signature.hide-duplicates": "Başlıklardaki ikinci kopya imzaları gizle", "signature.max-length": "Maksimum İmza Uzunluğu", "composer": "Editör Ayarları", "composer-help": "Aşağıdaki ayarlar, yeni konular oluşturduklarında veya mevcut konulara cevap verdiklerinde kullanıcıların \n\t\t\t\tyazı alanının işlevselliğini ve / veya görünümünü yönetmelerini sağlar.", diff --git a/public/language/tr/admin/settings/reputation.json b/public/language/tr/admin/settings/reputation.json index 797b2e2550..57d50011b6 100644 --- a/public/language/tr/admin/settings/reputation.json +++ b/public/language/tr/admin/settings/reputation.json @@ -24,8 +24,8 @@ "flags.limit-per-target-help": "Bir gönderi veya kullanıcı birden çok kez şikayet edildiğinde, her ek şikayet bir \"rapor\" olarak kabul edilir ve orijinal şikayete eklenir. Bir öğenin alabileceği rapor sayısını sınırlamak için bu seçeneği sıfırdan farklı bir sayıya ayarlayın.", "flags.auto-flag-on-downvote-threshold": "Bir iletinin otomatik olarak raporlanması için alması gereken eksi oy sayısı ( Otomatik şikayet özelliğini iptal etmek için buraya 0 giriniz, varsayılan: 0)", "flags.auto-resolve-on-ban": "Bir kullanıcı forumdan yasaklandığında otomatik olarak şikayetlerini çözülmüş say", - "flags.action-on-resolve": "Do the following when a flag is resolved", - "flags.action-on-reject": "Do the following when a flag is rejected", - "flags.action.nothing": "Do nothing", - "flags.action.rescind": "Rescind the notification send to moderators/administrators" + "flags.action-on-resolve": "Bir şikayet çözümlendiğinde şunu yap", + "flags.action-on-reject": "Bir şikayet reddedildiğinde şunu yap", + "flags.action.nothing": "Hiçbir şey yapma", + "flags.action.rescind": "Moderatör ve Adminlere gönderilen bildirimleri iptal et" } \ 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 9c40e644a7..4b9c6a1952 100644 --- a/public/language/tr/admin/settings/user.json +++ b/public/language/tr/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Kimlik Doğrulama", "email-confirm-interval": "Kullanıcı onay e-postasını tekrar gönderemez", - "email-confirm-interval2": "dakika geçti", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Girişe izin ver:", "allow-login-with.username-email": "Kullanıcı Adı veya E-posta", "allow-login-with.username": "Sadece kullanıcı adı", diff --git a/public/language/tr/user.json b/public/language/tr/user.json index b687e2de43..1809554c6d 100644 --- a/public/language/tr/user.json +++ b/public/language/tr/user.json @@ -195,5 +195,5 @@ "emailUpdate.optional": "Bu bölüm tercihe bağlıdır. Bir e-posta adresi girmek zorunda değilsiniz, fakat onaylanmış bir e-posta adresi olmadan hesabınızı veya girişinizi e-posta adresiniz ile kurtaramazsınız. ", "emailUpdate.required": "Bu bölüm zorunludur.", "emailUpdate.change-instructions": "Girilen e-posta adresine kişiye özel bir bağlantı içeren bir onay e-postası gönderilecektir. Bu bağlantıya erişmek, e-posta adresinin sahibi olduğunuzu onaylayacak ve hesabınızda etkin hale gelecektir. İstediğiniz zaman, hesap sayfanızdan kayıtlı e-postanızı güncelleyebilirsiniz.", - "emailUpdate.password-challenge": "Please enter your password in order to verify account ownership." + "emailUpdate.password-challenge": "Hesabın size ait olduğunu doğrulamak için lütfen şifrenizi giriniz" } \ No newline at end of file diff --git a/public/language/uk/admin/settings/advanced.json b/public/language/uk/admin/settings/advanced.json index ecc621aadc..58e45a1bfb 100644 --- a/public/language/uk/admin/settings/advanced.json +++ b/public/language/uk/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Коли форум знаходиться в режимі обслуговування, всі запити перенаправляються на статичну сторінку. Адміністратори, в свою чергу, не перенаправляються і можуть відвідувати сайт у звичному режимі.", "maintenance-mode.status": "Maintenance Mode Status Code", "maintenance-mode.message": "Повідомлення обслуговування", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "Заголовки", "headers.allow-from": "Задати ALLOW-FROM для розміщення NodeBB в iFrame", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Strict Transport Security", "hsts.enabled": "Enabled HSTS (recommended)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/uk/admin/settings/user.json b/public/language/uk/admin/settings/user.json index 29a4291d57..cb43123c90 100644 --- a/public/language/uk/admin/settings/user.json +++ b/public/language/uk/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Аутентифікація", "email-confirm-interval": "Користувач не може повторно надіслати підтвердження електронної пошти поки не мине", - "email-confirm-interval2": "хвилин", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Дозволити вхід використовуючи", "allow-login-with.username-email": "Ім'я користувача або електронну пошту", "allow-login-with.username": "Тільки ім'я користувача", diff --git a/public/language/vi/admin/settings/advanced.json b/public/language/vi/admin/settings/advanced.json index 9a64310975..4f4b14039f 100644 --- a/public/language/vi/admin/settings/advanced.json +++ b/public/language/vi/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "Khi diễn đàn ở chế độ bảo trì, tất cả các yêu cầu sẽ được chuyển hướng đến một trang giữ tĩnh. Quản trị viên không bị chuyển hướng này và có thể truy cập trang bình thường.", "maintenance-mode.status": "Mã Trạng Thái Chế Độ Bảo Trì", "maintenance-mode.message": "Thông Báo Bảo Trì", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Chọn các nhóm nên được miễn chế độ bảo trì", "headers": "Headers", "headers.allow-from": "Đặt ALLOW-FROM để đặt NodeBB trong iFrame", "headers.csp-frame-ancestors": "Đặt giá trị Content-Security-Policy frame-ancestors ở phần đầu trang để Đặt NodeBB trong iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "Khi được bật (mặc định), sẽ đặt tiêu đề thành require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "Bảo Vệ Truyền Tải Nghiêm Ngặt", "hsts.enabled": "Đã bật HSTS (đề nghị)", "hsts.maxAge": "HSTS Tuổi Tối Đa", diff --git a/public/language/vi/admin/settings/email.json b/public/language/vi/admin/settings/email.json index a1854f39a0..cdd5a01772 100644 --- a/public/language/vi/admin/settings/email.json +++ b/public/language/vi/admin/settings/email.json @@ -5,7 +5,7 @@ "from": "Tên Người Gửi", "from-help": "Tên người gửi hiển thị trong email.", - "confirmation-settings": "Confirmation", + "confirmation-settings": "Xác nhận", "confirmation.expiry": "Hours to keep email confirmation link valid", "smtp-transport": "Truyền Tải SMTP", diff --git a/public/language/vi/admin/settings/user.json b/public/language/vi/admin/settings/user.json index 6aa242566f..0fd9f6f18e 100644 --- a/public/language/vi/admin/settings/user.json +++ b/public/language/vi/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "Xác thực", "email-confirm-interval": "Người dùng không thể gửi lại email xác nhận cho đến khi", - "email-confirm-interval2": "phút đã trôi qua", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "Cho phép đăng nhập với", "allow-login-with.username-email": "Tên Đăng Nhập hoặc Email", "allow-login-with.username": "Chỉ Tên Đăng Nhập", diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json index 8857255b41..2e456615c0 100644 --- a/public/language/zh-CN/admin/menu.json +++ b/public/language/zh-CN/admin/menu.json @@ -76,7 +76,7 @@ "logout": "登出", "view-forum": "查看论坛", - "search.placeholder": "Search settings", + "search.placeholder": "搜索设置", "search.no-results": "没有可用结果…", "search.search-forum": "搜索论坛为", "search.keep-typing": "输入更多以查看结果...", diff --git a/public/language/zh-CN/admin/settings/advanced.json b/public/language/zh-CN/admin/settings/advanced.json index 48923a0fbe..45a12d552a 100644 --- a/public/language/zh-CN/admin/settings/advanced.json +++ b/public/language/zh-CN/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "当论坛处在维护模式时,所有请求将被重定向到一个静态页面。管理员不受重定向限制,并可正常访问站点。", "maintenance-mode.status": "维护模式状态码", "maintenance-mode.message": "维护消息", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "标题", "headers.allow-from": "设置 ALLOW-FROM 来放置 NodeBB 于 iFrame 中", "headers.csp-frame-ancestors": "设置 Content-Security-Policy frame-ancestors 响应头来将 NodeBB 置于 iFrame 中", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "严格安全传输(HSTS)", "hsts.enabled": "启用HSTS(推荐)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/zh-CN/admin/settings/pagination.json b/public/language/zh-CN/admin/settings/pagination.json index 8269cbc4be..f3565fb555 100644 --- a/public/language/zh-CN/admin/settings/pagination.json +++ b/public/language/zh-CN/admin/settings/pagination.json @@ -1,7 +1,7 @@ { "pagination": "分页设置", "enable": "在主题和帖子使用分页替代无限滚动浏览。", - "posts": "Post Pagination", + "posts": "帖子分页", "topics": "话题分页", "posts-per-page": "每页帖子数", "max-posts-per-page": "每页最多帖子数", diff --git a/public/language/zh-CN/admin/settings/user.json b/public/language/zh-CN/admin/settings/user.json index 2eef5b6245..f78cc552c4 100644 --- a/public/language/zh-CN/admin/settings/user.json +++ b/public/language/zh-CN/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "验证", "email-confirm-interval": "用户无法重新发送电子邮箱激活直到", - "email-confirm-interval2": "分钟已经过", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "允许使用何种登录名", "allow-login-with.username-email": "用户名或者邮箱", "allow-login-with.username": "仅限用户名", diff --git a/public/language/zh-CN/global.json b/public/language/zh-CN/global.json index f032d779d1..cd05e59b55 100644 --- a/public/language/zh-CN/global.json +++ b/public/language/zh-CN/global.json @@ -23,7 +23,7 @@ "close": "关闭", "pagination": "分页", "pagination.out_of": "%1 / %2", - "pagination.enter_index": "Go to post index", + "pagination.enter_index": "跳转到帖子", "header.admin": "管理", "header.categories": "版块", "header.recent": "最新", diff --git a/public/language/zh-CN/modules.json b/public/language/zh-CN/modules.json index d7684e6794..3dff397d9d 100644 --- a/public/language/zh-CN/modules.json +++ b/public/language/zh-CN/modules.json @@ -6,8 +6,8 @@ "chat.no_active": "暂无聊天", "chat.user_typing": "%1 正在输入……", "chat.user_has_messaged_you": "%1 向您发送了消息。", - "chat.see_all": "All chats", - "chat.mark_all_read": "Mark all read", + "chat.see_all": "全部对话", + "chat.mark_all_read": "标记全部已读", "chat.no-messages": "请选择接收人,以查看聊天消息历史", "chat.no-users-in-room": "此聊天室中没有用户", "chat.recent-chats": "最近聊天", diff --git a/public/language/zh-CN/notifications.json b/public/language/zh-CN/notifications.json index ebb702d8ff..cfd4b7fd3d 100644 --- a/public/language/zh-CN/notifications.json +++ b/public/language/zh-CN/notifications.json @@ -1,8 +1,8 @@ { "title": "通知", "no_notifs": "您没有新的通知", - "see_all": "All notifications", - "mark_all_read": "Mark all read", + "see_all": "全部通知", + "mark_all_read": "标记全部已读", "back_to_home": "返回 %1", "outgoing_link": "站外链接", "outgoing_link_message": "您正在离开 %1", diff --git a/public/language/zh-CN/post-queue.json b/public/language/zh-CN/post-queue.json index 61a6d2541e..bfcebbcd04 100644 --- a/public/language/zh-CN/post-queue.json +++ b/public/language/zh-CN/post-queue.json @@ -18,14 +18,14 @@ "remove": "移除", "notify": "Notify", "notify-user": "Notify User", - "confirm-reject": "Do you want to reject this post?", - "bulk-actions": "Bulk Actions", + "confirm-reject": "你想要拒绝这个帖子吗?", + "bulk-actions": "批量操作", "accept-all": "全部同意", "accept-selected": "同意选中项", "reject-all": "全部拒绝", - "reject-all-confirm": "Do you want to reject all posts?", + "reject-all-confirm": "你想要拒绝所有帖子吗?", "reject-selected": "拒绝选中项", - "reject-selected-confirm": "Do you want to reject %1 selected posts?", - "bulk-accept-success": "%1 posts accepted", - "bulk-reject-success": "%1 posts rejected" + "reject-selected-confirm": "您确定要拒绝%1个选择的帖子吗?", + "bulk-accept-success": "%1个帖子已接受", + "bulk-reject-success": "%1个帖子已拒绝" } \ No newline at end of file diff --git a/public/language/zh-CN/register.json b/public/language/zh-CN/register.json index 867f6adf70..e24060429c 100644 --- a/public/language/zh-CN/register.json +++ b/public/language/zh-CN/register.json @@ -21,7 +21,7 @@ "registration-queue-average-time": "我们通常的注册批准时间为 %1 小时 %2 分钟。", "registration-queue-auto-approve-time": "您在此论坛的帐号将会在最迟 %1  小时后被完全激活。", "interstitial.intro": "我们需要一些额外信息以更新您的账号。", - "interstitial.intro-new": "We'd like some additional information before we can create your account…", + "interstitial.intro-new": "我们需要一些额外信息以创建您的账号。", "interstitial.errors-found": "请检查输入的信息:", "gdpr_agree_data": "我同意此网站对我个人信息的收集与处理。", "gdpr_agree_email": "我同意此网站向我发送摘要和通知邮件。", diff --git a/public/language/zh-CN/user.json b/public/language/zh-CN/user.json index 5f94062335..904ac4a7c4 100644 --- a/public/language/zh-CN/user.json +++ b/public/language/zh-CN/user.json @@ -1,6 +1,6 @@ { "banned": "已封禁", - "muted": "Muted", + "muted": "禁言", "offline": "离线", "deleted": "已删除", "username": "用户名", @@ -44,8 +44,8 @@ "following": "关注", "blocks": "屏蔽", "block_toggle": "屏蔽该用户", - "block_user": "封禁用户", - "unblock_user": "解封用户", + "block_user": "屏蔽用户", + "unblock_user": "解除屏蔽用户", "aboutme": "关于我", "signature": "签名档", "birthday": "生日", @@ -108,7 +108,7 @@ "has_no_ignored_topics": "此用户尚未忽略任何主题。", "has_no_upvoted_posts": "此用户还未顶过任何帖子。", "has_no_downvoted_posts": "此用户还未踩过任何帖子。", - "has_no_controversial_posts": "This user does not have any downvoted posts yet.", + "has_no_controversial_posts": "此用户没有任何踩过的帖子。", "has_no_blocks": "您没有屏蔽其他用户。", "email_hidden": "电子邮箱已隐藏", "hidden": "隐藏", @@ -157,9 +157,9 @@ "info.banned-permanently": "永久封禁", "info.banned-reason-label": "原因", "info.banned-no-reason": "没有原因", - "info.mute-history": "Recent Mute History", - "info.no-mute-history": "This user has never been muted", - "info.muted-until": "Muted until %1", + "info.mute-history": "最近禁言历史", + "info.no-mute-history": "该用户从未被禁言", + "info.muted-until": "禁言到 %1", "info.muted-expiry": "Expiry", "info.muted-no-reason": "没有原因", "info.username-history": "历史用户名", diff --git a/public/language/zh-TW/admin/settings/advanced.json b/public/language/zh-TW/admin/settings/advanced.json index 1ce6b993a7..454475cb71 100644 --- a/public/language/zh-TW/admin/settings/advanced.json +++ b/public/language/zh-TW/admin/settings/advanced.json @@ -3,6 +3,7 @@ "maintenance-mode.help": "當論壇處在維護模式時,所有請求將被重導向到一個靜態頁面。管理員不受重導向限制,並可正常訪問網站。", "maintenance-mode.status": "維護模式狀態碼", "maintenance-mode.message": "維護訊息", + "maintenance-mode.groups-exempt-from-maintenance-mode": "Select groups that should be exempt from maintenance mode", "headers": "標題", "headers.allow-from": "設定 ALLOW-FROM 來放置 NodeBB 於 iFrame 中", "headers.csp-frame-ancestors": "Set Content-Security-Policy frame-ancestors header to Place NodeBB in an iFrame", @@ -19,6 +20,8 @@ "headers.coep-help": "When enabled (default), will set the header to require-corp", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", + "headers.permissions-policy": "Permissions-Policy", + "headers.permissions-policy-help": "Allows setting permissions policy header, for example \"geolocation=*, camera=()\", see this for more info.", "hsts": "嚴格安全傳輸", "hsts.enabled": "啟用HSTS(推薦)", "hsts.maxAge": "HSTS Max Age", diff --git a/public/language/zh-TW/admin/settings/user.json b/public/language/zh-TW/admin/settings/user.json index 3af23f0a2b..6848e90747 100644 --- a/public/language/zh-TW/admin/settings/user.json +++ b/public/language/zh-TW/admin/settings/user.json @@ -1,7 +1,7 @@ { "authentication": "驗證", "email-confirm-interval": "使用者無法重新發送電子信箱確認信直到", - "email-confirm-interval2": "分鐘已經過", + "email-confirm-interval2": "minutes have elapsed", "allow-login-with": "允許使用何種登入名", "allow-login-with.username-email": "使用者名或者電子信箱", "allow-login-with.username": "僅限使用者名", diff --git a/public/openapi/read.yaml b/public/openapi/read.yaml index 31b446d351..ce6c0936fe 100644 --- a/public/openapi/read.yaml +++ b/public/openapi/read.yaml @@ -96,6 +96,8 @@ paths: $ref: 'read/admin/settings/user.yaml' /api/admin/settings/post: $ref: 'read/admin/settings/post.yaml' + /api/admin/settings/advanced: + $ref: 'read/admin/settings/advanced.yaml' /api/admin/manage/categories: $ref: 'read/admin/manage/categories.yaml' "/api/admin/manage/categories/{category_id}": diff --git a/public/openapi/read/admin/settings/advanced.yaml b/public/openapi/read/admin/settings/advanced.yaml new file mode 100644 index 0000000000..2cebeeb7e9 --- /dev/null +++ b/public/openapi/read/admin/settings/advanced.yaml @@ -0,0 +1,18 @@ +get: + tags: + - admin + summary: Get advanced settings + responses: + "200": + description: "" + content: + application/json: + schema: + allOf: + - type: object + properties: + groupsExemptFromMaintenanceMode: + type: array + items: + $ref: ../../../components/schemas/GroupObject.yaml#/GroupDataObject + - $ref: ../../../components/schemas/CommonProps.yaml#/CommonProps \ No newline at end of file diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index d5eb350038..d00c8f737a 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -269,7 +269,11 @@ define('admin/manage/categories', [ categories: categories, parentCategory: parentCategory, }, function (html) { - container.append(html); + if (container.find('.category-row').length) { + container.find('.category-row').after(html); + } else { + container.append(html); + } // Disable expand toggle if (!categories.length) { diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 1ae52a9cb1..d7fcac6eb5 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -44,9 +44,7 @@ ajaxify.widgets = { render: render }; quiet = true; } - app.leaveCurrentRoom(); - - $(window).off('scroll'); + ajaxify.cleanup(url, ajaxify.data.template.name); if ($('#content').hasClass('ajaxifying') && apiXHR) { apiXHR.abort(); @@ -456,6 +454,12 @@ ajaxify.widgets = { render: render }; }); }; + ajaxify.cleanup = (url, tpl_url) => { + app.leaveCurrentRoom(); + $(window).off('scroll'); + hooks.fire('action:ajaxify.cleanup', { url, tpl_url }); + }; + require(['translator', 'benchpress'], function (translator, Benchpress) { translator.translate('[[error:no-connection]]'); translator.translate('[[error:socket-reconnect-failed]]'); diff --git a/public/src/client/topic.js b/public/src/client/topic.js index f9a8ca05b3..961fcd74c3 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -73,17 +73,39 @@ define('forum/topic', [ }; function handleTopicSearch() { - if (config.topicSearchEnabled) { - require(['mousetrap', 'search'], function (mousetrap, search) { - mousetrap.bind(['command+f', 'ctrl+f'], function (e) { - if (ajaxify.data.template.topic) { + require(['mousetrap'], (mousetrap) => { + if (config.topicSearchEnabled) { + require(['search'], function (search) { + mousetrap.bind(['command+f', 'ctrl+f'], function (e) { e.preventDefault(); $('#search-fields input').val('in:topic-' + ajaxify.data.tid + ' '); search.showAndFocusInput(); - } + }); + + hooks.onPage('action:ajaxify.cleanup', () => { + mousetrap.unbind(['command+f', 'ctrl+f']); + }); }); + } + + mousetrap.bind('j', () => { + const index = navigator.getIndex(); + const count = navigator.getCount(); + if (index === count) { + return; + } + + navigator.scrollToIndex(index, true, 0); }); - } + + mousetrap.bind('k', () => { + const index = navigator.getIndex(); + if (index === 1) { + return; + } + navigator.scrollToIndex(index - 2, true, 0); + }); + }); } Topic.toTop = function () { diff --git a/public/src/modules/helpers.common.js b/public/src/modules/helpers.common.js index 25907fb446..04ab16c3f8 100644 --- a/public/src/modules/helpers.common.js +++ b/public/src/modules/helpers.common.js @@ -181,6 +181,7 @@ module.exports = function (utils, Benchpress, relative_path) { } function renderTopicEvents(index, sort) { + console.warn('[renderTopicEvents] deprecated, use a partial at partials/topic/event.tpl'); if (sort === 'most_votes') { return ''; } diff --git a/public/src/modules/messages.js b/public/src/modules/messages.js index 1f473fed6a..18120ae8a4 100644 --- a/public/src/modules/messages.js +++ b/public/src/modules/messages.js @@ -96,6 +96,11 @@ define('messages', ['bootbox', 'translator', 'storage', 'alerts', 'hooks'], func params.delete('register'); } + if (params.has('lang') && params.get('lang') === config.defaultLang) { + console.info(`The "lang" parameter was passed in to set the language to "${params.get('lang')}", but that is already the forum default language.`); + params.delete('lang'); + } + const qs = params.toString(); ajaxify.updateHistory(ajaxify.currentPage + (qs ? `?${qs}` : '') + document.location.hash, true); } diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js index 2937470707..75ac147621 100644 --- a/public/src/modules/navigator.js +++ b/public/src/modules/navigator.js @@ -47,7 +47,6 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct thumb = $('.scroller-thumb'); thumbText = thumb.find('.thumb-text'); - $(window).off('scroll', navigator.delayedUpdate).on('scroll', navigator.delayedUpdate); paginationBlockEl.find('.dropdown-menu').off('click').on('click', function (e) { @@ -331,6 +330,8 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct return parts[1] + '/' + parts[2] + '/' + parts[3] + (index ? '/' + index : ''); } + navigator.getCount = () => count; + navigator.setCount = function (value) { value = parseInt(value, 10); if (value === count) { @@ -440,6 +441,14 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct toggle(!!count); }; + navigator.getIndex = () => index; + + navigator.setIndex = (newIndex) => { + index = newIndex + 1; + navigator.updateTextAndProgressBar(); + setThumbToIndex(index); + }; + navigator.updateTextAndProgressBar = function () { if (!utils.isNumber(index)) { return; @@ -544,20 +553,22 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct navigator.scrollToPostIndex = function (postIndex, highlight, duration) { const scrollTo = components.get('post', 'index', postIndex); - navigator.scrollToElement(scrollTo, highlight, duration); + navigator.scrollToElement(scrollTo, highlight, duration, postIndex); }; navigator.scrollToTopicIndex = function (topicIndex, highlight, duration) { const scrollTo = $('[component="category/topic"][data-index="' + topicIndex + '"]'); - navigator.scrollToElement(scrollTo, highlight, duration); + navigator.scrollToElement(scrollTo, highlight, duration, topicIndex); }; - navigator.scrollToElement = function (scrollTo, highlight, duration) { + navigator.scrollToElement = async (scrollTo, highlight, duration, newIndex = null) => { if (!scrollTo.length) { navigator.scrollActive = false; return; } + await hooks.fire('filter:navigator.scroll', { scrollTo, highlight, duration, newIndex }); + const postHeight = scrollTo.outerHeight(true); const navbarHeight = components.get('navbar').outerHeight(true) || 0; const topicHeaderHeight = $('.topic-header').outerHeight(true) || 0; @@ -573,9 +584,11 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct function animateScroll() { function reenableScroll() { // Re-enable onScroll behaviour - $(window).on('scroll', navigator.delayedUpdate); - const scrollToRect = scrollTo.get(0).getBoundingClientRect(); - navigator.update(scrollToRect.top); + setTimeout(() => { // fixes race condition from jQuery — onAnimateComplete called too quickly + $(window).on('scroll', navigator.delayedUpdate); + + hooks.fire('action:navigator.scrolled', { scrollTo, highlight, duration, newIndex }); + }, 50); } function onAnimateComplete() { if (done) { @@ -586,8 +599,13 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct navigator.scrollActive = false; highlightPost(); - $('body').scrollTop($('body').scrollTop() - 1); - $('html').scrollTop($('html').scrollTop() - 1); + + const scrollToRect = scrollTo.get(0).getBoundingClientRect(); + if (!newIndex) { + navigator.update(scrollToRect.top); + } else { + navigator.setIndex(newIndex); + } } let scrollTop = 0; diff --git a/src/api/helpers.js b/src/api/helpers.js index fd215aa241..24c2540ccb 100644 --- a/src/api/helpers.js +++ b/src/api/helpers.js @@ -13,7 +13,7 @@ const events = require('../events'); exports.setDefaultPostData = function (reqOrSocket, data) { data.uid = reqOrSocket.uid; data.req = exports.buildReqObject(reqOrSocket, { ...data }); - data.timestamp = parseInt(data.timestamp, 10) || Date.now(); + data.timestamp = Date.now(); data.fromQueue = false; }; diff --git a/src/api/topics.js b/src/api/topics.js index 187bc064be..3cd98f0c20 100644 --- a/src/api/topics.js +++ b/src/api/topics.js @@ -40,13 +40,19 @@ topicsAPI.create = async function (caller, data) { const payload = { ...data }; payload.tags = payload.tags || []; apiHelpers.setDefaultPostData(caller, payload); + const isScheduling = parseInt(data.timestamp, 10) > payload.timestamp; + if (isScheduling) { + if (await privileges.categories.can('topics:schedule', data.cid, caller.uid)) { + payload.timestamp = parseInt(data.timestamp, 10); + } else { + throw new Error('[[error:no-privileges]]'); + } + } - // Blacklist & Post Queue await meta.blacklist.test(caller.ip); const shouldQueue = await posts.shouldQueue(caller.uid, payload); if (shouldQueue) { - const queueObj = await posts.addToQueue(payload); - return queueObj; + return await posts.addToQueue(payload); } const result = await topics.post(payload); @@ -66,12 +72,10 @@ topicsAPI.reply = async function (caller, data) { const payload = { ...data }; apiHelpers.setDefaultPostData(caller, payload); - // Blacklist & Post Queue await meta.blacklist.test(caller.ip); const shouldQueue = await posts.shouldQueue(caller.uid, payload); if (shouldQueue) { - const queueObj = await posts.addToQueue(payload); - return queueObj; + return await posts.addToQueue(payload); } const postData = await topics.reply(payload); // postData seems to be a subset of postObj, refactor? diff --git a/src/categories/recentreplies.js b/src/categories/recentreplies.js index 0e5618b4fe..c7ab8e2fa7 100644 --- a/src/categories/recentreplies.js +++ b/src/categories/recentreplies.js @@ -1,6 +1,7 @@ 'use strict'; +const winston = require('winston'); const _ = require('lodash'); const db = require('../database'); @@ -11,11 +12,14 @@ const plugins = require('../plugins'); const batch = require('../batch'); module.exports = function (Categories) { - Categories.getRecentReplies = async function (cid, uid, count) { - if (!parseInt(count, 10)) { - return []; + Categories.getRecentReplies = async function (cid, uid, start, stop) { + // backwards compatibility, treat start as count + if (stop === undefined && start > 0) { + winston.warn('[Categories.getRecentReplies] 3 params deprecated please use Categories.getRecentReplies(cid, uid, start, stop)'); + stop = start - 1; + start = 0; } - let pids = await db.getSortedSetRevRange(`cid:${cid}:pids`, 0, count - 1); + let pids = await db.getSortedSetRevRange(`cid:${cid}:pids`, start, stop); pids = await privileges.posts.filter('topics:read', pids, uid); return await posts.getPostSummaryByPids(pids, uid, { stripTags: true }); }; diff --git a/src/controllers/admin/settings.js b/src/controllers/admin/settings.js index 719f6e206a..ca0765cc02 100644 --- a/src/controllers/admin/settings.js +++ b/src/controllers/admin/settings.js @@ -48,6 +48,13 @@ settingsController.post = async (req, res) => { }); }; +settingsController.advanced = async (req, res) => { + const groupData = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1); + res.render('admin/settings/advanced', { + groupsExemptFromMaintenanceMode: groupData, + }); +}; + settingsController.languages = async function (req, res) { const languageData = await languages.list(); languageData.forEach((language) => { diff --git a/src/groups/update.js b/src/groups/update.js index 24f4b53797..56b541df27 100644 --- a/src/groups/update.js +++ b/src/groups/update.js @@ -274,8 +274,16 @@ module.exports = function (Groups) { async function updateConfig(oldName, newName) { if (meta.config.groupsExemptFromPostQueue.includes(oldName)) { - meta.config.groupsExemptFromPostQueue.splice(meta.config.groupsExemptFromPostQueue.indexOf(oldName), 1, newName); + meta.config.groupsExemptFromPostQueue.splice( + meta.config.groupsExemptFromPostQueue.indexOf(oldName), 1, newName + ); await meta.configs.set('groupsExemptFromPostQueue', meta.config.groupsExemptFromPostQueue); } + if (meta.config.groupsExemptFromMaintenanceMode.includes(oldName)) { + meta.config.groupsExemptFromMaintenanceMode.splice( + meta.config.groupsExemptFromMaintenanceMode.indexOf(oldName), 1, newName + ); + await meta.configs.set('groupsExemptFromMaintenanceMode', meta.config.groupsExemptFromMaintenanceMode); + } } }; diff --git a/src/meta/settings.js b/src/meta/settings.js index 1207d13734..213b61be11 100644 --- a/src/meta/settings.js +++ b/src/meta/settings.js @@ -95,6 +95,7 @@ Settings.set = async function (hash, values, quiet) { plugins.hooks.fire('action:settings.set', { plugin: hash, settings: { ...values, ...sortedListData }, // Add back sorted list data to values hash + quiet, }); pubsub.publish(`action:settings.set.${hash}`, values); diff --git a/src/middleware/headers.js b/src/middleware/headers.js index 7f05f11928..f6aaecd3e8 100644 --- a/src/middleware/headers.js +++ b/src/middleware/headers.js @@ -57,6 +57,10 @@ module.exports = function (middleware) { }); } + if (meta.config['permissions-policy']) { + headers['Permissions-Policy'] = meta.config['permissions-policy']; + } + if (meta.config['access-control-allow-credentials']) { headers['Access-Control-Allow-Credentials'] = meta.config['access-control-allow-credentials']; } diff --git a/src/middleware/maintenance.js b/src/middleware/maintenance.js index 46fb05dcae..2e56fff8b6 100644 --- a/src/middleware/maintenance.js +++ b/src/middleware/maintenance.js @@ -4,6 +4,7 @@ const util = require('util'); const nconf = require('nconf'); const meta = require('../meta'); const user = require('../user'); +const groups = require('../groups'); const helpers = require('./helpers'); module.exports = function (middleware) { @@ -20,8 +21,12 @@ module.exports = function (middleware) { return next(); } - const isAdmin = await user.isAdministrator(req.uid); - if (isAdmin) { + const [isAdmin, isMemberOfExempt] = await Promise.all([ + user.isAdministrator(req.uid), + groups.isMemberOfAny(req.uid, meta.config.groupsExemptFromMaintenanceMode), + ]); + + if (isAdmin || isMemberOfExempt) { return next(); } diff --git a/src/plugins/data.js b/src/plugins/data.js index 9f95703217..ba6e319e78 100644 --- a/src/plugins/data.js +++ b/src/plugins/data.js @@ -106,6 +106,11 @@ Data.getStaticDirectories = async function (pluginData) { return; } const dirPath = await resolveModulePath(pluginData.path, pluginData.staticDirs[route]); + if (!dirPath) { + winston.warn(`[plugins/${pluginData.id}] Invalid mapped path specified: ${ + route} => ${pluginData.staticDirs[route]}`); + return; + } try { const stats = await fs.promises.stat(dirPath); if (!stats.isDirectory()) { diff --git a/src/posts/delete.js b/src/posts/delete.js index 900d0c717c..fb285b5128 100644 --- a/src/posts/delete.js +++ b/src/posts/delete.js @@ -203,7 +203,7 @@ module.exports = function (Posts) { await Promise.all(promises); const parentPids = _.uniq(postsWithParents.map(p => p.toPid)); - const counts = db.sortedSetsCard(parentPids.map(pid => `pid:${pid}:replies`)); + const counts = await db.sortedSetsCard(parentPids.map(pid => `pid:${pid}:replies`)); await db.setObjectBulk(parentPids.map((pid, index) => [`post:${pid}`, { replies: counts[index] }])); } diff --git a/src/routes/admin.js b/src/routes/admin.js index 3134e8d9ae..aac0e5dfb0 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -34,6 +34,7 @@ module.exports = function (app, name, middleware, controllers) { helpers.setupAdminPageRoute(app, `/${name}/settings/email`, middlewares, controllers.admin.settings.email); helpers.setupAdminPageRoute(app, `/${name}/settings/user`, middlewares, controllers.admin.settings.user); helpers.setupAdminPageRoute(app, `/${name}/settings/post`, middlewares, controllers.admin.settings.post); + helpers.setupAdminPageRoute(app, `/${name}/settings/advanced`, middlewares, controllers.admin.settings.advanced); helpers.setupAdminPageRoute(app, `/${name}/settings/languages`, middlewares, controllers.admin.settings.languages); helpers.setupAdminPageRoute(app, `/${name}/settings/navigation`, middlewares, controllers.admin.settings.navigation); helpers.setupAdminPageRoute(app, `/${name}/settings/homepage`, middlewares, controllers.admin.settings.homepage); diff --git a/src/routes/feeds.js b/src/routes/feeds.js index c3bda30473..fbd8de7072 100644 --- a/src/routes/feeds.js +++ b/src/routes/feeds.js @@ -307,7 +307,11 @@ async function generateForRecentPosts(req, res, next) { if (meta.config['feeds:disableRSS']) { return next(); } - const postData = await posts.getRecentPosts(req.uid, 0, 19, 'month'); + const page = parseInt(req.query.page, 10) || 1; + const postsPerPage = 20; + const start = Math.max(0, (page - 1) * postsPerPage); + const stop = start + postsPerPage - 1; + const postData = await posts.getRecentPosts(req.uid, start, stop, 'month'); const feed = generateForPostsFeed({ title: 'Recent Posts', description: 'A list of recent posts', @@ -323,11 +327,14 @@ async function generateForCategoryRecentPosts(req, res) { return controllers404.handle404(req, res); } const cid = req.params.category_id; - + const page = parseInt(req.query.page, 10) || 1; + const topicsPerPage = 20; + const start = Math.max(0, (page - 1) * topicsPerPage); + const stop = start + topicsPerPage - 1; const [userPrivileges, category, postData] = await Promise.all([ privileges.categories.get(cid, req.uid), categories.getCategoryData(cid), - categories.getRecentReplies(cid, req.uid || req.query.uid || 0, 20), + categories.getRecentReplies(cid, req.uid || req.query.uid || 0, start, stop), ]); if (!category) { diff --git a/src/socket.io/categories.js b/src/socket.io/categories.js index ad72658f70..0a90698115 100644 --- a/src/socket.io/categories.js +++ b/src/socket.io/categories.js @@ -10,7 +10,7 @@ const SocketCategories = module.exports; require('./categories/search')(SocketCategories); SocketCategories.getRecentReplies = async function (socket, cid) { - return await categories.getRecentReplies(cid, socket.uid, 4); + return await categories.getRecentReplies(cid, socket.uid, 0, 4); }; SocketCategories.get = async function (socket) { diff --git a/src/topics/index.js b/src/topics/index.js index 94f9803f5c..b6dd08e817 100644 --- a/src/topics/index.js +++ b/src/topics/index.js @@ -185,6 +185,12 @@ Topics.getTopicWithPosts = async function (topicData, set, uid, start, stop, rev topicData.thumbs = thumbs[0]; topicData.posts = posts; topicData.events = events; + topicData.posts.forEach((p) => { + p.events = events.filter( + event => event.timestamp >= p.eventStart && event.timestamp < p.eventEnd + ); + }); + topicData.category = category; topicData.tagWhitelist = tagWhitelist[0]; topicData.minTags = category.minTags; diff --git a/src/user/posts.js b/src/user/posts.js index 33f7464a71..9ca31cd6e7 100644 --- a/src/user/posts.js +++ b/src/user/posts.js @@ -18,7 +18,7 @@ module.exports = function (User) { return; } const [userData, isAdminOrMod] = await Promise.all([ - User.getUserFields(uid, ['uid', 'banned', 'mutedUntil', 'joindate', 'email', 'reputation'].concat([field])), + User.getUserFields(uid, ['uid', 'mutedUntil', 'joindate', 'email', 'reputation'].concat([field])), privileges.categories.isAdminOrMod(cid, uid), ]); @@ -30,10 +30,6 @@ module.exports = function (User) { return; } - if (userData.banned) { - throw new Error('[[error:user-banned]]'); - } - const now = Date.now(); if (userData.mutedUntil > now) { let muteLeft = ((userData.mutedUntil - now) / (1000 * 60)); diff --git a/src/views/admin/partials/categories/category-rows.tpl b/src/views/admin/partials/categories/category-rows.tpl index 7df4bd7c45..7c4429766e 100644 --- a/src/views/admin/partials/categories/category-rows.tpl +++ b/src/views/admin/partials/categories/category-rows.tpl @@ -1,5 +1,5 @@ diff --git a/src/views/admin/settings/advanced.tpl b/src/views/admin/settings/advanced.tpl index ae8f6e5c4d..1041848878 100644 --- a/src/views/admin/settings/advanced.tpl +++ b/src/views/admin/settings/advanced.tpl @@ -21,6 +21,14 @@ +
+ + +
@@ -91,6 +99,12 @@
+ +
+ + +

[[admin/settings/advanced:headers.permissions-policy-help]]

+
diff --git a/src/widgets/index.js b/src/widgets/index.js index 686c309e7b..473a33a820 100644 --- a/src/widgets/index.js +++ b/src/widgets/index.js @@ -212,11 +212,13 @@ widgets.reset = async function () { widgets.resetTemplate = async function (template) { const area = await db.getObject(`widgets:${template}.tpl`); - const toBeDrafted = _.flatMap(Object.values(area), value => JSON.parse(value)); - await db.delete(`widgets:${template}.tpl`); - let draftWidgets = await db.getObjectField('widgets:global', 'drafts'); - draftWidgets = JSON.parse(draftWidgets).concat(toBeDrafted); - await db.setObjectField('widgets:global', 'drafts', JSON.stringify(draftWidgets)); + if (area) { + const toBeDrafted = _.flatMap(Object.values(area), value => JSON.parse(value)); + await db.delete(`widgets:${template}.tpl`); + let draftWidgets = await db.getObjectField('widgets:global', 'drafts'); + draftWidgets = JSON.parse(draftWidgets).concat(toBeDrafted); + await db.setObjectField('widgets:global', 'drafts', JSON.stringify(draftWidgets)); + } }; widgets.resetTemplates = async function (templates) { diff --git a/test/controllers.js b/test/controllers.js index f255380446..cf557a30d2 100644 --- a/test/controllers.js +++ b/test/controllers.js @@ -1233,6 +1233,18 @@ describe('Controllers', () => { done(); }); }); + + it('should return 200 if guests are allowed', (done) => { + const oldValue = meta.config.groupsExemptFromMaintenanceMode; + meta.config.groupsExemptFromMaintenanceMode.push('guests'); + request(`${nconf.get('url')}/api/recent`, { json: true }, (err, res, body) => { + assert.ifError(err); + assert.strictEqual(res.statusCode, 200); + assert(body); + meta.config.groupsExemptFromMaintenanceMode = oldValue; + done(); + }); + }); }); describe('account pages', () => { diff --git a/test/uploads.js b/test/uploads.js index 8e851d153d..5be0818b5e 100644 --- a/test/uploads.js +++ b/test/uploads.js @@ -212,7 +212,7 @@ describe('Upload Controllers', () => { assert.ifError(err); assert.strictEqual(res.statusCode, 500); assert(body && body.status && body.status.message); - assert(body.status.message.startsWith('Input file has corrupt header: pngload: end of stream')); + assert.strictEqual(body.status.message, 'Input file contains unsupported image format'); done(); }); }); diff --git a/test/user.js b/test/user.js index 176ee82827..d05f81778b 100644 --- a/test/user.js +++ b/test/user.js @@ -24,6 +24,7 @@ const file = require('../src/file'); const socketUser = require('../src/socket.io/user'); const apiUser = require('../src/api/users'); const utils = require('../src/utils'); +const privileges = require('../src/privileges'); describe('User', () => { let userData; @@ -1434,6 +1435,32 @@ describe('User', () => { assert.strictEqual(membership.get('verified-users'), true); assert.strictEqual(membership.get('unverified-users'), false); }); + + it('should be able to post in category for banned users', async () => { + const { cid } = await Categories.create({ + name: 'Test Category', + description: 'A test', + order: 1, + }); + const testUid = await User.create({ username: userData.username }); + await User.bans.ban(testUid); + let _err; + try { + await Topics.post({ title: 'banned topic', content: 'tttttttttttt', cid: cid, uid: testUid }); + } catch (err) { + _err = err; + } + assert.strictEqual(_err && _err.message, '[[error:no-privileges]]'); + + await Promise.all([ + privileges.categories.give(['groups:topics:create', 'groups:topics:reply'], cid, 'banned-users'), + privileges.categories.rescind(['groups:topics:create', 'groups:topics:reply'], cid, 'registered-users'), + ]); + + const result = await Topics.post({ title: 'banned topic', content: 'tttttttttttt', cid: cid, uid: testUid }); + assert(result); + assert.strictEqual(result.topicData.title, 'banned topic'); + }); }); describe('Digest.getSubscribers', () => { @@ -1899,7 +1926,7 @@ describe('User', () => { it('should get unread count for user', async () => { const count = await socketUser.getUnreadCount({ uid: testUid }); - assert.strictEqual(count, 2); + assert.strictEqual(count, 3); }); it('should get unread chat count 0 for guest', async () => { @@ -1922,15 +1949,15 @@ describe('User', () => { assert.deepStrictEqual(counts, { unreadChatCount: 0, unreadCounts: { - '': 2, - new: 2, - unreplied: 2, + '': 3, + new: 3, + unreplied: 3, watched: 0, }, - unreadNewTopicCount: 2, + unreadNewTopicCount: 3, unreadNotificationCount: 0, - unreadTopicCount: 2, - unreadUnrepliedTopicCount: 2, + unreadTopicCount: 3, + unreadUnrepliedTopicCount: 3, unreadWatchedTopicCount: 0, }); });