diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 33ad7b6a26..ab47f0760d 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,7 +3,3 @@ contact_links: - name: Community Forum url: https://community.nodebb.org about: Github Issues are for bug reports and feature requests only, please use community forum for other support - - name: Security Issues - url: https://nodebb.org/bounty/ - about: | - Found a security exploit? Please email us at security@nodebb.org instead for immediate attention. DO NOT SUBMIT VULNERABILITIES TO THE PUBLIC BUG TRACKER diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9e697f8438..86dc5c50d3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -34,7 +34,7 @@ jobs: - name: Docker meta id: meta - uses: docker/metadata-action@v3 + uses: docker/metadata-action@v4 with: images: nodebb/docker tags: | diff --git a/CHANGELOG.md b/CHANGELOG.md index c819ca3911..f9aa6d52c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,122 @@ +#### v2.2.5 (2022-07-21) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.19.0 to 8.20.0 in /install (8d109fef) + * bump @commitlint/config-angular in /install (2a88a50f) +* **deps:** + * bump cron from 2.0.0 to 2.1.0 in /install (4c1bda32) + * bump jquery-ui from 1.13.1 to 1.13.2 in /install (abb19e98) + * bump nodebb-theme-persona in /install (9e52b8c6) + * bump ioredis from 5.1.0 to 5.2.0 in /install (8c20fdad) +* incrementing version number - v2.2.4 (d1d63e6b) +* update changelog for v2.2.4 (52f7ed64) +* incrementing version number - v2.2.3 (f80476b9) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* expire email validation tokens on password change (c93bd010) +* remove extraneous console.log (0d58e8a6) +* **deps:** update dependency mongodb to v4.8.0 (bff239da) + +#### v2.2.4 (2022-07-12) + +##### Chores + +* **deps:** + * update docker/metadata-action action to v4 (42a45a71) + * bump ace-builds from 1.5.3 to 1.7.1 in /install (d568d2f5) + * bump winston from 3.8.0 to 3.8.1 in /install (26b73b39) + * bump ioredis from 5.0.6 to 5.1.0 in /install (0d55c42d) + * bump nodemailer from 6.7.5 to 6.7.7 in /install (bd37b286) +* **deps-dev:** + * bump @commitlint/cli from 17.0.2 to 17.0.3 in /install (9e44cdad) + * bump eslint from 8.18.0 to 8.19.0 in /install (7139ad5f) +* incrementing version number - v2.2.3 (f80476b9) +* update changelog for v2.2.3 (8719a93f) +* incrementing version number - v2.2.2 (343ffa66) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* **deps:** update dependency diff to v5.1.0 (452e5bf7) +* #10733, extraneous apostrophes in plugin upgrader (3c41ae04) +* get version from install/package.json instead (60114219) +* #10739, always re-add theme to active plugins, on theme set (8d701ec3) + +#### v2.2.3 (2022-07-05) + +##### Chores + +* incrementing version number - v2.2.2 (343ffa66) +* update changelog for v2.2.2 (f59ddc34) +* incrementing version number - v2.2.1 (efc77b2a) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* move call to `ajaxify.parseData` out to root level (b778e38c) +* move `ajaxify.parseData` back out to DOMContentLoaded (2582cb53) + +##### Refactors + +* rewrite ajaxify.parseData in vanilla (165b804d) + +#### v2.2.2 (2022-06-30) + +##### Chores + +* **deps-dev:** + * bump eslint from 8.17.0 to 8.18.0 in /install (bfd626b0) + * bump jsdom from 19.0.0 to 20.0.0 in /install (d037c2c9) +* incrementing version number - v2.2.1 (efc77b2a) +* update changelog for v2.2.1 (667780cf) +* incrementing version number - v2.2.0 (eecb836d) + +##### Bug Fixes + +* improper handling of single vs. multiple inputs for hidePrivateData (f38b2a73) +* observe user-specific and ACP-specific hiding rules for fullname (ecf0e8ce) + +##### Refactors + +* allow user.hidePrivateData() to handle an array of `userData` (3f5ae893) + +#### v2.2.1 (2022-06-24) + +##### Chores + +* **i18n:** + * fallback strings for new resources: nodebb.admin-settings-uploads (da481163) + * fallback strings for new resources: nodebb.admin-settings-advanced (34d75e96) +* add in warning in language directories about not editing files directly (06074e8c) +* incrementing version number - v2.2.0 (eecb836d) +* update changelog for v2.2.0 (bb3766df) + +##### Documentation Changes + +* remove the redundant security policy template (7f5b285e) + +##### New Features + +* cross origin opener policy options (#10710) (88132358) + +##### Bug Fixes + +* **deps:** + * update dependency winston to v3.8.0 (#10725) (d4a5039e) + * update dependency sharp to v0.30.7 (#10724) (0a07c2c0) +* handle ENOENT on file deletion, closes #10645 (43f9e6c8) + +##### Tests + +* fix i18n tests (05c30677) + #### v2.2.0 (2022-06-15) ##### Chores diff --git a/Gruntfile.js b/Gruntfile.js index 7c866dbe91..ea8c518ec7 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -20,6 +20,7 @@ const prestart = require('./src/prestart'); prestart.loadConfig(configFile); const db = require('./src/database'); +const plugins = require('./src/plugins'); module.exports = function (grunt) { const args = []; @@ -40,35 +41,35 @@ module.exports = function (grunt) { grunt.registerTask('init', async function () { const done = this.async(); - let plugins = []; + let pluginList = []; if (!process.argv.includes('--core')) { await db.init(); - plugins = await db.getSortedSetRange('plugins:active', 0, -1); - addBaseThemes(plugins); - if (!plugins.includes('nodebb-plugin-composer-default')) { - plugins.push('nodebb-plugin-composer-default'); + pluginList = await plugins.getActive(); + addBaseThemes(pluginList); + if (!pluginList.includes('nodebb-plugin-composer-default')) { + pluginList.push('nodebb-plugin-composer-default'); } - if (!plugins.includes('nodebb-theme-persona')) { - plugins.push('nodebb-theme-persona'); + if (!pluginList.includes('nodebb-theme-persona')) { + pluginList.push('nodebb-theme-persona'); } } - const styleUpdated_Client = plugins.map(p => `node_modules/${p}/*.less`) - .concat(plugins.map(p => `node_modules/${p}/*.css`)) - .concat(plugins.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`)) - .concat(plugins.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); + const styleUpdated_Client = pluginList.map(p => `node_modules/${p}/*.less`) + .concat(pluginList.map(p => `node_modules/${p}/*.css`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); - const styleUpdated_Admin = plugins.map(p => `node_modules/${p}/*.less`) - .concat(plugins.map(p => `node_modules/${p}/*.css`)) - .concat(plugins.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`)) - .concat(plugins.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); + const styleUpdated_Admin = pluginList.map(p => `node_modules/${p}/*.less`) + .concat(pluginList.map(p => `node_modules/${p}/*.css`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static|less)/**/*.less`)) + .concat(pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.css`)); - const clientUpdated = plugins.map(p => `node_modules/${p}/+(public|static)/**/*.js`); - const serverUpdated = plugins.map(p => `node_modules/${p}/*.js`) - .concat(plugins.map(p => `node_modules/${p}/+(lib|src)/**/*.js`)); + const clientUpdated = pluginList.map(p => `node_modules/${p}/+(public|static)/**/*.js`); + const serverUpdated = pluginList.map(p => `node_modules/${p}/*.js`) + .concat(pluginList.map(p => `node_modules/${p}/+(lib|src)/**/*.js`)); - const templatesUpdated = plugins.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`); - const langUpdated = plugins.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`); + const templatesUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|templates)/**/*.tpl`); + const langUpdated = pluginList.map(p => `node_modules/${p}/+(public|static|languages)/**/*.json`); grunt.config(['watch'], { styleUpdated_Client: { @@ -195,10 +196,10 @@ module.exports = function (grunt) { }); }; -function addBaseThemes(plugins) { - let themeId = plugins.find(p => p.includes('nodebb-theme-')); +function addBaseThemes(pluginList) { + let themeId = pluginList.find(p => p.includes('nodebb-theme-')); if (!themeId) { - return plugins; + return pluginList; } let baseTheme; do { @@ -209,9 +210,9 @@ function addBaseThemes(plugins) { } if (baseTheme) { - plugins.push(baseTheme); + pluginList.push(baseTheme); themeId = baseTheme; } } while (baseTheme); - return plugins; + return pluginList; } diff --git a/app.js b/app.js index f985362fbe..b6067d726b 100644 --- a/app.js +++ b/app.js @@ -71,7 +71,7 @@ if (nconf.get('setup') || nconf.get('install')) { }); } else if (nconf.get('activate')) { require('./src/cli/manage').activate(nconf.get('activate')); -} else if (nconf.get('plugins')) { +} else if (nconf.get('plugins') && typeof nconf.get('plugins') !== 'object') { require('./src/cli/manage').listPlugins(); } else if (nconf.get('build')) { require('./src/cli/manage').build(nconf.get('build')); diff --git a/install/package.json b/install/package.json index 704c4dff42..b77f899a87 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "2.2.0", + "version": "2.2.5", "homepage": "http://www.nodebb.org", "repository": { "type": "git", @@ -29,7 +29,7 @@ }, "dependencies": { "@adactive/bootstrap-tagsinput": "0.8.2", - "ace-builds": "1.5.3", + "ace-builds": "1.8.1", "archiver": "5.3.1", "async": "3.2.4", "autoprefixer": "10.4.7", @@ -52,25 +52,25 @@ "connect-pg-simple": "7.0.0", "connect-redis": "6.1.3", "cookie-parser": "1.4.6", - "cron": "2.0.0", + "cron": "2.1.0", "cropperjs": "1.5.12", "csurf": "1.11.0", "daemon": "1.1.0", - "diff": "5.0.0", + "diff": "5.1.0", "express": "4.18.1", "express-session": "1.17.3", "express-useragent": "1.0.15", "file-loader": "6.2.0", "fs-extra": "10.1.0", "graceful-fs": "4.2.10", - "helmet": "5.1.0", + "helmet": "5.1.1", "html-to-text": "8.2.0", "ipaddr.js": "2.0.1", "jquery": "3.6.0", "jquery-deserialize": "2.0.0", "jquery-form": "4.3.0", "jquery-serializeobject": "1.0.0", - "jquery-ui": "1.13.1", + "jquery-ui": "1.13.2", "jsesc": "3.0.2", "json2csv": "5.0.7", "jsonwebtoken": "8.5.1", @@ -81,7 +81,7 @@ "material-design-lite": "1.3.0", "mime": "3.0.0", "mkdirp": "1.0.4", - "mongodb": "4.7.0", + "mongodb": "4.8.1", "morgan": "1.10.0", "mousetrap": "1.6.5", "multiparty": "4.2.3", @@ -97,11 +97,11 @@ "nodebb-plugin-spam-be-gone": "1.0.0", "nodebb-rewards-essentials": "0.2.1", "nodebb-theme-lavender": "6.0.0", - "nodebb-theme-persona": "12.0.11", + "nodebb-theme-persona": "12.0.12", "nodebb-theme-slick": "2.0.2", "nodebb-theme-vanilla": "12.1.18", "nodebb-widget-essentials": "6.0.0", - "nodemailer": "6.7.5", + "nodemailer": "6.7.7", "nprogress": "0.2.0", "passport": "0.5.2", "passport-http-bearer": "1.0.1", @@ -111,7 +111,7 @@ "postcss": "8.4.14", "postcss-clean": "1.2.0", "prompt": "1.3.0", - "ioredis": "5.0.6", + "ioredis": "5.2.2", "request": "2.88.2", "request-promise-native": "1.0.9", "rimraf": "3.0.2", @@ -119,7 +119,7 @@ "sanitize-html": "2.7.0", "semver": "7.3.7", "serve-favicon": "2.5.0", - "sharp": "0.30.6", + "sharp": "0.30.7", "sitemap": "7.1.1", "slideout": "1.0.1", "socket.io": "4.5.1", @@ -139,7 +139,7 @@ "visibilityjs": "2.0.2", "webpack": "5.73.0", "webpack-merge": "5.8.0", - "winston": "3.7.2", + "winston": "3.8.1", "xml": "1.0.1", "xregexp": "5.1.1", "yargs": "17.5.1", @@ -147,17 +147,17 @@ }, "devDependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@commitlint/cli": "17.0.2", - "@commitlint/config-angular": "17.0.0", + "@commitlint/cli": "17.0.3", + "@commitlint/config-angular": "17.0.3", "coveralls": "3.1.1", - "eslint": "8.17.0", + "eslint": "8.20.0", "eslint-config-nodebb": "0.1.1", "eslint-plugin-import": "2.26.0", "grunt": "1.5.3", "grunt-contrib-watch": "1.1.0", "husky": "8.0.1", - "jsdom": "19.0.0", - "lint-staged": "12.5.0", + "jsdom": "20.0.0", + "lint-staged": "13.0.3", "mocha": "10.0.0", "mocha-lcov-reporter": "1.3.0", "mockdate": "3.0.5", diff --git a/public/language/ar/admin/menu.json b/public/language/ar/admin/menu.json index 97d0fa4dfc..028ee61cef 100644 --- a/public/language/ar/admin/menu.json +++ b/public/language/ar/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/ar/error.json b/public/language/ar/error.json index 5816f34f28..9cf3543922 100644 --- a/public/language/ar/error.json +++ b/public/language/ar/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/bg/admin/menu.json b/public/language/bg/admin/menu.json index 6b2b2fc2c7..e5fb3489cb 100644 --- a/public/language/bg/admin/menu.json +++ b/public/language/bg/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Изход", "view-forum": "Преглед на форума", - "search.placeholder": "Натиснете „/“ за търсене на настройки", + "search.placeholder": "Търсене на настройки", "search.no-results": "Няма резултати…", "search.search-forum": "Търсене във форума за <strong></strong>", "search.keep-typing": "Продължете да пишете, за да видите още резултати…", diff --git a/public/language/bg/error.json b/public/language/bg/error.json index 5ba358911c..2abf4a891b 100644 --- a/public/language/bg/error.json +++ b/public/language/bg/error.json @@ -205,6 +205,8 @@ "no-connection": "Изглежда има проблем с връзката Ви с Интернет", "socket-reconnect-failed": "В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.", "plugin-not-whitelisted": "Добавката не може да бъде инсталирана – само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез 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/bn/admin/menu.json b/public/language/bn/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/bn/admin/menu.json +++ b/public/language/bn/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/bn/error.json b/public/language/bn/error.json index 5b91a17cd4..a4aab7b399 100644 --- a/public/language/bn/error.json +++ b/public/language/bn/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/cs/admin/menu.json b/public/language/cs/admin/menu.json index 603d9616fe..d22f9a6bdd 100644 --- a/public/language/cs/admin/menu.json +++ b/public/language/cs/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Odhlásit", "view-forum": "Zobrazit fórum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Žádné výsledky…", "search.search-forum": "Prohledat fórum pro <strong></strong>", "search.keep-typing": "Pište dále pro zobrazení výsledků…", diff --git a/public/language/cs/error.json b/public/language/cs/error.json index 8fbbb495c5..0ea7d387b9 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -205,6 +205,8 @@ "no-connection": "Zdá se, že nastal problém s připojením k internetu", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/da/admin/menu.json b/public/language/da/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/da/admin/menu.json +++ b/public/language/da/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/da/error.json b/public/language/da/error.json index 753a34de73..a8af5ad84d 100644 --- a/public/language/da/error.json +++ b/public/language/da/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/de/admin/advanced/cache.json b/public/language/de/admin/advanced/cache.json index 2f27243ef5..ae8d88c8b7 100644 --- a/public/language/de/admin/advanced/cache.json +++ b/public/language/de/admin/advanced/cache.json @@ -1,6 +1,6 @@ { - "post-cache": "Beitrags Cache", + "post-cache": "Post-Cache", "percent-full": "%1% Voll", - "post-cache-size": "Beitrags Cache Größe", - "items-in-cache": "Objekte im Cache" + "post-cache-size": "Post-Cache-Größe", + "items-in-cache": "Elemente im Cache" } \ No newline at end of file diff --git a/public/language/de/admin/advanced/database.json b/public/language/de/admin/advanced/database.json index abe33cdd07..550c6c8468 100644 --- a/public/language/de/admin/advanced/database.json +++ b/public/language/de/admin/advanced/database.json @@ -2,12 +2,12 @@ "x-b": "%1 B", "x-mb": "%1 MB", "x-gb": "%1 GB", - "uptime-seconds": "Uptime in Sekunden", - "uptime-days": "Uptime in Tagen", + "uptime-seconds": "Betriebszeit in Sekunden", + "uptime-days": "Betriebszeit in Tagen", "mongo": "Mongo", "mongo.version": "MongoDB Version", - "mongo.storage-engine": "Storage Engine", + "mongo.storage-engine": "Speicher-Engine", "mongo.collections": "Collections", "mongo.objects": "Objekte", "mongo.avg-object-size": "Durchschnittliche Objektgröße", @@ -34,16 +34,16 @@ "redis.blocked-clients": "Blockierte Clients", "redis.used-memory": "Speicherverbrauch", "redis.memory-frag-ratio": "Speicherfragmentierungsgrad", - "redis.total-connections-recieved": "Gesamte empfangen Verbindungen", - "redis.total-commands-processed": "Insgesamt Kommandos ausgeführt", - "redis.iops": "Durchschnittliche Anzahl von Ein-/Ausgaben pro Sekunde", + "redis.total-connections-recieved": "Gesamtzahl der empfangenen Verbindungen", + "redis.total-commands-processed": "Gesamtzahl der verarbeiteten Befehle", + "redis.iops": "Sofortige Operationen. Pro Sekunde", "redis.iinput": "Sofortige Eingabe pro Sekunde", "redis.ioutput": "Sofortige Ausgabe pro Sekunde", "redis.total-input": "Gesamt Eingabe", "redis.total-output": "Gesamt Ausgabe", - "redis.keyspace-hits": "Schlüsselraum Treffer", - "redis.keyspace-misses": "Schlüsselraum Verfehlungen", + "redis.keyspace-hits": "Schlüsselraum-Treffer", + "redis.keyspace-misses": "Schlüsselraum-Verfehlungen", "redis.raw-info": "Redis Rohinfo", "postgres": "Postgres", diff --git a/public/language/de/admin/advanced/errors.json b/public/language/de/admin/advanced/errors.json index 326bfdd1cf..5ec358d8fe 100644 --- a/public/language/de/admin/advanced/errors.json +++ b/public/language/de/admin/advanced/errors.json @@ -1,10 +1,10 @@ { "figure-x": "Abbildung %1", "error-events-per-day": "<code>%1</code> Ereignisse pro Tag", - "error.404": "404 Not Found", - "error.503": "503 Service Unavailable", + "error.404": "404 Nicht gefunden", + "error.503": "503 Dienst nicht verfügbar", "manage-error-log": "Fehlerprotokoll verwalten", - "export-error-log": "Exportiere das Fehlerprotokoll (CSV)", + "export-error-log": "Fehlerprotokoll (CSV) exportieren", "clear-error-log": "Fehlerprotokoll leeren", "route": "Pfad", "count": "Anzahl", diff --git a/public/language/de/admin/advanced/events.json b/public/language/de/admin/advanced/events.json index 9f87f04efa..a0760a44eb 100644 --- a/public/language/de/admin/advanced/events.json +++ b/public/language/de/admin/advanced/events.json @@ -1,13 +1,13 @@ { "events": "Ereignisse", "no-events": "Es gibt keine Ereignisse", - "control-panel": "Ereignis-Steuerung", + "control-panel": "Ereignissteuerung", "delete-events": "Ereignisse löschen", "confirm-delete-all-events": "Bist du sicher, dass du alle gespeicherten Events löschen möchtest?", "filters": "Filter", "filters-apply": "Filter anwenden", "filter-type": "Ereignistyp", - "filter-start": "Start-Datum", - "filter-end": "End-Datum", + "filter-start": "Anfangsdatum", + "filter-end": "Enddatum", "filter-perPage": "Pro Seite" } \ No newline at end of file diff --git a/public/language/de/admin/advanced/logs.json b/public/language/de/admin/advanced/logs.json index e0bce077ae..e0f8980059 100644 --- a/public/language/de/admin/advanced/logs.json +++ b/public/language/de/admin/advanced/logs.json @@ -1,6 +1,6 @@ { "logs": "Protokolle", - "control-panel": "Protokoll Steuerung", + "control-panel": "Logs-Systemsteuerung", "reload": "Protokolle neu laden", "clear": "Protokolle löschen", "clear-success": "Protokolle gelöscht" diff --git a/public/language/de/admin/appearance/customise.json b/public/language/de/admin/appearance/customise.json index 8f497339d3..6424bc3dfb 100644 --- a/public/language/de/admin/appearance/customise.json +++ b/public/language/de/admin/appearance/customise.json @@ -1,7 +1,7 @@ { "custom-css": "Benutzerdefiniertes CSS/LESS", "custom-css.description": "Füge deine eigenen CSS/LESS deklarationen hier ein, die nach allen anderen Styles angewandt werden.", - "custom-css.enable": "Aktiviere benutzerdefiniertes CSS/LESS", + "custom-css.enable": "Benutzerdefiniertes CSS/LESS aktivieren", "custom-js": "Benutzerdefiniertes Javascript", "custom-js.description": "Füge dein eigenes Javascipt hier ein.\nEs wird ausgeführt nachdem die Seite komplett geladen wurde.", diff --git a/public/language/de/admin/appearance/skins.json b/public/language/de/admin/appearance/skins.json index 849f5bc704..c56d74113f 100644 --- a/public/language/de/admin/appearance/skins.json +++ b/public/language/de/admin/appearance/skins.json @@ -1,6 +1,6 @@ { - "loading": "Lade Skins...", - "homepage": "Homepage", + "loading": "Skins werden geladen...", + "homepage": "Startseite", "select-skin": "Skin auswählen", "current-skin": "Aktueller Skin", "skin-updated": "Skin aktualisiert", diff --git a/public/language/de/admin/appearance/themes.json b/public/language/de/admin/appearance/themes.json index 09019b588b..3a0efd7c8b 100644 --- a/public/language/de/admin/appearance/themes.json +++ b/public/language/de/admin/appearance/themes.json @@ -1,11 +1,11 @@ { - "checking-for-installed": "Prüfe auf installierte Themes...", - "homepage": "Homepage", - "select-theme": "Wähle Theme", + "checking-for-installed": "Auf installierte Themes wird geprüft...", + "homepage": "Startseite", + "select-theme": "Theme wählen", "current-theme": "Aktuelles Theme", "no-themes": "Keine installierten Theme gefunden.", - "revert-confirm": "Bist du dir sicher, dass du das standard NodeBB Theme wieder herstellen willst?", + "revert-confirm": "Bist du sicher, dass du das standardmäßige NodeBB-Design wiederherstellen möchten?", "theme-changed": "Theme geändert", "revert-success": "Du hast dein NodeBB erfolgreich wieder auf das Standard-Theme zurückgesetzt.", - "restart-to-activate": "Bitte baue und starte NodeBB neu um das Theme zu aktivieren." + "restart-to-activate": "Bitte builde und starte dein NodeBB neu um das Theme zu aktivieren." } \ No newline at end of file diff --git a/public/language/de/admin/dashboard.json b/public/language/de/admin/dashboard.json index 97906ea076..aa25120bae 100644 --- a/public/language/de/admin/dashboard.json +++ b/public/language/de/admin/dashboard.json @@ -12,7 +12,7 @@ "page-views-custom": "Benutzerdefinierte Tagesspanne", "page-views-custom-start": "Spannen-Anfang", "page-views-custom-end": "Spannen-Ende", - "page-views-custom-help": "Gib eine Zeitspanne an, in dem du die Besichtigungszahlen ansehen willst. Sollte keine Kalenderauswahl verfügbar sein ist das akzeptierte format <code>YYYY-MM-DD</code>", + "page-views-custom-help": "Gebe einen Datumsbereich für Seitenaufrufe ein, die du anzeigen möchtest. Wenn keine Datumsauswahl verfügbar ist, ist das akzeptierte Format <code>YYYY-MM-DD</code>", "page-views-custom-error": "Bitte gib eine gültige Zeitspanne im Format <code>YYYY-MM-DD</code> an", "stats.yesterday": "Gestern", diff --git a/public/language/de/admin/extend/plugins.json b/public/language/de/admin/extend/plugins.json index 0dbc2785c5..23670b54ae 100644 --- a/public/language/de/admin/extend/plugins.json +++ b/public/language/de/admin/extend/plugins.json @@ -39,9 +39,9 @@ "alert.upgraded": "Plugin aktualisiert", "alert.installed": "Plugin installiert", "alert.uninstalled": "Plugin deinstalliert", - "alert.activate-success": "Bitte bauen Sie Ihr NodeBB neu auf und starten Sie es neu, um dieses Plugin vollständig zu aktivieren", + "alert.activate-success": "Bitte builde dein NodeBB neu auf und starte es neu, um dieses Plugin vollständig zu aktivieren", "alert.deactivate-success": "Plugin erfolgreich deaktiviert", - "alert.upgrade-success": "Bitte Starte dein NodeBB neu um dieses Plugin völlständig zu upgraden.", + "alert.upgrade-success": "Bitte starte dein NodeBB neu um dieses Plugin völlständig zu upgraden.", "alert.install-success": "Plugin erfolgreich installiert. Bitte aktiviere das Plugin", "alert.uninstall-success": "Das Plugin wurde erfolgreich deaktiviert und deinstalliert.", "alert.suggest-error": "<p>NodeBB konnte den Paket-Manager nicht erreichen. Willst Du mit der Installation der neuesten Version fortfahren</p><div class=\"alert alert-danger\"><strong>Der Server meldete (%1)</strong>: %2</div>", @@ -49,7 +49,7 @@ "alert.incompatible": "<p>NodeBB Version (v%1) ist nur für Aktualisierungen bis v%2 dieses Plugins bestimmt. Bitte aktualisiere NodeBB, wenn eine neuere Version dieses Plugins installiert werden soll.</p>", "alert.possibly-incompatible": "<div class=\"alert alert-warning\"><p><strong>Keine Kompatibilitätsinformationen gefunden</strong></p><p>Dieses Plugin legte keine spezifische NodeBB version fest, welche für die Installation benötigt wird. Volle Kompatibilität kann nicht gewährleistet werden, was dazu führen könnte, dass ihr NodeBB nicht mehr korrekt startet.</p></div><p>Für den Fall, dass NodeBB nicht mehr ordnungsgemäß startet:</p><pre><code>$ ./nodebb reset plugin=\"%1\"</code></pre><p>Soll mit der installation der neuesten Version dieses Plugins fortgefahren werden?</p>", "alert.reorder": "Plugins Neusortiert", - "alert.reorder-success": "Bitte Starte dein NodeBB neu um diesen Prozess vollständig abzuschließen.", + "alert.reorder-success": "Bitte starte dein NodeBB neu um diesen Prozess vollständig abzuschließen.", "license.title": "Plugin-Lizenzinformation", "license.intro": "Das Plugin <strong>%1</strong>is unter der %2 lizenziert. Bitte ließ dir diese durch bevor du dieses Plugin aktivierst.", diff --git a/public/language/de/admin/extend/rewards.json b/public/language/de/admin/extend/rewards.json index 7a6eef6513..d0ed8e051d 100644 --- a/public/language/de/admin/extend/rewards.json +++ b/public/language/de/admin/extend/rewards.json @@ -1,15 +1,15 @@ { "rewards": "Belohnungen", - "condition-if-users": "Wenn des Benutzers", + "condition-if-users": "Wenn Benutzer", "condition-is": "Ist:", "condition-then": "Dann:", - "max-claims": "Anzahl der male, die diese Belohnung beansprucht werden kann", - "zero-infinite": "Gib 0 für unendlich ein", - "delete": "Entfernen", + "max-claims": "Anzahl der Male von Belohnungen, die beansprucht werden können", + "zero-infinite": "0 für unendlich eingeben", + "delete": "Löschen", "enable": "Aktivieren", "disable": "Deaktivieren", - "alert.delete-success": "Die Belohnung wurde erfolgreich gelöscht", + "alert.delete-success": "Belohnung wurde erfolgreich gelöscht", "alert.no-inputs-found": "Ungültige Belohnung - keine Eingaben gefunden!", "alert.save-success": "Belohnungen erfolgreich gespeichert" } \ No newline at end of file diff --git a/public/language/de/admin/extend/widgets.json b/public/language/de/admin/extend/widgets.json index b2183c6327..9497575e33 100644 --- a/public/language/de/admin/extend/widgets.json +++ b/public/language/de/admin/extend/widgets.json @@ -1,30 +1,30 @@ { "available": "Verfügbare Widgets", - "explanation": "Widget vom Dropdown-Menu auswählen und anschließend links in den Widget-Bereich einer Vorlage ziehen.", - "none-installed": "Keine Widgets gefunden! Aktivieren Sie das Widget Essentials Plugin im <a href=\"%1\">Plugin-Kontrollzentrum</a>.", + "explanation": "Wähle ein Widget aus dem Dropdown-Menü aus und ziehe es per Drag-and-Drop in den Widget-Bereich einer Vorlage auf der linken Seite.", + "none-installed": "Keine Widgets gefunden! Aktiviere das Widget Essentials-Plugin in der <a href=\"%1\">Plugin</a>-Systemsteuerung.", "clone-from": "Klone Widget von", "containers.available": "Verfügbare Container", - "containers.explanation": "Auf ein beliebiges aktives Widget ziehen", + "containers.explanation": "Per Drag-and-Drop auf ein beliebiges aktives Widget ziehen", "containers.none": "Nichts", "container.well": "Well", "container.jumbotron": "Jumbotron", "container.panel": "Panel", - "container.panel-header": "Panel Header", - "container.panel-body": "Panel Körper", + "container.panel-header": "Panel-Kopfzeile", + "container.panel-body": "Panel-Körper", "container.alert": "Alarm", - "alert.confirm-delete": "Sind Sie sicher, dass Sie dieses Widget löschen wollen?", + "alert.confirm-delete": "Möchtest Du dieses Widget wirklich löschen?", "alert.updated": "Widgets aktualisiert", "alert.update-success": "Widgets erfolgreich aktualisiert", - "alert.clone-success": "Die Widgets wurden erfolgreich geklont", + "alert.clone-success": "Widgets erfolgreich geklont", - "error.select-clone": "Bitte wähle eine Seite aus von der geklont werden soll", + "error.select-clone": "Bitte wähle eine Seite aus, von der geklont werden soll", "title": "Titel", - "title.placeholder": "Titel (nur in bestimmten Bereichen zusehen)", + "title.placeholder": "Titel (wird nur auf einigen Containern angezeigt)", "container": "Container", - "container.placeholder": "Ziehen Sie einen Container per Drag & Drop oder geben Sie hier HTML ein.", - "show-to-groups": "Für Gruppen anzeigen", - "hide-from-groups": "Für Gruppen verbergen", - "hide-on-mobile": "Auf Mobile verbergen" + "container.placeholder": "Ziehe einen Container per Drag-and-Drop oder gebe hier HTML ein.", + "show-to-groups": "Gruppen anzeigen", + "hide-from-groups": "Vor Gruppen verstecken", + "hide-on-mobile": "Auf dem Handy verstecken" } \ No newline at end of file diff --git a/public/language/de/admin/manage/admins-mods.json b/public/language/de/admin/manage/admins-mods.json index 09e992dde4..3188af49d5 100644 --- a/public/language/de/admin/manage/admins-mods.json +++ b/public/language/de/admin/manage/admins-mods.json @@ -1,10 +1,10 @@ { "administrators": "Administratoren", "global-moderators": "Globale Moderatoren", - "moderators": "Moderators", + "moderators": "Moderatoren", "no-global-moderators": "Keine globalen Moderatoren", - "no-sub-categories": "No subcategories", - "subcategories": "%1 subcategories", + "no-sub-categories": "Keine Unterkategorien", + "subcategories": "%1 Unterkategorien", "no-moderators": "Keine Moderatoren", "add-administrator": "Administrator hinzufügen", "add-global-moderator": "Globalen Moderator hinzufügen", diff --git a/public/language/de/admin/manage/categories.json b/public/language/de/admin/manage/categories.json index 1c7e151582..f997db33aa 100644 --- a/public/language/de/admin/manage/categories.json +++ b/public/language/de/admin/manage/categories.json @@ -20,7 +20,7 @@ "parent-category": "Übergeordnete Kategorie", "optional-parent-category": "(Optional) Übergeordnete Kategorie", "top-level": "Top Level", - "parent-category-none": "(Keine)", + "parent-category-none": "(Nichts)", "copy-parent": "Übergeordnetes kopieren", "copy-settings": "Kopiere Einstellungen von", "optional-clone-settings": "(Optional) dubliziere Einstellungen von Kategorie", diff --git a/public/language/de/admin/manage/privileges.json b/public/language/de/admin/manage/privileges.json index fce5cb2d08..a90cc6265e 100644 --- a/public/language/de/admin/manage/privileges.json +++ b/public/language/de/admin/manage/privileges.json @@ -10,7 +10,7 @@ "upload-files": "Dateien hochladen", "signature": "Signatur", "ban": "Bannen", - "mute": "Mute", + "mute": "Stummschalten", "invite": "Einladen", "search-content": "Inhalt durchsuchen", "search-users": "Benutzersuche", diff --git a/public/language/de/admin/manage/registration.json b/public/language/de/admin/manage/registration.json index 1971466302..e922c5f91a 100644 --- a/public/language/de/admin/manage/registration.json +++ b/public/language/de/admin/manage/registration.json @@ -1,20 +1,20 @@ { "queue": "Warteschlange", - "description": "Es sind keine Benutzer in der Registrierungs-Warteschlange.<br> Um diese Funktion zu aktivieren, gehe zu <a href=\"%1\">Einstellungen → Benutzer → Benutzer erstellen</a> und ändern sie <strong>Registrierungsart</strong> auf \"Admin Genehmigung\".", + "description": "Es befinden sich keine Benutzer in der Registrierungswarteschlange. <br>Um diese Funktion zu aktivieren, gehe zu <a href=\"%1\">Einstellungen → Benutzer → Benutzerregistrierung</a> und stelle den <strong>Registrierungstyp</strong> auf \"Admin-Genehmigung\" ein.", "list.name": "Name", "list.email": "E-Mail", - "list.ip": "IP-Adresse", + "list.ip": "IP", "list.time": "Zeit", - "list.username-spam": "Häufigkeit: %1 Erscheint: %2 Sicherheit: %3", + "list.username-spam": "Häufigkeit: %1 Erscheint: %2 Vertrauen: %3", "list.email-spam": "Häufigkeit: %1 Erscheint: %2", "list.ip-spam": "Häufigkeit: %1 Erscheint: %2", "invitations": "Einladungen", - "invitations.description": "Unterhalb ist eine komplette Liste der versandten Einladungen. Benutze Strg+F um die Liste per Email oder Nutzername zu durchsuchen.<br><br> Der Nutzername wird für die Nutzer die ihre Einladung angenommen haben rechts von den E-Mails angezeigt.", + "invitations.description": "Nachfolgend findest du eine vollständige Liste der gesendeten Einladungen. Verwende Strg-F, um die Liste nach E-Mail oder Benutzername zu durchsuchen. Der Benutzername wird rechts neben den E-Mails für Benutzer angezeigt, die ihre Einladungen eingelöst haben.", "invitations.inviter-username": "Nutzername des Einladenden", - "invitations.invitee-email": "Email des eingeladenen", - "invitations.invitee-username": "Nutzername des eingeladenen (Wenn registriert)", + "invitations.invitee-email": "E-Mail des Eingeladenen", + "invitations.invitee-username": "Benutzername des Eingeladenen (falls registriert)", - "invitations.confirm-delete": "Sind Sie sicher, dass Sie diese Einladung löschen wollen?" + "invitations.confirm-delete": "Möchtest du diese Einladung wirklich löschen?" } \ No newline at end of file diff --git a/public/language/de/admin/manage/users.json b/public/language/de/admin/manage/users.json index 7af305cab5..d797f28a2d 100644 --- a/public/language/de/admin/manage/users.json +++ b/public/language/de/admin/manage/users.json @@ -18,8 +18,8 @@ "download-csv": "CSV herunterladen", "manage-groups": "Gruppen verwalten", "add-group": "Gruppe hinzufügen", - "create": "Create User", - "invite": "Invite by Email", + "create": "Benutzer erstellen", + "invite": "Einladung per E-Mail", "new": "Neuer Benutzer", "filter-by": "Filtern nach", "pills.unvalidated": "Nicht bestätigt", @@ -63,7 +63,7 @@ "create.password": "Passwort", "create.password-confirm": "Passwort bestätigen", - "temp-ban.length": "Length", + "temp-ban.length": "Länge", "temp-ban.reason": "Grund <span class=\"text-muted\">(optional)</span>", "temp-ban.hours": "Stunden", "temp-ban.days": "Tage", @@ -91,22 +91,22 @@ "alerts.validate-email-success": "E-Mails bestätigt", "alerts.validate-force-password-reset-success": "Die Passwörter der Benutzer wurden zurückgesetzt und ihre bestehenden Sitzungen wurden widerrufen.", "alerts.password-reset-confirm": "Möchtest Du wirklich (eine) Passwort-Reset-Email(s) an diese(n) Benutzer schicken?", - "alerts.password-reset-email-sent": "Password reset email sent.", - "alerts.confirm-delete": "<strong>Warning!</strong><p>Do you really want to delete <strong>user(s)</strong>?</p><p>This action is not reversible! Only the user account will be deleted, their posts and topics will remain.</p>", + "alerts.password-reset-email-sent": "E-Mail zum Zurücksetzen des Passworts gesendet.", + "alerts.confirm-delete": "<strong>Warnung!</strong><p>Möchtest Du wirklich <strong>Benutzer</strong> löschen?</p><p>Diese Aktion ist nicht umkehrbar! Lediglich das Nutzerkonto wird gelöscht, deren Beiträge und Themen bleiben bestehen</p>", "alerts.delete-success": "Benutzer gelöscht!", - "alerts.confirm-delete-content": "<strong>Warning!</strong><p>Do you really want to delete these user(s) <strong>content</strong>?</p><p>This action is not reversible! The users' accounts will remain, but their posts and topics will be deleted.</p>", + "alerts.confirm-delete-content": "<strong>Warnung!</strong><p>Möchtest Du diese <strong>Benutzerinhalte</strong> wirklich löschen?</p><p>Diese Aktion kann nicht umgekehrt werden! Die Konten der Benutzer bleiben bestehen, aber ihre Beiträge und Themen werden gelöscht.</p>", "alerts.delete-content-success": "Beiträge des/der Nutzer(s) gelöscht!", "alerts.confirm-purge": "<strong>Warnung!</strong><p>Bist du sicher, dass Du den/die <strong>Nutzer und deren Beiträge</strong> löschen möchtest?</p><p>Diese Aktion kann nicht rückgängig gemacht werden! Alle Nutzerdaten und Beiträge werden dabei gelöscht!</p>", - "alerts.create": "Nutzer Erstellen", + "alerts.create": "Benutzer erstellen", "alerts.button-create": "Erstellen", "alerts.button-cancel": "Abbrechen", "alerts.error-passwords-different": "Die Passwörter müssen übereinstimmen", "alerts.error-x": "<strong>Fehler</strong><p>%1</p>", - "alerts.create-success": "Nutzer erstellt", + "alerts.create-success": "Benutzer erstellt!", "alerts.prompt-email": "E-Mails:", "alerts.email-sent-to": "Eine Einladungsemail wurde an %1 gesendet", "alerts.x-users-found": "%1 Benutzer gefunden, (%2 Sekunden)", "export-users-started": "Der Export von Benutzern als CSV kann eine Weile dauern. Sie erhalten eine Benachrichtigung, wenn es abgeschlossen ist.", - "export-users-completed": "Benutzer wurden als CSV exportiert, klicken Sie hier, um sie herunterzuladen." + "export-users-completed": "Benutzer wurden als CSV exportiert, klicke hier, um sie herunterzuladen." } \ No newline at end of file diff --git a/public/language/de/admin/menu.json b/public/language/de/admin/menu.json index 22374645f0..07a3c5937b 100644 --- a/public/language/de/admin/menu.json +++ b/public/language/de/admin/menu.json @@ -36,7 +36,7 @@ "settings/pagination": "Seitennummerierung", "settings/tags": "Tags", "settings/notifications": "Benachrichtigungen", - "settings/api": "API Access", + "settings/api": "API-Zugriff", "settings/sounds": "Sounds", "settings/social": "Social", "settings/cookies": "Cookies", @@ -76,7 +76,7 @@ "logout": "Abmelden", "view-forum": "Forum anzeigen", - "search.placeholder": "Drücke "/" um nach Einstellungen zu suchen", + "search.placeholder": "Search settings", "search.no-results": "Keine Ergebnisse...", "search.search-forum": "Suche im Forum nach <strong></strong>", "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 b3a781a7db..0ebe167a14 100644 --- a/public/language/de/admin/settings/advanced.json +++ b/public/language/de/admin/settings/advanced.json @@ -1,6 +1,6 @@ { "maintenance-mode": "Wartungsmodus", - "maintenance-mode.help": "Während das Forum im Wartungsmodus ist werden alle Anfragen zu einer statischen Seite weitergeleitet. Administratoren sind von dieser Weiterleitung ausgenommen und können die Seite normal aufrufen.", + "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", "headers": "Headers", @@ -15,8 +15,8 @@ "headers.acac": "Access-Control-Allow-Credentials", "headers.acam": "Access-Control-Allow-Methods", "headers.acah": "Access-Control-Allow-Headers", - "headers.coep": "Cross-Origin-Embedder-Policy", - "headers.coep-help": "When enabled (default), will set the header to <code>require-corp</code>", + "headers.coep": "Cross-Origin-Embedder-Richtlinie", + "headers.coep-help": "Wenn aktiviert (Standard), wird der Header auf <code>require-corp</code> gesetzt", "headers.coop": "Cross-Origin-Opener-Policy", "headers.corp": "Cross-Origin-Resource-Policy", "hsts": "Strict Transport Security", diff --git a/public/language/de/admin/settings/api.json b/public/language/de/admin/settings/api.json index e74c69c076..d718623639 100644 --- a/public/language/de/admin/settings/api.json +++ b/public/language/de/admin/settings/api.json @@ -1,16 +1,16 @@ { "tokens": "Tokens", "settings": "Einstellungen", - "lead-text": "Von dieser Seite aus können Sie den Zugriff auf die Schreib-API in NodeBB konfigurieren.", - "intro": "Standardmäßig authentifiziert die <code>write-api</code> Nutzer anhand ihres Sitzungs-Cookies, aber NodeBB unterstützt auch die Bearer-Authentifizierung über Token, die über diese Seite generiert werden.", - "docs": "Klicken Sie hier, um auf die vollständige API-Spezifikation zuzugreifen", + "lead-text": "Auf dieser Seite kanst Du den Zugriff auf die Write-API in NodeBB konfigurieren.", + "intro": "Standardmäßig authentifiziert die Write-API Benutzer basierend auf ihrem Sitzungscookie, aber NodeBB unterstützt auch die Bearer-Authentifizierung über Token, die über diese Seite generiert werden.", + "docs": "Klicke hier, um auf die vollständige API-Spezifikation zuzugreifen", "require-https": "API-Nutzung nur über HTTPS möglich", "require-https-caveat": "<strong>Hinweis</strong>: Einige Installationen mit Load Balancern können ihre Anfragen über HTTP an NodeBB weiterleiten, in diesem Fall sollte diese Option deaktiviert bleiben.", "uid": "Nutzer–ID", - "uid-help-text": "Geben Sie eine Nutzer–ID an, die mit diesem Token verknüpft werden soll. Wenn die Benutzer-ID <code>0</code> lautet, wird sie als ein <em>master</em>-Token betrachtet, das die Identität anderer Benutzer auf der Grundlage des Parameters <code>_uid</code> annehmen kann.", + "uid-help-text": "Gebe eine Benutzer-ID an, die diesem Token zugeordnet werden soll. Wenn die Benutzer-ID <code>0</code> ist, wird sie als <em>Master</em>-Token betrachtet, das basierend auf dem <code>_uid</code>-Parameter die Identität anderer Benutzer annehmen kann", "description": "Beschreibung", "no-description": "Keine Beschreibung angegeben.", - "token-on-save": "Das Token wird generiert, sobald das Formular gespeichert wird." + "token-on-save": "Token wird generiert, sobald das Formular gespeichert wird" } \ No newline at end of file diff --git a/public/language/de/admin/settings/chat.json b/public/language/de/admin/settings/chat.json index 5eb4dafcb5..d97665c221 100644 --- a/public/language/de/admin/settings/chat.json +++ b/public/language/de/admin/settings/chat.json @@ -3,10 +3,10 @@ "disable": "Chat deaktivieren", "disable-editing": "Chatnachrichtenbearbeitung/löschung deaktivieren", "disable-editing-help": "Administratoren und globale Moderatoren sind von dieser Einschränkung ausgenommen", - "max-length": "Maximale Chatnachrichtenlänge", - "max-room-size": "Maximale Anzahl an Nutzern pro Chat-Room", + "max-length": "Maximale Länge von Chatnachrichten", + "max-room-size": "Maximale Anzahl von Benutzern in Chatrooms", "delay": "Zeit zwischen Chatnachrichten in Millisekunden", - "notification-delay": "Benachrichtigungsverzögerung für Chat Nachrichten. (0 für keine Verzögerung)", - "restrictions.seconds-edit-after": "Dauer in Sekunden, die eine Chat-Nachricht editiert werden kann. (0 deaktiviert)", - "restrictions.seconds-delete-after": "Dauer in Sekunden, die eine Chat-Nachricht gelöscht werden kann. (0 deaktiviert)" + "notification-delay": "Benachrichtigungsverzögerung für Chatnachrichten. (0 für keine Verzögerung)", + "restrictions.seconds-edit-after": "Anzahl der Sekunden, die eine Chat-Nachricht bearbeitet werden kann. (0 deaktiviert)", + "restrictions.seconds-delete-after": "Anzahl der Sekunden, die eine Chat-Nachricht löschbar bleibt. (0 deaktiviert)" } \ No newline at end of file diff --git a/public/language/de/admin/settings/cookies.json b/public/language/de/admin/settings/cookies.json index bacf045321..cf7bdde842 100644 --- a/public/language/de/admin/settings/cookies.json +++ b/public/language/de/admin/settings/cookies.json @@ -1,13 +1,13 @@ { "eu-consent": "EU Cookie Zustimmung", "consent.enabled": "Aktiviert", - "consent.message": "Benachrichtigung", - "consent.acceptance": "Akzeptierungsnachricht", - "consent.link-text": "Police Link Text", - "consent.link-url": "Link zu den Richtlinien", - "consent.blank-localised-default": "Leer lassen um NodeBB lokalisierte Standards zu benutzen", + "consent.message": "Benachrichtigungsnachricht", + "consent.acceptance": "Annahmenachricht", + "consent.link-text": "Richtlinien-Link-Text", + "consent.link-url": "Richtlinienlink-URL", + "consent.blank-localised-default": "Feld leerlassen, um die lokalisierten NodeBB-Standardeinstellungen zu verwenden", "settings": "Einstellungen", - "cookie-domain": "Session Cookie Domain", + "cookie-domain": "Session-Cookie-Domain", "max-user-sessions": "Maximale aktive Sitzungen pro Benutzer", "blank-default": "Leer lassen für Standardwert" } \ No newline at end of file diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json index a16fda4bde..aef186d817 100644 --- a/public/language/de/admin/settings/email.json +++ b/public/language/de/admin/settings/email.json @@ -6,7 +6,7 @@ "from-help": "Der Name des Absenders, welcher in der E-Mail angezeigt werden soll.", "smtp-transport": "SMTP Konfiguration", - "smtp-transport.enabled": "Enable SMTP Transport", + "smtp-transport.enabled": "SMTP-Transport aktivieren", "smtp-transport-help": "Du kannst aus einer Liste bekannter Email-Provider auswählen, oder einen benutzerdefinierten eingeben.", "smtp-transport.service": "Wähle einen Provider", "smtp-transport.service-custom": "Benutzerdefiniert...", @@ -18,7 +18,7 @@ "smtp-transport.security": "Verbindungssicherheit", "smtp-transport.security-encrypted": "Verschlüsselt", "smtp-transport.security-starttls": "StartTLS", - "smtp-transport.security-none": "Keine", + "smtp-transport.security-none": "Nichts", "smtp-transport.username": "Benutzername", "smtp-transport.username-help": "Bitte füge die komplette Email-Adresse <b>für Gmail</b> hier ein, insbesondere wenn du eine von Google Apps gemanagete domain verwendest.", "smtp-transport.password": "Passwort", @@ -29,20 +29,20 @@ "template.select": "E-Mail Vorlage auswählen", "template.revert": "Original wiederherstellen", "testing": "E-Mail Test", - "testing.select": "Wählen Sie die E-Mail Vorlage", + "testing.select": "E-Mail-Vorlage auswählen", "testing.send": "Test-E-Mail versenden", "testing.send-help": "Die Test-E-Mail wird an die E-Mail Adresse des momentan eingeloggten Nutzers geschickt.", "subscriptions": "Email Zusammenfassungen", "subscriptions.disable": "Deaktivierung der Email Zusammenfassungen", "subscriptions.hour": "Sende Zeit", "subscriptions.hour-help": "Bitte geben Sie eine Nummer ein, welche die Stunde repräsentiert zu welcher geplante Emails versandt werden sollen (z.B. <code>0</code> für Mitternacht, <code>17</code> für 5 Uhr Nachmittags). Beachten Sie, dass die Zeit auf der Serverzeit basiert und daher nicht umbedingt mit ihrer Systemzeit übereinstimmen muss.<br>Die ungefähre Serverzeit ist: <span id=\"serverTime\"></span><br>Die nächste tägliche Sendung ist um <span id=\"nextDigestTime\"></span> geplant", - "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. <strong>It does not ensure user will enter a real email address, nor even an address they own.</strong>", - "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). <strong>Enable this setting at your own risk</strong> – sending emails to unverified addresses may be a violation of regional anti-spam laws.", - "prompt": "Prompt users to enter or confirm their emails", - "prompt-help": "If a user does not have an email set, or their email is not confirmed, a warning will be shown on screen.", - "sendEmailToBanned": "Send emails to users even if they have been banned" + "notifications.remove-images": "Bilder aus E-Mail-Benachrichtigungen entfernen", + "require-email-address": "Neue Benutzer auffordern, eine E-Mail-Adresse anzugeben", + "require-email-address-warning": "Standardmäßig können Benutzer die Eingabe einer E-Mail-Adresse ablehnen, indem sie das Feld leer lassen. Wenn Du diese Option aktivierst, musst Du eine E-Mail-Adresse eingeben, um mit der Registrierung fortzufahren.<strong>Es stellt nicht sicher, dass der Benutzer eine echte E-Mail-Adresse eingibt, noch nicht einmal eine Adresse, die ihm gehört.</strong>", + "send-validation-email": "Validierungs-E-Mails senden, wenn eine E-Mail hinzugefügt oder geändert wird", + "include-unverified-emails": "E-Mails an Empfänger senden, die ihre E-Mails nicht explizit bestätigt haben", + "include-unverified-warning": "Standardmäßig wurden Benutzer mit E-Mail-Adressen, die mit ihrem Konto verknüpft sind, bereits verifiziert, aber es existieren Situationen, in denen dies nicht der Fall ist (z. B. SSO-Anmeldungen, Großvater-Benutzer usw.). <strong>Aktiviere diese Einstellung auf eigenes Risiko</strong> – Das Senden von E-Mails an nicht verifizierte Adressen kann einen Verstoß gegen regionale Anti-Spam-Gesetze darstellen.", + "prompt": "Benutzer auffordern, ihre E-Mail-Adressen einzugeben oder zu bestätigen", + "prompt-help": "Wenn ein Benutzer keine E-Mail-Adresse hat oder seine E-Mail-Adresse nicht bestätigt ist, wird eine Warnung auf dem Bildschirm angezeigt.", + "sendEmailToBanned": "E-Mails an Benutzer senden, selbst wenn sie gesperrt wurden" } diff --git a/public/language/de/admin/settings/group.json b/public/language/de/admin/settings/group.json index 95c85461c3..df50632f6b 100644 --- a/public/language/de/admin/settings/group.json +++ b/public/language/de/admin/settings/group.json @@ -7,7 +7,7 @@ "allow-multiple-badges-help": "Diese Eintellung kann verwendet werden um Benutzern zu erlauben mehrere Gruppen abzeichen auszuwählen, benötigt Theme unterstützung.", "max-name-length": "Maximale Länge von Gruppennamen", "max-title-length": "Maximale Gruppentitellänge", - "cover-image": "Gruppen-Deckbild", - "default-cover": "Standard-Deckbild", - "default-cover-help": "Fügen Sie Komma-getrennte standard-Deckbilder für Gruppen hinzu, welche kein Deckbild hochgeladen haben" + "cover-image": "Titelbild der Gruppe", + "default-cover": "Standard-Titelbilder", + "default-cover-help": "Füge urch Kommas getrennte Standard-Titelbilder für Gruppen hinzu, die kein hochgeladenes Titelbild haben" } \ No newline at end of file diff --git a/public/language/de/admin/settings/guest.json b/public/language/de/admin/settings/guest.json index 3e9e67f2bf..2d5ee7a23e 100644 --- a/public/language/de/admin/settings/guest.json +++ b/public/language/de/admin/settings/guest.json @@ -1,7 +1,7 @@ { "settings": "Einstellungen", "handles.enabled": "Gastzugänge erlauben", - "handles.enabled-help": "Diese Option offenbart ein neues Feld, welches Gästen erlaubt einen Nutzernamen zu wählen, welcher sie mit jedem Beitrag assoziiert den sie erstellen. Wenn diese Option deaktiviert ist, werden sie einfach \"Gast\" genannt", + "handles.enabled-help": "Diese Option zeigt ein neues Feld an, in dem Gäste einen Namen auswählen können, der jedem von ihnen erstellten Beitrag zugeordnet werden soll. Wenn sie deaktiviert sind, werden sie einfach „Gast“ genannt.", "topic-views.enabled": "Gästen erlauben, die gezählte Anzahl der Themenaufrufe zu erhöhen", "reply-notifications.enabled": "Erlauben Sie Gästen, Antwortbenachrichtigungen zu erstellen" } \ No newline at end of file diff --git a/public/language/de/admin/settings/homepage.json b/public/language/de/admin/settings/homepage.json index 186e89ae62..243f51bd45 100644 --- a/public/language/de/admin/settings/homepage.json +++ b/public/language/de/admin/settings/homepage.json @@ -1,8 +1,8 @@ { "home-page": "Startseite", - "description": "Wähle aus, welche Seite angezeigt werden soll, wenn Nutzer zur Startseite des Forums navigieren.", - "home-page-route": "Startseitenpfad", - "custom-route": "Eigener Startseitenpfad", - "allow-user-home-pages": "Benutzern eigene Startseiten erlauben", + "description": "Wähle, welche Seite angezeigt wird, wenn Benutzer zur Stamm-URL deines Forums navigieren.", + "home-page-route": "Startseiten Route", + "custom-route": "Benutzerdefinierte Route", + "allow-user-home-pages": "Benutzer-Startseiten zulassen", "home-page-title": "Titel der Startseite (Standardmäßig \"Home\")" } \ No newline at end of file diff --git a/public/language/de/admin/settings/languages.json b/public/language/de/admin/settings/languages.json index c2358ac047..8aa3dd6590 100644 --- a/public/language/de/admin/settings/languages.json +++ b/public/language/de/admin/settings/languages.json @@ -1,6 +1,6 @@ { "language-settings": "Spracheinstellungen", - "description": "Die Standardsprache legt die Spracheinstellungen für alle Benutzer fest, die das Forum besuchen. <br />Einzelne Benutzer können die Standardsprache auf der Seite in ihren Kontoeinstellungen überschreiben.", + "description": "Die Standardsprache bestimmt die Spracheinstellungen für alle Benutzer, die dein Forum besuchen. <br />Einzelne Benutzer können die Standardsprache auf ihrer Kontoeinstellungsseite überschreiben.", "default-language": "Standardsprache", "auto-detect": "Sprach-Einstellung bei Gästen automatisch ermitteln" } \ No newline at end of file diff --git a/public/language/de/admin/settings/navigation.json b/public/language/de/admin/settings/navigation.json index a3809cafeb..fb54380fd3 100644 --- a/public/language/de/admin/settings/navigation.json +++ b/public/language/de/admin/settings/navigation.json @@ -12,7 +12,7 @@ "groups": "Gruppen:", "open-new-window": "In neuem Fenster öffnen", "dropdown": "Dropdown", - "dropdown-placeholder": "Place your dropdown menu items below, ie: <br/><li><a href="https://myforum.com">Link 1</a></li>", + "dropdown-placeholder": "Platziere deine Dropdown-Menüpunkte unten, dh:<br/><li><a href="https://myforum.com">Link 1</a></li>", "btn.delete": "Löschen", "btn.disable": "Deaktivieren", diff --git a/public/language/de/admin/settings/notifications.json b/public/language/de/admin/settings/notifications.json index d3947744c5..089bd86254 100644 --- a/public/language/de/admin/settings/notifications.json +++ b/public/language/de/admin/settings/notifications.json @@ -1,7 +1,7 @@ { "notifications": "Benachrichtigungen", - "welcome-notification": "Wilkommensnachricht", - "welcome-notification-link": "Wilkommensnachricht-Link", - "welcome-notification-uid": "Wilkommensbenachrichtigung Benutzer (UID)", - "post-queue-notification-uid": "Post Queue User (UID)" + "welcome-notification": "Willkommensbenachrichtigung", + "welcome-notification-link": "Willkommens-Benachrichtigungslink", + "welcome-notification-uid": "Begrüßungsbenachrichtigungsbenutzer (UID)", + "post-queue-notification-uid": "Post-Queue-Benutzer (UID)" } \ No newline at end of file diff --git a/public/language/de/admin/settings/pagination.json b/public/language/de/admin/settings/pagination.json index dbd7e5d21c..3acac1a13b 100644 --- a/public/language/de/admin/settings/pagination.json +++ b/public/language/de/admin/settings/pagination.json @@ -1,12 +1,12 @@ { "pagination": "Seitennummerierungs Einstellungen", - "enable": "Themen in Seiten einteilen anstatt endlos zu scrollen", + "enable": "Themen und Beiträge paginieren, anstatt unendlich zu scrollen.", "posts": "Beitragsseitennummerierung", "topics": "Themen Seitennummerierung", "posts-per-page": "Beiträge pro Seite", "max-posts-per-page": "Maximale Anzahl von Beiträgen pro Seite", "categories": "Kategorie Seitennummerierung", "topics-per-page": "Themen pro Seite", - "max-topics-per-page": "Maximale Anzahl von Themen pro Seite", + "max-topics-per-page": "Maximale Themen pro Seite", "categories-per-page": "Kategorien pro Seite" } \ No newline at end of file diff --git a/public/language/de/admin/settings/post.json b/public/language/de/admin/settings/post.json index 9aa327bad0..b84a943130 100644 --- a/public/language/de/admin/settings/post.json +++ b/public/language/de/admin/settings/post.json @@ -15,14 +15,14 @@ "restrictions.groups-exempt-from-post-queue": "Gruppen auswählen, die von der Beitragswarteschlange ausgenommen sind", "restrictions-new.post-queue": "Aktiviere Beschränkungen für neue Benutzer", "restrictions.post-queue-help": "Aktivierte Beitragswarteschlange sorgt dafür, dass Posts von neuen Benutzern vor dem Veröffentlichen genehmigt werden müssen.", - "restrictions-new.post-queue-help": "Enabling new user restrictions will set restrictions on posts created by new users", - "restrictions.seconds-between": "Number of seconds between posts", + "restrictions-new.post-queue-help": "Durch das Aktivieren von Einschränkungen für neue Benutzer werden Einschränkungen für Beiträge festgelegt, die von neuen Benutzern erstellt wurden", + "restrictions.seconds-between": "Anzahl der Sekunden zwischen Posts", "restrictions.seconds-between-new": "Sekunden zwischen Beiträgen für neue Benutzer", "restrictions.rep-threshold": "Mindesreputation bevor die Beschränkungen aufgehoben werden", - "restrictions.seconds-before-new": "Seconds before a new user can make their first post", - "restrictions.seconds-edit-after": "Number of seconds a post remains editable (set to 0 to disable)", - "restrictions.seconds-delete-after": "Number of seconds a post remains deletable (set to 0 to disable)", - "restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics (set to 0 to disable)", + "restrictions.seconds-before-new": "Sekunden, bevor ein neuer Benutzer seinen ersten Beitrag schreiben kann", + "restrictions.seconds-edit-after": "Anzahl der Sekunden, die ein Beitrag bearbeitet werden kann (zum Deaktivieren auf 0 setzen)", + "restrictions.seconds-delete-after": "Anzahl der Sekunden, die ein Beitrag löschbar bleibt (zum Deaktivieren auf 0 setzen)", + "restrictions.replies-no-delete": "Anzahl der Antworten, nachdem Benutzern das Löschen ihrer eigenen Themen verweigert wurde (zum Deaktivieren auf 0 setzen)", "restrictions.min-title-length": "Minimale Titellänge", "restrictions.max-title-length": "Maximale Titellänge", "restrictions.min-post-length": "Minimale Beitragslänge", @@ -32,20 +32,20 @@ "timestamp": "Zeitstempel", "timestamp.cut-off": "Tageslimit für Relative Zeitangaben (in Tagen)", "timestamp.cut-off-help": "Tage & Zeiten werden relativ angezeigt (z.B. \"vor 3 Stunden\" / \"vor 5 Tagen\"), und in viele Sprachen übersetzt. Nach einem bestimmten Zeitpunkt, kann dieses Text durch das übersetzte Datum selbst ersetzt werden (z.B. 5 Nov 2016 15:30).<br><em>(Standard: <code>30</code>, oder ein Monat). Auf 0 setzen um immer Daten anzuzeigen, leer lassung um immer relative Zeiten anzuzeigen.</em>", - "timestamp.necro-threshold": "Necro Threshold (in days)", - "timestamp.necro-threshold-help": "A message will be shown between posts if the time between them is longer than the necro threshold. (Default: <code>7</code>, or one week). Set to 0 to disable.</em>", - "timestamp.topic-views-interval": "Increment topic views interval (in minutes)", - "timestamp.topic-views-interval-help": "Topic views will only increment once every X minutes as defined by this setting.", + "timestamp.necro-threshold": "Nekroschwelle (in Tagen)", + "timestamp.necro-threshold-help": "Zwischen Posts wird eine Nachricht angezeigt, wenn die Zeit zwischen ihnen länger als die Necro-Schwelle ist. (Standart: <code>7</code> oder eine Woche) Zum Deaktivieren auf 0 setzen.</em>", + "timestamp.topic-views-interval": "Intervall für Themenaufrufe erhöhen (in Minuten)", + "timestamp.topic-views-interval-help": "Themenansichten werden nur einmal alle X Minuten erhöht, wie durch diese Einstellung definiert.", "teaser": "Teaser-Beitrag", "teaser.last-post": "Letzter - Den neuesten Beitrag anzeigen, den originalen Beitrag innbegriffen, wenn es keine Antworten gibt", "teaser.last-reply": "Letzter - Den neuesten Beitrag oder einen \"Keine Antworten\" Platzhalter, wenn es keine Antworten gibt anzeigen", "teaser.first": "Erster", - "showPostPreviewsOnHover": "Show a preview of posts when mouse overed", + "showPostPreviewsOnHover": "Eine Vorschau der Beiträge zeigen, wenn Du mit der Maus darüber fährst", "unread": "Ungelesen-Einstellungen", "unread.cutoff": "Ungelesen-Limit (in Tagen)", "unread.min-track-last": "Minimale Anzahl an Beiträgen pro Thema bevor die letzte Sichtung mitgeschrieben wird", "recent": "Kürzlich verwendete Einstellungen", - "recent.max-topics": "Maximum topics on /recent", + "recent.max-topics": "Maximale Themen auf /recent", "recent.categoryFilter.disable": "Filtern von Themen in ignorierten Kategorien auf der /recent Seite deaktivieren", "signature": "Signatureinstellungen", "signature.disable": "Signaturen deaktivieren", @@ -58,8 +58,8 @@ "composer.enable-plugin-help": "Plugins erlauben Inhalte dem \"Help\"-Tab hinzuzufügen", "composer.custom-help": "Benutzerdefinierter Hilfe-Text", "backlinks": "Backlinks", - "backlinks.enabled": "Enable topic backlinks", - "backlinks.help": "If a post references another topic, a link back to the post will be inserted into the referenced topic at that point in time.", + "backlinks.enabled": "Themen-Backlinks aktivieren", + "backlinks.help": "Wenn ein Beitrag auf ein anderes Thema verweist, wird zu diesem Zeitpunkt ein Link zurück zu dem Beitrag in das referenzierte Thema eingefügt.", "ip-tracking": "IP-Verfolgung", "ip-tracking.each-post": "IP-Adresse für jeden Beitrag speichern", "enable-post-history": "Aktiviere Beitrags-Änderungsgeschichte" diff --git a/public/language/de/admin/settings/reputation.json b/public/language/de/admin/settings/reputation.json index 2669c3b2c7..106965c7a3 100644 --- a/public/language/de/admin/settings/reputation.json +++ b/public/language/de/admin/settings/reputation.json @@ -4,13 +4,13 @@ "disable-down-voting": "Negative Bewertungen deaktivieren", "votes-are-public": "Alle Bewertungen sind öffentlich", "thresholds": "Aktivitätsschwelle", - "min-rep-upvote": "Minimum reputation to upvote posts", - "upvotes-per-day": "Upvotes per day (set to 0 for unlimited upvotes)", - "upvotes-per-user-per-day": "Upvotes per user per day (set to 0 for unlimited upvotes)", + "min-rep-upvote": "Mindestreputation, um Beiträge hochzustimmen", + "upvotes-per-day": "Upvotes pro Tag (für unbegrenzte Upvotes auf 0 setzen)", + "upvotes-per-user-per-day": "Upvotes pro Benutzer und Tag (für unbegrenzte Upvotes auf 0 gesetzt)", "min-rep-downvote": "Minimales Ansehen um Beiträge negativ zu bewerten", "downvotes-per-day": "Runtervoten pro Tag (auf 0 gesetzt für unbegrenzte Runtervotes)", "downvotes-per-user-per-day": "Runtervoten pro Benutzer pro Tag (auf 0 gesetzt für unbegrenzte Runtervotes)", - "min-rep-chat": "Minimum reputation to send chat messages", + "min-rep-chat": "Mindestreputation zum Senden von Chatnachrichten", "min-rep-flag": "Minimales Ansehen und Beiträge zu melden", "min-rep-website": "Erforderliche Reputation um eine \"Website\" zum Benutzerprofil hinzuzufügen", "min-rep-aboutme": "Erforderliche Reputation um eine \"Über mich\"-Sektion zum Benutzerprofil hinzuzufügen", @@ -22,6 +22,6 @@ "flags.limit-per-target": "Maximale Häufigkeit, mit der etwas markiert werden kann", "flags.limit-per-target-placeholder": "Standardwert: 0", "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": "Number of downvotes to auto flag posts (Set to 0 to disable, default: 0)", + "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" } \ No newline at end of file diff --git a/public/language/de/admin/settings/social.json b/public/language/de/admin/settings/social.json index 0614aca7da..081de0cb88 100644 --- a/public/language/de/admin/settings/social.json +++ b/public/language/de/admin/settings/social.json @@ -1,5 +1,5 @@ { - "post-sharing": "Beiträge teilen", - "info-plugins-additional": "Plugins können zusätzliche soziale Netzwerke für das Teilen von Beiträgen hinzufügen.", - "save-success": "Erfolgreich gespeichert!" + "post-sharing": "Beitragsfreigabe", + "info-plugins-additional": "Plugins können zusätzliche Netzwerke zum Teilen von Beiträgen hinzufügen.", + "save-success": "Post-Sharing-Netzwerke erfolgreich gespeichert!" } \ No newline at end of file diff --git a/public/language/de/admin/settings/sockets.json b/public/language/de/admin/settings/sockets.json index d86c0b2d3a..61c2bb4fbe 100644 --- a/public/language/de/admin/settings/sockets.json +++ b/public/language/de/admin/settings/sockets.json @@ -1,6 +1,6 @@ { - "reconnection": "Reconnection Einstellungen", - "max-attempts": "Maximale Anzahl von Reconnection-Versuchen", + "reconnection": "Wiederverbindungseinstellungen", + "max-attempts": "Max. Wiederverbindungsversuche", "default-placeholder": "Standard: %1", - "delay": "Reconnection-Verzögerung" + "delay": "Wiederverbindungsverzögerung" } \ No newline at end of file diff --git a/public/language/de/admin/settings/sounds.json b/public/language/de/admin/settings/sounds.json index 22cbf29f14..0d39be1669 100644 --- a/public/language/de/admin/settings/sounds.json +++ b/public/language/de/admin/settings/sounds.json @@ -1,9 +1,9 @@ { "notifications": "Benachrichtigungen", - "chat-messages": "Chat Nachrichten", + "chat-messages": "Chat-Nachrichten", "play-sound": "Abspielen", "incoming-message": "Eingehende Nachricht", - "outgoing-message": "Gesendete Nachricht", - "upload-new-sound": "Sound hochladen", + "outgoing-message": "Ausgehende Nachricht", + "upload-new-sound": "Neuen Ton hochladen", "saved": "Einstellungen gespeichert!" } \ No newline at end of file diff --git a/public/language/de/admin/settings/uploads.json b/public/language/de/admin/settings/uploads.json index 42b2c6aa3d..85049ff8e1 100644 --- a/public/language/de/admin/settings/uploads.json +++ b/public/language/de/admin/settings/uploads.json @@ -1,11 +1,11 @@ { "posts": "Beiträge", - "orphans": "Orphaned Files", + "orphans": "Verwaiste Dateien", "private": "Hochgeladene Dateien privatisieren", "strip-exif-data": "EXIF-Daten entfernen", - "preserve-orphaned-uploads": "Keep uploaded files on disk after a post is purged", - "orphanExpiryDays": "Days to keep orphaned files", - "orphanExpiryDays-help": "After this many days, orphaned uploads will be deleted from the file system.<br />Set 0 or leave blank to disable.", + "preserve-orphaned-uploads": "Hochgeladene Dateien auf der Festplatte behalten, nachdem ein Beitrag gelöscht wurde", + "orphanExpiryDays": "Tage, um verwaiste Dateien aufzubewahren", + "orphanExpiryDays-help": "Nach dieser Anzahl von Tagen werden verwaiste Uploads aus dem Dateisystem gelöscht.<br />Auf 0 setzen oder das Feld leer lassen, um es zu deaktivieren.", "private-extensions": "Private Dateiendungen", "private-uploads-extensions-help": "Gib eine Komma-Separierte Liste mit Dateiendungen an, die privatisiert werden sollen (z.B. <code>pdf,xls,doc</code>). Eine leere Liste bedeutet, dass alle Dateien privat sind.", "resize-image-width-threshold": "Bilder zu einer bestimmten Breite runterskalieren wenn sie breiter sind als die angegebene Breite.", @@ -24,9 +24,9 @@ "topic-thumb-size": "Thema Thumbnailgröße", "allowed-file-extensions": "Erlaubte Dateiendungen", "allowed-file-extensions-help": "Komma-getrennte Liste der Dateiendungen hier einfügen (z.B. <code>pdf,xls,doc</code>). Eine leere Liste bedeutet, dass alle Dateiendungen erlaubt sind.", - "upload-limit-threshold": "Rate limit user uploads to:", - "upload-limit-threshold-per-minute": "Per %1 Minute", - "upload-limit-threshold-per-minutes": "Per %1 Minutes", + "upload-limit-threshold": "Benutzer-Uploads begrenzen auf:", + "upload-limit-threshold-per-minute": "Pro %1 Minute", + "upload-limit-threshold-per-minutes": "Pro %1 Minuten", "profile-avatars": "Profil Avatare", "allow-profile-image-uploads": "Nutzern erlauben Profilbilder hochzuladen", "convert-profile-image-png": "Hochgeladene Profilbilder in PNG konvertieren", diff --git a/public/language/de/admin/settings/user.json b/public/language/de/admin/settings/user.json index 151248f526..a2ea87a8e0 100644 --- a/public/language/de/admin/settings/user.json +++ b/public/language/de/admin/settings/user.json @@ -7,14 +7,14 @@ "allow-login-with.username": "Nur Benutzername", "account-settings": "Kontoeinstellungen", "gdpr_enabled": "Aktivieren Sie die DSGVO-Zustimmungserfassung", - "gdpr_enabled_help": "When enabled, all new registrants will be required to explicitly give consent for data collection and usage under the <a href=\"https://ec.europa.eu/info/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules/eu-data-protection-rules_en\">General Data Protection Regulation (GDPR)</a>. <strong>Note</strong>: Enabling GDPR does not force pre-existing users to provide consent. To do so, you will need to install the GDPR plugin.", + "gdpr_enabled_help": "Wenn diese Option aktiviert ist, müssen alle neuen Registranten ausdrücklich der Datenerhebung und -nutzung gemäß der <a href=\"https://ec.europa.eu/info/priorities/justice-and-fundamental-rights/data-protection/2018-reform-eu-data-protection-rules/eu-data-protection-rules_en\">Datenschutz-Grundverordnung (DSGVO)</a> zustimmen. <strong>Hinweis</strong>: Durch die Aktivierung der DSGVO werden bereits vorhandene Benutzer nicht gezwungen, ihre Zustimmung zu erteilen. Dazu müssen Sie das GDPR-Plugin installieren.", "disable-username-changes": "Deaktiviere Änderungen des Benutzernames", "disable-email-changes": "Deaktiviere Änderungen der E-Mail Adresse", "disable-password-changes": "Deaktiviere Änderungen des Passwortes", "allow-account-deletion": "Erlaube löschen des Kontos", "hide-fullname": "Den 'Kompletten Namen' von Benutzern verstecken", "hide-email": "Die Email-Adresse von Benutzern verstecken", - "show-fullname-as-displayname": "Show user's full name as their display name if available", + "show-fullname-as-displayname": "Vollständigen Namen des Benutzers als seinen Anzeigenamen anzeigen, falls verfügbar", "themes": "Themes", "disable-user-skins": "Verhindere das Benutzer eigene Skins verwenden", "account-protection": "Kontosicherheit", @@ -33,18 +33,18 @@ "online-cutoff-help": "Wenn der Benutzer für diese Dauer keine Aktionen ausführt, wird er als inaktiv betrachtet und erhält keine Echtzeit-Updates.", "registration": "Benutzer Registrierung", "registration-type": "Registrierungart", - "registration-approval-type": "Registration Approval Type", + "registration-approval-type": "Art der Registrierungsgenehmigung", "registration-type.normal": "Normal", - "registration-type.admin-approval": "Admin Genehmigung", + "registration-type.admin-approval": "Admin-Genehmigung", "registration-type.admin-approval-ip": "Admin Genehmigung für IPs", "registration-type.invite-only": "Nur Einladungen", "registration-type.admin-invite-only": "Nur Admin Einladungen", "registration-type.disabled": "Keine Registrierung", - "registration-type.help": "Normal - Users can register from the /register page.<br/>\nInvite Only - Users can invite others from the <a href=\"%1/users\" target=\"_blank\">users</a> page.<br/>\nAdmin Invite Only - Only administrators can invite others from <a href=\"%1/users\" target=\"_blank\">users</a> and <a href=\"%1/admin/manage/users\">admin/manage/users</a> pages.<br/>\nNo registration - No user registration.<br/>", - "registration-approval-type.help": "Normal - Users are registered immediately.<br/>\nAdmin Approval - User registrations are placed in an <a href=\"%1/admin/manage/registration\">approval queue</a> for administrators.<br/>\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.<br/>", - "registration-queue-auto-approve-time": "Automatic Approval Time", - "registration-queue-auto-approve-time-help": "Hours before user is approved automatically. 0 to disable.", - "registration-queue-show-average-time": "Show users average time it takes to approve a new user", + "registration-type.help": "Normal - Benutzer können sich auf der Seite /register registrieren<br/>\nNur einladen – Benutzer können andere über die <a href=\"%1/users\" target=\"_blank\">Benutzerseite</a> einladen.<br/>\nNur Administrator-Einladung – Nur Administratoren können andere von <a href=\"%1/users\" target=\"_blank\">Benutzer-</a> und <a href=\"%1/admin/manage/users\">Administrator-/Verwaltungs-/Benutzerseiten</a> einladen.<br/>\nKeine Registrierung - Keine Benutzerregistrierung.<br/>", + "registration-approval-type.help": "Normal - Benutzer werden sofort registriert.<br/>\nAdmin-Genehmigung – Benutzerregistrierungen werden in eine <a href=\"%1/admin/manage/registration\">Genehmigungswarteschlange</a> für Administratoren gestellt.<br/>\nAdmin-Genehmigung für IPs – Normal für neue Benutzer, Admin-Genehmigung für IP-Adressen, die bereits ein Konto haben.<br/>", + "registration-queue-auto-approve-time": "Automatische Genehmigungszeit", + "registration-queue-auto-approve-time-help": "Stunden, bevor der Benutzer automatisch genehmigt wird. 0 zum Deaktivieren.", + "registration-queue-show-average-time": "Zeigen Sie Benutzern die durchschnittliche Zeit, die es dauert, einen neuen Benutzer zu genehmigen", "registration.max-invites": "Maximale Einladungen pro Benutzer", "max-invites": "Maximale Einladungen pro Benutzer", "max-invites-help": "0 für keine Beschränkung. Admins haben keine beschränkung.<br>Nur praktikabel für \"Nur Einladungen\".", @@ -64,12 +64,12 @@ "restrict-chat": "Erlaube nur Chatnachrichten von Benutzern denen ich folge", "outgoing-new-tab": "Öffne externe Links in einem neuen Tab", "topic-search": "Suchen innerhalb von Themen aktivieren", - "update-url-with-post-index": "Update url with post index while browsing topics", + "update-url-with-post-index": " URL während Themen durchsuchen mit dem Beitragsindex aktivieren", "digest-freq": "Zusammenfassung abonnieren", "digest-freq.off": "Aus", "digest-freq.daily": "Täglich", "digest-freq.weekly": "Wöchentlich", - "digest-freq.biweekly": "Bi-Weekly", + "digest-freq.biweekly": "Zweimal wöchentlich", "digest-freq.monthly": "Monatlich", "email-chat-notifs": "Sende eine E-Mail, wenn eine neue Chat-Nachricht eingeht und ich nicht online bin", "email-post-notif": "Sende eine E-Mail wenn auf Themen die ich abonniert habe geantwortet wird", diff --git a/public/language/de/admin/settings/web-crawler.json b/public/language/de/admin/settings/web-crawler.json index 5ef1848372..d898fa69ac 100644 --- a/public/language/de/admin/settings/web-crawler.json +++ b/public/language/de/admin/settings/web-crawler.json @@ -1,10 +1,10 @@ { - "crawlability-settings": "Crawlability Einstellung", + "crawlability-settings": "Crawling-Einstellungen", "robots-txt": "Benutzerdefinierte robots.txt <small>Leer lassen für Standardeinstellung</small>", - "sitemap-feed-settings": "Sitemap & Feed Einstellungen", - "disable-rss-feeds": "Deaktiviere RSS Feeds", - "disable-sitemap-xml": "Deaktiviere sitemap.xml", - "sitemap-topics": "Anzahl der Themen die auf der Sitemap angezeigt werden", + "sitemap-feed-settings": "Sitemap- und Feed-Einstellungen", + "disable-rss-feeds": "RSS Feeds deaktivieren", + "disable-sitemap-xml": "sitemap.xml deaktivieren", + "sitemap-topics": "Anzahl der Themen, die in der Sitemap angezeigt werden sollen", "clear-sitemap-cache": "Sitemap Cache leeren", - "view-sitemap": "Zeige Sitemap" + "view-sitemap": "Sitemap anzeigen" } \ No newline at end of file diff --git a/public/language/de/error.json b/public/language/de/error.json index 22d445acf6..6767540d5f 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -32,7 +32,7 @@ "folder-exists": "Ordner existiert", "invalid-pagination-value": "Ungültige Seitennummerierung, muss mindestens %1 und maximal %2 sein", "username-taken": "Der Benutzername ist bereits vergeben", - "email-taken": "Die E-Mail-Adresse ist bereits vergeben", + "email-taken": "E-Mail-Adresse vergeben", "email-nochange": "Die eingegebene E-Mail ist die gleiche wie die bereits hinterlegte E-Mail.", "email-invited": "E-Mail wurde bereits eingeladen", "email-not-confirmed": "Das Schreiben von Beiträgen in einigen Kategorien oder Themen ist erst möglich, wenn Ihre E-Mail bestätigt wurde. Bitte klicken Sie hier, um eine Bestätigungs-E-Mail zu senden.", @@ -61,7 +61,7 @@ "no-group": "Die Gruppe existiert nicht", "no-user": "Der Benutzer existiert nicht", "no-teaser": "Zusammenfassung existiert nicht", - "no-flag": "Flag does not exist", + "no-flag": "Markierung existiert nicht", "no-privileges": "Du verfügst nicht über ausreichende Berechtigungen, um die Aktion durchzuführen.", "category-disabled": "Kategorie ist deaktiviert", "topic-locked": "Thema ist gesperrt", @@ -87,7 +87,7 @@ "title-too-long": "Bitten gebe einen kürzeren Titel ein. Ein Titel darf nicht mehr als %1 Zeichen enthalten.", "category-not-selected": "Kategorie nicht ausgewählt", "too-many-posts": "Du kannst nur einen Beitrag innerhalb von %1 Sekunden erstellen - Bitte warte bevor Du erneut einen Beitrag erstellst.", - "too-many-posts-newbie": "Als neuer Benutzer kannst du nur einen Beitrag innerhalb von %1 Sekunden erstellen bis dein Ansehen %2 erreicht hat - Bitte warte bevor du erneut einen Beitrag erstellst.", + "too-many-posts-newbie": "Als neuer Benutzer kannst du nur einmal alle %1 Sekunde(n) posten, bis du %2 Reputation erworben hast - bitte warte, bevor du erneut postest", "tag-too-short": "Bitte gebe ein längeres Schlagwort ein. Schlagworte sollten mindestens %1 Zeichen enthalten.", "tag-too-long": "Bitte gebe ein kürzeres Schlagwort ein. Schlagworte können nicht länger als %1 Zeichen sein.", "not-enough-tags": "Nicht genügend Schlagworte. Themen müssen mindestens %1 Schlagwort(e) enthalten", @@ -108,9 +108,9 @@ "already-bookmarked": "Du hast diesen Beitrag bereits als Lesezeichen gespeichert", "already-unbookmarked": "Du hast diesen Beitrag bereits aus deinen Lesezeichen entfernt", "cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!", - "cant-mute-other-admins": "You can't mute other admins!", - "user-muted-for-hours": "You have been muted, you will be able to post in %1 hour(s)", - "user-muted-for-minutes": "You have been muted, you will be able to post in %1 minute(s)", + "cant-mute-other-admins": "Du kannst keine anderen Admins stummschalten!", + "user-muted-for-hours": "Du wurdest stumgeschlatet, du kannst wieder in %1 Stunde(n) posten", + "user-muted-for-minutes": "Du wurdest stumgeschlatet, du kannst wieder in %1 Minute(n) posten", "cant-make-banned-users-admin": "Sie können gesperrte Benutzer nicht zum Administrator machen.", "cant-remove-last-admin": "Du bist der einzige Administrator. Füge zuerst einen anderen Administrator hinzu, bevor du dich selbst als Administrator entfernst", "account-deletion-disabled": "Kontolöschung ist deaktiviert", @@ -158,23 +158,23 @@ "already-voting-for-this-post": "Du hast diesen Beitrag bereits bewertet.", "reputation-system-disabled": "Das Reputationssystem ist deaktiviert.", "downvoting-disabled": "Downvotes sind deaktiviert.", - "not-enough-reputation-to-chat": "You need %1 reputation to chat", - "not-enough-reputation-to-upvote": "You need %1 reputation to upvote", - "not-enough-reputation-to-downvote": "You need %1 reputation to downvote", - "not-enough-reputation-to-flag": "You need %1 reputation to flag this post", - "not-enough-reputation-min-rep-website": "You need %1 reputation to add a website", - "not-enough-reputation-min-rep-aboutme": "You need %1 reputation to add an about me", - "not-enough-reputation-min-rep-signature": "You need %1 reputation to add a signature", - "not-enough-reputation-min-rep-profile-picture": "You need %1 reputation to add a profile picture", - "not-enough-reputation-min-rep-cover-picture": "You need %1 reputation to add a cover picture", + "not-enough-reputation-to-chat": "Du benötigst %1 Ruf zum Chatten", + "not-enough-reputation-to-upvote": "Du benötigst %1 Ruf, um upvoten zu können", + "not-enough-reputation-to-downvote": "Du benötigst %1 Ruf, um abzustimmen", + "not-enough-reputation-to-flag": "Du benötigst %1 Ruf, um diesen Beitrag zu melden", + "not-enough-reputation-min-rep-website": "Du benötigst %1 Ruf, um eine Website hinzuzufügen", + "not-enough-reputation-min-rep-aboutme": "Du benötigst %1 Ruf, um eine Über mich hinzuzufügen", + "not-enough-reputation-min-rep-signature": "Du benötigst %1 Reputation, um eine Signatur hinzuzufügen", + "not-enough-reputation-min-rep-profile-picture": "Du benötigst %1 Ruf, um ein Profilbild hinzuzufügen", + "not-enough-reputation-min-rep-cover-picture": "Du benötigst %1 Ruf, um ein Titelbild hinzuzufügen", "post-already-flagged": "Du hast diesen Beitrag bereits gemeldet", "user-already-flagged": "Du hast diesen Benutzer bereits gemeldet", "post-flagged-too-many-times": "Dieser Beitrag wurde bereits von anderen Benutzern gemeldet", "user-flagged-too-many-times": "Dieser Benutzer wurde bereits von anderen Benutzern gemeldet", "cant-flag-privileged": "Sie dürfen die Profile oder Inhalte von privilegierten Benutzern (Moderatoren/Globalmoderatoren/Admins) nicht kennzeichnen.", "self-vote": "Du kannst deine eigenen Beiträge nicht bewerten", - "too-many-upvotes-today": "You can only upvote %1 times a day", - "too-many-upvotes-today-user": "You can only upvote a user %1 times a day", + "too-many-upvotes-today": "Du kannst nur %1 Mal pro Tag upvoten", + "too-many-upvotes-today-user": "Du kannst einen Benutzer nur %1 Mal am Tag positiv bewerten", "too-many-downvotes-today": "Du kannst nur %1 mal am Tag eine schlechte Bewertung abgeben", "too-many-downvotes-today-user": "Du kannst einen Benutzer nur %1 mal am Tag schlecht bewerten", "reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen.", @@ -205,6 +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", "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/flags.json b/public/language/de/flags.json index 2c8874aa8d..12ab0a85d4 100644 --- a/public/language/de/flags.json +++ b/public/language/de/flags.json @@ -38,7 +38,7 @@ "delete-post": "Post löschen", "purge-post": "Post bereiningen", "restore-post": "Post wiederherstellen", - "delete": "Delete Flag", + "delete": "Markierung löschen", "user-view": "Profil ansehen", "user-edit": "Profil bearbeiten", @@ -47,10 +47,10 @@ "add-note": "Notiz hinzufügen", "no-notes": "Keine geteilten Notizen", "delete-note-confirm": "Bist du sicher, dass du diese Notiz löschen möchtest?", - "delete-flag-confirm": "Are you sure you want to delete this flag?", + "delete-flag-confirm": "Möchtest Du diese Markierung wirklich löschen?", "note-added": "Notiz hinzugefügt", "note-deleted": "Notiz gelöscht", - "flag-deleted": "Flag Deleted", + "flag-deleted": "Markierung gelöscht", "history": "Konto & Markierungsverlauf", "no-history": "Kein Meldungsverlauf", @@ -85,5 +85,5 @@ "bulk-resolve": "Meldungen bereiningen", "bulk-success": "%1 Meldungen aktualisiert", "flagged-timeago-readable": "Markiert <span class=\"timeago\" title=\"%1\"></span>(%2)", - "auto-flagged": "[Auto Flagged] Received %1 downvotes." + "auto-flagged": "[Automatisch markiert] %1 Abwertungen erhalten." } \ No newline at end of file diff --git a/public/language/de/global.json b/public/language/de/global.json index f33f212f05..c9f894223a 100644 --- a/public/language/de/global.json +++ b/public/language/de/global.json @@ -23,7 +23,7 @@ "close": "Schließen", "pagination": "Seitennummerierung", "pagination.out_of": "%1 von %2", - "pagination.enter_index": "Go to post index", + "pagination.enter_index": "Zum Beitragsindex gehen", "header.admin": "Admin", "header.categories": "Kategorien", "header.recent": "Aktuell", @@ -56,7 +56,7 @@ "posts": "Beiträge", "x-posts": "%1 Beiträge", "best": "Bestbewertet", - "controversial": "Controversial", + "controversial": "Umstritten", "votes": "Stimmen", "x-votes": "%1 Stimmen", "voters": "Wähler", @@ -71,7 +71,7 @@ "firstpost": "Erster Beitrag", "read_more": "weiterlesen", "more": "Mehr", - "none": "Keiner", + "none": "Nichts", "posted_ago_by_guest": "%1 von einem Gast geschrieben", "posted_ago_by": "%1 von %2 geschrieben", "posted_ago": "%1 geschrieben", diff --git a/public/language/de/ip-blacklist.json b/public/language/de/ip-blacklist.json index f198f75d80..ee5f7572eb 100644 --- a/public/language/de/ip-blacklist.json +++ b/public/language/de/ip-blacklist.json @@ -1,19 +1,19 @@ { "lead": "Konfiguriere hier deine IP-Blacklist", - "description": "Manchmal ist eine User-Sperrung nicht abschreckend genug. In vielen Fällen ist es daher sinnvoll, den Zugriff auf ein Forum für eine bestimmte Reihe von IP-Adressen zu blockieren. In diesen Fällen können Sie problematische IP-Adressen oder komplette CIDR Blöcke zu dieser Blacklist hinzufügen, welche dann daran gehindert werden sich einzuloggen, oder ein neues Konto zu erstellen.", + "description": "Gelegentlich reicht die Sperrung eines Benutzerkontos nicht aus, um abzuschrecken. In anderen Fällen ist die Beschränkung des Zugriffs auf das Forum auf eine bestimmte IP oder eine Reihe von IPs der beste Weg, ein Forum zu schützen. In diesen Szenarien kannst Du dieser Blacklist problematische IP-Adressen oder ganze CIDR-Blöcke hinzufügen, und sie werden daran gehindert, sich bei einem neuen Konto anzumelden oder ein neues Konto zu registrieren.", "active-rules": "Aktive Regeln", "validate": "Blacklist validieren", "apply": "Blacklist anwenden", "hints": "Syntax Hinweise", "hint-1": "Pro Zeile kann eine IP-Adresse angegeben werden. Es können auch IP-Blöcke im CIDR Format (z.B. <code>192.168.100.0/22</code>) hinzugefügt werden.", - "hint-2": "Sie können Kommentare hinzufügen, indem Sie die Zeilen mit dem <code>#</code> Symbol beginnen.", + "hint-2": "Du kannst Kommentare hinzufügen, indem Du die Zeilen mit dem <code>#</code> Symbol beginnst.", "validate.x-valid": "<strong>%1</strong> von <strong>%2</strong> Regel(n) zulässig.", "validate.x-invalid": "Die folgenden <strong>%1</strong> Regeln sind unzulässig:", - "alerts.applied-success": "Blacklist angewandt", + "alerts.applied-success": "Blacklist angewendet", "analytics.blacklist-hourly": "<strong>Figur 1</strong> – Blacklist-Treffer pro Stunde", "analytics.blacklist-daily": " <strong>Figur 2</strong> – Blacklist-Treffer pro Tag", - "ip-banned": "IP-Adresse ist gebannt" + "ip-banned": "IP-Adresse gesperrt" } \ No newline at end of file diff --git a/public/language/de/modules.json b/public/language/de/modules.json index b48cef4edf..b35ecf2a57 100644 --- a/public/language/de/modules.json +++ b/public/language/de/modules.json @@ -1,13 +1,13 @@ { "chat.chatting_with": "Chat mit", - "chat.placeholder": "Type chat message here, drag & drop images, press enter to send", + "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", "chat.no_active": "Du hast keine aktiven Chats.", "chat.user_typing": "%1 tippt gerade ...", "chat.user_has_messaged_you": "%1 hat dir geschrieben.", - "chat.see_all": "All chats", - "chat.mark_all_read": "Mark all read", + "chat.see_all": "Alle Chats", + "chat.mark_all_read": "Alle als gelesen markieren", "chat.no-messages": "Bitte wähle einen Empfänger, um den jeweiligen Nachrichtenverlauf anzuzeigen.", "chat.no-users-in-room": "In diesem Raum befinden sich keine Benutzer.", "chat.recent-chats": "Aktuelle Chats", diff --git a/public/language/de/notifications.json b/public/language/de/notifications.json index dc5244669c..f2114912bd 100644 --- a/public/language/de/notifications.json +++ b/public/language/de/notifications.json @@ -1,8 +1,8 @@ { "title": "Benachrichtigungen", "no_notifs": "Keine neuen Benachrichtigungen", - "see_all": "All notifications", - "mark_all_read": "Mark all read", + "see_all": "Alle Benachrichtigungen", + "mark_all_read": "Alle als gelesen markieren", "back_to_home": "Zurück zu %1", "outgoing_link": "Externer Link", "outgoing_link_message": "Du verlässt nun %1", @@ -55,12 +55,12 @@ "email-confirmed-message": "Vielen Dank für Ihre E-Mail-Validierung. Ihr Konto ist nun vollständig aktiviert.", "email-confirm-error-message": "Es gab ein Problem bei der Validierung Ihrer E-Mail-Adresse. Möglicherweise ist der Code ungültig oder abgelaufen.", "email-confirm-sent": "Bestätigungs-E-Mail gesendet.", - "none": "Keine", + "none": "Nichts", "notification_only": "Nur Benachrichtigungen", "email_only": "Nur Emails", "notification_and_email": "Benachrichtigungen & Emails", "notificationType_upvote": "Wenn jemand deinen beitrag positiv bewertet", - "notificationType_new-topic": "Wenn jemand dem du folgst einen Beitrag erstellt", + "notificationType_new-topic": "Wenn jemand, dem du folgst, einen Beitrag erstellt", "notificationType_new-reply": "Wenn es eine neue Antwort auf ein Thema das du beobachtest gibt", "notificationType_post-edit": "Wenn ein Post bearbeitet wurde, in einem Thema welches du beobachtest", "notificationType_follow": "Wenn dir jemand neues folgt", diff --git a/public/language/de/pages.json b/public/language/de/pages.json index 566a9dbb0f..2dcaed1670 100644 --- a/public/language/de/pages.json +++ b/public/language/de/pages.json @@ -54,7 +54,7 @@ "account/upvoted": "Von %1 positiv bewertete Beiträge", "account/downvoted": "Von %1 negativ bewertete Beiträge", "account/best": "Bestbewertete Beiträge von %1", - "account/controversial": "Controversial posts made by %1", + "account/controversial": "Kontroverse Beiträge von %1", "account/blocks": "Für %1 geblockte Benutzer", "account/uploads": "Uploads von %1", "account/sessions": "Login-Sitzungen", diff --git a/public/language/de/post-queue.json b/public/language/de/post-queue.json index 648e9453b5..3c25e7fefb 100644 --- a/public/language/de/post-queue.json +++ b/public/language/de/post-queue.json @@ -18,14 +18,14 @@ "remove": "Entfernen", "notify": "Benachrichtigen", "notify-user": "Benutzer benachrichtigen", - "confirm-reject": "Do you want to reject this post?", - "bulk-actions": "Bulk Actions", - "accept-all": "Accept All", - "accept-selected": "Accept Selected", - "reject-all": "Reject All", - "reject-all-confirm": "Do you want to reject all posts?", - "reject-selected": "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" + "confirm-reject": "Möchtest Du diesen Beitrag ablehnen?", + "bulk-actions": "Massenaktionen", + "accept-all": "Alle akzeptieren", + "accept-selected": "Ausgewählte akzeptieren", + "reject-all": "Alle ablehnen", + "reject-all-confirm": "Möchtest Du alle Beiträge ablehnen?", + "reject-selected": "Ausgewählte ablehnen", + "reject-selected-confirm": "Möchtest Du %1 ausgewählte Beiträge ablehnen?", + "bulk-accept-success": "%1 Beiträge akzeptiert", + "bulk-reject-success": "%1 Beiträge abgelehnt" } \ No newline at end of file diff --git a/public/language/de/register.json b/public/language/de/register.json index 7b12033805..f38e2031ce 100644 --- a/public/language/de/register.json +++ b/public/language/de/register.json @@ -4,8 +4,8 @@ "help.email": "Deine E-Mail Adresse ist standardmäßig nicht öffentlich sichtbar.", "help.username_restrictions": "Einen einmaligen Benutzernamen. %1-%2 Zeichen. Andere Benutzer können dich mit @<span id='yourUsername'>Benutzername</span> anschreiben.", "help.minimum_password_length": "Dein Passwort muss mindestens %1 Zeichen lang sein.", - "email_address": "E-Mail", - "email_address_placeholder": "E-Mail Adresse hier eingeben", + "email_address": "E-Mail-Adresse", + "email_address_placeholder": "E-Mail Adresse eingeben", "username": "Benutzername", "username_placeholder": "Benutzernamen eingeben", "password": "Passwort", diff --git a/public/language/de/reset_password.json b/public/language/de/reset_password.json index 286454ce54..efbe70f757 100644 --- a/public/language/de/reset_password.json +++ b/public/language/de/reset_password.json @@ -1,16 +1,16 @@ { "reset_password": "Passwort zurücksetzen", - "update_password": "Ändere Passwort", + "update_password": "Password aktualisieren", "password_changed.title": "Passwort geändert", "password_changed.message": "<p>Passwort erfolgreich zurückgesetzt. Bitte <a href=\"/login\">logge dich erneut ein</a>.", - "wrong_reset_code.title": "Der Reset-Code ist falsch.", + "wrong_reset_code.title": "Falscher Reset-Code", "wrong_reset_code.message": "Der empfangene Reset-Code war falsch. Bitte versuche es erneut oder <a href=\"/reset\">fordere einen neuen Code an</a>.", "new_password": "Neues Passwort", - "repeat_password": "Wiederhole das Passwort", + "repeat_password": "Passwort bestätigen", "changing_password": "Passwort ändern", - "enter_email": "Bitte gib Deine <strong>E-Mail Adresse</strong> ein und wir senden Dir eine Anleitung, wie Du Dein Passwort zurücksetzen kannst.", + "enter_email": "Bitte gebe deine <strong>E-Mail-Adresse</strong> ein und wir senden dir eine E-Mail mit Anweisungen zum Zurücksetzen deines Kontos.", "enter_email_address": "E-Mail Adresse eingeben", - "password_reset_sent": "Falls die angegebene Adresse zu einem Benutzerkonto gehört, wurde eine E-Mail zum zurücksetzen des Passworts versendet. Denk daran, dass maximal eine E-Mail pro Minute versendet wird.", + "password_reset_sent": "Wenn die angegebene Adresse einem bestehenden Benutzerkonto entspricht, wurde eine E-Mail zum Zurücksetzen des Passworts gesendet. Bitte beachte, dass nur eine E-Mail pro Minute versendet wird.", "invalid_email": "Ungültige E-Mail / Adresse existiert nicht!", "password_too_short": "Das eingegebene Passwort ist zu kurz, bitte wähle ein anderes Passwort.", "passwords_do_not_match": "Die eingegebenen Passwörter stimmen nicht überein.", diff --git a/public/language/de/success.json b/public/language/de/success.json index 90c7a04ef4..78445d1334 100644 --- a/public/language/de/success.json +++ b/public/language/de/success.json @@ -1,7 +1,7 @@ { - "success": "Fertig", + "success": "Erfolgreich", "topic-post": "Beitrag erfolgreich erstellt.", - "post-queued": "Ihr Beitrag wird zur Genehmigung in die Warteschlange gestellt. Sie erhalten eine Benachrichtigung, wenn dieser akzeptiert oder abgelehnt wird.", + "post-queued": "Dein Beitrag wird zur Genehmigung in die Warteschlange gestellt. Du erhälst eine Benachrichtigung, wenn es akzeptiert oder abgelehnt wird.", "authentication-successful": "Authentifizierung erfolgreich!", "settings-saved": "Einstellungen gespeichert!" } \ No newline at end of file diff --git a/public/language/de/topic.json b/public/language/de/topic.json index a7ae3828f5..3702f62317 100644 --- a/public/language/de/topic.json +++ b/public/language/de/topic.json @@ -113,7 +113,7 @@ "bookmark": "Lesezeichen", "bookmarks": "Lesezeichen", "bookmarks.has_no_bookmarks": "Du hast noch keine Beiträge mit Lesezeichen markiert.", - "copy-permalink": "Copy Permalink", + "copy-permalink": "Permalink kopieren", "loading_more_posts": "Lade mehr Beiträge", "move_topic": "Thema verschieben", "move_topics": "Themen verschieben", @@ -182,7 +182,7 @@ "timeago_earlier": "%1 früher", "first-post": "Erster Beitrag", "last-post": "Letzter Beitrag", - "go-to-my-next-post": "Go to my next post", - "no-more-next-post": "You don't have more posts in this topic", + "go-to-my-next-post": "Zu meinem nächsten Beitrag gehen", + "no-more-next-post": "Du hast keine weiteren Beiträge zu diesem Thema", "post-quick-reply": "Beitrag schnell Beantworten" } \ No newline at end of file diff --git a/public/language/de/unread.json b/public/language/de/unread.json index ccfce6bbb5..1d32c7d727 100644 --- a/public/language/de/unread.json +++ b/public/language/de/unread.json @@ -1,9 +1,9 @@ { "title": "Ungelesen", "no_unread_topics": "Es gibt keine ungelesenen Themen.", - "load_more": "mehr laden", + "load_more": "Mehr laden", "mark_as_read": "Als gelesen markieren", - "selected": "Ausgewählte", + "selected": "Ausgewählt", "all": "Alle", "all_categories": "Alle Kategorien", "topics_marked_as_read.success": "Themen als gelesen markiert!", diff --git a/public/language/de/uploads.json b/public/language/de/uploads.json index 89ece10991..8321cdc3d5 100644 --- a/public/language/de/uploads.json +++ b/public/language/de/uploads.json @@ -1,6 +1,6 @@ { - "uploading-file": "Lade Datei hoch...", - "select-file-to-upload": "Wähle eine Datei zum Hochladen aus!", + "uploading-file": "Hochladen der Datei...", + "select-file-to-upload": "Eine Datei zum hochladen auswählen!", "upload-success": "Datei erfolgreich hochgeladen!", "maximum-file-size": "Maximal %1 kb", "no-uploads-found": "Keine Uploads gefunden", diff --git a/public/language/de/user.json b/public/language/de/user.json index 32c7c2271b..8a11ed3818 100644 --- a/public/language/de/user.json +++ b/public/language/de/user.json @@ -1,7 +1,7 @@ { "banned": "Gesperrt", - "muted": "Muted", - "offline": "offline", + "muted": "Stummgeschaltet", + "offline": "Offline", "deleted": "Gelöscht", "username": "Benutzername", "joindate": "Registriert am", @@ -13,8 +13,8 @@ "ban_account": "Konto sperren", "ban_account_confirm": "Bist du sicher, dass du diesen Benutzer sperren möchtest?", "unban_account": "Konto entsperren", - "mute_account": "Mute Account", - "unmute_account": "Unmute Account", + "mute_account": "Konto stummschalten", + "unmute_account": "Konto entstummen", "delete_account": "Konto löschen", "delete_account_as_admin": "<strong>Konto</strong> löschen", "delete_content": "Konto-<strong>Inhalt</strong> löschen", @@ -89,7 +89,7 @@ "upload_cropped_picture": "Zuschneiden und Hochladen", "avatar-background-colour": "Hintergrundfarbe des Avatars", "settings": "Einstellungen", - "show_email": "Zeige meine E-Mail Adresse an.", + "show_email": "Meine E-Mail anzeigen", "show_fullname": "Zeige meinen kompletten Namen an", "restrict_chats": "Erlaube Chatnachrichten nur von Benutzern, denen ich folge.", "digest_label": "Zusammenfassung abonnieren", @@ -108,7 +108,7 @@ "has_no_ignored_topics": "Dieser Benutzer ignoriert bisher keine Themen.", "has_no_upvoted_posts": "Dieser Benutzer hat bisher keine Beiträge positiv bewertet.", "has_no_downvoted_posts": "Dieser Benutzer hat bisher keine Beiträge negativ bewertet.", - "has_no_controversial_posts": "This user does not have any downvoted posts yet.", + "has_no_controversial_posts": "Dieser Benutzer hat noch keine herabgestuften Beiträge.", "has_no_blocks": "Du hast keine Benutzer geblockt", "email_hidden": "E-Mail Adresse versteckt", "hidden": "versteckt", @@ -139,9 +139,9 @@ "select-skin": "Einen Skin auswählen", "select-homepage": "Startseite", "homepage": "Startseite", - "homepage_description": "Wähle eine Seite die als Forumstartseite benutzt werden soll aus oder 'Keine' um die Standardstartseite zu verwenden.", + "homepage_description": "Wähle eine Seite, die als Forumstartseite verwendet werden soll, aus oder 'Keine' um die Standardstartseite zu verwenden.", "custom_route": "Eigener Startseitenpfad", - "custom_route_help": "Geben Sie hier einen Routennamen ohne vorangestellten Schrägstrich ein (z. B. „aktuell“ oder „Kategorie/2/allgemeine-Diskussion“)", + "custom_route_help": "Gebe hier einen Routennamen ohne vorangestellten Schrägstrich ein (z. B. 'aktuell' oder 'Kategorie/2/allgemeine-Diskussion')", "sso.title": "Single Sign-on Dienste", "sso.associated": "Verbunden mit", "sso.not-associated": "Verbinde dich mit", @@ -157,11 +157,11 @@ "info.banned-permanently": "Permanent gesperrt", "info.banned-reason-label": "Grund", "info.banned-no-reason": "Kein Grund angegeben.", - "info.mute-history": "Recent Mute History", - "info.no-mute-history": "This user has never been muted", - "info.muted-until": "Muted until %1", - "info.muted-expiry": "Expiry", - "info.muted-no-reason": "No reason given.", + "info.mute-history": "Kürzlichste Stummschalthistory", + "info.no-mute-history": "Dieser Benutzer wurde noch nie stummgeschaltet", + "info.muted-until": "Bis %1 stummgeschaltet", + "info.muted-expiry": "Ablauf", + "info.muted-no-reason": "Kein Grund angegeben", "info.username-history": "Benutzernamen Verlauf", "info.email-history": "E-Mail Verlauf", "info.moderation-note": "Moderationsnotiz", @@ -192,7 +192,7 @@ "consent.export_posts": "Beiträge exportieren (.csv)", "consent.export-posts-success": "Beiträge werden exportiert, du bekommst eine Benachrichtigung sobald der Vorgang abgeschlossen ist.", "emailUpdate.intro": "Bitte gib unten deine E-Mail-Adresse ein. Dieses Forum verwendet deine E-Mail-Adresse für die geplante Zusammenfassung und diverse Benachrichtigungen sowie für die Konto-Wiederherstellung im Falle eines verlorenen Passworts.", - "emailUpdate.optional": "<strong>Dieses Feld ist optional</strong>. Du bist nicht verpflichtet, deine E-Mail-Adresse anzugeben, aber ohne eine validierte E-Mail-Adresse kannst du dein Konto nicht wiederherstellen oder dich mit deiner E-Mail-Adresse anmelden.", + "emailUpdate.optional": "<strong>Dieses Feld ist optional</strong>. 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": "<strong>Dieses Feld ist erforderlich</strong>.", "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." } \ No newline at end of file diff --git a/public/language/de/users.json b/public/language/de/users.json index 3a5fb66bbc..974094b8fc 100644 --- a/public/language/de/users.json +++ b/public/language/de/users.json @@ -5,7 +5,7 @@ "most_flags": "Meiste Meldungen", "search": "Suchen", "enter_username": "Benutzer durchsuchen", - "search-user-for-chat": "Search a user to start chat", + "search-user-for-chat": "Einen Benutzer suchen, um den Chat zu starten", "load_more": "Mehr laden", "users-found-search-took": "%1 Benutzer gefunden! Die Suche dauerte %2 s.", "filter-by": "Filtern nach", diff --git a/public/language/el/admin/menu.json b/public/language/el/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/el/admin/menu.json +++ b/public/language/el/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/el/error.json b/public/language/el/error.json index 1ae456e033..295e09f069 100644 --- a/public/language/el/error.json +++ b/public/language/el/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/en-GB/admin/menu.json b/public/language/en-GB/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/en-GB/admin/menu.json +++ b/public/language/en-GB/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/en-GB/error.json b/public/language/en-GB/error.json index 67a40dcb20..56d7f71f3b 100644 --- a/public/language/en-GB/error.json +++ b/public/language/en-GB/error.json @@ -241,6 +241,8 @@ "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", diff --git a/public/language/en-US/admin/menu.json b/public/language/en-US/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/en-US/admin/menu.json +++ b/public/language/en-US/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/en-US/error.json b/public/language/en-US/error.json index 4769c3837f..5c9c3c1078 100644 --- a/public/language/en-US/error.json +++ b/public/language/en-US/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/en-x-pirate/admin/menu.json b/public/language/en-x-pirate/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/en-x-pirate/admin/menu.json +++ b/public/language/en-x-pirate/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/en-x-pirate/error.json b/public/language/en-x-pirate/error.json index 4769c3837f..5c9c3c1078 100644 --- a/public/language/en-x-pirate/error.json +++ b/public/language/en-x-pirate/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/es/admin/menu.json b/public/language/es/admin/menu.json index d9e2ce06b3..d59ea10b71 100644 --- a/public/language/es/admin/menu.json +++ b/public/language/es/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Cerrar sesión", "view-forum": "Ver foro", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Sin resultados...", "search.search-forum": "Buscar en el foro <strong></strong>", "search.keep-typing": "Escribe más para ver resultados...", diff --git a/public/language/es/error.json b/public/language/es/error.json index 99836bfc1e..c6e8e97a1c 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -205,6 +205,8 @@ "no-connection": "Parece haber un problema con tu conexión a internet", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/et/admin/menu.json b/public/language/et/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/et/admin/menu.json +++ b/public/language/et/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/et/error.json b/public/language/et/error.json index 893e162999..99402c0356 100644 --- a/public/language/et/error.json +++ b/public/language/et/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/fa-IR/admin/menu.json b/public/language/fa-IR/admin/menu.json index 7fa68c6830..135e14ace0 100644 --- a/public/language/fa-IR/admin/menu.json +++ b/public/language/fa-IR/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "هیچ نتیجه ای وجود ندارد", "search.search-forum": "جستجو در انجمن برای ", "search.keep-typing": "لطفا برای مشاهده نتیجه بیشتر بنویسید", diff --git a/public/language/fa-IR/error.json b/public/language/fa-IR/error.json index b9ccd4b8f3..61b0066ce5 100644 --- a/public/language/fa-IR/error.json +++ b/public/language/fa-IR/error.json @@ -205,6 +205,8 @@ "no-connection": "به نظر می رسد اینترنت شما مشکل دارد", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/fi/admin/menu.json b/public/language/fi/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/fi/admin/menu.json +++ b/public/language/fi/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/fi/error.json b/public/language/fi/error.json index 84b92a2784..a722959895 100644 --- a/public/language/fi/error.json +++ b/public/language/fi/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/fr/admin/menu.json b/public/language/fr/admin/menu.json index 196f86ce5c..e5f477dc00 100644 --- a/public/language/fr/admin/menu.json +++ b/public/language/fr/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Déconnexion ", "view-forum": "Voir le forum", - "search.placeholder": "Appuyez sur "/" pour rechercher dans les paramètres", + "search.placeholder": "Search settings", "search.no-results": "Aucun résultat…", "search.search-forum": "Rechercher <strong></strong> dans le forum", "search.keep-typing": "Continuez de taper pour afficher les résultats…", diff --git a/public/language/fr/error.json b/public/language/fr/error.json index 1f67492452..6c8ad20a24 100644 --- a/public/language/fr/error.json +++ b/public/language/fr/error.json @@ -205,6 +205,8 @@ "no-connection": "Il semble y avoir un problème avec votre connexion Internet", "socket-reconnect-failed": "Serveur inaccessible pour le moment. Cliquez ici pour réessayer ou réessayez plus tard", "plugin-not-whitelisted": "Impossible d'installer le plug-in – seuls les plugins mis en liste blanche dans le gestionnaire de packages NodeBB peuvent être installés via l'ACP", + "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", "topic-event-unrecognized": "Événement du sujet '%1' non reconnu", "cant-set-child-as-parent": "Cette catégorie ne peut être une catégorie principale", "cant-set-self-as-parent": "Ne peut être définie comme catégorie principale", diff --git a/public/language/gl/admin/menu.json b/public/language/gl/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/gl/admin/menu.json +++ b/public/language/gl/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/gl/error.json b/public/language/gl/error.json index 6fea2a5e2a..6f94164ab5 100644 --- a/public/language/gl/error.json +++ b/public/language/gl/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/he/admin/advanced/cache.json b/public/language/he/admin/advanced/cache.json index 05826722d5..04ceceaa68 100644 --- a/public/language/he/admin/advanced/cache.json +++ b/public/language/he/admin/advanced/cache.json @@ -1,6 +1,6 @@ { "post-cache": "מטמון פוסטים", - "percent-full": "%1% מלא", + "percent-full": "%1% Full", "post-cache-size": "גודל מטמון פוסטים", "items-in-cache": "פריטים במטמון" } \ No newline at end of file diff --git a/public/language/he/admin/appearance/customise.json b/public/language/he/admin/appearance/customise.json index c28b7a6dcd..bd14e03e43 100644 --- a/public/language/he/admin/appearance/customise.json +++ b/public/language/he/admin/appearance/customise.json @@ -1,16 +1,16 @@ { "custom-css": "CSS/LESS מותאם אישית", - "custom-css.description": "הזן כאן CSS / LESS משלך, שיוחלו לאחר כל הסגנונות האחרים.", - "custom-css.enable": "Enable Custom CSS/LESS", + "custom-css.description": "הכניסו כאן CSS / LESS משלכם, שיבוצע לאחר טעינת כל הסגנונות האחרים.", + "custom-css.enable": "הפעלת CSS/LESS מותאם אישית", "custom-js": "Javascript מותאם אישית", - "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", - "custom-js.enable": "Enable Custom Javascript", + "custom-js.description": "הכניסו כאן JavaScript משלכם, שיבוצע לאחר טעינת הדף לחלוטין.", + "custom-js.enable": "הפעלת Javascript מותאם אישית", - "custom-header": "Custom Header", - "custom-header.description": "הזן כאן HTML משלך (לדוגמא תגיות מטא), שיתווספו לתגית ה-<code>head</code> של הפורום. ניתן להכניס סקריפטים, אך מומלץ להכניס אותם בכרטיסיית <a href=\"#custom-js\" data-toggle=\"tab\">Javascript מותאם אישית</a>.", - "custom-header.enable": "אפשר HTML מותאם אישית", + "custom-header": "Header מותאם אישית", + "custom-header.description": "הכניסו כאן HTML משלכם (לדוגמא תגיות Meta), שיתווספו לתגית ה-<code>head</code> של הפורום. ניתן להכניס סקריפטים, אך מומלץ להכניס אותם בכרטיסיית <a href=\"#custom-js\" data-toggle=\"tab\">Javascript מותאם אישית</a>.", + "custom-header.enable": "הפעלת HTML מותאם אישית", - "custom-css.livereload": "אפשר טעינה מחדש אוטומטית.", - "custom-css.livereload.description": "אפשר זאת כדי שכל החיבורים מכל מכשיר יתרעננו כאשר אתה שומר." + "custom-css.livereload": "הפעלת טעינה מחדש אוטומטית.", + "custom-css.livereload.description": "הפעלה זו נועדה כדי לרענן את כל החיבורים מכל מכשיר, כאשר תשמרו את הדף המותאם אישית." } \ No newline at end of file diff --git a/public/language/he/admin/dashboard.json b/public/language/he/admin/dashboard.json index ede2c86a3f..01837acb75 100644 --- a/public/language/he/admin/dashboard.json +++ b/public/language/he/admin/dashboard.json @@ -83,7 +83,7 @@ "back-to-dashboard": "חזרה ללוח מחוונים", "details.no-users": "אין משתמש שהצטרף במסגרת הזמן שנבחרה", "details.no-topics": "לא פורסמו נושאים במסגרת הזמן שנבחרה", - "details.no-searches": "No searches have been made yet", + "details.no-searches": "עדיין לא בוצעו חיפושים", "details.no-logins": "לא נרשמו כניסות במסגרת הזמן שנבחרה", "details.logins-static": "NodeBB שומר נתוני הפעלה עבור %1 ימים בלבד, ולכן טבלה זו תציג רק את הכניסות הפעילות האחרונות", "details.logins-login-time": "זמן כניסה" diff --git a/public/language/he/admin/manage/admins-mods.json b/public/language/he/admin/manage/admins-mods.json index 7f0668b8d8..80378690e1 100644 --- a/public/language/he/admin/manage/admins-mods.json +++ b/public/language/he/admin/manage/admins-mods.json @@ -3,8 +3,8 @@ "global-moderators": "מודרטורים גולבליים", "moderators": "Moderators", "no-global-moderators": "אין מודרטורים גולבליים", - "no-sub-categories": "No subcategories", - "subcategories": "%1 subcategories", + "no-sub-categories": "אין תתי קטגוריות", + "subcategories": "%1 תתי-קטגוריות", "no-moderators": "אין מודרטורים", "add-administrator": "הוסף מנהל", "add-global-moderator": "הוסף מודרטור גלובלי", diff --git a/public/language/he/admin/manage/categories.json b/public/language/he/admin/manage/categories.json index 1afd0a7e48..054b555acb 100644 --- a/public/language/he/admin/manage/categories.json +++ b/public/language/he/admin/manage/categories.json @@ -7,7 +7,7 @@ "bg-color": "צבע רקע", "text-color": "צבע טקסט", "bg-image-size": "גודל תמונת רקע", - "custom-class": "מחלקה מותאמת אישית", + "custom-class": "Class מותאם אישית", "num-recent-replies": "מספר תגובות אחרונות להצגה", "ext-link": "הפנה לקישור חיצוני", "subcategories-per-page": "קטגוריות משנה לדף", @@ -15,31 +15,31 @@ "post-queue": "תור פוסטים", "tag-whitelist": "רשימה לבנה של תגיות", "upload-image": "העלה תמונה", - "delete-image": "הסר", + "delete-image": "הסרה", "category-image": "תמונת קטגוריה", "parent-category": "קטגוריית אב", - "optional-parent-category": "(אופציונלי) קטגוריית הורים", + "optional-parent-category": "קטגוריית הורים (אופציונלי)", "top-level": "רמה עליונה", "parent-category-none": "(ללא)", "copy-parent": "העתק אב", "copy-settings": "העתק הגדרות מ:", - "optional-clone-settings": "(אופציונלי) שכפול הגדרות מקטגוריה", + "optional-clone-settings": "שכפול הגדרות מקטגוריה (אופציונלי)", "clone-children": "שכפול קטגוריות והגדרות של צאצאים", - "purge": "מחק קטגוריה", + "purge": "מחיקת קטגוריה", - "enable": "הפעל", - "disable": "השבת", - "edit": "ערוך", - "analytics": "נתח", - "view-category": "הצג קטגוריה", - "set-order": "קבע סדר", + "enable": "הפעלה", + "disable": "השבתה", + "edit": "עריכה", + "analytics": "ניתוח", + "view-category": "הצגת קטגוריה", + "set-order": "קביעת סדר", "set-order-help": "הגדרת סדר הקטגוריה תעביר קטגוריה זו לסדר זה ותעדכן את סדר הקטגוריות האחרות לפי הצורך. מינימום קביעת סדר הוא 1 מה שמציב את הקטגוריה בראש.", - "select-category": "בחר קטגוריה", - "set-parent-category": "הגדר קטגוריית אב", + "select-category": "בחרו קטגוריה", + "set-parent-category": "הגדרת קטגוריית אב", "privileges.description": "באפשרותך לקבוע את התצורה של הרשאות בקרת הגישה עבור חלקים מהפורום בסעיף זה. ניתן להעניק הרשאות על בסיס משתמש או על בסיס קבוצה. בחר את תחום ההשפעה מהרשימה הנפתחת שלהלן.", - "privileges.category-selector": "הגדר הרשאות עבור", + "privileges.category-selector": "הגדרת הרשאות עבור", "privileges.warning": "<strong>הערה</strong>: הגדרות ההרשאות נכנסות לתוקף באופן מיידי. אין צורך לשמור את הקטגוריה לאחר התאמת הגדרות אלה.", "privileges.section-viewing": "הרשאות צפייה", "privileges.section-posting": "הרשאות פוסטים", @@ -52,17 +52,17 @@ "privileges.group-private": "קבוצה זו פרטית", "privileges.inheritance-exception": "לקבוצה זו אין הרשאות של קבוצת משתמשים רשומים", "privileges.banned-user-inheritance": "למשתמשים מורחקים יש הרשאות של קבוצת משתמשים מורחקים", - "privileges.search-group": "הוסף קבוצה", - "privileges.copy-to-children": "העתק לצאצאים", - "privileges.copy-from-category": "העתק מקטגוריה", - "privileges.copy-privileges-to-all-categories": "העתק לכל הקטגוריות (זהירות!)", - "privileges.copy-group-privileges-to-children": "העתק הרשאות קבוצה זו לצאצאי קטגוריה זו.", - "privileges.copy-group-privileges-to-all-categories": "העתק הרשאות קבוצה זו לכל הקטגוריות (זהירות!).", - "privileges.copy-group-privileges-from": "העתק הרשאות קבוצה זו מקטגוריה אחרת.", - "privileges.inherit": "אם קבוצת <code>משתמשים רשומים</code> מקבלים הרשאה ספציפית, יסומן <strong>הרשאה אוטומטית</strong> לכל הקבוצות האחרות. הרשאה אוטומטית זו יוגדר גם אם לא תסמן אותה במפורש. מכיוון שכל המשתמשים הם חלק מקבוצת המשתמשים <code>משתמשים רשומים</code> , ולכן, אין צורך להעניק במפורש הרשאות עבור קבוצות נוספות.", - "privileges.copy-success": "הרשאות הועתקו!", + "privileges.search-group": "הוספת קבוצה", + "privileges.copy-to-children": "העתקה לצאצאים", + "privileges.copy-from-category": "העתקה מקטגוריה", + "privileges.copy-privileges-to-all-categories": "העתקה לכל הקטגוריות (זהירות!)", + "privileges.copy-group-privileges-to-children": "העתקת הרשאות קבוצה זו לצאצאי קטגוריה זו.", + "privileges.copy-group-privileges-to-all-categories": "העתקת הרשאות קבוצה זו לכל הקטגוריות (זהירות!).", + "privileges.copy-group-privileges-from": "העתקת הרשאות קבוצה זו מקטגוריה אחרת.", + "privileges.inherit": "אם קבוצת <code>משתמשים רשומים</code> מקבלים הרשאה כל-שהיא, יסומן <strong>הרשאה אוטומטית</strong> לכל הקבוצות האחרות. הרשאה אוטומטית זו תוגדר גם אם לא תסמנו אותה במפורש. מכיוון שכל המשתמשים הם חלק מקבוצת המשתמשים - <code>משתמשים רשומים</code>. ולכן, אין צורך להעניק במפורש הרשאות עבור קבוצות נוספות.", + "privileges.copy-success": "ההרשאות הועתקו!", - "analytics.back": "חזור לרשימת קטגוריות", + "analytics.back": "חזרה לרשימת הקטגוריות", "analytics.title": "ניתוח קטגוריית \"%1\"", "analytics.pageviews-hourly": "<strong>תרשים 1</strong> – תצוגות עמוד לפי שעה בקטגוריה זו</small>", "analytics.pageviews-daily": "<strong>תרשים 2</strong> – תצוגות עמוד לפי יום בקטגוריה זו</small>", @@ -72,21 +72,21 @@ "alert.created": "נוצר", "alert.create-success": "קטגוריה נוצרה בהצלחה!", "alert.none-active": "אין לך קטגוריות פעילות.", - "alert.create": "צור קטגוריה", - "alert.confirm-purge": "<p class=\"lead\">האם אתה בטוח שאתה רוצה למחוק את קטגוריית \"%1\"?</p><h5><strong class=\"text-danger\">אזהרה!</strong> כל הנושאים והפוסטים בקטגוריה זו ימחקו!</h5> <p class=\"help-block\">מחיקת קטגוריה יסיר את כל הנושאים והפוסטים וימחק את הקטגוריה ממסד הנתונים. אם ברצונך להסיר את הקטגוריה <em>באופן זמני</em>, בחר ב\"השבתת\" הקטגוריה.</p>", + "alert.create": "יצירת קטגוריה", + "alert.confirm-purge": "<p class=\"lead\">האם אתם בטוחים שאתם רוצים למחוק את קטגוריית \"%1\"?</p><h5><strong class=\"text-danger\">אזהרה!</strong> כל הנושאים והפוסטים בקטגוריה זו ימחקו!</h5> <p class=\"help-block\">מחיקת קטגוריה תסיר את כל הנושאים והפוסטים ותמחק את הקטגוריה ממסד הנתונים. אם ברצונכם להסיר את הקטגוריה <em>באופן זמני</em>, בחרו ב\"השבתת\" הקטגוריה.</p>", "alert.purge-success": "הקטגוריה נמחקה!", - "alert.copy-success": "הגדרות הועתקו!", - "alert.set-parent-category": "הגדר קטגוריית אב", - "alert.updated": "קטגוריות מעודכנות", + "alert.copy-success": "ההגדרות הועתקו!", + "alert.set-parent-category": "הגדרת קטגוריית אב", + "alert.updated": "הקטגוריות מעודכנות", "alert.updated-success": "מזהה ID של קטגוריה %1 עודכן בהצלחה.", - "alert.upload-image": "העלה תמונת קטגוריה", - "alert.find-user": "מצא משתמש", - "alert.user-search": "חפש משתמש כאן...", - "alert.find-group": "מצא קבוצה", - "alert.group-search": "חפש קבוצה כאן...", - "alert.not-enough-whitelisted-tags": "מספר התגים שהכנסת ברשימה הלבנה נמוך ממה שרשמת בתגים מינימליים, עליך ליצור יותר תגים ברשימה הלבנה!", - "collapse-all": "כווץ הכל", - "expand-all": "הרחב הכל", - "disable-on-create": "השבת בעת היצירה", + "alert.upload-image": "העלאת תמונת קטגוריה", + "alert.find-user": "מציאת משתמש", + "alert.user-search": "חפשו משתמש כאן...", + "alert.find-group": "מציאת קבוצה", + "alert.group-search": "חפשו קבוצה כאן...", + "alert.not-enough-whitelisted-tags": "מספר התגים שהכנסתם ברשימה הלבנה נמוך ממה שרשמתם בתגים המינימליים, עליכם להכניס יותר תגים ברשימה הלבנה!", + "collapse-all": "כיווץ הכל", + "expand-all": "הרחבת הכל", + "disable-on-create": "השביתו בעת היצירה", "no-matches": "אין התאמה" } \ No newline at end of file diff --git a/public/language/he/admin/manage/users.json b/public/language/he/admin/manage/users.json index 3425e13cf6..6952a385e1 100644 --- a/public/language/he/admin/manage/users.json +++ b/public/language/he/admin/manage/users.json @@ -91,7 +91,7 @@ "alerts.validate-email-success": "כתובות אימייל אומתו", "alerts.validate-force-password-reset-success": "סיסמאות משתמשים אופסו והחיבורים שלהם נותקו.", "alerts.password-reset-confirm": "האם אתה רוצה לשלוח אימייל לאיפוס סיסמה למשתמש(ים) אלו?", - "alerts.password-reset-email-sent": "Password reset email sent.", + "alerts.password-reset-email-sent": "דוא\"ל איפוס סיסמה נשלח", "alerts.confirm-delete": "<strong>אזהרה!</strong><p>האם אתה בטוח שברצונך למחוק <strong>משתמש(ים)</strong>?</p><p>פעולה זו אינה הפיכה! רק חשבון המשתמש יימחק, הפוסטים והנושאים שלהם יישארו.</p>", "alerts.delete-success": "משתמש(ים) נמחק!", "alerts.confirm-delete-content": "<strong>אזהרה!</strong><p>האם אתה בטוח שברצונך למחוק את <strong>תוכן</strong>משתמש(ים) אלו?</p><p>פעולה זו אינה הפיכה! חשבונות המשתמשים יישארו, אך הפוסטים והנושאים שלהם יימחקו.</p>", diff --git a/public/language/he/admin/menu.json b/public/language/he/admin/menu.json index 95890e7d15..30888f99b2 100644 --- a/public/language/he/admin/menu.json +++ b/public/language/he/admin/menu.json @@ -76,7 +76,7 @@ "logout": "התנתק", "view-forum": "כניסה לפורום", - "search.placeholder": "הקלד "/" בכדי לחפש הגדרה", + "search.placeholder": "Search settings", "search.no-results": "אין תוצאות...", "search.search-forum": "חפש בפורום <strong></strong>", "search.keep-typing": "המשך להקליד על מנת למצוא תוצאות...", diff --git a/public/language/he/admin/settings/navigation.json b/public/language/he/admin/settings/navigation.json index fd4d8d9509..9d7e256e82 100644 --- a/public/language/he/admin/settings/navigation.json +++ b/public/language/he/admin/settings/navigation.json @@ -1,22 +1,22 @@ { - "icon": "אייקון:", + "icon": "סמליל:", "change-icon": "שנה", "route": "נתיב:", "tooltip": "טולטיפ:", "text": "טקסט:", - "text-class": "מחלקת טקסט: <small>אופציונאלי</small>", - "class": "מחלקה: <small>אופציונאלי</small>", - "id": "ID: <small>אופציונאלי</small>", + "text-class": "Class לטקסט: <small>אופציונאלי</small>", + "class": "Class: <small>אופציונאלי</small>", + "id": "id: <small>אופציונאלי</small>", "properties": "הרשאות:", "groups": "קבוצות:", - "open-new-window": "פתח בחלון חדש", - "dropdown": "Dropdown", - "dropdown-placeholder": "Place your dropdown menu items below, ie: <br/><li><a href="https://myforum.com">Link 1</a></li>", + "open-new-window": "ייפתח בכרטיסייה חדשה", + "dropdown": "תפריט נפתח", + "dropdown-placeholder": "מקמו את פריטי התפריט הנפתח , באופן הבא: <br/><li><a href="https://myforum.com">Link 1</a></li>", - "btn.delete": "מחק", - "btn.disable": "השבת", - "btn.enable": "הפעל", + "btn.delete": "מחיקה", + "btn.disable": "השבתה", + "btn.enable": "הפעלה", "available-menu-items": "פריטי תפריט זמינים", "custom-route": "נתיב מותאם אישית", diff --git a/public/language/he/admin/settings/uploads.json b/public/language/he/admin/settings/uploads.json index c2a5e996a8..e850a57c65 100644 --- a/public/language/he/admin/settings/uploads.json +++ b/public/language/he/admin/settings/uploads.json @@ -1,10 +1,10 @@ { "posts": "פוסטים", - "orphans": "Orphaned Files", + "orphans": "קבצים יתומים", "private": "הפוך קבצים שהועלו לפרטיים", "strip-exif-data": "הפשט נתוני EXIF", "preserve-orphaned-uploads": "שמור את הקבצים שהועלו בדיסק גם לאחר מחיקת הפוסט", - "orphanExpiryDays": "Days to keep orphaned files", + "orphanExpiryDays": "מספר ימים לשמירת קבצים יתומים", "orphanExpiryDays-help": "After this many days, orphaned uploads will be deleted from the file system.<br />Set 0 or leave blank to disable.", "private-extensions": "סיומות קובצים להפוך לפרטיים", "private-uploads-extensions-help": "הכנס כאן רשימה של פורמטי הקבצים, מופרדים בפסיק, כדי להפוך אותם לפרטיים (לדוגמא <code>pdf,xls,doc</code>). שורה ריקה פירושו שכל הקבצים פרטיים.", diff --git a/public/language/he/error.json b/public/language/he/error.json index edacfdd448..b161d73ed7 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -1,12 +1,12 @@ { "invalid-data": "נתונים שגויים", "invalid-json": "אובייקט JSON לא תקין", - "wrong-parameter-type": "A value of type %3 was expected for property `%1`, but %2 was received instead", + "wrong-parameter-type": "ערך מסוג %3 היה צפוי למאפיין `%1`, אבל %2 התקבל במקום זאת", "required-parameters-missing": "פרמטרים נדרשים היו חסרים בקריאת API זו: %1", - "not-logged-in": "נראה שאינך מחובר למערכת.", - "account-locked": "חשבונך נחסם באופן זמני", - "search-requires-login": "פעולת החיפוש דורשת חשבון - בבקשה התחבר או הרשם.", - "goback": "לחץ back לחזרה לעמוד הקודם", + "not-logged-in": "נראה שאינכם מחוברים למערכת.", + "account-locked": "חשבונכם נחסם באופן זמני", + "search-requires-login": "התחברו או הירשמו בכדי לבצע חיפוש.", + "goback": "לחצו back לחזור לעמוד הקודם", "invalid-cid": "מזהה קטגוריה לא תקין", "invalid-tid": "מזהה נושא לא תקין", "invalid-pid": "מזהה פוסט לא תקין", @@ -22,142 +22,142 @@ "invalid-user-data": "מידע משתמש לא תקין", "invalid-password": "סיסמא לא תקינה", "invalid-login-credentials": "פרטי ההתחברות שגויים", - "invalid-username-or-password": "אנא הגדר שם משתמש וסיסמה", + "invalid-username-or-password": "אנא הגדירו שם משתמש וסיסמה", "invalid-search-term": "מילת חיפוש לא תקינה", "invalid-url": "שגיאה בכתובת URL", "invalid-event": "אירוע לא תקין: %1", "local-login-disabled": "מערכת הכניסה המקומית הושבתה עבור חשבונות שאינם מורשים.", - "csrf-invalid": "אין באפשרותנו לחבר אותך למערכת, מכיוון שעבר זמן רב מידי. אנא נסה שנית.", + "csrf-invalid": "אין באפשרותנו לחבר אתכם למערכת, מכיוון שעבר זמן רב מידי. אנא נסו שנית.", "invalid-path": "נתיב שגוי", "folder-exists": "התיקיה קיימת", "invalid-pagination-value": "ערך דף לא חוקי, חייב להיות לפחות %1 ולא מעל %2", "username-taken": "שם משתמש תפוס", "email-taken": "כתובת דוא\"ל תפוסה", "email-nochange": "כתובת דוא\"ל שהוזן זהה לדוא\"ל שנמצא כבר", - "email-invited": "כבר נשלחה הזמנה לדוא\"ל זה", - "email-not-confirmed": "פרסום בקטגוריות או בנושאים מסוימים מופעל רק לאחר אישור הדוא\"ל שלך, אנא לחץ כאן כדי לשלוח אימות לדוא\"ל שלך.", - "email-not-confirmed-chat": "אין באפשרותך לשוחח עד שהדוא\"ל שלך יאושר, אנא לחץ כאן כדי לאשר את הדוא\"ל שלך.", - "email-not-confirmed-email-sent": "הדוא\"ל שלך עדין לא אושר. אנא בדוק בתיבת הדואר בנוגע לאישור הדוא\"ל שנשלח לך על ידינו. לא תוכל לכתוב פוסטים ולהשתמש בצ'אט לפני אימות הדוא\"ל שלך.", - "no-email-to-confirm": "בחשבונך לא הוגדר דוא\"ל. כתובת דוא\"ל נחוץ לשחזור חשבון. אנא לחץ כאן כדי להכניס דוא\"ל.", + "email-invited": "נשלחה כבר הזמנה לדוא\"ל זה", + "email-not-confirmed": "פרסום בקטגוריות או בנושאים מסוימים מופעל רק לאחר אישור הדוא\"ל שלכם, אנא לחצו כאן כדי לשלוח אימות לדוא\"ל שלכם.", + "email-not-confirmed-chat": "אין באפשרותכם לשוחח בצ'אט עד שהדוא\"ל שלכם יאושר, אנא לחצו כאן כדי לאשר את הדוא\"ל שלכם.", + "email-not-confirmed-email-sent": "הדוא\"ל שלכם עדיין לא אושר. אנא בדקו בתיבת הדואר בנוגע לאישור הדוא\"ל שנשלח לך על ידינו. לא תוכלו לכתוב פוסטים ולהשתמש בצ'אט לפני אימות הדוא\"ל שלכם.", + "no-email-to-confirm": "בחשבונך לא הוגדר דוא\"ל. כתובת דוא\"ל נחוץ לשחזור חשבון. אנא לחצו כאן כדי להכניס דוא\"ל.", "user-doesnt-have-email": "למשתמש \"%1\" לא הוגדר כתובת דוא\"ל.", - "email-confirm-failed": "לא הצלחנו לאשר את הדוא\"ל שלך, תנסה שוב אחר כך", - "confirm-email-already-sent": "דוא\"ל האישור כבר נשלח, אנא המתן %1 דקות כדי לשלוח דוא\"ל נוסף.", - "sendmail-not-found": "תוכנת sendmail לא נמצאה, נא בדוק שהיא מותקת וניתנת להרצה על ידי המשתמש שמריץ את NodeBB.", + "email-confirm-failed": "לא הצלחנו לאשר את הדוא\"ל שלך, נסו שוב מאוחר יותר.", + "confirm-email-already-sent": "דוא\"ל האישור כבר נשלח, אנא המתינו %1 דקות כדי לשלוח דוא\"ל נוסף.", + "sendmail-not-found": "תוכנת sendmail לא נמצאה, בדקו שהיא מותקת וניתנת להרצה על ידי המשתמש שמריץ את NodeBB.", "digest-not-enabled": "משתמש זה ביטל את התקצירים, או שברירת המחדל של המערכת היא לכבות תקצירים.", "username-too-short": "שם משתמש קצר מדי", "username-too-long": "שם משתמש ארוך מדי", "password-too-long": "הסיסמה ארוכה מדי", "reset-rate-limited": "יותר מידי בקשות לאימות סיסמא (הקצב מוגבל)", - "reset-same-password": "אנא השתמש בסיסמא שונה מהסיסמא הנוכחית שלך.", + "reset-same-password": "אנא השתמשו בסיסמא שונה מהסיסמא הנוכחית שלכם.", "user-banned": "המשתמש מורחק", "user-banned-reason": "מצטערים, חשבון זה הורחק (סיבה: %1)", "user-banned-reason-until": "מצטערים, חשבון זה הורחק עד %1 (סיבה: %2)", - "user-too-new": "אנא המתן %1 שניות לפני פרסום ההודעה", - "blacklisted-ip": "מצטערים, אך הורחקת מקהילה זו. אם הנך סבור שמדובר בטעות, אנא צור קשר עם מנהלי הקהילה.", - "ban-expiry-missing": "אנא ספק תאריך סיום להרחקה זו.", + "user-too-new": "אנא המתינו %1 שניות לפני פרסום ההודעה", + "blacklisted-ip": "מצטערים, אך הורחקתם מקהילה זו. אם הנכם סבורים שמדובר בטעות, אנא צרו קשר עם מנהלי הקהילה.", + "ban-expiry-missing": "אנא ספקו תאריך סיום להרחקה זו.", "no-category": "קטגוריה אינה קיימת", "no-topic": "נושא אינו קיים", "no-post": "פוסט אינו קיים", "no-group": "קבוצה לא קיימת", "no-user": "משתמש אינו קיים", "no-teaser": "תקציר אינו קיים", - "no-flag": "הדיווח לא קיים", - "no-privileges": "ההרשאות שלך אינן מספיקות לביצוע פעולה זו", + "no-flag": "דיווח לא קיים", + "no-privileges": "ההרשאות שלכם אינן מספיקות לביצוע פעולה זו.", "category-disabled": "קטגוריה לא פעילה", "topic-locked": "נושא נעול", - "post-edit-duration-expired": "אתה רשאי לערוך פוסטים רק ל-%1 שניות לאחר הפרסום", - "post-edit-duration-expired-minutes": "הנך רשאי לערוך תגובה עד %1 דקות מרגע פרסום התגובה.", - "post-edit-duration-expired-minutes-seconds": "הנך רשאי לערוך תגובה עד %1 דקות %2 ושניות מרגע פרסום התגובה.", - "post-edit-duration-expired-hours": "אתה מורשה לערוך פוסט(ים) רק %1 שעות אחרי הפרסום.", - "post-edit-duration-expired-hours-minutes": "הנך רשאי לערוך פוסט למשך %1 שעות %2 דקות מרגע פרסומו.", - "post-edit-duration-expired-days": "אתה רשאי לערוך פוסט(ים) רק למשך %1 ימים מרגע פרסומו", - "post-edit-duration-expired-days-hours": "אתה רשאי לערוך פוסט(ים) רק למשך %1 שעות %2 דקות מרגע פרסומו(ם)", - "post-delete-duration-expired": "אתה רשאי למחוק פוסט(ים) רק למשך %1 שניות מרגע פרסומו", - "post-delete-duration-expired-minutes": "הנך רשאי למחוק תגובה עד %1 דק(ות) מרגע פרסום התגובה.", - "post-delete-duration-expired-minutes-seconds": "הנך רשאי למחוק תגובה עד %1 דק(ות) ו-%2 שני(ות) מרגע פרסום התגובה.", - "post-delete-duration-expired-hours": "הנך רשאי למחוק תגובה עד %1 שע(ות) מרגע פרסום התגובה.", - "post-delete-duration-expired-hours-minutes": "הנך רשאי למחוק פוסט למשך %1 שע(ות) ו-%2 דק(ות) מרגע פרסומו.", - "post-delete-duration-expired-days": "אתה רשאי למחוק פוסט(ים) רק למשך %1 ימים מרגע פרסומם", - "post-delete-duration-expired-days-hours": "אתה מורשה למחוק פוסט רק %1 ימים ו %2 שעות אחרי פרסומו", - "cant-delete-topic-has-reply": "אינך יכול למחוק נושא אחרי שכבר הגיבו בו.", - "cant-delete-topic-has-replies": "לא ניתן למחוק את הנושא לאחר שקיבל %1 תגובות", - "content-too-short": "אנא הכנס פוסט ארוך יותר. פוסטים חייבים להכיל לפחות %1 תווים.", - "content-too-long": "אנא הכנס פוסט קצר יותר. פוסטים חייבים להיות קצרים יותר מ-%1 תווים.", - "title-too-short": "אנא הכנס כותרת ארוכה יותר. כותרות חייבות להכיל לפחות %1 תווים.", - "title-too-long": "אנא הכנס כותרת קצרה יותר. כותרות אינן יכולות להיות ארוכות מ-%1 תווים.", + "post-edit-duration-expired": "ניתן לערוך פוסטים עד %1 שניות מרגע כתיבת הפוסט", + "post-edit-duration-expired-minutes": "ניתן לערוך פוסטים עד %1 דקות מרגע כתיבת הפוסט", + "post-edit-duration-expired-minutes-seconds": "ניתן לערוך פוסטים עד %1 דקות %2 שניות מרגע כתיבת הפוסט", + "post-edit-duration-expired-hours": "ניתן לערוך פוסטים עד %1 שעות מרגע כתיבת הפוסט", + "post-edit-duration-expired-hours-minutes": "ניתן לערוך פוסטים עד %1 שעות %2 דקות מרגע כתיבת הפוסט", + "post-edit-duration-expired-days": "ניתן לערוך פוסטים עד %1 ימים מרגע כתיבת הפוסט", + "post-edit-duration-expired-days-hours": "ניתן לערוך פוסטים עד %1 ימים %2 שעות מרגע כתיבת הפוסט", + "post-delete-duration-expired": "ניתן למחוק פוסטים עד %1 שניות מרגע כתיבת הפוסט", + "post-delete-duration-expired-minutes": "ניתן למחוק פוסטים עד %1 דקות מרגע כתיבת הפוסט", + "post-delete-duration-expired-minutes-seconds": "ניתן למחוק פוסטים עד %1 דקות %2 שניות מרגע כתיבת הפוסט", + "post-delete-duration-expired-hours": "ניתן למחוק פוסטים עד %1 שעות מרגע כתיבת הפוסט", + "post-delete-duration-expired-hours-minutes": "ניתן למחוק פוסטים עד %1 שעות %2 דקות מרגע כתיבת הפוסט", + "post-delete-duration-expired-days": "ניתן למחוק פוסטים עד %1 ימים מרגע כתיבת הפוסט", + "post-delete-duration-expired-days-hours": "ניתן למחוק פוסטים עד %1 ימים %2 שעות מרגע כתיבת הפוסט", + "cant-delete-topic-has-reply": "לא ניתן למחוק נושא לאחר שהגיבו בו.", + "cant-delete-topic-has-replies": "לא ניתן למחוק נושא לאחר שקיבל %1 תגובות", + "content-too-short": "כתבו פוסט ארוך יותר. פוסטים חייבים להכיל לפחות %1 תווים.", + "content-too-long": "כתבו פוסט קצר יותר. פוסטים יכולים להיות רק עד %1 תווים.", + "title-too-short": "הכניסו כותרת ארוכה יותר. כותרות חייבות להכיל לפחות %1 תווים.", + "title-too-long": "הכניסו כותרת קצרה יותר. כותרות יכולות להיות רק עד %1 תווים.", "category-not-selected": "לא נבחרה קטגוריה", - "too-many-posts": "אתה יכול לפרסם פוסט רק פעם ב-%1 שניות - אנא המתן לפני פרסום שוב", - "too-many-posts-newbie": "כמשתמש חדש, אתה יכול לפרסם פוסט רק פעם ב-%1 שניות עד שיהיו לך %2 נקודות מוניטין - אנא המתן לפני פרסום שוב", - "tag-too-short": "אנא הכנס תגית ארוכה יותר. תגיות חייבות להכיל לפחות %1 תווים", - "tag-too-long": "אנא הכנס תגית קצרה יותר. תגיות אינן יכולות להיות ארוכות יותר מ-%1 תווים", - "not-enough-tags": "אין מספיק תגיות. לנושא חייב להיות לפחות %1 תגיות", - "too-many-tags": "יותר מדי תגיות. לנושאים לא יכולים להיות יותר מ-%1 תגיות", - "cant-use-system-tag": "אינך יכול להשתמש בתווית מערכת זו", - "cant-remove-system-tag": "אינך יכול להסיר תווית מערכת זו", - "still-uploading": "אנא המתן לסיום ההעלאות", - "file-too-big": "הגודל המקסימלי המותר לקובץ הוא %1 קילובייט - אנא העלה קובץ קטן יותר", - "guest-upload-disabled": "העלאת אורחים אינה מאופשרת", + "too-many-posts": "ניתן לפרסם פוסט רק פעם ב-%1 שניות - אנא המתינו לפני פרסום נוסף", + "too-many-posts-newbie": "כמשתמשים חדשים, אתם יכולים לפרסם פוסט רק פעם ב-%1 שניות עד שיהיו לכם %2 נקודות מוניטין - אנא המתינו לפני פרסום נוסף", + "tag-too-short": "הכניסו תגית ארוכה יותר. תגיות חייבות להכיל לפחות %1 תווים", + "tag-too-long": "הכניסו תגית קצרה יותר. תגיות יכולות להיות רק עד %1 תווים", + "not-enough-tags": "אין מספיק תגיות. נושא חייב להכיל לפחות %1 תגיות", + "too-many-tags": "יותר מדי תגיות. נושאים יכולים להכיל רק %1 תגיות", + "cant-use-system-tag": "אינכם יכול להשתמש בתווית מערכת זו.", + "cant-remove-system-tag": "אינכם יכול להסיר תווית מערכת זו.", + "still-uploading": "אנא המתינו לסיום ההעלאות.", + "file-too-big": "הגודל המקסימלי המותר לקובץ הוא %1 קילובייט - אנא העלו קובץ קטן יותר", + "guest-upload-disabled": "אורחים אינם מאופשרים להעלות קבצים", "cors-error": "לא ניתן להעלות את התמונה עקב שגיאת CORS.", - "upload-ratelimit-reached": "העלת יותר מידי קבצים בפעם אחת. אנא נסה שוב במועד מאוחר יותר", - "scheduling-to-past": "אנא בחר תאריך בעתיד", - "invalid-schedule-date": "אנא הזן תאריך ושעה תקינים", - "cant-pin-scheduled": "נושא מתוזמן אינו יכול להיות (לא-) נעוץ", - "cant-merge-scheduled": "נושא מתוזמן אינו יכול להתמזג ", - "cant-move-posts-to-scheduled": "אינך יכול להעביר פוסטים לנושא מתוזמן", - "cant-move-from-scheduled-to-existing": "אינך יכול להעביר פוסטים מנושא מתוזמן לנושא קיים", - "already-bookmarked": "כבר הוספת פוסט זה לרשימת המסומנים", - "already-unbookmarked": "כבר הסרת פוסט זה מרשימת המסומנים", - "cant-ban-other-admins": "אינך יכול לחסום מנהלים אחרים!", - "cant-mute-other-admins": "אתה לא יכול להשתיק מנהלים אחרים!", - "user-muted-for-hours": "You have been muted, you will be able to post in %1 hour(s)", - "user-muted-for-minutes": "You have been muted, you will be able to post in %1 minute(s)", - "cant-make-banned-users-admin": "לא ניתן להפוך משתמשים מורחקים למנהלים.", - "cant-remove-last-admin": "אתה המנהל היחיד. הוסף משתמש אחר לניהול לפני שאתה מוריד את עצמך מניהול", - "account-deletion-disabled": "מחיקת החשבון מושבתת", - "cant-delete-admin": "משתמש זה מוגדר כמנהל. על מנת למחוק את המשתמש, עליך להסיר קודם את גישותיו.", - "already-deleting": "כבר מחוק", + "upload-ratelimit-reached": "העלתם יותר מידי קבצים בפעם אחת. אנא נסו שוב במועד מאוחר יותר.", + "scheduling-to-past": "אנא בחרו תאריך עתידי.", + "invalid-schedule-date": "אנא הזינו תאריך ושעה תקינים.", + "cant-pin-scheduled": "נושא מתוזמן אינו יכול להיות (לא-) נעוץ.", + "cant-merge-scheduled": "נושא מתוזמן אינו יכול להתמזג.", + "cant-move-posts-to-scheduled": "אין אפשרות להעביר פוסטים לנושא מתוזמן.", + "cant-move-from-scheduled-to-existing": "אין אפשרות להעביר פוסטים מנושא מתוזמן לנושא קיים.", + "already-bookmarked": "הוספתם כבר פוסט זה לרשימת המועדפים", + "already-unbookmarked": "הסרתם כבר פוסט זה מרשימת המועדפים", + "cant-ban-other-admins": "אין אפשרות לחסום מנהלים אחרים!", + "cant-mute-other-admins": "אין אפשרות להשתיק מנהלים אחרים!", + "user-muted-for-hours": "הושתקתם, תוכלו לפרסם פוסט בעוד %1 שעות", + "user-muted-for-minutes": "הושתקתם, תוכלו לפרסם פוסט בעוד %1 דקות", + "cant-make-banned-users-admin": "אין אפשרות להפוך משתמשים מורחקים למנהלים.", + "cant-remove-last-admin": "אתם המנהלים היחידים. הוסיפו משתמש אחר לניהול לפני שאתם מוריד את עצמכם מניהול", + "account-deletion-disabled": "מחיקת החשבון מושבת", + "cant-delete-admin": "הסירו הרשאות מנהל מחשבון זה לפני שתנסו למחוק אותו.", + "already-deleting": "נמחק כבר", "invalid-image": "תמונה לא תקינה", "invalid-image-type": "פורמט תמונה לא תקין. הפורמטים המורשים הם: %1", "invalid-image-extension": "פורמט תמונה לא תקין", - "invalid-file-type": "פורמט הקובץ לא תקין. הפורמטים המורשים הם: %1", + "invalid-file-type": "פורמט קובץ לא תקין. הפורמטים המורשים הם: %1", "invalid-image-dimensions": "ממדי התמונה גדולים מדי", - "group-name-too-short": "שם הקבוצה קצר מדי", - "group-name-too-long": "שם הקבוצה ארוך מידי", - "group-already-exists": "הקבוצה כבר קיימת", + "group-name-too-short": "שם קבוצה קצר מדי", + "group-name-too-long": "שם קבוצה ארוך מידי", + "group-already-exists": "קבוצה כבר קיימת", "group-name-change-not-allowed": "לא ניתן לשנות את שם הקבוצה", "group-already-member": "כבר חבר בקבוצה זו", - "group-not-member": "לא חבר בקבוצה זו", + "group-not-member": "אינו חבר בקבוצה זו", "group-needs-owner": "קבוצה זו חייבת לפחות מנהל אחד", "group-already-invited": "משתמש זה כבר הוזמן", - "group-already-requested": "בקשת החברות שלך כבר נשלחה", - "group-join-disabled": "אתה לא רשאי להצטרף לקבוצה כרגע", - "group-leave-disabled": "אתה לא רשאי לעזוב את הקבוצה כרגע", - "post-already-deleted": "פוסט זה כבר נמחק", + "group-already-requested": "בקשת החברות שלכם כבר נשלחה", + "group-join-disabled": "אינכם רשאים להצטרף לקבוצה כרגע", + "group-leave-disabled": "אינכם רשאים לעזוב את הקבוצה כרגע", + "post-already-deleted": "פוסט זה נמחק כבר", "post-already-restored": "פוסט זה כבר שוחזר", "topic-already-deleted": "נושא זה כבר נמחק", "topic-already-restored": "נושא זה כבר שוחזר", - "cant-purge-main-post": "אתה לא יכול למחוק את הפוסט הראשי, אנא מחק את הנושא במקום", + "cant-purge-main-post": "אינכם יכולים למחוק את הפוסט הראשי, אנא מחקו את הנושא במקום", "topic-thumbnails-are-disabled": "תמונות ממוזערות לנושא אינן מאופשרות.", "invalid-file": "קובץ לא תקין", "uploads-are-disabled": "העלאת קבצים אינה מאופשרת", - "signature-too-long": "מצטערים, החתימה שלך לא יכולה להכיל יותר מ-%1 תווים.", - "about-me-too-long": "מצטערים, דף האודות שלך לא יכול להיות ארוך מ-%1 תווים.", - "cant-chat-with-yourself": "לא ניתן לעשות צ'אט עם עצמך!", - "chat-restricted": "משתמש זה חסם את הודעות הצ'אט שלו ממשתמשים זרים. המשתמש חייב לעקוב אחריך לפני שתוכל לשוחח איתו בצ'אט", + "signature-too-long": "מצטערים, החתימה שלכם אינה יכולה להכיל יותר מ-%1 תווים.", + "about-me-too-long": "מצטערים, דף האודות שלכם אינו יכול להיות ארוך מ-%1 תווים.", + "cant-chat-with-yourself": "לא ניתן לעשות צ'אט עם עצמכם!", + "chat-restricted": "משתמש זה חסם את הודעות הצ'אט שלו ממשתמשים זרים. המשתמש חייב לעקוב אחריכם לפני שתוכלו לשוחח איתו בצ'אט", "chat-disabled": "מערכת הצ'אט לא פעילה", - "too-many-messages": "שלחת יותר מדי הודעות, אנא המתן לזמן מה.", + "too-many-messages": "שלחתם יותר מדי הודעות, אנא המתינו זמן מה.", "invalid-chat-message": "הודעת צ'אט לא תקינה", "chat-message-too-long": "הודעות צ'אט לא יכולות להיות ארוכות מ %1 תווים.", - "cant-edit-chat-message": "אתה לא רשאי לערוך הודעה זו", - "cant-delete-chat-message": "אתה לא רשאי למחוק הודעה זו", - "chat-edit-duration-expired": "אתה רשאי לערוך הודעות צ'אט רק ל-%1 שניות לאחר הפרסום", - "chat-delete-duration-expired": "הנך רשאי למחוק הודעת צ'אט עד %1 דק(ות) מרגע פרסום התגובה.", - "chat-deleted-already": "הודעות הצ'אט הזו כבר נמחקה.", - "chat-restored-already": "הודעות הצ'אט הזו כבר שוחזרה.", + "cant-edit-chat-message": "אינכם רשאים לערוך הודעה זו", + "cant-delete-chat-message": "אינכם רשאים למחוק הודעה זו", + "chat-edit-duration-expired": "ניתן לערוך הודעות צ'אט עד %1 שניות מרגע כתיבת ההודעה", + "chat-delete-duration-expired": "ניתן למחוק הודעות צ'אט עד %1 שניות מרגע כתיבת ההודעה", + "chat-deleted-already": "הודעת צ'אט זו כבר נמחקה.", + "chat-restored-already": "הודעת צ'אט זו כבר שוחזרה.", "chat-room-does-not-exist": "חדר צ'אט אינו קיים.", - "already-voting-for-this-post": "הצבעת כבר בנושא זה", + "already-voting-for-this-post": "הצבעתם כבר בנושא זה.", "reputation-system-disabled": "מערכת המוניטין לא פעילה.", - "downvoting-disabled": "היכולת להצביע נגד לא פעילה", + "downvoting-disabled": "היכולת להצביע נגד מושבתת", "not-enough-reputation-to-chat": "נדרש %1 מוניטין כדי לכתוב בצ'אט", "not-enough-reputation-to-upvote": "נדרש %1 מוניטין כדי להצביע בעד", "not-enough-reputation-to-downvote": "נדרש %1 מוניטין כדי להצביע למטה", @@ -167,55 +167,57 @@ "not-enough-reputation-min-rep-signature": "נדרש %1 מוניטין כדי להוסיף חתימה", "not-enough-reputation-min-rep-profile-picture": "נדרש %1 מוניטין כדי להוסיף תמונת פרופיל", "not-enough-reputation-min-rep-cover-picture": "נדרש %1 מוניטין כדי להוסיף תמונת רקע לפרופיל", - "post-already-flagged": "כבר דיווחת על הפוסט הזה", - "user-already-flagged": "כבר דיווחת על המשתמש הזה", + "post-already-flagged": "דיווחתם כבר על פוסט זה", + "user-already-flagged": "דיווחתם כבר על משתמש זה", "post-flagged-too-many-times": "התקבל כבר דיווח על פוסט זה.", "user-flagged-too-many-times": "התקבל דיווח על משתמש זה.", "cant-flag-privileged": "לא ניתן לדווח על מנהלים או על תוכן שנכתב על ידי מנהלים.", - "self-vote": "אי אפשר להצביע בפרסום שיצרת", - "too-many-upvotes-today": "אתה יכול להצביע בעד רק %1 פעמים ביום", - "too-many-upvotes-today-user": "אתה יכול להצביע בעד משתמש מסוים רק %1 פעמים ביום", - "too-many-downvotes-today": "אתה יכול להצביע נגד %1 פעמים ביום", - "too-many-downvotes-today-user": "אתה יכול להצביע נגד משתמש %1 פעמים ביום", - "reload-failed": "אירעה תקלה ב NodeBB בזמן הטעינה של: \"%1\". המערכת תמשיך להגיש דפים קיימים, אבל כדאי שתשחזר את הפעולות שלך מהפעם האחרונה שהמערכת עבדה כראוי.", + "self-vote": "אי אפשר להצביע על פוסט שיצרתם", + "too-many-upvotes-today": "ביכולתכם להצביע בעד רק %1 פעמים ביום", + "too-many-upvotes-today-user": "ביכולתכם להצביע בעד משתמש מסוים רק %1 פעמים ביום", + "too-many-downvotes-today": "ביכולתכם להצביע נגד %1 פעמים ביום", + "too-many-downvotes-today-user": "ביכולתכם להצביע נגד משתמש %1 פעמים ביום", + "reload-failed": "אירעה תקלה ב NodeBB בזמן הטעינה של: \"%1\". המערכת תמשיך להגיש דפים קיימים, אבל כדאי שתשחזרו את הפעולות שלכם מהפעם האחרונה בה המערכת עבדה כראוי.", "registration-error": "שגיאה בהרשמה", - "parse-error": "אירעה שגיאה בעת בעת ניתוח תגובת השרת", - "wrong-login-type-email": "בבקשה השתמש בכתובת המייל שלך להתחברות", - "wrong-login-type-username": "בבקשה השתמש בשם המשתמש שלך להתחברות", - "sso-registration-disabled": "ההרשמה בוטלה ל%1 מהחשבונות, תחילה הרשם עם כתובת דוא\"ל בבקשה", - "sso-multiple-association": "אתה לא יכול לחבר מספר חשבונות משירות זה לחשבון שלך. אנא בטל את שיוך החשבון הקיים ונסה שוב.", - "invite-maximum-met": "הזמנת את הכמות המירבית של אנשים (%1 מתוך %2).", - "no-session-found": "לא נמצאו מושבי התחברות!", - "not-in-room": "משתמש זה לא בצ'אט", - "cant-kick-self": "אינך יכול להסיר את עצמך מהקבוצה", + "parse-error": "אירעה שגיאה בעת ניתוח תגובת השרת", + "wrong-login-type-email": "אנא השתמשו בכתובת המייל שלכם להתחברות", + "wrong-login-type-username": "אנא השתמשו בשם המשתמש שלכם להתחברות", + "sso-registration-disabled": "ההרשמה בוטלה ל%1 מהחשבונות, תחילה הירשמו עם כתובת דוא\"ל בבקשה", + "sso-multiple-association": "לא ניתן לחבר מספר חשבונות משירות זה לחשבון שלכם. אנא בטלו את שיוך החשבון הקיים ונסו שוב.", + "invite-maximum-met": "הזמנתם את הכמות המירבית של משתשמים (%1 מתוך %2).", + "no-session-found": "לא נמצאו סשני התחברות!", + "not-in-room": "משתמש זה אינו בחדר הצ'אט", + "cant-kick-self": "אינכם יכולים להסיר את עצמכם מהקבוצה", "no-users-selected": "לא נבחרו משתמשים", - "invalid-home-page-route": "כתובת דף הבית הינה שגויה", + "invalid-home-page-route": "כתובת דף הבית שגויה", "invalid-session": "סשן לא תקין", - "invalid-session-text": "נראה שסשן ההתחברות שלך כבר לא פעיל. אנא טען מחדש את העמוד.", - "session-mismatch": "מושב לא תואם", - "session-mismatch-text": "נראה שסשן ההתחברות שלך אינו תואם לשרת. נא רענן את הדף.", + "invalid-session-text": "נראה שסשן ההתחברות שלכם אינה פעילה יותר. אנא רעננו את הדף.", + "session-mismatch": "סשן לא תואם", + "session-mismatch-text": "נראה שסשן ההתחברות שלכם אינו תואם לשרת. אנא רעננו את הדף.", "no-topics-selected": "לא נבחרו נושאים!", - "cant-move-to-same-topic": "אתה לא יכול להעביר פוסט לאותו נושא!", - "cant-move-topic-to-same-category": "לא ניתן להעביר נושא לאותה קטגוריה!", - "cannot-block-self": "אתה לא יכול לחסום את עצמך!", - "cannot-block-privileged": "אתה לא יכול לחסום מנהלים ראשיים ומנהלים גלובליים", - "cannot-block-guest": "אורח לא יכול לחסום משתמשים אחרים", - "already-blocked": "המשתמש כבר חסום", - "already-unblocked": "המשתמש כבר לא חסום", - "no-connection": "נראה שיש בעיות בחיבור האינטרנט שלך..", - "socket-reconnect-failed": "לא ניתן להגיע לשרת בשלב זה. לחץ כאן כדי לנסות שוב, או נסה שוב מאוחר יותר", + "cant-move-to-same-topic": "אינכם יכולים להעביר פוסט לאותו נושא!", + "cant-move-topic-to-same-category": "אינכם יכולים להעביר נושא לאותה קטגוריה!", + "cannot-block-self": "אינכם יכולים לחסום את עצמכם!", + "cannot-block-privileged": "אינכם יכולים לחסום מנהלים ראשיים ומנהלים גלובליים", + "cannot-block-guest": "אורחים אינם יכולים לחסום משתמשים אחרים", + "already-blocked": "המשתמש חסום כבר", + "already-unblocked": "המשתמש שוחרר כבר מהחסימה", + "no-connection": "נראה שיש בעיות בחיבור האינטרנט שלכם...", + "socket-reconnect-failed": "לא ניתן להגיע לשרת בשלב זה. לחצו כאן כדי לנסות שוב, או נסו שוב במועד מאוחר יותר", "plugin-not-whitelisted": "לא ניתן להתקין את התוסף – ניתן להתקין דרך הניהול רק תוספים שנמצאים ברשימה הלבנה של מנהל החבילות של NodeBB.", + "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", "topic-event-unrecognized": "אירוע הנושא '%1' לא מזוהה", "cant-set-child-as-parent": "לא ניתן להגדיר קטגוריה משנה לקטגוריית אב", "cant-set-self-as-parent": "לא ניתן להגדיר את עצמי כקטגוריית אב", "api.master-token-no-uid": "token ראשי התקבל ללא corresponding `_uid` בגוף הבקשה", - "api.400": "משהו לא היה בסדר עם בקשת ה-payload שהעברת.", - "api.401": "לא נמצא סשן התחברות פעיל. נא להתחבר ולנסות שוב.", - "api.403": "אינך מורשה לבצע את החיוג", + "api.400": "משהו לא היה בסדר עם בקשת ה-payload שהעברתם.", + "api.401": "לא נמצא סשן התחברות פעילה. נא התחברו ונסו שוב.", + "api.403": "אינכם מורשים לבצע את החיוג", "api.404": "קריאת API שגויה", - "api.426": "HTTPS נדרש לבקשות ל-API של הכתיבה, אנא שלח מחדש את בקשתך באמצעות HTTPS", - "api.429": "יותר מידי בקשות, אנא נסה שוב מאוחר יותר", - "api.500": "שגיאה בלתי צפויה אירעה בעת ניסיון להגיש את בקשתך.", - "api.501": "הנתיב אליו אתה מנסה לתקשר עדיין לא מיושם, אנא נסה שוב מחר", - "api.503": "הנתיב אליו אתה מנסה לתקשר אינו זמין כעת עקב תצורת שרת" + "api.426": "HTTPS נדרש לבקשות ל-API של הכתיבה, אנא שלחו מחדש את בקשתכם באמצעות HTTPS", + "api.429": "יותר מידי בקשות, אנא נסו שוב מאוחר יותר", + "api.500": "שגיאה בלתי צפויה אירעה בעת ניסיון להגיש את בקשתכם.", + "api.501": "הנתיב אליו אתם מנסים לתקשר עדיין לא מיושם, אנא נסו שוב מחר", + "api.503": "הנתיב אליו אתם מנסים לתקשר אינו זמין כעת עקב תצורת שרת" } \ No newline at end of file diff --git a/public/language/he/modules.json b/public/language/he/modules.json index 3fca0cd273..ebcf0e7d3b 100644 --- a/public/language/he/modules.json +++ b/public/language/he/modules.json @@ -1,82 +1,82 @@ { - "chat.chatting_with": "שוחח עם", - "chat.placeholder": "הקלד את הודעת הצ'אט כאן, ניתן גם לגרור ולשחרר כאן תמונות, הקש אנטר לשליחה.", - "chat.scroll-up-alert": "אתה צופה כעת על הודעות ישנות. לחץ כאן למעבר להודעה האחרונה.", - "chat.send": "שלח", - "chat.no_active": "אין לך צ'אטים פעילים", + "chat.chatting_with": "שוחחו בצ'אט עם", + "chat.placeholder": "כתבו את תוכן הודעת הצ'אט כאן, ניתן גם לגרור ולשחרר כאן תמונות, הקישו אנטר לשליחה.", + "chat.scroll-up-alert": "הנכם צופים כעת בהודעות ישנות. לחצו כאן למעבר להודעה האחרונה.", + "chat.send": "שליחה", + "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.no-messages": "בחר משתמש על מנת לראות את שיחות הצ'אט שלכם", + "chat.user_has_messaged_you": "ל%1 יש הודעה עבורכם.", + "chat.see_all": "צפו בכל הצ'אטים", + "chat.mark_all_read": "סמנו את כל הצ'אטים כ'נקראו'", + "chat.no-messages": "בחרו משתמש על מנת לראות את שיחות הצ'אט ביניכם", "chat.no-users-in-room": "אין משתמשים בחדר הזה", "chat.recent-chats": "צ'אטים אחרונים", "chat.contacts": "אנשי קשר", "chat.message-history": "היסטוריית הודעות", "chat.message-deleted": "ההודעה נמחקה", "chat.options": "אפשרויות צ'אט", - "chat.pop-out": "מזער חלונית צ'אט", - "chat.minimize": "צמצם", - "chat.maximize": "הרחב", + "chat.pop-out": "מזעור חלונית צ'אט", + "chat.minimize": "צמצום", + "chat.maximize": "הרחבה", "chat.seven_days": "7 ימים", "chat.thirty_days": "30 ימים", "chat.three_months": "3 חודשים", - "chat.delete_message_confirm": "האם אתה בטוח שברצונך למחוק הודעה זו?", + "chat.delete_message_confirm": "האם למחוק הודעה זו?", "chat.retrieving-users": "מאחזר משתמשים...", - "chat.manage-room": "נהל חדר צ'אט", - "chat.add-user-help": "חפש משתמשים כאן. כאשר משתמש נבחר, הוא יצורף לצ'אט. המשתמש החדש לא יוכל לראות הודעות שנכתבו לפני הצטרפותו. רק מנהלי החדר (<i class=\"fa fa-star text-warning\"></i>) יכולים להסיר משתמשים מהצ'אט.", - "chat.confirm-chat-with-dnd-user": "משתמש זה שינה את הסטטוס שלו ל'לא להפריע'. אתה עדיין מעוניין לשוחח איתו?", - "chat.rename-room": "שנה שם חדר", - "chat.rename-placeholder": "הזן את שם החדר שלך כאן", + "chat.manage-room": "ניהול חדר צ'אט", + "chat.add-user-help": "חפשו משתמשים כאן. כאשר משתמש נבחר, הוא יצורף לצ'אט. המשתמש החדש לא יוכל לראות הודעות שנכתבו לפני הצטרפותו. רק מנהלי החדר (<i class=\"fa fa-star text-warning\"></i>) יכולים להסיר משתמשים מהצ'אט.", + "chat.confirm-chat-with-dnd-user": "משתמש זה שינה את הסטטוס שלו ל'לא להפריע'. אתם עדיין מעוניין לשוחח איתו?", + "chat.rename-room": "שינוי שם חדר", + "chat.rename-placeholder": "הזינו את שם החדר שלכם כאן", "chat.rename-help": "שם החדר המוגדר כאן יהיה זמין לכל המשתתפים בחדר.", - "chat.leave": "עזוב שיחה", - "chat.leave-prompt": "האם אתה בטוח שאתה רוצה לעזוב את השיחה הזו?", - "chat.leave-help": "עזיבת שיחה, תסיר אותך מהתכתבות עתידית בצ'אט זה. אם תצטרף מחדש בעתיד, לא תראה את היסטוריית הצ'אט שלפני הצטרפותך מחדש.", - "chat.in-room": "בתוך החדר הזה", + "chat.leave": "עזיבת שיחה", + "chat.leave-prompt": "האם לעזוב שיחה זו?", + "chat.leave-help": "עזיבת שיחה, תסיר אתכם מהתכתבות עתידית בצ'אט זה. אם תצטרפו מחדש בעתיד, לא תראו את היסטוריית הצ'אט שלפני הצטרפותכם מחדש.", + "chat.in-room": "בתוך חדר זה", "chat.kick": "הוצא", "chat.show-ip": "הצג IP", - "chat.owner": "מנהל החדר", + "chat.owner": "מנהלי החדר", "chat.system.user-join": "%1 הצטרף לחדר", "chat.system.user-leave": "%1 יצא מהחדר", "chat.system.room-rename": "%2 שינה את שם החדר: %1", - "composer.compose": "צור", - "composer.show_preview": "הצג תצוגה מקדימה", - "composer.hide_preview": "הסתר תצוגה מקדימה", - "composer.user_said_in": "%1 אמר ב%2:", - "composer.user_said": "%1 אמר:", - "composer.discard": "האם למחוק פוסט זה?", - "composer.submit_and_lock": "אשר ונעל", - "composer.toggle_dropdown": "הדלק/כבה את התפריט הנפתח", + "composer.compose": "יצירה", + "composer.show_preview": "הצגת תצוגה מקדימה", + "composer.hide_preview": "הסתרת תצוגה מקדימה", + "composer.user_said_in": "%1 כתב ב%2:", + "composer.user_said": "%1 כתב:", + "composer.discard": "האם לבטל את השינויים שנעשו בפוסט זה?", + "composer.submit_and_lock": "אשרו ונעלו", + "composer.toggle_dropdown": "הדליקו / כבו את התפריט הנפתח", "composer.uploading": "העלאה %1", "composer.formatting.bold": "מודגש", "composer.formatting.italic": "נטוי", "composer.formatting.list": "רשימה", "composer.formatting.strikethrough": "קו פוסל", "composer.formatting.code": "קוד", - "composer.formatting.link": "לינק", + "composer.formatting.link": "קישור", "composer.formatting.picture": "קישור תמונה", - "composer.upload-picture": "העלה תמונה", - "composer.upload-file": "העלה קובץ", + "composer.upload-picture": "העלאת תמונה", + "composer.upload-file": "העלאת קובץ", "composer.zen_mode": "מסך מלא", - "composer.select_category": "בחר קטגוריה", - "composer.textarea.placeholder": "כתוב את תוכן הפוסט כאן. ניתן גם לגרור ולשחרר כאן תמונות.", + "composer.select_category": "בחירת קטגוריה", + "composer.textarea.placeholder": "כתבו את תוכן הפוסט כאן. ניתן גם לגרור ולשחרר כאן תמונות.", "composer.schedule-for": "תזמון נושא ל", "composer.schedule-date": "תאריך", "composer.schedule-time": "שעה", - "composer.cancel-scheduling": "בטל תיזמון", - "composer.set-schedule-date": "הגדר תאריך", + "composer.cancel-scheduling": "ביטול תיזמון", + "composer.set-schedule-date": "הגדרת תאריך", "bootbox.ok": "אישור", - "bootbox.cancel": "בטל", - "bootbox.confirm": "אשר", + "bootbox.cancel": "ביטול", + "bootbox.confirm": "אישור", "bootbox.submit": "שליחה", - "bootbox.send": "שלח", + "bootbox.send": "שליחה", "cover.dragging_title": "מיקום תמונת נושא", - "cover.dragging_message": "גרור תמונת נושא למיקום הרצוי ולחץ על \"שמור\"", - "cover.saved": "תמונת הנושא והמיקום נשמר", - "thumbs.modal.title": "נהל תמונה ממוזערת של הנושא", - "thumbs.modal.no-thumbs": "לא נמצעו תמונות ממוזערות", + "cover.dragging_message": "גררו תמונת נושא למיקום הרצוי ולחצו על \"שמירה\"", + "cover.saved": "תמונת הנושא והמיקום שלה נשמרו", + "thumbs.modal.title": "ניהול תמונה ממוזערת של הנושא", + "thumbs.modal.no-thumbs": "לא נמצאו תמונות ממוזערות", "thumbs.modal.resize-note": "<strong>הערה</strong>: הפורום מוגדר לשנות את התמונה הממוזערת לגודל מקסימום של %1px", - "thumbs.modal.add": "הוסף תמונה ממוזערת", - "thumbs.modal.remove": "הסר תמונה ממוזערת", - "thumbs.modal.confirm-remove": "האם אתה בטוח שאתה רוצה להסיר את התמונה הממוזערת?" + "thumbs.modal.add": "הוספת תמונה ממוזערת", + "thumbs.modal.remove": "הסרת תמונה ממוזערת", + "thumbs.modal.confirm-remove": "האם להסיר את התמונה הממוזערת?" } \ No newline at end of file diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index 99fc703a68..27ce74af7c 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/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/he/pages.json b/public/language/he/pages.json index 778ce89772..0e5aefc608 100644 --- a/public/language/he/pages.json +++ b/public/language/he/pages.json @@ -26,7 +26,7 @@ "tag": "נושאים שתויגו תחת "%1"", "register": "יצירת חשבון", "registration-complete": "ההרשמה הושלמה", - "login": "התחבר לחשבונך", + "login": "התחברות לחשבון", "reset": "איפוס סיסמה למשתמש", "categories": "קטגוריות", "groups": "קבוצות", @@ -35,19 +35,19 @@ "chat": "שלחו הודעה פרטית ל%1", "flags": "דיווחים", "flag-details": "פרטי דיווח %1", - "account/edit": "לערוך את \"%1\"", - "account/edit/password": "עורך את הסיסמה של \"%1\"", - "account/edit/username": "עורך את שם המשתמש של \"%1\"", - "account/edit/email": "עורך את כתובת המייל של \"%1\"", + "account/edit": "עריכת \"%1\"", + "account/edit/password": "עריכת סיסמה של \"%1\"", + "account/edit/username": "עריכת שם משתמש של \"%1\"", + "account/edit/email": "עריכת כתובת מייל של \"%1\"", "account/info": "פרטי חשבון", - "account/following": "אנשים ש%1 עוקב אחריהם", - "account/followers": "אנשים שעוקבים אחרי %1", + "account/following": "משתמשים ש%1 עוקב אחריהם", + "account/followers": "משתמשים שעוקבים אחרי %1", "account/posts": "הודעות שפורסמו על ידי %1", "account/latest-posts": "פוסטים אחרונים שנוצרו על ידי %1", "account/topics": "נושאים שנוצרו על ידי %1", "account/groups": "הקבוצות של %1", "account/watched_categories": "הקטגוריות ש-%1 עוקב אחריהם", - "account/bookmarks": "הפוסטים השמורים של %1", + "account/bookmarks": "הפוסטים המועדפים של %1", "account/settings": "הגדרות משתמש", "account/watched": "נושאים שנצפו על ידי %1", "account/ignored": "נושאים ש%1 התעלמו מהם", @@ -59,7 +59,7 @@ "account/uploads": "העלאות של %1", "account/sessions": "סשני התחברות", "confirm": "כתובת המייל אושרה", - "maintenance.text": "%1 כרגע תחת עבודות תחזוקה. אנא חזור בזמן מאוחר יותר.", - "maintenance.messageIntro": "בנוסף, המנהל השאיר את ההודעה הזו:", - "throttled.text": "%1 לא זמין כעת עקב טעינת יתר. אנא חזור מאוחר יותר." + "maintenance.text": "%1 כרגע תחת עבודות תחזוקה. אנא חזרו במועד מאוחר יותר.", + "maintenance.messageIntro": "בנוסף, המנהלים השאירו הודעה זו:", + "throttled.text": "%1 לא זמין כעת עקב טעינת יתר. אנא חזרו במועד מאוחר יותר." } \ No newline at end of file diff --git a/public/language/he/topic.json b/public/language/he/topic.json index 85be37618b..a8fd87a73a 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -7,28 +7,28 @@ "topic_is_deleted": "נושא זה נמחק!", "profile": "פרופיל", "posted_by": "פורסם על ידי %1", - "posted_by_guest": "פורסם על-ידי אורח", + "posted_by_guest": "פורסם על ידי אורח", "chat": "צ'אט", - "notify_me": "קבל התראה כאשר יש תגובות חדשות בנושא זה", + "notify_me": "קבלת התראה כאשר יש תגובות חדשות בנושא זה", "quote": "ציטוט", "reply": "תגובה", "replies_to_this_post": "%1 תגובות", "one_reply_to_this_post": "תגובה 1", "last_reply_time": "תגובה אחרונה", - "reply-as-topic": "הגב כנושא", - "guest-login-reply": "התחבר בכדי לפרסם תגובה", - "login-to-view": "🔒 התחבר בכדי לצפות", + "reply-as-topic": "הגיבו כנושא", + "guest-login-reply": "התחברו בכדי לפרסם תגובה", + "login-to-view": "🔒 התחברו בכדי לצפות", "edit": "עריכה", - "delete": "מחק", + "delete": "מחיקה", "delete-event": "מחיקת ארוע", - "delete-event-confirm": "האם אתה בטוח שאתה רוצה למחוק אירוע זה?", - "purge": "מחק לצמיתות", - "restore": "שחזר", - "move": "העבר", - "change-owner": "שנה שם כותב הפוסט", - "fork": "פצל", - "link": "לינק", - "share": "שתף", + "delete-event-confirm": "האם למחוק אירוע זה?", + "purge": "מחיקה לצמיתות", + "restore": "שחזור", + "move": "העברה", + "change-owner": "שינוי שם בעל הפוסט", + "fork": "פיצול", + "link": "קישור", + "share": "שיתוף", "tools": "כלים", "locked": "נעול", "pinned": "נעוץ", @@ -36,153 +36,153 @@ "scheduled": "מתוזמן", "moved": "הועבר", "moved-from": "הועבר מ-%1", - "copy-ip": "העתק IP", - "ban-ip": "הרחק IP", - "view-history": "ערוך היסטוריה", - "locked-by": "נעול על ידי", + "copy-ip": "העתקת IP", + "ban-ip": "הרחקת IP", + "view-history": "עריכת היסטוריה", + "locked-by": "ננעל על ידי", "unlocked-by": "נעילה הוסרה על ידי", - "pinned-by": "נעוץ על ידי", + "pinned-by": "ננעץ על ידי", "unpinned-by": "נעיצה הוסרה על ידי", "deleted-by": "נמחק על ידי", "restored-by": "שוחזר על ידי", "moved-from-by": "הועבר מ %1 ע\"י", "queued-by": "הפוסט ממתין לאישור →", "backlink": "הוזכר על-ידי", - "forked-by": "Forked by", - "bookmark_instructions": "לחץ כאן בכדי לחזור לפוסט האחרון שקראת בנושא הזה.", - "flag-post": "דווח על פוסט זה", - "flag-user": "דווח על משתמש זה", + "forked-by": "פוצל על-ידי", + "bookmark_instructions": "לחצו כאן בכדי לחזור לפוסט האחרון שקראתם בנושא זה.", + "flag-post": "דווחו על פוסט זה", + "flag-user": "דווחו על משתמש זה", "already-flagged": "דווח כבר", - "view-flag-report": "הצג דוח דיווחים", - "resolve-flag": "השלם דיווח", + "view-flag-report": "הצגת דוח דיווחים", + "resolve-flag": "השלמת דיווח", "merged_message": "נושא זה מוזג בתוך <a href=\"%1\">%2</a>", "deleted_message": "נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.", - "following_topic.message": "מעתה, תקבל התראה כאשר מישהו יעלה פוסט לנושא זה.", - "not_following_topic.message": "תוכל לראות נושא זה ברשימת הנושאים שלא נקראו, אולם לא תקבל התראה כשמישהו יעלה פוסט בנושא זה.", - "ignoring_topic.message": "לא תראה עוד נושא זה ברשימת הנושאים של נקראו. תקבל הודעה כשתוזכר או כשהפוסט שלך יקבל הצבעה חיובית", - "login_to_subscribe": "הרשם או התחבר בכדי לעקוב אחר נושא זה.", + "following_topic.message": "תקבלו התראות כאשר יפורסם פוסט חדש בנושא זה.", + "not_following_topic.message": "נושא זה יופיע ברשימת הנושאים שלא נקראו, אולם לא תקבלו התראה כשיפורסם פוסט בנושא זה.", + "ignoring_topic.message": "נושא זה לא יופיע יותר ברשימת הנושאים שלא נקראו. תקבלו הודעה כשיזכירו אתכם או כשהפוסט שלכם יקבל הצבעה חיובית", + "login_to_subscribe": "הירשמו או התחברו בכדי לעקוב אחר נושא זה.", "markAsUnreadForAll.success": "נושא זה סומן כלא נקרא לכולם.", - "mark_unread": "סמן כלא נקרא", + "mark_unread": "סימון כלא נקרא", "mark_unread.success": "הנושא סומן כלא נקרא.", - "watch": "עקוב", - "unwatch": "הפסק לעקוב", - "watch.title": "קבל התראה כאשר יש תגובות חדשות בנושא זה", - "unwatch.title": "הפסק לעקוב אחר נושא זה", - "share_this_post": "שתף פוסט זה", - "watching": "עוקב", - "not-watching": "לא עוקב", - "ignoring": "מתעלם", - "watching.description": "הודע לי על תגובות חדשות. <br/>הצג נושא ברשימת הלא נקראו.", - "not-watching.description": "אל תודיע לי על תגובות חדשות. <br/>הצג נושא ברשימת הלא נקראו במידה ובחרתי לא להתעלם מקטגוריה זו", - "ignoring.description": "אל תודיע לי על תגובות חדשות. <br/>אל תראה את הנושא ברשימת הלא נקראו ", + "watch": "מעקב", + "unwatch": "הפסקת מעקב", + "watch.title": "קבלת התראה כאשר יש תגובות חדשות בנושא זה", + "unwatch.title": "הפסקת מעקב אחר נושא זה", + "share_this_post": "שתפו פוסט זה", + "watching": "במעקב", + "not-watching": "לא במעקב", + "ignoring": "התעלמות", + "watching.description": "עדכנו אותי על תגובות חדשות. <br/>הצגת נושא ברשימת לא נקראו.", + "not-watching.description": "אל תעדכנו אותי על תגובות חדשות. <br/>הצגת נושא ברשימת לא נקראו במידה ובחרתי לא להתעלם מקטגוריה זו", + "ignoring.description": "אל תעדכנו אותי על תגובות חדשות. <br/>אל תציגו את הנושא ברשימת לא נקראו ", "thread_tools.title": "כלי נושא", - "thread_tools.markAsUnreadForAll": "סמן לכולם כלא נקרא", - "thread_tools.pin": "נעץ נושא", - "thread_tools.unpin": "הסר נעץ", - "thread_tools.lock": "נעל נושא", - "thread_tools.unlock": "הסר נעילה", - "thread_tools.move": "הזז נושא", - "thread_tools.move-posts": "הזז פוסטים", - "thread_tools.move_all": "הזז הכל", - "thread_tools.change_owner": "שנה שם כותב הפוסט", - "thread_tools.select_category": "בחר קטגוריה", - "thread_tools.fork": "פצל נושא", - "thread_tools.delete": "מחק נושא", - "thread_tools.delete-posts": "מחק פוסטים", - "thread_tools.delete_confirm": "האם אתה בטוח שאתה רוצה למחוק נושא זה?", - "thread_tools.restore": "שחזר נושא", - "thread_tools.restore_confirm": "האם אתה בטוח שאתה רוצה לשחזר נושא זה?", - "thread_tools.purge": "מחק נושא", - "thread_tools.purge_confirm": "האם אתה בטוח שאתה רוצה למחוק נושא זה?", - "thread_tools.merge_topics": "מזג נושאים", - "thread_tools.merge": "מזג", - "topic_move_success": "נושא זה יועבר מיד ל\"%1\". לחץ כאן כדי לבטל.", - "topic_move_multiple_success": "נושאים אלו יועברו מיד ל\"%1\" . לחץ כאן לביטול.", - "topic_move_all_success": "כל הנושאים יועברו מיד ל\"%1\". לחץ כאן לביטול.", - "topic_move_undone": "העברת הנושא בוטל", - "topic_move_posts_success": "הפוסטים יועברו בקרוב. לחץ כאן לביטול.", - "topic_move_posts_undone": "העברת הפוסט בוטל", - "post_delete_confirm": "האם אתה בטוח שאתה רוצה למחוק פוסט זה?", - "post_restore_confirm": "האם אתה בטוח שאתה רוצה לשחזר פוסט זה?", - "post_purge_confirm": "האם אתה בטוח שאתה רוצה למחוק פוסט זה?", + "thread_tools.markAsUnreadForAll": "סימון לכולם כלא נקרא", + "thread_tools.pin": "נעיצת נושא", + "thread_tools.unpin": "הסרת נעיצה", + "thread_tools.lock": "נעילת נושא", + "thread_tools.unlock": "הסרת נעילה", + "thread_tools.move": "הזזת נושא", + "thread_tools.move-posts": "הזזת פוסטים", + "thread_tools.move_all": "הזזת הכל", + "thread_tools.change_owner": "שינוי שם כותב הפוסט", + "thread_tools.select_category": "בחירת קטגוריה", + "thread_tools.fork": "פיצול נושא", + "thread_tools.delete": "מחיקת נושא", + "thread_tools.delete-posts": "מחיקת פוסטים", + "thread_tools.delete_confirm": "האם למחוק נושא זה?", + "thread_tools.restore": "שיחזור נושא", + "thread_tools.restore_confirm": "האם לשחזר נושא זה?", + "thread_tools.purge": "מחיקת נושא לצמיתות", + "thread_tools.purge_confirm": "האם למחוק לצמיתות נושא זה?", + "thread_tools.merge_topics": "מיזוג נושאים", + "thread_tools.merge": "מיזוג", + "topic_move_success": "נושא זה יועבר ל\"%1\". לחצו כאן לביטול.", + "topic_move_multiple_success": "נושאים אלו יועברו ל\"%1\" . לחצו כאן לביטול.", + "topic_move_all_success": "כל הנושאים יועברו ל\"%1\". לחצו כאן לביטול.", + "topic_move_undone": "העברת הנושא בוטלה", + "topic_move_posts_success": "הפוסטים יועברו מיד. לחצו כאן לביטול.", + "topic_move_posts_undone": "העברת הפוסט בוטלה", + "post_delete_confirm": "האם למחוק פוסט זה?", + "post_restore_confirm": "האם לשחזר פוסט זה?", + "post_purge_confirm": "האם למחוק לצמיתות פוסט זה?", "pin-modal-expiry": "תאריך תפוגה", - "pin-modal-help": "באפשרותך להגדיר כאן תאריך תפוגה לנושא(ים) המוצמד(ים). לחלופין, אתה יכול להשאיר שדה זה ריק כדי שהנושא יישאר נעוץ עד לביטול ההצמדה ידנית.", + "pin-modal-help": "באפשרותכם להגדיר כאן תאריך תפוגה לנושאים המוצמדים. לחלופין, ביכולתכם להשאיר שדה זו ריקה, כדי שהנושא יישאר נעוץ עד לביטול ההצמדה ידנית.", "load_categories": "טוען קטגוריות", - "confirm_move": "הזז", - "confirm_fork": "פצל", - "bookmark": "הוסף למועדפים", + "confirm_move": "העברה", + "confirm_fork": "פיצול", + "bookmark": "הוספה למועדפים", "bookmarks": "מועדפים", - "bookmarks.has_no_bookmarks": "לא צירפת פוסט למועדפים עדיין", - "copy-permalink": "Copy Permalink", + "bookmarks.has_no_bookmarks": "לא צירפתם פוסט למועדפים עדיין", + "copy-permalink": "העתקת קישור-קבוע", "loading_more_posts": "טוען פוסטים נוספים", - "move_topic": "הזז נושא", - "move_topics": "הזז נושאים", - "move_post": "הזז פוסט", + "move_topic": "העברת נושא", + "move_topics": "העברת נושאים", + "move_post": "העברת פוסט", "post_moved": "הפוסט הועבר!", - "fork_topic": "פצל נושא", - "enter-new-topic-title": "הכנס כותרת נושא חדשה", - "fork_topic_instruction": "לחץ על הפוסטים שברצונך לפצל", + "fork_topic": "פיצול נושא", + "enter-new-topic-title": "הכניסו כותרת נושא חדשה", + "fork_topic_instruction": "לחצו על הפוסטים שברצונכם לפצל", "fork_no_pids": "לא נבחרו פוסטים!", "no-posts-selected": "לא נבחרו פוסטים!", - "x-posts-selected": "%1 פוסט(ים) נבחרו", - "x-posts-will-be-moved-to-y": "%1 פוסט(ים) יועברו ל-\"%2\"", - "fork_pid_count": "%1 פוסט(ים) נבחרו", - "fork_success": "הפוסט פוצל בהצלחה! לחץ כאן על מנת לעבור לפוסט המפוצל.", - "delete_posts_instruction": "לחץ על הפוסטים שברצונך למחוק", - "merge_topics_instruction": "לחץ על הנושאים שברצונך למזג או חפש אותם", + "x-posts-selected": "%1 פוסטים נבחרו", + "x-posts-will-be-moved-to-y": "%1 פוסטים יועברו ל-\"%2\"", + "fork_pid_count": "%1 פוסטים נבחרו", + "fork_success": "הפוסט פוצל בהצלחה! לחצו כאן על מנת לעבור לפוסט המפוצל.", + "delete_posts_instruction": "לחצו על הפוסטים שברצונכם למחוק", + "merge_topics_instruction": "לחצו על הנושאים שברצונכם למזג או חפשו אותם", "merge-topic-list-title": "רשימת הנושאים למיזוג", "merge-options": "אפשרויות מיזוג", - "merge-select-main-topic": "בחר את הכותרת המועדפת", + "merge-select-main-topic": "בחרו את הנושא הראשי", "merge-new-title-for-topic": "כותרת חדשה לנושא", "topic-id": "מזהה נושא", - "move_posts_instruction": "לחץ על הפוסטים שברצונך להסיר ואז הכנס מזהה נושא או עבור לנושא היעד", - "change_owner_instruction": "לחץ על הפוסטים עליהם תרצה לשנות את כותב ההודעה", - "composer.title_placeholder": "הכנס את כותרת הנושא כאן...", - "composer.handle_placeholder": "הזן את שמך / כינוי שלך כאן", + "move_posts_instruction": "לחצו על הפוסטים שברצונכם להסיר ואז הכניסו מזהה נושא או עברו לנושא היעד", + "change_owner_instruction": "לחצו על הפוסטים בהם תרצו לשנות את שם כותב ההודעה", + "composer.title_placeholder": "הכניסו את כותרת הנושא כאן...", + "composer.handle_placeholder": "הזינו את שמכם / כינוי שלכם כאן", "composer.discard": "ביטול", - "composer.submit": "שלח", + "composer.submit": "שליחה", "composer.additional-options": "אפשרויות נוספות", - "composer.schedule": "תזמן", - "composer.replying_to": "מגיב ל%1", + "composer.schedule": "תיזמון", + "composer.replying_to": "תגובה ל%1", "composer.new_topic": "נושא חדש", "composer.editing": "עורך", "composer.uploading": "מעלה...", - "composer.thumb_url_label": "הדבק את כתובת ה-URL לתמונה מוקטנת עבור הנושא", - "composer.thumb_title": "הוסף תמונה מוקטנת לנושא זה", + "composer.thumb_url_label": "הדביקו את כתובת ה-URL לתמונה מוקטנת עבור הנושא", + "composer.thumb_title": "הוסיפו תמונה מוקטנת לנושא זה", "composer.thumb_url_placeholder": "http://example.com/thumb.png", - "composer.thumb_file_label": "או העלה קובץ", - "composer.thumb_remove": "נקה שדות", - "composer.drag_and_drop_images": "גרור תמונות לכאן", - "more_users_and_guests": "%1 משתמש(ים) נוספים ו-%2 אורח(ים)", + "composer.thumb_file_label": "או העלו קובץ", + "composer.thumb_remove": "ניקוי שדות", + "composer.drag_and_drop_images": "גררו תמונות לכאן", + "more_users_and_guests": "%1 משתמשים נוספים ו-%2 אורחים", "more_users": "%1 משתמשים נוספים", "more_guests": "%1 אורחים נוספים", "users_and_others": "%1 ו-%2 אחרים", - "sort_by": "סדר על-פי", + "sort_by": "סדרו על-פי", "oldest_to_newest": "מהישן לחדש", "newest_to_oldest": "מהחדש לישן", "most_votes": "הכי הרבה הצבעות", "most_posts": "הכי הרבה פוסטים", "most_views": "הכי הרבה צפיות", "stale.title": "ליצור נושא חדש במקום זאת?", - "stale.warning": "הנושא בו אתה מגיב הוא די ישן. האם ברצונך לפתוח נושא חדש, ולהזכיר נושא זה בתגובתך?", - "stale.create": "צור נושא חדש", - "stale.reply_anyway": "הגב לנושא זה בכל מקרה", + "stale.warning": "הנושא בו אתם מגיבים הוא די ישן. האם ברצונכם לפתוח נושא חדש, ולהזכיר את נושא זה בתגובתכם?", + "stale.create": "יצירת נושא חדש", + "stale.reply_anyway": "הגיבו לנושא זה בכל מקרה", "link_back": "תגובה: [%1](%2)", "diffs.title": "היסטוריית עריכת הפוסט", - "diffs.description": "להודעה זו יש <strong>%1</strong> עריכות. לחץ על אחת מהעריכות להלן כדי לראות את תוכן ההודעה בנקודת זמן זו.", + "diffs.description": "להודעה זו יש <strong>%1</strong> עריכות. לחצו על אחת מהעריכות להלן כדי לראות את תוכן ההודעה בנקודת זמן זו.", "diffs.no-revisions-description": "לפוסט זה יש <strong>%1</strong>גרסאות", "diffs.current-revision": "גרסה נוכחית", "diffs.original-revision": "גרסה מקורית", - "diffs.restore": "שחזר גרסה זו", + "diffs.restore": "שחזרו לגרסה זו", "diffs.restore-description": "יתווסף גרסה חדשה להיסטוריית העריכה אחרי השיחזור", "diffs.post-restored": "הפוסט שוחזר בהצלחה לגרסה קודמת", - "diffs.delete": "מחק גרסה זו", + "diffs.delete": "מחיקת גרסה זו", "diffs.deleted": "גרסה זו נמחקה", "timeago_later": "אחרי %1", "timeago_earlier": "לפני %1 ", "first-post": "פוסט ראשון", "last-post": "פוסט אחרון", - "go-to-my-next-post": "Go to my next post", - "no-more-next-post": "You don't have more posts in this topic", - "post-quick-reply": "רשום תשובה מהירה" + "go-to-my-next-post": "מעבר לפוסט הבא שלי", + "no-more-next-post": "אין לכם יותר פוסטים בנושא זה", + "post-quick-reply": "שליחת תגובה מהירה" } \ No newline at end of file diff --git a/public/language/he/user.json b/public/language/he/user.json index 87f7a02d2f..66f07361f6 100644 --- a/public/language/he/user.json +++ b/public/language/he/user.json @@ -1,6 +1,6 @@ { "banned": "מורחק", - "muted": "Muted", + "muted": "מושתק", "offline": "לא מחובר", "deleted": "נמחק", "username": "שם משתמש", @@ -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/hr/admin/menu.json b/public/language/hr/admin/menu.json index 4dd18a9204..7145bdc4fc 100644 --- a/public/language/hr/admin/menu.json +++ b/public/language/hr/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Odjava", "view-forum": "Pogledaj forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Nema rezultata ...", "search.search-forum": "Pretraži forum za <strong></strong>", "search.keep-typing": "Upiši više da vidiš rezultate ...", diff --git a/public/language/hr/error.json b/public/language/hr/error.json index 90fe6414a6..321c26e789 100644 --- a/public/language/hr/error.json +++ b/public/language/hr/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/hu/admin/menu.json b/public/language/hu/admin/menu.json index e2329570bb..b3340a00da 100644 --- a/public/language/hu/admin/menu.json +++ b/public/language/hu/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Kilépés", "view-forum": "Fórum megtekintése", - "search.placeholder": "Nyomd meg a "/"-t beállítások kereséséhez", + "search.placeholder": "Search settings", "search.no-results": "Nincs eredmény...", "search.search-forum": "<strong></strong> keresése a fórumon", "search.keep-typing": "Gépelj többet az eredményekért...", diff --git a/public/language/hu/error.json b/public/language/hu/error.json index bf6baecae4..bc9f9b1d6e 100644 --- a/public/language/hu/error.json +++ b/public/language/hu/error.json @@ -205,6 +205,8 @@ "no-connection": "Probléma van az internet kapcsolatoddal", "socket-reconnect-failed": "Nem lehet elérni a szervert. Kattints ide az újra próbáláshoz vagy várj egy kicsit", "plugin-not-whitelisted": "Ez a bővítmény nem telepíthető – csak olyan bővítmények telepíthetőek amiket a NodeBB Package Manager az ACP-n keresztül tud telepíteni", + "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", "topic-event-unrecognized": "Témakör esemény '%1' ismeretlen", "cant-set-child-as-parent": "Leszármazottat nem adhatsz meg szülő kategóriaként", "cant-set-self-as-parent": "Saját magát nem adhatod meg szülő kategóriaként", diff --git a/public/language/id/admin/menu.json b/public/language/id/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/id/admin/menu.json +++ b/public/language/id/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/id/error.json b/public/language/id/error.json index a7b5fbbb0b..0ed7fbbe05 100644 --- a/public/language/id/error.json +++ b/public/language/id/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/it/admin/menu.json b/public/language/it/admin/menu.json index 8851052e87..82b3085b89 100644 --- a/public/language/it/admin/menu.json +++ b/public/language/it/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Esci", "view-forum": "Vista Forum", - "search.placeholder": "Premi "/" per cercare le impostazioni", + "search.placeholder": "Impostazioni di ricerca", "search.no-results": "Niente risultati...", "search.search-forum": "Cerca nel forum per <strong></strong>", "search.keep-typing": "Scrivi altro per vedere risultati...", diff --git a/public/language/it/error.json b/public/language/it/error.json index c708efdc29..ed6895dc00 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -205,6 +205,8 @@ "no-connection": "Sembra ci sia un problema con la tua connessione internet", "socket-reconnect-failed": "Impossibile raggiungere il server al momento. Clicca qui per riprovare o riprova in un secondo momento", "plugin-not-whitelisted": "Impossibile installare il plug-in & solo i plugin nella whitelist del Gestione Pacchetti di NodeBB possono essere installati tramite ACP", + "plugins-set-in-configuration": "Non è possibile modificare lo stato dei plugin, poiché sono definiti in fase di esecuzione. (config.json, variabili ambientali o argomenti del terminale); modificare invece la configurazione.", + "theme-not-set-in-configuration": "Quando si definiscono i plugin attivi nella configurazione, la modifica dei temi richiede l'aggiunta del nuovo tema all'elenco dei plugin attivi prima di aggiornarlo nell'ACP", "topic-event-unrecognized": "Evento discussione '%1' non riconosciuto", "cant-set-child-as-parent": "Impossibile impostare figlio come categoria padre", "cant-set-self-as-parent": "Impossibile impostare se stessi come categoria padre", diff --git a/public/language/ja/admin/menu.json b/public/language/ja/admin/menu.json index 35eec8d76c..8769bc3143 100644 --- a/public/language/ja/admin/menu.json +++ b/public/language/ja/admin/menu.json @@ -76,7 +76,7 @@ "logout": "ログアウト", "view-forum": "フォーラムを表示", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "結果がありません...", "search.search-forum": "フォーラムで<strong></strong>を検索", "search.keep-typing": "結果を見るにはもっと入力してください...", diff --git a/public/language/ja/error.json b/public/language/ja/error.json index 18fd1a9476..86f0f7866f 100644 --- a/public/language/ja/error.json +++ b/public/language/ja/error.json @@ -205,6 +205,8 @@ "no-connection": "インターネット接続に問題があるようです", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/ko/admin/menu.json b/public/language/ko/admin/menu.json index b28b897736..f495308092 100644 --- a/public/language/ko/admin/menu.json +++ b/public/language/ko/admin/menu.json @@ -76,7 +76,7 @@ "logout": "로그아웃", "view-forum": "포럼 보기", - "search.placeholder": ""/"를 눌러 설정 검색", + "search.placeholder": "Search settings", "search.no-results": "검색 결과 없음...", "search.search-forum": "포럼에서 <strong></strong> 검색", "search.keep-typing": "검색 결과를 보기 위해 더 입력하세요...", diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 85fc58d653..f37a5a103d 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -205,6 +205,8 @@ "no-connection": "사용자의 인터넷 연결에 문제가 있는 것 같습니다.", "socket-reconnect-failed": "현재 서버에 접속할 수 없습니다. 여기를 눌러 다시 시도하거나 나중에 다시 시도해주세요.", "plugin-not-whitelisted": "플러그인을 설치할 수 없습니다. – ACP에서는 NodeBB 패키지 관리자에 의해 승인된 플러그인만 설치할 수 있습니다.", + "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", "topic-event-unrecognized": "화제 이벤트 '%1'를 인식할 수 없습니다.", "cant-set-child-as-parent": "하위 카테고리를 상위로 등록할 수 없습니다.", "cant-set-self-as-parent": "같은 카테고리를 상위로 등록할 수 없습니다.", diff --git a/public/language/lt/admin/menu.json b/public/language/lt/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/lt/admin/menu.json +++ b/public/language/lt/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/lt/error.json b/public/language/lt/error.json index 5bdbc128ae..75e9510ec5 100644 --- a/public/language/lt/error.json +++ b/public/language/lt/error.json @@ -205,6 +205,8 @@ "no-connection": "Panašu, jog yra problema su jūsų interneto prieiga", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/lv/admin/menu.json b/public/language/lv/admin/menu.json index c97b9b0cb3..5a56214054 100644 --- a/public/language/lv/admin/menu.json +++ b/public/language/lv/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Izlogoties", "view-forum": "Uz forumu", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Nav rezultātu...", "search.search-forum": "Forumā meklēt <strong></strong>", "search.keep-typing": "Rakstīt vairāk, lai redzētu rezultātus...", diff --git a/public/language/lv/error.json b/public/language/lv/error.json index 52a02104af..181d294341 100644 --- a/public/language/lv/error.json +++ b/public/language/lv/error.json @@ -205,6 +205,8 @@ "no-connection": "Šķiet, ka pastāv problēma ar Tavu interneta savienojumu", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/ms/admin/menu.json b/public/language/ms/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/ms/admin/menu.json +++ b/public/language/ms/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/ms/error.json b/public/language/ms/error.json index 480a7566ec..500af2859f 100644 --- a/public/language/ms/error.json +++ b/public/language/ms/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/nb/admin/menu.json b/public/language/nb/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/nb/admin/menu.json +++ b/public/language/nb/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/nb/error.json b/public/language/nb/error.json index 13d1248064..450515b027 100644 --- a/public/language/nb/error.json +++ b/public/language/nb/error.json @@ -205,6 +205,8 @@ "no-connection": "Det virker å være et problem med internett-tilgangen din", "socket-reconnect-failed": "Får ikke tilgang til serveren for øyeblikket. Klikk her for å prøve igjen, eller prøv igjen senere", "plugin-not-whitelisted": "Ute av stand til å installere tillegget – bare tillegg som er hvitelistet av NodeBB sin pakkebehandler kan bli installert via administratorkontrollpanelet", + "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", "topic-event-unrecognized": "Trådhendelse '%1' er ukjent", "cant-set-child-as-parent": "Kan ikke sette underkategori til hovedkategori", "cant-set-self-as-parent": "Kan ikke sette denne som hovedkategori", diff --git a/public/language/nl/admin/menu.json b/public/language/nl/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/nl/admin/menu.json +++ b/public/language/nl/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/nl/error.json b/public/language/nl/error.json index faf39d86de..ab9d7f2234 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -205,6 +205,8 @@ "no-connection": "Er lijkt een probleem te zijn met je internetverbinding", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Kan plugin niet installeren – alleen plugins toegestaan door de NodeBB Package Manager kunnen via de ACP geinstalleerd worden", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/pl/admin/menu.json b/public/language/pl/admin/menu.json index 55223f5f0e..03219f99fb 100644 --- a/public/language/pl/admin/menu.json +++ b/public/language/pl/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Wyloguj się", "view-forum": "Zobacz forum", - "search.placeholder": "Naciśnij "/" aby wyszukać ustawienia", + "search.placeholder": "Search settings", "search.no-results": "Brak wyników...", "search.search-forum": "Szukaj w forum <strong></strong>", "search.keep-typing": "Wpisz więcej, aby zobaczyć wyniki ...", diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 3f8622a3aa..8eb54a3270 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -205,6 +205,8 @@ "no-connection": "Sprawdź swoje połączenie z internetem", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/pt-BR/admin/menu.json b/public/language/pt-BR/admin/menu.json index 9e620cd716..e146ab8d61 100644 --- a/public/language/pt-BR/admin/menu.json +++ b/public/language/pt-BR/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Sair da Conta", "view-forum": "Ver Fórum", - "search.placeholder": "Pressione \"/\" para pesquisar por configurações", + "search.placeholder": "Search settings", "search.no-results": "Sem resultados...", "search.search-forum": "Pesquisar o fórum por <strong></strong>", "search.keep-typing": "Digite para ver mais resultados...", diff --git a/public/language/pt-BR/error.json b/public/language/pt-BR/error.json index 8ad70d8898..94f0fac0c3 100644 --- a/public/language/pt-BR/error.json +++ b/public/language/pt-BR/error.json @@ -205,6 +205,8 @@ "no-connection": "Parece haver um problema com a sua conexão com a internet", "socket-reconnect-failed": "Não foi possível acessar o servidor neste momento. Clique aqui para tentar novamente ou tente novamente mais tarde", "plugin-not-whitelisted": "Não foi possível instalar o plugin - apenas os plug-ins permitidos pelo NodeBB Package Manager podem ser instalados através do ACP", + "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", "topic-event-unrecognized": "Evento de tópico '%1' não reconhecido", "cant-set-child-as-parent": "Não é possível definir filho como categoria pai", "cant-set-self-as-parent": "Não é possível definir a si mesmo como categoria pai", diff --git a/public/language/pt-PT/admin/menu.json b/public/language/pt-PT/admin/menu.json index 925af96d95..35d3d4af31 100644 --- a/public/language/pt-PT/admin/menu.json +++ b/public/language/pt-PT/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Terminar sessão", "view-forum": "Ver Fórum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Sem resultados...", "search.search-forum": "Procurar no fórum por <strong></strong>", "search.keep-typing": "Digita mais para veres resultados...", diff --git a/public/language/pt-PT/error.json b/public/language/pt-PT/error.json index 12f5006cde..4099256361 100644 --- a/public/language/pt-PT/error.json +++ b/public/language/pt-PT/error.json @@ -205,6 +205,8 @@ "no-connection": "Parece haver um problema com a tua conexão à Internet", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/ro/admin/menu.json b/public/language/ro/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/ro/admin/menu.json +++ b/public/language/ro/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/ro/error.json b/public/language/ro/error.json index 1a2b97785c..e08f7396de 100644 --- a/public/language/ro/error.json +++ b/public/language/ro/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/ru/admin/menu.json b/public/language/ru/admin/menu.json index 76f895e641..3ec3e5ce5c 100644 --- a/public/language/ru/admin/menu.json +++ b/public/language/ru/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Выйти", "view-forum": "Перейти на форум", - "search.placeholder": "Введите "/" для поиска настроек", + "search.placeholder": "Search settings", "search.no-results": "Нет результата...", "search.search-forum": "Искать <strong></strong> на форуме", "search.keep-typing": "Наберите ещё что-нибудь, чтобы увидеть результат...", diff --git a/public/language/ru/error.json b/public/language/ru/error.json index 6f2ee6bd25..2cbdb2bc51 100644 --- a/public/language/ru/error.json +++ b/public/language/ru/error.json @@ -205,6 +205,8 @@ "no-connection": "Похоже, есть проблема с вашим подключением к Интернету", "socket-reconnect-failed": "В настоящее время невозможно связаться с сервером. Нажмите здесь, чтобы повторить попытку, или сделайте это позднее", "plugin-not-whitelisted": "Не удалось установить плагин – только плагины, внесенные в белый список диспетчером пакетов NodeBB, могут быть установлены через ACP", + "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", "topic-event-unrecognized": "Событие темы \"%1\" нераспознанно", "cant-set-child-as-parent": "Невозможно установить дочернюю категорию в качестве родительской", "cant-set-self-as-parent": "Нельзя установить категорию в качестве родительской для самой себя", diff --git a/public/language/rw/admin/menu.json b/public/language/rw/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/rw/admin/menu.json +++ b/public/language/rw/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/rw/error.json b/public/language/rw/error.json index 0383a7caa8..738b57aa25 100644 --- a/public/language/rw/error.json +++ b/public/language/rw/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/sc/admin/menu.json b/public/language/sc/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/sc/admin/menu.json +++ b/public/language/sc/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/sc/error.json b/public/language/sc/error.json index 4769c3837f..5c9c3c1078 100644 --- a/public/language/sc/error.json +++ b/public/language/sc/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/sk/admin/menu.json b/public/language/sk/admin/menu.json index 12aa2962be..7c42194fa7 100644 --- a/public/language/sk/admin/menu.json +++ b/public/language/sk/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Odhlásiť", "view-forum": "Zobraziť fórum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Žiadne výsledky...", "search.search-forum": "Prehľadať fórum pre <strong></strong>", "search.keep-typing": "Píšte viac pre zobrazenie výsledkov...", diff --git a/public/language/sk/error.json b/public/language/sk/error.json index dac867e0e9..68e637b8dc 100644 --- a/public/language/sk/error.json +++ b/public/language/sk/error.json @@ -205,6 +205,8 @@ "no-connection": "Zdá sa, že máte problém s pripojením k internetu", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/sl/admin/menu.json b/public/language/sl/admin/menu.json index 14b3e8c210..49412fc084 100644 --- a/public/language/sl/admin/menu.json +++ b/public/language/sl/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Odjavi se", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Ni rezultatov...", "search.search-forum": "Na forumu poišči <strong></strong>", "search.keep-typing": "Vnesite več, da vidite rezultate...", diff --git a/public/language/sl/error.json b/public/language/sl/error.json index be44a0804f..89ba3cc0c9 100644 --- a/public/language/sl/error.json +++ b/public/language/sl/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/sq-AL/admin/menu.json b/public/language/sq-AL/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/sq-AL/admin/menu.json +++ b/public/language/sq-AL/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/sq-AL/error.json b/public/language/sq-AL/error.json index 40b463ef66..5b476ba971 100644 --- a/public/language/sq-AL/error.json +++ b/public/language/sq-AL/error.json @@ -205,6 +205,8 @@ "no-connection": "Duket se ka një problem me lidhjen tuaj të internetit", "socket-reconnect-failed": "Nuk mund të arrihet serveri në këtë moment. Kliko këtu për të provuar përsëri, ose provo më vonë", "plugin-not-whitelisted": "Nuk mund të instalohet plugin – vetëm shtojcat e listuara në listën e bardhë nga Menaxheri i Paketave të NodeBB mund të instalohen nëpërmjet ACP", + "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", "topic-event-unrecognized": "Ngjarja e temës '%1' nuk njihet", "cant-set-child-as-parent": "Nuk mund të vendoset si kategori mëmë", "cant-set-self-as-parent": "Nuk mund të vendosësh veten si kategori mëmë", diff --git a/public/language/sr/admin/menu.json b/public/language/sr/admin/menu.json index 1b369a0fcd..02074b61c0 100644 --- a/public/language/sr/admin/menu.json +++ b/public/language/sr/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Izloguj se", "view-forum": "Pogledaj Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Nema rezultata...", "search.search-forum": "Pretraži forum za <strong></strong>", "search.keep-typing": "Ukucaj više da vidiš rezultate", diff --git a/public/language/sr/error.json b/public/language/sr/error.json index 84ac6acf1c..0e27c0d5c0 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -205,6 +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", "topic-event-unrecognized": "Догађај из теме „%1“ није препознат", "cant-set-child-as-parent": "Није могуће поставити подређену категорију као надређену", "cant-set-self-as-parent": "Није могуће поставити себе као надређену категорију", diff --git a/public/language/sv/admin/menu.json b/public/language/sv/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/sv/admin/menu.json +++ b/public/language/sv/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/sv/error.json b/public/language/sv/error.json index d25df6d72f..1913ad41df 100644 --- a/public/language/sv/error.json +++ b/public/language/sv/error.json @@ -205,6 +205,8 @@ "no-connection": "Det verkar vara något problem med din internetanslutning", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/th/admin/menu.json b/public/language/th/admin/menu.json index 5b22fbeb36..379e0b2687 100644 --- a/public/language/th/admin/menu.json +++ b/public/language/th/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Log out", "view-forum": "View Forum", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "No results...", "search.search-forum": "Search the forum for <strong></strong>", "search.keep-typing": "Type more to see results...", diff --git a/public/language/th/error.json b/public/language/th/error.json index 9f2464219a..5664227505 100644 --- a/public/language/th/error.json +++ b/public/language/th/error.json @@ -205,6 +205,8 @@ "no-connection": "There seems to be a problem with your internet connection", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/tr/admin/menu.json b/public/language/tr/admin/menu.json index 821acc2ed1..1976645b73 100644 --- a/public/language/tr/admin/menu.json +++ b/public/language/tr/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Çıkış", "view-forum": "Forumu Görüntüle", - "search.placeholder": "Ayarları aramak için "/" işaretine tıklayın", + "search.placeholder": "Search settings", "search.no-results": "Sonuç yok...", "search.search-forum": "Forumda ara: <strong></strong>", "search.keep-typing": "Sonuçları görmek için daha fazla yazın...", diff --git a/public/language/tr/error.json b/public/language/tr/error.json index 554fb69d71..3d2d608cde 100644 --- a/public/language/tr/error.json +++ b/public/language/tr/error.json @@ -205,6 +205,8 @@ "no-connection": "İnternet bağlantınızda sorun var gibi görünüyor", "socket-reconnect-failed": "Şu anda sunucuya ulaşılamıyor. Tekrar denemek için buraya tıklayın, veya daha sonra tekrar deneyin.", "plugin-not-whitelisted": "– eklentisi yüklenemedi, sadece NodeBB Paket Yöneticisi tarafından onaylanan eklentiler kontrol panelinden kurulabilir", + "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", "topic-event-unrecognized": "Konu aktivitesi '%1' tanımlanamadı", "cant-set-child-as-parent": "Alt-kategoriyi üst kategori olarak ayarlayamazsınız!", "cant-set-self-as-parent": "Kendisini üst kategori olarak ayarlayamazsınız!", diff --git a/public/language/uk/admin/menu.json b/public/language/uk/admin/menu.json index 7dd7c875fb..8a44556a55 100644 --- a/public/language/uk/admin/menu.json +++ b/public/language/uk/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Вийти", "view-forum": "Переглянути форум", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "Без результатів...", "search.search-forum": "Шукати на форумі <strong></strong>", "search.keep-typing": "Для результатів, надрукуйте ще...", diff --git a/public/language/uk/error.json b/public/language/uk/error.json index 12e094a99c..b20d7955ae 100644 --- a/public/language/uk/error.json +++ b/public/language/uk/error.json @@ -205,6 +205,8 @@ "no-connection": "Схоже, виникла проблема з вашим Інтернет-з'єднанням", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/language/vi/admin/menu.json b/public/language/vi/admin/menu.json index d44cc4d246..d1818e0b17 100644 --- a/public/language/vi/admin/menu.json +++ b/public/language/vi/admin/menu.json @@ -76,7 +76,7 @@ "logout": "Đăng xuất", "view-forum": "Xem diễn đàn", - "search.placeholder": "Nhấn "/" để tìm kiếm cài đặt", + "search.placeholder": "Search settings", "search.no-results": "Ko có kết quả...", "search.search-forum": "Tìm kiếm diễn đàn cho <strong></strong>", "search.keep-typing": "Nhập thêm để xem kết quả...", diff --git a/public/language/vi/error.json b/public/language/vi/error.json index abf655a807..e267375515 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -205,6 +205,8 @@ "no-connection": "Kết nối internet của bạn có vấn đề.", "socket-reconnect-failed": "Không thể truy cập máy chủ vào lúc này. Nhấp vào đây để thử lại hoặc thử lại sau", "plugin-not-whitelisted": "Không thể cài đặt plugin – chỉ những plugin được Trình quản lý gói NodeBB đưa vào danh sách trắng mới có thể được cài đặt qua ACP", + "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", "topic-event-unrecognized": "Sự kiện chủ đề '%1' không được công nhận", "cant-set-child-as-parent": "Không thể đặt con làm chuyên mục chính", "cant-set-self-as-parent": "Không thể tự đặt mình là chuyên mục chính", diff --git a/public/language/zh-CN/admin/menu.json b/public/language/zh-CN/admin/menu.json index 450f7662bf..8857255b41 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.placeholder": "Search settings", "search.no-results": "没有可用结果…", "search.search-forum": "搜索论坛为<strong></strong>", "search.keep-typing": "输入更多以查看结果...", diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json index 82a319e808..1aacee0eff 100644 --- a/public/language/zh-CN/error.json +++ b/public/language/zh-CN/error.json @@ -205,6 +205,8 @@ "no-connection": "您的网络连接似乎存在问题", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "无法安装插件 – 只有被NodeBB包管理器列入白名单的插件才能通过ACP安装。", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "无法将子版块设置为父版块", "cant-set-self-as-parent": "无法将自身设置为父版块", diff --git a/public/language/zh-TW/admin/menu.json b/public/language/zh-TW/admin/menu.json index 22213c257f..d8804bbfd0 100644 --- a/public/language/zh-TW/admin/menu.json +++ b/public/language/zh-TW/admin/menu.json @@ -76,7 +76,7 @@ "logout": "登出", "view-forum": "檢視論壇", - "search.placeholder": "Press "/" to search for settings", + "search.placeholder": "Search settings", "search.no-results": "沒有可用結果…", "search.search-forum": "搜索論壇為<strong></strong>", "search.keep-typing": "輸入更多以查看結果...", diff --git a/public/language/zh-TW/error.json b/public/language/zh-TW/error.json index b4c7d5ac4f..33d156bcc7 100644 --- a/public/language/zh-TW/error.json +++ b/public/language/zh-TW/error.json @@ -205,6 +205,8 @@ "no-connection": "您的網路連線似乎有問題", "socket-reconnect-failed": "Unable to reach the server at this time. Click here to try again, or try again later", "plugin-not-whitelisted": "Unable to install plugin – only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP", + "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", "topic-event-unrecognized": "Topic event '%1' unrecognized", "cant-set-child-as-parent": "Can't set child as parent category", "cant-set-self-as-parent": "Can't set self as parent category", diff --git a/public/less/admin/header.less b/public/less/admin/header.less index bea1446f42..63d8e8bcdb 100644 --- a/public/less/admin/header.less +++ b/public/less/admin/header.less @@ -38,7 +38,7 @@ .alert { font-size: 14px; - margin-bottom: 0; + margin-bottom: 5px; &.alert-info { background-color: #eee; @@ -86,6 +86,36 @@ } } + .dropdown:not(.open) { + &:before { + content: '/'; + border: 1px solid @gray; + border-radius: 5px; + padding: 0px 6px; + font-size: 12px; + font-weight: 600; + pointer-events: none; + + position: absolute; + top: 10px; + left: 1em; + } + + &:after { + content: attr(data-text); + position: absolute; + top: 10px; + left: 3em; + font-size: small; + font-weight: 600; + pointer-events: none; + } + + input { + color: transparent; + } + } + .search-match { font-weight: 700; color: black; diff --git a/public/less/admin/manage/categories.less b/public/less/admin/manage/categories.less index b925fd6423..8350b574c8 100644 --- a/public/less/admin/manage/categories.less +++ b/public/less/admin/manage/categories.less @@ -22,7 +22,7 @@ div.categories { } } > li { - margin: @acp-base-line 0; + margin: 16px 0 24px 0; &.placeholder { border: 1px dashed #2196F3; @@ -37,7 +37,7 @@ div.categories { li { min-height: 0; display: inline; - margin: 0 @acp-margin 0 0; + margin: 0 16px 0 0; left: 0; } } @@ -93,7 +93,7 @@ div.categories { .category-header { margin-top: 0; - margin-bottom: @acp-base-line; + margin-bottom: 8px; } .description { diff --git a/public/less/admin/vars.less b/public/less/admin/vars.less index e888af0b96..dda7ed1fe8 100644 --- a/public/less/admin/vars.less +++ b/public/less/admin/vars.less @@ -1,6 +1,3 @@ -@acp-base-line: 8px; -@acp-line-height: @acp-base-line * 6; -@acp-margin: @acp-base-line * 2; // system font family // based on those in [bootstrap@5.0.0-alpha1](https://github.com/twbs/bootstrap/blob/b531bda07cbea2e124194aefe3b8597b3ac2578e/scss/_variables.scss#L386) // and [wordpress admin](https://core.trac.wordpress.org/browser/trunk/src/wp-admin/css/common.css?rev=47835#L220) diff --git a/public/src/admin/extend/plugins.js b/public/src/admin/extend/plugins.js index 142323c870..7067133826 100644 --- a/public/src/admin/extend/plugins.js +++ b/public/src/admin/extend/plugins.js @@ -162,6 +162,15 @@ define('admin/extend/plugins', [ const pluginId = $(this).attr('data-plugin-id'); $(this).toggleClass('hide', pluginId && pluginId.indexOf(term) === -1); }); + + const tabEls = document.querySelectorAll('.plugins .tab-pane'); + tabEls.forEach((tabEl) => { + const remaining = tabEl.querySelectorAll('li:not(.hide)').length; + const noticeEl = tabEl.querySelector('.no-plugins'); + if (noticeEl) { + noticeEl.classList.toggle('hide', remaining !== 0); + } + }); }); $('#plugin-submit-usage').on('click', function () { diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index 521716c8e4..cae9f782ca 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -42,7 +42,7 @@ define('admin/manage/categories', [ $('.categories').on('click', '.toggle', function () { const el = $(this); - el.find('i').toggleClass('fa-minus').toggleClass('fa-plus'); + el.find('i').toggleClass('fa-chevron-down').toggleClass('fa-chevron-right'); el.closest('[data-cid]').find('> ul[data-cid]').toggleClass('hidden'); }); @@ -84,7 +84,7 @@ define('admin/manage/categories', [ function toggleAll(expand) { const el = $('.categories .toggle'); - el.find('i').toggleClass('fa-minus', expand).toggleClass('fa-plus', !expand); + el.find('i').toggleClass('fa-chevron-down', expand).toggleClass('fa-chevron-right', !expand); el.closest('[data-cid]').find('> ul[data-cid]').toggleClass('hidden', !expand); } }; @@ -207,6 +207,20 @@ define('admin/manage/categories', [ if (isCategoryUpdate) { modified[cid].parentCid = newCategoryId; + + // Show/hide expand buttons after drag completion + const oldParentCid = parseInt(e.from.getAttribute('data-cid'), 10); + const newParentCid = parseInt(e.to.getAttribute('data-cid'), 10); + if (oldParentCid !== newParentCid) { + document.querySelector(`.categories li[data-cid="${newParentCid}"] .toggle`).classList.toggle('hide', false); + + const children = document.querySelectorAll(`.categories li[data-cid="${oldParentCid}"] ul[data-cid] li[data-cid]`); + if (!children.length) { + document.querySelector(`.categories li[data-cid="${oldParentCid}"] .toggle`).classList.toggle('hide', true); + } + + e.item.dataset.parentCid = newParentCid; + } } newCategoryId = -1; @@ -251,6 +265,12 @@ define('admin/manage/categories', [ }, function (html) { container.append(html); + // Disable expand toggle + if (!categories.length) { + const toggleEl = container.get(0).querySelector('.toggle'); + toggleEl.classList.toggle('hide', true); + } + // Handle and children categories in this level have for (let x = 0, numCategories = categories.length; x < numCategories; x += 1) { renderList(categories[x].children, $('li[data-cid="' + categories[x].cid + '"]'), categories[x]); diff --git a/public/src/admin/modules/search.js b/public/src/admin/modules/search.js index 20566ede27..ddf0eedaf7 100644 --- a/public/src/admin/modules/search.js +++ b/public/src/admin/modules/search.js @@ -63,6 +63,7 @@ define('admin/modules/search', ['mousetrap', 'alerts'], function (mousetrap, ale const dropdown = $('#acp-search .dropdown'); const menu = $('#acp-search .dropdown-menu'); const input = $('#acp-search input'); + const placeholderText = dropdown.attr('data-text'); if (!config.searchEnabled) { menu.addClass('search-disabled'); @@ -73,17 +74,16 @@ define('admin/modules/search', ['mousetrap', 'alerts'], function (mousetrap, ale }); $('#acp-search').parents('form').on('submit', function (ev) { - let selected = menu.find('li.result > a.focus').attr('href'); - if (!selected.length) { - selected = menu.find('li.result > a').first().attr('href'); - } - const href = selected || config.relative_path + '/search?in=titlesposts&term=' + escape(input.val()); + const query = input.val(); + const selected = menu.get(0).querySelector('li.result > a.focus') || menu.get(0).querySelector('li.result > a'); + const href = selected ? selected.getAttribute('href') : config.relative_path + '/search?in=titlesposts&term=' + escape(query); ajaxify.go(href.replace(/^\//, '')); setTimeout(function () { dropdown.removeClass('open'); input.blur(); + dropdown.attr('data-text', query || placeholderText); }, 150); ev.preventDefault(); diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index f35e85e17f..1ae52a9cb1 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -311,11 +311,17 @@ ajaxify.widgets = { render: render }; app.processPage(); }; - ajaxify.parseData = function () { - const dataEl = $('#ajaxify-data'); - if (dataEl.length) { - ajaxify.data = JSON.parse(dataEl.text()); - dataEl.remove(); + ajaxify.parseData = () => { + const dataEl = document.getElementById('ajaxify-data'); + if (dataEl) { + try { + ajaxify.data = JSON.parse(dataEl.textContent); + } catch (e) { + console.error(e); + ajaxify.data = {}; + } finally { + dataEl.remove(); + } } }; diff --git a/public/src/app.js b/public/src/app.js index 5768124ca8..6560b911c1 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -23,17 +23,16 @@ app.isFocused = true; app.currentRoom = null; app.widgets = {}; app.flags = {}; - app.onDomReady = function () { $(document).ready(async function () { if (app.user.timeagoCode && app.user.timeagoCode !== 'en') { await import(/* webpackChunkName: "timeago/[request]" */ 'timeago/locales/jquery.timeago.' + app.user.timeagoCode); } - ajaxify.parseData(); app.load(); }); }; +document.addEventListener('DOMContentLoaded', ajaxify.parseData); (function () { let appLoaded = false; diff --git a/renovate.json b/renovate.json index aa54fe6076..e85c752352 100644 --- a/renovate.json +++ b/renovate.json @@ -2,6 +2,7 @@ "extends": [ "config:base" ], + "baseBranches": ["develop"], "labels": ["dependencies"], "packageRules": [ { diff --git a/src/cli/index.js b/src/cli/index.js index b8b37ce4ea..5c3c01fd88 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -62,7 +62,7 @@ const nconf = require('nconf'); const { program } = require('commander'); const yargs = require('yargs'); -const pkg = require('../../package.json'); +const pkg = require('../../install/package.json'); const file = require('../file'); const prestart = require('../prestart'); diff --git a/src/cli/manage.js b/src/cli/manage.js index e8c565c87d..24052e21f6 100644 --- a/src/cli/manage.js +++ b/src/cli/manage.js @@ -4,6 +4,7 @@ const winston = require('winston'); const childProcess = require('child_process'); const CliGraph = require('cli-graph'); const chalk = require('chalk'); +const nconf = require('nconf'); const build = require('../meta/build'); const db = require('../database'); @@ -38,6 +39,10 @@ async function activate(plugin) { winston.info('Plugin `%s` already active', plugin); process.exit(0); } + if (nconf.get('plugins:active')) { + winston.error('Cannot activate plugins while plugin state configuration is set, please change your active configuration (config.json, environmental variables or terminal arguments) instead'); + process.exit(1); + } const numPlugins = await db.sortedSetCard('plugins:active'); winston.info('Activating plugin `%s`', plugin); await db.sortedSetAdd('plugins:active', numPlugins, plugin); @@ -57,8 +62,7 @@ async function listPlugins() { await db.init(); const installed = await plugins.showInstalled(); const installedList = installed.map(plugin => plugin.name); - const active = await db.getSortedSetRange('plugins:active', 0, -1); - + const active = await plugins.getActive(); // Merge the two sets, defer to plugins in `installed` if already present const combined = installed.concat(active.reduce((memo, cur) => { if (!installedList.includes(cur)) { @@ -108,13 +112,12 @@ async function info() { const hash = childProcess.execSync('git rev-parse HEAD'); console.log(` git hash: ${hash}`); - const config = require('../../config.json'); - console.log(` database: ${config.database}`); + console.log(` database: ${nconf.get('database')}`); await db.init(); const info = await db.info(db.client); - switch (config.database) { + switch (nconf.get('database')) { case 'redis': console.log(` version: ${info.redis_version}`); console.log(` disk sync: ${info.rdb_last_bgsave_status}`); @@ -124,6 +127,10 @@ async function info() { console.log(` version: ${info.version}`); console.log(` engine: ${info.storageEngine}`); break; + case 'postgres': + console.log(` version: ${info.version}`); + console.log(` uptime: ${info.uptime}`); + break; } const analyticsData = await analytics.getHourlyStatsForSet('analytics:pageviews', Date.now(), 24); diff --git a/src/cli/reset.js b/src/cli/reset.js index b026a22816..2de33244bc 100644 --- a/src/cli/reset.js +++ b/src/cli/reset.js @@ -4,6 +4,7 @@ const path = require('path'); const winston = require('winston'); const fs = require('fs'); const chalk = require('chalk'); +const nconf = require('nconf'); const db = require('../database'); const events = require('../events'); @@ -118,6 +119,10 @@ async function resetThemeTo(themeId) { async function resetPlugin(pluginId) { try { + if (nconf.get('plugins:active')) { + winston.error('Cannot reset plugins while plugin state is set in the configuration (config.json, environmental variables or terminal arguments), please modify the configuration instead'); + process.exit(1); + } const isActive = await db.isSortedSetMember('plugins:active', pluginId); if (isActive) { await db.sortedSetRemove('plugins:active', pluginId); @@ -137,6 +142,10 @@ async function resetPlugin(pluginId) { } async function resetPlugins() { + if (nconf.get('plugins:active')) { + winston.error('Cannot reset plugins while plugin state is set in the configuration (config.json, environmental variables or terminal arguments), please modify the configuration instead'); + process.exit(1); + } await db.delete('plugins:active'); winston.info('[reset] All Plugins De-activated'); } diff --git a/src/cli/upgrade-plugins.js b/src/cli/upgrade-plugins.js index 9a250ee5c8..e789993388 100644 --- a/src/cli/upgrade-plugins.js +++ b/src/cli/upgrade-plugins.js @@ -125,7 +125,7 @@ async function upgradePlugins() { if (found && found.length) { process.stdout.write(`\n\nA total of ${chalk.bold(String(found.length))} package(s) can be upgraded:\n\n`); found.forEach((suggestObj) => { - process.stdout.write(`${chalk.yellow(' * ') + suggestObj.name} ('${chalk.yellow(suggestObj.current)}' -> '${chalk.green(suggestObj.suggested)}')\n'`); + process.stdout.write(`${chalk.yellow(' * ') + suggestObj.name} (${chalk.yellow(suggestObj.current)} -> ${chalk.green(suggestObj.suggested)})\n`); }); } else { console.log(chalk.green('\nAll packages up-to-date!')); diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js index e151f7c731..526175a838 100644 --- a/src/controllers/accounts/helpers.js +++ b/src/controllers/accounts/helpers.js @@ -28,7 +28,7 @@ helpers.getUserDataByUserSlug = async function (userslug, callerUID, query = {}) } await parseAboutMe(results.userData); - const { userData } = results; + let { userData } = results; const { userSettings } = results; const { isAdmin } = results; const { isGlobalModerator } = results; @@ -41,17 +41,8 @@ helpers.getUserDataByUserSlug = async function (userslug, callerUID, query = {}) userData.birthday ? Math.floor((new Date().getTime() - new Date(userData.birthday).getTime()) / 31536000000) : 0 ); - userData.emailClass = 'hide'; - - if (!results.canEdit && (!userSettings.showemail || meta.config.hideEmail)) { - userData.email = ''; - } else if (!userSettings.showemail) { - userData.emailClass = ''; - } - - if (!results.canEdit && (!userSettings.showfullname || meta.config.hideFullname)) { - userData.fullname = ''; - } + userData = await user.hidePrivateData(userData, callerUID); + userData.emailClass = userSettings.showemail ? 'hide' : ''; if (isAdmin || isSelf || (canViewInfo && !results.isTargetAdmin)) { userData.ips = results.ips; diff --git a/src/controllers/admin/plugins.js b/src/controllers/admin/plugins.js index eca548af72..a0b7457f01 100644 --- a/src/controllers/admin/plugins.js +++ b/src/controllers/admin/plugins.js @@ -35,6 +35,7 @@ pluginsController.get = async function (req, res) { installedCount: installedPlugins.length, activeCount: activePlugins.length, inactiveCount: Math.max(0, installedPlugins.length - activePlugins.length), + canChangeState: !nconf.get('plugins:active'), upgradeCount: compatible.reduce((count, current) => { if (current.installed && current.outdated) { count += 1; diff --git a/src/controllers/user.js b/src/controllers/user.js index 9e038ea2c6..08772117a1 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -3,7 +3,6 @@ const path = require('path'); const user = require('../user'); -const meta = require('../meta'); const privileges = require('../privileges'); const accountHelpers = require('./accounts/helpers'); @@ -68,17 +67,13 @@ userController.getUserDataByUID = async function (callerUid, uid) { if (!canView) { throw new Error('[[error:no-privileges]]'); } - const [userData, settings] = await Promise.all([ - user.getUserData(uid), - user.getSettings(uid), - ]); + let userData = await user.getUserData(uid); if (!userData) { throw new Error('[[error:no-user]]'); } - userData.email = settings.showemail && !meta.config.hideEmail ? userData.email : undefined; - userData.fullname = settings.showfullname && !meta.config.hideFullname ? userData.fullname : undefined; + userData = await user.hidePrivateData(userData, callerUid); return userData; }; diff --git a/src/meta/build.js b/src/meta/build.js index eae68b4d12..0647cc7e0d 100644 --- a/src/meta/build.js +++ b/src/meta/build.js @@ -199,9 +199,9 @@ exports.webpack = async function (options) { const webpack = require('webpack'); const fs = require('fs'); const util = require('util'); - const db = require('../database'); + const plugins = require('../plugins/data'); - const activePlugins = await db.getSortedSetRange('plugins:active', 0, -1); + const activePlugins = await plugins.getActive(); if (!activePlugins.includes('nodebb-plugin-composer-default')) { activePlugins.push('nodebb-plugin-composer-default'); } diff --git a/src/meta/templates.js b/src/meta/templates.js index e801b79e44..89a68080fa 100644 --- a/src/meta/templates.js +++ b/src/meta/templates.js @@ -15,7 +15,6 @@ const Benchpress = require('benchpressjs'); const plugins = require('../plugins'); const file = require('../file'); -const db = require('../database'); const { themeNamePattern, paths } = require('../constants'); const viewsPath = nconf.get('views_dir'); @@ -119,7 +118,7 @@ async function compile() { await _rimraf(viewsPath); await mkdirp(viewsPath); - let files = await db.getSortedSetRange('plugins:active', 0, -1); + let files = await plugins.getActive(); files = await getTemplateDirs(files); files = await getTemplateFiles(files); diff --git a/src/meta/themes.js b/src/meta/themes.js index bed7249283..d4d3f58f45 100644 --- a/src/meta/themes.js +++ b/src/meta/themes.js @@ -89,6 +89,10 @@ Themes.set = async (data) => { switch (data.type) { case 'local': { const current = await Meta.configs.get('theme:id'); + await db.sortedSetRemove('plugins:active', current); + const numPlugins = await db.sortedSetCard('plugins:active'); + await db.sortedSetAdd('plugins:active', numPlugins, data.id); + if (current !== data.id) { const pathToThemeJson = path.join(nconf.get('themes_path'), data.id, 'theme.json'); if (!pathToThemeJson.startsWith(nconf.get('themes_path'))) { @@ -97,10 +101,17 @@ Themes.set = async (data) => { let config = await fs.promises.readFile(pathToThemeJson, 'utf8'); config = JSON.parse(config); + const activePluginsConfig = nconf.get('plugins:active'); + if (!activePluginsConfig) { + await db.sortedSetRemove('plugins:active', current); + const numPlugins = await db.sortedSetCard('plugins:active'); + await db.sortedSetAdd('plugins:active', numPlugins, data.id); + } else if (!activePluginsConfig.includes(data.id)) { + // This prevents changing theme when configuration doesn't include it, but allows it otherwise + winston.error('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'); + throw new Error('[[error:theme-not-set-in-configuration]]'); + } - await db.sortedSetRemove('plugins:active', current); - const numPlugins = await db.sortedSetCard('plugins:active'); - await db.sortedSetAdd('plugins:active', numPlugins, data.id); // Re-set the themes path (for when NodeBB is reloaded) Themes.setPath(config); diff --git a/src/plugins/data.js b/src/plugins/data.js index ad125fda72..9f95703217 100644 --- a/src/plugins/data.js +++ b/src/plugins/data.js @@ -4,6 +4,7 @@ const fs = require('fs'); const path = require('path'); const winston = require('winston'); const _ = require('lodash'); +const nconf = require('nconf'); const db = require('../database'); const file = require('../file'); @@ -13,11 +14,19 @@ const Data = module.exports; const basePath = path.join(__dirname, '../../'); +// to get this functionality use `plugins.getActive()` from `src/plugins/install.js` instead +// this method duplicates that one, because requiring that file here would have side effects +async function getActiveIds() { + if (nconf.get('plugins:active')) { + return nconf.get('plugins:active'); + } + return await db.getSortedSetRange('plugins:active', 0, -1); +} + Data.getPluginPaths = async function () { - const plugins = await db.getSortedSetRange('plugins:active', 0, -1); + const plugins = await getActiveIds(); const pluginPaths = plugins.filter(plugin => plugin && typeof plugin === 'string') .map(plugin => path.join(paths.nodeModules, plugin)); - const exists = await Promise.all(pluginPaths.map(file.exists)); exists.forEach((exists, i) => { if (!exists) { @@ -96,7 +105,6 @@ Data.getStaticDirectories = async function (pluginData) { route}. Path must adhere to: ${validMappedPath.toString()}`); return; } - const dirPath = await resolveModulePath(pluginData.path, pluginData.staticDirs[route]); try { const stats = await fs.promises.stat(dirPath); diff --git a/src/plugins/install.js b/src/plugins/install.js index 05aca08e89..3784df09a0 100644 --- a/src/plugins/install.js +++ b/src/plugins/install.js @@ -56,6 +56,10 @@ module.exports = function (Plugins) { } Plugins.toggleActive = async function (id) { + if (nconf.get('plugins:active')) { + winston.error('Cannot activate plugins while plugin state is set in the configuration (config.json, environmental variables or terminal arguments), please modify the configuration instead'); + throw new Error('[[error:plugins-set-in-configuration]]'); + } const isActive = await Plugins.isActive(id); if (isActive) { await db.sortedSetRemove('plugins:active', id); @@ -144,10 +148,16 @@ module.exports = function (Plugins) { }; Plugins.isActive = async function (id) { + if (nconf.get('plugins:active')) { + return nconf.get('plugins:active').includes(id); + } return await db.isSortedSetMember('plugins:active', id); }; Plugins.getActive = async function () { + if (nconf.get('plugins:active')) { + return nconf.get('plugins:active'); + } return await db.getSortedSetRange('plugins:active', 0, -1); }; diff --git a/src/social.js b/src/social.js index b4cb54ae22..c95f2cc3ac 100644 --- a/src/social.js +++ b/src/social.js @@ -41,12 +41,12 @@ social.getActivePostSharing = async function () { }; social.setActivePostSharingNetworks = async function (networkIDs) { + social.postSharing = null; await db.delete('social:posts.activated'); if (!networkIDs.length) { return; } await db.setAdd('social:posts.activated', networkIDs); - social.postSharing = null; }; require('./promisify')(social); diff --git a/src/socket.io/admin/plugins.js b/src/socket.io/admin/plugins.js index c2d3f2ff13..46d77c9c1a 100644 --- a/src/socket.io/admin/plugins.js +++ b/src/socket.io/admin/plugins.js @@ -1,5 +1,7 @@ 'use strict'; +const nconf = require('nconf'); + const plugins = require('../../plugins'); const events = require('../../events'); const db = require('../../database'); @@ -35,6 +37,9 @@ Plugins.getActive = async function () { }; Plugins.orderActivePlugins = async function (socket, data) { + if (nconf.get('plugins:active')) { + throw new Error('[[error:plugins-set-in-configuration]]'); + } data = data.filter(plugin => plugin && plugin.name); await Promise.all(data.map(plugin => db.sortedSetAdd('plugins:active', plugin.order || 0, plugin.name))); }; diff --git a/src/upgrade.js b/src/upgrade.js index 829a338513..edea5a51ff 100644 --- a/src/upgrade.js +++ b/src/upgrade.js @@ -8,10 +8,10 @@ const readline = require('readline'); const winston = require('winston'); const chalk = require('chalk'); +const plugins = require('./plugins'); const db = require('./database'); const file = require('./file'); const { paths } = require('./constants'); - /* * Need to write an upgrade script for NodeBB? Cool. * @@ -61,8 +61,8 @@ Upgrade.getAll = async function () { Upgrade.appendPluginScripts = async function (files) { // Find all active plugins - const plugins = await db.getSortedSetRange('plugins:active', 0, -1); - plugins.forEach((plugin) => { + const activePlugins = await plugins.getActive(); + activePlugins.forEach((plugin) => { const configPath = path.join(paths.nodeModules, plugin, 'plugin.json'); try { const pluginConfig = require(configPath); diff --git a/src/user/admin.js b/src/user/admin.js index 209b864d13..f67daae511 100644 --- a/src/user/admin.js +++ b/src/user/admin.js @@ -50,19 +50,33 @@ module.exports = function (User) { User.exportUsersCSV = async function () { winston.verbose('[user/exportUsersCSV] Exporting User CSV data'); - const data = await plugins.hooks.fire('filter:user.csvFields', { fields: ['email', 'username', 'uid'] }); + const { fields, showIps } = await plugins.hooks.fire('filter:user.csvFields', { + fields: ['email', 'username', 'uid'], + showIps: true, + }); const fd = await fs.promises.open( path.join(baseDir, 'build/export', 'users.csv'), 'w' ); - fs.promises.appendFile(fd, `${data.fields.join(',')},ip\n`); + fs.promises.appendFile(fd, `${fields.join(',')}${showIps ? ',ip' : ''}\n`); await batch.processSortedSet('users:joindate', async (uids) => { - const usersData = await User.getUsersFields(uids, data.fields.slice()); - const ips = await Promise.all(uids.map(uid => db.getSortedSetRevRange(`uid:${uid}:ip`, 0, -1))); + const usersData = await User.getUsersFields(uids, fields.slice()); + let userIPs = ''; + let ips = []; + + if (showIps) { + ips = await Promise.all(uids.map(uid => db.getSortedSetRevRange(`uid:${uid}:ip`, 0, -1))); + } + let line = ''; usersData.forEach((user, index) => { - const userIPs = ips[index] ? ips[index].join(',') : ''; - line += `${data.fields.map(field => user[field]).join(',')},"${userIPs}"\n`; + line += `${fields.map(field => user[field]).join(',')}`; + if (showIps) { + userIPs = ips[index] ? ips[index].join(',') : ''; + line += `,"${userIPs}"\n`; + } else { + line += '\n'; + } }); await fs.promises.appendFile(fd, line); diff --git a/src/user/data.js b/src/user/data.js index c1e218613f..6c46268e81 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -145,25 +145,35 @@ module.exports = function (User) { return await User.getUsersFields(uids, []); }; - User.hidePrivateData = async function (userData, callerUID) { - const _userData = { ...userData }; + User.hidePrivateData = async function (users, callerUID) { + let single = false; + if (!Array.isArray(users)) { + users = [users]; + single = true; + } - const isSelf = parseInt(callerUID, 10) === parseInt(_userData.uid, 10); const [userSettings, isAdmin, isGlobalModerator] = await Promise.all([ - User.getSettings(_userData.uid), + User.getMultipleUserSettings(users.map(user => user.uid)), User.isAdministrator(callerUID), User.isGlobalModerator(callerUID), ]); - const privilegedOrSelf = isAdmin || isGlobalModerator || isSelf; - if (!privilegedOrSelf && (!userSettings.showemail || meta.config.hideEmail)) { - _userData.email = ''; - } - if (!privilegedOrSelf && (!userSettings.showfullname || meta.config.hideFullname)) { - _userData.fullname = ''; - } + users = await Promise.all(users.map(async (userData, idx) => { + const _userData = { ...userData }; + + const isSelf = parseInt(callerUID, 10) === parseInt(_userData.uid, 10); + const privilegedOrSelf = isAdmin || isGlobalModerator || isSelf; + + if (!privilegedOrSelf && (!userSettings[idx].showemail || meta.config.hideEmail)) { + _userData.email = ''; + } + if (!privilegedOrSelf && (!userSettings[idx].showfullname || meta.config.hideFullname)) { + _userData.fullname = ''; + } + return _userData; + })); - return _userData; + return single ? users.pop() : users; }; async function modifyUserData(users, requestedFields, fieldsToRemove) { diff --git a/src/user/index.js b/src/user/index.js index 3f409669cf..25f90c906b 100644 --- a/src/user/index.js +++ b/src/user/index.js @@ -77,11 +77,13 @@ User.getUsersWithFields = async function (uids, fields, uid) { }; User.getUsers = async function (uids, uid) { - return await User.getUsersWithFields(uids, [ + const userData = await User.getUsersWithFields(uids, [ 'uid', 'username', 'userslug', 'picture', 'status', 'postcount', 'reputation', 'email:confirmed', 'lastonline', 'flags', 'banned', 'banned:expire', 'joindate', ], uid); + + return User.hidePrivateData(userData, uid); }; User.getStatus = function (userData) { diff --git a/src/user/profile.js b/src/user/profile.js index 66ca35d789..fc238ff87c 100644 --- a/src/user/profile.js +++ b/src/user/profile.js @@ -327,6 +327,7 @@ module.exports = function (User) { User.reset.cleanByUid(data.uid), User.reset.updateExpiry(data.uid), User.auth.revokeAllSessions(data.uid), + User.email.expireValidation(data.uid), ]); plugins.hooks.fire('action:password.change', { uid: uid, targetUid: data.uid }); diff --git a/src/views/admin/extend/plugins.tpl b/src/views/admin/extend/plugins.tpl index 12eb193396..57a871ec3a 100644 --- a/src/views/admin/extend/plugins.tpl +++ b/src/views/admin/extend/plugins.tpl @@ -1,3 +1,6 @@ +{{{ if !canChangeState }}} +<div class="alert alert-warning">[[error:plugins-set-in-configuration]]</div> +{{{ end }}} <ul class="nav nav-pills"> <li> <a href="#trending" data-toggle="tab"> @@ -75,6 +78,7 @@ <div class="col-lg-9 col-lg-pull-3"> <div class="tab-content"> <div class="tab-pane fade" id="trending"> + <!-- IMPORT admin/partials/plugins/no-plugins.tpl --> <ul class="trending"> {{{ each trending }}} <!-- IMPORT admin/partials/installed_plugin_item.tpl --> @@ -82,6 +86,7 @@ </ul> </div> <div class="tab-pane fade active in" id="installed"> + <!-- IMPORT admin/partials/plugins/no-plugins.tpl --> <ul class="installed"> <!-- BEGIN installed --> <!-- IMPORT admin/partials/installed_plugin_item.tpl --> @@ -89,15 +94,19 @@ </ul> </div> <div class="tab-pane fade" id="active"> + <!-- IMPORT admin/partials/plugins/no-plugins.tpl --> <ul class="active"></ul> </div> <div class="tab-pane fade" id="deactive"> + <!-- IMPORT admin/partials/plugins/no-plugins.tpl --> <ul class="deactive"></ul> </div> <div class="tab-pane fade" id="upgrade"> + <!-- IMPORT admin/partials/plugins/no-plugins.tpl --> <ul class="upgrade"></ul> </div> <div class="tab-pane fade" id="download"> + <!-- IMPORT admin/partials/plugins/no-plugins.tpl --> <ul class="download"> <!-- BEGIN download --> <!-- IMPORT admin/partials/download_plugin_item.tpl --> diff --git a/src/views/admin/partials/categories/category-rows.tpl b/src/views/admin/partials/categories/category-rows.tpl index f138e8c3e5..7df4bd7c45 100644 --- a/src/views/admin/partials/categories/category-rows.tpl +++ b/src/views/admin/partials/categories/category-rows.tpl @@ -5,7 +5,7 @@ <div class="col-md-9"> <div class="clearfix"> <div class="toggle"> - <i class="fa fa-minus"></i> + <i class="fa fa-chevron-down"></i> </div> <div class="information"> <div class="icon" style=" @@ -56,5 +56,4 @@ </li> {{{ end }}} <!-- END categories --> -<li class="children-placeholder"></li> </ul> diff --git a/src/views/admin/partials/installed_plugin_item.tpl b/src/views/admin/partials/installed_plugin_item.tpl index c3465d6585..9b17243edd 100644 --- a/src/views/admin/partials/installed_plugin_item.tpl +++ b/src/views/admin/partials/installed_plugin_item.tpl @@ -5,7 +5,7 @@ <!-- IF ../isTheme --> <a href="{config.relative_path}/admin/appearance/themes" class="btn btn-info">[[admin/extend/plugins:plugin-item.themes]]</a> <!-- ELSE --> - <button data-action="toggleActive" class="btn <!-- IF ../active --> btn-warning<!-- ELSE --> btn-success<!-- ENDIF ../active -->"> + <button data-action="toggleActive" class="btn <!-- IF ../active --> btn-warning<!-- ELSE --> btn-success<!-- ENDIF ../active --> <!-- IF !canChangeState -->disabled<!-- ENDIF -->"> <i class="fa fa-power-off"></i> <!-- IF ../active -->[[admin/extend/plugins:plugin-item.deactivate]]<!-- ELSE -->[[admin/extend/plugins:plugin-item.activate]]<!-- ENDIF ../active --></button> <!-- ENDIF ../isTheme --> diff --git a/src/views/admin/partials/menu.tpl b/src/views/admin/partials/menu.tpl index 343ba8445c..091c28ee9f 100644 --- a/src/views/admin/partials/menu.tpl +++ b/src/views/admin/partials/menu.tpl @@ -139,8 +139,8 @@ {{{ if user.privileges.admin:settings }}} <form role="search"> <div id="acp-search" > - <div class="dropdown"> - <input type="text" data-toggle="dropdown" class="form-control" placeholder="[[admin/menu:search.placeholder]]"> + <div class="dropdown" data-text="[[admin/menu:search.placeholder]]"> + <input type="text" data-toggle="dropdown" class="form-control"> <ul class="dropdown-menu dropdown-menu-right state-start-typing" role="menu"> <li role="presentation" class="no-results"> <a>[[admin/menu:search.no-results]]</a> diff --git a/src/views/admin/partials/plugins/no-plugins.tpl b/src/views/admin/partials/plugins/no-plugins.tpl new file mode 100644 index 0000000000..a31721c962 --- /dev/null +++ b/src/views/admin/partials/plugins/no-plugins.tpl @@ -0,0 +1 @@ +<div class="alert alert-info no-plugins hide">[[admin/extend/plugins:none-found]]</div> \ No newline at end of file diff --git a/src/views/admin/settings/social.tpl b/src/views/admin/settings/social.tpl index 2647f709cc..bcb41d52a8 100644 --- a/src/views/admin/settings/social.tpl +++ b/src/views/admin/settings/social.tpl @@ -1,4 +1,4 @@ -<div class="social settings"> +<div class="social"> <form role="form"> <div class="row"> <div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/social:post-sharing]]</div> diff --git a/src/webserver.js b/src/webserver.js index 647a0c777a..9aa915678a 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -187,34 +187,25 @@ function setupExpressApp(app) { } function setupHelmet(app) { - /** - * The only reason why these middlewares are all explicitly spelled out is because - * helmet.contentSecurityPolicy() is too restrictive and breaks plugins. - * - * It should be implemented in the future... 🔜 - */ + const options = { + contentSecurityPolicy: false, // defaults are too restrive and break plugins that load external assets... 🔜 + crossOriginOpenerPolicy: { policy: meta.config['cross-origin-opener-policy'] }, + crossOriginResourcePolicy: { policy: meta.config['cross-origin-resource-policy'] }, + referrerPolicy: { policy: 'strict-origin-when-cross-origin' }, + }; + if (meta.config['cross-origin-embedder-policy']) { - app.use(helmet.crossOriginEmbedderPolicy()); + options.crossOriginEmbedderPolicy = false; } - app.use(helmet.crossOriginOpenerPolicy({ policy: meta.config['cross-origin-opener-policy'] })); - app.use(helmet.crossOriginResourcePolicy({ policy: meta.config['cross-origin-resource-policy'] })); - app.use(helmet.dnsPrefetchControl()); - app.use(helmet.expectCt()); - app.use(helmet.frameguard()); - app.use(helmet.hidePoweredBy()); if (meta.config['hsts-enabled']) { - app.use(helmet.hsts({ + options.hsts = { maxAge: meta.config['hsts-maxage'], includeSubDomains: !!meta.config['hsts-subdomains'], preload: !!meta.config['hsts-preload'], - })); + }; } - app.use(helmet.ieNoOpen()); - app.use(helmet.noSniff()); - app.use(helmet.originAgentCluster()); - app.use(helmet.permittedCrossDomainPolicies()); - app.use(helmet.referrerPolicy({ policy: 'strict-origin-when-cross-origin' })); - app.use(helmet.xssFilter()); + + app.use(helmet(options)); } diff --git a/test/plugins.js b/test/plugins.js index e7676990d2..2ffbf604c3 100644 --- a/test/plugins.js +++ b/test/plugins.js @@ -319,6 +319,85 @@ describe('Plugins', () => { }); }); }); + + describe('plugin state set in configuration', () => { + const activePlugins = [ + 'nodebb-plugin-markdown', + 'nodebb-plugin-mentions', + ]; + const inactivePlugin = 'nodebb-plugin-emoji'; + beforeEach((done) => { + nconf.set('plugins:active', activePlugins); + done(); + }); + afterEach((done) => { + nconf.set('plugins:active', undefined); + done(); + }); + + it('should return active plugin state from configuration', (done) => { + plugins.isActive(activePlugins[0], (err, isActive) => { + assert.ifError(err); + assert(isActive); + done(); + }); + }); + + it('should return inactive plugin state if not in configuration', (done) => { + plugins.isActive(inactivePlugin, (err, isActive) => { + assert.ifError(err); + assert(!isActive); + done(); + }); + }); + + it('should get a list of plugins from configuration', (done) => { + plugins.list((err, data) => { + assert.ifError(err); + const keys = ['id', 'name', 'url', 'description', 'latest', 'installed', 'active', 'latest']; + assert(Array.isArray(data)); + keys.forEach((key) => { + assert(data[0].hasOwnProperty(key)); + }); + data.forEach((pluginData) => { + assert.equal(pluginData.active, activePlugins.includes(pluginData.id)); + }); + done(); + }); + }); + + it('should return a list of only active plugins from configuration', (done) => { + plugins.getActive((err, data) => { + assert.ifError(err); + assert(Array.isArray(data)); + data.forEach((pluginData) => { + console.log(pluginData); + assert(activePlugins.includes(pluginData)); + }); + done(); + }); + }); + + it('should not deactivate a plugin if active plugins are set in configuration', (done) => { + assert.rejects(plugins.toggleActive(activePlugins[0]), Error).then(() => { + plugins.isActive(activePlugins[0], (err, isActive) => { + assert.ifError(err); + assert(isActive); + done(); + }); + }); + }); + + it('should not activate a plugin if active plugins are set in configuration', (done) => { + assert.rejects(plugins.toggleActive(inactivePlugin), Error).then(() => { + plugins.isActive(inactivePlugin, (err, isActive) => { + assert.ifError(err); + assert(!isActive); + done(); + }); + }); + }); + }); });