Resolve merge conflicts

v1.18.x
Peter Jaszkowiak 8 years ago
commit 360a35d0a6

@ -27,6 +27,8 @@ module.exports = function (grunt) {
compiling = 'js';
} else if (target === 'templatesUpdated') {
compiling = 'tpl';
} else if (target === 'langUpdated') {
compiling = 'lang';
} else if (target === 'serverUpdated') {
// Do nothing, just restart
}
@ -93,7 +95,19 @@ module.exports = function (grunt) {
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**'
]
}
},
langUpdated: {
files: [
'public/language/en-GB/*.json',
'public/language/en-GB/**/*.json',
'node_modules/nodebb-*/**/*.json',
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
'!node_modules/nodebb-*/plugin.json',
'!node_modules/nodebb-*/package.json',
'!node_modules/nodebb-*/theme.json',
],
},
}
});

@ -75,7 +75,7 @@ if (nconf.get('setup') || nconf.get('install')) {
} else if (nconf.get('reset')) {
async.waterfall([
async.apply(require('./src/reset').reset),
async.apply(require('./build').buildAll)
async.apply(require('./src/meta/build').buildAll)
], function (err) {
process.exit(err ? 1 : 0);
});
@ -84,7 +84,7 @@ if (nconf.get('setup') || nconf.get('install')) {
} else if (nconf.get('plugins')) {
listPlugins();
} else if (nconf.get('build')) {
require('./build').build(nconf.get('build'));
require('./src/meta/build').build(nconf.get('build'));
} else {
require('./src/start').start();
}
@ -126,7 +126,7 @@ function setup() {
winston.info('NodeBB Setup Triggered via Command Line');
var install = require('./src/install');
var build = require('./build');
var build = require('./src/meta/build');
process.stdout.write('\nWelcome to NodeBB!\n');
process.stdout.write('\nThis looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.\n');
@ -174,7 +174,7 @@ function upgrade() {
var db = require('./src/database');
var meta = require('./src/meta');
var upgrade = require('./src/upgrade');
var build = require('./build');
var build = require('./src/meta/build');
async.series([
async.apply(db.init),

@ -151,9 +151,25 @@ function getPorts() {
Loader.restart = function () {
killWorkers();
var pathToConfig = path.join(__dirname, '/config.json');
nconf.remove('file');
nconf.use('file', { file: path.join(__dirname, '/config.json') });
Loader.start();
nconf.use('file', { file: pathToConfig });
fs.readFile(pathToConfig, {encoding: 'utf-8'}, function (err, configFile) {
if (err) {
console.log('Error reading config : ' + err.message);
process.exit();
}
var conf = JSON.parse(configFile);
nconf.stores.env.readOnly = false;
nconf.set('url', conf.url);
nconf.stores.env.readOnly = true;
Loader.start();
});
};
Loader.reload = function () {

783
nodebb

@ -1,15 +1,17 @@
#!/usr/bin/env node
'use strict';
try {
var colors = require('colors'),
cproc = require('child_process'),
argv = require('minimist')(process.argv.slice(2)),
fs = require('fs'),
path = require('path'),
request = require('request'),
semver = require('semver'),
prompt = require('prompt'),
async = require('async');
require('colors');
var cproc = require('child_process');
var args = require('minimist')(process.argv.slice(2));
var fs = require('fs');
var path = require('path');
var request = require('request');
var semver = require('semver');
var prompt = require('prompt');
var async = require('async');
} catch (e) {
if (e.code === 'MODULE_NOT_FOUND') {
process.stdout.write('NodeBB could not be started because it\'s dependencies have not been installed.\n');
@ -21,407 +23,460 @@ try {
}
}
var getRunningPid = function (callback) {
fs.readFile(__dirname + '/pidfile', {
encoding: 'utf-8'
}, function (err, pid) {
if (err) {
return callback(err);
if (args.dev) {
process.env.NODE_ENV = 'development';
}
function getRunningPid(callback) {
fs.readFile(__dirname + '/pidfile', {
encoding: 'utf-8'
}, function (err, pid) {
if (err) {
return callback(err);
}
try {
process.kill(parseInt(pid, 10), 0);
callback(null, parseInt(pid, 10));
} catch(e) {
callback(e);
}
});
}
function getCurrentVersion(callback) {
fs.readFile(path.join(__dirname, 'package.json'), { encoding: 'utf-8' }, function (err, pkg) {
if (err) {
return callback(err);
}
try {
pkg = JSON.parse(pkg);
return callback(null, pkg.version);
} catch(err) {
return callback(err);
}
});
}
function fork(args) {
return cproc.fork('app.js', args, {
cwd: __dirname,
silent: false
});
}
function getInstalledPlugins(callback) {
async.parallel({
files: async.apply(fs.readdir, path.join(__dirname, 'node_modules')),
deps: async.apply(fs.readFile, path.join(__dirname, 'package.json'), { encoding: 'utf-8' })
}, function (err, payload) {
if (err) {
return callback(err);
}
var isNbbModule = /^nodebb-(?:plugin|theme|widget|rewards)-[\w\-]+$/,
moduleName, isGitRepo;
payload.files = payload.files.filter(function (file) {
return isNbbModule.test(file);
});
try {
payload.deps = JSON.parse(payload.deps).dependencies;
payload.bundled = [];
payload.installed = [];
} catch (err) {
return callback(err);
}
for (moduleName in payload.deps) {
if (isNbbModule.test(moduleName)) {
payload.bundled.push(moduleName);
}
}
// Whittle down deps to send back only extraneously installed plugins/themes/etc
payload.files.forEach(function (moduleName) {
try {
process.kill(parseInt(pid, 10), 0);
callback(null, parseInt(pid, 10));
fs.accessSync(path.join(__dirname, 'node_modules/' + moduleName, '.git'));
isGitRepo = true;
} catch(e) {
callback(e);
}
});
},
getCurrentVersion = function (callback) {
fs.readFile(path.join(__dirname, 'package.json'), { encoding: 'utf-8' }, function (err, pkg) {
if (err) {
return callback(err);
isGitRepo = false;
}
try {
pkg = JSON.parse(pkg);
return callback(null, pkg.version);
} catch(err) {
return callback(err);
if (
payload.files.indexOf(moduleName) !== -1 && // found in `node_modules/`
payload.bundled.indexOf(moduleName) === -1 && // not found in `package.json`
!fs.lstatSync(path.join(__dirname, 'node_modules/' + moduleName)).isSymbolicLink() && // is not a symlink
!isGitRepo // .git/ does not exist, so it is not a git repository
) {
payload.installed.push(moduleName);
}
});
},
fork = function (args) {
cproc.fork('app.js', args, {
cwd: __dirname,
silent: false
});
},
getInstalledPlugins = function (callback) {
async.parallel({
files: async.apply(fs.readdir, path.join(__dirname, 'node_modules')),
deps: async.apply(fs.readFile, path.join(__dirname, 'package.json'), { encoding: 'utf-8' })
}, function (err, payload) {
if (err) {
return callback(err);
}
var isNbbModule = /^nodebb-(?:plugin|theme|widget|rewards)-[\w\-]+$/,
moduleName, isGitRepo;
getModuleVersions(payload.installed, callback);
});
}
function getModuleVersions(modules, callback) {
var versionHash = {};
payload.files = payload.files.filter(function (file) {
return isNbbModule.test(file);
});
async.eachLimit(modules, 50, function (module, next) {
fs.readFile(path.join(__dirname, 'node_modules/' + module + '/package.json'), { encoding: 'utf-8' }, function (err, pkg) {
if (err) {
return next(err);
}
try {
payload.deps = JSON.parse(payload.deps).dependencies;
payload.bundled = [];
payload.installed = [];
pkg = JSON.parse(pkg);
versionHash[module] = pkg.version;
next();
} catch (err) {
return callback(err);
next(err);
}
});
}, function (err) {
callback(err, versionHash);
});
}
function checkPlugins(standalone, callback) {
if (standalone) {
process.stdout.write('Checking installed plugins and themes for updates... ');
}
for (moduleName in payload.deps) {
if (isNbbModule.test(moduleName)) {
payload.bundled.push(moduleName);
}
async.waterfall([
async.apply(async.parallel, {
plugins: async.apply(getInstalledPlugins),
version: async.apply(getCurrentVersion)
}),
function (payload, next) {
var toCheck = Object.keys(payload.plugins);
if (!toCheck.length) {
process.stdout.write('OK'.green + '\n'.reset);
return next(null, []); // no extraneous plugins installed
}
// Whittle down deps to send back only extraneously installed plugins/themes/etc
payload.files.forEach(function (moduleName) {
try {
fs.accessSync(path.join(__dirname, 'node_modules/' + moduleName, '.git'));
isGitRepo = true;
} catch(e) {
isGitRepo = false;
}
if (
payload.files.indexOf(moduleName) !== -1 // found in `node_modules/`
&& payload.bundled.indexOf(moduleName) === -1 // not found in `package.json`
&& !fs.lstatSync(path.join(__dirname, 'node_modules/' + moduleName)).isSymbolicLink() // is not a symlink
&& !isGitRepo // .git/ does not exist, so it is not a git repository
) {
payload.installed.push(moduleName);
}
});
getModuleVersions(payload.installed, callback);
});
},
getModuleVersions = function (modules, callback) {
var versionHash = {};
async.eachLimit(modules, 50, function (module, next) {
fs.readFile(path.join(__dirname, 'node_modules/' + module + '/package.json'), { encoding: 'utf-8' }, function (err, pkg) {
request({
method: 'GET',
url: 'https://packages.nodebb.org/api/v1/suggest?version=' + payload.version + '&package[]=' + toCheck.join('&package[]='),
json: true
}, function (err, res, body) {
if (err) {
process.stdout.write('error'.red + '\n'.reset);
return next(err);
}
process.stdout.write('OK'.green + '\n'.reset);
try {
pkg = JSON.parse(pkg);
versionHash[module] = pkg.version;
next();
} catch (err) {
next(err);
if (!Array.isArray(body) && toCheck.length === 1) {
body = [body];
}
var current, suggested,
upgradable = body.map(function (suggestObj) {
current = payload.plugins[suggestObj.package];
suggested = suggestObj.version;
if (suggestObj.code === 'match-found' && semver.gt(suggested, current)) {
return {
name: suggestObj.package,
current: current,
suggested: suggested
};
} else {
return null;
}
}).filter(Boolean);
next(null, upgradable);
});
}, function (err) {
callback(err, versionHash);
});
},
checkPlugins = function (standalone, callback) {
if (standalone) {
process.stdout.write('Checking installed plugins and themes for updates... ');
}
], callback);
}
function upgradePlugins(callback) {
var standalone = false;
if (typeof callback !== 'function') {
callback = function () {};
standalone = true;
}
async.waterfall([
async.apply(async.parallel, {
plugins: async.apply(getInstalledPlugins),
version: async.apply(getCurrentVersion)
}),
function (payload, next) {
var toCheck = Object.keys(payload.plugins);
if (!toCheck.length) {
process.stdout.write('OK'.green + '\n'.reset);
return next(null, []); // no extraneous plugins installed
}
checkPlugins(standalone, function (err, found) {
if (err) {
process.stdout.write('\Warning'.yellow + ': An unexpected error occured when attempting to verify plugin upgradability\n'.reset);
return callback(err);
}
request({
method: 'GET',
url: 'https://packages.nodebb.org/api/v1/suggest?version=' + payload.version + '&package[]=' + toCheck.join('&package[]='),
json: true
}, function (err, res, body) {
if (err) {
process.stdout.write('error'.red + '\n'.reset);
return next(err);
}
process.stdout.write('OK'.green + '\n'.reset);
if (found && found.length) {
process.stdout.write('\nA total of ' + String(found.length).bold + ' package(s) can be upgraded:\n');
found.forEach(function (suggestObj) {
process.stdout.write(' * '.yellow + suggestObj.name.reset + ' (' + suggestObj.current.yellow + ' -> '.reset + suggestObj.suggested.green + ')\n'.reset);
});
process.stdout.write('\n');
} else {
if (standalone) {
process.stdout.write('\nAll packages up-to-date!'.green + '\n'.reset);
}
return callback();
}
if (!Array.isArray(body) && toCheck.length === 1) {
body = [body];
}
prompt.message = '';
prompt.delimiter = '';
var current, suggested,
upgradable = body.map(function (suggestObj) {
current = payload.plugins[suggestObj.package];
suggested = suggestObj.version;
if (suggestObj.code === 'match-found' && semver.gt(suggested, current)) {
return {
name: suggestObj.package,
current: current,
suggested: suggested
};
} else {
return null;
}
}).filter(Boolean);
next(null, upgradable);
});
}
], callback);
},
upgradePlugins = function (callback) {
var standalone = false;
if (typeof callback !== 'function') {
callback = function () {};
standalone = true;
};
checkPlugins(standalone, function (err, found) {
prompt.start();
prompt.get({
name: 'upgrade',
description: 'Proceed with upgrade (y|n)?'.reset,
type: 'string'
}, function (err, result) {
if (err) {
process.stdout.write('\Warning'.yellow + ': An unexpected error occured when attempting to verify plugin upgradability\n'.reset);
return callback(err);
}
if (found && found.length) {
process.stdout.write('\nA total of ' + String(found.length).bold + ' package(s) can be upgraded:\n');
if (['y', 'Y', 'yes', 'YES'].indexOf(result.upgrade) !== -1) {
process.stdout.write('\nUpgrading packages...');
var args = ['i'];
found.forEach(function (suggestObj) {
process.stdout.write(' * '.yellow + suggestObj.name.reset + ' (' + suggestObj.current.yellow + ' -> '.reset + suggestObj.suggested.green + ')\n'.reset);
args.push(suggestObj.name + '@' + suggestObj.suggested);
});
cproc.execFile((process.platform === 'win32') ? 'npm.cmd' : 'npm', args, { stdio: 'ignore' }, function (err) {
if (!err) {
process.stdout.write(' OK\n'.green);
}
callback(err);
});
process.stdout.write('\n');
} else {
if (standalone) {
process.stdout.write('\nAll packages up-to-date!'.green + '\n'.reset);
}
return callback();
process.stdout.write('\nPackage upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade-plugins'.green + '".\n'.reset);
callback();
}
});
});
}
prompt.message = '';
prompt.delimiter = '';
prompt.start();
prompt.get({
name: 'upgrade',
description: 'Proceed with upgrade (y|n)?'.reset,
type: 'string'
}, function (err, result) {
if (err) {
return callback(err);
var commands = {
status: {
description: 'View the status of the NodeBB server',
usage: 'Usage: ' + './nodebb status'.yellow,
handler: function () {
getRunningPid(function (err, pid) {
if (!err) {
process.stdout.write('\nNodeBB Running '.bold + '(pid '.cyan + pid.toString().cyan + ')\n'.cyan);
process.stdout.write('\t"' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write('\t"' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
} else {
process.stdout.write('\nNodeBB is not running\n'.bold);
process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n'.reset);
}
if (['y', 'Y', 'yes', 'YES'].indexOf(result.upgrade) !== -1) {
process.stdout.write('\nUpgrading packages...');
var args = ['i'];
found.forEach(function (suggestObj) {
args.push(suggestObj.name + '@' + suggestObj.suggested);
});
require('child_process').execFile((process.platform === 'win32') ? 'npm.cmd' : 'npm', args, { stdio: 'ignore' }, function (err) {
if (!err) {
process.stdout.write(' OK\n'.green);
}
callback(err);
});
});
},
},
start: {
description: 'Start the NodeBB server',
usage: 'Usage: ' + './nodebb start'.yellow,
handler: function () {
process.stdout.write('\nStarting NodeBB\n'.bold);
process.stdout.write(' "' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write(' "' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write(' "' + './nodebb restart'.yellow + '" to restart NodeBB\n\n'.reset);
// Spawn a new NodeBB process
cproc.fork(__dirname + '/loader.js', {
env: process.env
});
},
},
stop: {
description: 'Stop the NodeBB server',
usage: 'Usage: ' + './nodebb stop'.yellow,
handler: function () {
getRunningPid(function (err, pid) {
if (!err) {
process.kill(pid, 'SIGTERM');
process.stdout.write('Stopping NodeBB. Goodbye!\n');
} else {
process.stdout.write('\nPackage upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade-plugins'.green + '".\n'.reset);
callback();
process.stdout.write('NodeBB is already stopped.\n');
}
});
});
};
switch(process.argv[2]) {
case 'status':
getRunningPid(function (err, pid) {
if (!err) {
process.stdout.write('\nNodeBB Running '.bold + '(pid '.cyan + pid.toString().cyan + ')\n'.cyan);
process.stdout.write('\t"' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write('\t"' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
} else {
process.stdout.write('\nNodeBB is not running\n'.bold);
process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n'.reset);
}
});
break;
case 'start':
process.stdout.write('\nStarting NodeBB\n'.bold);
process.stdout.write(' "' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
process.stdout.write(' "' + './nodebb log'.yellow + '" to view server output\n');
process.stdout.write(' "' + './nodebb restart'.yellow + '" to restart NodeBB\n\n'.reset);
// Spawn a new NodeBB process
cproc.fork(__dirname + '/loader.js', {
env: process.env
});
break;
case 'slog':
process.stdout.write('\nStarting NodeBB with logging output\n'.bold);
process.stdout.write('\nHit '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
// Spawn a new NodeBB process
cproc.fork(__dirname + '/loader.js', {
env: process.env
});
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit'
});
break;
case 'stop':
getRunningPid(function (err, pid) {
if (!err) {
process.kill(pid, 'SIGTERM');
process.stdout.write('Stopping NodeBB. Goodbye!\n');
} else {
process.stdout.write('NodeBB is already stopped.\n');
}
});
break;
case 'restart':
getRunningPid(function (err, pid) {
if (!err) {
process.kill(pid, 'SIGHUP');
process.stdout.write('\nRestarting NodeBB\n'.bold);
} else {
process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.\n');
}
});
break;
},
},
restart: {
description: 'Restart the NodeBB server',
usage: 'Usage: ' + './nodebb restart'.yellow,
handler: function () {
getRunningPid(function (err, pid) {
if (!err) {
process.kill(pid, 'SIGHUP');
process.stdout.write('\nRestarting NodeBB\n'.bold);
} else {
process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.\n');
}
});
},
},
log: {
description: 'Open the output log (useful for debugging)',
usage: 'Usage: ' + './nodebb log'.yellow,
handler: function () {
process.stdout.write('\nHit '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit'
});
},
},
slog: {
description: 'Start the NodeBB server and view the live output log',
usage: 'Usage: ' + './nodebb slog'.yellow,
handler: function () {
process.stdout.write('\nStarting NodeBB with logging output\n'.bold);
process.stdout.write('\nHit '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
// Spawn a new NodeBB process
cproc.fork(__dirname + '/loader.js', {
env: process.env
});
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit'
});
},
},
dev: {
description: 'Start NodeBB in verbose development mode',
usage: 'Usage: ' + './nodebb dev'.yellow,
handler: function () {
process.env.NODE_ENV = 'development';
cproc.fork(__dirname + '/loader.js', ['--no-daemon', '--no-silent'], {
env: process.env
});
},
},
build: {
description: 'Compile static assets (CSS, Javascript, etc)',
usage: 'Usage: ' + './nodebb build'.yellow + ' [js,clientCSS,acpCSS,tpl,lang]'.red + '\n' +
' e.g. ' + './nodebb build js,tpl'.yellow + '\tbuilds JS and templates\n' +
' ' + './nodebb build'.yellow + '\t\tbuilds all targets\n',
handler: function () {
var arr = ['--build'].concat(process.argv.slice(3));
fork(arr);
},
},
setup: {
description: 'Run the NodeBB setup script',
usage: 'Usage: ' + './nodebb setup'.yellow,
handler: function () {
var arr = ['--setup'].concat(process.argv.slice(3));
fork(arr);
},
},
reset: {
description: 'Disable plugins and restore the default theme',
usage: 'Usage: ' + './nodebb reset '.yellow + '{-t|-p|-w|-s|-a}'.red + '\n' +
' -t <theme>\tuse specified theme\n' +
' -p <plugin>\tdisable specified plugin\n' +
'\n' +
' -t\t\tuse default theme\n' +
' -p\t\tdisable all but core plugins\n' +
' -w\t\twidgets\n' +
' -s\t\tsettings\n' +
' -a\t\tall of the above\n',
handler: function () {
var arr = ['--reset'].concat(process.argv.slice(3));
fork(arr);
},
},
activate: {
description: 'Activate a plugin for the next startup of NodeBB',
usage: 'Usage: ' + './nodebb activate <plugin>'.yellow,
handler: function () {
var arr = ['--activate=' + args._[1]].concat(process.argv.slice(4));
fork(arr);
},
},
plugins: {
description: 'List all installed plugins',
usage: 'Usage: ' + './nodebb plugins'.yellow,
handler: function () {
var arr = ['--plugins'].concat(process.argv.slice(3));
fork(arr);
},
},
upgrade: {
description: 'Run NodeBB upgrade scripts, ensure packages are up-to-date',
usage: 'Usage: ' + './nodebb upgrade'.yellow,
handler: function () {
async.series([
function (next) {
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date... '.yellow);
cproc.exec('npm i --production', { cwd: __dirname, stdio: 'ignore' }, next);
},
function (next) {
process.stdout.write('OK\n'.green);
process.stdout.write('2. '.bold + 'Checking installed plugins for updates... '.yellow);
upgradePlugins(next);
},
function (next) {
process.stdout.write('3. '.bold + 'Updating NodeBB data store schema...\n'.yellow);
var arr = ['--upgrade'].concat(process.argv.slice(3));
var upgradeProc = fork(arr);
upgradeProc.on('close', next);
}
], function (err) {
if (err) {
process.stdout.write('\nError'.red + ': ' + err.message + '\n');
} else {
var message = 'NodeBB Upgrade Complete!';
// some consoles will return undefined/zero columns, so just use 2 spaces in upgrade script if we can't get our column count
var columns = process.stdout.columns;
var spaces = columns ? new Array(Math.floor(columns / 2) - (message.length / 2) + 1).join(' ') : " ";
case 'reload':
getRunningPid(function (err, pid) {
if (!err) {
process.kill(pid, 'SIGUSR2');
} else {
process.stdout.write('NodeBB could not be reloaded, as a running instance could not be found.\n');
process.stdout.write('OK\n'.green);
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
}
});
},
},
upgradePlugins: {
hidden: true,
description: '',
handler: function () {
upgradePlugins();
},
},
help: {
description: 'Display the help message for a given command',
usage: 'Usage: ' + './nodebb help <command>'.yellow,
handler: function () {
var command = commands[args._[1]];
if (command) {
process.stdout.write(command.description + '\n'.reset);
process.stdout.write(command.usage + '\n'.reset);
return;
}
});
break;
case 'dev':
process.env.NODE_ENV = 'development';
cproc.fork(__dirname + '/loader.js', ['--no-daemon', '--no-silent'], {
env: process.env
});
break;
case 'log':
process.stdout.write('\nHit '.red + 'Ctrl-C '.bold + 'to exit'.red);
process.stdout.write('\n\n'.reset);
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit'
});
break;
var keys = Object.keys(commands).filter(function (key) {
return !commands[key].hidden;
});
case 'build':
var args = process.argv.slice(0);
args[2] = '--' + args[2];
process.stdout.write('\nWelcome to NodeBB\n\n'.bold);
process.stdout.write('Usage: ./nodebb {' + keys.join('|') + '}\n\n');
fork(args);
break;
var usage = keys.map(function (key) {
var line = '\t' + key.yellow + (key.length < 8 ? '\t\t' : '\t');
return line + commands[key].description;
}).join('\n');
case 'setup':
cproc.fork('app.js', ['--setup'], {
cwd: __dirname,
silent: false
});
break;
case 'reset':
var args = process.argv.slice(0);
args.unshift('--reset');
fork(args);
break;
case 'activate':
var args = process.argv.slice(0);
args.unshift('--activate=' + process.argv[3]);
fork(args);
break;
case 'plugins':
var args = process.argv.slice(0);
args.unshift('--plugins');
fork(args);
break;
case 'upgrade-plugins':
upgradePlugins();
break;
case 'upgrade':
async.series([
function (next) {
process.stdout.write('1. '.bold + 'Bringing base dependencies up to date... '.yellow);
cproc.exec('npm i --production', { cwd: __dirname, stdio: 'ignore' }, next);
},
function (next) {
process.stdout.write('OK\n'.green);
process.stdout.write('2. '.bold + 'Checking installed plugins for updates... '.yellow);
upgradePlugins(next);
},
function (next) {
process.stdout.write('3. '.bold + 'Updating NodeBB data store schema...\n'.yellow);
var upgradeProc = cproc.fork('app.js', ['--upgrade'], {
cwd: __dirname,
silent: false
});
process.stdout.write(usage + '\n'.reset);
},
},
};
upgradeProc.on('close', next);
}
], function (err) {
if (err) {
process.stdout.write('\nError'.red + ': ' + err.message + '\n');
} else {
var message = 'NodeBB Upgrade Complete!';
// some consoles will return undefined/zero columns, so just use 2 spaces in upgrade script if we can't get our column count
var columns = process.stdout.columns;
var spaces = columns ? new Array(Math.floor(columns / 2) - (message.length / 2) + 1).join(' ') : " ";
commands['upgrade-plugins'] = commands.upgradePlugins;
process.stdout.write('OK\n'.green);
process.stdout.write('\n' + spaces + message.green.bold + '\n\n'.reset);
}
});
break;
default:
process.stdout.write('\nWelcome to NodeBB\n\n'.bold);
process.stdout.write('Usage: ./nodebb {start|slog|stop|reload|restart|log|build|setup|reset|upgrade|dev}\n\n');
process.stdout.write('\t' + 'start'.yellow + '\t\tStart the NodeBB server\n');
process.stdout.write('\t' + 'slog'.yellow + '\t\tStarts the NodeBB server and displays the live output log\n');
process.stdout.write('\t' + 'stop'.yellow + '\t\tStops the NodeBB server\n');
process.stdout.write('\t' + 'reload'.yellow + '\t\tRestarts NodeBB\n');
process.stdout.write('\t' + 'restart'.yellow + '\t\tRestarts NodeBB\n');
process.stdout.write('\t' + 'log'.yellow + '\t\tOpens the logging interface (useful for debugging)\n');
process.stdout.write('\t' + 'build'.yellow + '\t\tCompiles javascript, css stylesheets, and templates\n');
process.stdout.write('\t' + 'setup'.yellow + '\t\tRuns the NodeBB setup script\n');
process.stdout.write('\t' + 'reset'.yellow + '\t\tDisables all plugins, restores the default theme.\n');
process.stdout.write('\t' + 'activate'.yellow + '\tActivates a plugin for the next startup of NodeBB.\n');
process.stdout.write('\t' + 'plugins'.yellow + '\t\tList all plugins that have been installed.\n');
process.stdout.write('\t' + 'upgrade'.yellow + '\t\tRun NodeBB upgrade scripts, ensure packages are up-to-date\n');
process.stdout.write('\t' + 'dev'.yellow + '\t\tStart NodeBB in interactive development mode\n');
process.stdout.write('\n'.reset);
break;
if (!commands[args._[0]]) {
commands.help.handler();
} else {
commands[args._[0]].handler();
}

@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPL-3.0",
"description": "NodeBB Forum",
"version": "1.4.2",
"version": "1.4.3",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",
@ -12,7 +12,7 @@
"scripts": {
"start": "node loader.js",
"lint": "eslint --cache .",
"pretest": "npm run lint",
"pretest": "npm run lint && node app --build",
"test": "istanbul cover node_modules/mocha/bin/_mocha -- -R dot",
"coveralls": "istanbul cover _mocha --report lcovonly -- -R dot && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"
},
@ -51,18 +51,18 @@
"morgan": "^1.3.2",
"mousetrap": "^1.5.3",
"nconf": "~0.8.2",
"nodebb-plugin-composer-default": "4.3.6",
"nodebb-plugin-dbsearch": "1.0.4",
"nodebb-plugin-composer-default": "4.3.8",
"nodebb-plugin-dbsearch": "1.0.5",
"nodebb-plugin-emoji-extended": "1.1.1",
"nodebb-plugin-emoji-one": "1.1.5",
"nodebb-plugin-markdown": "7.0.1",
"nodebb-plugin-markdown": "7.0.3",
"nodebb-plugin-mentions": "1.1.3",
"nodebb-plugin-soundpack-default": "0.1.6",
"nodebb-plugin-spam-be-gone": "0.4.10",
"nodebb-rewards-essentials": "0.0.9",
"nodebb-theme-lavender": "3.0.15",
"nodebb-theme-persona": "4.1.95",
"nodebb-theme-vanilla": "5.1.58",
"nodebb-theme-vanilla": "5.1.59",
"nodebb-widget-essentials": "2.0.13",
"nodemailer": "2.6.4",
"nodemailer-sendmail-transport": "1.0.0",
@ -81,9 +81,9 @@
"semver": "^5.1.0",
"serve-favicon": "^2.1.5",
"sitemap": "^1.4.0",
"socket.io": "1.7.1",
"socket.io-client": "1.7.1",
"socket.io-redis": "2.0.0",
"socket.io": "1.7.2",
"socket.io-client": "1.7.2",
"socket.io-redis": "3.1.0",
"socketio-wildcard": "~0.3.0",
"string": "^3.0.0",
"templates.js": "0.3.6",

@ -1,5 +1,5 @@
{
"loading": "Loading Skins...",
"loading": "Načítání motivů…",
"homepage": "Homepage",
"select-skin": "Select Skin",
"current-skin": "Current Skin",

@ -1,5 +1,5 @@
{
"checking-for-installed": "Checking for installed themes...",
"checking-for-installed": "Vyhledávání nainstalovaných motivů…",
"homepage": "Homepage",
"select-theme": "Select Theme",
"current-theme": "Current Theme",

@ -8,7 +8,7 @@
"find-plugins": "Find Plugins",
"plugin-search": "Plugin Search",
"plugin-search-placeholder": "Search for plugin...",
"plugin-search-placeholder": "Hledat rozšíření…",
"reorder-plugins": "Re-order Plugins",
"order-active": "Order Active Plugins",
"dev-interested": "Interested in writing plugins for NodeBB?",

@ -42,7 +42,7 @@
"user-presence": "User Presence",
"on-categories": "On categories list",
"reading-posts": "Reading posts",
"browsing-topics": "Browsing topics",
"browsing-topics": "Prohlížení témat",
"recent": "Recent",
"unread": "Unread",

@ -62,7 +62,7 @@
"alert.updated-success": "Category IDs %1 successfully updated.",
"alert.upload-image": "Upload category image",
"alert.find-user": "Find a User",
"alert.user-search": "Search for a user here...",
"alert.user-search": "Najít uživatele…",
"alert.find-group": "Find a Group",
"alert.group-search": "Search for a group here..."
"alert.group-search": "Hledat skupinu…"
}

@ -7,7 +7,7 @@
"create": "Create Tag",
"modify": "Modify Tags",
"delete": "Delete Selected Tags",
"search": "Search for tags...",
"search": "Hledat tagy…",
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.",
"name": "Tag Name",

@ -65,11 +65,11 @@
"logout": "Log out",
"view-forum": "View Forum",
"search.placeholder": "Search...",
"search.no-results": "No results...",
"search.placeholder": "Hledat",
"search.no-results": "Žádné výsledky…",
"search.search-forum": "Search the forum for <strong></strong>",
"search.keep-typing": "Type more to see results...",
"search.start-typing": "Start typing to see results...",
"search.keep-typing": "Pište dále pro zobrazení výsledků…",
"search.start-typing": "Začněte psát pro zobrazení výsledků…",
"connection-lost": "Connection to %1 has been lost, attempting to reconnect..."
"connection-lost": "Připojení k %1 bylo ztraceno. Snaha o opětovné připojení…"
}

@ -5,18 +5,18 @@
"greeting_no_name": "Dobrý den",
"greeting_with_name": "Dobrý den %1",
"welcome.text1": "Děkujeme vám za registraci na %1!",
"welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaší emailovou adresu.",
"welcome.text2": "Pro úplnou aktivaci vašeho účtu potřebujeme ověřit vaši e-mailovou adresu.",
"welcome.text3": "Administrátor právě potvrdil vaší registraci. Nyní se můžete přihlásit jménem a heslem.",
"welcome.cta": "Klikněte zde pro potvrzení vaší emailové adresy",
"welcome.cta": "Klikněte zde pro potvrzení vaší e-mailové adresy",
"invitation.text1": "%1 Vás pozval abyste se připojil k %2",
"invitation.ctr": "Klikněte zde pro vytvoření vašeho účtu",
"reset.text1": "Obdrželi jsme požadavek na obnovu hesla, pravděpodobně kvůli tomu, že jste ho zapomněli. Pokud to není tento případ, ignorujte, prosím, tento email.",
"reset.text1": "Obdrželi jsme požadavek na obnovu vašeho hesla, pravděpodobně z důvodu jeho zapomenutí. Pokud to není tento případ, ignorujte, prosím, tento e-mail.",
"reset.text2": "Přejete-li si pokračovat v obnově vašeho hesla, klikněte, prosím, na následující odkaz:",
"reset.cta": "Klikněte zde, chcete-li obnovit vaše heslo",
"reset.notify.subject": "Heslo úspěšně změněno",
"reset.notify.text1": "Informujeme Vás, že na %1 vaše heslo bylo úspěšně změněno.",
"reset.notify.text2": "Pokud jste to neschválil, prosíme neprodleně kontaktujte správce.",
"digest.notifications": "Máte tu nepřečtená oznámení od %1:",
"digest.notifications": "Máte tu nepřečtená upozornění od %1:",
"digest.latest_topics": "Nejnovější témata od %1",
"digest.cta": "Kliknutím zde navštívíte %1",
"digest.unsub.info": "Tento výtah vám byl odeslán, protože jste si to nastavili ve vašich odběrech.",
@ -27,10 +27,10 @@
"digest.subject": "Výběr pro %1",
"notif.chat.subject": "Nová zpráva z chatu od %1",
"notif.chat.cta": "Chcete-li pokračovat v konverzaci, klikněte zde.",
"notif.chat.unsub.info": "Toto oznámení z chatu vám bylo zasláno, protože jste si to nastavili ve vašich odběrech.",
"notif.chat.unsub.info": "Toto upozornění na chat vám bylo odesláno na základě vašeho nastavení odběru.",
"notif.post.cta": "Klikněte zde pro přečtené celého tématu",
"notif.post.unsub.info": "Toto oznámení Vám bylo odesláno na základě vašeho nastavení odběru.",
"test.text1": "Tento testovací email slouží k ověření, že mailer je správně nastaven. NodeBB.",
"notif.post.unsub.info": "Toto upozornění na příspěvek vám bylo odesláno na základě vašeho nastavení odběru.",
"test.text1": "Tento testovací e-mail slouží k ověření, že je e-mailer správně nastaven pro práci s NodeBB.",
"unsub.cta": "Chcete-li změnit tyto nastavení, klikněte zde.",
"closing": "Díky!"
}

@ -8,7 +8,7 @@
"invalid-pid": "Neplatné ID příspěvku",
"invalid-uid": "Neplatné ID uživatele",
"invalid-username": "Neplatné uživatelské jméno",
"invalid-email": "Neplatný email",
"invalid-email": "Neplatný e-mail",
"invalid-title": "Neplatný titulek!",
"invalid-user-data": "Neplatná uživatelská data",
"invalid-password": "Neplatné heslo",
@ -17,13 +17,13 @@
"csrf-invalid": "We were unable to log you in, likely due to an expired session. Please try again",
"invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2",
"username-taken": "Uživatelské jméno je již použito",
"email-taken": "Email je již použit",
"email-not-confirmed": "Vaše emailová adresa zatím nebyla potvrzena. Kliknutím zde svůj email potvrdíte.",
"email-taken": "E-mail je již používán",
"email-not-confirmed": "Vaše e-mailová adresa zatím nebyla potvrzena. Klepněte zde pro její potvrzení.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
"email-not-confirmed-email-sent": "Your email has not been confirmed yet, please check your inbox for the confirmation email.",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"confirm-email-already-sent": "Potvrzovací email již byl odeslán. Vyčkejte %1 minut pokud chcete odeslat další.",
"confirm-email-already-sent": "Potvrzovací e-mail byl již odeslán. Vyčkejte %1 minut pokud chcete odeslat další.",
"sendmail-not-found": "The sendmail executable could not be found, please ensure it is installed and executable by the user running NodeBB.",
"username-too-short": "Uživatelské jméno je příliš krátké",
"username-too-long": "Uživatelské jméno je příliš dlouhé",

@ -33,7 +33,7 @@
"header.users": "Uživatelé",
"header.groups": "Skupiny",
"header.chats": "Chaty",
"header.notifications": "Oznámení",
"header.notifications": "Upozornění",
"header.search": "Hledat",
"header.profile": "Můj profil",
"header.navigation": "Navigace",
@ -80,7 +80,7 @@
"dnd": "Nevyrušovat",
"invisible": "Neviditelný",
"offline": "Offline",
"email": "Email",
"email": "E-mail",
"language": "Jazyk",
"guest": "Host",
"guests": "Hosté",

@ -1,7 +1,7 @@
{
"username-email": "Uživatel / Email",
"username-email": "Uživatelské jméno / e-mail",
"username": "Uživatel",
"email": "Email",
"email": "E-mail",
"remember_me": "Zapamatovat si mě?",
"forgot_password": "Zapomněli jste heslo?",
"alternative_logins": "Další způsoby přihlášení",

@ -3,7 +3,7 @@
"chat.placeholder": "Zprávu do chatu napište zde, pro odeslání stiskněte enter",
"chat.send": "Odeslat",
"chat.no_active": "Nemáte žádné aktivní konverzace.",
"chat.user_typing": "%1 píše ...",
"chat.user_typing": "%1 píše",
"chat.user_has_messaged_you": "%1 Vám napsal.",
"chat.see_all": "Prohlédnout všechny chaty",
"chat.mark_all_read": "Označit vše jako přečtené",

@ -28,8 +28,8 @@
"user_started_following_you_multiple": "<strong>%1</strong> and %2 others started following you.",
"new_register": "<strong>%1</strong> sent a registration request.",
"new_register_multiple": "There are <strong>%1</strong> registration requests awaiting review.",
"email-confirmed": "Email potvrzen",
"email-confirmed-message": "Děkujeme za ověření Vaší emailové adresy. Váš účet je nyní aktivován.",
"email-confirm-error-message": "Nastal problém s ověřením Vaší emailové adresy. Pravděpodobně neplatný nebo expirovaný kód.",
"email-confirm-sent": "Ověřovací email odeslán."
"email-confirmed": "E-mail potvrzen",
"email-confirmed-message": "Děkujeme za ověření vaší e-mailové adresy. Váš účet je nyní aktivní.",
"email-confirm-error-message": "Nastal problém s ověřením vaší e-mailové adresy. Kód je pravděpodobně neplatný nebo jeho platnost vypršela.",
"email-confirm-sent": "Ověřovací e-mail odeslán."
}

@ -15,7 +15,7 @@
"users/banned": "Zabanovaní uživatelé",
"users/most-flags": "Most flagged users",
"users/search": "Hledání uživatele",
"notifications": "Oznámení",
"notifications": "Upozornění",
"tags": "Tagy",
"tag": "Téma označeno pod \"%1\"",
"register": "Zaregistrovat účet",
@ -43,7 +43,7 @@
"account/upvoted": "Posts upvoted by %1",
"account/downvoted": "Posts downvoted by %1",
"account/best": "Nejlepší příspěvky od %1",
"confirm": "Email potvrzen",
"confirm": "E-mail potvrzen",
"maintenance.text": "%1 is currently undergoing maintenance. Please come back another time.",
"maintenance.messageIntro": "Additionally, the administrator has left this message:",
"throttled.text": "%1 je v současnou chvíli nedostupný pro velkou zátěž. Prosíme zkuste to za chvíli."

@ -1,11 +1,11 @@
{
"register": "Registrace",
"cancel_registration": "Cancel Registration",
"help.email": "Váš email nebude bez vašeho svolení zveřejněn.",
"help.email": "Ve výchozím nastavení bude váš e-mail skrytý.",
"help.username_restrictions": "Jedinečné uživatelské jméno dlouhé %1 až %2 znaků. Ostatní uživatelé Vás mohou zmínit jako @<span id='yourUsername'>uživatelské-jméno</span>.",
"help.minimum_password_length": "Délka vašeho hesla musí být alespoň %1 znaků.",
"email_address": "Email",
"email_address_placeholder": "Zadejte email",
"email_address": "E-mailová adresa",
"email_address_placeholder": "Zadejte e-mailovou adresu",
"username": "Uživatelské jméno",
"username_placeholder": "Zadejte uživatelské jméno",
"password": "Heslo",

@ -7,10 +7,10 @@
"wrong_reset_code.message": "Byl zadán špatný kód. Zadejte ho prosím znovu, nebo <a href=\"/reset\">si nechte poslat nový</a>.",
"new_password": "Nové heslo",
"repeat_password": "Potvrzení hesla",
"enter_email": "Zadejte svou <strong>emailovou adresu</strong> a my Vám pošleme informace, jak můžete obnovit své heslo.",
"enter_email_address": "Zadejte emailovou adresu",
"enter_email": "Zadejte svou <strong>e-mailovou adresu</strong> a my vám pošleme informace, jak můžete obnovit svůj účet.",
"enter_email_address": "Zadejte e-mailovou adresu",
"password_reset_sent": "Obnova hesla odeslána",
"invalid_email": "Špatný email / Email neexistuje!",
"invalid_email": "Neplatný e-mail / E-mail neexistuje!",
"password_too_short": "Zadané heslo je příliš krátké, zvolte si prosím jiné.",
"passwords_do_not_match": "Vámi zadaná hesla se neshodují.",
"password_expired": "Platnost Vašeho hesla vypršela, zvolte si prosím nové."

@ -2,6 +2,6 @@
"no_tag_topics": "Není zde žádné téma s tímto tagem.",
"tags": "Tagy",
"enter_tags_here": "Zde vložte tagy, každý o délce %1 až %2 znaků.",
"enter_tags_here_short": "Vložte tagy ...",
"enter_tags_here_short": "Zadejte tagy…",
"no_tags": "Zatím tu není žádný tag."
}

@ -105,13 +105,13 @@
"fork_pid_count": "%1 post(s) selected",
"fork_success": "Successfully forked topic! Click here to go to the forked topic.",
"delete_posts_instruction": "Click the posts you want to delete/purge",
"composer.title_placeholder": "Zadejte název tématu...",
"composer.title_placeholder": "Zadejte název tématu",
"composer.handle_placeholder": "Jméno",
"composer.discard": "Zrušit",
"composer.submit": "Odeslat",
"composer.replying_to": "Replying to %1",
"composer.new_topic": "Nové téma",
"composer.uploading": "nahrávání...",
"composer.uploading": "nahrávání",
"composer.thumb_url_label": "Vložit URL náhled tématu",
"composer.thumb_title": "Přidat k tématu náhled",
"composer.thumb_url_placeholder": "http://example.com/thumb.png",

@ -1,5 +1,5 @@
{
"uploading-file": "Nahrávání souboru...",
"uploading-file": "Nahrávání souboru",
"select-file-to-upload": "Vyberte soubor pro nahrání!",
"upload-success": "Soubor byl úspěšně nahrán!",
"maximum-file-size": "Maximum %1 kb"

@ -4,8 +4,8 @@
"username": "Uživatelské jméno",
"joindate": "Datum ragistrace",
"postcount": "Počet příspěvků",
"email": "Email",
"confirm_email": "Potvrdit email",
"email": "E-mail",
"confirm_email": "Potvrdit e-mail",
"account_info": "Account Info",
"ban_account": "Zablokovat účet",
"ban_account_confirm": "Opravdu chcete zablokovat tohoto uživatele?",
@ -39,7 +39,7 @@
"profile_update_success": "Profil byl úspěšně aktualizován!",
"change_picture": "Změnit obrázek",
"change_username": "Změnit uživatelské jméno",
"change_email": "Změnit email",
"change_email": "Změnit e-mail",
"edit": "Upravit",
"edit-profile": "Editovat profil",
"default_picture": "Výchozí ikonka",
@ -58,14 +58,14 @@
"password": "Heslo",
"username_taken_workaround": "Zvolené uživatelské jméno je již zabrané, takže jsme ho trochu upravili. Nyní jste znám jako <strong>%1</strong>",
"password_same_as_username": "Vaše heslo je stejné jako vaše přihlašovací jméno. Zvolte si prosím jiné heslo.",
"password_same_as_email": "Vaše heslo je stejné jako email. Vyberte si prosím jiné heslo.",
"password_same_as_email": "Vaše heslo je stejné jako váš e-mail. Zvolte si prosím jiné heslo.",
"upload_picture": "Nahrát obrázek",
"upload_a_picture": "Nahrát obrázek",
"remove_uploaded_picture": "Odstranit nahraný obrázek",
"upload_cover_picture": "Náhrát titulní obrázek",
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"settings": "Nastavení",
"show_email": "Zobrazovat můj email v profilu",
"show_email": "Zobrazovat můj e-mail v profilu",
"show_fullname": "Zobrazovat celé jméno",
"restrict_chats": "Povolit chatovací zprávy pouze od uživatelů, které sleduji.",
"digest_label": "Odebírat přehled",
@ -85,7 +85,7 @@
"has_no_upvoted_posts": "This user hasn't upvoted any posts yet.",
"has_no_downvoted_posts": "This user hasn't downvoted any posts yet.",
"has_no_voted_posts": "This user has no voted posts",
"email_hidden": "Skrytý email",
"email_hidden": "E-mail skryt",
"hidden": "skrytý",
"paginate_description": "Paginate topics and posts instead of using infinite scroll",
"topics_per_page": "Témat na stránce",
@ -96,7 +96,7 @@
"outgoing-message-sound": "Outgoing message sound",
"notification-sound": "Notification sound",
"no-sound": "No sound",
"browsing": "Browsing Settings",
"browsing": "Nastavení prohlížení",
"open_links_in_new_tab": "Open outgoing links in new tab",
"enable_topic_searching": "Enable In-Topic Searching",
"topic_search_help": "If enabled, in-topic searching will override the browser's default page search behaviour and allow you to search through the entire topic, instead of what is only shown on screen",

@ -1,6 +1,6 @@
{
"alert.confirm-reload": "Er du sikker på du ønsker at genindlæse NodeBB?",
"alert.confirm-restart": "Er du sikker på du ønsker at genstarte NodeBB?",
"alert.confirm-reload": "Er du sikker på at du ønsker at genindlæse NodeBB?",
"alert.confirm-restart": "Er du sikker på at du ønsker at genstarte NodeBB?",
"acp-title": "%1 | NodeBB Admin Kontrol Panel",
"settings-header-contents": "Indhold"

@ -1,11 +1,11 @@
{
"post-cache": "Post Cache",
"posts-in-cache": "Posts in Cache",
"average-post-size": "Average Post Size",
"length-to-max": "Length / Max",
"percent-full": "%1% Full",
"post-cache-size": "Post Cache Size",
"items-in-cache": "Items in Cache",
"control-panel": "Control Panel",
"update-settings": "Update Cache Settings"
"post-cache": "Indlægs Cache",
"posts-in-cache": "Indlæg i Cache",
"average-post-size": "Gennemsnitlig Størrelse af Indlæg",
"length-to-max": "Længde / Max",
"percent-full": "%1% Fuld",
"post-cache-size": "Indlægs Cache Størrelse",
"items-in-cache": "Ting i Cache",
"control-panel": "Kontrol Panel",
"update-settings": "Opdater Cache Indstillinger"
}

@ -1,35 +1,35 @@
{
"x-b": "%1 b",
"x-mb": "%1 mb",
"uptime-seconds": "Uptime in Seconds",
"uptime-days": "Uptime in Days",
"uptime-seconds": "Oppetid i Sekunder",
"uptime-days": "Oppetid i Dage",
"mongo": "Mongo",
"mongo.version": "MongoDB Version",
"mongo.storage-engine": "Storage Engine",
"mongo.collections": "Collections",
"mongo.objects": "Objects",
"mongo.avg-object-size": "Avg. Object Size",
"mongo.data-size": "Data Size",
"mongo.storage-size": "Storage Size",
"mongo.index-size": "Index Size",
"mongo.file-size": "File Size",
"mongo.resident-memory": "Resident Memory",
"mongo.virtual-memory": "Virtual Memory",
"mongo.mapped-memory": "Mapped Memory",
"mongo.raw-info": "MongoDB Raw Info",
"mongo.collections": "Kollektioner",
"mongo.objects": "Objekter",
"mongo.avg-object-size": "Gennemsnitlig Objekt Størrelse",
"mongo.data-size": "Data Størrelse",
"mongo.storage-size": "Lager Størrelse",
"mongo.index-size": "Index Størrelse",
"mongo.file-size": "Fil Størrelse",
"mongo.resident-memory": "Resident Hukommelse",
"mongo.virtual-memory": "Virtuel Hukommelse",
"mongo.mapped-memory": "Kortlagt Hukommelse",
"mongo.raw-info": "MongoDB Rå Info",
"redis": "Redis",
"redis.version": "Redis Version",
"redis.connected-clients": "Connected Clients",
"redis.connected-slaves": "Connected Slaves",
"redis.blocked-clients": "Blocked Clients",
"redis.used-memory": "Used Memory",
"redis.memory-frag-ratio": "Memory Fragmentation Ratio",
"redis.total-connections-recieved": "Total Connections Received",
"redis.total-commands-processed": "Total Commands Processed",
"redis.iops": "Instantaneous Ops. Per Second",
"redis.keyspace-hits": "Keyspace Hits",
"redis.keyspace-misses": "Keyspace Misses",
"redis.raw-info": "Redis Raw Info"
"redis.connected-clients": "Forbundne Klienter",
"redis.connected-slaves": "Forbundne Slaver",
"redis.blocked-clients": "Blokerede Klienter",
"redis.used-memory": "Brugt Hukommelse",
"redis.memory-frag-ratio": "Hukommelses Fragmentations Forhold",
"redis.total-connections-recieved": "Totale Forbindelser Modtaget",
"redis.total-commands-processed": "Totale Kommandoer Behandlet",
"redis.iops": "Øjeblikkelige Ops. pr. sekund",
"redis.keyspace-hits": "Mellemrums Tryk",
"redis.keyspace-misses": "Mellemrums Misses",
"redis.raw-info": "Redis Rå Info"
}

@ -1,30 +1,30 @@
{
"forum-traffic": "Forum Traffic",
"page-views": "Page Views",
"unique-visitors": "Unique Visitors",
"page-views-last-month": "Page views Last Month",
"page-views-this-month": "Page views This Month",
"page-views-last-day": "Page views in last 24 hours",
"stats.day": "Day",
"stats.week": "Week",
"stats.month": "Month",
"forum-traffic": "Forum Traffik",
"page-views": "Side Visninger",
"unique-visitors": "Unikke Besøgere",
"page-views-last-month": "Side Visninger Sidste Måned",
"page-views-this-month": "Side Visninger Denne Måned",
"page-views-last-day": "Side visninger i de sidste 24 timer",
"stats.day": "Dag",
"stats.week": "Uge",
"stats.month": "Måned",
"stats.all": "All Time",
"updates": "Updates",
"running-version": "You are running <strong>NodeBB v<span id=\"version\">%1</span></strong>.",
"keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.",
"up-to-date": "<p>You are <strong>up-to-date</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">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/en/latest/upgrading/index.html\">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>",
"notices": "Notices",
"control-panel": "System Control",
"reload": "Reload",
"restart": "Restart",
"restart-warning": "Reloading or Restarting your NodeBB will drop all existing connections for a few seconds.",
"updates": "Opdateringer",
"running-version": "Du kører <strong>NodeBB v<span id=\"version\">%1</span></strong>.",
"keep-updated": "Altid sikrer dig at din NodeBB er opdateret for de seneste sikkerheds og bug rettelser.",
"up-to-date": "<p>Du er <strong>opdateret</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>En ny version (v%1) er blevet udgivet. Overvej <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">at opgradere din NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Dette er en uddateret pre-release version af NodeBB. En ny version (v%1) er blevet udgivet. Overvej <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">at opdatere din 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>",
"notices": "Varsler",
"control-panel": "System Kontrol",
"reload": "Genindlæs",
"restart": "Genstart",
"restart-warning": "At genindlæse eller genstarte din NodeBB vil droppe alle eksisterende forbindelser i et par sekunder.",
"maintenance-mode": "Maintenance Mode",
"maintenance-mode-title": "Click here to set up maintenance mode for NodeBB",
"realtime-chart-updates": "Realtime Chart Updates",

@ -8,5 +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": "You have been logged out of the Admin Control Panel due to inactivity"
"logged-out-due-to-inactivity": "Du er blevet logged af Admin Kontrol Panelet, på grund af din inaktiviet."
}

@ -1,7 +1,7 @@
{
"alert.confirm-reload": "Are you sure you wish to reload NodeBB?",
"alert.confirm-restart": "Are you sure you wish to restart NodeBB?",
"alert.confirm-reload": "Bist du sicher, dass du NodeBB neu laden möchtest?",
"alert.confirm-restart": "Bist du sicher, dass du NodeBB neu starten möchtest?",
"acp-title": "%1 | NodeBB Admin Control Panel",
"settings-header-contents": "Contents"
"settings-header-contents": "Inhalte"
}

@ -1,5 +1,5 @@
{
"post-cache": "Post Cache",
"post-cache": "Eintrag Zwischenspeicher",
"posts-in-cache": "Einträge im Zwischenspeicher",
"average-post-size": "Durchschnittliche Forum Eintrags Größe",
"length-to-max": "Länge / Maximum",

@ -1,35 +1,35 @@
{
"x-b": "%1 b",
"x-mb": "%1 mb",
"uptime-seconds": "Uptime in Seconds",
"uptime-days": "Uptime in Days",
"uptime-seconds": "Laufzeit in Sekunden",
"uptime-days": "Laufzeit in Tagen",
"mongo": "Mongo",
"mongo.version": "MongoDB Version",
"mongo.storage-engine": "Storage Engine",
"mongo.storage-engine": "Speicherengine",
"mongo.collections": "Collections",
"mongo.objects": "Objects",
"mongo.avg-object-size": "Avg. Object Size",
"mongo.data-size": "Data Size",
"mongo.storage-size": "Storage Size",
"mongo.index-size": "Index Size",
"mongo.file-size": "File Size",
"mongo.objects": "Objekte",
"mongo.avg-object-size": "Durchschnittliche Objektgröße",
"mongo.data-size": "Datengröße",
"mongo.storage-size": "Speichergröße",
"mongo.index-size": "Indexgröße",
"mongo.file-size": "Dateigröße",
"mongo.resident-memory": "Resident Memory",
"mongo.virtual-memory": "Virtual Memory",
"mongo.virtual-memory": "virtueller Speicher",
"mongo.mapped-memory": "Mapped Memory",
"mongo.raw-info": "MongoDB Raw Info",
"mongo.raw-info": "MongoDB Rohinfo",
"redis": "Redis",
"redis.version": "Redis Version",
"redis.connected-clients": "Connected Clients",
"redis.connected-slaves": "Connected Slaves",
"redis.blocked-clients": "Blocked Clients",
"redis.used-memory": "Used Memory",
"redis.memory-frag-ratio": "Memory Fragmentation Ratio",
"redis.total-connections-recieved": "Total Connections Received",
"redis.total-commands-processed": "Total Commands Processed",
"redis.iops": "Instantaneous Ops. Per Second",
"redis.connected-clients": "Verbundene Clients",
"redis.connected-slaves": "Verbundene Slaves",
"redis.blocked-clients": "Blockierte Clients",
"redis.used-memory": "Speicherverbrauch",
"redis.memory-frag-ratio": "Speicherfragmentierungsgrad",
"redis.total-connections-recieved": "Insgesamt Verbindungen empfangen",
"redis.total-commands-processed": "Insgesamt Kommandos ausgeführt",
"redis.iops": "Durchschnittliche Anzahl von Ein-/Ausgaben pro Sekunde",
"redis.keyspace-hits": "Keyspace Hits",
"redis.keyspace-misses": "Keyspace Misses",
"redis.raw-info": "Redis Raw Info"
"redis.raw-info": "Redis Rohinfo"
}

@ -1,14 +1,14 @@
{
"figure-x": "Figure %1",
"error-events-per-day": "<code>%1</code> events per day",
"figure-x": "Abbildung %1",
"error-events-per-day": "<code>%1</code> Ereignisse pro Tag",
"error.404": "404 Not Found",
"error.503": "503 Service Unavailable",
"manage-error-log": "Manage Error Log",
"export-error-log": "Export Error Log (CSV)",
"clear-error-log": "Clear Error Log",
"route": "Route",
"count": "Count",
"no-routes-not-found": "Hooray! There are no routes that were not found.",
"clear404-confirm": "Are you sure you wish to clear the 404 error logs?",
"clear404-success": "\"404 Not Found\" errors cleared"
"manage-error-log": "Aktionen Fehlerprotokoll",
"export-error-log": "Exportiere das Fehlerprotokoll (CSV)",
"clear-error-log": "Lösche Fehlerprotokoll",
"route": "Zielroute",
"count": "Anzahl",
"no-routes-not-found": "Hurra! Es gibt keine Zielrouten, die nicht gefunden wurden.",
"clear404-confirm": "Bist du dir sicher, dass du das 404 Fehlerprotokoll löschen möchtest?",
"clear404-success": "\"404 Not Found\" Fehler gelöscht"
}

@ -1,6 +1,6 @@
{
"events": "Events",
"no-events": "There are no events",
"control-panel": "Events Control Panel",
"delete-events": "Delete Events"
"events": "Veranstaltungen",
"no-events": "Es gibt keine Veranstaltungen",
"control-panel": "Veranstaltungen Steuerung",
"delete-events": "Veranstaltungen löschen"
}

@ -1,7 +1,7 @@
{
"logs": "Logs",
"control-panel": "Logs Control Panel",
"reload": "Reload Logs",
"clear": "Clear Logs",
"clear-success": "Logs Cleared!"
"logs": "Protokoll",
"control-panel": "Protokoll Steuerung",
"reload": "Protokoll neu laden",
"clear": "Protokoll leeren",
"clear-success": "Protokoll geleert"
}

@ -1,9 +1,9 @@
{
"custom-css": "Custom CSS",
"custom-css.description": "Enter your own CSS declarations here, which will be applied after all other styles.",
"custom-css.enable": "Enable Custom CSS",
"custom-css": "Benutzerdefiniertes CSS",
"custom-css.description": "Füge hier deine eigenen CSS-Eigenschaften ein, sie werden als letztes angewendet.",
"custom-css.enable": "Aktiviere benutzerdefiniertes CSS",
"custom-header": "Custom Header",
"custom-header.description": "Enter custom HTML here (ex. JavaScript, Meta Tags, etc.), which will be appended to the <code>&lt;head&gt;</code> section of your forum's markup.",
"custom-header.enable": "Enable Custom Header"
"custom-header": "Benutzerdefinierter Kopfbereich",
"custom-header.description": "Füge hier dein benutzerdefiniertes HTML (z.B. Javascript, Meta Tags, usw.) ein, welches vor dem <code>&lt;head&gt;</code> Tag eingefügt wird.",
"custom-header.enable": "Aktiviere benutzerdefinierten Kopfbereich"
}

@ -1,9 +1,9 @@
{
"loading": "Loading Skins...",
"loading": "Lade Aussehen...",
"homepage": "Homepage",
"select-skin": "Select Skin",
"current-skin": "Current Skin",
"skin-updated": "Skin Updated",
"applied-success": "%1 skin was succesfully applied",
"revert-success": "Skin reverted to base colours"
"select-skin": "Wähle Aussehen",
"current-skin": "Aktuelles Aussehen",
"skin-updated": "Aussehen aktualisiert",
"applied-success": "%1 Aussehen wurde erfolgreich angewendet",
"revert-success": "Aussehen wieder auf Basisfarben zurückgestellt."
}

@ -1,11 +1,11 @@
{
"checking-for-installed": "Checking for installed themes...",
"checking-for-installed": "Prüfe auf installierte Designs...",
"homepage": "Homepage",
"select-theme": "Select Theme",
"current-theme": "Current Theme",
"no-themes": "No installed themes found",
"revert-confirm": "Are you sure you wish to restore the default NodeBB theme?",
"theme-changed": "Theme Changed",
"revert-success": "You have successfully reverted your NodeBB back to it's default theme.",
"restart-to-activate": "Please restart your NodeBB to fully activate this theme"
"select-theme": "Wähle Design",
"current-theme": "Aktuelles Design",
"no-themes": "Keine installierten Designs gefunden.",
"revert-confirm": "Bist du dir sicher, dass du das standard NodeBB Design wieder herstellen willst?",
"theme-changed": "Design geändert",
"revert-success": "Du hast erfolgreich dein NodeBB wieder auf das Standarddesign gewechselt.",
"restart-to-activate": "Bitte starte dein NodeBB neu um das Design voll zu aktivieren."
}

@ -1,55 +1,55 @@
{
"forum-traffic": "Forum Traffic",
"page-views": "Page Views",
"unique-visitors": "Unique Visitors",
"page-views-last-month": "Page views Last Month",
"page-views-this-month": "Page views This Month",
"page-views-last-day": "Page views in last 24 hours",
"stats.day": "Day",
"stats.week": "Week",
"stats.month": "Month",
"stats.all": "All Time",
"page-views": "Seitenaufrufe",
"unique-visitors": "Besucher",
"page-views-last-month": "Aufrufe im letzten Monat",
"page-views-this-month": "Aufrufe in diesem Monat",
"page-views-last-day": "Aufrufe in den letzten 24 Stunden",
"stats.day": "diesen Tag",
"stats.week": "diese Woche",
"stats.month": "diesen Monat",
"stats.all": "Alle",
"updates": "Updates",
"running-version": "You are running <strong>NodeBB v<span id=\"version\">%1</span></strong>.",
"keep-updated": "Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.",
"up-to-date": "<p>You are <strong>up-to-date</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">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/en/latest/upgrading/index.html\">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>",
"running-version": "Es läuft <strong>NodeBB v<span id=\\\"version\\\">%1</span></strong>.",
"keep-updated": "Stelle immer sicher, dass dein NodeBB auf dem neuesten Stand ist für die neuesten Sicherheits-Patches und Bug-fixes.",
"up-to-date": "<p>System ist <strong>aktuell</strong> <i class=\\\"fa fa-check\\\"></i></p>",
"upgrade-available": "<p>Version (v%1) wurde veröffentlicht. Beachte <a href=\\\"https://docs.nodebb.org/en/latest/upgrading/index.html\\\">um ein NodeBB Upgrade durchzuführen</a>.</p>",
"prerelease-upgrade-available": "<p>Das ist eine veraltete pre-release Version von NodeBB. Version (v%1) wurde veröffentlicht. Beachte <a href=\\\"https://docs.nodebb.org/en/latest/upgrading/index.html\\\">um ein NodeBB Upgrade durchzuführen</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>",
"notices": "Notices",
"notices": "Hinweise",
"control-panel": "System Control",
"control-panel": "Systemsteuerung",
"reload": "Reload",
"restart": "Restart",
"restart-warning": "Reloading or Restarting your NodeBB will drop all existing connections for a few seconds.",
"maintenance-mode": "Maintenance Mode",
"maintenance-mode-title": "Click here to set up maintenance mode for NodeBB",
"realtime-chart-updates": "Realtime Chart Updates",
"active-users": "Active Users",
"active-users.users": "Users",
"active-users.guests": "Guests",
"active-users.total": "Total",
"active-users.connections": "Connections",
"anonymous-registered-users": "Anonymous vs Registered Users",
"anonymous": "Anonymous",
"registered": "Registered",
"user-presence": "User Presence",
"on-categories": "On categories list",
"reading-posts": "Reading posts",
"browsing-topics": "Browsing topics",
"recent": "Recent",
"unread": "Unread",
"high-presence-topics": "High Presence Topics",
"graphs.page-views": "Page Views",
"graphs.unique-visitors": "Unique Visitors",
"graphs.registered-users": "Registered Users",
"graphs.anonymous-users": "Anonymous Users"
"restart": "Neustart",
"restart-warning": "Ein Reload oder Neustart trennt die Verbindung für ein paar Sekunden.",
"maintenance-mode": "Wartungsmodus",
"maintenance-mode-title": "Hier klicken um NodeBB in den Wartungsmodus zu setzen",
"realtime-chart-updates": "Echtzeit Chartaktualisierung",
"active-users": "aktive Benutzer",
"active-users.users": "Benutzer",
"active-users.guests": "Gäste",
"active-users.total": "Gesamt",
"active-users.connections": "Verbindungen",
"anonymous-registered-users": "anonyme vs registrierte Benutzer",
"anonymous": "Anonym",
"registered": "Registriert",
"user-presence": "Benutzerpräsenz",
"on-categories": "auf Kategorie Übersicht",
"reading-posts": "Beiträge lesen",
"browsing-topics": "Themen durchsuchen",
"recent": "Aktuell",
"unread": "Ungelesen",
"high-presence-topics": "Meist besuchte Themen",
"graphs.page-views": "Seitenaufrufe",
"graphs.unique-visitors": "verschiedene Besucher",
"graphs.registered-users": "registrierte Benutzer",
"graphs.anonymous-users": "anonyme Benutzer"
}

@ -1,7 +1,7 @@
{
"home-page": "Home Page",
"description": "Choose what page is shown when users navigate to the root URL of your forum.",
"home-page-route": "Home Page Route",
"custom-route": "Custom Route",
"allow-user-home-pages": "Allow User Home Pages"
"home-page": "Startseite",
"description": "Wähle aus, welche Seite angezeigt werden soll, wenn Nutzer zur Startseite des Forums navigieren.",
"home-page-route": "Startseitenpfad",
"custom-route": "Eigener Startseitenpfad",
"allow-user-home-pages": "Benutzer eigene Startseiten erlauben"
}

@ -1,5 +1,5 @@
{
"language-settings": "Language Settings",
"description": "The default language determines the language settings for all users who are visiting your forum. <br />Individual users can override the default language on their account settings page.",
"default-language": "Default Language"
"language-settings": "Spracheinstellungen",
"description": "Die Standardsprache legt die Spracheinstellungen für alle Benutzer fest, die das Forum besuchen. <br />Einzelne Benutzer können die Standardsprache auf der Seite mit den Kontoeinstellungen überschreiben.",
"default-language": "Standartsprache"
}

@ -1,27 +1,27 @@
{
"icon": "Icon:",
"change-icon": "change",
"route": "Route:",
"change-icon": "ändern",
"route": "Pfad:",
"tooltip": "Tooltip:",
"text": "Text:",
"text-class": "Text Class: <small>optional</small>",
"text-class": "Text Stil: <small>optional</small>",
"id": "ID: <small>optional</small>",
"properties": "Properties:",
"only-admins": "Only display to Admins",
"only-global-mods-and-admins": "Only display to Global Moderators and Admins",
"only-logged-in": "Only display to logged in users",
"open-new-window": "Open in a new window",
"properties": "Eigenschaften:",
"only-admins": "Nur sichtbar für Admins",
"only-global-mods-and-admins": "Nur sichtbar für Globale Moderatoren und Admins",
"only-logged-in": "Nur sichtbar für angemeldete Benutzer",
"open-new-window": "In neuem Fenster öffnen",
"installed-plugins-required": "Installed Plugins Required:",
"installed-plugins-required": "Installierte Plugins notwendig:",
"search-plugin": "Search plugin",
"btn.delete": "Delete",
"btn.disable": "Disable",
"btn.enable": "Enable",
"btn.delete": "Löschen",
"btn.disable": "Deaktivieren",
"btn.enable": "Aktivieren",
"available-menu-items": "Available Menu Items",
"custom-route": "Custom Route",
"core": "core",
"plugin": "plugin"
"available-menu-items": "Verfügbare Menüpunkte",
"custom-route": "Benutzerdefinierter Pfad",
"core": "Kern",
"plugin": "Plugin"
}

@ -1,5 +1,5 @@
{
"post-sharing": "Post Sharing",
"info-plugins-additional": "Plugins can add additional networks for sharing posts.",
"save-success": "Successfully saved Post Sharing Networks!"
"post-sharing": "Beiträge teilen",
"info-plugins-additional": "Plugins können zusätzliche Netzwerke für das Teilen von Beiträgen hinzufügen.",
"save-success": "Erfolgreich gespeichert!"
}

@ -1,9 +1,9 @@
{
"notifications": "Notifications",
"chat-messages": "Chat Messages",
"play-sound": "Play",
"incoming-message": "Incoming Message",
"outgoing-message": "Outgoing Message",
"upload-new-sound": "Upload New Sound",
"saved": "Settings Saved"
"notifications": "Benachrichtigungen",
"chat-messages": "Chat Nachrichten",
"play-sound": "Abspielen",
"incoming-message": "Eingehende Nachricht",
"outgoing-message": "Gesendete Nachricht",
"upload-new-sound": "Sound hochladen",
"saved": "Einstellungen gespeichert!"
}

@ -1,68 +1,68 @@
{
"settings": "Category Settings",
"privileges": "Privileges",
"settings": "Kategorie Einstellungen",
"privileges": "Berechtigungen",
"name": "Category Name",
"description": "Category Description",
"bg-color": "Background Colour",
"text-color": "Text Colour",
"bg-image-size": "Background Image Size",
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"upload-image": "Upload Image",
"delete-image": "Remove",
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"parent-category-none": "(None)",
"copy-settings": "Copy Settings From",
"optional-clone-settings": "(Optional) Clone Settings From Category",
"purge": "Purge Category",
"name": "Kategorie Name",
"description": "Kategorie Beschreibung",
"bg-color": "Hintergrundfarbe",
"text-color": "Textfarbe",
"bg-image-size": "Größe Hintergrundbild",
"custom-class": "Benutzderdefinierter Stil",
"num-recent-replies": "Anzahl neuer Antworten",
"ext-link": "Externer Link",
"upload-image": "Bild hochladen",
"delete-image": "Entfernen",
"category-image": "Kategorie Bild",
"parent-category": "Übergeordnete Kategorie",
"optional-parent-category": "(Optional) Übergeordnete Kategorie",
"parent-category-none": "(Keine)",
"copy-settings": "kopiere Einstellungen von",
"optional-clone-settings": "(Optional) dubliziere Einstellungen von Kategorie",
"purge": "Kategorie löschen",
"enable": "Enable",
"disable": "Disable",
"edit": "Edit",
"enable": "Aktivieren",
"disable": "Deaktivieren",
"edit": "Bearbeiten",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
"select-category": "Wähle Kategorie",
"set-parent-category": "Übergeordnete Kategorie festlegen",
"privileges.description": "You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or a per-group basis. You can add a new user to this table by searching for them in the form below.",
"privileges.warning": "<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.",
"privileges.section-viewing": "Viewing Privileges",
"privileges.section-posting": "Posting Privileges",
"privileges.section-moderation": "Moderation Privileges",
"privileges.section-user": "User",
"privileges.search-user": "Add User",
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",
"privileges.inherit": "If the <code>registered-users</code> group is granted a specific privilege, all other groups receive an <strong>implicit privilege</strong>, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the <code>registered-users</code> user group, and so, privileges for additional groups need not be explicitly granted.",
"privileges.description": "In diesem Bereich können die Zugriffsberechtigungen für diese Kategorie konfiguriert werden. Berechtigungen können pro-Benutzer oder pro-Gruppe gewährt werden. Du kannst einen neuen Benutzer zu dieser Tabelle hinzufügen, indem du sie in dem folgenden Formular suchst.",
"privileges.warning": "<strong>Hinweis</strong>: Die Zugriffsberechtigungen werden sofort wirksam. Es ist nicht notwendig, die Kategorie zu speichern, nachdem du die Einstellungen angepasst hast.",
"privileges.section-viewing": "Ansichtsberechtigungen",
"privileges.section-posting": "Schreibberechtigungen",
"privileges.section-moderation": "Moderationsberechtigungen",
"privileges.section-user": "Benutzer",
"privileges.search-user": "Benutzer hinzufügen",
"privileges.no-users": "Keine benutzerspezifischen Berechtigungen in dieser Kategorie.",
"privileges.section-group": "Gruppe",
"privileges.group-private": "Diese Gruppe ist privat",
"privileges.search-group": "Gruppe hinzufügen",
"privileges.copy-to-children": "In Untergeordnete kopieren",
"privileges.copy-from-category": "Kopiere von Kategorie",
"privileges.inherit": "Wenn der Gruppe <code>registered-users</code> eine bestimmte Berechtigung erteilt wird, erhalten alle anderen Gruppen eine <strong>implizite Berechtigung</strong>, auch wenn sie nicht explizit definiert / ausgewählt werden. Diese implizite Berechtigung wird dir angezeigt, da alle Benutzer Teil der Gruppe <code>registered-users</code> sind und daher keine Berechtigungen für zusätzliche Gruppen explizit erteilt werden müssen.",
"analytics.back": "Back to Categories List",
"analytics.title": "Analytics for \"%1\" category",
"analytics.pageviews-hourly": "<strong>Figure 1</strong> &ndash; Hourly page views for this category</small>",
"analytics.pageviews-daily": "<strong>Figure 2</strong> &ndash; Daily page views for this category</small>",
"analytics.topics-daily": "<strong>Figure 3</strong> &ndash; Daily topics created in this category</small>",
"analytics.posts-daily": "<strong>Figure 4</strong> &ndash; Daily posts made in this category</small>",
"analytics.back": "Zurück zur Kategorien Übersicht",
"analytics.title": "Analyse für \\\"%1\\\" Kategorie",
"analytics.pageviews-hourly": "<strong>Diagramm 1</strong> &ndash; Stündliche Seitenaufrufe in dieser Kategorie</small>",
"analytics.pageviews-daily": "<strong>Diagramm 2</strong> &ndash; Tägliche Seitenaufrufe in dieser Kategorie</small>",
"analytics.topics-daily": "<strong>Diagramm 3</strong> &ndash; Täglich erstellte Themen in dieser Kategorie</small>",
"analytics.posts-daily": "<strong>Diagramm 4</strong> &ndash; Täglich erstellte Beiträge in dieser Kategorie</small>",
"alert.created": "Created",
"alert.create-success": "Category successfully created!",
"alert.none-active": "You have no active categories.",
"alert.create": "Create a Category",
"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-purge": "<p class=\"lead\">Do you really want to purge this category \"%1\"?</p><h5><strong class=\"text-danger\">Warning!</strong> All topics and posts in this category will be purged!</h5> <p class=\"help-block\">Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category <em>temporarily</em>, you'll want to \"disable\" the category instead.</p>",
"alert.purge-success": "Category purged!",
"alert.copy-success": "Settings Copied!",
"alert.set-parent-category": "Set Parent Category",
"alert.updated": "Updated Categories",
"alert.updated-success": "Category IDs %1 successfully updated.",
"alert.upload-image": "Upload category image",
"alert.find-user": "Find a User",
"alert.user-search": "Search for a user here...",
"alert.find-group": "Find a Group",
"alert.group-search": "Search for a group here..."
"alert.created": "Erstellt",
"alert.create-success": "Kategorie erfolgreich erstellt!",
"alert.none-active": "Du hast keine aktiven Kategorien.",
"alert.create": "Erstelle eine Kategorie",
"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-purge": "<p class=\\\"lead\\\">Möchtest du die Kategorie \\\"%1\\\" wirklich löschen?</p><h5><strong class=\\\"text-danger\\\">Warnung!</strong> Alle Themen und Beiträge in dieser Kategorie werden gelöscht!</h5> <p class=\\\"help-block\\\">Löschen einer Kategorie wird alle Themen und Beiträge zu entfernen, und die Kategorie aus der Datenbank löschen. Falls du eine Kategorie <em>temporär</em> entfernen möchstest, dann kannst du sie stattdessen \\\"deaktivieren\\\".",
"alert.purge-success": "Kategorie gelöscht!",
"alert.copy-success": "Einstellungen kopiert!",
"alert.set-parent-category": "Übergeordnete Kategorie festlegen",
"alert.updated": "Kategorien aktualisiert",
"alert.updated-success": "Kategorie IDs %1 erfolgreich aktualisiert.",
"alert.upload-image": "Kategorie Bild hochladen",
"alert.find-user": "Benutzer finden",
"alert.user-search": "Hier nach einem Benutzer suchen...",
"alert.find-group": "Gruppe finden",
"alert.group-search": "Hier nach einer Gruppe suchen..."
}

@ -1,75 +1,75 @@
{
"section-general": "General",
"general/dashboard": "Dashboard",
"general/homepage": "Home Page",
"section-general": "Allgemein",
"general/dashboard": "Übersicht",
"general/homepage": "Startseite",
"general/navigation": "Navigation",
"general/languages": "Languages",
"general/sounds": "Sounds",
"general/social": "Social",
"general/languages": "Sprachen",
"general/sounds": "Töne",
"general/social": "Soziale Medien",
"section-manage": "Manage",
"manage/categories": "Categories",
"manage/tags": "Tags",
"manage/users": "Users",
"manage/registration": "Registration Queue",
"manage/groups": "Groups",
"manage/flags": "Flags",
"section-manage": "Verwalten",
"manage/categories": "Kategorien",
"manage/tags": "Schlagworte",
"manage/users": "Benutzer",
"manage/registration": "Warteliste",
"manage/groups": "Gruppen",
"manage/flags": "Markierungen",
"manage/ip-blacklist": "IP Blacklist",
"section-settings": "Settings",
"settings/general": "General",
"section-settings": "Einstellungen",
"settings/general": "Allgemein",
"settings/reputation": "Reputation",
"settings/email": "Email",
"settings/user": "User",
"settings/group": "Group",
"settings/guest": "Guests",
"settings/email": "E-Mail",
"settings/user": "Benutzer",
"settings/group": "Gruppe",
"settings/guest": "Gäste",
"settings/uploads": "Uploads",
"settings/post": "Post",
"settings/post": "Beiträge",
"settings/chat": "Chat",
"settings/pagination": "Pagination",
"settings/tags": "Tags",
"settings/notifications": "Notifications",
"settings/pagination": "Seitennummerierung",
"settings/tags": "Schlagworte",
"settings/notifications": "Benachrichtigungen",
"settings/cookies": "Cookies",
"settings/web-crawler": "Web Crawler",
"settings/sockets": "Sockets",
"settings/advanced": "Advanced",
"settings/advanced": "Erweitert",
"settings.page-title": "%1 Settings",
"settings.page-title": "%1 Einstellungen",
"section-appearance": "Appearance",
"section-appearance": "Aussehen",
"appearance/themes": "Themes",
"appearance/skins": "Skins",
"appearance/customise": "Custom HTML & CSS",
"appearance/customise": "Eigene HTML & CSS",
"section-extend": "Extend",
"section-extend": "Erweitert",
"extend/plugins": "Plugins",
"extend/widgets": "Widgets",
"extend/rewards": "Rewards",
"extend/rewards": "Belohnungen",
"section-social-auth": "Social Authentication",
"section-social-auth": "Soziale Authentifizierung",
"section-plugins": "Plugins",
"extend/plugins.install": "Install Plugins",
"extend/plugins.install": "Plugins installieren",
"section-advanced": "Advanced",
"advanced/database": "Database",
"advanced/events": "Events",
"advanced/logs": "Logs",
"advanced/errors": "Errors",
"section-advanced": "System",
"advanced/database": "Datenbank",
"advanced/events": "Ereignisse",
"advanced/logs": "Protokoll",
"advanced/errors": "Fehler",
"advanced/cache": "Cache",
"development/logger": "Logger",
"development/info": "Info",
"reload-forum": "Reload Forum",
"restart-forum": "Restart Forum",
"logout": "Log out",
"view-forum": "View Forum",
"reload-forum": "Forum neu laden",
"restart-forum": "Forum neu starten",
"logout": "Abmelden",
"view-forum": "Forum anzeigen",
"search.placeholder": "Search...",
"search.no-results": "No results...",
"search.search-forum": "Search the forum for <strong></strong>",
"search.keep-typing": "Type more to see results...",
"search.start-typing": "Start typing to see results...",
"search.placeholder": "Suchen...",
"search.no-results": "Keine Ergebnisse...",
"search.search-forum": "Suche im Forum nach <strong></strong>",
"search.keep-typing": "Gib mehr ein, um die Ergebnisse zu sehen...",
"search.start-typing": "Starte die Eingabe, um die Ergebnisse zu sehen...",
"connection-lost": "Connection to %1 has been lost, attempting to reconnect..."
"connection-lost": "Verbindung zu %1 verloren, wird wieder hergestellt..."
}

@ -1,59 +1,59 @@
{
"authentication": "Authentication",
"allow-local-login": "Allow local login",
"require-email-confirmation": "Require Email Confirmation",
"email-confirm-interval": "User may not resend a confirmation email until",
"email-confirm-email2": "minutes have elapsed",
"allow-login-with": "Allow login with",
"allow-login-with.username-email": "Username or Email",
"allow-login-with.username": "Username Only",
"allow-login-with.email": "Email Only",
"account-settings": "Account Settings",
"disable-username-changes": "Disable username changes",
"disable-email-changes": "Disable email changes",
"disable-password-changes": "Disable password changes",
"allow-account-deletion": "Allow account deletion",
"user-info-private": "Make user info private",
"authentication": "Authentifizierung",
"allow-local-login": "Erlaube Lokalen Login",
"require-email-confirmation": "Benötigt E-Mail Bestätigung",
"email-confirm-interval": "Der Benutzer kann für ",
"email-confirm-email2": " Minuten keine Bestätigungsmail erneut senden.",
"allow-login-with": "Erlaube Login mit",
"allow-login-with.username-email": "Benutzername oder E-Mail",
"allow-login-with.username": "Nur Benutzername",
"allow-login-with.email": "Nur E-Mail",
"account-settings": "Kontoeinstellungen",
"disable-username-changes": "Deaktiviere Änderungen des Benutzernames",
"disable-email-changes": "Deaktiviere Änderungen der E-Mail Adresse",
"disable-password-changes": "Deaktiviere Änderungen des Passwortes",
"allow-account-deletion": "Erlaube löschen des Kontos",
"user-info-private": "Stelle Benutzerinformationen auf Privat",
"themes": "Themes",
"disable-user-skins": "Prevent users from choosing a custom skin",
"account-protection": "Account Protection",
"login-attempts": "Login attempts per hour",
"disable-user-skins": "Verhindere das Benutzer eigene Skins verwenden",
"account-protection": "Kontosicherheit",
"login-attempts": "Login-Versuche pro Stunde",
"login-attempts-help": "If login attempts to a user&apos;s account exceeds this threshold, that account will be locked for a pre-configured amount of time",
"lockout-duration": "Account Lockout Duration (minutes)",
"lockout-duration": "Account Aussperrzeitraum (Minuten)",
"login-days": "Days to remember user login sessions",
"password-expiry-days": "Force password reset after a set number of days",
"registration": "User Registration",
"registration-type": "Registration Type",
"password-expiry-days": "Erzwinge ein Passwortreset nach x Tagen",
"registration": "Benutzer Registrierung",
"registration-type": "Registrierungart",
"registration-type.normal": "Normal",
"registration-type.admin-approval": "Admin Approval",
"registration-type.admin-approval-ip": "Admin Approval for IPs",
"registration-type.invite-only": "Invite Only",
"registration-type.admin-invite-only": "Admin Invite Only",
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.<br/>\nAdmin Approval - User registrations are placed in an <a href=\"%1/admin/manage/registration\">approval queue</a> for administrators.<br/>\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.<br/>\nInvite Only - Users can invite others from the <a href=\"%1/users\" target=\"_blank\">users</a> page.<br/>\nAdmin Invite Only - Only administrators can invite others from <a href=\"%1/users\" target=\"_blank\">users</a> and <a href=\"%1/admin/manage/users\">admin/manage/users</a> pages.<br/>\nNo registration - No user registration.<br/>",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations<br>Only applicable for \"Invite Only\"",
"min-username-length": "Minimum Username Length",
"max-username-length": "Maximum Username Length",
"min-password-length": "Minimum Password Length",
"max-about-me-length": "Maximum About Me Length",
"terms-of-use": "Forum Terms of Use <small>(Leave blank to disable)</small>",
"user-search": "User Search",
"user-search-results-per-page": "Number of results to display",
"default-user-settings": "Default User Settings",
"show-email": "Show email",
"show-fullname": "Show fullname",
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
"digest-freq.weekly": "Weekly",
"digest-freq.monthly": "Monthly",
"email-chat-notifs": "Send an email if a new chat message arrives and I am not online",
"email-post-notif": "Send an email when replies are made to topics I am subscribed to",
"follow-created-topics": "Follow topics you create",
"follow-replied-topics": "Follow topics that you reply to"
"registration-type.admin-approval": "Admin Genehmigung",
"registration-type.admin-approval-ip": "Admin Genehmigung für IPs",
"registration-type.invite-only": "Nur Einladungen",
"registration-type.admin-invite-only": "Nur Admin Einladungen",
"registration-type.disabled": "Keine Registrierung",
"registration-type.help": "Normal - Benutzer kann sich über die /register Seite registrieren.<br/>\nFreischaltung durch einen Admin - Benutzerregistrationen werden in der <a href=\"%1/admin/manage/registration\">Bestätigungswarteschlange</a> für die Admins plaziert.<br/>\nNur Einladung - Benutzer können andere auf der <a href=\"%1/users\" target=\"_blank\">Benutzer</a> Seite einladen.<br/>\nNur Admineinladung - Nur Administratoren können andere auf der <a href=\"%1/users\" target=\"_blank\">Benutzer</a> und der <a href=\"%1/admin/manage/users\">admin/manage/users</a> Seite einladen.<br/>\nKeine Registrierung- Keine Benutzerregistrierung.<br/>",
"registration.max-invites": "Maximale Einladungen pro Benutzer",
"max-invites": "Maximale Einladungen pro Benutzer",
"max-invites-help": "0 für keine Beschränkung. Admins haben keine beschränkung.<br>Nur praktikabel für \"Nur Einladungen\".",
"min-username-length": "Minimale länge des Benutzernamens",
"max-username-length": "Maximale länge des Benutzernamens",
"min-password-length": "Minimale länge des Passwortes",
"max-about-me-length": "Maximale länge von Über Mich",
"terms-of-use": "Forum Nutzungsbedingungen <small>(Leer lassen um es zu deaktivieren)</small>",
"user-search": "Benutzersuche",
"user-search-results-per-page": "Anzahl anzuzeigener Ergebnisse",
"default-user-settings": "Standard Benutzer Einstellungen",
"show-email": "Zeige E-Mail-Adresse",
"show-fullname": "Zeige vollen Namen",
"restrict-chat": "Erlaube nur Chatnachrichten von Benutzern denen ich folge",
"outgoing-new-tab": "Öffne externe Links in einem neuen Tab",
"topic-search": "Suchen innerhalb von Themen aktivieren",
"digest-freq": "Zusammenfassung abonnieren",
"digest-freq.off": "Aus",
"digest-freq.daily": "Täglich",
"digest-freq.weekly": "Wöchentlich",
"digest-freq.monthly": "Monatlich",
"email-chat-notifs": "Sende eine E-Mail, wenn eine neue Chat-Nachricht eingeht und ich nicht online bin",
"email-post-notif": "Sende eine E-Mail wenn auf Themen die ich abonniert habe geantwortet wird",
"follow-created-topics": "Themen folgen, die du erstellst",
"follow-replied-topics": "Themen folgen, auf die du antwortest"
}

@ -1,10 +1,10 @@
{
"crawlability-settings": "Crawlability Settings",
"robots-txt": "Custom Robots.txt <small>Leave blank for default</small>",
"sitemap-feed-settings": "Sitemap & Feed Settings",
"disable-rss-feeds": "Disable RSS Feeds",
"disable-sitemap-xml": "Disable Sitemap.xml",
"sitemap-topics": "Number of Topics to display in the Sitemap",
"clear-sitemap-cache": "Clear Sitemap Cache",
"view-sitemap": "View Sitemap"
"crawlability-settings": "Crawlability Einstellung",
"robots-txt": "Benutzerdefinierte Robots.txt<small>Leer lassen für Standardeinstellung</small>",
"sitemap-feed-settings": "Seitenübersicht & Feed Einstellungen",
"disable-rss-feeds": "Deaktiviere RSS Feeds",
"disable-sitemap-xml": "Deaktiviere Seitenübersicht.xml",
"sitemap-topics": "Anzahl der Themen die auf der Seitenübersicht angezeigt werden",
"clear-sitemap-cache": "Leere Seitenübersicht Cache",
"view-sitemap": "Zeige Seitenübersicht"
}

@ -29,7 +29,7 @@
"username-too-long": "Benutzername ist zu lang",
"password-too-long": "Passwort ist zu lang",
"user-banned": "Benutzer ist gesperrt",
"user-banned-reason": "Sorry, this account has been banned (Reason: %1)",
"user-banned-reason": "Entschuldige, dieses Konto wurde gebannt (Grund: %1)",
"user-too-new": "Entschuldigung, du musst %1 Sekunde(n) warten, bevor du deinen ersten Beitrag schreiben kannst.",
"blacklisted-ip": "Deine IP-Adresse ist für diese Plattform gesperrt. Sollte dies ein Irrtum sein, dann kontaktiere bitte einen Administrator.",
"ban-expiry-missing": "Bitte gebe ein Enddatum für diesen Ban an",

@ -100,8 +100,8 @@
"unsaved-changes": "Es gibt ungespeicherte Änderungen. Bist du dir sicher, dass du die Seite verlassen willst?",
"reconnecting-message": "Es scheint als hättest du die Verbindung zu %1 verloren, bitte warte während wir versuchen sie wieder aufzubauen.",
"play": "Play",
"cookies.message": "This website uses cookies to ensure you get the best experience on our website.",
"cookies.accept": "Got it!",
"cookies.learn_more": "Learn More",
"edited": "Edited"
"cookies.message": "Diese Website verwendet Cookies, um sicherzustellen, dass du die besten Erfahrungen auf unserer Website machst.",
"cookies.accept": "Verstanden!",
"cookies.learn_more": "Erfahre mehr",
"edited": "Bearbeitet"
}

@ -53,5 +53,5 @@
"upload-group-cover": "Gruppentitelbild hochladen",
"bulk-invite-instructions": "Gib eine mit Kommata getrennte Liste von Benutzernamen ein, um sie in diese Gruppe aufzunehmen",
"bulk-invite": "Mehrere einladen",
"remove_group_cover_confirm": "Are you sure you want to remove the cover picture?"
"remove_group_cover_confirm": "Bist du sicher, dass du dein Titelbild entfernen möchtest?"
}

@ -13,7 +13,7 @@
"chat.contacts": "Kontakte",
"chat.message-history": "Nachrichtenverlauf",
"chat.pop-out": "Chat als Pop-out anzeigen",
"chat.minimize": "Minimize",
"chat.minimize": "Minimieren",
"chat.maximize": "Maximieren",
"chat.seven_days": "7 Tage",
"chat.thirty_days": "30 Tage",

@ -8,7 +8,7 @@
"posted-by": "Geschrieben von",
"in-categories": "In Kategorien",
"search-child-categories": "Suche in Unterkategorien",
"has-tags": "Has tags",
"has-tags": "Hat Markierungen",
"reply-count": "Anzahl Antworten",
"at-least": "Mindestens",
"at-most": "Höchstens",

@ -13,7 +13,7 @@
"notify_me": "Erhalte eine Benachrichtigung bei neuen Antworten zu diesem Thema.",
"quote": "Zitieren",
"reply": "Antworten",
"replies_to_this_post": "Replies: %1",
"replies_to_this_post": "Antworten: %1",
"reply-as-topic": "In einem neuen Thema antworten",
"guest-login-reply": "Anmelden zum Antworten",
"edit": "Bearbeiten",

@ -31,8 +31,8 @@
"signature": "Signatur",
"birthday": "Geburtstag",
"chat": "Chat",
"chat_with": "Continue chat with %1",
"new_chat_with": "Start new chat with %1",
"chat_with": "Führe deinen Chat mit %1 fort",
"new_chat_with": "Beginne einen neuen Chat mit %1",
"follow": "Folgen",
"unfollow": "Nicht mehr folgen",
"more": "Mehr",
@ -63,7 +63,7 @@
"upload_a_picture": "Ein Bild hochladen",
"remove_uploaded_picture": "Hochgeladenes Bild entfernen",
"upload_cover_picture": "Titelbild hochladen",
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"remove_cover_picture_confirm": "Bist du sicher, dass du dein Titelbild entfernen möchtest?",
"settings": "Einstellungen",
"show_email": "Zeige meine E-Mail Adresse an.",
"show_fullname": "Zeige meinen kompletten Namen an",

@ -2,6 +2,9 @@
"forum-traffic": "Forum Traffic",
"page-views": "Page Views",
"unique-visitors": "Unique Visitors",
"users": "Users",
"posts": "Posts",
"topics": "Topics",
"page-views-last-month": "Page views Last Month",
"page-views-this-month": "Page views This Month",
"page-views-last-day": "Page views in last 24 hours",
@ -20,6 +23,11 @@
"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>",
"notices": "Notices",
"restart-not-required": "Restart not required",
"restart-required": "Restart required",
"search-plugin-installed": "Search Plugin installed",
"search-plugin-not-installed": "Search Plugin not installed",
"search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality",
"control-panel": "System Control",
"reload": "Reload",
@ -52,4 +60,4 @@
"graphs.unique-visitors": "Unique Visitors",
"graphs.registered-users": "Registered Users",
"graphs.anonymous-users": "Anonymous Users"
}
}

@ -9,7 +9,7 @@
"allow-topic-thumbnails": "Allow users to upload topic thumbnails",
"topic-thumb-size": "Topic Thumb Size",
"allowed-file-extensions": "Allowed File Extensions",
"allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. <code>pdf,xls,doc</code>).\n\t\t\t\t\tAn empty list means all extensions are allowed.",
"allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. <code>pdf,xls,doc</code>). An empty list means all extensions are allowed.",
"profile-avatars": "Profile Avatars",
"allow-profile-image-uploads": "Allow users to upload profile images",
"convert-profile-image-png": "Convert profile image uploads to PNG",
@ -25,4 +25,4 @@
"profile-covers": "Profile Covers",
"default-covers": "Default Cover Images",
"default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image"
}
}

@ -1,7 +1,7 @@
{
"section-general": "General",
"general/dashboard": "Panel",
"general/homepage": "Página Inicial",
"general/homepage": "Inicio",
"general/navigation": "Navegación",
"general/languages": "Lenguajes",
"general/sounds": "Sonidos",
@ -13,7 +13,7 @@
"manage/users": "Usuarios",
"manage/registration": "Cola de Registro",
"manage/groups": "Grupos",
"manage/flags": "Banderas",
"manage/flags": "Reportes",
"manage/ip-blacklist": "Lista negra de IP",
"section-settings": "Opciones",
@ -24,39 +24,39 @@
"settings/group": "Grupo",
"settings/guest": "Invitados",
"settings/uploads": "Subidas",
"settings/post": "Anuncio",
"settings/post": "Mensaje",
"settings/chat": "Chat",
"settings/pagination": "Paginación",
"settings/tags": "Etiquetas",
"settings/notifications": "Notificaciones",
"settings/cookies": "Cookies",
"settings/web-crawler": "Web Crawler",
"settings/sockets": "Zócalos",
"settings/web-crawler": "Rastreador web",
"settings/sockets": "Sockets",
"settings/advanced": "Avanzado",
"settings.page-title": "%1 Opciones",
"section-appearance": "Apariencia",
"appearance/themes": "Temas",
"appearance/skins": "Skins",
"appearance/skins": "Pieles",
"appearance/customise": "HTML & CSS personalizado",
"section-extend": "Extender",
"extend/plugins": "Plugins",
"extend/plugins": "Extensiones",
"extend/widgets": "Widgets",
"extend/rewards": "Recompensas",
"section-social-auth": "Autentificación Social",
"section-plugins": "Plugins",
"extend/plugins.install": "Instalar plugins",
"section-plugins": "Extensiones",
"extend/plugins.install": "Instalar extensiones",
"section-advanced": "Avanzado",
"advanced/database": "Base de datos",
"advanced/events": "Eventos",
"advanced/logs": "Registros",
"advanced/errors": "Errores",
"advanced/cache": "Cache",
"advanced/cache": "Caché",
"development/logger": "Registro",
"development/info": "Información",
@ -67,9 +67,9 @@
"search.placeholder": "Buscar...",
"search.no-results": "Sin resultados...",
"search.search-forum": "Search the forum for <strong></strong>",
"search.search-forum": "Buscar en el foro <strong></strong>",
"search.keep-typing": "Escribe más para ver resultados...",
"search.start-typing": "Empieza a escribir para ver resultados...",
"connection-lost": "La connexión a %1 se ha perdido, intentando reconectarse..."
"connection-lost": "La conexión a %1 se ha perdido, intentando reconectar..."
}

@ -1,7 +1,7 @@
{
"alert.confirm-reload": "Are you sure you wish to reload NodeBB?",
"alert.confirm-restart": "Are you sure you wish to restart NodeBB?",
"alert.confirm-reload": "Oled kindel, et soovid taaslaadida NodeBB?",
"alert.confirm-restart": "Oled kindel, et soovid taaslaadida NodeBB?",
"acp-title": "%1 | NodeBB Admin Control Panel",
"settings-header-contents": "Contents"
"acp-title": "%1 | NodeBB Administraatori kontrollpaneel",
"settings-header-contents": "Sisu"
}

@ -1,11 +1,11 @@
{
"post-cache": "Post Cache",
"posts-in-cache": "Posts in Cache",
"average-post-size": "Average Post Size",
"length-to-max": "Length / Max",
"percent-full": "%1% Full",
"post-cache-size": "Post Cache Size",
"items-in-cache": "Items in Cache",
"control-panel": "Control Panel",
"update-settings": "Update Cache Settings"
"post-cache": "Postituste vahemälu",
"posts-in-cache": "Postitused vahemälus",
"average-post-size": "Keskmine postituse suurus",
"length-to-max": "Pikkus / Maksimuum",
"percent-full": "%1% Täis",
"post-cache-size": "Postituse vahemälu suurus",
"items-in-cache": "Esemed vahemälus",
"control-panel": "Kontrollpaneel",
"update-settings": "Uuendatud vahemälu seaded"
}

@ -1,6 +1,6 @@
{
"events": "Events",
"no-events": "There are no events",
"control-panel": "Events Control Panel",
"delete-events": "Delete Events"
"events": "Sündmused",
"no-events": "Sündmused puuduvad",
"control-panel": "Sündmuste kontrollpaneel",
"delete-events": "Kustuta sündmus"
}

@ -1,91 +1,91 @@
{
"users": "Users",
"edit": "Edit",
"make-admin": "Make Admin",
"remove-admin": "Remove Admin",
"validate-email": "Validate Email",
"send-validation-email": "Send Validation Email",
"password-reset-email": "Send Password Reset Email",
"ban": "Ban User(s)",
"temp-ban": "Ban User(s) Temporarily",
"unban": "Unban User(s)",
"reset-lockout": "Reset Lockout",
"reset-flags": "Reset Flags",
"delete": "Delete User(s)",
"purge": "Delete User(s) and Content",
"download-csv": "Download CSV",
"invite": "Invite",
"new": "New User",
"users": "Kasutajad",
"edit": "Muuda",
"make-admin": "Ülenda administraatoriks",
"remove-admin": "Eemalda administraator",
"validate-email": "Kinnita email",
"send-validation-email": "Saada kinnituskiri",
"password-reset-email": "Saada parooli taastamise email",
"ban": "Keelusta Kasutaja(d)",
"temp-ban": "Keelusta Kasutaja(d) ajutiselt",
"unban": "Tühista keeld Kasutaja(tel)",
"reset-lockout": "Taaslae blokeering",
"reset-flags": "Taasta raporteerimised",
"delete": "Kustuta Kasutaja(d)",
"purge": "Kustuta Kasutaja(d) ja Sisu",
"download-csv": "Lae alla CSV",
"invite": "Kutsu",
"new": "Uus kasutaja",
"pills.latest": "Latest Users",
"pills.unvalidated": "Not Validated",
"pills.no-posts": "No Posts",
"pills.top-posters": "Top Posters",
"pills.top-rep": "Most Reputation",
"pills.inactive": "Inactive",
"pills.flagged": "Most Flagged",
"pills.banned": "Banned",
"pills.search": "User Search",
"pills.latest": "Hiljutised kasutajad",
"pills.unvalidated": "Valideerimata",
"pills.no-posts": "Pole postitusi",
"pills.top-posters": "Top postitajad",
"pills.top-rep": "Kõige rohkem reputatsiooni",
"pills.inactive": "Ebaaktiivne",
"pills.flagged": "Enim raporteeritud",
"pills.banned": "Keelustatud",
"pills.search": "Kasutajate otsing",
"search.username": "By User Name",
"search.username-placeholder": "Enter a username to search",
"search.email": "By Email",
"search.email-placeholder": "Enter a email to search",
"search.ip": "By IP Address",
"search.ip-placeholder": "Enter an IP Address to search",
"search.not-found": "User not found!",
"search.username": "Kasutajanime järgi",
"search.username-placeholder": "Sisesta kasutajanimi, keda soovid otsida",
"search.email": "Emaili kaudu",
"search.email-placeholder": "Sisesta email, mida soovid otsida",
"search.ip": "IP Aadressi järgi",
"search.ip-placeholder": "Sisesta IP Aadress, mida soovid otsida",
"search.not-found": "Kasutajat ei leitud!",
"inactive.3-months": "3 months",
"inactive.6-months": "6 months",
"inactive.12-months": "12 months",
"inactive.3-months": "3 kuud",
"inactive.6-months": "6 kuud",
"inactive.12-months": "12 kuud",
"users.uid": "uid",
"users.username": "username",
"users.username": "Kasutajanimi",
"users.email": "email",
"users.postcount": "postcount",
"users.reputation": "reputation",
"users.flags": "flags",
"users.joined": "joined",
"users.last-online": "last online",
"users.banned": "banned",
"users.postcount": "Postituste arv",
"users.reputation": "Reputatsioon",
"users.flags": "Raporteerimised",
"users.joined": "Liitunud",
"users.last-online": "Viimati sees",
"users.banned": "keelustatud",
"create.username": "User Name",
"create.username": "Kasutajanimi",
"create.email": "Email",
"create.email-placeholder": "Email of this user",
"create.password": "Password",
"create.password-confirm": "Confirm Password",
"create.email-placeholder": "Antud kasutaja email",
"create.password": "Parool",
"create.password-confirm": "Kinnita parool",
"temp-ban.length": "Ban Length",
"temp-ban.reason": "Reason <span class=\"text-muted\">(Optional)</span>",
"temp-ban.hours": "Hours",
"temp-ban.days": "Days",
"temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.",
"temp-ban.length": "Keelustuse pikkus",
"temp-ban.reason": "Põhjus <span class=\"text-muted\">(valikuline)</span>",
"temp-ban.hours": "Tunnid",
"temp-ban.days": "Päevad",
"temp-ban.explanation": "Sisesta keelustuse pikkus. Kui sisestad 0, siis seda loetakse igaveseks keelustuseks.",
"alerts.confirm-ban": "Do you really want to ban this user <strong>permanently</strong>?",
"alerts.confirm-ban-multi": "Do you really want to ban these users <strong>permanently</strong>?",
"alerts.ban-success": "User(s) banned!",
"alerts.button-ban-x": "Ban %1 user(s)",
"alerts.unban-success": "User(s) unbanned!",
"alerts.confirm-ban": "Kas te tõesti soovite antud kasutajat <strong>igaveseks</strong> keelustada ?",
"alerts.confirm-ban-multi": "Kas te tõesti soovite antud kasutajaid <strong>igaveseks</strong> keelustada?",
"alerts.ban-success": "Kasutaja(d) keelustatud!",
"alerts.button-ban-x": "Keelusta %1 kasutaja(d)",
"alerts.unban-success": "Kasutaja(te) keelustus eemaldatud",
"alerts.lockout-reset-success": "Lockout(s) reset!",
"alerts.flag-reset-success": "Flags(s) reset!",
"alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!",
"alerts.make-admin-success": "User(s) are now administrators.",
"alerts.flag-reset-success": "Märgistuse(te) taaslaadimine",
"alerts.no-remove-yourself-admin": "Te ei saa ennast Administraatorina eemaldada",
"alerts.make-admin-success": "Kasutaja(d) on nüüd administraatorid.",
"alerts.confirm-remove-admin": "Do you really want to remove admins?",
"alerts.remove-admin-success": "User(s) are no longer administrators.",
"alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?",
"alerts.validate-email-success": "Emails validated",
"alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?",
"alerts.confirm-delete": "<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable! Only the user account will be deleted, their posts and topics will remain.",
"alerts.delete-success": "User(s) Deleted!",
"alerts.confirm-purge": "<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable! All user data and content will be erased!",
"alerts.create": "Create User",
"alerts.button-create": "Create",
"alerts.button-cancel": "Cancel",
"alerts.error-passwords-different": "Passwords must match!",
"alerts.error-x": "<strong>Error</strong><p>%1</p>",
"alerts.create-success": "User created!",
"alerts.remove-admin-success": "Kasutaja(d) ei ole enam administraatorid.",
"alerts.confirm-validate-email": "Kas te tahate antud kasutaja(te) emaili(d) kinnitada?",
"alerts.validate-email-success": "Emailid kinnitatud",
"alerts.password-reset-confirm": "Kas te tahate saata parooli taastamise emaili(d) antud kasutaja(te)le?",
"alerts.confirm-delete": "<b>Hoiatus!</b><br/>Kas te tõesti tahate antud kasutaja(d) kustutada?<br/> Seda ei saa enam tagasi võtta. Ainult kasutaja kustutatakse, ülejäänud kasutaja tehtud teemad ja postitused jäävad alles.",
"alerts.delete-success": "Kasutaja(d) kustutatud!",
"alerts.confirm-purge": "<b>Hoiatus!</b><br/>Kas te tõesti tahate antud kasutaja(d) ja nende sisu kustutada?<br/> Seda ei saa enam tagasi võtta. Kõik kasutajate andmed ja sisu kustutatakse jäädavalt.",
"alerts.create": "Loo Kasutaja",
"alerts.button-create": "Loo",
"alerts.button-cancel": "Tühista",
"alerts.error-passwords-different": "Paroolid peavad kattuma!",
"alerts.error-x": "<strong>Viga</strong><p>%1</p>",
"alerts.create-success": "Kasutaja tehtud!",
"alerts.prompt-email": "Email: ",
"alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.prompt-email": "Email:",
"alerts.email-sent-to": "Kutse on saadetud %1",
"alerts.x-users-found": "%1 user(s) found! Search took %2 ms."
}

@ -2,6 +2,6 @@
"alert.confirm-reload": "Êtes-vous sûr de vouloir recharger NodeBB ?",
"alert.confirm-restart": "Êtes-vous sûr de vouloir redémarrer NodeBB ?",
"acp-title": "%1 | Panneau de contrôle d'administration NodeBB",
"acp-title": "%1 | Panneau d'administration NodeBB",
"settings-header-contents": "Contenus"
}

@ -8,7 +8,7 @@
"clear-error-log": "Effacer les journaux d'erreurs",
"route": "Route",
"count": "Nombre",
"no-routes-not-found": "Super ! Aucune route n'a été trouvée.",
"no-routes-not-found": "Hourra ! Aucune route n'a pas été trouvée.",
"clear404-confirm": "Êtes-vous sûr de vouloir effacer les journaux d'erreurs 404 ?",
"clear404-success": "Erreurs \"404 non trouvé\" effacées"
}

@ -1,6 +1,6 @@
{
"custom-css": "CSS personnalisé",
"custom-css.description": "Entrez vos déclarations CSS ici, elles seront appliquées après tous les autres styles.",
"custom-css.description": "Entrez vos propres déclarations de CSS ici, elles seront appliquées après tous les autres styles.",
"custom-css.enable": "Activer les CSS personnalisés",
"custom-header": "En-tête personnalisé",

@ -5,5 +5,5 @@
"current-skin": "Skin actuel",
"skin-updated": "Skin mis à jour",
"applied-success": "Le skin %1 a été appliqué avec succès.",
"revert-success": "Retour des couleurs du skin aux couleurs de base"
"revert-success": "Couleurs du skin remises par défaut"
}

@ -1,7 +1,7 @@
{
"checking-for-installed": "Vérification des thèmes installés…",
"homepage": "Page d'accueil",
"select-theme": "Choisir ce thème",
"select-theme": "Choisir un thème",
"current-theme": "Thème actuel",
"no-themes": "Aucun thème installé",
"revert-confirm": "Êtes-vous sûr de vouloir restaurer le thème NodeBB par défaut ?",

@ -1,10 +1,10 @@
{
"logger-settings": "Réglages de la journalisation",
"description": "En activant les cases, vous recevrez des journaux dans votre terminal. Si vous spécifiez un chemin, les journaux seront sauvegardés à la place. La journalisation HTTP est utile pour collecter des statistiques sur les personnes qui accèdent à votre forum. En plus de la journalisation des requêtes HTTP, nous pouvons également journaliser les évènements. La journalisation socket.io, associée au monitoring de redis-cli, peut être très utile pour apprendre les rouages de NodeBB.",
"description": "En activant les cases, vous recevrez des journaux dans votre terminal. Si vous spécifiez un chemin, les journaux y seront sauvegardés. La journalisation HTTP est utile pour collecter des statistiques sur les personnes qui accèdent à votre forum. En plus de la journalisation des requêtes HTTP, nous pouvons également journaliser les évènements. La journalisation socket.io, associée au monitoring redis-cli, peut être très utile pour apprendre les rouages de NodeBB.",
"explanation": "Cochez ou décochez simplement les réglages de la journalisation pour l'activer ou la désactiver. Aucun redémarrage n'est nécessaire.",
"enable-http": "Activer la journalisation HTTP",
"enable-socket": "Activer la journalisation des événements socket.io",
"file-path": "Chemin vers le fichier journal",
"file-path": "Chemin vers les fichiers journaux",
"file-path-placeholder": "/path/to/log/file.log ::: laissez vide pour journaliser vers votre terminal",
"control-panel": "Panneau de contrôle de la journalisation",

@ -12,15 +12,15 @@
"reorder-plugins": "Re-ordonner les plugins",
"order-active": "Trier les plugins actifs",
"dev-interested": "Êtes-vous intéressés par l'écriture de plugins pour NodeBB ?",
"docs-info": "La documentation complete sur l'écriture de plugins peut être trouvée sur le<a target=\"_blank\" href=\"https://docs.nodebb.org/en/latest/plugins/create.html\">portail de documentation NodeBB</a>.",
"docs-info": "La documentation complète sur l'écriture de plugins peut être trouvée sur le<a target=\"_blank\" href=\"https://docs.nodebb.org/en/latest/plugins/create.html\">portail de documentation NodeBB</a>.",
"order.description": "Certains plugins fonctionnent de la meilleure façon lorsqu'ils sont initialisés avant/après d'autres plugins.",
"order.explanation": "Les plugins chargent dans l'ordre spécifié ici, de haut en bas.",
"order.description": "Certains plugins fonctionnent mieux lorsqu'ils sont initialisés avant/après d'autres plugins.",
"order.explanation": "Les plugins se chargent dans l'ordre spécifié, ici de haut en bas.",
"plugin-item.themes": "Thèmes",
"plugin-item.deactivate": "Désactiver",
"plugin-item.activate": "Activer",
"plugin-item.install": "Install",
"plugin-item.install": "Installer",
"plugin-item.uninstall": "Désinstaller",
"plugin-item.settings": "Réglages",
"plugin-item.installed": "Installé",
@ -28,7 +28,7 @@
"plugin-item.upgrade": "Mettre à jour",
"plugin-item.more-info": "Pour plus d'informations :",
"plugin-item.unknown": "Inconnu",
"plugin-item.unknown-explanation": "L'état de ce plugin n'a pas pu être déterminé, possiblement à cause une erreur de configuration.",
"plugin-item.unknown-explanation": "L'état de ce plugin n'a pas pu être déterminé, possiblement à cause d'une erreur de configuration.",
"alert.enabled": "Plugin activé",
"alert.disabled": "Plugin désactivé",
@ -39,9 +39,9 @@
"alert.deactivate-success": "Plugin désactivé avec succès",
"alert.upgrade-success": "Veuillez recharger votre NodeBB pour achever la mise à jour de ce plugin.",
"alert.install-success": "Plugin installé avec succès, veuillez maintenant l'activer.",
"alert.uninstall-success": "Le plugin a été désactivé et desinstallé avec succès.",
"alert.suggest-error": "<p>NodeBB n'a pas pu joindre le gestionnaire de paquets, procéder à l'installation de la dernière version ?</p><div class=\"alert alert-danger\"><strong>Le serveur a retourné (%1)</strong> : %2</div>",
"alert.uninstall-success": "Le plugin a été désactivé et désinstallé avec succès.",
"alert.suggest-error": "<p>NodeBB n'a pas pu joindre le gestionnaire de paquets, procéder à l'installation de la dernière version ?</p><div class=\"alert alert-danger\"><strong>Le serveur a répondu (%1)</strong> : %2</div>",
"alert.package-manager-unreachable": "<p>NodeBB n'a pas pu joindre le gestionnaire de paquets, une mise à jour n'est pas suggérée pour le moment.</p>",
"alert.incompatible": "<p>Votre version de NodeBB (v%1) ne peut mettre à jour que vers la version v%2 de ce plugin. Veuillez mettre à jour NodeBB si vous souhaitez installer une version plus récente de ce plugin.</p>",
"alert.possibly-incompatible": "<div class=\"alert alert-warning\"><p><strong>Aucune information de compatibilité trouvée</strong></p><p>Ce plugin n'a pas spécifié de version pour une installation sur votre version de NodeBB. Aucune compatibilité ne peut être garantie, et ce plugin pourrait empêcher NodeBB de démarrer correctement.</p></div><p>Dans l'éventualité où NodeBB ne pourrait pas démarrer proprement :</p><pre><code>$ ./nodebb reset plugin=\"%1\"</code></pre><p>Voulez-vous continuer l'installation de ce plugin ?</p>"
"alert.possibly-incompatible": "<div class=\"alert alert-warning\"><p><strong>Aucune information de compatibilité trouvée</strong></p><p>Ce plugin n'a pas spécifié de version pour une installation sur votre version de NodeBB. Aucune compatibilité ne peut être garantie et ce plugin pourrait empêcher NodeBB de démarrer correctement.</p></div><p>Dans l'éventualité où NodeBB ne pourrait pas démarrer proprement :</p><pre><code>$ ./nodebb reset plugin=\"%1\"</code></pre><p>Voulez-vous continuer l'installation de ce plugin ?</p>"
}

@ -1,10 +1,10 @@
{
"rewards": "Récompenses",
"condition-if-users": "Si la propriété de l'utilisateur",
"condition-is": "est",
"condition-then": "alors",
"condition-is": "Est :",
"condition-then": "Alors :",
"max-claims": "Nombre de fois que la récompense peut être obtenue",
"zero-infinite": "Entrez 0 pour un nombre infini",
"zero-infinite": "Entrez 0 pour infini",
"delete": "Supprimer",
"enable": "Activer",
"disable": "Désactiver",

@ -1,9 +1,9 @@
{
"available": "Widgets disponibles",
"explanation": "Sélectionnez un widget depuis le menu puis glissez déposez-le dans une zone template du widget à gauche.",
"explanation": "Sélectionnez un widget depuis le menu puis glissez-déposez le dans une zone template du widget à gauche.",
"none-installed": "Aucun widget trouvé ! Activez le plugin widgets essentiels dans le panneau de contrôle <a href=\"%1\">plugins</a>.",
"containers.available": "Conteneurs disponibles",
"containers.explanation": "Glissez déposez sur n'importe quel widget actif",
"containers.explanation": "Glissez-déposez sur n'importe quel widget actif",
"containers.none": "Aucun",
"container.well": "Well",
"container.jumbotron": "Jombotron",

@ -9,29 +9,29 @@
"stats.day": "Jour",
"stats.week": "Semaine",
"stats.month": "Mois",
"stats.all": "Toujours",
"stats.all": "Tous les temps",
"updates": "Mises à jour",
"running-version": "<strong>NodeBB v<span id=\"version\">%1</span></strong> est actuellement installé.",
"keep-updated": "Assurez-vous que votre version de NodeBB est à jour des derniers patchs de sécurité et corrections de bugs.",
"keep-updated": "Assurez-vous que votre version de NodeBB est à jour pour les derniers patchs de sécurité et correctifs de bugs.",
"up-to-date": "<p>Votre version <strong>est à jour</strong> <i class=\"fa fa-check\"></i></p>",
"upgrade-available": "<p>A new version (v%1) has been released. Consider <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">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/en/latest/upgrading/index.html\">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>",
"upgrade-available": "<p>Une nouvelle version (v%1) a été publiée. Pensez à <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">mettre à jour votre version de NodeBB</a>.</p>",
"prerelease-upgrade-available": "<p>Ceci est une ancienne version préliminaire de NodeBB. Une nouvelle version (v%1) a été publiée. Pensez à <a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">mettre à jour votre version de NodeBB</a>.</p>",
"prerelease-warning": "<p>Ceci est une version <strong>préliminaire</strong> de NodeBB. Des bugs inattendus peuvent se produire. <i class=\"fa fa-exclamation-triangle\"></i></p>",
"notices": "Informations",
"control-panel": "Contrôle du système",
"reload": "Recharger",
"restart": "Redémarrer",
"restart-warning": "Reloading or Restarting your NodeBB will drop all existing connections for a few seconds.",
"restart-warning": "Recharger ou redémarrer NodeBB coupera toutes les connexions existantes pendant quelques secondes.",
"maintenance-mode": "Mode maintenance",
"maintenance-mode-title": "Cliquez ici pour passer NodeBB en mode maintenance",
"realtime-chart-updates": "Realtime Chart Updates",
"realtime-chart-updates": "Mises à jour des graphiques en temps réel",
"active-users": "Active Users",
"active-users.users": "Users",
"active-users.guests": "Guests",
"active-users": "Utilisateurs actifs",
"active-users.users": "Utilisateurs",
"active-users.guests": "Invités",
"active-users.total": "Total",
"active-users.connections": "Connexions",
@ -42,7 +42,7 @@
"user-presence": "Présence des utilisateurs",
"on-categories": "Sur la liste des catégories",
"reading-posts": "Lit des messages",
"browsing-topics": "Parcours les sujets",
"browsing-topics": "Parcoure les sujets",
"recent": "Récents",
"unread": "Non lus",

@ -1,8 +1,8 @@
{
"icon": "Icone :",
"icon": "Icône :",
"change-icon": "changer",
"route": "Route :",
"tooltip": "Tooltip :",
"tooltip": "Info-bulle :",
"text": "Texte :",
"text-class": "Classe de texte : <small>optionnel</small>",
"id": "ID : <small>optionnel</small>",

@ -1,6 +1,6 @@
{
"notifications": "Notifications",
"chat-messages": "Messages de discussion",
"chat-messages": "Discussions",
"play-sound": "Jouer",
"incoming-message": "Message entrant",
"outgoing-message": "Message sortant",

@ -1,68 +1,68 @@
{
"settings": "Category Settings",
"privileges": "Privileges",
"settings": "Paramètres de la catégorie",
"privileges": "Privilèges",
"name": "Category Name",
"description": "Category Description",
"bg-color": "Background Colour",
"text-color": "Text Colour",
"bg-image-size": "Background Image Size",
"custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies",
"ext-link": "External Link",
"upload-image": "Upload Image",
"delete-image": "Remove",
"category-image": "Category Image",
"parent-category": "Parent Category",
"optional-parent-category": "(Optional) Parent Category",
"parent-category-none": "(None)",
"copy-settings": "Copy Settings From",
"optional-clone-settings": "(Optional) Clone Settings From Category",
"purge": "Purge Category",
"name": "Nom de la catégorie",
"description": "Description de la catégorie",
"bg-color": "Couleur d'arrière plan",
"text-color": "Couleur du texte",
"bg-image-size": "Taille de l'image d'arrière plan",
"custom-class": "Class personnalisée",
"num-recent-replies": "# de réponses récentes",
"ext-link": "Lien externe",
"upload-image": "Envoyer une image",
"delete-image": "Enlever",
"category-image": "Image de la catégorie",
"parent-category": "Catégorie parente",
"optional-parent-category": "Catégorie parente (optionnel)",
"parent-category-none": "(Aucun)",
"copy-settings": "Copier les paramètres de",
"optional-clone-settings": "Copier les paramètres de la catégorie (optionnel)",
"purge": "Vider la catégorie",
"enable": "Enable",
"disable": "Disable",
"edit": "Edit",
"enable": "Activer",
"disable": "Désactiver",
"edit": "Éditer",
"select-category": "Select Category",
"set-parent-category": "Set Parent Category",
"select-category": "Sélectionner une catégorie",
"set-parent-category": "Définissez une catégorie parente",
"privileges.description": "You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or a per-group basis. You can add a new user to this table by searching for them in the form below.",
"privileges.warning": "<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.",
"privileges.section-viewing": "Viewing Privileges",
"privileges.warning": "<strong>Note</strong>: Les paramètres de privilège prennent effet instantanément . Il n'est pas nécessaire de sauvegarder la catégorie après avoir ajuster ces paramètres.",
"privileges.section-viewing": "Afficher les Privilèges",
"privileges.section-posting": "Posting Privileges",
"privileges.section-moderation": "Moderation Privileges",
"privileges.section-user": "User",
"privileges.search-user": "Add User",
"privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group",
"privileges.group-private": "This group is private",
"privileges.search-group": "Add Group",
"privileges.copy-to-children": "Copy to Children",
"privileges.copy-from-category": "Copy from Category",
"privileges.inherit": "If the <code>registered-users</code> group is granted a specific privilege, all other groups receive an <strong>implicit privilege</strong>, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the <code>registered-users</code> user group, and so, privileges for additional groups need not be explicitly granted.",
"privileges.section-moderation": "Privilèges de modération",
"privileges.section-user": "Utilisateur",
"privileges.search-user": "Ajouter un utilisateur",
"privileges.no-users": "Aucun privilège spécifique aux utilisateurs dans cette catégorie.",
"privileges.section-group": "Groupe",
"privileges.group-private": "Ce groupe est privé",
"privileges.search-group": "Ajouter un groupe",
"privileges.copy-to-children": "Copier au enfants",
"privileges.copy-from-category": "Copier depuis une catégorie",
"privileges.inherit": "Si le groupe <code>utilisateurs enregistrés</code> bénéficie d'un privilège supplémentaire, tous les autres groupes recevront un <strong>privilège implicite</strong>, même s'ils ne sont pas explicitement définis. Ce privilège implicite vous est montré car tous les utilisateurs font partie du groupe <code>utilisateurs enregistrés</code> ainsi, les privilèges accordés aux autres groupes ne doivent pas nécessairement être explicitement accordés.",
"analytics.back": "Back to Categories List",
"analytics.back": "Revenir à la liste des catégories",
"analytics.title": "Analytics for \"%1\" category",
"analytics.pageviews-hourly": "<strong>Figure 1</strong> &ndash; Hourly page views for this category</small>",
"analytics.pageviews-daily": "<strong>Figure 2</strong> &ndash; Daily page views for this category</small>",
"analytics.topics-daily": "<strong>Figure 3</strong> &ndash; Daily topics created in this category</small>",
"analytics.posts-daily": "<strong>Figure 4</strong> &ndash; Daily posts made in this category</small>",
"analytics.pageviews-hourly": "<strong>Figure 1</strong> &ndash; Pages vues par heure pour cette catégorie</small>",
"analytics.pageviews-daily": "<strong>Figure 2</strong> &ndash; Pages vues par jour pour cette catégorie</small>",
"analytics.topics-daily": "<strong>Figure 3</strong> &ndash; Sujets créés par jour dans catégorie</small>",
"analytics.posts-daily": "<strong>Figure 4</strong> &ndash; Messages par jours postés dans cette catégorie</small>",
"alert.created": "Created",
"alert.create-success": "Category successfully created!",
"alert.none-active": "You have no active categories.",
"alert.create": "Create a Category",
"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.created": "Crées",
"alert.create-success": "Catégorie créée avec succès !",
"alert.none-active": "Vous n'avez aucune catégorie active.",
"alert.create": "Créer une catégorie",
"alert.confirm-moderate": "<strong>Êtes-vous sûr de vouloir accorder à ce groupe les privilèges de modération ?</strong> Ce groupe est public, et n'importe qui peut s'y joindre.",
"alert.confirm-purge": "<p class=\"lead\">Do you really want to purge this category \"%1\"?</p><h5><strong class=\"text-danger\">Warning!</strong> All topics and posts in this category will be purged!</h5> <p class=\"help-block\">Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category <em>temporarily</em>, you'll want to \"disable\" the category instead.</p>",
"alert.purge-success": "Category purged!",
"alert.copy-success": "Settings Copied!",
"alert.set-parent-category": "Set Parent Category",
"alert.updated": "Updated Categories",
"alert.purge-success": "Catégorie purgée !",
"alert.copy-success": "Paramètres copiés !",
"alert.set-parent-category": "Définir une catégorie parent",
"alert.updated": "Catégories mises à jour",
"alert.updated-success": "Category IDs %1 successfully updated.",
"alert.upload-image": "Upload category image",
"alert.find-user": "Find a User",
"alert.user-search": "Search for a user here...",
"alert.find-group": "Find a Group",
"alert.group-search": "Search for a group here..."
"alert.find-user": "Trouver un utilisateur",
"alert.user-search": "Chercher un utilisateur ici...",
"alert.find-group": "Trouver un groupe",
"alert.group-search": "Chercher un groupe ici..."
}

@ -1,19 +1,19 @@
{
"daily": "Daily flags",
"by-user": "Flags by user",
"by-user-search": "Search flagged posts by username",
"category": "Category",
"sort-by": "Sort By",
"sort-by.most-flags": "Most Flags",
"sort-by.most-recent": "Most Recent",
"search": "Search",
"dismiss-all": "Dismiss All",
"none-flagged": "No flagged posts!",
"posted-in": "Posted in %1",
"read-more": "Read More",
"flagged-x-times": "This post has been flagged %1 time(s):",
"dismiss": "Dismiss this Flag",
"delete-post": "Delete the Post",
"daily": "Signalements par jours",
"by-user": "Signalements par utilisateur",
"by-user-search": "Rechercher une sujet signalé par nom d'utilisateur",
"category": "Catégorie",
"sort-by": "Trier par",
"sort-by.most-flags": "Les plus signalés",
"sort-by.most-recent": "Les plus récents",
"search": "Rechercher",
"dismiss-all": "Tout rejeté",
"none-flagged": "Aucun sujet signalé !",
"posted-in": "Posté dans 1%",
"read-more": "Lire la suite",
"flagged-x-times": "Ce sujet a été signalé %1 fois :",
"dismiss": "Rejeté ce signalement",
"delete-post": "Supprimer le message",
"alerts.confirm-delete-post": "Do you really want to delete this post?"
"alerts.confirm-delete-post": "Voulez vous réellement supprimer ce message ?"
}

@ -1,34 +1,34 @@
{
"name": "Group Name",
"description": "Group Description",
"system": "System Group",
"edit": "Edit",
"search-placeholder": "Search",
"create": "Create Group",
"description-placeholder": "A short description about your group",
"create-button": "Create",
"name": "Nom du groupe",
"description": "Description du groupe",
"system": "Groupe système",
"edit": "Éditer",
"search-placeholder": "Rechercher",
"create": "Créer un groupe",
"description-placeholder": "Une courte description de votre groupe",
"create-button": "Créer",
"alerts.create-failure": "<strong>Uh-Oh</strong><p>There was a problem creating your group. Please try again later!</p>",
"alerts.confirm-delete": "Are you sure you wish to delete this group?",
"alerts.create-failure": "<strong>Oh-Oh</strong><p>Une erreur s'est produite lors de la création de votre groupe. Veuillez réessayer ultérieurement !</p>",
"alerts.confirm-delete": "Êtes-vous sûr de vouloir supprimer ce groupe ?",
"edit.name": "Name",
"edit.name": "Nom",
"edit.description": "Description",
"edit.user-title": "Title of Members",
"edit.icon": "Group Icon",
"edit.label-color": "Group Label Color",
"edit.show-badge": "Show Badge",
"edit.private-details": "If enabled, joining of groups requires approval from a group owner.",
"edit.private-override": "Warning: Private groups is disabled at system level, which overrides this option.",
"edit.disable-requests": "Disable join requests",
"edit.hidden": "Hidden",
"edit.hidden-details": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"edit.add-user": "Add User to Group",
"edit.add-user-search": "Search Users",
"edit.members": "Member List",
"control-panel": "Groups Control Panel",
"revert": "Revert",
"edit.user-title": "Titre des membres",
"edit.icon": "Icône du groupe",
"edit.label-color": "Couleur du groupe",
"edit.show-badge": "Afficher le badge",
"edit.private-details": "Si activé, rejoindre les groupes nécessitera l'approbation de l'un de leurs propriétaires.",
"edit.private-override": "Attention : Les groupes privés sont désactivés au niveau du système, ce qui annule cette option.",
"edit.disable-requests": "Désactiver les demandes d'adhésion",
"edit.hidden": "Masqué",
"edit.hidden-details": "Si activé, ce groupe sera masqué de la liste des groupes et les utilisateurs devront être invités manuellement.",
"edit.add-user": "Ajouter l'utilisateur au groupe",
"edit.add-user-search": "Rechercher des utilisateurs",
"edit.members": "Liste des membres",
"control-panel": "Panneau de contrôle des groupes",
"revert": "Retour",
"edit.no-users-found": "No Users Found",
"edit.confirm-remove-user": "Are you sure you want to remove this user?",
"edit.save-success": "Changes saved!"
"edit.no-users-found": "Aucun utilisateurs trouvé",
"edit.confirm-remove-user": "Êtes-vous sûr de vouloir retirer cet utilisateur ?",
"edit.save-success": "Changements sauvegardés !"
}

@ -1,15 +1,15 @@
{
"lead": "Configure your IP blacklist here.",
"lead": "Configurez votre liste noire d'adresses IP ici.",
"description": "Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and they will be prevented from logging in to or registering a new account.",
"active-rules": "Active Rules",
"validate": "Validate Blacklist",
"apply": "Apply Blacklist",
"active-rules": "Règles actives",
"validate": "Valider la liste noire",
"apply": "Appliquer la liste noire",
"hints": "Syntax Hints",
"hint-1": "Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g. <code>192.168.100.0/22</code>).",
"hint-2": "You can add in comments by starting lines with the <code>#</code> symbol.",
"hint-2": "Vous pouvez ajouter en commentaire en commençant la ligne pas le symbole <code>#</code>.",
"validate.x-valid": "<strong>%1</strong> out of <strong>%2</strong> rule(s) valid.",
"validate.x-invalid": "The following <strong>%1</strong> rules are invalid:",
"alerts.applied-success": "Blacklist Applied"
"alerts.applied-success": "Liste noire appliquée"
}

@ -1,11 +1,11 @@
{
"queue": "Queue",
"description": "There are no users in the registration queue. <br> To enable this feature, go to <a href=\"%1\">Settings &rarr; User &rarr; User Registration</a> and set <strong>Registration Type</strong> to \"Admin Approval\".",
"queue": "File d'attente",
"description": "Il n'y a aucun utilisateur dans la file d'inscription.<br> Pour activer cette fonctionnalité, allez dans <a href=\"%1\">Paramètres &rarr; Utilisateurs &rarr; inscription des utilisateurs</a> et définissez <strong>Type d'inscription</strong> en \"Approbation par l'administrateur\".",
"list.name": "Name",
"list.email": "Email",
"list.name": "Nom",
"list.email": "E-mail",
"list.ip": "IP",
"list.time": "Time",
"list.time": "Date",
"list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3",
"list.email-spam": "Frequency: %1 Appears: %2",
"list.ip-spam": "Frequency: %1 Appears: %2",
@ -16,5 +16,5 @@
"invitations.invitee-email": "Invitee Email",
"invitations.invitee-username": "Invitee Username (if registered)",
"invitations.confirm-delete": "Are you sure you wish to delete this invitation?"
"invitations.confirm-delete": "Êtes-vous sûr de vouloir supprimer l'invitation ?"
}

@ -1,18 +1,18 @@
{
"none": "Your forum does not have any topics with tags yet.",
"bg-color": "Background Colour",
"text-color": "Text Colour",
"create-modify": "Create & Modify Tags",
"description": "Select tags via clicking and/or dragging, use shift to select multiple.",
"create": "Create Tag",
"modify": "Modify Tags",
"delete": "Delete Selected Tags",
"search": "Search for tags...",
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.",
"name": "Tag Name",
"none": "Votre forum n'a pour l'instant aucun sujet avec mot-clés.",
"bg-color": "Couleur d'arrière plan",
"text-color": "Couleur du texte",
"create-modify": "Créer et modifier les mots-clés",
"description": "Sélectionnez les mot-clés par clic ou glisser-déposer, maintenez shift pour en sélectionner plusieurs.",
"create": "Créer le mot-clés",
"modify": "Modifier le mot-clés",
"delete": "Supprimer les mots-clés sélectionnés",
"search": "Chercher des mots-clés...",
"settings": "Cliquez <a href=\"%1\">ici</a> pour visiter la page de paramètres des mots clés.",
"name": "Nom du mot-clés",
"alerts.editing-multiple": "Editing multiple tags",
"alerts.editing-x": "Editing \"%1\" tag",
"alerts.confirm-delete": "Do you want to delete the selected tags?",
"alerts.update-success": "Tag Updated!"
"alerts.editing-multiple": "Éditer plusieurs mots-clés",
"alerts.editing-x": "Éditer le mot-clés %1",
"alerts.confirm-delete": "Vous-voulez réellement supprimer les mots-clés sélectionnés ?",
"alerts.update-success": "Mot-clés mis à jour !"
}

@ -1,91 +1,91 @@
{
"users": "Users",
"edit": "Edit",
"make-admin": "Make Admin",
"remove-admin": "Remove Admin",
"validate-email": "Validate Email",
"send-validation-email": "Send Validation Email",
"password-reset-email": "Send Password Reset Email",
"ban": "Ban User(s)",
"temp-ban": "Ban User(s) Temporarily",
"unban": "Unban User(s)",
"reset-lockout": "Reset Lockout",
"reset-flags": "Reset Flags",
"delete": "Delete User(s)",
"purge": "Delete User(s) and Content",
"download-csv": "Download CSV",
"invite": "Invite",
"new": "New User",
"users": "Utilisateurs",
"edit": "Éditer ",
"make-admin": "Promouvoir Admin",
"remove-admin": "Retirer des Admins",
"validate-email": "Vérifier l'adresse e-mail",
"send-validation-email": "Envoyer un e-mail de vérification",
"password-reset-email": "Envoyer un e-mail de réinitialisation du mot de passe",
"ban": "Bannir les utilisateurs",
"temp-ban": "Bannir temporairement les utilisateurs",
"unban": "Dé-bannir les utilisateurs",
"reset-lockout": "Supprimer le blocage",
"reset-flags": "Supprimer les signalements",
"delete": "Supprimer les utilisateurs",
"purge": "Supprimer les utilisateurs ainsi que leurs contenus",
"download-csv": "Télécharger au format CSV",
"invite": "Inviter",
"new": "Nouvel utilisateur",
"pills.latest": "Latest Users",
"pills.unvalidated": "Not Validated",
"pills.no-posts": "No Posts",
"pills.top-posters": "Top Posters",
"pills.top-rep": "Most Reputation",
"pills.inactive": "Inactive",
"pills.flagged": "Most Flagged",
"pills.banned": "Banned",
"pills.search": "User Search",
"pills.latest": "Derniers utilisateurs",
"pills.unvalidated": "Non vérifiée",
"pills.no-posts": "Aucun sujet",
"pills.top-posters": "Nombre de sujets",
"pills.top-rep": "putation",
"pills.inactive": "Inactif ",
"pills.flagged": "Le plus signalé",
"pills.banned": "Banni",
"pills.search": "Recherche d'utilisateur",
"search.username": "By User Name",
"search.username-placeholder": "Enter a username to search",
"search.email": "By Email",
"search.email-placeholder": "Enter a email to search",
"search.ip": "By IP Address",
"search.ip-placeholder": "Enter an IP Address to search",
"search.not-found": "User not found!",
"search.username": "Par nom d'utilisateur",
"search.username-placeholder": "Entrer un nom d'utilisateur à rechercher",
"search.email": "Par adresse e-mail",
"search.email-placeholder": "Entrez une adresse e-mail à rechercher",
"search.ip": "Par adresse IP",
"search.ip-placeholder": "Entrez une adresse IP à rechercher",
"search.not-found": "Utilisateur introuvable !",
"inactive.3-months": "3 months",
"inactive.6-months": "6 months",
"inactive.12-months": "12 months",
"inactive.3-months": "3 mois",
"inactive.6-months": "6 mois",
"inactive.12-months": "12 mois",
"users.uid": "uid",
"users.username": "username",
"users.email": "email",
"users.postcount": "postcount",
"users.reputation": "reputation",
"users.flags": "flags",
"users.joined": "joined",
"users.last-online": "last online",
"users.banned": "banned",
"users.username": "nom d'utilisateur",
"users.email": "e-mail",
"users.postcount": "nombre de sujets",
"users.reputation": "réputation",
"users.flags": "signalements",
"users.joined": "inscription",
"users.last-online": "dernière connexion",
"users.banned": "banni",
"create.username": "User Name",
"create.email": "Email",
"create.email-placeholder": "Email of this user",
"create.password": "Password",
"create.password-confirm": "Confirm Password",
"create.username": "Nom d'utilisateur",
"create.email": "E-mail",
"create.email-placeholder": "Adresse e-mail de l'utilisateur",
"create.password": "Mot de passe",
"create.password-confirm": "Confirmer le mot de passe",
"temp-ban.length": "Ban Length",
"temp-ban.reason": "Reason <span class=\"text-muted\">(Optional)</span>",
"temp-ban.hours": "Hours",
"temp-ban.days": "Days",
"temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.",
"temp-ban.length": "Durée du bannissement",
"temp-ban.reason": "Raison <span class=\"text-muted\">(Optionel)</span>",
"temp-ban.hours": "Heures",
"temp-ban.days": "Jours",
"temp-ban.explanation": "Entrez la durée du bannissement. Notez qu'une durée de 0 sera considérée comme un bannissement définitif.",
"alerts.confirm-ban": "Do you really want to ban this user <strong>permanently</strong>?",
"alerts.confirm-ban-multi": "Do you really want to ban these users <strong>permanently</strong>?",
"alerts.ban-success": "User(s) banned!",
"alerts.button-ban-x": "Ban %1 user(s)",
"alerts.unban-success": "User(s) unbanned!",
"alerts.lockout-reset-success": "Lockout(s) reset!",
"alerts.flag-reset-success": "Flags(s) reset!",
"alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!",
"alerts.make-admin-success": "User(s) are now administrators.",
"alerts.confirm-remove-admin": "Do you really want to remove admins?",
"alerts.remove-admin-success": "User(s) are no longer administrators.",
"alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?",
"alerts.validate-email-success": "Emails validated",
"alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?",
"alerts.confirm-delete": "<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable! Only the user account will be deleted, their posts and topics will remain.",
"alerts.delete-success": "User(s) Deleted!",
"alerts.confirm-purge": "<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable! All user data and content will be erased!",
"alerts.create": "Create User",
"alerts.button-create": "Create",
"alerts.button-cancel": "Cancel",
"alerts.error-passwords-different": "Passwords must match!",
"alerts.error-x": "<strong>Error</strong><p>%1</p>",
"alerts.create-success": "User created!",
"alerts.confirm-ban": "Voulez-vous réellement bannir <strong>définitivement</strong> cet utilisateur ?",
"alerts.confirm-ban-multi": "Voulez-vous réellement bannir <strong>définitivement</strong> ces utilisateurs ?",
"alerts.ban-success": "Utilisateur(s) banni(s)",
"alerts.button-ban-x": "Bannir %1 utilisateur(s)",
"alerts.unban-success": "Utilisateur(s) dé-banni(s) !",
"alerts.lockout-reset-success": "Blocage supprimé",
"alerts.flag-reset-success": "Signalement(s) réinitialisé(s) !",
"alerts.no-remove-yourself-admin": "Vous ne pouvez pas vous retirer vous-même des administrateurs !",
"alerts.make-admin-success": "Les utilisateurs sont désormais administrateurs.",
"alerts.confirm-remove-admin": "Voulez-vous réelement retirer ces admins ?",
"alerts.remove-admin-success": "Les utilisateurs ne sont plus administrateurs.",
"alerts.confirm-validate-email": "Voulez-vous réellement vérifier les adresses e-mail de ces utilisateurs ?",
"alerts.validate-email-success": "Adresse e-mail vérifiée",
"alerts.password-reset-confirm": "Voulez-vous réellement envoyer un e-mail de réinitialisation de mot de passe à ces utilisateurs ?",
"alerts.confirm-delete": "<b>Attention !</b><br/>Voulez-vous réellement supprimer ces utilisateurs ?<br/> Cette action est irréversible ! Seuls les comptes des= ce utilisateurs seront supprimés, leurs sujets et messages resteront. ",
"alerts.delete-success": "Utilisateur(s) supprimé(s) !",
"alerts.confirm-purge": "<b>Attention !</b><br/>Voulez-vous réellement supprimer ces utilisateurs ainsi que leurs contenus ?<br/> Cette action est irréversible ! Toutes les données de ces utilisateurs seront effacées !",
"alerts.create": "Créer un utilisateur",
"alerts.button-create": "Créer",
"alerts.button-cancel": "Annuler",
"alerts.error-passwords-different": "Les mots de passe doivent correspondre !",
"alerts.error-x": "<strong>Erreur</strong><p>%1</p>",
"alerts.create-success": "Utilisateur créé !",
"alerts.prompt-email": "Email: ",
"alerts.email-sent-to": "An invitation email has been sent to %1",
"alerts.x-users-found": "%1 user(s) found! Search took %2 ms."
"alerts.prompt-email": "E-mail :",
"alerts.email-sent-to": "Un e-mail d'invitation a été envoyé à %1",
"alerts.x-users-found": "%1 utilisateur(s) trouvé(s) ! La recherche a pris %2 ms."
}

@ -30,7 +30,7 @@
"settings/tags": "Mots-clés",
"settings/notifications": "Notifications",
"settings/cookies": "Cookies",
"settings/web-crawler": "Navigateur web",
"settings/web-crawler": "Robot d'indexation Web",
"settings/sockets": "Sockets",
"settings/advanced": "Avancé",
@ -39,14 +39,14 @@
"section-appearance": "Apparence",
"appearance/themes": "Thèmes",
"appearance/skins": "Skins",
"appearance/customise": "Custom HTML & CSS",
"appearance/customise": "HTML et CSS personnalisés",
"section-extend": "Extensions",
"extend/plugins": "Plugins",
"extend/widgets": "Widgets",
"extend/rewards": "Récompenses",
"section-social-auth": "Authentification sociale",
"section-social-auth": "Authentification via les réseaux sociaux",
"section-plugins": "Plugins",
"extend/plugins.install": "Installer des plugins",
@ -71,5 +71,5 @@
"search.keep-typing": "Continuez de taper pour afficher les résultats…",
"search.start-typing": "Commencez à taper pour afficher les résultats…",
"connection-lost": "La connexion à %1 a été perdue, tentative de déconnexion en cours…"
"connection-lost": "La connexion à %1 a été perdue, tentative de reconnexion…"
}

@ -1,19 +1,19 @@
{
"maintenance-mode": "Maintenance Mode",
"maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
"maintenance-mode.message": "Maintenance Message",
"headers": "Headers",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
"headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB",
"maintenance-mode": "Mode maintenance",
"maintenance-mode.help": "Quand le forum est en mode maintenance, toutes les requêtes sont redirigées vers une page de garde statique. Les administrateurs sont exemptés de cette redirection et peuvent accéder normalement au site. ",
"maintenance-mode.message": "Message de maintenance",
"headers": "En-têtes",
"headers.allow-from": "Définissez ALLOW-FROM pour afficher NodeBB dans un iFrame",
"headers.powered-by": "Personnaliser l'en-tête \"Propulsé par\" envoyé par NodeBB",
"headers.acao": "Access-Control-Allow-Origin",
"headers.acao-help": "To deny access to all sites, leave empty or set to <code>null</code>",
"headers.acao-help": "Pour interdire l'accès à tous les sites, laisser vide ou définissez comme <code>null</code>",
"headers.acam": "Access-Control-Allow-Methods",
"headers.acah": "Access-Control-Allow-Headers",
"traffic-management": "Traffic Management",
"traffic-management": "Gestion du trafic",
"traffic.help": "NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.enable": "Enable Traffic Management",
"traffic.enable": "Activé la gestion du trafic",
"traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)",
"traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)",
"traffic.lag-check-interval": "Check Interval (in milliseconds)",
"traffic.lag-check-interval": "Vérifier lintervalle (en millisecondes)",
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)"
}

@ -1,9 +1,9 @@
{
"chat-settings": "Réglages des discussion",
"disable": "Désactiver les discussion",
"disable-editing": "Désactiver l'édition/suppression des messages de discussion",
"disable-editing-help": "Les administrateurs et modérateurs globaux sont exempts de cette restriction",
"max-length": "Longueur maximales des messages dans les discussions",
"max-room-size": "Nombre maximum d'utilisateurs dans les salles de discussion",
"delay": "Temps entre chaque message en millisecondes"
"chat-settings": "Paramètres des discussions",
"disable": "Désactiver les discussions",
"disable-editing": "Désactiver l'édition/la suppression des messages des discussions",
"disable-editing-help": "Les administrateurs et modérateurs globaux sont dispensés de cette restriction",
"max-length": "Longueur maximales des messages de discussion",
"max-room-size": "Nombre maximum d'utilisateurs dans une même discussion",
"delay": "Temps entre chaque message de discussion (en millisecondes)"
}

@ -1,9 +1,9 @@
{
"eu-consent": "Accord EU",
"eu-consent": "Consentement de l'Union européenne",
"consent.enabled": "Activé",
"consent.message": "Message de notification",
"consent.acceptance": "Message d'acceptation",
"consent.link-text": "Texte du lien vers la politique",
"consent.link-text": "Texte du lien vers la politique de confidentialité",
"consent.blank-localised-default": "Laisser vide pour utiliser les textes localisés par défaut de NodeBB",
"settings": "Réglages",
"cookie-domain": "Domaine de session du cookie",

@ -1,25 +1,25 @@
{
"email-settings": "Email Settings",
"address": "Email Address",
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
"gmail-routing": "Gmail Routing",
"email-settings": "Paramètres E-mail",
"address": "Adresse e-mail",
"address-help": "L'adresse e-mail suivante fait référence à l'adresse que le destinataire verra dans les champs \"De :\" et \"Répondre à :\". ",
"from": "Nom de lexpéditeur",
"from-help": "Le nom de lexpéditeur à afficher dans l'e-mail",
"gmail-routing": "Routing Gmail",
"gmail-routing-help1": "There have been reports of Gmail Routing not working on accounts with heightened security. In those scenarios, you will have to <a href=\"https://www.google.com/settings/security/lesssecureapps\">configure your GMail account to allow less secure apps</a>.",
"gmail-routing-help2": "For more information about this workaround, <a href=\"https://nodemailer.com/using-gmail/\">please consult this NodeMailer article on the issue.</a> An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"{config.relative_path}/admin/extend/plugins\">Browse available plugins here</a>.",
"gmail-transport": "Route emails through a Gmail/Google Apps account",
"gmail-transport.username": "Username",
"gmail-transport.username-help": "Enter the full email address here, especially if you are using a Google Apps managed domain.",
"gmail-transport.password": "Password",
"template": "Edit Email Template",
"template.select": "Select Email Template",
"template.revert": "Revert to Original",
"testing": "Email Testing",
"testing.select": "Select Email Template",
"testing.send": "Send Test Email",
"testing.send-help": "The test email will be sent to the currently logged in user's email address.",
"subscriptions": "Email Subscriptions",
"subscriptions.disable": "Disable subscriber notification emails",
"gmail-transport": "Router les e-mails via un compte Gmail/Google Apps",
"gmail-transport.username": "Nom d'utilisateur",
"gmail-transport.username-help": "Entrer l'adresse e-mail complète ici, surtout si vous utilisez un domaine géré par Google Aps.",
"gmail-transport.password": "Mot de passe",
"template": "Modifier le modèle d'e-mail",
"template.select": "Sélectionner un modèle d'e-mail ",
"template.revert": "Retourner à l'original",
"testing": "Test d'e-mail",
"testing.select": "Sélectionner un modèle d'e-mail ",
"testing.send": "Envoyer un e-mail de test",
"testing.send-help": "Le test d'e-mail sera envoyé à l'adresse e-mail de l'utilisateur actuellement connecté.",
"subscriptions": "Abonnements d'e-mail",
"subscriptions.disable": "Désactiver les e-mails de notification des abonnés",
"subscriptions.hour": "Digest Hour",
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>"
}

@ -3,10 +3,10 @@
"title": "Titre du site",
"title.name": "Nom de votre communauté",
"title.show-in-header": "Afficher le titre du site dans l'en-tête",
"browser-title": "Titre du navigateur",
"browser-title-help": "Si aucun titre n'est spécifié, le titre du site sera utilisé",
"browser-title": "Titre dans le navigateur",
"browser-title-help": "Si aucun titre dans le navigateur n'est spécifié, le titre du site sera utilisé",
"title-layout": "Disposition du titre",
"title-layout-help": "Définissez la façon dont le titre du navigateur est structuré ex: &#123; pageTitle&#125; | &#123;browserTitle&#125;",
"title-layout-help": "Définissez la manière dont le titre est structuré dans le navigateur ex: &#123; pageTitle&#125; | &#123;browserTitle&#125;",
"description.placeholder": "Une courte description de votre communauté",
"description": "Description du site",
"keywords": "Mots-clés du site",
@ -14,17 +14,17 @@
"logo": "Logo du site",
"logo.image": "Image",
"logo.image-placeholder": "Chemin vers un logo à afficher dans l'en-tête du site",
"logo.upload": "Envoyer",
"logo.upload": "Télécharger",
"logo.url": "URL",
"logo.url-placeholder": "L'URL du logo du site",
"logo.url-help": "Quand on clique sur le logo, envoyer les utilisateurs vers cette adresse. Si ce champ est vide, l'utilisateur sera envoyé à l'index du forum.",
"logo.alt-text": "Texte alternatif",
"logo.url-help": "Quand ils cliquent sur le logo, envoyer les utilisateurs vers cette adresse. Si ce champ est vide, l'utilisateur sera envoyé à l'index du forum.",
"logo.alt-text": "Texte alternatif (alt)",
"log.alt-text-placeholder": "Texte alternatif pour l'accessibilité",
"favicon": "Favicon",
"favicon.upload": "Envoyer",
"touch-icon": "Icône d'écran d'accueil",
"touch-icon.upload": "Envoyer",
"touch-icon.help": "La taille et le format recommandés sont : 192x192, format PNG uniquement. Si aucune icône n'est spécifiée, NodeBB utilisera la favicon.",
"favicon.upload": "Télécharger",
"touch-icon": "Icône touch et d'écran d'accueil",
"touch-icon.upload": "Télécharger",
"touch-icon.help": "Taille et format recommandés : 192x192, format PNG uniquement. Si aucune icône n'est spécifiée, NodeBB utilisera le favicon.",
"outgoing-links": "Liens sortants",
"outgoing-links.warning-page": "Utiliser la page d'avertissement pour liens sortants"
}

@ -1,12 +1,12 @@
{
"general": "General",
"private-groups": "Private Groups",
"private-groups.help": "If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>",
"private-groups.warning": "<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.",
"allow-creation": "Allow Group Creation",
"allow-creation-help": "If enabled, users can create groups <em>(Default: disabled)</em>",
"max-name-length": "Maximum Group Name Length",
"cover-image": "Group Cover Image",
"default-cover": "Default Cover Images",
"default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image"
"general": "Général",
"private-groups": "Groupes privés",
"private-groups.help": "Si cette case est cochée, rejoindre un groupe nécessitera l'accord d'un propriétaire du groupe <em>(Par défaut : activé)</em>",
"private-groups.warning": "<strong>Attention !</strong> Si cette option est désactivée et que vous avez des groupes privés, ils deviendront automatiquement publics.",
"allow-creation": "Autoriser la création de groupes",
"allow-creation-help": "Si activé, les utilisateurs peuvent créer des groupes (Par défaut : Désactivé)",
"max-name-length": "Longueur maximum des noms de groupes",
"cover-image": "Image de couverture du groupe",
"default-cover": "Images de couverture par défaut",
"default-cover-help": "Ajouter des images de couvertures par défaut séparées par des virgules pour les groupes n'ayant pas téléchargé d'image de couverture"
}

@ -2,7 +2,7 @@
"handles": "Guest Handles",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
"privileges": "Guest Privileges",
"privileges.can-search": "Allow guests to search without logging in",
"privileges.can-search-users": "Allow guests to search users without logging in"
"privileges": "Privilèges invités",
"privileges.can-search": "Autoriser les invités à faire des recherches sans se connecter.",
"privileges.can-search-users": "Autoriser les invités à rechercher un utilisateur sans se connecter."
}

@ -1,5 +1,5 @@
{
"notifications": "Notifications",
"welcome-notification": "Welcome Notification",
"welcome-notification-link": "Welcome Notification Link"
"welcome-notification": "Notification de bienvenue",
"welcome-notification-link": "Lien de notification de bienvenue"
}

@ -1,9 +1,9 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"initial-num-load": "Initial Number of Topics to Load on Unread, Recent, and Popular"
"pagination": "Paramètres de pagination",
"enable": "Utiliser la pagination des sujets et messages au lieu du défilement infini",
"topics": "Pagination des sujets",
"posts-per-page": "Messages par page",
"categories": "Pagination des categories",
"topics-per-page": "Sujets par page",
"initial-num-load": "Nombre initial de sujets à charger dans Non lus, Récents et Populaires"
}

@ -1,44 +1,44 @@
{
"sorting": "Post Sorting",
"sorting.post-default": "Default Post Sorting",
"sorting.oldest-to-newest": "Oldest to Newest",
"sorting.newest-to-oldest": "Newest to Oldest",
"sorting.most-votes": "Most Votes",
"sorting.topic-default": "Default Topic Sorting",
"restrictions": "Posting Restrictions",
"restrictions.seconds-between": "Seconds between Posts",
"restrictions.seconds-between-new": "Seconds between Posts for New Users",
"restrictions.rep-threshold": "Reputation threshold before this restriction is lifted",
"restrictions.seconds-defore-new": "Seconds before new user can post",
"restrictions.seconds-edit-after": "Number of seconds users are allowed to edit posts after posting. (0 disabled)",
"restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)",
"restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)",
"restrictions.min-title-length": "Minimum Title Length",
"restrictions.max-title-length": "Maximum Title Length",
"restrictions.min-post-length": "Minimum Post Length",
"restrictions.max-post-length": "Maximum Post Length",
"restrictions.days-until-stale": "Days until Topic is considered stale",
"restrictions.stale-help": "If a topic is considered \"stale\", then a warning will be shown to users who attempt to reply to that topic.",
"timestamp": "Timestamp",
"sorting": "Tri des messages",
"sorting.post-default": "Tri des messages par défaut",
"sorting.oldest-to-newest": "Du plus ancien au plus récent",
"sorting.newest-to-oldest": "Du plus récent au plus ancien",
"sorting.most-votes": "Avec le plus de votes",
"sorting.topic-default": "Tri des sujets par défaut",
"restrictions": "Restrictions d'envoi",
"restrictions.seconds-between": "Nombre de secondes entre chaque message",
"restrictions.seconds-between-new": "Nombre de secondes entre chaque message pour les nouveaux utilisateurs",
"restrictions.rep-threshold": "Seuil de réputation avant que cette restriction soit levée",
"restrictions.seconds-defore-new": "Nombre de secondes avant qu'un nouvel utilisateur puisse poster",
"restrictions.seconds-edit-after": "Nombre de secondes pendant lesquelles les utilisateurs sont autorisés à modifier leurs messages après envoi (0 si infini)",
"restrictions.seconds-delete-after": "Nombre de secondes pendant lesquelles les utilisateurs sont autorisés à supprimer leurs messages après envoi (0 si infini)",
"restrictions.replies-no-delete": "Nombre de réponses après lesquelles les utilisateurs ne peuvent plus supprimer leurs sujets (0 si infini)",
"restrictions.min-title-length": "Longueur minimum du titre",
"restrictions.max-title-length": "Longueur maximum du titre",
"restrictions.min-post-length": "Longueur minimum des messages",
"restrictions.max-post-length": "Longueur maximum des messages",
"restrictions.days-until-stale": "Nombre de jours avant qu'un sujet soit considéré comme périmé",
"restrictions.stale-help": "Si un sujet est considéré comme \"périmé\", un message sera affiché aux utilisateurs tentant de répondre au sujet",
"timestamp": "Horodatage",
"timestamp.cut-off": "Date cut-off (in days)",
"timestamp.cut-off-help": "Dates &amp; times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).<br /><em>(Default: <code>30</code>, or one month). Set to 0 to always display dates, leave blank to always display relative times.</em>",
"teaser": "Teaser Post",
"teaser.last-post": "Last &ndash; Show the latest post, including the original post, if no replies",
"teaser.last-reply": "Last &ndash; Show the latest reply, or a \"No replies\" placeholder if no replies",
"teaser.first": "First",
"unread": "Unread Settings",
"teaser.last-post": "Dernier &ndash; Affiche le dernier message, ou celui d'origine, si il n'y a pas de réponse",
"teaser.last-reply": "Dernier &ndash; Affiche le dernier message, ou \"Aucune réponse\" si il n'y a pas de réponse",
"teaser.first": "Premier",
"unread": "Paramètres des messages non lus",
"unread.cutoff": "Unread cutoff days",
"unread.min-track-last": "Minimum posts in topic before tracking last read",
"signature": "Signature Settings",
"signature.disable": "Disable signatures",
"signature.no-links": "Disable links in signatures",
"signature.no-images": "Disable images in signatures",
"signature.max-length": "Maximum Signature Length",
"signature": "Paramètres de signature",
"signature.disable": "Désactiver les signatures",
"signature.no-links": "Désactiver les liens en signature",
"signature.no-images": "Désactiver les images en signature ",
"signature.max-length": "Longueur maximum des signatures",
"composer": "Composer Settings",
"composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",
"composer.show-help": "Show \"Help\" tab",
"composer.enable-plugin-help": "Allow plugins to add content to the help tab",
"composer.custom-help": "Custom Help Text",
"ip-tracking": "IP Tracking",
"ip-tracking.each-post": "Track IP Address for each post"
"composer.show-help": "Afficher l'onglet \"Aide\"",
"composer.enable-plugin-help": "Autoriser les plugins à modifier l'onglet d'aide",
"composer.custom-help": "Message d'aide personnalisé",
"ip-tracking": "Suivi d'IP",
"ip-tracking.each-post": "Suivre l'adresse IP pour chaque message"
}

@ -1,8 +1,8 @@
{
"reputation": "Reputation Settings",
"disable": "Disable Reputation System",
"disable-down-voting": "Disable Down Voting",
"thresholds": "Activity Thresholds",
"min-rep-downvote": "Minimum reputation to downvote posts",
"min-rep-flag": "Minimum reputation to flag posts"
"reputation": "Paramètre de réputation",
"disable": "Désactiver le système de réputation",
"disable-down-voting": "Désactiver les votes négatifs",
"thresholds": "Seuils d'activité",
"min-rep-downvote": "Réputation minimum pour les votes négatifs",
"min-rep-flag": "Réputation minimum pour signaler un message"
}

@ -1,6 +1,6 @@
{
"reconnection": "Réglages de reconnexion",
"max-attempts": "Nombre maximal de tentatives de reconnexion",
"max-attempts": "Nombre maximum de tentatives de reconnexion",
"default-placeholder": "Défaut : %1",
"delay": "Délai de reconnexion"
}

@ -1,12 +1,12 @@
{
"tag": "Tag Settings",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",
"max-length": "Maximum Tag Length",
"goto-manage": "Click here to visit the tag management page.",
"privacy": "Privacy",
"list-private": "Make the tags list private",
"related-topics": "Related Topics",
"max-related-topics": "Maximum related topics to display (if supported by theme)"
"tag": "Paramètres des mots-clés",
"min-per-topic": "Nombre minimum de mots-clés par sujet",
"max-per-topic": "Nombre maximum de mots-clés par sujet",
"min-length": "Longueur minimum des mots-clés",
"max-length": "Longueur maximum des mots-clés",
"goto-manage": "Cliquez ici pour visiter la page de gestion des mots-clés",
"privacy": "Politique de confidentialité",
"list-private": "Rendre privée la liste des mots-clés",
"related-topics": "Sujets connexes",
"max-related-topics": "Nombre maximum de sujets connexes à afficher (si supporté par le thème)"
}

@ -1,28 +1,28 @@
{
"posts": "Posts",
"allow-files": "Allow users to upload regular files",
"private": "Make uploaded files private",
"max-image-width": "Resize images down to specified width (in pixels)",
"max-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)",
"max-file-size": "Maximum File Size (in KiB)",
"max-file-size-help": "(in kilobytes, default: 2048 KiB)",
"allow-topic-thumbnails": "Allow users to upload topic thumbnails",
"topic-thumb-size": "Topic Thumb Size",
"allowed-file-extensions": "Allowed File Extensions",
"allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. <code>pdf,xls,doc</code>).\n\t\t\t\t\tAn empty list means all extensions are allowed.",
"profile-avatars": "Profile Avatars",
"allow-profile-image-uploads": "Allow users to upload profile images",
"convert-profile-image-png": "Convert profile image uploads to PNG",
"default-avatar": "Custom Default Avatar",
"upload": "Upload",
"profile-image-dimension": "Profile Image Dimension",
"profile-image-dimension-help": "(in pixels, default: 128 pixels)",
"max-profile-image-size": "Maximum Profile Image File Size",
"max-profile-image-size-help": "(in kilobytes, default: 256 KiB)",
"max-cover-image-size": "Maximum Cover Image File Size",
"max-cover-image-size-help": "(in kilobytes, default: 2,048 KiB)",
"keep-all-user-images": "Keep old versions of avatars and profile covers on the server",
"profile-covers": "Profile Covers",
"default-covers": "Default Cover Images",
"default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image"
"posts": "Sujets",
"allow-files": "Autoriser les utilisateurs à télécharger des fichiers standarts",
"private": "Rendre privés les fichiers téléchargés",
"max-image-width": "Redimensionner les images à un largeur spécifique (en pixels)",
"max-image-width-help": "(En pixels, par défaut : 760 pixels, définir à 0 si désactivé)",
"max-file-size": "Taille maximum d'un fichier (en Ko)",
"max-file-size-help": "(En kilooctet, par défaut : 2048 Ko) ",
"allow-topic-thumbnails": "Autoriser les utilisateurs à télécharger des miniatures de sujet",
"topic-thumb-size": "Miniature du sujet",
"allowed-file-extensions": "Extensions de fichier autorisés",
"allowed-file-extensions-help": "Entrer une liste d'extensions autorisées, séparées par des virgules (par exemple : <code>pdf, xls, doc</code>).\n\\t\\t\\t\\t\\tUne liste vide signifie que toutes les extensions sont autorisés.",
"profile-avatars": "Avatar",
"allow-profile-image-uploads": "Autoriser les utilisateurs à télécharger des avatars",
"convert-profile-image-png": "Convertir les avatars téléchargés au format PNG",
"default-avatar": "Modifier l'avatar par défaut",
"upload": "Télécharger",
"profile-image-dimension": "Dimensions de l'avatar",
"profile-image-dimension-help": "(En pixel, par défaut : 128 pixels)",
"max-profile-image-size": "Taille maximum des avatars",
"max-profile-image-size-help": "(En kilooctets, par défaut : 256 Ko)",
"max-cover-image-size": "Taille maximum des images de couverture",
"max-cover-image-size-help": "(En kilooctets, par défaut : 2,048 Ko)",
"keep-all-user-images": "Garder les anciennes versions d'avatars et d'images de couverture sur le serveur",
"profile-covers": "Image de couverture",
"default-covers": "Image de couverture par défaut",
"default-covers-help": "Ajouter des images de couvertures par défaut séparées par des virgules pour les comptes n'ayant pas téléchargé d'image de couverture"
}

@ -1,59 +1,59 @@
{
"authentication": "Authentification",
"allow-local-login": "Autoriser l'identification locale",
"require-email-confirmation": "Demander une confirmation de l'adresse mail",
"email-confirm-interval": "Les utilisateurs ne peuvent pas demander de nouveau mail de confirmation avant",
"email-confirm-email2": "minutes",
"require-email-confirmation": "Demander une vérification de l'adresse e-mail",
"email-confirm-interval": "Les utilisateurs ne peuvent pas demander un e-mail de vérification avant",
"email-confirm-email2": "minutes se sont écoulées",
"allow-login-with": "Autoriser l'identification avec",
"allow-login-with.username-email": "Nom d'utilisateur ou email",
"allow-login-with.username-email": "Nom d'utilisateur ou e-mail",
"allow-login-with.username": "Nom d'utilisateur uniquement",
"allow-login-with.email": "Email uniquement",
"account-settings": "Réglages des comptes",
"disable-username-changes": "Interdire le changement de nom d'utilisateur",
"disable-email-changes": "Interdire le changement d'email",
"disable-password-changes": "Interdire le changement de mot de passe",
"allow-account-deletion": "Autoriser la suppression d'un compte",
"user-info-private": "Rendre les informations des utilisateurs privées",
"allow-login-with.email": "E-mail uniquement",
"account-settings": "Paramètres du compte",
"disable-username-changes": "Désactiver le changement de nom d'utilisateur",
"disable-email-changes": "Désactiver le changement d'adresse e-mail",
"disable-password-changes": "Désactiver le changement de mot de passe",
"allow-account-deletion": "Autoriser la suppression des comptes",
"user-info-private": "Rendre privées les informations des utilisateurs",
"themes": "Thèmes",
"disable-user-skins": "Empêcher les utilisateurs de choisir un skin personnalisé",
"account-protection": "Protection des comptes",
"login-attempts": "Tentatives d'identification par heure",
"login-attempts-help": "Si le nombre de tentatives d'identification d'un utilisateur dépasse ce seuil, le compte sera verrouillé pour une durée pré-configurée.",
"lockout-duration": "Durée de verrouillage du compte (minutes)",
"account-protection": "Protection du compte",
"login-attempts": "Tentatives de connexions par heure",
"login-attempts-help": "Si le nombre de tentatives de connexion à un compte dépasse ce seuil, le compte sera bloqué pour une durée pré-configurée",
"lockout-duration": "Durée du blocage (minutes)",
"login-days": "Nombre de jour pendant lesquels se souvenir des sessions d'identification utilisateurs",
"password-expiry-days": "Imposer un changement de mot de passe après un certain nombre de jours",
"registration": "Inscription des utilisateurs",
"registration-type": "Type d'inscription",
"registration-type.normal": "Normale",
"registration-type.admin-approval": "Avec accord d'un admin",
"registration-type.admin-approval-ip": "Accord d'un admin pour les IPs",
"registration-type.invite-only": "Sur invitation uniquement",
"registration-type.admin-invite-only": "Sur invitation d'un admin uniquement",
"registration-type.normal": "Normal",
"registration-type.admin-approval": "Approbation de administrateur",
"registration-type.admin-approval-ip": "Approbation de l'administrateur pour les adresses IP",
"registration-type.invite-only": "Uniquement sur invitation",
"registration-type.admin-invite-only": "Uniquement sur invitation d'un admin",
"registration-type.disabled": "Pas d'inscription",
"registration-type.help": "Normale - Les utilisateurs peuvent s'inscrire depuis la page /register.<br/>\nAvec accord 'un admin - Les inscriptions sont placées dans une <a href=\"%1/admin/manage/registration\">file d'approbation</a> pour les administrateurs.<br/>\nAccord d'un admin pour les IPs - Inscription normale pour les nouveaux utilisateurs, sur approbation d'un admin pour les adresses IP qui ont déjà un compte.<br/>\nSur invitation uniquement - Les utilisateurs peuvent inviter des personnes depuis la page <a href=\"%1/users\" target=\"_blank\">utilisateurs</a>.<br/>\nSur invitation d'un admin uniquement - Seuls les administrateurs peuvent inviter des personnes depuis les pages <a href=\"%1/users\" target=\"_blank\">utilisateurs</a> et <a href=\"%1/admin/manage/users\">admin/manage/users</a>.<br/>\nPas d'inscription - Les utilisateurs ne peuvent pas s'inscrire.<br/>",
"registration.max-invites": "Nombre d'invitation maximum par utilisateur",
"max-invites": "Nombre d'invitation maximum par utilisateur",
"max-invites-help": "0 pour aucune restriction. Les admin ont un nombre infini d'invitations<br>Uniquement valable pour \"Sur invitation uniquement\"",
"min-username-length": "Longueur de nom d'utilisateur minimum",
"max-username-length": "Longueur de nom d'utilisateur maximum",
"min-password-length": "Longueur de mot de passe minimum",
"max-about-me-length": "Longueur maximum du texte A propos de moi",
"terms-of-use": "Conditions d'utilisation du forum <small>(Laisser vide pour désactiver)</small>",
"user-search": "Recherche d'utilisateur",
"registration.max-invites": "Nombre maximum d'invitations par utilisateur",
"max-invites": "Nombre maximum d'invitations par utilisateur",
"max-invites-help": "0 pour supprimer cette restriction. Les admins n'ont aucune restriction<br>Valable uniquement pour \"Uniquement sur invitation\"",
"min-username-length": "Longueur minimum du nom d'utilisateur",
"max-username-length": "Longueur maxmum du nom d'utilisateur",
"min-password-length": "Longueur minimum du mot de passe",
"max-about-me-length": "Longueur maximum du À propos de moi",
"terms-of-use": "Conditions générales d'utilisation du forum <small>(Laisser vide pour désactiver)</small>",
"user-search": "Rechercher un utilisateur",
"user-search-results-per-page": "Nombre de résultats à afficher",
"default-user-settings": "Réglages par défaut des utilisateurs",
"show-email": "Afficher l'email",
"show-email": "Afficher l'adresse e-mail",
"show-fullname": "Afficher le nom complet",
"restrict-chat": "N'autoriser les discussions ne provenant que des utilisateurs que je suis",
"restrict-chat": "Autoriser uniquement les discussions aux utilisateurs que je suis",
"outgoing-new-tab": "Ouvrir les liens sortants dans un nouvel onglet",
"topic-search": "Activer la recherche au sein des sujets",
"digest-freq": "S'inscrire aux compte rendus",
"digest-freq.off": "Désactivé",
"digest-freq.daily": "Quotidiennement",
"digest-freq.weekly": "Chaque semaine",
"digest-freq.monthly": "Chaque mois",
"email-chat-notifs": "Envoyer un email quand un message de discussion arrive et que je ne suis pas en ligne",
"email-post-notif": "Envoyer un email quand quelqu'un réponde aux sujets auxquels je suis abonné",
"follow-created-topics": "S'abonner aux sujets que je crée",
"follow-replied-topics": "S'abonner aux sujets auxquels je réponds"
"digest-freq.daily": "Quotidien",
"digest-freq.weekly": "Hebdomadaire",
"digest-freq.monthly": "Mensuel",
"email-chat-notifs": "Envoyer un e-mail si un nouveau message de chat arrive lorsque je ne suis pas en ligne",
"email-post-notif": "Envoyer un email lors de réponses envoyées aux sujets auxquels je suis abonné",
"follow-created-topics": "S'abonner aux sujets que vous créez",
"follow-replied-topics": "S'abonner aux sujets auxquels vous répondez"
}

@ -7,13 +7,13 @@
"welcome.text1": "Merci de vous être inscrit sur %1!",
"welcome.text2": "Pour activer totalement votre compte, nous devons vérifier que vous êtes bien propriétaire de l'adresse email que vous avez utilisé pour vous inscrire.",
"welcome.text3": "Un administrateur a accepté votre demande d'inscription. Vous pouvez maintenant vous connecter avec vos identifiants/mots de passe.",
"welcome.cta": "Cliquez ici pour confirmer votre adresse email",
"invitation.text1": "%1 vous a invité à joindre %2",
"welcome.cta": "Cliquez ici pour confirmer votre adresse e-mail",
"invitation.text1": "%1 vous a invité à rejoindre %2",
"invitation.ctr": "Cliquer ici pour créer votre compte.",
"reset.text1": "Nous avons reçu une demande de réinitialisation de votre mot de passe, probablement parce que vous l'avez oublié. Si ce n'est pas le cas, veuillez ignorer cet email.",
"reset.text2": "Pour confirmer la réinitialisation de votre mot de passe, veuillez cliquer sur le lien suivant :",
"reset.cta": "Cliquez ici pour réinitialiser votre mot de passe",
"reset.notify.subject": "Mot de Passe modifié",
"reset.notify.subject": "Mot de passe modifié",
"reset.notify.text1": "Nous vous informons que le %1, votre mot de passe a été modifié.",
"reset.notify.text2": "Si vous n'avez pas autorisé ceci, veuillez contacter immédiatement un administrateur.",
"digest.notifications": "Vous avez des notifications non-lues de %1 :",
@ -30,7 +30,7 @@
"notif.chat.unsub.info": "Cette notification de chat a été envoyé en raison de vos paramètres d'abonnement.",
"notif.post.cta": "Cliquer ici pour lire le sujet complet",
"notif.post.unsub.info": "La notification de ce message vous a été envoyé en raison de vos paramètres d'abonnement.",
"test.text1": "Ceci est un email de test pour vérifier que l'emailer est correctement configuré pour NodeBB.",
"test.text1": "Ceci est un e-mail de test pour vérifier que l'e-mailer est correctement configuré pour NodeBB.",
"unsub.cta": "Cliquez ici pour modifier ces paramètres",
"closing": "Merci !"
}

@ -56,7 +56,7 @@
"upvoters": "Votes pour",
"upvoted": "Votes pour",
"downvoters": "Votes contre",
"downvoted": "Votes contre",
"downvoted": "Vote négatif",
"views": "Vues",
"reputation": "Réputation",
"read_more": "En lire plus",

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

Loading…
Cancel
Save