Compare commits

..

6 Commits

Author SHA1 Message Date
Barış Soner Uşaklı
a373731570 feat: add reverse of recent to getSortedTopics 2021-04-06 12:59:21 -04:00
Barış Soner Uşaklı
a76b5d15e0 feat: pass all data to filter:category.get 2021-03-31 12:09:38 -04:00
Julian Lam
a06b84d258 chore: bump version 2021-03-26 16:24:08 -04:00
Barış Soner Uşaklı
ecf212d307 feat: add hooks to language loading (#9426)
and flushNamespace method
2021-03-26 16:23:18 -04:00
Julian Lam
dc6fc65322 chore: bump version 2021-03-24 12:56:05 -04:00
Barış Soner Uşaklı
27b481765b fix: #9420, paginate after loading notifications 2021-03-24 12:54:47 -04:00
1447 changed files with 17103 additions and 23018 deletions

197
.eslintrc
View File

@@ -5,111 +5,136 @@
},
"rules": {
// === Configure rules for our style ===
// imports must be resolvable
"import/no-unresolved": "error",
// use single quotes,
// unless a different style allows avoiding escapes
"quotes": ["error", "single", {
"avoidEscape": true,
"allowTemplateLiterals": true
}],
// allow else-if return
"no-else-return": [ "error", { "allowElseIf": true } ],
// expressions split over multiple lines
// should break after the operator
"operator-linebreak": [ "error", "after" ],
// require arrow parens only when needed
// and whenever the body is a block
"arrow-parens": ["error", "as-needed", { "requireForBlockBody": true }],
// what variables are errors in callbacks
// Customized
"handle-callback-err": [ "error","^(e$|(e|(.*(_e|E)))rr)" ],
// allow dangling commas in functions
// require them everywhere else
"comma-dangle": ["error", {
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "only-multiline"
"functions": "never"
}],
// we actually encourage `return await`
"no-return-await": "off",
// allow `while (true)`
"no-constant-condition": ["error", { "checkLoops": false }],
// allow ignoring an error with `catch`
"no-constant-condition": "off",
"no-empty": ["error", { "allowEmptyCatch": true }],
// allow `3 + 5 - 1`, but not `3 * 5 - 1`
"no-mixed-operators": ["error", { "allowSamePrecedence": true }],
// require `'use strict';`
"strict": ["error", "global"],
// we actually use tabs for indentation
"indent": ["error", "tab", { "SwitchCase": 1 }],
"no-tabs": "off",
// we want `== null` to also handle undefined
"no-eq-null": "off",
// allow `for (..; i++)`
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
// allow using functions defined later
"no-use-before-define": ["error", "nofunc"],
// require consistent newlines before and after braces
// if contents are multiline
"object-curly-newline": ["error", { "consistent": true, "multiline": true }],
// require consistent linebreaks inline function parenthesis (arguments or params)
"function-paren-newline": ["error", "consistent"],
// only require const if all parts of destructuring can be const
"prefer-const": ["error", { "destructuring": "all" }],
// don't require destructuring for arrays or assignment
"prefer-destructuring": ["error", {
"VariableDeclarator": { "array": false, "object": true },
"AssignmentExpression": { "array": false, "object": false }
}],
// identical to airbnb rule, except for allowing for..of, because we want to use it
"no-restricted-syntax": [
"error",
{
"selector": "ForInStatement",
"message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array."
},
{
"selector": "LabeledStatement",
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
},
{
"selector": "WithStatement",
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
}
],
// allow lines of up to 120 characters
"max-len": ["error", { "code": 120, "tabWidth": 2, "ignoreUrls": true, "ignoreStrings": true, "ignoreTemplateLiterals": true, "ignoreRegExpLiterals": true }],
// === Disable rules ===
// more liberal naming
"camelcase": "off",
"no-underscore-dangle": "off",
// don't require anonymous function names
"func-names": "off",
// allow console
"no-console": "off",
// allow new for side effects
// allow new with non-capitalized
"no-mixed-operators": ["error", { "allowSamePrecedence": true }],
"strict": ["error", "global"],
"consistent-return": "off",
"func-names": "off",
"no-tabs": "off",
"indent": ["error", "tab", { "SwitchCase": 1 }],
"no-eq-null": "off",
"camelcase": "off",
"no-new": "off",
"new-cap": "off",
// allow shadowing variables (usually callbacks)
"no-shadow": "off",
// allow multiple empty lines in a row
"no-multiple-empty-lines": "off",
// allow not using object shorthand
"no-use-before-define": ["error", "nofunc"],
"no-prototype-builtins": "off",
"new-cap": "off",
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
"object-curly-newline": "off",
"no-restricted-globals": "off",
"function-paren-newline": "off",
"import/no-unresolved": "error",
"quotes": ["error", "single", {
"avoidEscape": true,
"allowTemplateLiterals": true
}],
"no-else-return": [ "error", { "allowElseIf": true } ],
"operator-linebreak": [ "error", "after" ],
"arrow-parens": ["error", "as-needed", { "requireForBlockBody": true }],
// ES6
"prefer-rest-params": "off",
"prefer-spread": "off",
"prefer-arrow-callback": "off",
"prefer-template": "off",
"no-var": "off",
"object-shorthand": "off",
"vars-on-top": "off",
"prefer-destructuring": "off",
// TODO
"consistent-return": "off",
"no-restricted-globals": "off",
"no-prototype-builtins": "off",
"import/no-extraneous-dependencies": "off",
"import/no-dynamic-require": "off",
"import/newline-after-import": "off",
"no-bitwise": "off",
"global-require": "off",
"max-len": "off",
"no-param-reassign": "off",
"default-case": "off"
"no-restricted-syntax": "off",
"no-script-url": "off",
"default-case": "off",
"linebreak-style": "off",
// "no-multi-assign": "off",
// "one-var": "off",
// "no-undef": "off",
// "max-nested-callbacks": "off",
// "no-mixed-requires": "off",
// "brace-style": "off",
// "max-statements-per-line": "off",
// "no-unused-vars": "off",
// "no-mixed-spaces-and-tabs": "off",
// "no-useless-concat": "off",
// "require-jsdoc": "off",
// "eqeqeq": "off",
// "no-negated-condition": "off",
// "one-var-declaration-per-line": "off",
// "no-lonely-if": "off",
// "radix": "off",
// "no-else-return": "off",
// "no-useless-escape": "off",
// "block-scoped-var": "off",
// "operator-assignment": "off",
// "yoda": "off",
// "no-loop-func": "off",
// "no-void": "off",
// "valid-jsdoc": "off",
// "no-cond-assign": "off",
// "no-redeclare": "off",
// "no-unreachable": "off",
// "no-nested-ternary": "off",
// "operator-linebreak": "off",
// "guard-for-in": "off",
// "no-unneeded-ternary": "off",
// "no-sequences": "off",
// "no-extend-native": "off",
// "no-shadow-restricted-names": "off",
// "no-extra-boolean-cast": "off",
// "no-path-concat": "off",
// "no-unused-expressions": "off",
// "no-return-assign": "off",
// "no-restricted-modules": "off",
// "object-curly-spacing": "off",
// "indent": "off",
// "padded-blocks": "off",
// "eol-last": "off",
// "lines-around-directive": "off",
// "strict": "off",
// "comma-dangle": "off",
// "no-multi-spaces": "off",
// "quotes": "off",
// "keyword-spacing": "off",
// "no-mixed-operators": "off",
// "comma-spacing": "off",
// "no-trailing-spaces": "off",
// "key-spacing": "off",
"no-multiple-empty-lines": "off"
// "spaced-comment": "off",
// "space-in-parens": "off",
// "block-spacing": "off",
// "quote-props": "off",
// "space-unary-ops": "off",
// "no-empty": "off",
// "dot-notation": "off",
// "func-call-spacing": "off",
// "array-bracket-spacing": "off",
// "object-property-newline": "off",
// "no-continue": "off",
// "no-extra-semi": "off",
// "no-spaced-func": "off",
// "no-useless-return": "off"
}
}

1
.husky/.gitignore vendored
View File

@@ -1 +0,0 @@
_

View File

@@ -1,4 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit $1

View File

@@ -1,4 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install lint-staged

View File

@@ -1,90 +1,3 @@
#### v1.16.2 (2021-01-21)
##### Breaking Changes
* unescape header navigation originalRoute [breaking] (6cb5888c)
* allow override of local fns in login controller, 400 instead of 500 for wrong login type [breaking] (1cf0032d)
##### Chores
* **deps:**
* update dependency husky to v4.3.8 (a6f5de86)
* update dependency eslint to v7.18.0 (afbef95f)
* update dependency husky to v4.3.7 (d3e041e2)
* incrementing version number - v1.16.2-beta.0 (43ff8e41)
* incrementing version number - v1.16.1 (e3cd7a23)
* update changelog for v1.16.1 (b6d71710)
##### New Features
* add filter:email.cancel to allow plugins to cancel sending emails (c2e23706)
* grant plugins the ability to specify options to the SSO handler (ab11435e)
* add unread-count badge if navigator contains /flags route (c07e1e16)
* handle HTTP 429 as a response code (8bbb3208)
* add write API route for checking login credentials (56f929ed)
* #8813, faster category search dropdown (072a0e32)
* **api:** schema definition for new credential checking route (0da28432)
##### Bug Fixes
* **deps:**
* update dependency bootbox to v5 (#8751) (b5cb2f8b)
* update dependency nodebb-theme-persona to v10.3.19 (f16cdc9f)
* update socket.io packages to v3.1.0 (3d1224e1)
* update dependency nodebb-theme-slick to v1.3.8 (1901ecb2)
* update dependency sortablejs to v1.13.0 (36069da2)
* update dependency autoprefixer to v10.2.1 (5b3c48fd)
* https://github.com/NodeBB/nodebb-plugin-webhooks/issues/3 (c608b0e8)
* restored sanity checks for post move socket calls (d85ad10d)
* don't chagne scrollTop if at the top of page (0fa4c11e)
* #9206, fix double escaped arguments (1590cdf1)
* regression caused by 77ab46686db62871f149419a368c35628453884e (f5fcd232)
* don't crash if fullname is not a string (4fb90787)
* #9204, bypass groupname length check for system group in upgrade script (00ba89b6)
* add missing await (9938a139)
* ssoState passed to strategies even if not called for (9b289eca)
* use max (0a471b76)
* keep 60 topics minimum on topic list (c30b40ab)
* access checks for tags and thumbs get route (77ab4668)
* #9194 global mods unable to pin or unpin topics (c0fb1cb5)
* #9192, exit after logging error (ef16cd2e)
* make sure inviter user exists (69419571)
* #9178 missing language strings (and fallbacks) for post-queue (a407a51d)
* #9185, fix string boolean values (89e6c75d)
* test for topicThumbs (e817d5be)
* #9184 proper relative_path usage in topic thumbs.get (66da6bcd)
* #9169, re-adding v2-style behaviour so as to not break the API... yet (b742229e)
* #9177, handled multiple deleted users properly (eaf62d39)
* broken test caused by errant .pop(), missing await (4ede18ce)
* missing error message (d83d40cf)
* test for https://github.com/NodeBB/NodeBB/pull/9180 (8ece64ab)
* #9176, limit description size (da546970)
* broken test due to change in response code (9534d956)
* return a user object, not an array of user objects (in v3 login check route) (97d678fd)
* bad execution flow in utilities.login (8c86f5bc)
* missing breadcrumbs in schema (87a7d85e)
* random loadFiles added by errant vscode autocompletion (53422413)
* add missing breadcrumb on /user/<slug>/categories (6cbb77af)
* `--help` usage info (a51c5698)
##### Performance Improvements
* use only required calls (f0dd302c)
##### Refactors
* **api:**
* post move to write API (966c4117)
* post diffs to use write API (e118e59c)
* change var to const (1374e0ee)
* single remove call (25ab99b9)
* flags lib to have a separate getFlagIdsWithFilters method (6a1311b4)
* split out logic dedicated to calculating unread counts, to a separate local method (03a0e72f)
##### Code Style Changes
* update codeclimate config to be less sensitive to duplicate code blocks (fdf03472)
#### v1.16.1 (2021-01-06)
##### Chores

View File

@@ -2,27 +2,24 @@
const path = require('path');
const nconf = require('nconf');
nconf.argv().env({
separator: '__',
});
const winston = require('winston');
const { fork } = require('child_process');
const { env } = process;
let worker;
const fork = require('child_process').fork;
const env = process.env;
var worker;
env.NODE_ENV = env.NODE_ENV || 'development';
const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');
const prestart = require('./src/prestart');
prestart.loadConfig(configFile);
const db = require('./src/database');
var db = require('./src/database');
module.exports = function (grunt) {
const args = [];
var args = [];
if (!grunt.option('verbose')) {
args.push('--log-level=info');
@@ -39,7 +36,7 @@ module.exports = function (grunt) {
grunt.registerTask('default', ['watch']);
grunt.registerTask('init', async function () {
const done = this.async();
var done = this.async();
let plugins = [];
if (!process.argv.includes('--core')) {
await db.init();
@@ -53,22 +50,22 @@ module.exports = function (grunt) {
}
}
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 = 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 = 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 = 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 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 = 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 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 = plugins.map(p => 'node_modules/' + p + '/+(public|static|templates)/**/*.tpl');
const langUpdated = plugins.map(p => 'node_modules/' + p + '/+(public|static|languages)/**/*.json');
grunt.config(['watch'], {
styleUpdated_Client: {
@@ -164,8 +161,8 @@ module.exports = function (grunt) {
grunt.task.run('init');
grunt.event.removeAllListeners('watch');
grunt.event.on('watch', (action, filepath, target) => {
let compiling;
grunt.event.on('watch', function update(action, filepath, target) {
var compiling;
if (target === 'styleUpdated_Client') {
compiling = 'clientCSS';
} else if (target === 'styleUpdated_Admin') {
@@ -183,7 +180,7 @@ module.exports = function (grunt) {
return run();
}
require('./src/meta/build').build([compiling], (err) => {
require('./src/meta/build').build([compiling], function (err) {
if (err) {
winston.error(err.stack);
}
@@ -202,7 +199,7 @@ function addBaseThemes(plugins) {
let baseTheme;
do {
try {
baseTheme = require(`${themeId}/theme`).baseTheme;
baseTheme = require(themeId + '/theme').baseTheme;
} catch (err) {
console.log(err);
}

4
app.js
View File

@@ -22,7 +22,6 @@
require('./require-main');
const nconf = require('nconf');
nconf.argv().env({
separator: '__',
});
@@ -41,7 +40,6 @@ const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'c
const configExists = file.existsSync(configFile) || (nconf.get('url') && nconf.get('secret') && nconf.get('database'));
const prestart = require('./src/prestart');
prestart.loadConfig(configFile);
prestart.setupWinston();
prestart.versionCheck();
@@ -49,7 +47,7 @@ winston.verbose('* using configuration stored in: %s', configFile);
if (!process.send) {
// If run using `node app`, log GNU copyright info along with server info
winston.info(`NodeBB v${nconf.get('version')} Copyright (C) 2013-${(new Date()).getFullYear()} NodeBB Inc.`);
winston.info('NodeBB v' + nconf.get('version') + ' Copyright (C) 2013-' + (new Date()).getFullYear() + ' NodeBB Inc.');
winston.info('This program comes with ABSOLUTELY NO WARRANTY.');
winston.info('This is free software, and you are welcome to redistribute it under certain conditions.');
winston.info('');

View File

@@ -25,7 +25,6 @@
"groupsExemptFromPostQueue": ["administrators", "Global Moderators"],
"minimumPostLength": 8,
"maximumPostLength": 32767,
"systemTags": "",
"minimumTagsPerTopic": 0,
"maximumTagsPerTopic": 5,
"minimumTagLength": 3,
@@ -102,7 +101,6 @@
"maxPostsPerPage": 20,
"topicsPerPage": 20,
"postsPerPage": 20,
"categoriesPerPage": 50,
"userSearchResultsPerPage": 50,
"maximumGroupNameLength": 255,
"maximumGroupTitleLength": 40,

View File

@@ -14,7 +14,7 @@ const questions = {
};
module.exports = async function (config) {
winston.info(`\nNow configuring ${config.database} database:`);
winston.info('\nNow configuring ' + config.database + ' database:');
const databaseConfig = await getDatabaseConfig(config);
return saveDatabaseConfig(config, databaseConfig);
};
@@ -40,7 +40,7 @@ async function getDatabaseConfig(config) {
}
return await promptGet(questions.postgres);
}
throw new Error(`unknown database : ${config.database}`);
throw new Error('unknown database : ' + config.database);
}
function saveDatabaseConfig(config, databaseConfig) {
@@ -79,11 +79,11 @@ function saveDatabaseConfig(config, databaseConfig) {
ssl: databaseConfig['postgres:ssl'],
};
} else {
throw new Error(`unknown database : ${config.database}`);
throw new Error('unknown database : ' + config.database);
}
const allQuestions = questions.redis.concat(questions.mongo).concat(questions.postgres);
for (let x = 0; x < allQuestions.length; x += 1) {
for (var x = 0; x < allQuestions.length; x += 1) {
delete config[allQuestions[x].name];
}

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "1.17.0-beta.3",
"version": "1.16.2-beta.2",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@@ -11,8 +11,8 @@
"main": "app.js",
"scripts": {
"start": "node loader.js",
"lint": "eslint --cache ./nodebb .",
"test": "nyc --reporter=html --reporter=text-summary mocha",
"lint": "npx eslint --cache ./nodebb .",
"test": "npx nyc --reporter=html --reporter=text-summary npx mocha",
"coverage": "nyc report --reporter=text-lcov > ./coverage/lcov.info",
"coveralls": "nyc report --reporter=text-lcov | coveralls && rm -r coverage"
},
@@ -22,109 +22,118 @@
"test/*"
]
},
"husky": {
"hooks": {
"pre-commit": "npx lint-staged",
"commit-msg": "npx commitlint -E HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
"*.js": [
"eslint --fix"
"eslint --fix",
"git add"
]
},
"dependencies": {
"@adactive/bootstrap-tagsinput": "^0.8.2",
"ace-builds": "^1.4.12",
"archiver": "^5.2.0",
"ace-builds": "^1.4.9",
"archiver": "^5.0.0",
"async": "^3.2.0",
"autoprefixer": "10.2.5",
"autoprefixer": "10.2.1",
"bcryptjs": "2.4.3",
"benchpressjs": "2.4.1",
"benchpressjs": "2.4.0",
"body-parser": "^1.19.0",
"bootbox": "5.5.2",
"bootbox": "4.4.0",
"bootstrap": "^3.4.1",
"chart.js": "^2.9.4",
"chart.js": "^2.9.3",
"cli-graph": "^3.2.2",
"clipboard": "^2.0.6",
"colors": "^1.4.0",
"commander": "^7.1.0",
"commander": "^6.0.0",
"compare-versions": "3.6.0",
"compression": "^1.7.4",
"connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1",
"connect-mongo": "4.4.0",
"connect-mongo": "3.2.0",
"connect-multiparty": "^2.2.0",
"connect-pg-simple": "^6.2.1",
"connect-redis": "5.1.0",
"connect-pg-simple": "^6.1.0",
"connect-redis": "5.0.0",
"cookie-parser": "^1.4.5",
"cron": "^1.8.2",
"cropperjs": "^1.5.11",
"cropperjs": "^1.5.6",
"csurf": "^1.11.0",
"daemon": "^1.1.0",
"diff": "^5.0.0",
"express": "^4.17.1",
"express-session": "^1.17.1",
"express-useragent": "^1.0.15",
"graceful-fs": "^4.2.6",
"helmet": "^4.4.1",
"html-to-text": "7.0.0",
"express-session": "^1.17.0",
"express-useragent": "^1.0.13",
"graceful-fs": "^4.2.3",
"helmet": "^4.0.0",
"html-to-text": "6.0.0",
"ipaddr.js": "^2.0.0",
"jquery": "3.6.0",
"jquery": "3.5.1",
"jquery-deserialize": "2.0.0-rc1",
"jquery-form": "4.3.0",
"jquery-serializeobject": "1.0.0",
"jquery-ui": "1.12.1",
"jsesc": "3.0.2",
"json2csv": "5.0.6",
"json2csv": "5.0.5",
"jsonwebtoken": "^8.5.1",
"less": "^3.11.1",
"lodash": "^4.17.21",
"logrotate-stream": "^0.2.7",
"lodash": "^4.17.15",
"logrotate-stream": "^0.2.6",
"lru-cache": "6.0.0",
"material-design-lite": "^1.3.0",
"mime": "^2.5.2",
"mime": "^2.4.4",
"mkdirp": "^1.0.4",
"mongodb": "3.6.4",
"mongodb": "3.6.3",
"morgan": "^1.10.0",
"mousetrap": "^1.6.5",
"multiparty": "4.2.2",
"@nodebb/bootswatch": "3.4.2",
"nconf": "^0.11.2",
"nodebb-plugin-composer-default": "6.5.17",
"nodebb-plugin-dbsearch": "4.2.0",
"nodebb-plugin-emoji": "^3.5.0",
"nodebb-plugin-emoji-android": "2.0.5",
"nodebb-plugin-markdown": "8.12.7",
"nodebb-plugin-mentions": "2.13.7",
"nodebb-plugin-spam-be-gone": "0.7.8",
"nconf": "^0.11.0",
"nodebb-plugin-composer-default": "6.5.5",
"nodebb-plugin-dbsearch": "4.1.2",
"nodebb-plugin-emoji": "^3.3.0",
"nodebb-plugin-emoji-android": "2.0.0",
"nodebb-plugin-markdown": "8.12.4",
"nodebb-plugin-mentions": "2.13.6",
"nodebb-plugin-soundpack-default": "1.0.0",
"nodebb-plugin-spam-be-gone": "0.7.7",
"nodebb-rewards-essentials": "0.1.4",
"nodebb-theme-lavender": "5.2.1",
"nodebb-theme-persona": "11.0.3",
"nodebb-theme-slick": "1.4.3",
"nodebb-theme-vanilla": "12.0.2",
"nodebb-widget-essentials": "5.0.3",
"nodemailer": "^6.5.0",
"nodebb-theme-lavender": "5.0.17",
"nodebb-theme-persona": "10.3.18",
"nodebb-theme-slick": "1.3.8",
"nodebb-theme-vanilla": "11.3.10",
"nodebb-widget-essentials": "5.0.2",
"nodemailer": "^6.4.6",
"nprogress": "0.2.0",
"passport": "^0.4.1",
"passport-http-bearer": "^1.0.1",
"passport-local": "1.0.0",
"pg": "^8.5.1",
"pg-cursor": "^2.5.2",
"postcss": "8.2.8",
"postcss-clean": "1.2.0",
"prompt": "^1.1.0",
"pg": "^8.0.2",
"pg-cursor": "^2.1.9",
"postcss": "8.1.10",
"postcss-clean": "1.1.0",
"promise-polyfill": "^8.1.3",
"prompt": "^1.0.0",
"redis": "3.0.2",
"request": "2.88.2",
"request-promise-native": "^1.0.9",
"request-promise-native": "^1.0.8",
"requirejs": "2.3.6",
"rimraf": "3.0.2",
"rss": "^1.2.2",
"sanitize-html": "^2.3.2",
"semver": "^7.3.4",
"sanitize-html": "^2.0.0",
"semver": "^7.2.1",
"serve-favicon": "^2.5.0",
"sharp": "0.27.2",
"sitemap": "^6.4.0",
"sharp": "0.27.0",
"sitemap": "^6.1.0",
"slideout": "1.0.1",
"socket.io": "4.0.0",
"socket.io": "3.1.0",
"socket.io-adapter-cluster": "^1.0.1",
"socket.io-client": "4.0.0",
"socket.io-redis": "6.1.0",
"socket.io-client": "3.1.0",
"socket.io-redis": "6.0.1",
"sortablejs": "1.13.0",
"spdx-license-list": "^6.4.0",
"spdx-license-list": "^6.1.0",
"spider-detector": "2.0.0",
"textcomplete": "^0.17.1",
"textcomplete.contenteditable": "^0.1.1",
@@ -136,24 +145,24 @@
"visibilityjs": "2.0.2",
"winston": "3.3.3",
"xml": "^1.0.1",
"xregexp": "^5.0.1",
"xregexp": "^4.3.0",
"yargs": "16.2.0",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"@apidevtools/swagger-parser": "10.0.2",
"@commitlint/cli": "12.0.1",
"@commitlint/config-angular": "12.0.1",
"@commitlint/cli": "11.0.0",
"@commitlint/config-angular": "11.0.0",
"coveralls": "3.1.0",
"eslint": "7.22.0",
"eslint": "7.17.0",
"eslint-config-airbnb-base": "14.2.1",
"eslint-plugin-import": "2.22.1",
"grunt": "1.3.0",
"grunt-contrib-watch": "1.1.0",
"husky": "5.1.3",
"jsdom": "16.5.1",
"lint-staged": "10.5.4",
"mocha": "8.3.2",
"husky": "4.3.7",
"jsdom": "16.4.0",
"lint-staged": "10.5.3",
"mocha": "8.2.1",
"mocha-lcov-reporter": "1.3.0",
"nyc": "15.1.0",
"smtp-server": "3.8.0"
@@ -181,4 +190,4 @@
"url": "https://github.com/barisusakli"
}
]
}
}

View File

@@ -8,7 +8,6 @@ const path = require('path');
const childProcess = require('child_process');
const less = require('less');
const util = require('util');
const lessRenderAsync = util.promisify(
(style, opts, cb) => less.render(String(style), opts, cb)
);
@@ -27,8 +26,8 @@ const formats = [
];
const timestampFormat = winston.format((info) => {
const dateString = `${new Date().toISOString()} [${global.process.pid}]`;
info.level = `${dateString} - ${info.level}`;
var dateString = new Date().toISOString() + ' [' + global.process.pid + ']';
info.level = dateString + ' - ' + info.level;
return info;
});
formats.push(timestampFormat());
@@ -69,10 +68,10 @@ const viewsDir = path.join(paths.baseDir, 'build/public/templates');
web.install = async function (port) {
port = port || 4567;
winston.info(`Launching web installer on port ${port}`);
winston.info('Launching web installer on port ' + port);
app.use(express.static('public', {}));
app.engine('tpl', (filepath, options, callback) => {
app.engine('tpl', function (filepath, options, callback) {
filepath = filepath.replace(/\.tpl$/, '.js');
Benchpress.__express(filepath, options, callback);
@@ -99,7 +98,7 @@ web.install = async function (port) {
function launchExpress(port) {
server = app.listen(port, () => {
server = app.listen(port, function () {
winston.info('Web installer listening on http://%s:%s', '0.0.0.0', port);
});
}
@@ -117,9 +116,11 @@ function ping(req, res) {
}
function welcome(req, res) {
const dbs = ['redis', 'mongo', 'postgres'];
const databases = dbs.map((databaseName) => {
const questions = require(`../src/database/${databaseName}`).questions.filter(question => question && !question.hideOnWebInstall);
var dbs = ['redis', 'mongo', 'postgres'];
var databases = dbs.map(function (databaseName) {
var questions = require('../src/database/' + databaseName).questions.filter(function (question) {
return question && !question.hideOnWebInstall;
});
return {
name: databaseName,
@@ -127,10 +128,10 @@ function welcome(req, res) {
};
});
const defaults = require('./data/defaults');
var defaults = require('./data/defaults');
res.render('install/index', {
url: nconf.get('url') || (`${req.protocol}://${req.get('host')}`),
url: nconf.get('url') || (req.protocol + '://' + req.get('host')),
launchUrl: launchUrl,
skipGeneralSetup: !!nconf.get('url'),
databases: databases,
@@ -150,23 +151,23 @@ function install(req, res) {
}
req.setTimeout(0);
installing = true;
const setupEnvVars = nconf.get();
for (const [key, value] of Object.entries(req.body)) {
if (!process.env.hasOwnProperty(key)) {
setupEnvVars[key.replace(':', '__')] = value;
var setupEnvVars = nconf.get();
for (var i in req.body) {
if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) {
setupEnvVars[i.replace(':', '__')] = req.body[i];
}
}
// Flatten any objects in setupEnvVars
const pushToRoot = function (parentKey, key) {
setupEnvVars[`${parentKey}__${key}`] = setupEnvVars[parentKey][key];
setupEnvVars[parentKey + '__' + key] = setupEnvVars[parentKey][key];
};
for (const [parentKey, value] of Object.entries(setupEnvVars)) {
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
Object.keys(value).forEach(key => pushToRoot(parentKey, key));
delete setupEnvVars[parentKey];
} else if (Array.isArray(value)) {
setupEnvVars[parentKey] = JSON.stringify(value);
for (var j in setupEnvVars) {
if (setupEnvVars.hasOwnProperty(j) && typeof setupEnvVars[j] === 'object' && setupEnvVars[j] !== null && !Array.isArray(setupEnvVars[j])) {
Object.keys(setupEnvVars[j]).forEach(pushToRoot.bind(null, j));
delete setupEnvVars[j];
} else if (Array.isArray(setupEnvVars[j])) {
setupEnvVars[j] = JSON.stringify(setupEnvVars[j]);
}
}
@@ -174,11 +175,11 @@ function install(req, res) {
winston.info(setupEnvVars);
launchUrl = setupEnvVars.url;
const child = require('child_process').fork('app', ['--setup'], {
var child = require('child_process').fork('app', ['--setup'], {
env: setupEnvVars,
});
child.on('close', (data) => {
child.on('close', function (data) {
installing = false;
success = data === 0;
error = data !== 0;
@@ -192,7 +193,7 @@ async function launch(req, res) {
res.json({});
server.close();
req.setTimeout(0);
let child;
var child;
if (!nconf.get('launchCmd')) {
child = childProcess.spawn('node', ['loader.js'], {
@@ -256,7 +257,7 @@ async function compileLess() {
const css = await lessRenderAsync(style, { filename: path.resolve(installSrc) });
await fs.promises.writeFile(path.join(__dirname, '../public/installer.css'), css.css);
} catch (err) {
winston.error(`Unable to compile LESS: \n${err.stack}`);
winston.error('Unable to compile LESS: \n' + err.stack);
throw err;
}
}
@@ -288,7 +289,7 @@ async function copyCSS() {
async function loadDefaults() {
const setupDefaultsPath = path.join(__dirname, '../setup.json');
try {
await fs.promises.access(setupDefaultsPath, fs.constants.F_OK + fs.constants.R_OK);
await fs.promises.access(setupDefaultsPath, fs.constants.F_OK | fs.constants.R_OK);
} catch (err) {
// setup.json not found or inaccessible, proceed with no defaults
if (err.code !== 'ENOENT') {

View File

@@ -1,45 +1,46 @@
'use strict';
const nconf = require('nconf');
const fs = require('fs');
const url = require('url');
const path = require('path');
const { fork } = require('child_process');
const async = require('async');
const logrotate = require('logrotate-stream');
const mkdirp = require('mkdirp');
var nconf = require('nconf');
var fs = require('fs');
var url = require('url');
var path = require('path');
var fork = require('child_process').fork;
var async = require('async');
var logrotate = require('logrotate-stream');
var mkdirp = require('mkdirp');
const file = require('./src/file');
const pkg = require('./package.json');
var file = require('./src/file');
var pkg = require('./package.json');
const pathToConfig = path.resolve(__dirname, process.env.CONFIG || 'config.json');
var pathToConfig = path.resolve(__dirname, process.env.CONFIG || 'config.json');
nconf.argv().env().file({
file: pathToConfig,
});
const pidFilePath = path.join(__dirname, 'pidfile');
var pidFilePath = path.join(__dirname, 'pidfile');
const outputLogFilePath = path.join(__dirname, nconf.get('logFile') || 'logs/output.log');
var outputLogFilePath = path.join(__dirname, nconf.get('logFile') || 'logs/output.log');
const logDir = path.dirname(outputLogFilePath);
var logDir = path.dirname(outputLogFilePath);
if (!fs.existsSync(logDir)) {
mkdirp.sync(path.dirname(outputLogFilePath));
}
const output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
const silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false;
let numProcs;
const workers = [];
const Loader = {
var output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
var silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false;
var numProcs;
var workers = [];
var Loader = {
timesStarted: 0,
};
const appPath = path.join(__dirname, 'app.js');
var appPath = path.join(__dirname, 'app.js');
Loader.init = function (callback) {
if (silent) {
console.log = (...args) => {
output.write(`${args.join(' ')}\n`);
console.log = function () {
var args = Array.prototype.slice.call(arguments);
output.write(args.join(' ') + '\n');
};
}
@@ -50,7 +51,7 @@ Loader.init = function (callback) {
Loader.displayStartupMessages = function (callback) {
console.log('');
console.log(`NodeBB v${pkg.version} Copyright (C) 2013-2014 NodeBB Inc.`);
console.log('NodeBB v' + pkg.version + ' Copyright (C) 2013-2014 NodeBB Inc.');
console.log('This program comes with ABSOLUTELY NO WARRANTY.');
console.log('This is free software, and you are welcome to redistribute it under certain conditions.');
console.log('For the full license, please visit: http://www.gnu.org/copyleft/gpl.html');
@@ -59,23 +60,23 @@ Loader.displayStartupMessages = function (callback) {
};
Loader.addWorkerEvents = function (worker) {
worker.on('exit', (code, signal) => {
worker.on('exit', function (code, signal) {
if (code !== 0) {
if (Loader.timesStarted < numProcs * 3) {
Loader.timesStarted += 1;
if (Loader.crashTimer) {
clearTimeout(Loader.crashTimer);
}
Loader.crashTimer = setTimeout(() => {
Loader.crashTimer = setTimeout(function () {
Loader.timesStarted = 0;
}, 10000);
} else {
console.log(`${numProcs * 3} restarts in 10 seconds, most likely an error on startup. Halting.`);
console.log((numProcs * 3) + ' restarts in 10 seconds, most likely an error on startup. Halting.');
process.exit();
}
}
console.log(`[cluster] Child Process (${worker.pid}) has exited (code: ${code}, signal: ${signal})`);
console.log('[cluster] Child Process (' + worker.pid + ') has exited (code: ' + code + ', signal: ' + signal + ')');
if (!(worker.suicide || code === 0)) {
console.log('[cluster] Spinning up another process...');
@@ -83,7 +84,7 @@ Loader.addWorkerEvents = function (worker) {
}
});
worker.on('message', (message) => {
worker.on('message', function (message) {
if (message && typeof message === 'object' && message.action) {
switch (message.action) {
case 'restart':
@@ -91,12 +92,12 @@ Loader.addWorkerEvents = function (worker) {
Loader.restart();
break;
case 'pubsub':
workers.forEach((w) => {
workers.forEach(function (w) {
w.send(message);
});
break;
case 'socket.io':
workers.forEach((w) => {
workers.forEach(function (w) {
if (w !== worker) {
w.send(message);
}
@@ -109,9 +110,9 @@ Loader.addWorkerEvents = function (worker) {
Loader.start = function (callback) {
numProcs = getPorts().length;
console.log(`Clustering enabled: Spinning up ${numProcs} process(es).\n`);
console.log('Clustering enabled: Spinning up ' + numProcs + ' process(es).\n');
for (let x = 0; x < numProcs; x += 1) {
for (var x = 0; x < numProcs; x += 1) {
forkWorker(x, x === 0);
}
@@ -121,18 +122,18 @@ Loader.start = function (callback) {
};
function forkWorker(index, isPrimary) {
const ports = getPorts();
const args = [];
var ports = getPorts();
var args = [];
if (!ports[index]) {
return console.log(`[cluster] invalid port for worker : ${index} ports: ${ports.length}`);
return console.log('[cluster] invalid port for worker : ' + index + ' ports: ' + ports.length);
}
process.env.isPrimary = isPrimary;
process.env.isCluster = nconf.get('isCluster') || ports.length > 1;
process.env.port = ports[index];
const worker = fork(appPath, args, {
var worker = fork(appPath, args, {
silent: silent,
env: process.env,
});
@@ -145,20 +146,20 @@ function forkWorker(index, isPrimary) {
Loader.addWorkerEvents(worker);
if (silent) {
const output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
var output = logrotate({ file: outputLogFilePath, size: '1m', keep: 3, compress: true });
worker.stdout.pipe(output);
worker.stderr.pipe(output);
}
}
function getPorts() {
const _url = nconf.get('url');
var _url = nconf.get('url');
if (!_url) {
console.log('[cluster] url is undefined, please check your config.json');
process.exit();
}
const urlObject = url.parse(_url);
let port = nconf.get('PORT') || nconf.get('port') || urlObject.port || 4567;
var urlObject = url.parse(_url);
var port = nconf.get('PORT') || nconf.get('port') || urlObject.port || 4567;
if (!Array.isArray(port)) {
port = [port];
}
@@ -171,13 +172,13 @@ Loader.restart = function () {
nconf.remove('file');
nconf.use('file', { file: pathToConfig });
fs.readFile(pathToConfig, { encoding: 'utf-8' }, (err, configFile) => {
fs.readFile(pathToConfig, { encoding: 'utf-8' }, function (err, configFile) {
if (err) {
console.error('Error reading config');
throw err;
}
const conf = JSON.parse(configFile);
var conf = JSON.parse(configFile);
nconf.stores.env.readOnly = false;
nconf.set('url', conf.url);
@@ -200,13 +201,13 @@ Loader.stop = function () {
};
function killWorkers() {
workers.forEach((worker) => {
workers.forEach(function (worker) {
worker.suicide = true;
worker.kill();
});
}
fs.open(pathToConfig, 'r', (err) => {
fs.open(pathToConfig, 'r', function (err) {
if (err) {
// No config detected, kickstart web installer
fork('app');
@@ -216,7 +217,7 @@ fs.open(pathToConfig, 'r', (err) => {
if (nconf.get('daemon') !== 'false' && nconf.get('daemon') !== false) {
if (file.existsSync(pidFilePath)) {
try {
const pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
var pid = fs.readFileSync(pidFilePath, { encoding: 'utf-8' });
process.kill(pid, 0);
process.exit();
} catch (e) {
@@ -237,7 +238,7 @@ fs.open(pathToConfig, 'r', (err) => {
Loader.init,
Loader.displayStartupMessages,
Loader.start,
], (err) => {
], function (err) {
if (err) {
console.error('[loader] Error during startup');
throw err;

View File

@@ -20,44 +20,15 @@
"es6": true
},
"rules": {
"comma-dangle": ["error", {
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "never"
}],
"block-scoped-var": "off",
"no-dupe-class-members": "off",
"prefer-object-spread": "off",
"prefer-reflect": "off",
// ES6
"prefer-rest-params": "off",
"prefer-spread": "off",
"prefer-arrow-callback": "off",
"prefer-template": "off",
"no-var": "off",
"object-shorthand": "off",
"vars-on-top": "off",
"prefer-destructuring": "off",
// identical to airbnb rule
// except for allowing for..in, because for..of is unavailable on some clients
"no-restricted-syntax": [
"error",
{
"selector": "ForOfStatement",
"message": "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations."
},
{
"selector": "LabeledStatement",
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
},
{
"selector": "WithStatement",
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
}
]
"prefer-arrow-callback": "off",
"prefer-spread": "off",
"prefer-object-spread": "off",
"prefer-reflect": "off",
"prefer-template": "off"
},
"parserOptions": {
"ecmaVersion": 2018,

View File

@@ -2,11 +2,11 @@
"events": "أحداث",
"no-events": "لا توجد أحداث",
"control-panel": "لوحة تحكم الأحداث",
"delete-events": "حذف الاحداث",
"filters": "تصفية",
"filters-apply": "تطبيق التصفية",
"filter-type": "نوع الحدث",
"filter-start": "تاريخ البدء",
"filter-end": "تاريخ الانتهاء",
"filter-perPage": "لكل صفحة"
"delete-events": "Delete Events",
"filters": "Filters",
"filters-apply": "Apply Filters",
"filter-type": "Event Type",
"filter-start": "Start Date",
"filter-end": "End Date",
"filter-perPage": "Per Page"
}

View File

@@ -2,7 +2,6 @@
"forum-traffic": "Forum Traffic",
"page-views": "مشاهدات الصفحات",
"unique-visitors": "زائرين فريدين",
"logins": "Logins",
"new-users": "New Users",
"posts": "مشاركات",
"topics": "مواضيع",
@@ -30,7 +29,6 @@
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>هذه نسخة <strong>ماقبل الإصدار</strong> من NodeBB. قد تحدث أخطاء غير مقصودة. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "المنتدى قيد التشغيل في وضع \"المطورين\". وقد تكون هناك ثغرات أمنية مفتوحة؛ من فضلك تواصل مع مسؤول نظامك.",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
@@ -77,12 +75,5 @@
"graphs.registered-users": "مستخدمين مسجلين",
"graphs.anonymous-users": "مستخدمين مجهولين",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
"no-users-browsing": "No users browsing"
}

View File

@@ -10,7 +10,6 @@
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Treat this category as a section",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -19,7 +18,6 @@
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"top-level": "Top Level",
"parent-category-none": "(None)",
"copy-parent": "Copy Parent",
"copy-settings": "Copy Settings From",
@@ -32,7 +30,6 @@
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -49,8 +46,6 @@
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",

View File

@@ -1,9 +1,5 @@
{
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"dashboard": "Dashboard",
"section-general": "عام",
"section-manage": "إدارة",

View File

@@ -1,12 +1,10 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"posts": "Post Pagination",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"max-posts-per-page": "Maximum posts per page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"max-topics-per-page": "Maximum topics per page",
"categories-per-page": "Categories per page"
"max-topics-per-page": "Maximum topics per page"
}

View File

@@ -16,7 +16,5 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
"flags.limit-per-target-placeholder": "Default: 0"
}

View File

@@ -1,8 +1,6 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",

View File

@@ -18,6 +18,5 @@
"watching.message": "You are now watching updates from this category and all subcategories",
"notwatching.message": "You are not watching updates from this category and all subcategories",
"ignoring.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "الأقسام المُتابعة",
"x-more-categories": "%1 more categories"
"watched-categories": "الأقسام المُتابعة"
}

View File

@@ -22,7 +22,6 @@
"invalid-username-or-password": "المرجود تحديد اسم مستخدم و كلمة مرور",
"invalid-search-term": "كلمة البحث غير صحيحة",
"invalid-url": "Invalid URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
"csrf-invalid": "لم تتمكن من تسجيل الدخول. هنالك أحتمال ان جلستك انتهت. رجاءًا حاول مرة اخرى.",
"invalid-pagination-value": "رقم الصفحة غير صحيح ، يجب أن يكون بين %1 و %2 .",
@@ -84,7 +83,6 @@
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "الرجاء الانتظار حتى يكتمل الرفع.",
"file-too-big": "الحد الأقصى لرفع الملفات %1 كيلو بت. رجاءًا ارفع ملف أصغر",
"guest-upload-disabled": "خاصية رفع الملفات غير مفعلة للزوار.",
@@ -179,8 +177,5 @@
"already-unblocked": "This user is already unblocked",
"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 &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via 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"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
}

View File

@@ -6,7 +6,6 @@
"assignee": "المحال إليه",
"update": "تحديث",
"updated": "تم التحديث",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"graph-label": "Daily Flags",

View File

@@ -46,9 +46,7 @@
"alert.success": "نجاح",
"alert.error": "خطأ",
"alert.banned": "محظور",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.banned.message": "لقد تم حظر حسابك. سيتم تسجيل الخروج.",
"alert.unfollow": "أنت لا تتابع %1 بعد الآن!",
"alert.follow": "أنت الآن تتابع %1!",
"users": "الأعضاء",
@@ -95,8 +93,6 @@
"guest": "زائر",
"guests": "الزوار",
"former_user": "A Former User",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "تم تحديث المنتدى",
"updated.message": "لقد تم تحديث المنتدى إلى آخر نسخة للتو. إضغط هنا لإعادة تحميل الصفحة.",
"privacy": "الخصوصية",

View File

@@ -35,7 +35,8 @@
"details.member_count": "عدد اﻷعضاء",
"details.creation_date": "تاريخ الإنشاء",
"details.description": "الوصف",
"details.member-post-cids": "Category IDs to display posts from",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.badge_preview": "معاينة الوسام",
"details.change_icon": "تغيير الأيقونة",
"details.change_label_colour": "Change Label Colour",

View File

@@ -8,6 +8,5 @@
"failed_login_attempt": "تسجيل الدخول غير ناجح",
"login_successful": "قمت بتسجيل الدخول بنجاح!",
"dont_have_account": "لا تملك حساب؟",
"logged-out-due-to-inactivity": "لقد تم تسجيل خروجك من لوحة تحكم بسبب عدم نشاطك",
"caps-lock-enabled": "Caps Lock is enabled"
"logged-out-due-to-inactivity": "لقد تم تسجيل خروجك من لوحة تحكم بسبب عدم نشاطك"
}

View File

@@ -24,8 +24,5 @@
"interstitial.errors-found": "تعذر علينا إتمام عملية التسجيل:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
"gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
}

View File

@@ -1,6 +1,5 @@
{
"topic": "موضوع",
"title": "Title",
"no_topics_found": "لا توجد مواضيع !",
"no_posts_found": "لا توجد مشاركات!",
"post_is_deleted": "هذه المشاركة محذوفة!",
@@ -36,19 +35,11 @@
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "اضغط هنا للعودة لأخر مشاركة مقروءة في الموضوع",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "هذه المشاركة محذوفة. فقط من لهم صلاحية الإشراف على ا لمشاركات يمكنهم معاينتها.",
"following_topic.message": "ستستلم تنبيها عند كل مشاركة جديدة في هذا الموضوع.",
@@ -113,7 +104,6 @@
"move_post": "نقل المشاركة",
"post_moved": "تم نقل المشاركة",
"fork_topic": "فرع الموضوع",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "إضغط على المشاركات التي تريد تفريعها",
"fork_no_pids": "لم تختر أي مشاركة",
"no-posts-selected": "No posts selected!",
@@ -127,8 +117,7 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "أدخل عنوان موضوعك هنا...",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -163,10 +152,8 @@
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 later",
"timeago_earlier": "%1 earlier",
"first-post": "First post",

View File

@@ -84,7 +84,6 @@
"remove_cover_picture_confirm": "هل تريد بالتأكيد إزالة صورة الغلاف؟",
"crop_picture": "إقتصاص الصورة",
"upload_cropped_picture": "إقتصاص ورفع",
"avatar-background-colour": "Avatar background colour",
"settings": "خيارات",
"show_email": "أظهر بريدي الإلكتروني",
"show_fullname": "أظهر اسمي الكامل",
@@ -136,7 +135,7 @@
"homepage": "الصفحة الرئيسية",
"homepage_description": "حدد صفحة لاستخدامها كصفحة رئيسية للمنتدى أو \"لا شيء\" لاستخدام الصفحة الرئيسية الافتراضية.",
"custom_route": "مسار الصفحة الرئيسية المخصصة",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"custom_route_help": "أدخل اسم مسار هنا، بدون أي شرطة مائلة (على سبيل المثال \"حديثة\" أو \"شائعة\")",
"sso.title": "خدمات تسجيل الدخول الموحد",
"sso.associated": "مرتبط مع",
"sso.not-associated": "انقر هنا لربط مع",

View File

@@ -2,7 +2,6 @@
"forum-traffic": "Трафик на форума",
"page-views": "Преглеждания на страниците",
"unique-visitors": "Уникални посетители",
"logins": "Вписвания",
"new-users": "Нови потребители",
"posts": "Публикации",
"topics": "Теми",
@@ -30,7 +29,6 @@
"upgrade-available": "<p>Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Това е остаряла предварителна версия на NodeBB. Има нова версия (версия %1). Ако имате възможност, <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">обновете NodeBB</a>.</p>",
"prerelease-warning": "<p>Това е версия за <strong>предварителен преглед</strong> на NodeBB. Възможно е да има неочаквани неизправности. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Форумът работи в режим за разработчици, така че може да бъде уязвим. Моля, свържете се със системния си администратор.</span>",
"latest-lookup-failed": "<p>Не може да бъде извършена проверка за последната налична версия на NodeBB</p>",
@@ -77,12 +75,5 @@
"graphs.registered-users": "Регистрирани потребители",
"graphs.anonymous-users": "Анонимни потребители",
"last-restarted-by": "Последно рестартиране от",
"no-users-browsing": "Няма разглеждащи потребители",
"back-to-dashboard": "Назад към таблото",
"details.no-users": "В избрания период не са се регистрирали нови потребители",
"details.no-topics": "В избрания период не са публикувани нови теми",
"details.no-logins": "В избрания период не са отчетени вписвания",
"details.logins-static": "NodeBB запазва данни за сесията в продължение на %1 дни, така че в следната таблица могат да се видят само последните активни сесии",
"details.logins-login-time": "Време на вписване"
"no-users-browsing": "Няма разглеждащи потребители"
}

View File

@@ -10,7 +10,6 @@
"custom-class": "Персонализиран клас",
"num-recent-replies": "Брой на скорошните отговори",
"ext-link": "Външна връзка",
"subcategories-per-page": "Брой подкатегории на страница",
"is-section": "Използване на тази категория като раздел",
"post-queue": "Опашка за публикации",
"tag-whitelist": "Списък от разрешени етикети",
@@ -19,7 +18,6 @@
"category-image": "Изображение на категорията",
"parent-category": "Базова категория",
"optional-parent-category": "(Незадължително) Базова категория",
"top-level": "Най-горно ниво",
"parent-category-none": "(Няма)",
"copy-parent": "Копиране на базовата",
"copy-settings": "Копиране на настройките от",
@@ -32,7 +30,6 @@
"edit": "Редактиране",
"analytics": "Анализи",
"view-category": "Преглед на категорията",
"set-order": "Запазване на реда",
"select-category": "Изберете категория",
"set-parent-category": "Задайте базова категория",
@@ -49,8 +46,6 @@
"privileges.no-users": "В тази категория няма правомощия за отделни потребители.",
"privileges.section-group": "Група",
"privileges.group-private": "Тази група е частна",
"privileges.inheritance-exception": "Тази група не наследява правомощията от групата на регистрираните потребители",
"privileges.banned-user-inheritance": "Блокираните потребители наследяват правомощията от групата на блокираните потребители",
"privileges.search-group": "Добавяне на група",
"privileges.copy-to-children": "Копиране в наследниците",
"privileges.copy-from-category": "Копиране от категория",

View File

@@ -1,9 +1,5 @@
{
"section-dashboard": "Табла",
"dashboard/overview": "Общ преглед",
"dashboard/logins": "Вписвания",
"dashboard/users": "Потребители",
"dashboard/topics": "Теми",
"dashboard": "Табло",
"section-general": "Общи",
"section-manage": "Управление",

View File

@@ -1,12 +1,10 @@
{
"pagination": "Настройки за страницирането",
"enable": "Разделяне на темите и публикациите на страници, вместо да се превърта безкрайно.",
"posts": "Странициране в публикациите",
"topics": "Странициране в темите",
"posts-per-page": "Публикации на страница",
"max-posts-per-page": "Максимален брой публикации на страница",
"categories": "Странициране на категориите",
"topics-per-page": "Теми на страница",
"max-topics-per-page": "Максимален брой теми на страница",
"categories-per-page": "Брой категории на страница"
"max-topics-per-page": "Максимален брой теми на страница"
}

View File

@@ -16,7 +16,5 @@
"flags": "Настройки за докладите",
"flags.limit-per-target": "Максимален брой докладвания на едно и също нещо",
"flags.limit-per-target-placeholder": "По подразбиране: 0",
"flags.limit-per-target-help": "Когато публикация или потребител бъде докладван няколко пъти, това се добавя към един общ доклад. Задайте на тази настройка стойност по-голяма от нула, за да ограничите броя на докладванията, които могат да бъдат натрупани към една публикация или потребител.",
"flags.auto-resolve-on-ban": "Автоматично премахване на всички доклади за потребител, когато той бъде блокиран"
"flags.limit-per-target-placeholder": "По подразбиране: 0"
}

View File

@@ -1,8 +1,6 @@
{
"tag": "Настройки за етикетите",
"link-to-manage": "Управление на етикетите",
"system-tags": "Системни етикети",
"system-tags-help": "Само потребителите с по-високи правомощия ще могат да използват тези етикети.",
"min-per-topic": "Минимален брой етикети за тема",
"max-per-topic": "Максимален брой етикети за тема",
"min-length": "Минимална дължина на етикетите",

View File

@@ -18,6 +18,5 @@
"watching.message": "Вече следите новите неща в категорията и подкатегориите ѝ",
"notwatching.message": "Вече не следите новите неща в категорията и подкатегориите ѝ",
"ignoring.message": "Вече пренебрегвате новите неща в тази категория и всички нейни подкатегории",
"watched-categories": "Следени категории",
"x-more-categories": "Още %1 категории"
"watched-categories": "Следени категории"
}

View File

@@ -22,7 +22,6 @@
"invalid-username-or-password": "Моля, въведете потребителско име и парола",
"invalid-search-term": "Грешен текст за търсене",
"invalid-url": "Грешен адрес",
"invalid-event": "Грешно събитие: %1",
"local-login-disabled": "Системата за местно вписване е изключена за непривилегированите акаунти.",
"csrf-invalid": "Не успяхме да Ви впишем, най-вероятно защото сесията Ви е изтекла. Моля, опитайте отново",
"invalid-pagination-value": "Грешен номер на странициране, трябва да бъде между %1 и %2",
@@ -84,7 +83,6 @@
"tag-too-long": "Моля, въведете по-кратък етикет. Етикетите трябва да съдържат не повече от %1 символ(а)",
"not-enough-tags": "Недостатъчно етикети. Темите трябва да имат поне %1 етикет(а)",
"too-many-tags": "Твърде много етикети. Темите не могат да имат повече от %1 етикет(а)",
"cant-use-system-tag": "Не можете да използвате този системен етикет.",
"still-uploading": "Моля, изчакайте качването да приключи.",
"file-too-big": "Максималният разрешен размер на файл е %1 КБ моля, качете по-малък файл",
"guest-upload-disabled": "Качването не е разрешено за гости",
@@ -179,8 +177,5 @@
"already-unblocked": "Този потребител вече е отблокиран",
"no-connection": "Изглежда има проблем с връзката Ви с Интернет",
"socket-reconnect-failed": "В момента сървърът е недостъпен. Натиснете тук, за да опитате отново, или опитайте пак по-късно.",
"plugin-not-whitelisted": "Добавката не може да бъде инсталирана само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP",
"topic-event-unrecognized": "Събитието „%1“ на темата е неизвестно",
"cant-set-child-as-parent": "Дъщерна категория не може да се зададе като базова такава",
"cant-set-self-as-parent": "Категорията не може да се зададе като базова категория на себе си"
"plugin-not-whitelisted": "Добавката не може да бъде инсталирана само добавки, одобрени от пакетния мениджър на NodeBB могат да бъдат инсталирани чрез ACP"
}

View File

@@ -6,7 +6,6 @@
"assignee": "Назначен",
"update": "Обновяване",
"updated": "Обновено",
"resolved": "Resolved",
"target-purged": "Съдържанието, за което се отнася този доклад, е било изтрито и вече не е налично.",
"graph-label": "Дневни етикети",

View File

@@ -46,9 +46,7 @@
"alert.success": "Готово",
"alert.error": "Грешка",
"alert.banned": "Блокиран",
"alert.banned.message": "Вие току-що бяхте блокиран. Достъпът Ви до системата е ограничен.",
"alert.unbanned": "Деблокиран",
"alert.unbanned.message": "Блокирането Ви беше премахнато",
"alert.banned.message": "Вие току-що бяхте блокиран. Сега ще излезете от системата.",
"alert.unfollow": "Вие вече не следвате %1!",
"alert.follow": "Вие следвате %1!",
"users": "Потребители",
@@ -95,8 +93,6 @@
"guest": "Гост",
"guests": "Гости",
"former_user": "Бивш потребител",
"system-user": "Системен",
"unknown-user": "Непознат потребител",
"updated.title": "Форумът е актуализиран",
"updated.message": "Този форум току-що беше актуализиран до най-новата версия. Натиснете тук, за да опресните страницата.",
"privacy": "Поверителност",

View File

@@ -35,7 +35,8 @@
"details.member_count": "Брой на членовете",
"details.creation_date": "Дата на създаване",
"details.description": "Описание",
"details.member-post-cids": "Идентификатори на категории, от които да се показват публикации",
"details.member-post-cids": "Категории, от които да се показват публикации",
"details.member-post-cids-help": "<strong>Забележка</strong>: Ако не изберете нито една категория, ще се смята, че са включени всички категории. Използвайте <code>CTRL</code> и <code>SHIFT</code>, за да изберете няколко възможности.",
"details.badge_preview": "Преглед на емблемата",
"details.change_icon": "Промяна на иконката",
"details.change_label_colour": "Промяна на цвета на етикета",

View File

@@ -8,6 +8,5 @@
"failed_login_attempt": "Неуспешно вписване",
"login_successful": "Вие влязохте успешно!",
"dont_have_account": "Нямате регистрация?",
"logged-out-due-to-inactivity": "Вие излязохте автоматично от администраторския контролен панел, поради бездействие.",
"caps-lock-enabled": "Главните букви са включени"
"logged-out-due-to-inactivity": "Вие излязохте автоматично от администраторския контролен панел, поради бездействие."
}

View File

@@ -24,8 +24,5 @@
"interstitial.errors-found": "Не можем да завършим Вашата регистрация:",
"gdpr_agree_data": "Съгласявам се това личната ми информация да се съхранява и обработва от този уеб сайт.",
"gdpr_agree_email": "Съгласявам се да получавам е-писма с резюмета и известия от този уеб сайт.",
"gdpr_consent_denied": "Трябва да се съгласите с това уеб сайтът да събира/обработва информацията Ви, и да Ви изпраща е-писма.",
"invite.error-admin-only": "Директното регистриране е изключено. Моля, свържете се с администратор за повече подробности.",
"invite.error-invite-only": "Директното регистриране е изключено. Трябва да получите покана от вече регистриран потребител, за да имате достъп до този форум.",
"invite.error-invalid-data": "Получените данни за регистрация не съответстват на нашите записи. Моля, свържете се с администратор за повече подробности."
"gdpr_consent_denied": "Трябва да се съгласите с това уеб сайтът да събира/обработва информацията Ви, и да Ви изпраща е-писма."
}

View File

@@ -1,6 +1,5 @@
{
"topic": "Тема",
"title": "Title",
"no_topics_found": "Няма намерени теми!",
"no_posts_found": "Няма намерени публикации!",
"post_is_deleted": "Публикацията е изтрита!",
@@ -36,19 +35,11 @@
"copy-ip": "Копиране на IP адреса",
"ban-ip": "Блокиране на IP адреса",
"view-history": "История на редакциите",
"locked-by": "Заключена от",
"unlocked-by": "Отключена от",
"pinned-by": "Закачена от",
"unpinned-by": "Откачена от",
"deleted-by": "Изтрита от",
"restored-by": "Възстановена от",
"queued-by": "Публикацията е добавена в опашката за одобрение &rarr;",
"bookmark_instructions": "Щракнете тук, за да се върнете към последно прочетената публикация в тази тема.",
"flag-post": "Докладване на тази публикация",
"flag-user": "Докладване на този потребител",
"already-flagged": "Вече е докладвано",
"view-flag-report": "Преглед на доклада",
"resolve-flag": "Resolve Flag",
"merged_message": "Тази тема беше слята в <a href=\"%1\">%2</a>",
"deleted_message": "Темата е изтрита. Само потребители с права за управление на темите могат да я видят.",
"following_topic.message": "Вече ще получавате известия когато някой публикува коментар в тази тема.",
@@ -113,7 +104,6 @@
"move_post": "Преместване на публикацията",
"post_moved": "Публикацията беше преместена!",
"fork_topic": "Разделяне на темата",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "Натиснете публикациите, които искате да отделите",
"fork_no_pids": "Няма избрани публикации!",
"no-posts-selected": "Няма избрани публикации!",
@@ -127,8 +117,7 @@
"merge-options": "Настройки за сливането",
"merge-select-main-topic": "Изберете основната тема",
"merge-new-title-for-topic": "Ново заглавие за темата",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"move_posts_instruction": "Натиснете публикациите, които искате да преместите, а след това идете в желаната тема и натиснете „Преместване“.",
"change_owner_instruction": "Натиснете публикациите, които искате да прехвърлите на друг потребител",
"composer.title_placeholder": "Въведете заглавието на темата си тук...",
"composer.handle_placeholder": "Въведете името тук",
@@ -163,10 +152,8 @@
"diffs.current-revision": "текуща версия",
"diffs.original-revision": "оригинална версия",
"diffs.restore": "Възстановяване на тази версия",
"diffs.restore-description": "След възстановяването към историята на редакциите на тази публикация ще бъде добавена нова версия.",
"diffs.restore-description": "Към историята на редакциите на тази публикация ще бъде добавена нова версия.",
"diffs.post-restored": "Публикацията е възстановена успешно до по-ранна версия",
"diffs.delete": "Изтриване на тази версия ",
"diffs.deleted": "Версията е изтрита",
"timeago_later": "%1 по-късно",
"timeago_earlier": "%1 по-рано",
"first-post": "Първа публикация",

View File

@@ -84,7 +84,6 @@
"remove_cover_picture_confirm": "Наистина ли искате да премахнете снимката на корицата?",
"crop_picture": "Орязване на снимката",
"upload_cropped_picture": "Орязване и качване",
"avatar-background-colour": "Фонов цвят за изображението",
"settings": "Настройки",
"show_email": "Да се показва е-пощата ми",
"show_fullname": "Да се показва цялото ми име",
@@ -136,7 +135,7 @@
"homepage": "Начална страница",
"homepage_description": "Изберете страница, която да използвате като начална за форума, или „Нищо“, за да използвате тази по подразбиране.",
"custom_route": "Път до персонализираната начална страница",
"custom_route_help": "Въведете името на пътя тук, без наклонена черта пред него (пример: „recent“ или \"category/2/general-discussion\")",
"custom_route_help": "Въведете името на пътя тук, без наклонена черта пред него (пример: „recent“ или „popular“)",
"sso.title": "Услуги за еднократно вписване",
"sso.associated": "Свързан с",
"sso.not-associated": "Натиснете тук, за да свържете с",

View File

@@ -2,7 +2,6 @@
"forum-traffic": "Forum Traffic",
"page-views": "Page Views",
"unique-visitors": "Unique Visitors",
"logins": "Logins",
"new-users": "New Users",
"posts": "Posts",
"topics": "Topics",
@@ -30,7 +29,6 @@
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>This is a <strong>pre-release</strong> version of NodeBB. Unintended bugs may occur. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
@@ -77,12 +75,5 @@
"graphs.registered-users": "Registered Users",
"graphs.anonymous-users": "Anonymous Users",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
"no-users-browsing": "No users browsing"
}

View File

@@ -10,7 +10,6 @@
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Treat this category as a section",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -19,7 +18,6 @@
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"top-level": "Top Level",
"parent-category-none": "(None)",
"copy-parent": "Copy Parent",
"copy-settings": "Copy Settings From",
@@ -32,7 +30,6 @@
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -49,8 +46,6 @@
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",

View File

@@ -1,9 +1,5 @@
{
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"dashboard": "Dashboard",
"section-general": "General",
"section-manage": "Manage",

View File

@@ -1,12 +1,10 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"posts": "Post Pagination",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"max-posts-per-page": "Maximum posts per page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"max-topics-per-page": "Maximum topics per page",
"categories-per-page": "Categories per page"
"max-topics-per-page": "Maximum topics per page"
}

View File

@@ -16,7 +16,5 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
"flags.limit-per-target-placeholder": "Default: 0"
}

View File

@@ -1,8 +1,6 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",

View File

@@ -18,6 +18,5 @@
"watching.message": "You are now watching updates from this category and all subcategories",
"notwatching.message": "You are not watching updates from this category and all subcategories",
"ignoring.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "প্রেক্ষিত বিভাগসমূহ",
"x-more-categories": "%1 more categories"
"watched-categories": "প্রেক্ষিত বিভাগসমূহ"
}

View File

@@ -22,7 +22,6 @@
"invalid-username-or-password": "অনুগ্রহ পূর্বক ইউজারনেম এবং পাসওয়ার্ড উভয়ই প্রদান করুন",
"invalid-search-term": "অগ্রহনযোগ্য সার্চ টার্ম",
"invalid-url": "Invalid URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
"csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
"invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",
@@ -84,7 +83,6 @@
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 character(s)",
"not-enough-tags": "Not enough tags. Topics must have at least %1 tag(s)",
"too-many-tags": "Too many tags. Topics can't have more than %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "আপলোড সম্পূর্ণ জন্য অনুগ্রহ করে অপেক্ষা করুন",
"file-too-big": "Maximum allowed file size is %1 kB - please upload a smaller file",
"guest-upload-disabled": "Guest uploading has been disabled",
@@ -179,8 +177,5 @@
"already-unblocked": "This user is already unblocked",
"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 &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via 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"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
}

View File

@@ -6,7 +6,6 @@
"assignee": "Assignee",
"update": "Update",
"updated": "Updated",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"graph-label": "Daily Flags",

View File

@@ -46,9 +46,7 @@
"alert.success": "সফল",
"alert.error": "ত্রুটি",
"alert.banned": "নিষিদ্ধ",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.banned.message": "আপনাকে কেবলই নিষিদ্ধ করা হয়েছে, আপনি এখন লগআউট হয়ে যাবেন।",
"alert.unfollow": "আপনি আর %1 কে অনুসরণ করছেন না!",
"alert.follow": "আপনি এখন %1 কে অনুসরণ করছেন!",
"users": "ব্যবহারকারীগণ",
@@ -95,8 +93,6 @@
"guest": "অতিথি",
"guests": "অতিথি",
"former_user": "A Former User",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "ফোরাম আপডেট করা হয়েছে",
"updated.message": "এই ফোরামে এইমাত্র সর্বশেষ সংস্করণে আপডেট করা হয়েছে। পৃষ্ঠাটি রিফ্রেশ করতে এখানে ক্লিক করুন।",
"privacy": "নিরাপত্তা",

View File

@@ -35,7 +35,8 @@
"details.member_count": "Member Count",
"details.creation_date": "Creation Date",
"details.description": "Description",
"details.member-post-cids": "Category IDs to display posts from",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_label_colour": "Change Label Colour",

View File

@@ -8,6 +8,5 @@
"failed_login_attempt": "Login Unsuccessful",
"login_successful": "আপনি সফলভাবে প্রবেশ করেছেন!",
"dont_have_account": "কোন একাউন্ট নেই?",
"logged-out-due-to-inactivity": "You have been logged out of the Admin Control Panel due to inactivity",
"caps-lock-enabled": "Caps Lock is enabled"
"logged-out-due-to-inactivity": "You have been logged out of the Admin Control Panel due to inactivity"
}

View File

@@ -24,8 +24,5 @@
"interstitial.errors-found": "আপনার নিবন্ধনটি সম্পূর্ণ করা সম্ভব হয় নি।",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
"gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
}

View File

@@ -1,6 +1,5 @@
{
"topic": "টপিক",
"title": "Title",
"no_topics_found": "কোন টপিক পাওয়া যায়নি!",
"no_posts_found": "কোন পোস্ট পাওয়া যায়নি",
"post_is_deleted": "এই পোস্টটি মুছে ফেলা হয়েছে!",
@@ -36,19 +35,11 @@
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "Click here to return to the last read post in this thread.",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "এই টপিকটি মুছে ফেলা হয়েছে। শুধুমাত্র টপিক ব্যবস্থাপনার ক্ষমতাপ্রাপ্ত সদস্যগণ এটি দেখতে পারবেন।",
"following_topic.message": "এখন থেকে এই টপিকে অন্যকেউ পোস্ট করলে আপনি নোটিফিকেশন পাবেন।",
@@ -113,7 +104,6 @@
"move_post": "পোষ্ট সরান",
"post_moved": "পোষ্ট সরানো হয়েছে",
"fork_topic": "টপিক ফর্ক করুন",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "যে পোষ্টটি ফর্ক করতে চান সেটি ক্লিক করুন",
"fork_no_pids": "কোন পোষ্ট সিলেক্ট করা হয় নি",
"no-posts-selected": "No posts selected!",
@@ -127,8 +117,7 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "আপনার টপিকের শিরোনাম দিন",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -163,10 +152,8 @@
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 later",
"timeago_earlier": "%1 earlier",
"first-post": "First post",

View File

@@ -84,7 +84,6 @@
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"crop_picture": "Crop picture",
"upload_cropped_picture": "Crop and upload",
"avatar-background-colour": "Avatar background colour",
"settings": "সেটিংস",
"show_email": "আমার ইমেইল দেখাও",
"show_fullname": "আমার সম্পূর্ণ নাম দেখাও",
@@ -136,7 +135,7 @@
"homepage": "Homepage",
"homepage_description": "Select a page to use as the forum homepage or 'None' to use the default homepage.",
"custom_route": "Custom Homepage Route",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\", or \"popular\")",
"sso.title": "Single Sign-on Services",
"sso.associated": "Associated with",
"sso.not-associated": "Click here to associate with",

View File

@@ -2,7 +2,6 @@
"forum-traffic": "Provoz fóra",
"page-views": "Zobrazení stránky",
"unique-visitors": "Jedineční návštěvníci",
"logins": "Logins",
"new-users": "Nový uživatelé",
"posts": "Příspěvky",
"topics": "Témata",
@@ -30,7 +29,6 @@
"upgrade-available": "<p>Nová verze (v%1) byla zveřejněna. Zvažte <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">aktualizaci vašeho NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Toto je zastaralá testovací verze NodeBB. Nová verze (v%1) byla zveřejněna. Zvažte <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">aktualizaci vaší verze NodeBB</a>.</p>",
"prerelease-warning": "<p>Toto je <strong>zkušební</strong> verze NodeBB. Mohou se vyskytnout různé chyby.<i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Fórum běží ve vývojářském režimu a může být potencionálně zranitelné . Kontaktujte správce systému.</span>",
"latest-lookup-failed": "<p>Náhled na poslední dostupnou verzi NodeBB</p>",
@@ -77,12 +75,5 @@
"graphs.registered-users": "Registrovaní uživatelé",
"graphs.anonymous-users": "Anonymní uživatelé",
"last-restarted-by": "Poslední restart od",
"no-users-browsing": "Nikdo si nic neprohlíží",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
"no-users-browsing": "Nikdo si nic neprohlíží"
}

View File

@@ -10,7 +10,6 @@
"custom-class": "Upravit třídu",
"num-recent-replies": "# posledních odpovědí",
"ext-link": "Externí odkaz",
"subcategories-per-page": "Subcategories per page",
"is-section": "Zacházet s kategorii jako se sekcí",
"post-queue": "Post queue",
"tag-whitelist": "Seznam povolených značek",
@@ -19,7 +18,6 @@
"category-image": "Obrázek kategorie",
"parent-category": "Nadřazená kategorie",
"optional-parent-category": "Nadřazená kategorie (doporučeno)",
"top-level": "Top Level",
"parent-category-none": "(nic)",
"copy-parent": "Kopírovat nadřazenou",
"copy-settings": "Kopírovat nastavení z",
@@ -32,7 +30,6 @@
"edit": "Upravit",
"analytics": "Analytika",
"view-category": "Zobrazit kategorii",
"set-order": "Set order",
"select-category": "Vyberte kategorii",
"set-parent-category": "Nastavit nadřazenou kategorii",
@@ -49,8 +46,6 @@
"privileges.no-users": "V této kategorii není nastaveno žádné oprávnění uživatele.",
"privileges.section-group": "Skupina",
"privileges.group-private": "Tato skupina je soukromá",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Přidat skupinu",
"privileges.copy-to-children": "Kopírovat do podřazené",
"privileges.copy-from-category": "Kopírovat z kategorie",

View File

@@ -1,9 +1,5 @@
{
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"dashboard": "Dashboard",
"section-general": "Všeobecné",
"section-manage": "Spravovat",

View File

@@ -1,12 +1,10 @@
{
"pagination": "Nastavení stránkování",
"enable": "Stránkovat témata a příspěvky namísto nekonečného posouvání",
"posts": "Post Pagination",
"topics": "Stránkování témat",
"posts-per-page": "Příspěvků na stránku",
"max-posts-per-page": "Maximální množství příspěvků na stránku",
"categories": "Stránkování kategorii",
"topics-per-page": "Témat na stránku",
"max-topics-per-page": "Maximální množství témat na stránku",
"categories-per-page": "Categories per page"
"max-topics-per-page": "Maximální množství témat na stránku"
}

View File

@@ -16,7 +16,5 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
"flags.limit-per-target-placeholder": "Default: 0"
}

View File

@@ -1,8 +1,6 @@
{
"tag": "Nastavení značky",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimální počet značek/téma",
"max-per-topic": "maximální počet značek/téma",
"min-length": "Minimální délka značky",

View File

@@ -18,6 +18,5 @@
"watching.message": "Nyní sledujete aktualizace pro tuto kategorii a všech podkategorii",
"notwatching.message": "Nyní nesledujete aktualizace z této kategorie a všech podkategorií",
"ignoring.message": "Nyní ignorujete aktualizace této kategorie a všech jejich kategorii",
"watched-categories": "Sledované kategorie",
"x-more-categories": "%1 more categories"
"watched-categories": "Sledované kategorie"
}

View File

@@ -22,7 +22,6 @@
"invalid-username-or-password": "Zadejte prosím uživatelské jméno a i heslo",
"invalid-search-term": "Neplatný výraz pro vyhledávání",
"invalid-url": "Neplatné URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Systém přihlášení pro místní účty byl zakázán pro neoprávněné účty.",
"csrf-invalid": "Není možné vás přihlásit, díky vypršení relace. Zkuste to prosím znovu.",
"invalid-pagination-value": "Neplatná hodnota stránkování, musí být alespoň %1 a nejvýše %2",
@@ -84,7 +83,6 @@
"tag-too-long": "Zadejte kratší značku. Značky nesmí být delší než %1 znaků",
"not-enough-tags": "Málo značek. Téma musí obsahovat alespoň %1 značek",
"too-many-tags": "Příliš mnoho značek. Téma nesmí mít více než %1 značek",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "Vyčkejte, než se vše kompletně nahraje.",
"file-too-big": "Maximální povolená velikost je %1 kB nahrajte menší soubor",
"guest-upload-disabled": "Nahrávání od hostů nebylo povoleno",
@@ -179,8 +177,5 @@
"already-unblocked": "Tento uživatel již byl odblokován",
"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 &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via 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"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
}

View File

@@ -6,7 +6,6 @@
"assignee": "Nabyvatel",
"update": "Aktualizovat",
"updated": "Aktualizováno",
"resolved": "Resolved",
"target-purged": "Obsah, na který se toto označení vztahuje, byl vymazán a již není k dispozici.",
"graph-label": "Denní označení",

View File

@@ -46,9 +46,7 @@
"alert.success": "Úspěšné",
"alert.error": "Chyba",
"alert.banned": "Zabanován",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.banned.message": "Byl jste zabanován, budete odhlášen.",
"alert.unfollow": "Již nesledujete %1!",
"alert.follow": "Nyní sledujete %1!",
"users": "Uživatelé",
@@ -95,8 +93,6 @@
"guest": "Host",
"guests": "Hosté",
"former_user": "Bývalý uživatel",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "Fórum bylo zaktualizováno",
"updated.message": "Toto fórum bylo právě aktualizováno na poslední verzi. Klikněte zde a obnovte tuto stránku.",
"privacy": "Soukromí",

View File

@@ -35,7 +35,8 @@
"details.member_count": "Počet členů",
"details.creation_date": "Datum vytvoření",
"details.description": "Popis",
"details.member-post-cids": "Category IDs to display posts from",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.badge_preview": "Náhled symbolu",
"details.change_icon": "Změnit ikonu",
"details.change_label_colour": "Změnit barvu popisu",

View File

@@ -8,6 +8,5 @@
"failed_login_attempt": "Přihlášení neúspěšné",
"login_successful": "Přihlášení proběhlo úspěšně!",
"dont_have_account": "Nemáte účet?",
"logged-out-due-to-inactivity": "Z důvodu nečinnosti jste byl odhlášen z ovládacího panelu administrátora",
"caps-lock-enabled": "Caps Lock is enabled"
"logged-out-due-to-inactivity": "Z důvodu nečinnosti jste byl odhlášen z ovládacího panelu administrátora"
}

View File

@@ -24,8 +24,5 @@
"interstitial.errors-found": "Nebylo možné dokončit vaší registraci:",
"gdpr_agree_data": "Dávám souhlas se sběrem a zpracováním mých osobních údajů na této webové stránce.",
"gdpr_agree_email": "Dávám souhlas k dostávání e-mailových přehledů a oznámení z týkající se této webové stránky.",
"gdpr_consent_denied": "Musíte dát souhlas této stránce sbírat/zpracovávat informace o vaší činnosti a odesílat vám e-maily.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
"gdpr_consent_denied": "Musíte dát souhlas této stránce sbírat/zpracovávat informace o vaší činnosti a odesílat vám e-maily."
}

View File

@@ -1,6 +1,5 @@
{
"topic": "Téma",
"title": "Title",
"no_topics_found": "Nebyla nalezena žádná témata.",
"no_posts_found": "Nebyly nalezeny žádné příspěvky.",
"post_is_deleted": "Tento příspěvek je vymazán.",
@@ -36,19 +35,11 @@
"copy-ip": "Kopírovat IP",
"ban-ip": "Zakázat IP",
"view-history": "Upravit historii",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "Pro návrat k poslednímu čtenému příspěvku v tématu, klikněte zde.",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "Toto téma bylo odstraněno. Jen uživatelé s oprávněním správy témat ho mohou vidět.",
"following_topic.message": "Nyní budete dostávat upozornění, jakmile někdo přidá příspěvek do tohoto tématu.",
@@ -113,7 +104,6 @@
"move_post": "Přesunout příspěvek",
"post_moved": "Příspěvek přesunut.",
"fork_topic": "Rozdělit příspěvek",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "Vyberte příspěvky, které chcete oddělit",
"fork_no_pids": "Nebyly vybrány žádné příspěvky.",
"no-posts-selected": "No posts selected!",
@@ -127,8 +117,7 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"change_owner_instruction": "Klikněte na příspěvek u kterého chcete změnit vlastníka",
"composer.title_placeholder": "Zadejte název tématu…",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -163,10 +152,8 @@
"diffs.current-revision": "aktuální revize",
"diffs.original-revision": "originální revize",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 později",
"timeago_earlier": "%1 dříve",
"first-post": "First post",

View File

@@ -84,7 +84,6 @@
"remove_cover_picture_confirm": "Jste si jist/a, že chcete smazat obrázek?",
"crop_picture": "Oříznout obrázek",
"upload_cropped_picture": "Oříznout a nahrát",
"avatar-background-colour": "Avatar background colour",
"settings": "Nastavení",
"show_email": "Zobrazovat můj e-mail",
"show_fullname": "Zobrazovat celé jméno",
@@ -136,7 +135,7 @@
"homepage": "Domovská stránka",
"homepage_description": "Vyberte stránku, která má být domovskou stránkou fóra nebo vyberte „Nic” a bude použita výchozí domovská stránka.",
"custom_route": "Cesta k uživatelské domovské stránce",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"custom_route_help": "Zde zadejte název cesty - bez předcházejícího lomítka (např.: „Poslední” nebo „oblíbené”)",
"sso.title": "Služby jednotného přihlášení",
"sso.associated": "Přiřazeno k",
"sso.not-associated": "Zde klikněte pro přiřazení k",

View File

@@ -2,7 +2,6 @@
"forum-traffic": "Forum Traffik",
"page-views": "Side Visninger",
"unique-visitors": "Unikke Besøgere",
"logins": "Logins",
"new-users": "New Users",
"posts": "Posts",
"topics": "Topics",
@@ -30,7 +29,6 @@
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">upgrading your NodeBB</a>.</p>",
"prerelease-warning": "<p>Dette er en <strong>pre-release</strong> udgave af NodeBB. Uforventede bugs kan forekomme.<i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.</span>",
"latest-lookup-failed": "<p>Failed to look up latest available version of NodeBB</p>",
@@ -77,12 +75,5 @@
"graphs.registered-users": "Registered Users",
"graphs.anonymous-users": "Anonymous Users",
"last-restarted-by": "Last restarted by",
"no-users-browsing": "No users browsing",
"back-to-dashboard": "Back to Dashboard",
"details.no-users": "No users have joined within the selected timeframe",
"details.no-topics": "No topics have been posted within the selected timeframe",
"details.no-logins": "No logins have been recorded within the selected timeframe",
"details.logins-static": "NodeBB only saves session data for %1 days, and so this table below will only show the most recently active sessions",
"details.logins-login-time": "Login Time"
"no-users-browsing": "No users browsing"
}

View File

@@ -10,7 +10,6 @@
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Treat this category as a section",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -19,7 +18,6 @@
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"top-level": "Top Level",
"parent-category-none": "(None)",
"copy-parent": "Copy Parent",
"copy-settings": "Copy Settings From",
@@ -32,7 +30,6 @@
"edit": "Edit",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
@@ -49,8 +46,6 @@
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",

View File

@@ -1,9 +1,5 @@
{
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"dashboard": "Dashboard",
"section-general": "General",
"section-manage": "Manage",

View File

@@ -1,12 +1,10 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"posts": "Post Pagination",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"max-posts-per-page": "Maximum posts per page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"max-topics-per-page": "Maximum topics per page",
"categories-per-page": "Categories per page"
"max-topics-per-page": "Maximum topics per page"
}

View File

@@ -16,7 +16,5 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
"flags.limit-per-target-placeholder": "Default: 0"
}

View File

@@ -1,8 +1,6 @@
{
"tag": "Tag Settings",
"link-to-manage": "Manage Tags",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",

View File

@@ -18,6 +18,5 @@
"watching.message": "You are now watching updates from this category and all subcategories",
"notwatching.message": "You are not watching updates from this category and all subcategories",
"ignoring.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "Fulgte kategorier",
"x-more-categories": "%1 more categories"
"watched-categories": "Fulgte kategorier"
}

View File

@@ -22,7 +22,6 @@
"invalid-username-or-password": "Venligst angiv både brugernavn og adgangskode",
"invalid-search-term": "Ugyldig søgeterm",
"invalid-url": "Invalid URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Local login system has been disabled for non-privileged accounts.",
"csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
"invalid-pagination-value": "Ugyldig side værdi, skal mindst være %1 og maks. %2",
@@ -84,7 +83,6 @@
"tag-too-long": "Indtast et længere tag. Tags kan ikke være længere end %1 karakter(er).",
"not-enough-tags": "Ikke nok tags. Tråde skal have mindst %1 tag(s)",
"too-many-tags": "For mange tags. Tråde kan ikke have mere end %1 tag(s)",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "Venligst vent til overførslen er færdig",
"file-too-big": "Maksimum filstørrelse er %1 kB - venligst overfør en mindre fil",
"guest-upload-disabled": "Gæsteupload er deaktiveret",
@@ -179,8 +177,5 @@
"already-unblocked": "This user is already unblocked",
"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 &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via 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"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
}

View File

@@ -6,7 +6,6 @@
"assignee": "Assignee",
"update": "Update",
"updated": "Updated",
"resolved": "Resolved",
"target-purged": "The content this flag referred to has been purged and is no longer available.",
"graph-label": "Daily Flags",

View File

@@ -46,9 +46,7 @@
"alert.success": "Succes",
"alert.error": "Fejl",
"alert.banned": "Forment adgang",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.banned.message": "Du er lige blevet udelukket, du vil nu blive logget ud.",
"alert.unfollow": "Du følger ikke længere %1!",
"alert.follow": "Du følger nu %1!",
"users": "Bruger",
@@ -95,8 +93,6 @@
"guest": "Gæst",
"guests": "Gæster",
"former_user": "A Former User",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "Forum opdateret",
"updated.message": "Dette form er lige blevet opdateret til den seneste version. Klik her for at genindlæse siden.",
"privacy": "Privatliv",

View File

@@ -35,7 +35,8 @@
"details.member_count": "Medlemsantal",
"details.creation_date": "Oprettelsesdato",
"details.description": "Beskrivelse",
"details.member-post-cids": "Category IDs to display posts from",
"details.member-post-cids": "Categories to display posts from",
"details.member-post-cids-help": "<strong>Note</strong>: Selecting no categories will assume all categories are included. Use <code>ctrl</code> and <code>shift</code> to select multiple options.",
"details.badge_preview": "Mærke forhåndsvisning",
"details.change_icon": "Skift ikon",
"details.change_label_colour": "Change Label Colour",

View File

@@ -8,6 +8,5 @@
"failed_login_attempt": "Log Ind Mislykkedes",
"login_successful": "Du har successfuldt logged in!",
"dont_have_account": "Har du ikke en konto?",
"logged-out-due-to-inactivity": "Du er blevet logged af Admin Kontrol Panelet, på grund af din inaktiviet.",
"caps-lock-enabled": "Caps Lock is enabled"
"logged-out-due-to-inactivity": "Du er blevet logged af Admin Kontrol Panelet, på grund af din inaktiviet."
}

View File

@@ -24,8 +24,5 @@
"interstitial.errors-found": "We could not complete your registration:",
"gdpr_agree_data": "I consent to the collection and processing of my personal information on this website.",
"gdpr_agree_email": "I consent to receive digest and notification emails from this website.",
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails.",
"invite.error-admin-only": "Direct user registration has been disabled. Please contact an administrator for more details.",
"invite.error-invite-only": "Direct user registration has been disabled. You must be invited by an existing user in order to access this forum.",
"invite.error-invalid-data": "The registration data received does not correspond to our records. Please contact an administrator for more details"
"gdpr_consent_denied": "You must give consent to this site to collect/process your information, and to send you emails."
}

View File

@@ -1,6 +1,5 @@
{
"topic": "Tråd",
"title": "Title",
"no_topics_found": "Ingen tråde fundet",
"no_posts_found": "Ingen indlæg fundet!",
"post_is_deleted": "Dette indlæg er slettet!",
@@ -36,19 +35,11 @@
"copy-ip": "Copy IP",
"ban-ip": "Ban IP",
"view-history": "Edit History",
"locked-by": "Locked by",
"unlocked-by": "Unlocked by",
"pinned-by": "Pinned by",
"unpinned-by": "Unpinned by",
"deleted-by": "Deleted by",
"restored-by": "Restored by",
"queued-by": "Post queued for approval &rarr;",
"bookmark_instructions": "Klik her for at vende tilbage til den sidst læste indlæg i denne tråd.",
"flag-post": "Flag this post",
"flag-user": "Flag this user",
"already-flagged": "Already Flagged",
"view-flag-report": "View Flag Report",
"resolve-flag": "Resolve Flag",
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
"deleted_message": "Denne tråd er blevet slettet. Kun brugere med emne behandlings privilegier kan se den.",
"following_topic.message": "Du vil nu modtage notifikationer når nogle skriver et indlæg i dette emne.",
@@ -113,7 +104,6 @@
"move_post": "Flyt indlæg",
"post_moved": "Indlæg flyttet!",
"fork_topic": "Fraskil tråd",
"enter-new-topic-title": "Enter new topic title",
"fork_topic_instruction": "Klik på indlæg du ønsker at fraskille",
"fork_no_pids": "Ingen indlæg valgt",
"no-posts-selected": "No posts selected!",
@@ -127,8 +117,7 @@
"merge-options": "Merge options",
"merge-select-main-topic": "Select the main topic",
"merge-new-title-for-topic": "New title for topic",
"topic-id": "Topic ID",
"move_posts_instruction": "Click the posts you want to move then enter a topic ID or go to the target topic",
"move_posts_instruction": "Click the posts you want to move then go to target topic and click move.",
"change_owner_instruction": "Click the posts you want to assign to another user",
"composer.title_placeholder": "Angiv din trådtittel her ...",
"composer.handle_placeholder": "Enter your name/handle here",
@@ -163,10 +152,8 @@
"diffs.current-revision": "current revision",
"diffs.original-revision": "original revision",
"diffs.restore": "Restore this revision",
"diffs.restore-description": "A new revision will be appended to this post's edit history after restoring.",
"diffs.restore-description": "A new revision will be appended to this post's edit history.",
"diffs.post-restored": "Post successfully restored to earlier revision",
"diffs.delete": "Delete this revision",
"diffs.deleted": "Revision deleted",
"timeago_later": "%1 later",
"timeago_earlier": "%1 earlier",
"first-post": "First post",

View File

@@ -84,7 +84,6 @@
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"crop_picture": "Crop picture",
"upload_cropped_picture": "Crop and upload",
"avatar-background-colour": "Avatar background colour",
"settings": "Indstillinger",
"show_email": "Vis min emailaddresse",
"show_fullname": "Vis mit fulde navn",
@@ -136,7 +135,7 @@
"homepage": "Hjemmeside",
"homepage_description": "Vælg en side som forummets hjemmeside, eller 'Ingen' for at bruge standard hjemmesiden.",
"custom_route": "Brugerdefinerede hjemme rute",
"custom_route_help": "Enter a route name here, without any preceding slash (e.g. \"recent\" or \"category/2/general-discussion\")",
"custom_route_help": "Indtast et rute navn her, uden nogle foregående skråstreg (f.eks. \"nyligt\" eller \"populært\")",
"sso.title": "Enkeltgangs Sign-on Servicer",
"sso.associated": "Forbundet med",
"sso.not-associated": "Klik her for at forbinde med",

View File

@@ -2,7 +2,6 @@
"forum-traffic": "Forum Traffic",
"page-views": "Seitenaufrufe",
"unique-visitors": "Individuelle Besucher",
"logins": "Anmeldungen",
"new-users": "Neue nutzende Person",
"posts": "Beiträge",
"topics": "Themen",
@@ -15,12 +14,12 @@
"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-error": "Bitte gib eine gültige Zeitspanne im Format <code>YYYY-MM-DD</code> an",
"stats.yesterday": "Gestern",
"stats.today": "Heute",
"stats.last-week": "Letzte Woche",
"stats.this-week": "Diese Woche",
"stats.last-month": "Letzter Monat",
"stats.this-month": "Dieser Monat",
"stats.yesterday": "Yesterday",
"stats.today": "Today",
"stats.last-week": "Last Week",
"stats.this-week": "This Week",
"stats.last-month": "Last Month",
"stats.this-month": "This Month",
"stats.all": "Alle",
"updates": "Updates",
@@ -30,7 +29,6 @@
"upgrade-available": "<p>Eine neuere Version (v%1) ist erschienen. Erwäge <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">NodeBB zu upgraden</a>.</p>",
"prerelease-upgrade-available": "<p>Das ist eine veraltete NodeBB-Vorabversion. Eine neuere Version (v%1) ist erschienen. Erwäge <a href=\"https://docs.nodebb.org/configuring/upgrade/\" target=\"_blank\">NodeBB zu upgraden</a>.</p>",
"prerelease-warning": "<p>Das ist eine <strong>pre-release</strong> Version von NodeBB. Es können ungewollte Fehler auftreten. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"fallback-emailer-not-found": "Fallback emailer not found!",
"running-in-development": "<span>Das Forum wurde im Entwicklermodus gestartet. Das Forum könnte potenziellen Gefahren ausgeliefert sein. Bitte kontaktiere den Systemadministrator.</span>",
"latest-lookup-failed": "<p>Beim nachschlagen der neuesten verfügbaren NodeBB Version ist ein Fehler aufgetreten</p>",
@@ -77,12 +75,5 @@
"graphs.registered-users": "Registrierte Benutzer",
"graphs.anonymous-users": "Anonyme Benutzer",
"last-restarted-by": "Zuletzt Neugestartet von: ",
"no-users-browsing": "Keine aktiven Benutzer",
"back-to-dashboard": "Zurück zur Übersicht",
"details.no-users": "Keine Benutzer sind im gewählten Zeitraum beigetreten",
"details.no-topics": "Keine Themen wurden im gewählten Zeitraum beigetreten",
"details.no-logins": "Keine Logins wurden im gewählten Zeitraum festgestellt",
"details.logins-static": "NodeBB speichert Sitzungsdaten nur für %1 Tage, deshalb zeigt die untere Tabelle nur die neuesten, aktiven Sitzungen",
"details.logins-login-time": "Anmelde Zeit"
"no-users-browsing": "Keine aktiven Benutzer"
}

View File

@@ -10,7 +10,6 @@
"custom-class": "Benutzderdefinierte Klasse",
"num-recent-replies": "Anzahl neuer Antworten",
"ext-link": "Externer Link",
"subcategories-per-page": "Subcategories per page",
"is-section": "Behandle diese Kategorie als Abschnitt",
"post-queue": "Post queue",
"tag-whitelist": "Tag Whitelist",
@@ -19,7 +18,6 @@
"category-image": "Kategoriebild",
"parent-category": "Übergeordnete Kategorie",
"optional-parent-category": "(Optional) Übergeordnete Kategorie",
"top-level": "Top Level",
"parent-category-none": "(Keine)",
"copy-parent": "Copy Parent",
"copy-settings": "Kopiere Einstellungen von",
@@ -32,7 +30,6 @@
"edit": "Bearbeiten",
"analytics": "Analytics",
"view-category": "View category",
"set-order": "Set order",
"select-category": "Kategorie auswählen",
"set-parent-category": "Übergeordnete Kategorie festlegen",
@@ -49,8 +46,6 @@
"privileges.no-users": "Keine benutzerspezifischen Berechtigungen in dieser Kategorie.",
"privileges.section-group": "Gruppe",
"privileges.group-private": "Diese Gruppe ist privat",
"privileges.inheritance-exception": "This group does not inherit privileges from registered-users group",
"privileges.banned-user-inheritance": "Banned users inherit privileges from banned-users group",
"privileges.search-group": "Gruppe hinzufügen",
"privileges.copy-to-children": "In Untergeordnete kopieren",
"privileges.copy-from-category": "Kopiere von Kategorie",

View File

@@ -1,16 +1,16 @@
{
"global": "Global",
"admin": "Administrator",
"group-privileges": "Gruppen Rechte",
"user-privileges": "Benutzer Rechte",
"edit-privileges": "Rechte bearbeiten",
"select-clear-all": "Alle Aus-/Abwählen",
"admin": "Admin",
"group-privileges": "Group Privileges",
"user-privileges": "User Privileges",
"edit-privileges": "Edit Privileges",
"select-clear-all": "Select/Clear All",
"chat": "Chat",
"upload-images": "Bilder hochladen",
"upload-files": "Dateien hochladen",
"signature": "Signatur",
"ban": "Bannen",
"invite": "Einladen",
"invite": "Invite",
"search-content": "Inhalt durchsuchen",
"search-users": "Benutzersuche",
"search-tags": "Tags suchen",
@@ -19,7 +19,7 @@
"view-groups": "Gruppen ansehen",
"allow-local-login": "Lokaler Login",
"allow-group-creation": "Gruppen erstellen",
"view-users-info": "Benutzerinfo anzeigen",
"view-users-info": "View Users Info",
"find-category": "Kategorie finden",
"access-category": "Kategoriezutritt",
"access-topics": "Themenzutritt",
@@ -35,25 +35,25 @@
"delete-topics": "Themen entfernen",
"purge": "Endgültig löschen",
"moderate": "Moderieren",
"admin-dashboard": "Übersicht",
"admin-categories": "Kategorien",
"admin-privileges": "Rechte",
"admin-dashboard": "Dashboard",
"admin-categories": "Categories",
"admin-privileges": "Privileges",
"admin-users": "Nutzende Personen",
"admin-admins-mods": "Administratoren & Moderatoren",
"admin-groups": "Gruppen",
"admin-tags": "Schlagworte",
"admin-admins-mods": "Admins &amp; Mods",
"admin-groups": "Groups",
"admin-tags": "Tags",
"admin-settings": "Einstellungen",
"alert.confirm-moderate": "<strong>Bist Du sicher, dass du dieser Gruppe das Moderationsrecht gewähren möchtest?</strong> Diese Gruppe ist öffentlich, und alle Benutzer können nach Belieben beitreten.",
"alert.confirm-admins-mods": "<strong>Bist Du sicher, dass du \"Administrator & Moderator\" Rechte zu dieser Gruppe hinzufügen willst?</strong>Benutzer mit diesen Rechten können andere Benutzer in privilegierte Positionen heraufstufen und herabstufen, <em>super Administrator eingeschlossen!</em>",
"alert.confirm-save": "Bitte bestätige Deine Absicht, diese Rechte zu speichern",
"alert.saved": "Änderungen an Rechten gespeichert und angewendet",
"alert.confirm-discard": "Bist du sicher, dass du die Änderungen an den Rechten verwerfen möchtest?",
"alert.discarded": "Änderungen an Rechten verworfen",
"alert.confirm-copyToAll": "Bist Du sicher, dass Du diese Rechte auf <strong>alle Kategorien</strong> anwenden möchtest?",
"alert.confirm-copyToAllGroup": "Bist Du sicher, dass Du die Rechte dieser Gruppe auf <strong>alle Kategorien</strong> anwenden möchtest?",
"alert.confirm-copyToChildren": "Bist Du sicher, dass Du diese Rechte auf <strong>alle Unterkategorien</strong> anwenden möchtest?",
"alert.confirm-copyToChildrenGroup": "Bist Du sicher, dass Du die Rechte dieser Gruppe auf <strong>alle Unterkategorien</strong> anwenden möchtest?",
"alert.no-undo": "<em>Dieser Vorgang kann nicht rückgängig gemacht werden.</em>",
"alert.admin-warning": "Administratoren erhalten implizit alle Berechtigungen"
"alert.confirm-moderate": "<strong>Are you sure you wish to grant the moderation privilege to this user group?</strong> This group is public, and any users can join at will.",
"alert.confirm-admins-mods": "<strong>Are you sure you wish to grant the &quot;Admins &amp; Mods&quot; privilege to this user/group?</strong> Users with this privilege are able to promote and demote other users into privileged positions, <em>including super administrator</em>",
"alert.confirm-save": "Please confirm your intention to save these privileges",
"alert.saved": "Privilege changes saved and applied",
"alert.confirm-discard": "Are you sure you wish to discard your privilege changes?",
"alert.discarded": "Privilege changes discarded",
"alert.confirm-copyToAll": "Are you sure you wish to apply this privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToAllGroup": "Are you sure you wish to apply this group's privilege set to <strong>all categories</strong>?",
"alert.confirm-copyToChildren": "Are you sure you wish to apply this privilege set to <strong>all descendant (child) categories</strong>?",
"alert.confirm-copyToChildrenGroup": "Are you sure you wish to apply this group's privilege set to <strong>all descendant (child) categories</strong>?",
"alert.no-undo": "<em>This action cannot be undone.</em>",
"alert.admin-warning": "Administrators implicitly get all privileges"
}

View File

@@ -1,9 +1,5 @@
{
"section-dashboard": "Dashboards",
"dashboard/overview": "Overview",
"dashboard/logins": "Logins",
"dashboard/users": "Users",
"dashboard/topics": "Topics",
"dashboard": "Dashboard",
"section-general": "Allgemein",
"section-manage": "Verwalten",

View File

@@ -1,12 +1,10 @@
{
"pagination": "Seitennummerierungs Einstellungen",
"enable": "Themen in Seiten einteilen anstatt endlos zu scrollen",
"posts": "Post Pagination",
"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",
"categories-per-page": "Categories per page"
"max-topics-per-page": "Maximale Anzahl von Themen pro Seite"
}

View File

@@ -16,7 +16,5 @@
"flags": "Flag Settings",
"flags.limit-per-target": "Maximum number of times something can be flagged",
"flags.limit-per-target-placeholder": "Default: 0",
"flags.limit-per-target-help": "When a post or user is flagged multiple times, each additional flag is considered a &quot;report&quot; and added to the original flag. Set this option to a number other than zero to limit the number of reports an item can receive.",
"flags.auto-resolve-on-ban": "Automatically resolve all of a user's tickets when they are banned"
"flags.limit-per-target-placeholder": "Default: 0"
}

View File

@@ -1,8 +1,6 @@
{
"tag": "Tag-Einstellungen",
"link-to-manage": "Tags managen",
"system-tags": "System Tags",
"system-tags-help": "Only privileged users will be able to use these tags.",
"min-per-topic": "Minimale Tags pro Thema",
"max-per-topic": "Maximale Tags pro Thema",
"min-length": "Minimale Tag Länge",

View File

@@ -18,6 +18,5 @@
"watching.message": "Du beobachtest jetzt Aktualisierungen aus dieser Kategorie und allen Unterkategorien",
"notwatching.message": "Du beobachtest jetzt keine Aktualisierungen aus dieser Kategorie und allen Unterkategorien",
"ignoring.message": "Du ignorierst jetzt Aktualisierungen aus dieser Kategorie und allen Unterkategorien",
"watched-categories": "Beobachtete Kategorien",
"x-more-categories": "%1 more categories"
"watched-categories": "Beobachtete Kategorien"
}

View File

@@ -22,7 +22,6 @@
"invalid-username-or-password": "Bitte gib sowohl einen Benutzernamen als auch ein Passwort an",
"invalid-search-term": "Ungültige Suchanfrage",
"invalid-url": "Ungültige URL",
"invalid-event": "Invalid event: %1",
"local-login-disabled": "Lokales Login System wurde für nicht-priviligierte Konten deaktiviert.",
"csrf-invalid": "Dein Login war nicht erfolgreich da wahrscheinlich deine Sitzung abgelaufen ist. Bitte versuche es noch einmal",
"invalid-pagination-value": "Ungültige Seitennummerierung, muss mindestens %1 und maximal %2 sein",
@@ -84,7 +83,6 @@
"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",
"too-many-tags": "Zu viele Schlagworte. Themen dürfen nicht mehr als %1 Schlagwort(e) enthalten",
"cant-use-system-tag": "You can not use this system tag.",
"still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.",
"file-too-big": "Die maximale Dateigröße ist %1 kB, bitte lade eine kleinere Datei hoch.",
"guest-upload-disabled": "Uploads für Gäste wurden deaktiviert.",
@@ -179,8 +177,5 @@
"already-unblocked": "Dieser Nutzer ist bereits entsperrt",
"no-connection": "Es scheint als gäbe es ein Problem mit deiner Internetverbindung",
"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 &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via 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"
"plugin-not-whitelisted": "Unable to install plugin &ndash; only plugins whitelisted by the NodeBB Package Manager can be installed via the ACP"
}

View File

@@ -6,7 +6,6 @@
"assignee": "Zugeordneter Benutzer",
"update": "Aktualisieren",
"updated": "Aktualisiert",
"resolved": "Resolved",
"target-purged": "Der Inhalt auf den diese Meldung hingewiesen hat, wurde gelöscht und ist nicht mehr verfügbar.",
"graph-label": "Tägliche Meldungen",

View File

@@ -46,9 +46,7 @@
"alert.success": "Erfolg",
"alert.error": "Fehler",
"alert.banned": "Gesperrt",
"alert.banned.message": "You have just been banned, your access is now restricted.",
"alert.unbanned": "Unbanned",
"alert.unbanned.message": "Your ban has been lifted.",
"alert.banned.message": "Du bist gesperrt und wirst nun abgemeldet.",
"alert.unfollow": "Du folgst %1 nicht länger!",
"alert.follow": "Du folgst nun %1!",
"users": "Benutzer",
@@ -95,8 +93,6 @@
"guest": "Gast",
"guests": "Gäste",
"former_user": "Ein ehemaliger Benutzer",
"system-user": "System",
"unknown-user": "Unknown user",
"updated.title": "Forum aktualisiert",
"updated.message": "Dieses Forum wurde gerade auf die neueste Version aktualisiert. Klicke hier, um die Seite neuzuladen.",
"privacy": "Privatsphäre",

Some files were not shown because too many files have changed in this diff Show More