Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
Julian Lam
2017-02-07 15:45:21 -05:00
117 changed files with 1945 additions and 1700 deletions

8
app.js
View File

@@ -75,7 +75,7 @@ if (nconf.get('setup') || nconf.get('install')) {
} else if (nconf.get('reset')) { } else if (nconf.get('reset')) {
async.waterfall([ async.waterfall([
async.apply(require('./src/reset').reset), async.apply(require('./src/reset').reset),
async.apply(require('./build').buildAll) async.apply(require('./src/meta/build').buildAll)
], function (err) { ], function (err) {
process.exit(err ? 1 : 0); process.exit(err ? 1 : 0);
}); });
@@ -84,7 +84,7 @@ if (nconf.get('setup') || nconf.get('install')) {
} else if (nconf.get('plugins')) { } else if (nconf.get('plugins')) {
listPlugins(); listPlugins();
} else if (nconf.get('build')) { } else if (nconf.get('build')) {
require('./build').build(nconf.get('build')); require('./src/meta/build').build(nconf.get('build'));
} else { } else {
require('./src/start').start(); require('./src/start').start();
} }
@@ -126,7 +126,7 @@ function setup() {
winston.info('NodeBB Setup Triggered via Command Line'); winston.info('NodeBB Setup Triggered via Command Line');
var install = require('./src/install'); 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('\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'); 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 db = require('./src/database');
var meta = require('./src/meta'); var meta = require('./src/meta');
var upgrade = require('./src/upgrade'); var upgrade = require('./src/upgrade');
var build = require('./build'); var build = require('./src/meta/build');
async.series([ async.series([
async.apply(db.init), async.apply(db.init),

795
nodebb
View File

@@ -1,15 +1,17 @@
#!/usr/bin/env node #!/usr/bin/env node
'use strict';
try { try {
var colors = require('colors'), require('colors');
cproc = require('child_process'), var cproc = require('child_process');
argv = require('minimist')(process.argv.slice(2)), var args = require('minimist')(process.argv.slice(2));
fs = require('fs'), var fs = require('fs');
path = require('path'), var path = require('path');
request = require('request'), var request = require('request');
semver = require('semver'), var semver = require('semver');
prompt = require('prompt'), var prompt = require('prompt');
async = require('async'); var async = require('async');
} catch (e) { } catch (e) {
if (e.code === 'MODULE_NOT_FOUND') { if (e.code === 'MODULE_NOT_FOUND') {
process.stdout.write('NodeBB could not be started because it\'s dependencies have not been installed.\n'); 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) { if (args.dev) {
fs.readFile(__dirname + '/pidfile', { process.env.NODE_ENV = 'development';
encoding: 'utf-8' }
}, function (err, pid) {
if (err) { function getRunningPid(callback) {
return callback(err); 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 {
fs.accessSync(path.join(__dirname, 'node_modules/' + moduleName, '.git'));
isGitRepo = true;
} catch(e) {
isGitRepo = false;
} }
try { if (
process.kill(parseInt(pid, 10), 0); payload.files.indexOf(moduleName) !== -1 && // found in `node_modules/`
callback(null, parseInt(pid, 10)); payload.bundled.indexOf(moduleName) === -1 && // not found in `package.json`
} catch(e) { !fs.lstatSync(path.join(__dirname, 'node_modules/' + moduleName)).isSymbolicLink() && // is not a symlink
callback(e); !isGitRepo // .git/ does not exist, so it is not a git repository
) {
payload.installed.push(moduleName);
} }
}); });
},
getCurrentVersion = function (callback) { getModuleVersions(payload.installed, callback);
fs.readFile(path.join(__dirname, 'package.json'), { encoding: 'utf-8' }, function (err, pkg) { });
}
function getModuleVersions(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) {
if (err) { if (err) {
return callback(err); return next(err);
} }
try { try {
pkg = JSON.parse(pkg); pkg = JSON.parse(pkg);
return callback(null, pkg.version); versionHash[module] = pkg.version;
} catch(err) { next();
return callback(err);
}
});
},
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;
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) { } catch (err) {
return callback(err); next(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 {
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);
}); });
}, }, function (err) {
getModuleVersions = function (modules, callback) { callback(err, versionHash);
var versionHash = {}; });
}
function checkPlugins(standalone, callback) {
if (standalone) {
process.stdout.write('Checking installed plugins and themes for updates... ');
}
async.eachLimit(modules, 50, function (module, next) { async.waterfall([
fs.readFile(path.join(__dirname, 'node_modules/' + module + '/package.json'), { encoding: 'utf-8' }, function (err, pkg) { 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
}
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) { if (err) {
process.stdout.write('error'.red + '\n'.reset);
return next(err); return next(err);
} }
process.stdout.write('OK'.green + '\n'.reset);
try { if (!Array.isArray(body) && toCheck.length === 1) {
pkg = JSON.parse(pkg); body = [body];
versionHash[module] = pkg.version;
next();
} catch (err) {
next(err);
} }
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); ], callback);
}); }
}, function upgradePlugins(callback) {
checkPlugins = function (standalone, callback) { var standalone = false;
if (standalone) { if (typeof callback !== 'function') {
process.stdout.write('Checking installed plugins and themes for updates... '); callback = function () {};
standalone = true;
}
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);
} }
async.waterfall([ if (found && found.length) {
async.apply(async.parallel, { process.stdout.write('\nA total of ' + String(found.length).bold + ' package(s) can be upgraded:\n');
plugins: async.apply(getInstalledPlugins), found.forEach(function (suggestObj) {
version: async.apply(getCurrentVersion) process.stdout.write(' * '.yellow + suggestObj.name.reset + ' (' + suggestObj.current.yellow + ' -> '.reset + suggestObj.suggested.green + ')\n'.reset);
}), });
function (payload, next) { process.stdout.write('\n');
var toCheck = Object.keys(payload.plugins); } else {
if (standalone) {
if (!toCheck.length) { process.stdout.write('\nAll packages up-to-date!'.green + '\n'.reset);
process.stdout.write('OK'.green + '\n'.reset);
return next(null, []); // no extraneous plugins installed
}
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 (!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);
});
} }
], callback); return callback();
}, }
upgradePlugins = function (callback) {
var standalone = false;
if (typeof callback !== 'function') {
callback = function () {};
standalone = true;
};
checkPlugins(standalone, function (err, found) { prompt.message = '';
prompt.delimiter = '';
prompt.start();
prompt.get({
name: 'upgrade',
description: 'Proceed with upgrade (y|n)?'.reset,
type: 'string'
}, function (err, result) {
if (err) { if (err) {
process.stdout.write('\Warning'.yellow + ': An unexpected error occured when attempting to verify plugin upgradability\n'.reset);
return callback(err); return callback(err);
} }
if (found && found.length) { if (['y', 'Y', 'yes', 'YES'].indexOf(result.upgrade) !== -1) {
process.stdout.write('\nA total of ' + String(found.length).bold + ' package(s) can be upgraded:\n'); process.stdout.write('\nUpgrading packages...');
var args = ['npm', 'i'];
found.forEach(function (suggestObj) { 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);
});
require('child_process').execFile('/usr/bin/env', args, { stdio: 'ignore' }, function (err) {
if (!err) {
process.stdout.write(' OK\n'.green);
}
callback(err);
}); });
process.stdout.write('\n');
} else { } else {
if (standalone) { process.stdout.write('\nPackage upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade-plugins'.green + '".\n'.reset);
process.stdout.write('\nAll packages up-to-date!'.green + '\n'.reset); callback();
}
return callback();
} }
});
});
}
prompt.message = ''; var commands = {
prompt.delimiter = ''; status: {
description: 'View the status of the NodeBB server',
prompt.start(); usage: 'Usage: ' + './nodebb status'.yellow,
prompt.get({ handler: function () {
name: 'upgrade', getRunningPid(function (err, pid) {
description: 'Proceed with upgrade (y|n)?'.reset, if (!err) {
type: 'string' process.stdout.write('\nNodeBB Running '.bold + '(pid '.cyan + pid.toString().cyan + ')\n'.cyan);
}, function (err, result) { process.stdout.write('\t"' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
if (err) { process.stdout.write('\t"' + './nodebb log'.yellow + '" to view server output\n');
return callback(err); process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
}
if (['y', 'Y', 'yes', 'YES'].indexOf(result.upgrade) !== -1) {
process.stdout.write('\nUpgrading packages...');
var args = ['npm', 'i'];
found.forEach(function (suggestObj) {
args.push(suggestObj.name + '@' + suggestObj.suggested);
});
require('child_process').execFile('/usr/bin/env', args, { stdio: 'ignore' }, function (err) {
if (!err) {
process.stdout.write(' OK\n'.green);
}
callback(err);
});
} else { } else {
process.stdout.write('\nPackage upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade-plugins'.green + '".\n'.reset); process.stdout.write('\nNodeBB is not running\n'.bold);
callback(); process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n'.reset);
} }
}); });
}); },
}; },
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);
switch(process.argv[2]) { // Spawn a new NodeBB process
case 'status': cproc.fork(__dirname + '/loader.js', {
getRunningPid(function (err, pid) { env: process.env
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'); stop: {
process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n'); description: 'Stop the NodeBB server',
} else { usage: 'Usage: ' + './nodebb stop'.yellow,
process.stdout.write('\nNodeBB is not running\n'.bold); handler: function () {
process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n'.reset); 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');
}
});
},
},
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(' ') : " ";
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;
} }
}); var keys = Object.keys(commands).filter(function (key) {
break; return !commands[key].hidden;
});
case 'start': process.stdout.write('\nWelcome to NodeBB\n\n'.bold);
process.stdout.write('\nStarting NodeBB\n'.bold); process.stdout.write('Usage: ./nodebb {' + keys.join('|') + '}\n\n');
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 var usage = keys.map(function (key) {
cproc.fork(__dirname + '/loader.js', { var line = '\t' + key.yellow + (key.length < 8 ? '\t\t' : '\t');
env: process.env return line + commands[key].description;
}); }).join('\n');
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 process.stdout.write(usage + '\n'.reset);
cproc.fork(__dirname + '/loader.js', { },
env: process.env },
}); };
cproc.spawn('tail', ['-F', './logs/output.log'], {
cwd: __dirname,
stdio: 'inherit'
});
break;
case 'stop': commands['upgrade-plugins'] = commands.upgradePlugins;
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': if (!commands[args._[0]]) {
getRunningPid(function (err, pid) { commands.help.handler();
if (!err) { } else {
process.kill(pid, 'SIGHUP'); commands[args._[0]].handler();
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;
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');
}
});
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;
case 'build':
var args = process.argv.slice(0);
args[2] = '--' + args[2];
fork(args);
break;
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
});
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(' ') : " ";
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;
} }

View File

@@ -12,7 +12,7 @@
"scripts": { "scripts": {
"start": "node loader.js", "start": "node loader.js",
"lint": "eslint --cache .", "lint": "eslint --cache .",
"pretest": "npm run lint", "pretest": "npm run lint && node app --build",
"test": "istanbul cover node_modules/mocha/bin/_mocha -- -R dot", "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" "coveralls": "istanbul cover _mocha --report lcovonly -- -R dot && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"
}, },
@@ -31,6 +31,7 @@
"connect-redis": "~3.1.0", "connect-redis": "~3.1.0",
"cookie-parser": "^1.3.3", "cookie-parser": "^1.3.3",
"cron": "^1.0.5", "cron": "^1.0.5",
"cropperjs": "^0.8.1",
"csurf": "^1.6.1", "csurf": "^1.6.1",
"daemon": "~1.1.0", "daemon": "~1.1.0",
"express": "^4.14.0", "express": "^4.14.0",

View File

@@ -59,7 +59,7 @@
"alert.copy-success": "Настройките са копирани!", "alert.copy-success": "Настройките са копирани!",
"alert.set-parent-category": "Задаване на базова категория", "alert.set-parent-category": "Задаване на базова категория",
"alert.updated": "Обновени категории", "alert.updated": "Обновени категории",
"alert.updated-success": "Category IDs %1 successfully updated.", "alert.updated-success": "Категориите с идентификатори %1 са обновени успешно.",
"alert.upload-image": "Качване на изображение за категорията", "alert.upload-image": "Качване на изображение за категорията",
"alert.find-user": "Търсене на потребител", "alert.find-user": "Търсене на потребител",
"alert.user-search": "Потърсете потребител тук…", "alert.user-search": "Потърсете потребител тук…",

View File

@@ -6,7 +6,7 @@
"popular-month": "Популярните теми този месец", "popular-month": "Популярните теми този месец",
"popular-alltime": "Популярните теми за всички времена", "popular-alltime": "Популярните теми за всички времена",
"recent": "Скорошни теми", "recent": "Скорошни теми",
"flagged-content": "Flagged Content", "flagged-content": "Докладвано съдържание",
"ip-blacklist": "Черен списък за IP адреси", "ip-blacklist": "Черен списък за IP адреси",
"users/online": "Потребители на линия", "users/online": "Потребители на линия",
"users/latest": "Последни потребители", "users/latest": "Последни потребители",
@@ -27,8 +27,8 @@
"group": "Група %1", "group": "Група %1",
"chats": "Разговори", "chats": "Разговори",
"chat": "Разговаря с %1", "chat": "Разговаря с %1",
"flags": "Flags", "flags": "Доклади",
"flag-details": "Flag %1 Details", "flag-details": "Подробности за доклад %1",
"account/edit": "Редактиране на „%1“", "account/edit": "Редактиране на „%1“",
"account/edit/password": "Редактиране на паролата на „%1“", "account/edit/password": "Редактиране на паролата на „%1“",
"account/edit/username": "Редактиране на потребителското име на „%1“", "account/edit/username": "Редактиране на потребителското име на „%1“",

View File

@@ -8,7 +8,7 @@
"text-color": "Text Colour", "text-color": "Text Colour",
"bg-image-size": "Background Image Size", "bg-image-size": "Background Image Size",
"custom-class": "Custom Class", "custom-class": "Custom Class",
"num-recent-replies": "# of Recent Replies", "num-recent-replies": "# nedávných odpovědí",
"ext-link": "External Link", "ext-link": "External Link",
"upload-image": "Upload Image", "upload-image": "Upload Image",
"delete-image": "Remove", "delete-image": "Remove",

View File

@@ -10,11 +10,11 @@
"share_this_category": "Share this category", "share_this_category": "Share this category",
"watch": "Sledovat", "watch": "Sledovat",
"ignore": "Ignorovat", "ignore": "Ignorovat",
"watching": "Watching", "watching": "Sledováno",
"ignoring": "Ignoring", "ignoring": "Ignoring",
"watching.description": "Show topics in unread", "watching.description": "Show topics in unread",
"ignoring.description": "Do not show topics in unread", "ignoring.description": "Do not show topics in unread",
"watch.message": "You are now watching updates from this category and all subcategories", "watch.message": "Nyní sledujete všechny aktualizace z této kategorie a všech podkategorií",
"ignore.message": "You are now ignoring updates from this category and all subcategories", "ignore.message": "You are now ignoring updates from this category and all subcategories",
"watched-categories": "Sledované kategorie" "watched-categories": "Sledované kategorie"
} }

View File

@@ -57,7 +57,7 @@
"post-delete-duration-expired-days": "You are only allowed to delete posts for %1 day(s) after posting", "post-delete-duration-expired-days": "You are only allowed to delete posts for %1 day(s) after posting",
"post-delete-duration-expired-days-hours": "You are only allowed to delete posts for %1 day(s) %2 hour(s) after posting", "post-delete-duration-expired-days-hours": "You are only allowed to delete posts for %1 day(s) %2 hour(s) after posting",
"cant-delete-topic-has-reply": "You can't delete your topic after it has a reply", "cant-delete-topic-has-reply": "You can't delete your topic after it has a reply",
"cant-delete-topic-has-replies": "You can't delete your topic after it has %1 replies", "cant-delete-topic-has-replies": "Téma nelze odstranit poté, co obsahuje %1 odpovědí",
"content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).", "content-too-short": "Please enter a longer post. Posts should contain at least %1 character(s).",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).", "content-too-long": "Please enter a shorter post. Posts can't be longer than %1 character(s).",
"title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).", "title-too-short": "Please enter a longer title. Titles should contain at least %1 character(s).",

View File

@@ -20,8 +20,8 @@
"user_flagged_post_in_dual": "<strong>%1</strong> and <strong>%2</strong> flagged a post in <strong>%3</strong>", "user_flagged_post_in_dual": "<strong>%1</strong> and <strong>%2</strong> flagged a post in <strong>%3</strong>",
"user_flagged_post_in_multiple": "<strong>%1</strong> and %2 others flagged a post in <strong>%3</strong>", "user_flagged_post_in_multiple": "<strong>%1</strong> and %2 others flagged a post in <strong>%3</strong>",
"user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>", "user_posted_to": "<strong>%1</strong> has posted a reply to: <strong>%2</strong>",
"user_posted_to_dual": "<strong>%1</strong> and <strong>%2</strong> have posted replies to: <strong>%3</strong>", "user_posted_to_dual": "<strong>%1</strong> a <strong>%2</strong> odpověděli v tématu <strong>%3</strong>",
"user_posted_to_multiple": "<strong>%1</strong> and %2 others have posted replies to: <strong>%3</strong>", "user_posted_to_multiple": "<strong>%1</strong> a %2 další odpověděli v tématu <strong>%3</strong>",
"user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> has posted a new topic: <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong> started following you.", "user_started_following_you": "<strong>%1</strong> started following you.",
"user_started_following_you_dual": "<strong>%1</strong> and <strong>%2</strong> started following you.", "user_started_following_you_dual": "<strong>%1</strong> and <strong>%2</strong> started following you.",

View File

@@ -41,7 +41,7 @@
"account/groups": "%1's skupiny", "account/groups": "%1's skupiny",
"account/bookmarks": "%1's Bookmarked Posts", "account/bookmarks": "%1's Bookmarked Posts",
"account/settings": "Uživatelské nastavení", "account/settings": "Uživatelské nastavení",
"account/watched": "Topics watched by %1", "account/watched": "Témata sledovaná uživatelem %1",
"account/upvoted": "Posts upvoted by %1", "account/upvoted": "Posts upvoted by %1",
"account/downvoted": "Posts downvoted by %1", "account/downvoted": "Posts downvoted by %1",
"account/best": "Nejlepší příspěvky od %1", "account/best": "Nejlepší příspěvky od %1",

View File

@@ -24,9 +24,9 @@
"six-months": "Šest měsíců", "six-months": "Šest měsíců",
"one-year": "Jeden rok", "one-year": "Jeden rok",
"sort-by": "Řadit dle", "sort-by": "Řadit dle",
"last-reply-time": "Last reply time", "last-reply-time": "Čas poslední odpovědi",
"topic-title": "Topic title", "topic-title": "Topic title",
"number-of-replies": "Number of replies", "number-of-replies": "Počet odpovědí",
"number-of-views": "Number of views", "number-of-views": "Number of views",
"topic-start-date": "Topic start date", "topic-start-date": "Topic start date",
"username": "Uživatelské jméno", "username": "Uživatelské jméno",

View File

@@ -10,10 +10,10 @@
"posted_by": "Přidal %1", "posted_by": "Přidal %1",
"posted_by_guest": "Přidal Host", "posted_by_guest": "Přidal Host",
"chat": "Chat", "chat": "Chat",
"notify_me": "Sledovat toto téma", "notify_me": "Dostávat upozornění na nové odpovědi",
"quote": "Citovat", "quote": "Citovat",
"reply": "Odpovědět", "reply": "Odpovědět",
"replies_to_this_post": "Replies: %1", "replies_to_this_post": "Odpovědi: %1",
"reply-as-topic": "Odpovědět jako Téma", "reply-as-topic": "Odpovědět jako Téma",
"guest-login-reply": "Přihlásit se pro odpověď", "guest-login-reply": "Přihlásit se pro odpověď",
"edit": "Upravit", "edit": "Upravit",
@@ -56,12 +56,12 @@
"mark_unread": "Označ za nepřečtené", "mark_unread": "Označ za nepřečtené",
"mark_unread.success": "Téma označeno jako nepřečtené", "mark_unread.success": "Téma označeno jako nepřečtené",
"watch": "Sledovat", "watch": "Sledovat",
"unwatch": "Unwatch", "unwatch": "Přesta sledovat",
"watch.title": "Be notified of new replies in this topic", "watch.title": "Be notified of new replies in this topic",
"unwatch.title": "Stop watching this topic", "unwatch.title": "Přestat sledovat toto téma",
"share_this_post": "Sdílet toto téma", "share_this_post": "Sdílet toto téma",
"watching": "Watching", "watching": "Sledováno",
"not-watching": "Not Watching", "not-watching": "Nesledováno",
"ignoring": "Ignoring", "ignoring": "Ignoring",
"watching.description": "Notify me of new replies.<br/>Show topic in unread.", "watching.description": "Notify me of new replies.<br/>Show topic in unread.",
"not-watching.description": "Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.", "not-watching.description": "Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.",
@@ -109,7 +109,7 @@
"composer.handle_placeholder": "Jméno", "composer.handle_placeholder": "Jméno",
"composer.discard": "Zrušit", "composer.discard": "Zrušit",
"composer.submit": "Odeslat", "composer.submit": "Odeslat",
"composer.replying_to": "Replying to %1", "composer.replying_to": "Odpovídání na %1",
"composer.new_topic": "Nové téma", "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_url_label": "Vložit URL náhled tématu",

View File

@@ -81,7 +81,7 @@
"follows_no_one": "Tento uživatel nikoho nesleduje :(", "follows_no_one": "Tento uživatel nikoho nesleduje :(",
"has_no_posts": "This user hasn't posted anything yet.", "has_no_posts": "This user hasn't posted anything yet.",
"has_no_topics": "This user hasn't posted any topics yet.", "has_no_topics": "This user hasn't posted any topics yet.",
"has_no_watched_topics": "This user hasn't watched any topics yet.", "has_no_watched_topics": "Tento uživatel zatím nesleduje žádná témata.",
"has_no_upvoted_posts": "This user hasn't upvoted any posts yet.", "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_downvoted_posts": "This user hasn't downvoted any posts yet.",
"has_no_voted_posts": "This user has no voted posts", "has_no_voted_posts": "This user has no voted posts",
@@ -103,8 +103,8 @@
"delay_image_loading": "Delay Image Loading", "delay_image_loading": "Delay Image Loading",
"image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view", "image_load_delay_help": "If enabled, images in topics will not load until they are scrolled into view",
"scroll_to_my_post": "After posting a reply, show the new post", "scroll_to_my_post": "After posting a reply, show the new post",
"follow_topics_you_reply_to": "Watch topics that you reply to", "follow_topics_you_reply_to": "Sledovat témata, do kterých přispějete",
"follow_topics_you_create": "Watch topics you create", "follow_topics_you_create": "Sledovat témata, která vytvoříte",
"grouptitle": "Nadpis skupiny", "grouptitle": "Nadpis skupiny",
"no-group-title": "Žádný nadpis skupiny", "no-group-title": "Žádný nadpis skupiny",
"select-skin": "Vybrat skin", "select-skin": "Vybrat skin",

View File

@@ -69,6 +69,8 @@
"remove_uploaded_picture" : "Remove Uploaded Picture", "remove_uploaded_picture" : "Remove Uploaded Picture",
"upload_cover_picture": "Upload cover picture", "upload_cover_picture": "Upload cover picture",
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?", "remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?",
"crop_picture": "Crop picture",
"upload_cropped_picture": "Crop and upload",
"settings": "Settings", "settings": "Settings",
"show_email": "Show My Email", "show_email": "Show My Email",

View File

@@ -27,10 +27,10 @@
"select-category": "Sélectionner une catégorie", "select-category": "Sélectionner une catégorie",
"set-parent-category": "Définissez une catégorie parente", "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.description": "Vous pouvez configurer les contrôles d'accès et de privilège pour cette catégorie dans cette section. Les privilège peuvent être donnés par rapport à un utilisateur ou par rapport à un groupe. Vous pouvez ajouter un nouvel utilisateur à cette table en cherchant dans le formulaire ci-dessous.",
"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.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-viewing": "Afficher les Privilèges",
"privileges.section-posting": "Posting Privileges", "privileges.section-posting": "Privilège de posting",
"privileges.section-moderation": "Privilèges de modération", "privileges.section-moderation": "Privilèges de modération",
"privileges.section-user": "Utilisateur", "privileges.section-user": "Utilisateur",
"privileges.search-user": "Ajouter un utilisateur", "privileges.search-user": "Ajouter un utilisateur",
@@ -43,7 +43,7 @@
"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.", "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": "Revenir à la liste des catégories", "analytics.back": "Revenir à la liste des catégories",
"analytics.title": "Analytics for \"%1\" category", "analytics.title": "Analytique pour la catégorie \"%1\"",
"analytics.pageviews-hourly": "<strong>Figure 1</strong> &ndash; Pages vues par heure pour cette catégorie</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.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.topics-daily": "<strong>Figure 3</strong> &ndash; Sujets créés par jour dans catégorie</small>",
@@ -54,13 +54,13 @@
"alert.none-active": "Vous n'avez aucune catégorie active.", "alert.none-active": "Vous n'avez aucune catégorie active.",
"alert.create": "Créer une catégorie", "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-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.confirm-purge": "<p class=\"lead\">Voulez-vous vraiment purger cette catégorie\"%1\"?</p><h5><strong class=\"text-danger\">Attention!</strong>Tous les sujets et posts dans cette catégorie vont être supprimés</h5> <p class=\"help-block\">Purger une catégorie va enlever tous les sujets et les posts, et supprimer la catégorie de la base de données. Si vous voulez seulement enlevez une catégorie<em>temporairement</em>, il faut plutôt \"désactiver\" la catégorie.",
"alert.purge-success": "Catégorie purgée !", "alert.purge-success": "Catégorie purgée !",
"alert.copy-success": "Paramètres copiés !", "alert.copy-success": "Paramètres copiés !",
"alert.set-parent-category": "Définir une catégorie parent", "alert.set-parent-category": "Définir une catégorie parent",
"alert.updated": "Catégories mises à jour", "alert.updated": "Catégories mises à jour",
"alert.updated-success": "Category IDs %1 successfully updated.", "alert.updated-success": "L' ID de la catégorie %1 a été mis à jour avec succès",
"alert.upload-image": "Upload category image", "alert.upload-image": "Uploader une image de catégorie",
"alert.find-user": "Trouver un utilisateur", "alert.find-user": "Trouver un utilisateur",
"alert.user-search": "Chercher un utilisateur ici...", "alert.user-search": "Chercher un utilisateur ici...",
"alert.find-group": "Trouver un groupe", "alert.find-group": "Trouver un groupe",

View File

@@ -1,15 +1,15 @@
{ {
"lead": "Configurez votre liste noire d'adresses IP ici.", "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.", "description": "Quelques fois, bannir un utilisateur ne suffit pas. Restreindre l'accès au forum à une adresse IP ou un ensemble d'adresses IP peut être le meilleur moyen de protection. Dans ce cas, vous pouvez ajouter les adresses IP problématiques ou des blocks CIDR entiers à cette liste noire, et ceux ci ne pourront ni s'identifier ni créer un nouveau compte.",
"active-rules": "Règles actives", "active-rules": "Règles actives",
"validate": "Valider la liste noire", "validate": "Valider la liste noire",
"apply": "Appliquer la liste noire", "apply": "Appliquer la liste noire",
"hints": "Syntax Hints", "hints": "astuces de syntaxe",
"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-1": "Définissez une seule adresse IP par ligne. Vous pouvez ajouter des blocs IP, du moment qu'ils respectent le format CIDR (par ex. <code>192.168.100.0/22</code>).",
"hint-2": "Vous pouvez ajouter en commentaire en commençant la ligne pas le symbole <code>#</code>.", "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-valid": "<strong>%1</strong> sur <strong>%2</strong> règle(s) valide(s).",
"validate.x-invalid": "The following <strong>%1</strong> rules are invalid:", "validate.x-invalid": "Les règles suivantes <strong>%1</strong> sont invalides:",
"alerts.applied-success": "Liste noire appliquée" "alerts.applied-success": "Liste noire appliquée"
} }

View File

@@ -6,15 +6,15 @@
"list.email": "E-mail", "list.email": "E-mail",
"list.ip": "IP", "list.ip": "IP",
"list.time": "Date", "list.time": "Date",
"list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3", "list.username-spam": "Fréquence : %1 Apparait : %2 Confiance : %3",
"list.email-spam": "Frequency: %1 Appears: %2", "list.email-spam": "Fréquence : %1 Apparait : %2",
"list.ip-spam": "Frequency: %1 Appears: %2", "list.ip-spam": "Fréquence : %1 Apparait : %2",
"invitations": "Invitations", "invitations": "Invitations",
"invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username. <br><br>The username will be displayed to the right of the emails for users who have redeemed their invitations.", "invitations.description": "Ci-dessous se trouve une liste complète des invitations envoyées. Utilisez ctrl-f pour rechercher un email ou nom d'utilisateur dans la liste. <br>\n<br>Le nom d'utilisateur sera afficher à droite des emails pour les utilisateurs qui ont accepté leur invitation.",
"invitations.inviter-username": "Inviter Username", "invitations.inviter-username": "Nom d'utilisateur qui a invité",
"invitations.invitee-email": "Invitee Email", "invitations.invitee-email": "Email invité",
"invitations.invitee-username": "Invitee Username (if registered)", "invitations.invitee-username": "Nom d'utilisateur de l'invité (si inscrit)",
"invitations.confirm-delete": "Êtes-vous sûr de vouloir supprimer l'invitation ?" "invitations.confirm-delete": "Êtes-vous sûr de vouloir supprimer l'invitation ?"
} }

View File

@@ -7,13 +7,13 @@
"headers.powered-by": "Personnaliser l'en-tête \"Propulsé par\" envoyé par NodeBB", "headers.powered-by": "Personnaliser l'en-tête \"Propulsé par\" envoyé par NodeBB",
"headers.acao": "Access-Control-Allow-Origin", "headers.acao": "Access-Control-Allow-Origin",
"headers.acao-help": "Pour interdire l'accès à tous les sites, laisser vide ou définissez comme <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.acam": "\nAccess-Control-Allow-Methods",
"headers.acah": "Access-Control-Allow-Headers", "headers.acah": "\nAccess-Control-Allow-Headers",
"traffic-management": "Gestion du trafic", "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.help": "NodeBB est déployé équipé d'un module qui refuse les requêtes en cas de situation de haut traffic. Vous pouvez changer les paramètres ici, bien que les paramètres par défaut sont un bon commencement.",
"traffic.enable": "Activé la gestion du trafic", "traffic.enable": "Activé la gestion du trafic",
"traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)", "traffic.event-lag": "Seuil de lag des boucles d'événements (en millisecondes) ",
"traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)", "traffic.event-lag-help": "Descendre cette valeur réduit le temps d'attente pour le chargement de s pages, mais montrera le message \"charge excessive\" à plus d'utilisateurs. (redémarrage requis)",
"traffic.lag-check-interval": "Vérifier lintervalle (en millisecondes)", "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)" "traffic.lag-check-interval-help": "Descendre cette valeur rend NodeBB plus sensible aux pics dans le chargement, mais rend aussi le contrôle trop sensible. (redémarrage requis)"
} }

View File

@@ -5,11 +5,11 @@
"from": "Nom de lexpéditeur", "from": "Nom de lexpéditeur",
"from-help": "Le nom de lexpéditeur à afficher dans l'e-mail", "from-help": "Le nom de lexpéditeur à afficher dans l'e-mail",
"gmail-routing": "Routing Gmail", "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-help1": "Il y a eu des rapports selon lesquels le routage Gmail ne fonctionne pas avec les comptes ayant une sécurité plus élevée. Dans ce cas vous devez<a href=\"https://www.google.com/settings/security/lesssecureapps\">configuer votre compte Gmail pour qu'il autorise les applications moins sécurisées.",
"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-routing-help2": "Pour plus d'information sur cette astuce, <a href=\"https://nodemailer.com/using-gmail/\">merci de consulter l'article de NodeMailer sur ce sujet.</a> Une alternative serait d'utiliser un service tiers d'envoi d'email tel que SendGrid, Mailgun, etc. <a href=\"{config.relative_path}/admin/extend/plugins\">Afficher les plugins disponibles ici</a>.",
"gmail-transport": "Router les e-mails via un compte Gmail/Google Apps", "gmail-transport": "Router les e-mails via un compte Gmail/Google Apps",
"gmail-transport.username": "Nom d'utilisateur", "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.username-help": "Entrer l'adresse e-mail complète ici, surtout si vous utilisez un domaine géré par Google Apps.",
"gmail-transport.password": "Mot de passe", "gmail-transport.password": "Mot de passe",
"template": "Modifier le modèle d'e-mail", "template": "Modifier le modèle d'e-mail",
"template.select": "Sélectionner un modèle d'e-mail ", "template.select": "Sélectionner un modèle d'e-mail ",
@@ -20,6 +20,6 @@
"testing.send-help": "Le test d'e-mail sera envoyé à l'adresse e-mail de l'utilisateur actuellement connecté.", "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": "Abonnements d'e-mail",
"subscriptions.disable": "Désactiver les e-mails de notification des abonnés", "subscriptions.disable": "Désactiver les e-mails de notification des abonnés",
"subscriptions.hour": "Digest Hour", "subscriptions.hour": "Heure d'envoi",
"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>" "subscriptions.hour-help": "Veuillez entrer un nombre représentant l'heure à laquelle envoyer les emails de résumé (c'est à dire <code>0</code> pour minuit, <code>17</code> pour 5:00 pm). Gardez à l'esprit qu'il s'agit de l'heure du serveur, et peut ne pas correspondre à votre heure locale.<br /> L'heure du serveur est : <span id=\"serverTime\"></span><br /> Le prochain mail de resumé sera envoyé à <span id=\"nextDigestTime\"></span>"
} }

View File

@@ -1,8 +1,8 @@
{ {
"handles": "Guest Handles", "handles": "Gestion des invités",
"handles.enabled": "Allow guest handles", "handles.enabled": "Autoriser les invités à poster",
"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\"", "handles.enabled-help": "Cette option affiche un nouveau champ qui permet aux invités de choisir un nom qui sera associé à chaque message qu'ils rédigent. Si désactivé, il seront simplement nommés \"Invité\".",
"privileges": "Privilèges invités", "privileges": "Privilèges des invités",
"privileges.can-search": "Autoriser les invités à faire des recherches sans se connecter.", "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." "privileges.can-search-users": "Autoriser les invités à rechercher un utilisateur sans se connecter."
} }

View File

@@ -20,22 +20,22 @@
"restrictions.days-until-stale": "Nombre de jours avant qu'un sujet soit considéré comme périmé", "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", "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": "Horodatage",
"timestamp.cut-off": "Date cut-off (in days)", "timestamp.cut-off": "Date de coupure (en jours)",
"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>", "timestamp.cut-off-help": "Les dates et heures seront affichées de façon relative (par exemple \"il y a 3 heures\", \"il y a 5 jours\"), et localisées. Après un certain point, le texte peut afficher la date emlle-même (par exemple 5 Novembre 2016, 15:30).<br /><em>(Défaut : <code>30</code>, ou un mois). Régler à 0 pour toujours afficher des dates, laisser vide pour toujours afficher des dates relatives.</em>",
"teaser": "Teaser Post", "teaser": "Message d'aperçu",
"teaser.last-post": "Dernier &ndash; Affiche le dernier message, ou celui d'origine, si il n'y a pas de réponse", "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.last-reply": "Dernier &ndash; Affiche le dernier message, ou \"Aucune réponse\" si il n'y a pas de réponse",
"teaser.first": "Premier", "teaser.first": "Premier",
"unread": "Paramètres des messages non lus", "unread": "Paramètres des messages non lus",
"unread.cutoff": "Unread cutoff days", "unread.cutoff": "Nombre de jours pour les messages non-lus",
"unread.min-track-last": "Minimum posts in topic before tracking last read", "unread.min-track-last": "Nombre minimum de messages dans le sujet avant de garder en mémoire le dernier message lu",
"signature": "Paramètres de signature", "signature": "Paramètres de signature",
"signature.disable": "Désactiver les signatures", "signature.disable": "Désactiver les signatures",
"signature.no-links": "Désactiver les liens en signature", "signature.no-links": "Désactiver les liens en signature",
"signature.no-images": "Désactiver les images en signature ", "signature.no-images": "Désactiver les images en signature ",
"signature.max-length": "Longueur maximum des signatures", "signature.max-length": "Longueur maximum des signatures",
"composer": "Composer Settings", "composer": "Paramètres Composer",
"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-help": "Les réglages suivants permettent de choisir les fonctionnalités et/ou l'apparence du composeur de message affiché\n\\t\\t\\t\\taux utilisateurs quand ils créent de nouveaux sujets ou répondent à des sujets existants.",
"composer.show-help": "Afficher l'onglet \"Aide\"", "composer.show-help": "Afficher l'onglet \"Aide\"",
"composer.enable-plugin-help": "Autoriser les plugins à modifier l'onglet d'aide", "composer.enable-plugin-help": "Autoriser les plugins à modifier l'onglet d'aide",
"composer.custom-help": "Message d'aide personnalisé", "composer.custom-help": "Message d'aide personnalisé",

View File

@@ -6,7 +6,7 @@
"popular-month": "Sujets populaires ce mois-ci", "popular-month": "Sujets populaires ce mois-ci",
"popular-alltime": "Sujets populaires depuis toujours", "popular-alltime": "Sujets populaires depuis toujours",
"recent": "Sujets récents", "recent": "Sujets récents",
"flagged-content": "Flagged Content", "flagged-content": "Contenu signalé",
"ip-blacklist": "Liste noire d'adresses IP", "ip-blacklist": "Liste noire d'adresses IP",
"users/online": "Utilisateurs en ligne", "users/online": "Utilisateurs en ligne",
"users/latest": "Derniers inscrits", "users/latest": "Derniers inscrits",
@@ -27,8 +27,8 @@
"group": "%1 groupe", "group": "%1 groupe",
"chats": "Discussions", "chats": "Discussions",
"chat": "Conversation avec %1", "chat": "Conversation avec %1",
"flags": "Flags", "flags": "Signalements",
"flag-details": "Flag %1 Details", "flag-details": "Détails signalement %1",
"account/edit": "Édition de \"%1\"", "account/edit": "Édition de \"%1\"",
"account/edit/password": "Édition du mot de passe de \"%1\"", "account/edit/password": "Édition du mot de passe de \"%1\"",
"account/edit/username": "Édition du nom d'utilisateur de \"%1\"", "account/edit/username": "Édition du nom d'utilisateur de \"%1\"",

View File

@@ -1,17 +1,17 @@
{ {
"rewards": "報酬", "rewards": "報酬",
"condition-if-users": "If User's", "condition-if-users": "ユーザーの",
"condition-is": "Is:", "condition-is": ":",
"condition-then": "Then:", "condition-then": "それから:",
"max-claims": "Amount of times reward is claimable", "max-claims": "報酬が請求可能な金額",
"zero-infinite": "Enter 0 for infinite", "zero-infinite": "無限に0を入力します。",
"delete": "Delete", "delete": "削除",
"enable": "Enable", "enable": "有効",
"disable": "Disable", "disable": "無効",
"control-panel": "Rewards Control", "control-panel": "報酬コントロール",
"new-reward": "New Reward", "new-reward": "新しい報酬",
"alert.delete-success": "Successfully deleted reward", "alert.delete-success": "報酬を削除しました",
"alert.no-inputs-found": "Illegal reward - no inputs found!", "alert.no-inputs-found": "違法報酬 - 入力が見つかりません!",
"alert.save-success": "Successfully saved rewards" "alert.save-success": "報酬を保存しました"
} }

View File

@@ -1,19 +1,19 @@
{ {
"available": "利用可能なウィジェット", "available": "利用可能なウィジェット",
"explanation": "Select a widget from the dropdown menu and then drag and drop it into a template's widget area on the left.", "explanation": "ドロップダウンメニューからウィジェットを選択し、左のテンプレートのウィジェットエリアにドラッグ&ドロップします。",
"none-installed": "No widgets found! Activate the essential widgets plugin in the <a href=\"%1\">plugins</a> control panel.", "none-installed": "ウィジェットがありません!必須のウィジェットプラグインを<a href=\"%1\">プラグイン</a>のコントロールパネルで有効にしてください。",
"containers.available": "Available Containers", "containers.available": "利用可能なコンテナ",
"containers.explanation": "Drag and drop on top of any active widget", "containers.explanation": "アクティブなウィジェットの上にドラッグアンドドロップしてください",
"containers.none": "None", "containers.none": "無い",
"container.well": "Well", "container.well": "十分",
"container.jumbotron": "Jumbotron", "container.jumbotron": "ジャンボトロン",
"container.panel": "Panel", "container.panel": "パネル",
"container.panel-header": "Panel Header", "container.panel-header": "パネルヘッダー",
"container.panel-body": "Panel Body", "container.panel-body": "パネル本体",
"container.alert": "Alert", "container.alert": "警告",
"alert.confirm-delete": "Are you sure you wish to delete this widget?", "alert.confirm-delete": "このウィジェットを削除してもよろしいですか?",
"alert.updated": "Widgets Updated", "alert.updated": "ウィジェットが更新されました。",
"alert.update-success": "Successfully updated widgets" "alert.update-success": "ウィジェットを保存しました"
} }

View File

@@ -1,55 +1,55 @@
{ {
"forum-traffic": "フォーラムのトラフィック", "forum-traffic": "フォーラムのトラフィック",
"page-views": "ページビュー", "page-views": "ページビュー",
"unique-visitors": "Unique Visitors", "unique-visitors": "ユニークな訪問者",
"page-views-last-month": "Page views Last Month", "page-views-last-month": "先月のページビュー数",
"page-views-this-month": "Page views This Month", "page-views-this-month": "今月のページビュー数",
"page-views-last-day": "Page views in last 24 hours", "page-views-last-day": "過去24時間のページビュー",
"stats.day": "Day", "stats.day": "",
"stats.week": "Week", "stats.week": "",
"stats.month": "Month", "stats.month": "",
"stats.all": "All Time", "stats.all": "全て",
"updates": "Updates", "updates": "更新",
"running-version": "You are running <strong>NodeBB v<span id=\"version\">%1</span></strong>.", "running-version": "<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.", "keep-updated": "常に最新のセキュリティパッチとバグ修正のためにNodeBBが最新であることを確認してください。",
"up-to-date": "<p>You are <strong>up-to-date</strong> <i class=\"fa fa-check\"></i></p>", "up-to-date": "<p>あなたは<strong>最新の状態</ 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>", "upgrade-available": "<p>新しいバージョン (v%1) がリリースされました。<a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\">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-upgrade-available": "<p>これはNodeBBの旧リリースのバージョンです。新しいバージョン(v1)がリリースされました。<a href=\"https://docs.nodebb.org/en/latest/upgrading/index.html\"> 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>", "prerelease-warning": "<p>これはNodeBBの<strong>プレリリース版</ strong>です。意図しないバグが発生することがあります。<i class=\"fa fa-exclamation-triangle\"></i></p>",
"notices": "Notices", "notices": "通知",
"control-panel": "System Control", "control-panel": "システムコントロール",
"reload": "Reload", "reload": "再読み込み",
"restart": "Restart", "restart": "再起動",
"restart-warning": "Reloading or Restarting your NodeBB will drop all existing connections for a few seconds.", "restart-warning": "NodeBBを再読み込み、または再起動すると、数秒間既存の接続がすべて破棄されます。",
"maintenance-mode": "Maintenance Mode", "maintenance-mode": "メンテナンスモード",
"maintenance-mode-title": "Click here to set up maintenance mode for NodeBB", "maintenance-mode-title": "NodeBBのメンテナンスモードを設定するには、ここをクリックしてください",
"realtime-chart-updates": "Realtime Chart Updates", "realtime-chart-updates": "リアルタイムチャートの更新",
"active-users": "Active Users", "active-users": "アクティブユーザー",
"active-users.users": "Users", "active-users.users": "ユーザー",
"active-users.guests": "Guests", "active-users.guests": "ゲスト",
"active-users.total": "Total", "active-users.total": "総合",
"active-users.connections": "Connections", "active-users.connections": "接続",
"anonymous-registered-users": "Anonymous vs Registered Users", "anonymous-registered-users": "匿名 vs 登録ユーザー",
"anonymous": "Anonymous", "anonymous": "匿名",
"registered": "Registered", "registered": "登録数",
"user-presence": "User Presence", "user-presence": "ユーザープレゼンス",
"on-categories": "On categories list", "on-categories": "カテゴリ一覧",
"reading-posts": "Reading posts", "reading-posts": "記事を読む",
"browsing-topics": "Browsing topics", "browsing-topics": "スレッドを閲覧",
"recent": "Recent", "recent": "最近",
"unread": "Unread", "unread": "未読",
"high-presence-topics": "High Presence Topics", "high-presence-topics": "ハイプレゼンススレッド",
"graphs.page-views": "Page Views", "graphs.page-views": "ページビュー",
"graphs.unique-visitors": "Unique Visitors", "graphs.unique-visitors": "ユニークな訪問者",
"graphs.registered-users": "Registered Users", "graphs.registered-users": "登録したユーザー",
"graphs.anonymous-users": "Anonymous Users" "graphs.anonymous-users": "匿名ユーザー"
} }

View File

@@ -1,7 +1,7 @@
{ {
"home-page": "ホームページ", "home-page": "ホームページ",
"description": "Choose what page is shown when users navigate to the root URL of your forum.", "description": "ユーザーがあなたのフォーラムのルートURLに移動するときに表示されるページを選択します。",
"home-page-route": "Home Page Route", "home-page-route": "ホームページのルート",
"custom-route": "Custom Route", "custom-route": "カスタムルート",
"allow-user-home-pages": "Allow User Home Pages" "allow-user-home-pages": "ユーザーホームページを有効にする"
} }

View File

@@ -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.", "description": "デフォルトの言語は、フォーラムにアクセスしているすべてのユーザーの言語表示を決定します。<br />個々のユーザーは、アカウント設定ページでデフォルトの言語を上書きできます。",
"default-language": "Default Language" "default-language": "デフォルトの言語"
} }

View File

@@ -3,25 +3,25 @@
"change-icon": "変更", "change-icon": "変更",
"route": "ルート:", "route": "ルート:",
"tooltip": "ツールチップ:", "tooltip": "ツールチップ:",
"text": "Text:", "text": "テキスト:",
"text-class": "Text Class: <small>optional</small>", "text-class": " テキストのClass:<small>任意</small>",
"id": "ID: <small>optional</small>", "id": "ID: <small>任意</small>",
"properties": "Properties:", "properties": "プロパティ:",
"only-admins": "Only display to Admins", "only-admins": "管理者にのみ表示する",
"only-global-mods-and-admins": "Only display to Global Moderators and Admins", "only-global-mods-and-admins": "グローバルモデレーターおよび管理者のみに表示",
"only-logged-in": "Only display to logged in users", "only-logged-in": "ログインしたユーザーのみに表示",
"open-new-window": "Open in a new window", "open-new-window": "新しいウィンドウで開く",
"installed-plugins-required": "Installed Plugins Required:", "installed-plugins-required": "インストール済みのプラグインが必要です:",
"search-plugin": "Search plugin", "search-plugin": "検索プラグイン",
"btn.delete": "Delete", "btn.delete": "削除",
"btn.disable": "Disable", "btn.disable": "無効",
"btn.enable": "Enable", "btn.enable": "有効",
"available-menu-items": "Available Menu Items", "available-menu-items": "利用可能なメニューアイテム",
"custom-route": "Custom Route", "custom-route": "カスタムルート",
"core": "core", "core": "コア",
"plugin": "plugin" "plugin": "プラグイン"
} }

View File

@@ -1,68 +1,68 @@
{ {
"settings": "カテゴリ設定", "settings": "カテゴリ設定",
"privileges": "特権", "privileges": "特権",
"name": "カテゴリ名", "name": "カテゴリ名",
"description": "Category Description", "description": "カテゴリの説明",
"bg-color": "Background Colour", "bg-color": "背景色",
"text-color": "Text Colour", "text-color": "テキストカラー",
"bg-image-size": "Background Image Size", "bg-image-size": "背景画像サイズ",
"custom-class": "Custom Class", "custom-class": "カスタムClass",
"num-recent-replies": "# of Recent Replies", "num-recent-replies": "# 最近の返信数",
"ext-link": "External Link", "ext-link": "外部リンク",
"upload-image": "Upload Image", "upload-image": "画像をアップロード",
"delete-image": "Remove", "delete-image": "削除",
"category-image": "Category Image", "category-image": "カテゴリ画像",
"parent-category": "Parent Category", "parent-category": "親カテゴリ",
"optional-parent-category": "(Optional) Parent Category", "optional-parent-category": "(任意)親カテゴリ",
"parent-category-none": "(None)", "parent-category-none": "(無い)",
"copy-settings": "Copy Settings From", "copy-settings": "設定をコピー",
"optional-clone-settings": "(Optional) Clone Settings From Category", "optional-clone-settings": "カテゴリからのクローン設定(任意)",
"purge": "Purge Category", "purge": "カテゴリを切り離す",
"enable": "Enable", "enable": "有効",
"disable": "Disable", "disable": "無効",
"edit": "Edit", "edit": "編集",
"select-category": "Select Category", "select-category": "カテゴリを選択",
"set-parent-category": "Set Parent Category", "set-parent-category": "親カテゴリとして設定",
"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.description": "このセクションでは、このカテゴリのアクセス制御権限を設定できます。権限は、ユーザー単位またはグループ単位で付与できます。新しいユーザーをこのテーブルに追加するには、以下のフォームで検索します。",
"privileges.warning": "<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.", "privileges.warning": "<strong></ strong>:特権の設定はすぐに有効になります。これらの設定を調整した後は、カテゴリを保存する必要はありません。",
"privileges.section-viewing": "Viewing Privileges", "privileges.section-viewing": "特権の表示",
"privileges.section-posting": "Posting Privileges", "privileges.section-posting": "権限の譲渡",
"privileges.section-moderation": "Moderation Privileges", "privileges.section-moderation": "モデレート特権",
"privileges.section-user": "User", "privileges.section-user": "ユーザー",
"privileges.search-user": "Add User", "privileges.search-user": "ユーザーを追加",
"privileges.no-users": "No user-specific privileges in this category.", "privileges.no-users": "このカテゴリにはユーザー固有の権限はありません。",
"privileges.section-group": "Group", "privileges.section-group": "グループ",
"privileges.group-private": "This group is private", "privileges.group-private": "このグループはプライベートです",
"privileges.search-group": "Add Group", "privileges.search-group": "グループを追加",
"privileges.copy-to-children": "Copy to Children", "privileges.copy-to-children": "子要素にコピーする",
"privileges.copy-from-category": "Copy from Category", "privileges.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.inherit": "<code>登録済ユーザー</ code>グループに特定の権限が与えられている場合、他のすべてのグループはたとえ明示的に定義/検査されていなくても<strong>暗黙の特権</ strong>があります。すべてのユーザーは<code>登録済ユーザー</code>のユーザーグループの一部で、この暗黙の特権が表示されるため、追加グループの特権を明示的に付与する必要はありません。",
"analytics.back": "Back to Categories List", "analytics.back": "カテゴリ一覧に戻る",
"analytics.title": "Analytics for \"%1\" category", "analytics.title": "カテゴリ\"%1\"のアナリティクス",
"analytics.pageviews-hourly": "<strong>Figure 1</strong> &ndash; Hourly page views for this category</small>", "analytics.pageviews-hourly": "<strong> 1</strong> &ndash;このカテゴリの時間別ページビュー</small>",
"analytics.pageviews-daily": "<strong>Figure 2</strong> &ndash; Daily page views for this category</small>", "analytics.pageviews-daily": "<strong>図2 </ strong>ndash;このカテゴリの日ごとのページビュー数</ small>",
"analytics.topics-daily": "<strong>Figure 3</strong> &ndash; Daily topics created in this category</small>", "analytics.topics-daily": "<strong>図3 </ strong>ndash;このカテゴリで作成された日別のスレッド</ small>",
"analytics.posts-daily": "<strong>Figure 4</strong> &ndash; Daily posts made in this category</small>", "analytics.posts-daily": "<strong>図4 </ strong>ndash;このカテゴリで作成された日ごとの投稿</ small>",
"alert.created": "Created", "alert.created": "作成されました",
"alert.create-success": "Category successfully created!", "alert.create-success": "カテゴリが正常に作成されました!",
"alert.none-active": "You have no active categories.", "alert.none-active": "アクティブなカテゴリがありません。",
"alert.create": "Create a Category", "alert.create": "カテゴリを作成",
"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-moderate": "<strong>このユーザーグループに管理権限を付与してもよろしいですか?</strong>このグループは一般公開されており、任意のユーザーが自由に参加できます。",
"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.confirm-purge": "<p class=\"lead\">本当にこのカテゴリ \"1\"を切り離しますか?</p><h5><strong class=\"text-danger\">警告!</strong>このカテゴリのすべてのスレッドと投稿が削除されます。</h5> <p class=\"help-block\">カテゴリをパージすると、すべてのスレッドと投稿が削除され、データベースからカテゴリが削除されます。<em>一時的に</ em>カテゴリを削除する場合は、代わりにカテゴリを無効にすることをおすすめします。</p>",
"alert.purge-success": "Category purged!", "alert.purge-success": "カテゴリが切り離されました!",
"alert.copy-success": "Settings Copied!", "alert.copy-success": "設定をコピーしました。",
"alert.set-parent-category": "Set Parent Category", "alert.set-parent-category": "親カテゴリとして設定",
"alert.updated": "Updated Categories", "alert.updated": "カテゴリが更新されました",
"alert.updated-success": "Category IDs %1 successfully updated.", "alert.updated-success": "カテゴリID1が正常に更新されました。",
"alert.upload-image": "Upload category image", "alert.upload-image": "カテゴリ画像をアップロード",
"alert.find-user": "Find a User", "alert.find-user": "ユーザーの検索",
"alert.user-search": "Search for a user here...", "alert.user-search": "ここでユーザーを検索...",
"alert.find-group": "Find a Group", "alert.find-group": "グループを探す",
"alert.group-search": "Search for a group here..." "alert.group-search": "ここでグループを検索する..."
} }

View File

@@ -3,32 +3,32 @@
"description": "グループの説明", "description": "グループの説明",
"system": "システムグループ", "system": "システムグループ",
"edit": "編集", "edit": "編集",
"search-placeholder": "Search", "search-placeholder": "検索",
"create": "Create Group", "create": "グループを作成",
"description-placeholder": "A short description about your group", "description-placeholder": "あなたのグループについての簡単な説明",
"create-button": "Create", "create-button": "作成",
"alerts.create-failure": "<strong>Uh-Oh</strong><p>There was a problem creating your group. Please try again later!</p>", "alerts.create-failure": "<strong>おっと</strong><p>グループを作成する際に問題が発生しました。後でもう一度お試しください!</ p>",
"alerts.confirm-delete": "Are you sure you wish to delete this group?", "alerts.confirm-delete": "このグループを削除してもよろしいですか?",
"edit.name": "Name", "edit.name": "名前",
"edit.description": "Description", "edit.description": "説明",
"edit.user-title": "Title of Members", "edit.user-title": "メンバーのタイトル",
"edit.icon": "Group Icon", "edit.icon": "グループアイコン",
"edit.label-color": "Group Label Color", "edit.label-color": "グループのラベル色",
"edit.show-badge": "Show Badge", "edit.show-badge": "バッジを表示",
"edit.private-details": "If enabled, joining of groups requires approval from a group owner.", "edit.private-details": "有効になっている場合、グループの参加にはグループオーナーの承認が必要です。",
"edit.private-override": "Warning: Private groups is disabled at system level, which overrides this option.", "edit.private-override": "警告:プライベートグループはシステムレベルで無効になっており、このオプションは無効になります。",
"edit.disable-requests": "Disable join requests", "edit.disable-requests": "参加申請を無効にする",
"edit.hidden": "Hidden", "edit.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.hidden-details": "有効の場合、このグループはグループ一覧で発見することは出来ず、ユーザーが手動で招待する必要があります。",
"edit.add-user": "Add User to Group", "edit.add-user": "グループにユーザーを追加",
"edit.add-user-search": "Search Users", "edit.add-user-search": "ユーザー検索",
"edit.members": "Member List", "edit.members": "メンバー一覧",
"control-panel": "Groups Control Panel", "control-panel": "グループのコントロールパネル",
"revert": "Revert", "revert": "元に戻す",
"edit.no-users-found": "No Users Found", "edit.no-users-found": "ユーザーが見つかりません",
"edit.confirm-remove-user": "Are you sure you want to remove this user?", "edit.confirm-remove-user": "このユーザーを削除してもよろしいですか?",
"edit.save-success": "Changes saved!" "edit.save-success": "設定を保存しました。"
} }

View File

@@ -1,15 +1,15 @@
{ {
"lead": "IPブラックリストをこちらで設定します。", "lead": "IPブラックリストをこちらで設定します。",
"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.", "description": "場合によては、ユーザーアカウントを禁止せざるを得ないこともあります。フォーラムを保護するための最善の方法は、特定のIPまたはIPの範囲へのアクセスを制限することです。このような場合は、厄介なIPアドレスまたはCIDRブロック全体をこのブラックリストに追加することができ、新しいアカウントにログインしたり登録することができなくなります。",
"active-rules": "アクティブルール", "active-rules": "アクティブルール",
"validate": "Validate Blacklist", "validate": "ブラックリストの検証",
"apply": "Apply Blacklist", "apply": "ブラックリスト",
"hints": "Syntax Hints", "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-1": "1行に1つのIPアドレスを定義します。あなたはCIDR形式(例:<code> 192.168.100.0/22 </ code>)に従っている限り、IPブロックを追加できます。",
"hint-2": "You can add in comments by starting lines with the <code>#</code> symbol.", "hint-2": "<code></ code>記号でコメントを追加することができます。",
"validate.x-valid": "<strong>%1</strong> out of <strong>%2</strong> rule(s) valid.", "validate.x-valid": "<strong>2</ strong>のルールのうち<strong>1 </ strong>のルール(s) が有効です。",
"validate.x-invalid": "The following <strong>%1</strong> rules are invalid:", "validate.x-invalid": "次の<strong>1 </ strong>ルールは無効:",
"alerts.applied-success": "Blacklist Applied" "alerts.applied-success": "ブラックリストに適用されました"
} }

View File

@@ -1,20 +1,20 @@
{ {
"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\".", "description": "登録キューにはユーザーが居ません。<br> この機能を有効にするには、<a href=\"%1\">設定 &rarr; ユーザー &rarr; ユーザー登録 &rarr; </a>へ移動し、<strong>登録タイプ</strong> の項目を \"管理者承認\"にしてください。",
"list.name": "名前", "list.name": "名前",
"list.email": "Email", "list.email": "メール",
"list.ip": "IP", "list.ip": "IP",
"list.time": "Time", "list.time": "時間",
"list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3", "list.username-spam": "周波数:%1 出現: %2 信頼度: %3",
"list.email-spam": "Frequency: %1 Appears: %2", "list.email-spam": "周波数:%1 出現: %2",
"list.ip-spam": "Frequency: %1 Appears: %2", "list.ip-spam": "周波数:%1 出現: %2",
"invitations": "Invitations", "invitations": "招待状",
"invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username. <br><br>The username will be displayed to the right of the emails for users who have redeemed their invitations.", "invitations.description": "以下は送信された招待状の完全なリストです。Ctrl-Fを使用して、電子メールまたはユーザー名でリストを検索します。<br><br>ユーザー名は、招待状を引き換えたユーザーのメールの右側に表示されます。",
"invitations.inviter-username": "Inviter Username", "invitations.inviter-username": "招待者のユーザー名",
"invitations.invitee-email": "Invitee Email", "invitations.invitee-email": "招待メール",
"invitations.invitee-username": "Invitee Username (if registered)", "invitations.invitee-username": "招待されたユーザー名(登録されている場合)",
"invitations.confirm-delete": "Are you sure you wish to delete this invitation?" "invitations.confirm-delete": "この招待状を削除してもよろしいですか?"
} }

View File

@@ -2,17 +2,17 @@
"none": "あなたのフォーラムにはまだタグが付いていません。", "none": "あなたのフォーラムにはまだタグが付いていません。",
"bg-color": "背景カラー", "bg-color": "背景カラー",
"text-color": "テキストカラー", "text-color": "テキストカラー",
"create-modify": "Create & Modify Tags", "create-modify": "タグの作成と変更",
"description": "Select tags via clicking and/or dragging, use shift to select multiple.", "description": "クリックまたは、クリックしながらドラッグでタグを選択し、Shiftキーを使用して複数のタグを選択します。",
"create": "Create Tag", "create": "タグを作成",
"modify": "Modify Tags", "modify": "タグを変更",
"delete": "Delete Selected Tags", "delete": "指定されたタグを削除",
"search": "Search for tags...", "search": "タグを検索します...",
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.", "settings": "<a href=\"%1\">こちら</a>をクリックしてタグ設定ページにアクセスしてください。",
"name": "Tag Name", "name": "タグ名",
"alerts.editing-multiple": "Editing multiple tags", "alerts.editing-multiple": "複数のタグを編集する",
"alerts.editing-x": "Editing \"%1\" tag", "alerts.editing-x": "\"1\"のタグを編集",
"alerts.confirm-delete": "Do you want to delete the selected tags?", "alerts.confirm-delete": "選択したタグを削除しますか?",
"alerts.update-success": "Tag Updated!" "alerts.update-success": "タグが更新されました!"
} }

View File

@@ -2,90 +2,90 @@
"users": "ユーザー", "users": "ユーザー",
"edit": "編集", "edit": "編集",
"make-admin": "管理者にする", "make-admin": "管理者にする",
"remove-admin": "Remove Admin", "remove-admin": "管理者を削除",
"validate-email": "Validate Email", "validate-email": "電子メールの",
"send-validation-email": "Send Validation Email", "send-validation-email": "確認メールを送信",
"password-reset-email": "Send Password Reset Email", "password-reset-email": "パスワードリセットメールを送信する",
"ban": "Ban User(s)", "ban": "BANされたユーザー(s)",
"temp-ban": "Ban User(s) Temporarily", "temp-ban": "一時的にユーザー(s)を禁止する",
"unban": "Unban User(s)", "unban": "BANを解除されたユーザー(s)",
"reset-lockout": "Reset Lockout", "reset-lockout": "ロックアウトのリセット",
"reset-flags": "Reset Flags", "reset-flags": "最近のフラグ",
"delete": "Delete User(s)", "delete": "ユーサー(s)を削除します",
"purge": "Delete User(s) and Content", "purge": "ユーザー(s)とコンテンツを削除する",
"download-csv": "Download CSV", "download-csv": "CSVでダウンロード",
"invite": "Invite", "invite": "招待",
"new": "New User", "new": "新しいユーザー",
"pills.latest": "Latest Users", "pills.latest": "新しいユーザー",
"pills.unvalidated": "Not Validated", "pills.unvalidated": "検証されていない",
"pills.no-posts": "No Posts", "pills.no-posts": "投稿がありません",
"pills.top-posters": "Top Posters", "pills.top-posters": "最も投稿したユーザー",
"pills.top-rep": "Most Reputation", "pills.top-rep": "最も評価されたユーザー",
"pills.inactive": "Inactive", "pills.inactive": "非アクティブ",
"pills.flagged": "Most Flagged", "pills.flagged": "最もフラグが付けられたもの",
"pills.banned": "Banned", "pills.banned": "BANされた",
"pills.search": "User Search", "pills.search": "ユーザーを検索",
"search.username": "By User Name", "search.username": "ユーザー名別",
"search.username-placeholder": "Enter a username to search", "search.username-placeholder": "検索するユーザー名を入力してください",
"search.email": "By Email", "search.email": "Eメール別",
"search.email-placeholder": "Enter a email to search", "search.email-placeholder": "検索するメールアドレスを入力してください",
"search.ip": "By IP Address", "search.ip": "IP アドレス別",
"search.ip-placeholder": "Enter an IP Address to search", "search.ip-placeholder": "検索するIPアドレスを入力してください",
"search.not-found": "User not found!", "search.not-found": "ユーザーが見つかりません!",
"inactive.3-months": "3 months", "inactive.3-months": "3ヶ月",
"inactive.6-months": "6 months", "inactive.6-months": "6ヶ月",
"inactive.12-months": "12 months", "inactive.12-months": "12ヶ月",
"users.uid": "uid", "users.uid": "ユーザーID",
"users.username": "username", "users.username": "ユーザー名",
"users.email": "email", "users.email": "メール",
"users.postcount": "postcount", "users.postcount": "投稿カウント",
"users.reputation": "reputation", "users.reputation": "評価",
"users.flags": "flags", "users.flags": "フラグ",
"users.joined": "joined", "users.joined": "参加",
"users.last-online": "last online", "users.last-online": "最後オンライン",
"users.banned": "banned", "users.banned": "停止した",
"create.username": "User Name", "create.username": "ユーザー名",
"create.email": "Email", "create.email": "メール",
"create.email-placeholder": "Email of this user", "create.email-placeholder": "このユーザーのメール",
"create.password": "Password", "create.password": "パスワード",
"create.password-confirm": "Confirm Password", "create.password-confirm": "パスワードを確認",
"temp-ban.length": "Ban Length", "temp-ban.length": "BANの長さ",
"temp-ban.reason": "Reason <span class=\"text-muted\">(Optional)</span>", "temp-ban.reason": "理由<span class = \"text-muted\">(任意)</ span>",
"temp-ban.hours": "Hours", "temp-ban.hours": "時間",
"temp-ban.days": "Days", "temp-ban.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.explanation": "禁止期間の長さを入力します。0にすると永久に禁止と解釈されますのでご注意ください。",
"alerts.confirm-ban": "Do you really want to ban this user <strong>permanently</strong>?", "alerts.confirm-ban": "あなたは本当にこのユーザーを<strong>永久に</strong>禁止しますか?",
"alerts.confirm-ban-multi": "Do you really want to ban these users <strong>permanently</strong>?", "alerts.confirm-ban-multi": "あなたは本当にこれらのユーザーを<strong>恒久的に</ strong>禁止しますか?",
"alerts.ban-success": "User(s) banned!", "alerts.ban-success": "ユーザー(s)は停止されました!",
"alerts.button-ban-x": "Ban %1 user(s)", "alerts.button-ban-x": "Banされた %1 ユーザー(s)",
"alerts.unban-success": "User(s) unbanned!", "alerts.unban-success": "ユーザー(s)は禁止されています!",
"alerts.lockout-reset-success": "Lockout(s) reset!", "alerts.lockout-reset-success": "ロックアウト(s)がリセットされました!",
"alerts.flag-reset-success": "Flags(s) reset!", "alerts.flag-reset-success": "フラグ(s)をリセット!",
"alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", "alerts.no-remove-yourself-admin": "あなたは管理者なので自分自身を削除することはできません!",
"alerts.make-admin-success": "User(s) are now administrators.", "alerts.make-admin-success": "ユーザー(s)は、現在管理者です。",
"alerts.confirm-remove-admin": "Do you really want to remove admins?", "alerts.confirm-remove-admin": "本当に管理者を削除しますか?",
"alerts.remove-admin-success": "User(s) are no longer administrators.", "alerts.remove-admin-success": "ユーザー(s)はもはや管理者ではありません。",
"alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", "alerts.confirm-validate-email": "これらのユーザー(s)の電子メール(s)を検証しますか?",
"alerts.validate-email-success": "Emails validated", "alerts.validate-email-success": "電子メールが検証されました",
"alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?", "alerts.password-reset-confirm": "これらのユーザー(s)にパスワードリセットのメール(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.confirm-delete": "<b>警告!</b><br/>本当にユーザー(s)を削除しますか?<br/>この操作は元に戻すことはできません!ユーザーアカウントのみが削除され、投稿とスレッドは残ります。",
"alerts.delete-success": "User(s) Deleted!", "alerts.delete-success": "ユーザー(s)は削除されました!",
"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.confirm-purge": "<b>警告!</b><br/>本当にユーザー(s)とそのコンテンツを削除しますか?<br/>この操作は元に戻すことはできません。すべてのユーザーデータとコンテンツが消去されます。",
"alerts.create": "Create User", "alerts.create": "ユーザーを作成",
"alerts.button-create": "Create", "alerts.button-create": "作成",
"alerts.button-cancel": "Cancel", "alerts.button-cancel": "キャンセル",
"alerts.error-passwords-different": "Passwords must match!", "alerts.error-passwords-different": "パスワードが一致する必要があります!",
"alerts.error-x": "<strong>Error</strong><p>%1</p>", "alerts.error-x": "<strong>エラー</strong><p>%1</p>",
"alerts.create-success": "User created!", "alerts.create-success": "ユーザーが作成されました!",
"alerts.prompt-email": "Email: ", "alerts.prompt-email": "メール:",
"alerts.email-sent-to": "An invitation email has been sent to %1", "alerts.email-sent-to": "招待メールが%1に送られました。",
"alerts.x-users-found": "%1 user(s) found! Search took %2 ms." "alerts.x-users-found": "ユーザー(s)1が見つかりました!検索には2ミリ秒かかりました。"
} }

View File

@@ -3,73 +3,73 @@
"general/dashboard": "ダッシュボード", "general/dashboard": "ダッシュボード",
"general/homepage": "ホームページ", "general/homepage": "ホームページ",
"general/navigation": "ナビゲーション", "general/navigation": "ナビゲーション",
"general/languages": "Languages", "general/languages": "言語",
"general/sounds": "Sounds", "general/sounds": "サウンド",
"general/social": "Social", "general/social": "ソーシャル",
"section-manage": "Manage", "section-manage": "メッセージ",
"manage/categories": "Categories", "manage/categories": "カテゴリ",
"manage/tags": "Tags", "manage/tags": "タグ",
"manage/users": "Users", "manage/users": "ユーザー",
"manage/registration": "Registration Queue", "manage/registration": "登録キュー",
"manage/groups": "Groups", "manage/groups": "グループ",
"manage/flags": "Flags", "manage/flags": "フラグ",
"manage/ip-blacklist": "IP Blacklist", "manage/ip-blacklist": "IPブラックリスト",
"section-settings": "Settings", "section-settings": "設定",
"settings/general": "General", "settings/general": "一般",
"settings/reputation": "Reputation", "settings/reputation": "評価",
"settings/email": "Email", "settings/email": "メール",
"settings/user": "User", "settings/user": "ユーザー",
"settings/group": "Group", "settings/group": "グループ",
"settings/guest": "Guests", "settings/guest": "ゲスト",
"settings/uploads": "Uploads", "settings/uploads": "アップロード",
"settings/post": "Post", "settings/post": "投稿",
"settings/chat": "Chat", "settings/chat": "チャット",
"settings/pagination": "Pagination", "settings/pagination": "ページ",
"settings/tags": "Tags", "settings/tags": "タグ",
"settings/notifications": "Notifications", "settings/notifications": "通知",
"settings/cookies": "Cookies", "settings/cookies": "クッキー",
"settings/web-crawler": "Web Crawler", "settings/web-crawler": "Webクローラー",
"settings/sockets": "Sockets", "settings/sockets": "接続数",
"settings/advanced": "Advanced", "settings/advanced": "高度",
"settings.page-title": "%1 Settings", "settings.page-title": "%1の設定",
"section-appearance": "Appearance", "section-appearance": "外観",
"appearance/themes": "Themes", "appearance/themes": "テーマ",
"appearance/skins": "Skins", "appearance/skins": "スキン",
"appearance/customise": "Custom HTML & CSS", "appearance/customise": "カスタムHTML & CSS",
"section-extend": "Extend", "section-extend": "拡張",
"extend/plugins": "Plugins", "extend/plugins": "プラグイン",
"extend/widgets": "Widgets", "extend/widgets": "ウィジェット",
"extend/rewards": "Rewards", "extend/rewards": "報酬",
"section-social-auth": "Social Authentication", "section-social-auth": "ソーシャル認証",
"section-plugins": "Plugins", "section-plugins": "プラグイン",
"extend/plugins.install": "Install Plugins", "extend/plugins.install": "プラグインをインストール",
"section-advanced": "Advanced", "section-advanced": "高度",
"advanced/database": "Database", "advanced/database": "データベース",
"advanced/events": "Events", "advanced/events": "イベント",
"advanced/logs": "Logs", "advanced/logs": "ログ",
"advanced/errors": "Errors", "advanced/errors": "エラー",
"advanced/cache": "Cache", "advanced/cache": "キャッシュ",
"development/logger": "Logger", "development/logger": "ロガー",
"development/info": "Info", "development/info": "情報",
"reload-forum": "Reload Forum", "reload-forum": "フォーラムを再読み込み",
"restart-forum": "Restart Forum", "restart-forum": "フォーラムを再開",
"logout": "Log out", "logout": "ログアウト",
"view-forum": "View Forum", "view-forum": "フォーラムを表示",
"search.placeholder": "Search...", "search.placeholder": "検索...",
"search.no-results": "No results...", "search.no-results": "結果がありません...",
"search.search-forum": "Search the forum for <strong></strong>", "search.search-forum": "フォーラムで<strong></ strong>を検索",
"search.keep-typing": "Type more to see results...", "search.keep-typing": "結果を見るにはもっと入力してください...",
"search.start-typing": "Start typing to see results...", "search.start-typing": "結果を見るために入力を開始...",
"connection-lost": "Connection to %1 has been lost, attempting to reconnect..." "connection-lost": "1への接続が切れたので、再接続しています..."
} }

View File

@@ -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.help": "フォーラムがメンテナンスモードの場合、すべてのリクエストは静的な一時ページにリダイレクトされます。管理者はこのリダイレクトから免除され、通常のサイトにアクセスできます。",
"maintenance-mode.message": "メンテナンスメッセージ", "maintenance-mode.message": "メンテナンスメッセージ",
"headers": "Headers", "headers": "ヘッダー",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.allow-from": "NodeBBをインラインフレーム内に配置するようALLOW-FROMを設定する",
"headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB", "headers.powered-by": "NodeBBから送信された「Powered By」ヘッダーをカスタマイズする",
"headers.acao": "Access-Control-Allow-Origin", "headers.acao": "アクセス-制御-有効-原点",
"headers.acao-help": "To deny access to all sites, leave empty or set to <code>null</code>", "headers.acao-help": "すべてのサイトへのアクセスを拒否するには空のままにするか、<code>null</ code>に設定します",
"headers.acam": "Access-Control-Allow-Methods", "headers.acam": "アクセス-制御-有効-メソッド",
"headers.acah": "Access-Control-Allow-Headers", "headers.acah": "アクセス-制御-有効-ヘッダー",
"traffic-management": "Traffic Management", "traffic-management": "トラフィック管理",
"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.help": "NodeBBは、トラフィックの多い状況で要求を自動的に拒否するモジュールを備えています。これらの設定はここで調整することができますが、はじめはデフォルト設定にしておくことをお勧めします。",
"traffic.enable": "Enable Traffic Management", "traffic.enable": "トラフィック管理を有効にする",
"traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)", "traffic.event-lag": "イベントループの場所のしきい値(ミリ秒単位)",
"traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)", "traffic.event-lag-help": "この値を下げるとページの読み込み時間が短縮されますが、さらに多くのユーザーには「過剰な読み込み」メッセージが表示されます。(再起動が必要)",
"traffic.lag-check-interval": "Check Interval (in milliseconds)", "traffic.lag-check-interval": "チェック間隔(ミリ秒単位)",
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)" "traffic.lag-check-interval-help": "この値を小さくすると、NodeBBは負荷のスパイクに対してより敏感になりますが、チェックが過敏になる可能性もあります。(再起動が必要)"
} }

View File

@@ -2,8 +2,8 @@
"chat-settings": "チャット設定", "chat-settings": "チャット設定",
"disable": "チャットは無効です", "disable": "チャットは無効です",
"disable-editing": "チャットメッセージの編集/削除を無効にする", "disable-editing": "チャットメッセージの編集/削除を無効にする",
"disable-editing-help": "Administrators and global moderators are exempt from this restriction", "disable-editing-help": "管理者およびグローバルモデレーターはこの制限を免除されます",
"max-length": "Maximum length of chat messages", "max-length": "チャットメッセージの最大の長さ",
"max-room-size": "Maximum number of users in chat rooms", "max-room-size": "チャットルームの最大ユーザー数",
"delay": "Time between chat messages in milliseconds" "delay": "ミリ秒単位のチャットメッセージ間の時間"
} }

View File

@@ -2,10 +2,10 @@
"eu-consent": "EU承諾", "eu-consent": "EU承諾",
"consent.enabled": "有効", "consent.enabled": "有効",
"consent.message": "通知メッセージ", "consent.message": "通知メッセージ",
"consent.acceptance": "Acceptance message", "consent.acceptance": "メッセージを受け取る",
"consent.link-text": "Policy Link Text", "consent.link-text": "ポリシーリンクテキスト",
"consent.blank-localised-default": "Leave blank to use NodeBB localised defaults", "consent.blank-localised-default": "空白のままにして、NodeBBのローカライズされたデフォルトを使用する",
"settings": "Settings", "settings": "設定",
"cookie-domain": "Session cookie domain", "cookie-domain": "セッションCookieドメイン",
"blank-default": "Leave blank for default" "blank-default": "デフォルトの場合は空白のまま"
} }

View File

@@ -1,25 +1,25 @@
{ {
"email-settings": "Eメール設定", "email-settings": "Eメール設定",
"address": "Eメールアドレス", "address": "Eメールアドレス",
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.", "address-help": "次の電子メールアドレスは「送信者」と「返信先」の欄に受信者が表示する電子メールを指します。",
"from": "From Name", "from": "名前から",
"from-help": "The from name to display in the email.", "from-help": "メールからの名前が表示されます。",
"gmail-routing": "Gmail Routing", "gmail-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-help1": "Gmailルーティングがセキュリティが強化されたアカウントでは機能しないという報告がありました。この場合、<a href=\"https://www.google.com/settings/security/lesssecureapps\">安全性の低いアプリを許可するようにGmailアカウントを設定する</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-routing-help2": "この回避策の関連情報を参照するには、<a href=\"https://nodemailer.com/using-gmail/\">問題に関するこのNodeMailerの記事を参照してください。</a> 代わりに、SendGridMailgunなどのサードパーティ製電子メールプラグインを利用する方法もあります。<a href=\"{config.relative_path}/admin/extend/plugins\">利用可能なプラグインを参照する</a>",
"gmail-transport": "Route emails through a Gmail/Google Apps account", "gmail-transport": "Gmail / Google Appsアカウントを使用してメールをルーティングする",
"gmail-transport.username": "Username", "gmail-transport.username": "ユーザー名",
"gmail-transport.username-help": "Enter the full email address here, especially if you are using a Google Apps managed domain.", "gmail-transport.username-help": "特にGoogle Appsの管理ドメインを使用している場合は、ここに完全なメールアドレスを入力してください。",
"gmail-transport.password": "Password", "gmail-transport.password": "パスワード",
"template": "Edit Email Template", "template": "電子メールテンプレートの編集",
"template.select": "Select Email Template", "template.select": "電子メールテンプレートを選択",
"template.revert": "Revert to Original", "template.revert": "オリジナルに戻す",
"testing": "Email Testing", "testing": "Eメールテスト",
"testing.select": "Select Email Template", "testing.select": "電子メールテンプレートを選択",
"testing.send": "Send Test Email", "testing.send": "テスト電子メールを送信する",
"testing.send-help": "The test email will be sent to the currently logged in user's email address.", "testing.send-help": "テスト電子メールは、現在ログインしているユーザーの電子メールアドレスに送信されます。",
"subscriptions": "Email Subscriptions", "subscriptions": "メール購読",
"subscriptions.disable": "Disable subscriber notification emails", "subscriptions.disable": "購読者の通知メールを無効にする",
"subscriptions.hour": "Digest Hour", "subscriptions.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>" "subscriptions.hour-help": "スケジュールされたメールのダイジェストを送信する時間を表す数字を入力してください(深夜は<code>0</ code>、午後5:00は<code>17</code>)これはサーバー自体に基づく時間であり、システムの時計と正確に一致しない場合があります。<span id=\"serverTime\"></ span> <br />次の日のダイジェストは<span id=\"nextDigestTime\"></span>"
} }

View File

@@ -2,29 +2,29 @@
"site-settings": "サイト設定", "site-settings": "サイト設定",
"title": "サイトタイトル", "title": "サイトタイトル",
"title.name": "あなたのコミュニティ名", "title.name": "あなたのコミュニティ名",
"title.show-in-header": "Show Site Title in Header", "title.show-in-header": "ヘッダーにサイトタイトルを表示する",
"browser-title": "Browser Title", "browser-title": "ブラウザ",
"browser-title-help": "If no browser title is specified, the site title will be used", "browser-title-help": "ブラウザのタイトルが指定されていない場合、サイトのタイトルが使用されます。",
"title-layout": "Title Layout", "title-layout": "タイトル配置",
"title-layout-help": "Define how the browser title will be structured ie. &#123;pageTitle&#125; | &#123;browserTitle&#125;", "title-layout-help": "ブラウザのタイトルがどのように構成されるかを定義します。&#123;pageTitle&#125; | &#123;browserTitle&#125;",
"description.placeholder": "A short description about your community", "description.placeholder": "あなたのコミュニティについての簡単な説明",
"description": "Site Description", "description": "サイトの説明",
"keywords": "Site Keywords", "keywords": "サイトのキーワード",
"keywords-placeholder": "Keywords describing your community, comma-separated", "keywords-placeholder": "あなたのコミュニティを記述するキーワード、カンマ区切り",
"logo": "Site Logo", "logo": "サイトロゴ",
"logo.image": "Image", "logo.image": "画像",
"logo.image-placeholder": "Path to a logo to display on forum header", "logo.image-placeholder": "フォーラムのヘッダーに表示するロゴのパス",
"logo.upload": "Upload", "logo.upload": "アップロード",
"logo.url": "URL", "logo.url": "URL",
"logo.url-placeholder": "The URL of the site logo", "logo.url-placeholder": "サイトロゴのURL",
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", "logo.url-help": "ロゴをクリックすると、ユーザーをこのアドレスに送信します。空白のままにすると、ユーザーはフォーラムのインデックスに送信されます。",
"logo.alt-text": "Alt Text", "logo.alt-text": "全てのテキスト:",
"log.alt-text-placeholder": "Alternative text for accessibility", "log.alt-text-placeholder": "アクセシビリティのための代替テキスト",
"favicon": "Favicon", "favicon": "お気に入りアイコン",
"favicon.upload": "Upload", "favicon.upload": "アップロード",
"touch-icon": "Homescreen/Touch Icon", "touch-icon": "多い",
"touch-icon.upload": "Upload", "touch-icon.upload": "アップロード",
"touch-icon.help": "Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.", "touch-icon.help": "推奨サイズとフォーマット:192x192PNG形式のみ。タッチアイコンが指定されていない場合、NodeBBはファビコンを使用します。",
"outgoing-links": "Outgoing Links", "outgoing-links": "外部サイトへのリンク",
"outgoing-links.warning-page": "Use Outgoing Links Warning Page" "outgoing-links.warning-page": "送信リンクの警告ページを使用"
} }

View File

@@ -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.help": "有効の場合、グループへの参加はグループ管理人からの承認が必要です。<em>(デフォルト: 有効)</em>",
"private-groups.warning": "<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.", "private-groups.warning": "<strong>注意!</strong>このオプションが無効で、プライベートグループがある場合、自動的に公開されます。",
"allow-creation": "Allow Group Creation", "allow-creation": "グループの作成を有効にする",
"allow-creation-help": "If enabled, users can create groups <em>(Default: disabled)</em>", "allow-creation-help": "有効にすると、ユーザーはグループを作成できます<em>(デフォルト:無効)</ em>",
"max-name-length": "Maximum Group Name Length", "max-name-length": "グループ名の最大文字数",
"cover-image": "Group Cover Image", "cover-image": "グループ表紙イメージ",
"default-cover": "Default Cover Images", "default-cover": "デフォルトのカバー画像",
"default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image" "default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image\n日本語\nアップロードされたカバー画像を持たないグループで、カンマ区切りのデフォルト表紙画像を追加する。"
} }

View File

@@ -1,8 +1,8 @@
{ {
"handles": "ゲストハンドル", "handles": "ゲストハンドル",
"handles.enabled": "ゲストハンドルを有効にする", "handles.enabled": "ゲストハンドルを有効にする",
"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\"", "handles.enabled-help": "このオプションでは新しい投稿が表示される時に、ゲストは自分が投稿する各投稿に関連付ける名前を選択できます。無効にすると、単に「ゲスト」と呼ばれます。",
"privileges": "Guest Privileges", "privileges": "ゲスト特典",
"privileges.can-search": "Allow guests to search without logging in", "privileges.can-search": "ゲストがログインせずに検索できるようにする",
"privileges.can-search-users": "Allow guests to search users without logging in" "privileges.can-search-users": "ゲストがログインせずにユーザーを検索できるようにする"
} }

View File

@@ -1,5 +1,5 @@
{ {
"notifications": "通知", "notifications": "通知",
"welcome-notification": "ウェルカム通知", "welcome-notification": "ウェルカム通知",
"welcome-notification-link": "Welcome Notification Link" "welcome-notification-link": "ウェルカム通知のリンク"
} }

View File

@@ -1,9 +1,9 @@
{ {
"pagination": "ページ設定", "pagination": "ページ設定",
"enable": "Paginate topics and posts instead of using infinite scroll.", "enable": "スクロールでのページ自動ロードはしない",
"topics": "トピックページ", "topics": "スレッドページ",
"posts-per-page": "Posts per Page", "posts-per-page": "ページごとの投稿数",
"categories": "Category Pagination", "categories": "カテゴリページ",
"topics-per-page": "Topics per Page", "topics-per-page": "ページごとのスレッド数",
"initial-num-load": "Initial Number of Topics to Load on Unread, Recent, and Popular" "initial-num-load": "未読、最近、および人気に読み込むスレッドの初期数"
} }

View File

@@ -1,44 +1,44 @@
{ {
"sorting": "投稿の並び順", "sorting": "投稿の並び順",
"sorting.post-default": "標準のポスト並び順", "sorting.post-default": "標準のポスト並び順",
"sorting.oldest-to-newest": "Oldest to Newest", "sorting.oldest-to-newest": "新しい順に",
"sorting.newest-to-oldest": "Newest to Oldest", "sorting.newest-to-oldest": "新しいものから古いものへ",
"sorting.most-votes": "Most Votes", "sorting.most-votes": "最も多い評価",
"sorting.topic-default": "Default Topic Sorting", "sorting.topic-default": "デフォルトのスレッドの並び順",
"restrictions": "Posting Restrictions", "restrictions": "転記の制限",
"restrictions.seconds-between": "Seconds between Posts", "restrictions.seconds-between": "投稿間の秒数",
"restrictions.seconds-between-new": "Seconds between Posts for New Users", "restrictions.seconds-between-new": "新規ユーザーの投稿間の秒数",
"restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", "restrictions.rep-threshold": "この制限が解除される前の評判しきい値",
"restrictions.seconds-defore-new": "Seconds before new user can post", "restrictions.seconds-defore-new": "新しいユーザーが投稿できるまでの秒数",
"restrictions.seconds-edit-after": "Number of seconds users are allowed to edit posts after posting. (0 disabled)", "restrictions.seconds-edit-after": "投稿後にユーザーが投稿を編集できる秒数。(0は無効)",
"restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", "restrictions.seconds-delete-after": "投稿後にユーザーが投稿を削除できる秒数。(0は無効)",
"restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)", "restrictions.replies-no-delete": "ユーザーが自分のスレッドを削除できなくなった後の返信数(0は無効)",
"restrictions.min-title-length": "Minimum Title Length", "restrictions.min-title-length": "タイトルの最小文字数",
"restrictions.max-title-length": "Maximum Title Length", "restrictions.max-title-length": "タイトルの最大文字数",
"restrictions.min-post-length": "Minimum Post Length", "restrictions.min-post-length": "投稿の最小文字数",
"restrictions.max-post-length": "Maximum Post Length", "restrictions.max-post-length": "投稿の最大文字数",
"restrictions.days-until-stale": "Days until Topic is considered stale", "restrictions.days-until-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.", "restrictions.stale-help": "スレッドが「古い」とみなされた場合、そのスレッドに返信しようとするユーザーに警告が表示されます。",
"timestamp": "Timestamp", "timestamp": "タイムスタンプ",
"timestamp.cut-off": "Date cut-off (in days)", "timestamp.cut-off": "日付のカットオフ(日数)",
"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>", "timestamp.cut-off-help": "日付&amp;時間は相対的な方法で表示されます(例:「3時間前」/「5日前」)。そしてさまざまな地域にローカライズされています。\n\\t\\t\\t\\t\\t言語。特定のポイントの後、このテキストは、ローカライズされた日付自体を表示するように切り替えることができます。\n\\t\\t\\t\\t\\t(例:2016年11月5日15:30)<br /><em>(デフォルト:<code>30 </code>、または1か月)。日付を常に表示するには0に設定し、常に相対時間を表示するには空白のままにします。</em>",
"teaser": "Teaser Post", "teaser": "ティーザーの投稿",
"teaser.last-post": "Last &ndash; Show the latest post, including the original post, if no replies", "teaser.last-post": "最後ndash;返信がない場合は、元の投稿を含む最新の投稿を表示",
"teaser.last-reply": "Last &ndash; Show the latest reply, or a \"No replies\" placeholder if no replies", "teaser.last-reply": "最後ndash;最新の返信を表示するか、返信がない場合は「返信なし」のプレースホルダを表示する",
"teaser.first": "First", "teaser.first": "最初",
"unread": "Unread Settings", "unread": "未読の設定",
"unread.cutoff": "Unread cutoff days", "unread.cutoff": "未読のカットオフ日",
"unread.min-track-last": "Minimum posts in topic before tracking last read", "unread.min-track-last": "最後に読み込みを行う前に追跡するスレッドの最小投稿数",
"signature": "Signature Settings", "signature": "署名の設定",
"signature.disable": "Disable signatures", "signature.disable": "署名を無効にする",
"signature.no-links": "Disable links in signatures", "signature.no-links": "署名内のリンクを無効にする",
"signature.no-images": "Disable images in signatures", "signature.no-images": "署名内の画像を無効にする",
"signature.max-length": "Maximum Signature Length", "signature.max-length": "署名の最大文字数",
"composer": "Composer Settings", "composer": "Composerの設定",
"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-help": "次の設定は、投稿者の機能や外観を制御します。\n\\t\\t\\t\\tユーザーに新しいスレッドを作成したり、既存のトピックに返信したりできます。",
"composer.show-help": "Show \"Help\" tab", "composer.show-help": "「ヘルプ」タグを表示",
"composer.enable-plugin-help": "Allow plugins to add content to the help tab", "composer.enable-plugin-help": "プラグインがヘルプタブにコンテンツを追加できるようにする",
"composer.custom-help": "Custom Help Text", "composer.custom-help": "カスタムヘルプテキスト",
"ip-tracking": "IP Tracking", "ip-tracking": "IPトラッキング",
"ip-tracking.each-post": "Track IP Address for each post" "ip-tracking.each-post": "各投稿のトラックIPアドレス"
} }

View File

@@ -1,8 +1,8 @@
{ {
"reputation": "評価の設定", "reputation": "評価の設定",
"disable": "Disable Reputation System", "disable": "レピュテーションシステムを無効にする",
"disable-down-voting": "低評価を無効にする", "disable-down-voting": "低評価を無効にする",
"thresholds": "Activity Thresholds", "thresholds": "アクティビティのしきい値",
"min-rep-downvote": "Minimum reputation to downvote posts", "min-rep-downvote": "投稿をdownvoteするための最低評価",
"min-rep-flag": "Minimum reputation to flag posts" "min-rep-flag": "フラグの投稿に低評価"
} }

View File

@@ -1,6 +1,6 @@
{ {
"reconnection": "再接続の設定", "reconnection": "再接続の設定",
"max-attempts": "Max Reconnection Attempts", "max-attempts": "最大再接続数の試行",
"default-placeholder": "Default: %1", "default-placeholder": "デフォルト: %1",
"delay": "Reconnection Delay" "delay": "再接続遅延"
} }

View File

@@ -1,12 +1,12 @@
{ {
"tag": "タグ設定", "tag": "タグ設定",
"min-per-topic": "トピックごとの最小タグ数", "min-per-topic": "スレッドごとの最小タグ数",
"max-per-topic": "トピックごとの最大タグ数", "max-per-topic": "スレッドごとの最大タグ数",
"min-length": "Minimum Tag Length", "min-length": "タグの最小文字数",
"max-length": "Maximum Tag Length", "max-length": "タグの最大文字数",
"goto-manage": "Click here to visit the tag management page.", "goto-manage": "タグ管理ページにアクセスするには、ここをクリックしてください。",
"privacy": "Privacy", "privacy": "プライバシー",
"list-private": "Make the tags list private", "list-private": "タグリストを非公開にする",
"related-topics": "Related Topics", "related-topics": "関連スレッド",
"max-related-topics": "Maximum related topics to display (if supported by theme)" "max-related-topics": "表示する関連スレッドの最大数(テーマでサポートされている場合)"
} }

View File

@@ -1,28 +1,28 @@
{ {
"posts": "投稿", "posts": "投稿",
"allow-files": "Allow users to upload regular files", "allow-files": "ユーザーが通常のファイルをアップロードできるようにする。",
"private": "Make uploaded files private", "private": "アップロードしたファイルを非公開にする",
"max-image-width": "Resize images down to specified width (in pixels)", "max-image-width": "画像を指定した幅(ピクセル単位)にリサイズ",
"max-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)", "max-image-width-help": "(ピクセル単位、デフォルト:760px、無効にするには0に設定)",
"max-file-size": "Maximum File Size (in KiB)", "max-file-size": "最大ファイルサイズ(KB)",
"max-file-size-help": "(in kilobytes, default: 2048 KiB)", "max-file-size-help": "(キロバイト単位、デフォルト:2048 KB)",
"allow-topic-thumbnails": "Allow users to upload topic thumbnails", "allow-topic-thumbnails": "ユーザーがスレッドのサムネイルをアップロードできるようにする",
"topic-thumb-size": "Topic Thumb Size", "topic-thumb-size": "スレッドのサムネイルの大きさ",
"allowed-file-extensions": "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": "ここにファイル拡張子のカンマ区切りリストを入力します(例:<code> pdfxlsdoc </ code>)\n\\t\\t\\t\\t\\t空リストは、すべての拡張が許可されていることを意味します。",
"profile-avatars": "Profile Avatars", "profile-avatars": "プロフィールの顔写真",
"allow-profile-image-uploads": "Allow users to upload profile images", "allow-profile-image-uploads": "ユーザーがプロフィール画像をアップロードできるようにする。",
"convert-profile-image-png": "Convert profile image uploads to PNG", "convert-profile-image-png": "プロフィール画像のアップロードをPNGに変換する",
"default-avatar": "Custom Default Avatar", "default-avatar": "カスタムデフォルトアバター",
"upload": "Upload", "upload": "アップロード",
"profile-image-dimension": "Profile Image Dimension", "profile-image-dimension": "プロファイル画像の寸法",
"profile-image-dimension-help": "(in pixels, default: 128 pixels)", "profile-image-dimension-help": "(ピクセルで、デフォルト128px)",
"max-profile-image-size": "Maximum Profile Image File Size", "max-profile-image-size": "プロフィール画像の最大ファイルサイズ",
"max-profile-image-size-help": "(in kilobytes, default: 256 KiB)", "max-profile-image-size-help": "(キロバイト単位、デフォルト256KB)",
"max-cover-image-size": "Maximum Cover Image File Size", "max-cover-image-size": "カバー画像の最大サイズ",
"max-cover-image-size-help": "(in kilobytes, default: 2,048 KiB)", "max-cover-image-size-help": "(キロバイト、デフォルト:2,048KB)",
"keep-all-user-images": "Keep old versions of avatars and profile covers on the server", "keep-all-user-images": "古いバージョンのアバターとプロファイルカバーをサーバーに保管",
"profile-covers": "Profile Covers", "profile-covers": "プロフィールのカバー",
"default-covers": "Default Cover Images", "default-covers": "デフォルトのカバー画像",
"default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image" "default-covers-help": "アップロードされたカバー画像を持たないアカウントのカンマ区切りのデフォルト表紙画像を追加する"
} }

View File

@@ -2,58 +2,58 @@
"authentication": "認証", "authentication": "認証",
"allow-local-login": "ローカルログインを有効にする", "allow-local-login": "ローカルログインを有効にする",
"require-email-confirmation": "Eメールの確認が必要です", "require-email-confirmation": "Eメールの確認が必要です",
"email-confirm-interval": "User may not resend a confirmation email until", "email-confirm-interval": "ユーザーが確認するまでEメールを再送信しない",
"email-confirm-email2": "minutes have elapsed", "email-confirm-email2": "分経過",
"allow-login-with": "Allow login with", "allow-login-with": "ログインを許可",
"allow-login-with.username-email": "Username or Email", "allow-login-with.username-email": "ユーザー名または電子メール",
"allow-login-with.username": "Username Only", "allow-login-with.username": "ユーザー名のみ",
"allow-login-with.email": "Email Only", "allow-login-with.email": "メールのみ",
"account-settings": "Account Settings", "account-settings": "アカウント設定",
"disable-username-changes": "Disable username changes", "disable-username-changes": "ユーザー名の変更を無効にする",
"disable-email-changes": "Disable email changes", "disable-email-changes": "Eメールの変更を無効にする",
"disable-password-changes": "Disable password changes", "disable-password-changes": "パスワードの変更を無効にする",
"allow-account-deletion": "Allow account deletion", "allow-account-deletion": "アカウントが解除されました",
"user-info-private": "Make user info private", "user-info-private": "ユーザー情報を非公開にする",
"themes": "Themes", "themes": "テーマ",
"disable-user-skins": "Prevent users from choosing a custom skin", "disable-user-skins": "ユーザーがカスタムスキンを選択できないようにする",
"account-protection": "Account Protection", "account-protection": "アカウント保護",
"login-attempts": "Login attempts per hour", "login-attempts": "時間ごとのログイン試行",
"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", "login-attempts-help": "ユーザのアカウントへのログイン試行数がこの値を超える場合、そのアカウントは予め設定された時間だけロックされます。",
"lockout-duration": "Account Lockout Duration (minutes)", "lockout-duration": "アカウントロックアウト期間(分)",
"login-days": "Days to remember user login sessions", "login-days": "ユーザーのログインセッションを覚える日数",
"password-expiry-days": "Force password reset after a set number of days", "password-expiry-days": "指定した日数後にパスワードを強制的にリセットする",
"registration": "User Registration", "registration": "ユーザー登録",
"registration-type": "Registration Type", "registration-type": "登録タイプ",
"registration-type.normal": "Normal", "registration-type.normal": "標準",
"registration-type.admin-approval": "Admin Approval", "registration-type.admin-approval": "管理者承認",
"registration-type.admin-approval-ip": "Admin Approval for IPs", "registration-type.admin-approval-ip": "IPの管理者承認",
"registration-type.invite-only": "Invite Only", "registration-type.invite-only": "招待のみ",
"registration-type.admin-invite-only": "Admin Invite Only", "registration-type.admin-invite-only": "管理者招待のみ",
"registration-type.disabled": "No registration", "registration-type.disabled": "登録なし",
"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-type.help": "通常 - ユーザーは/登録ページから登録できます。<br/>\n管理者承認 - ユーザー登録は、管理者向けの<a href=\"%1/admin/manage/registration\">承認待ちキュー</a>に配置されます。<br/>\nIPの管理者承認 - 新規ユーザーの場合は通常、アカウントが既に設定されているIPアドレスの管理者承認の場合。\n招待のみ - ユーザーは<a href=\"%1/users\" target=\"_blank\">ユーザー</a>ページから他のユーザーを招待できます。<br/>\n管理者招待のみ - 管理者のみが<a href=\"%1/users\" target=\"_blank\">ユーザー</a>と<a href=\"%1/admin/manage/users\">管理者/管理者から他のユーザーを招待できます/ users </a>ページ\n登録なし - ユーザー登録なし。<br/>",
"registration.max-invites": "Maximum Invitations per User", "registration.max-invites": "ユーザーごとの最大招待数",
"max-invites": "Maximum Invitations per User", "max-invites": "ユーザーごとの最大招待数",
"max-invites-help": "0 for no restriction. Admins get infinite invitations<br>Only applicable for \"Invite Only\"", "max-invites-help": "無制限の場合は0です。管理者は無限の招待を受ける<br>「招待のみ」にのみ適用されます",
"min-username-length": "Minimum Username Length", "min-username-length": "ユーザー名の最小文字数",
"max-username-length": "Maximum Username Length", "max-username-length": "ユーザー名の最大文字数",
"min-password-length": "Minimum Password Length", "min-password-length": "パスワードの最小文字数",
"max-about-me-length": "Maximum About Me Length", "max-about-me-length": "概要の最大文字数",
"terms-of-use": "Forum Terms of Use <small>(Leave blank to disable)</small>", "terms-of-use": "フォーラム利用規約<small>(空白のままにしておくと無効になります)</ small>",
"user-search": "User Search", "user-search": "ユーザーを検索",
"user-search-results-per-page": "Number of results to display", "user-search-results-per-page": "結果数を表示",
"default-user-settings": "Default User Settings", "default-user-settings": "デフォルトユーザー設定",
"show-email": "Show email", "show-email": "メールを表示",
"show-fullname": "Show fullname", "show-fullname": "フルネームで表示",
"restrict-chat": "Only allow chat messages from users I follow", "restrict-chat": "フォローしたユーザーからのチャットメッセージだけを許可する",
"outgoing-new-tab": "Open outgoing links in new tab", "outgoing-new-tab": "外部リンクを新しいタブで開く",
"topic-search": "Enable In-Topic Searching", "topic-search": "インースレッドの検索を有効にします",
"digest-freq": "Subscribe to Digest", "digest-freq": "お知らせを購読する",
"digest-freq.off": "Off", "digest-freq.off": "オフ",
"digest-freq.daily": "Daily", "digest-freq.daily": "デイリー",
"digest-freq.weekly": "Weekly", "digest-freq.weekly": "ウィークリー",
"digest-freq.monthly": "Monthly", "digest-freq.monthly": "マンスリー",
"email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "email-chat-notifs": "オンラインではない時に新しいチャットメッセージを受信した場合、通知メールを送信する。",
"email-post-notif": "Send an email when replies are made to topics I am subscribed to", "email-post-notif": "購読中のスレッドに返信があった場合、メールで通知する。",
"follow-created-topics": "Follow topics you create", "follow-created-topics": "投稿したスレッドをフォローします",
"follow-replied-topics": "Follow topics that you reply to" "follow-replied-topics": "返信したスレッドをフォローします"
} }

View File

@@ -1,10 +1,10 @@
{ {
"crawlability-settings": "クロール性の設定", "crawlability-settings": "クロール性の設定",
"robots-txt": "Custom Robots.txt <small>Leave blank for default</small>", "robots-txt": "カスタムRobots.txt<small>デフォルトの場合は空白のままにしてください</small>",
"sitemap-feed-settings": "Sitemap & Feed Settings", "sitemap-feed-settings": "サイトマップとフィードの設定",
"disable-rss-feeds": "Disable RSS Feeds", "disable-rss-feeds": "RSSフィードを無効にする",
"disable-sitemap-xml": "Disable Sitemap.xml", "disable-sitemap-xml": "Sitemap.xmlを無効にする",
"sitemap-topics": "Number of Topics to display in the Sitemap", "sitemap-topics": "サイトマップに表示するスレッドの数",
"clear-sitemap-cache": "Clear Sitemap Cache", "clear-sitemap-cache": "サイトマップのキャッシュをクリア",
"view-sitemap": "View Sitemap" "view-sitemap": "サイトマップを表示"
} }

View File

@@ -1,9 +1,9 @@
{ {
"category": "カテゴリ", "category": "カテゴリ",
"subcategories": "サブカテゴリ", "subcategories": "サブカテゴリ",
"new_topic_button": "新規トピック", "new_topic_button": "新規スレッド",
"guest-login-post": "投稿するにはログインしてください", "guest-login-post": "投稿するにはログインしてください",
"no_topics": "<strong>まだトピックはありません</strong><br />最初のトピックを書いてみませんか?", "no_topics": "<strong>まだスレッドはありません</strong><br />最初のスレッドを書いてみませんか?",
"browsing": "閲覧中", "browsing": "閲覧中",
"no_replies": "返事はまだありません", "no_replies": "返事はまだありません",
"no_new_posts": "新しい投稿はありません", "no_new_posts": "新しい投稿はありません",
@@ -12,8 +12,8 @@
"ignore": "無視する", "ignore": "無視する",
"watching": "ウォッチ中", "watching": "ウォッチ中",
"ignoring": "無視しています", "ignoring": "無視しています",
"watching.description": "未読トピックを表示", "watching.description": "未読スレッドを表示",
"ignoring.description": "未読トピックを表示しない", "ignoring.description": "未読スレッドを表示しない",
"watch.message": "あなたは現在、このカテゴリと全てのサブカテゴリで行われる更新をウォッチしています。", "watch.message": "あなたは現在、このカテゴリと全てのサブカテゴリで行われる更新をウォッチしています。",
"ignore.message": "あなたは現在、このカテゴリと全てのサブカテゴリで行われる更新を無視しています。", "ignore.message": "あなたは現在、このカテゴリと全てのサブカテゴリで行われる更新を無視しています。",
"watched-categories": "ウォッチ中のカテゴリ" "watched-categories": "ウォッチ中のカテゴリ"

View File

@@ -17,10 +17,10 @@
"reset.notify.text1": "%1にてパスワードのリセットが行われたことをお知らせします。", "reset.notify.text1": "%1にてパスワードのリセットが行われたことをお知らせします。",
"reset.notify.text2": "もしあなたがリセットを行っていない場合は、すぐに管理者に通報してください。", "reset.notify.text2": "もしあなたがリセットを行っていない場合は、すぐに管理者に通報してください。",
"digest.notifications": "%1さんからの未読通知があります:", "digest.notifications": "%1さんからの未読通知があります:",
"digest.latest_topics": "%1からの新しいトピック", "digest.latest_topics": "%1からの新しいスレッド",
"digest.cta": "クリックで%1を見る", "digest.cta": "クリックで%1を見る",
"digest.unsub.info": "このまとめはあなたの購読設定により送られました。", "digest.unsub.info": "このまとめはあなたの購読設定により送られました。",
"digest.no_topics": "%1にはアクティブなトピックがありません。", "digest.no_topics": "%1にはアクティブなスレッドがありません。",
"digest.day": "日", "digest.day": "日",
"digest.week": "週", "digest.week": "週",
"digest.month": "月", "digest.month": "月",

View File

@@ -4,7 +4,7 @@
"account-locked": "あなたのアカウントは一時的にロックされています", "account-locked": "あなたのアカウントは一時的にロックされています",
"search-requires-login": "検索するにはアカウントが必要です - ログインするかアカウントを作成してください。", "search-requires-login": "検索するにはアカウントが必要です - ログインするかアカウントを作成してください。",
"invalid-cid": "無効なカテゴリID", "invalid-cid": "無効なカテゴリID",
"invalid-tid": "無効なトピックID", "invalid-tid": "無効なスレッドID",
"invalid-pid": "無効な投稿ID", "invalid-pid": "無効な投稿ID",
"invalid-uid": "無効なユーザーID", "invalid-uid": "無効なユーザーID",
"invalid-username": "無効なユーザー名", "invalid-username": "無効なユーザー名",
@@ -34,7 +34,7 @@
"blacklisted-ip": "申し訳ありませんがあなたのIPアドレスは当コミュニティで停止されています。もし誤ったエラーだと思われる場合は管理者にお問い合わせください。", "blacklisted-ip": "申し訳ありませんがあなたのIPアドレスは当コミュニティで停止されています。もし誤ったエラーだと思われる場合は管理者にお問い合わせください。",
"ban-expiry-missing": "この停止の終了日を入力してください。", "ban-expiry-missing": "この停止の終了日を入力してください。",
"no-category": "カテゴリは存在しません", "no-category": "カテゴリは存在しません",
"no-topic": "トピックは存在しません", "no-topic": "スレッドは存在しません",
"no-post": "投稿は存在しません", "no-post": "投稿は存在しません",
"no-group": "グループは存在しません", "no-group": "グループは存在しません",
"no-user": "ユーザーは存在しません", "no-user": "ユーザーは存在しません",
@@ -56,19 +56,19 @@
"post-delete-duration-expired-hours-minutes": "あなたは%1 時間(s) %2 分(s)後に投稿を削除することが許可されています。", "post-delete-duration-expired-hours-minutes": "あなたは%1 時間(s) %2 分(s)後に投稿を削除することが許可されています。",
"post-delete-duration-expired-days": "あなたは%1 日(s)後に投稿を削除することが許可されています。", "post-delete-duration-expired-days": "あなたは%1 日(s)後に投稿を削除することが許可されています。",
"post-delete-duration-expired-days-hours": "あなたは%1 日(s) %2 時間(s)後に投稿を削除することが許可されています。", "post-delete-duration-expired-days-hours": "あなたは%1 日(s) %2 時間(s)後に投稿を削除することが許可されています。",
"cant-delete-topic-has-reply": "応答待ちの場合、あなたのトピックは削除できません。", "cant-delete-topic-has-reply": "応答待ちの場合、あなたのスレッドは削除できません。",
"cant-delete-topic-has-replies": "%1 の応答待ちの場合、あなたのトピックは削除できません。", "cant-delete-topic-has-replies": "%1 の応答待ちの場合、あなたのスレッドは削除できません。",
"content-too-short": "より長く投稿を書いて下さい。投稿にはせめて%1文字が必要です。", "content-too-short": "より長く投稿を書いて下さい。投稿にはせめて%1文字が必要です。",
"content-too-long": "より短く投稿を書いて下さい。投稿が%1文字以上が許されません。", "content-too-long": "より短く投稿を書いて下さい。投稿が%1文字以上が許されません。",
"title-too-short": "より長くタイトルを書いて下さい。タイトルはせめて%1文字が必要です。", "title-too-short": "より長くタイトルを書いて下さい。タイトルはせめて%1文字が必要です。",
"title-too-long": "より短くタイトルを書いて下さい。タイトルは%1文字以上が許されません。", "title-too-long": "より短くタイトルを書いて下さい。タイトルは%1文字以上が許されません。",
"category-not-selected": "カテゴリが選択されていません。", "category-not-selected": "カテゴリが選択されていません。",
"too-many-posts": "あなたは%1秒間に一つの投稿しか許されます少し待ってまた投稿してください", "too-many-posts": "あなたは%1秒間に一つの投稿しか許されます少し待ってまた投稿してください",
"too-many-posts-newbie": "あなたは%2評判を得ているまで、新しいユーザーとしては、一度だけごとに%1秒を投稿することができます - 再び投稿する前にお待ちください", "too-many-posts-newbie": "あなたは%2評判を得ているまで、新しいユーザーとしては、一度だけごとに%1秒を投稿することができます - 再び投稿する前にお待ちください",
"tag-too-short": "%1文字(s)以上でタグを入力してください。", "tag-too-short": "%1文字(s)以上でタグを入力してください。",
"tag-too-long": "%1文字(s)以内でタグを入力してください。", "tag-too-long": "%1文字(s)以内でタグを入力してください。",
"not-enough-tags": "タグが足りません。トピックはせめて%1タグが必要です。", "not-enough-tags": "タグが足りません。スレッドはせめて%1タグ(s)が必要です。",
"too-many-tags": "タグが多すぎます。トピックは%1のタグ以上が許されません。", "too-many-tags": "タグが多すぎます。スレッドは%1のタグ(s)以上が許されません。",
"still-uploading": "アップロードが完成するまでお待ちください。", "still-uploading": "アップロードが完成するまでお待ちください。",
"file-too-big": "%1kBより大きいサイズファイルが許されませんより小さいファイルをアップして下さい。", "file-too-big": "%1kBより大きいサイズファイルが許されませんより小さいファイルをアップして下さい。",
"guest-upload-disabled": "ゲストさんからのアップを無効にしています", "guest-upload-disabled": "ゲストさんからのアップを無効にしています",
@@ -91,9 +91,9 @@
"group-already-requested": "あなたのメンバーシップの要求が既に提出されました", "group-already-requested": "あなたのメンバーシップの要求が既に提出されました",
"post-already-deleted": "この投稿が既に削除されました", "post-already-deleted": "この投稿が既に削除されました",
"post-already-restored": "この投稿が既に復元されました", "post-already-restored": "この投稿が既に復元されました",
"topic-already-deleted": "このトピックが既に削除されました", "topic-already-deleted": "このスレッドは既に削除されました",
"topic-already-restored": "このトピックが既に復元されました", "topic-already-restored": "このスレッドは既に復元されました",
"cant-purge-main-post": "あなたはこの主な投稿をパージできませんので、削除してさい", "cant-purge-main-post": "メインの投稿を削除することはできません。代わりにスレッドを削除してください",
"topic-thumbnails-are-disabled": "スレッドのサムネイルが無効された", "topic-thumbnails-are-disabled": "スレッドのサムネイルが無効された",
"invalid-file": "無効なファイル", "invalid-file": "無効なファイル",
"uploads-are-disabled": "アップロードが無効された", "uploads-are-disabled": "アップロードが無効された",

View File

@@ -103,5 +103,5 @@
"cookies.message": "このWEBサイトは、心地良くご使用頂くためにクッキーを使用しています。", "cookies.message": "このWEBサイトは、心地良くご使用頂くためにクッキーを使用しています。",
"cookies.accept": "了解!", "cookies.accept": "了解!",
"cookies.learn_more": "もっと詳しく", "cookies.learn_more": "もっと詳しく",
"edited": "Edited" "edited": "編集されました"
} }

View File

@@ -53,5 +53,5 @@
"upload-group-cover": "グループのカバーをアップロード", "upload-group-cover": "グループのカバーをアップロード",
"bulk-invite-instructions": "ユーザー名をカンマ区切りして入力することで、このグループへ招待します。", "bulk-invite-instructions": "ユーザー名をカンマ区切りして入力することで、このグループへ招待します。",
"bulk-invite": "バルク招待", "bulk-invite": "バルク招待",
"remove_group_cover_confirm": "Are you sure you want to remove the cover picture?" "remove_group_cover_confirm": "カバー写真を削除してもよろしいですか?"
} }

View File

@@ -13,7 +13,7 @@
"chat.contacts": "お問い合わせ", "chat.contacts": "お問い合わせ",
"chat.message-history": "メッセージ履歴", "chat.message-history": "メッセージ履歴",
"chat.pop-out": "チャットを別ウィンドウで表示する", "chat.pop-out": "チャットを別ウィンドウで表示する",
"chat.minimize": "Minimize", "chat.minimize": "最小化",
"chat.maximize": "最大化", "chat.maximize": "最大化",
"chat.seven_days": "7日間", "chat.seven_days": "7日間",
"chat.thirty_days": "30日間", "chat.thirty_days": "30日間",
@@ -38,7 +38,7 @@
"composer.upload-picture": "画像をアップロード", "composer.upload-picture": "画像をアップロード",
"composer.upload-file": "ファイルをアップロード", "composer.upload-file": "ファイルをアップロード",
"composer.zen_mode": "Zen モード", "composer.zen_mode": "Zen モード",
"composer.select_category": "カテゴリを選択", "composer.select_category": "カテゴリを選択",
"bootbox.ok": "OK", "bootbox.ok": "OK",
"bootbox.cancel": "キャンセル", "bootbox.cancel": "キャンセル",
"bootbox.confirm": "確認", "bootbox.confirm": "確認",

View File

@@ -22,7 +22,7 @@
"user_posted_to": "<strong>%1</strong>さんは <strong>%2</strong>に返信しました。", "user_posted_to": "<strong>%1</strong>さんは <strong>%2</strong>に返信しました。",
"user_posted_to_dual": "<strong>%1</strong> と <strong>%2</strong> は、返信しました: <strong>%3</strong>", "user_posted_to_dual": "<strong>%1</strong> と <strong>%2</strong> は、返信しました: <strong>%3</strong>",
"user_posted_to_multiple": "<strong>%1</strong> と %2 または他のユーザーが返信しました: <strong>%3</strong>", "user_posted_to_multiple": "<strong>%1</strong> と %2 または他のユーザーが返信しました: <strong>%3</strong>",
"user_posted_topic": "<strong>%1</strong> が新しいトピックを投稿しました。: <strong>%2</strong>", "user_posted_topic": "<strong>%1</strong> が新しいスレッドを投稿しました。: <strong>%2</strong>",
"user_started_following_you": "<strong>%1</strong>があなたをフォローしました。", "user_started_following_you": "<strong>%1</strong>があなたをフォローしました。",
"user_started_following_you_dual": "<strong>%1</strong> と <strong>%2</strong> があなたをフォローしました。", "user_started_following_you_dual": "<strong>%1</strong> と <strong>%2</strong> があなたをフォローしました。",
"user_started_following_you_multiple": "<strong>%1</strong> と %2 または他のユーザーがあなたをフォローしました。", "user_started_following_you_multiple": "<strong>%1</strong> と %2 または他のユーザーがあなたをフォローしました。",

View File

@@ -1,12 +1,12 @@
{ {
"home": "ホーム", "home": "ホーム",
"unread": "未読トピック", "unread": "未読スレッド",
"popular-day": "日人気のトピック", "popular-day": "日人気のスレッド",
"popular-week": "今週人気のトピック", "popular-week": "今週人気のスレッド",
"popular-month": "今月人気のトピック", "popular-month": "今月人気のスレッド",
"popular-alltime": "人気のトピック", "popular-alltime": "人気のスレッド",
"recent": "最新スレッド", "recent": "最新スレッド",
"flagged-content": "Flagged Content", "flagged-content": "フラグ付きコンテンツ",
"ip-blacklist": "IPブラックリスト", "ip-blacklist": "IPブラックリスト",
"users/online": "オンラインのユーザー", "users/online": "オンラインのユーザー",
"users/latest": "最近のユーザー", "users/latest": "最近のユーザー",
@@ -17,7 +17,7 @@
"users/search": "ユーザーを検索", "users/search": "ユーザーを検索",
"notifications": "通知", "notifications": "通知",
"tags": "タグ", "tags": "タグ",
"tag": "トピックは\"%1\"の下にタグ付けされました", "tag": "スレッドは\"%1\"の下にタグ付けされました",
"register": "アカウントを登録", "register": "アカウントを登録",
"registration-complete": "登録完了", "registration-complete": "登録完了",
"login": "あなたのアカウントでログイン", "login": "あなたのアカウントでログイン",
@@ -27,8 +27,8 @@
"group": "%1 グループ", "group": "%1 グループ",
"chats": "チャット", "chats": "チャット",
"chat": "%1とチャットします", "chat": "%1とチャットします",
"flags": "Flags", "flags": "フラグ",
"flag-details": "Flag %1 Details", "flag-details": "フラグ1の詳細",
"account/edit": "編集中 \"%1\"", "account/edit": "編集中 \"%1\"",
"account/edit/password": "\"%1\"のパスワードを編集中", "account/edit/password": "\"%1\"のパスワードを編集中",
"account/edit/username": "\"%1\"のユーザー名を編集中", "account/edit/username": "\"%1\"のユーザー名を編集中",
@@ -41,7 +41,7 @@
"account/groups": "%1 グループ", "account/groups": "%1 グループ",
"account/bookmarks": "%1のブックマークされた投稿", "account/bookmarks": "%1のブックマークされた投稿",
"account/settings": "ユーザー設定", "account/settings": "ユーザー設定",
"account/watched": " %1がトピックを見ました。", "account/watched": " %1がスレッドを見ました。",
"account/upvoted": "%1が投稿を高評価しました", "account/upvoted": "%1が投稿を高評価しました",
"account/downvoted": "%1が投稿を低評価しました", "account/downvoted": "%1が投稿を低評価しました",
"account/best": "%1のベストな投稿", "account/best": "%1のベストな投稿",

View File

@@ -6,13 +6,13 @@
"year": "年", "year": "年",
"alltime": "全て", "alltime": "全て",
"no_recent_topics": "最近のスレッドはありません。", "no_recent_topics": "最近のスレッドはありません。",
"no_popular_topics": "人気トピックはありません。", "no_popular_topics": "人気スレッドはありません。",
"there-is-a-new-topic": "新しいトピックがあります。", "there-is-a-new-topic": "新しいスレッドがあります。",
"there-is-a-new-topic-and-a-new-post": "新しいトピックと投稿があります。", "there-is-a-new-topic-and-a-new-post": "新しいスレッドと投稿があります。",
"there-is-a-new-topic-and-new-posts": "新しいトピックと%1件の投稿があります。", "there-is-a-new-topic-and-new-posts": "新しいスレッドと%1件の投稿があります。",
"there-are-new-topics": "新しいトピックが%1個あります。", "there-are-new-topics": "新しいスレッドが%1個あります。",
"there-are-new-topics-and-a-new-post": "新しいトピックがと投稿が%1件あります。", "there-are-new-topics-and-a-new-post": "新しいスレッドがと投稿が%1件あります。",
"there-are-new-topics-and-new-posts": "新しいトピックが%1件、新しい投稿が%2件あります。", "there-are-new-topics-and-new-posts": "新しいスレッドが%1件、新しい投稿が%2件あります。",
"there-is-a-new-post": "新しい投稿があります。", "there-is-a-new-post": "新しい投稿があります。",
"there-are-new-posts": "新しい投稿が%1件あります。", "there-are-new-posts": "新しい投稿が%1件あります。",
"click-here-to-reload": "ここを押して、更新します。" "click-here-to-reload": "ここを押して、更新します。"

View File

@@ -8,7 +8,7 @@
"posted-by": "投稿者:", "posted-by": "投稿者:",
"in-categories": "カテゴリ", "in-categories": "カテゴリ",
"search-child-categories": "チャイルドカテゴリを検索する", "search-child-categories": "チャイルドカテゴリを検索する",
"has-tags": "Has tags", "has-tags": "タグあり",
"reply-count": "返信数", "reply-count": "返信数",
"at-least": "最低", "at-least": "最低",
"at-most": "一番", "at-most": "一番",
@@ -25,10 +25,10 @@
"one-year": "1年", "one-year": "1年",
"sort-by": "並び替え", "sort-by": "並び替え",
"last-reply-time": "最後の返信時間", "last-reply-time": "最後の返信時間",
"topic-title": "トピック題名", "topic-title": "スレッドのタイトル",
"number-of-replies": "返信数", "number-of-replies": "返信数",
"number-of-views": "表示数", "number-of-views": "表示数",
"topic-start-date": "トピック開始日", "topic-start-date": "スレッド開始日",
"username": "ユーザー名", "username": "ユーザー名",
"category": "カテゴリ", "category": "カテゴリ",
"descending": "降順", "descending": "降順",

View File

@@ -1,5 +1,5 @@
{ {
"no_tag_topics": "このタグに関連するトピックはありません。", "no_tag_topics": "このタグに関連するスレッドはありません。",
"tags": "タグ", "tags": "タグ",
"enter_tags_here": "ここにタグを入力します。一つのタグが%1から%2までの文字にして下さい。", "enter_tags_here": "ここにタグを入力します。一つのタグが%1から%2までの文字にして下さい。",
"enter_tags_here_short": "タグを入れます…", "enter_tags_here_short": "タグを入れます…",

View File

@@ -1,24 +1,24 @@
{ {
"topic": "トピック", "topic": "スレッド",
"topic_id": "トピックID", "topic_id": "スレッドID",
"topic_id_placeholder": "トピックIDを入力してください", "topic_id_placeholder": "スレッドIDを入力してください",
"no_topics_found": "トピックが見つかりません!", "no_topics_found": "スレッドが見つかりません!",
"no_posts_found": "投稿はありません!", "no_posts_found": "投稿はありません!",
"post_is_deleted": "この投稿が削除されました!", "post_is_deleted": "この投稿が削除されました!",
"topic_is_deleted": "このトピックは削除されました!", "topic_is_deleted": "このスレッドは削除されました!",
"profile": "プロフィール", "profile": "プロフィール",
"posted_by": "%1さんが投稿", "posted_by": "%1さんが投稿",
"posted_by_guest": "ゲストさんが投稿", "posted_by_guest": "ゲストさんが投稿",
"chat": "チャット", "chat": "チャット",
"notify_me": "このトピックに新しく投稿された時に通知する", "notify_me": "このスレッドに新しく投稿された時に通知する",
"quote": "引用", "quote": "引用",
"reply": "返信", "reply": "返信",
"replies_to_this_post": "返信: %1件", "replies_to_this_post": "返信: %1件",
"reply-as-topic": "トピックとして返信する", "reply-as-topic": "スレッドとして返信する",
"guest-login-reply": "投稿するのにログインして下さい", "guest-login-reply": "投稿するのにログインして下さい",
"edit": "編集", "edit": "編集",
"delete": "削除", "delete": "削除",
"purge": "粛清", "purge": "切り離し",
"restore": "リストア", "restore": "リストア",
"move": "移動", "move": "移動",
"fork": "フォーク", "fork": "フォーク",
@@ -47,26 +47,26 @@
"flag_manage_history_state": "%1に更新された状態", "flag_manage_history_state": "%1に更新された状態",
"flag_manage_history_notes": "フラグのメモが更新されました", "flag_manage_history_notes": "フラグのメモが更新されました",
"flag_manage_saved": "フラグの詳細が更新されました", "flag_manage_saved": "フラグの詳細が更新されました",
"deleted_message": "このトピックが削除されました。トピック管理権を持っているユーザーにしか読めません。", "deleted_message": "このスレッドが削除されました。スレッド管理権を持っているユーザーにしか読めません。",
"following_topic.message": "このスレッドが更新された際に通知を受け取ります。", "following_topic.message": "このスレッドが更新された際に通知を受け取ります。",
"not_following_topic.message": "あなたはトピック一覧を未読にすると、このトピックを参照できます。ただし誰かがこのトピックに投稿したときは通知を受信できません。", "not_following_topic.message": "あなたはスレッド一覧を未読にすると、このスレッドを参照できます。ただし誰かがこのスレッドに投稿したときは通知を受信できません。",
"ignoring_topic.message": "あなたは、これ以上この未読トピックを一覧に表示しておくことが出来なくなります。追跡するか、あなたの投稿が高評価を受けると通知されます。", "ignoring_topic.message": "あなたは、これ以上この未読スレッドを一覧に表示しておくことが出来なくなります。追跡するか、あなたの投稿が高評価を受けると通知されます。",
"login_to_subscribe": "このスレッドを購読するためにログインが必要です。", "login_to_subscribe": "このスレッドを購読するためにログインが必要です。",
"markAsUnreadForAll.success": "すべてのスレッドを未読にしました。", "markAsUnreadForAll.success": "すべてのスレッドを未読にしました。",
"mark_unread": "未読としてマーク", "mark_unread": "未読としてマーク",
"mark_unread.success": "トピックは未読にマークされました。", "mark_unread.success": "スレッドは未読にマークされました。",
"watch": "ウオッチ", "watch": "ウオッチ",
"unwatch": "ウオッチ解除", "unwatch": "ウオッチ解除",
"watch.title": "新しい投稿の通知を受ける", "watch.title": "新しい投稿の通知を受ける",
"unwatch.title": "このトピックの通知を停止します", "unwatch.title": "このスレッドの通知を停止します",
"share_this_post": "投稿を共有", "share_this_post": "投稿を共有",
"watching": "ウォッチ中", "watching": "ウォッチ中",
"not-watching": "ウォッチ中ではありません", "not-watching": "ウォッチ中ではありません",
"ignoring": "無視", "ignoring": "無視",
"watching.description": "新しい返信のお知らせです。<br/>未読のトピックを表示", "watching.description": "新しい返信のお知らせです。<br/>未読のスレッドを表示",
"not-watching.description": "新しく返信通知を受け取らない。<br/>カテゴリが無視されていない場合、未読のトピックを表示します。", "not-watching.description": "新しく返信通知を受け取らない。<br/>カテゴリが無視されていない場合、未読のスレッドを表示します。",
"ignoring.description": "新しく返信通知を受け取らない。<br/>未読のトピックは表示されません。", "ignoring.description": "新しく返信通知を受け取らない。<br/>未読のスレッドは表示されません。",
"thread_tools.title": "トピックのツール", "thread_tools.title": "スレッドツール",
"thread_tools.markAsUnreadForAll": "すべて未読にマーク", "thread_tools.markAsUnreadForAll": "すべて未読にマーク",
"thread_tools.pin": "スレッドを最上部に固定", "thread_tools.pin": "スレッドを最上部に固定",
"thread_tools.unpin": "スレッドの固定を解除", "thread_tools.unpin": "スレッドの固定を解除",
@@ -79,13 +79,13 @@
"thread_tools.delete-posts": "投稿を削除します", "thread_tools.delete-posts": "投稿を削除します",
"thread_tools.delete_confirm": "本当にこの投稿を削除しますか?", "thread_tools.delete_confirm": "本当にこの投稿を削除しますか?",
"thread_tools.restore": "スレッドをリストア", "thread_tools.restore": "スレッドをリストア",
"thread_tools.restore_confirm": "本当にこのトピックを戻しますか?", "thread_tools.restore_confirm": "本当にこのスレッドを戻しますか?",
"thread_tools.purge": "トピックを粛清します", "thread_tools.purge": "スレッドを切り離します",
"thread_tools.purge_confirm": "本当にこのトピックを粛清しますか?", "thread_tools.purge_confirm": "本当にこのスレッドを切り離しますか?",
"topic_move_success": "このスレッドを%1に移動しました。", "topic_move_success": "このスレッドを%1に移動しました。",
"post_delete_confirm": "本当にこの投稿を削除しますか?", "post_delete_confirm": "本当にこの投稿を削除しますか?",
"post_restore_confirm": "本当にこの投稿を元に戻しますか?", "post_restore_confirm": "本当にこの投稿を元に戻しますか?",
"post_purge_confirm": "本当にこの投稿を粛清しますか?", "post_purge_confirm": "本当にこの投稿を切り離しますか?",
"load_categories": "板をローディング中...", "load_categories": "板をローディング中...",
"disabled_categories_note": "使用不可の板はグレーに表示されます。", "disabled_categories_note": "使用不可の板はグレーに表示されます。",
"confirm_move": "移動", "confirm_move": "移動",
@@ -95,7 +95,7 @@
"bookmarks.has_no_bookmarks": "まだ投稿をブックマークしていません。", "bookmarks.has_no_bookmarks": "まだ投稿をブックマークしていません。",
"loading_more_posts": "もっと見る", "loading_more_posts": "もっと見る",
"move_topic": "スレッドを移動", "move_topic": "スレッドを移動",
"move_topics": "トピックを移動する", "move_topics": "スレッドを移動する",
"move_post": "投稿を移動", "move_post": "投稿を移動",
"post_moved": "投稿を移動しました!", "post_moved": "投稿を移動しました!",
"fork_topic": "スレッドをフォーク", "fork_topic": "スレッドをフォーク",
@@ -103,9 +103,9 @@
"fork_topic_instruction": "フォークしたい投稿をクリックして", "fork_topic_instruction": "フォークしたい投稿をクリックして",
"fork_no_pids": "投稿が選択されていません!", "fork_no_pids": "投稿が選択されていません!",
"fork_pid_count": "%1 投稿(s)が選択されました", "fork_pid_count": "%1 投稿(s)が選択されました",
"fork_success": "トピックをフォークするのに成功しました。ここを押して、このフォークしたトピックに行きます。", "fork_success": "スレッドをフォークするのに成功しました。ここを押して、このフォークしたスレッドに行きます。",
"delete_posts_instruction": "削除または粛清するには、当てはまる投稿を押してください", "delete_posts_instruction": "削除または切り離するには、当てはまる投稿を押してください",
"composer.title_placeholder": "スレッドのタイトルを入力して...", "composer.title_placeholder": "スレッドのタイトルを入力...",
"composer.handle_placeholder": "名前", "composer.handle_placeholder": "名前",
"composer.discard": "破棄する", "composer.discard": "破棄する",
"composer.submit": "保存する", "composer.submit": "保存する",
@@ -127,10 +127,10 @@
"newest_to_oldest": "古い順に", "newest_to_oldest": "古い順に",
"most_votes": "最高評価", "most_votes": "最高評価",
"most_posts": "最高投稿", "most_posts": "最高投稿",
"stale.title": "新しいトピックを作りますか?", "stale.title": "新しいスレッドを作りますか?",
"stale.warning": "あなたが返信しようとしてるトピックが古いトピックです。新しいトピックを作って、そしてこのトピックが参考として入れた方を勧めます。そうしますか?", "stale.warning": "あなたが返信しようとしてるスレッドが古いスレッドです。新しいスレッドを作って、そしてこのスレッドが参考として入れた方を勧めます。そうしますか?",
"stale.create": "新しいトピックを作ります。", "stale.create": "新しいスレッドを作ります。",
"stale.reply_anyway": "とにかく、このトピックに返信します", "stale.reply_anyway": "とにかく、このスレッドに返信します",
"link_back": "返信: [%1](%2)", "link_back": "返信: [%1](%2)",
"spam": "スパム", "spam": "スパム",
"offensive": "攻撃", "offensive": "攻撃",

View File

@@ -1,13 +1,13 @@
{ {
"title": "未読", "title": "未読",
"no_unread_topics": "未読のトピックがあります。", "no_unread_topics": "未読のスレッドがあります。",
"load_more": "もっと見る", "load_more": "もっと見る",
"mark_as_read": "既読にする", "mark_as_read": "既読にする",
"selected": "選択済み", "selected": "選択済み",
"all": "全て", "all": "全て",
"all_categories": "全てのカテゴリ", "all_categories": "全てのカテゴリ",
"topics_marked_as_read.success": "すべてのスレッドを既読にしました。", "topics_marked_as_read.success": "すべてのスレッドを既読にしました。",
"all-topics": "すべてのトピック", "all-topics": "すべてのスレッド",
"new-topics": "新しいトピック", "new-topics": "新しいスレッド",
"watched-topics": "トピックをウォッチしました" "watched-topics": "スレッドをウォッチしました"
} }

View File

@@ -63,7 +63,7 @@
"upload_a_picture": "画像をアップロード", "upload_a_picture": "画像をアップロード",
"remove_uploaded_picture": "アップした写真を取り消します", "remove_uploaded_picture": "アップした写真を取り消します",
"upload_cover_picture": "カバー写真をアップロード", "upload_cover_picture": "カバー写真をアップロード",
"remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?", "remove_cover_picture_confirm": "カバー写真を削除してもよろしいですか?",
"settings": "設定", "settings": "設定",
"show_email": "メールアドレスを表示", "show_email": "メールアドレスを表示",
"show_fullname": "フルネームで表示", "show_fullname": "フルネームで表示",
@@ -75,19 +75,19 @@
"digest_weekly": "ウィークリー", "digest_weekly": "ウィークリー",
"digest_monthly": "マンスリー", "digest_monthly": "マンスリー",
"send_chat_notifications": "オンラインではない時に新しいチャットメッセージを受信した場合、通知メールを送信する。", "send_chat_notifications": "オンラインではない時に新しいチャットメッセージを受信した場合、通知メールを送信する。",
"send_post_notifications": "購読中のトピックに返信があった場合、メールで通知する。", "send_post_notifications": "購読中のスレッドに返信があった場合、メールで通知する。",
"settings-require-reload": "変化がありましてブラウザを更新する必要があります。ここを押して、ページ更新します。", "settings-require-reload": "変化がありましてブラウザを更新する必要があります。ここを押して、ページ更新します。",
"has_no_follower": "フォロワーはまだいません :(", "has_no_follower": "フォロワーはまだいません :(",
"follows_no_one": "フォロー中のユーザーはまだいません :(", "follows_no_one": "フォロー中のユーザーはまだいません :(",
"has_no_posts": "このユーザーはまだ一つも投稿していません", "has_no_posts": "このユーザーはまだ一つも投稿していません",
"has_no_topics": "このユーザーはまだ一つもトピックを作っていません", "has_no_topics": "このユーザーはまだ一つもスレッドを作っていません",
"has_no_watched_topics": "このユーザーはまだ一つもトピックをウッチしていません", "has_no_watched_topics": "このユーザーはまだ一つもスレッドをウッチしていません",
"has_no_upvoted_posts": "このユーザーはまだ一つも投稿に高評価を付けていません。", "has_no_upvoted_posts": "このユーザーはまだ一つも投稿に高評価を付けていません。",
"has_no_downvoted_posts": "このユーザーはまだ一つも投稿に低評価を付けていません。", "has_no_downvoted_posts": "このユーザーはまだ一つも投稿に低評価を付けていません。",
"has_no_voted_posts": "このユーザーは投稿を評価していません。", "has_no_voted_posts": "このユーザーは投稿を評価していません。",
"email_hidden": "メールアドレスを非表示", "email_hidden": "メールアドレスを非表示",
"hidden": "非表示", "hidden": "非表示",
"paginate_description": "無限スクロールの代わりに、投稿やトピックをページ別で切り替える。", "paginate_description": "無限スクロールの代わりに、投稿やスレッドをページ別で切り替える。",
"topics_per_page": "ページごとのスレッド数", "topics_per_page": "ページごとのスレッド数",
"posts_per_page": "ページごとの投稿数", "posts_per_page": "ページごとの投稿数",
"notification_sounds": "通知の時に音を鳴らします", "notification_sounds": "通知の時に音を鳴らします",
@@ -98,13 +98,13 @@
"no-sound": "無音", "no-sound": "無音",
"browsing": "ブラウジングの設定", "browsing": "ブラウジングの設定",
"open_links_in_new_tab": "外部リンクを新しいタブで開く", "open_links_in_new_tab": "外部リンクを新しいタブで開く",
"enable_topic_searching": "インートピックの検索を有効にします", "enable_topic_searching": "インースレッドの検索を有効にします",
"topic_search_help": "有効にしたら、インートピックの検索はブラウザの既定機能を無視して、スクリーンに示したよりトピック内からの全部を検索します", "topic_search_help": "有効にしたら、インースレッドの検索はブラウザの既定機能を無視して、スクリーンに示したよりスレッド内からの全部を検索します",
"delay_image_loading": "画像読み込みを遅延させる", "delay_image_loading": "画像読み込みを遅延させる",
"image_load_delay_help": "有効の場合、トピック内の画像はスクロールされるまで読み込みません", "image_load_delay_help": "有効の場合、スレッド内の画像はスクロールされるまで読み込みません",
"scroll_to_my_post": "返信を投稿した後、新しい投稿を表示する", "scroll_to_my_post": "返信を投稿した後、新しい投稿を表示する",
"follow_topics_you_reply_to": "あなたが返信するトピックをウォッチ", "follow_topics_you_reply_to": "あなたが返信するスレッドをウォッチ",
"follow_topics_you_create": "あなたが作成したトピックをウォッチする", "follow_topics_you_create": "あなたが作成したスレッドをウォッチする",
"grouptitle": "グループ題名", "grouptitle": "グループ題名",
"no-group-title": "グループ名がありません", "no-group-title": "グループ名がありません",
"select-skin": "スキンを選んで下さい", "select-skin": "スキンを選んで下さい",

View File

@@ -12,9 +12,9 @@
"invite": "招待", "invite": "招待",
"invitation-email-sent": "招待メールが%1に送られました。", "invitation-email-sent": "招待メールが%1に送られました。",
"user_list": "ユーザー一覧", "user_list": "ユーザー一覧",
"recent_topics": "最新トピック", "recent_topics": "最新スレッド",
"popular_topics": "人気トピック", "popular_topics": "人気のスレッド",
"unread_topics": "未読トピック", "unread_topics": "未読スレッド",
"categories": "カテゴリ", "categories": "カテゴリ",
"tags": "タグ", "tags": "タグ",
"no-users-found": "ユーザーが見つかりません!" "no-users-found": "ユーザーが見つかりません!"

View File

@@ -1,14 +1,14 @@
{ {
"figure-x": "Figure %1", "figure-x": "Błąd %1",
"error-events-per-day": "<code>%1</code> events per day", "error-events-per-day": "<code>%1</code> wydarzeń dziennie",
"error.404": "404 Nie znaleziono", "error.404": "404 Nie znaleziono",
"error.503": "503 Usługa niedostępna", "error.503": "503 Usługa niedostępna",
"manage-error-log": "Zarządzaj dziennikiem błędów", "manage-error-log": "Zarządzaj dziennikiem błędów",
"export-error-log": "Eksportuj dziennik błędów (CSV)", "export-error-log": "Eksportuj dziennik błędów (CSV)",
"clear-error-log": "Wyczyść dziennik błędów", "clear-error-log": "Wyczyść dziennik błędów",
"route": "Route", "route": "Scieżka",
"count": "Count", "count": "Licznik",
"no-routes-not-found": "Hooray! There are no routes that were not found.", "no-routes-not-found": "Brawo! Nie znaleziono błędów.",
"clear404-confirm": "Czy chcesz wyczyścić dziennik błędów 404?", "clear404-confirm": "Czy chcesz wyczyścić dziennik błędów 404?",
"clear404-success": "Wyczyszczono błędy \"404 Nie znaleziono\"" "clear404-success": "Wyczyszczono błędy \"404 Nie znaleziono\""
} }

View File

@@ -2,6 +2,6 @@
"logs": "Logi", "logs": "Logi",
"control-panel": "Logi Panelu Kontroli", "control-panel": "Logi Panelu Kontroli",
"reload": "Przeładuj logi", "reload": "Przeładuj logi",
"clear": "Clear Logs", "clear": "Wyczyść Logi",
"clear-success": "Logs Cleared!" "clear-success": "Logi Wyczyszczone!"
} }

View File

@@ -2,10 +2,10 @@
"checking-for-installed": "Sprawdzanie zainstalowanego stylu...", "checking-for-installed": "Sprawdzanie zainstalowanego stylu...",
"homepage": "Strona główna", "homepage": "Strona główna",
"select-theme": "Wybierz Styl", "select-theme": "Wybierz Styl",
"current-theme": "Current Theme", "current-theme": "Aktualny Styl",
"no-themes": "No installed themes found", "no-themes": "Brak zainstalowanych stylów",
"revert-confirm": "Are you sure you wish to restore the default NodeBB theme?", "revert-confirm": "Czy na pewno chcesz przywrócić domyślny styl NodeBB?",
"theme-changed": "Theme Changed", "theme-changed": "Styl Zmieniony",
"revert-success": "You have successfully reverted your NodeBB back to it's default theme.", "revert-success": "Pomyślnie przywrócono domyślny styl NodeBB.",
"restart-to-activate": "Please restart your NodeBB to fully activate this theme" "restart-to-activate": "Proszę zrestartować NodeBB, aby styl poprawnie działał."
} }

View File

@@ -1,45 +1,45 @@
{ {
"installed": "Zainstalowane", "installed": "Zainstalowane",
"active": "Active", "active": "Aktywne",
"inactive": "Nieaktywny", "inactive": "Nieaktywny",
"out-of-date": "Out of Date", "out-of-date": "Nieaktualne",
"none-found": "No plugins found.", "none-found": "Nie znaleziono pluginów",
"none-active": "No Active Plugins", "none-active": "Brak aktywnych pluginów",
"find-plugins": "Find Plugins", "find-plugins": "Znajdź plugin",
"plugin-search": "Plugin Search", "plugin-search": "Szukaj pluginów",
"plugin-search-placeholder": "Search for plugin...", "plugin-search-placeholder": "Szukaj pluginów...",
"reorder-plugins": "Re-order Plugins", "reorder-plugins": "Posortuj Pluginy",
"order-active": "Order Active Plugins", "order-active": "Posortuj Aktywne Pluginy",
"dev-interested": "Interested in writing plugins for NodeBB?", "dev-interested": "Zainteresowany pisanie pluginów do NodeBB??",
"docs-info": "Full documentation regarding plugin authoring can be found in the <a target=\"_blank\" href=\"https://docs.nodebb.org/en/latest/plugins/create.html\">NodeBB Docs Portal</a>.", "docs-info": "Pełna dokumentacje dotycząca pisania pluginów znajduje się tutaj <a target=\"_blank\" href=\"https://docs.nodebb.org/en/latest/plugins/create.html\">NodeBB Docs Portal</a>.",
"order.description": "Certain plugins work ideally when they are initialised before/after other plugins.", "order.description": "Certain plugins work ideally when they are initialised before/after other plugins.",
"order.explanation": "Plugins load in the order specified here, from top to bottom", "order.explanation": "Plugins load in the order specified here, from top to bottom",
"plugin-item.themes": "Themes", "plugin-item.themes": "Style",
"plugin-item.deactivate": "Deactivate", "plugin-item.deactivate": "Dezaktywować",
"plugin-item.activate": "Activate", "plugin-item.activate": "Aktywne",
"plugin-item.install": "Install", "plugin-item.install": "Zainstaluj",
"plugin-item.uninstall": "Uninstall", "plugin-item.uninstall": "Odinstaluj",
"plugin-item.settings": "Settings", "plugin-item.settings": "Ustawienia",
"plugin-item.installed": "Installed", "plugin-item.installed": "Zainstalowane",
"plugin-item.latest": "Latest", "plugin-item.latest": "Ostatnie",
"plugin-item.upgrade": "Upgrade", "plugin-item.upgrade": "Zaktualizuj",
"plugin-item.more-info": "For more information:", "plugin-item.more-info": "Po więcej informacji:",
"plugin-item.unknown": "Unknown", "plugin-item.unknown": "Nieznane",
"plugin-item.unknown-explanation": "The state of this plugin could not be determined, possibly due to a misconfiguration error.", "plugin-item.unknown-explanation": "The state of this plugin could not be determined, possibly due to a misconfiguration error.",
"alert.enabled": "Plugin Enabled", "alert.enabled": "Plugin Włączony",
"alert.disabled": "Plugin Disabled", "alert.disabled": "Plugin Wyłączony",
"alert.upgraded": "Plugin Upgraded", "alert.upgraded": "Plugin Zaktualizowany",
"alert.installed": "Plugin Installed", "alert.installed": "Plugin Zainstalowany",
"alert.uninstalled": "Plugin Uninstalled", "alert.uninstalled": "Plugin Odinstalowany",
"alert.activate-success": "Please restart your NodeBB to fully activate this plugin", "alert.activate-success": "Proszę zrestartować NodeBB, aby poprawnie działał plugin.",
"alert.deactivate-success": "Plugin successfully deactivated", "alert.deactivate-success": "Plugin pomyślnie dezaktywowany",
"alert.upgrade-success": "Please reload your NodeBB to fully upgrade this plugin", "alert.upgrade-success": "Proszę przeładować NodeBB, aby poprawnie działał plugin",
"alert.install-success": "Plugin successfully installed, please activate the plugin.", "alert.install-success": "Plugin pomyślnie zainstalowany, proszę aktywować go.",
"alert.uninstall-success": "The plugin has been successfully deactivated and uninstalled.", "alert.uninstall-success": "Plugin został pomyślnie zdezaktywowany oraz odinstalowany.",
"alert.suggest-error": "<p>NodeBB could not reach the package manager, proceed with installation of latest version?</p><div class=\"alert alert-danger\"><strong>Server returned (%1)</strong>: %2</div>", "alert.suggest-error": "<p>NodeBB could not reach the package manager, proceed with installation of latest version?</p><div class=\"alert alert-danger\"><strong>Server returned (%1)</strong>: %2</div>",
"alert.package-manager-unreachable": "<p>NodeBB could not reach the package manager, an upgrade is not suggested at this time.</p>", "alert.package-manager-unreachable": "<p>NodeBB could not reach the package manager, an upgrade is not suggested at this time.</p>",
"alert.incompatible": "<p>Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.</p>", "alert.incompatible": "<p>Your version of NodeBB (v%1) is only cleared to upgrade to v%2 of this plugin. Please update your NodeBB if you wish to install a newer version of this plugin.</p>",

View File

@@ -1,17 +1,17 @@
{ {
"rewards": "Nagrody", "rewards": "Nagrody",
"condition-if-users": "If User's", "condition-if-users": "Jeżeli Użytkownik",
"condition-is": "Jest:", "condition-is": "Jest:",
"condition-then": "Then:", "condition-then": "To:",
"max-claims": "Amount of times reward is claimable", "max-claims": "Ile razy nagroda może zostać przyznana",
"zero-infinite": "Enter 0 for infinite", "zero-infinite": "Wpisz 0, aby nieskończona ilość razy",
"delete": "Delete", "delete": "Usuń",
"enable": "Enable", "enable": "Włącz",
"disable": "Disable", "disable": "Wyłącz",
"control-panel": "Rewards Control", "control-panel": "Ustawienia Nagród",
"new-reward": "New Reward", "new-reward": "Nowa Nagroda",
"alert.delete-success": "Successfully deleted reward", "alert.delete-success": "Pomyślnie usunięto nagrodę",
"alert.no-inputs-found": "Illegal reward - no inputs found!", "alert.no-inputs-found": "Niepoprawnie dodana nagroda ",
"alert.save-success": "Successfully saved rewards" "alert.save-success": "Pomyślnie zapisano nagrodę"
} }

View File

@@ -4,7 +4,7 @@
"none-installed": "No widgets found! Activate the essential widgets plugin in the <a href=\"%1\">plugins</a> control panel.", "none-installed": "No widgets found! Activate the essential widgets plugin in the <a href=\"%1\">plugins</a> control panel.",
"containers.available": "Available Containers", "containers.available": "Available Containers",
"containers.explanation": "Drag and drop on top of any active widget", "containers.explanation": "Drag and drop on top of any active widget",
"containers.none": "None", "containers.none": "Żadna",
"container.well": "Well", "container.well": "Well",
"container.jumbotron": "Jumbotron", "container.jumbotron": "Jumbotron",
"container.panel": "Panel", "container.panel": "Panel",

View File

@@ -1,7 +1,7 @@
{ {
"home-page": "Strona Główna", "home-page": "Strona Główna",
"description": "Choose what page is shown when users navigate to the root URL of your forum.", "description": "Wybierz stronę główną dla Twojego forum.",
"home-page-route": "Home Page Route", "home-page-route": "Strona Główna",
"custom-route": "Custom Route", "custom-route": "Niestandardowy Adres",
"allow-user-home-pages": "Allow User Home Pages" "allow-user-home-pages": "Pozwól użytkownikom na zmienienie strony głownej"
} }

View File

@@ -1,5 +1,5 @@
{ {
"language-settings": "Ustawienia Językowe", "language-settings": "Ustawienia Językowe",
"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.", "description": "Domyślnym językiem określa ustawienia języka dla wszystkich użytkowników, którzy odwiedzają forum. <br /> Użytkownicy mogą zmienić domyślny język, w ustawieniach konta.",
"default-language": "Default Language" "default-language": "Domyślny Język"
} }

View File

@@ -1,24 +1,24 @@
{ {
"icon": "Ikona:", "icon": "Ikona:",
"change-icon": "zmień", "change-icon": "zmień",
"route": "Route:", "route": "Ścieżka:",
"tooltip": "Tooltip:", "tooltip": "Tooltip:",
"text": "Text:", "text": "Tekst:",
"text-class": "Text Class: <small>optional</small>", "text-class": "Text Class: <small>optional</small>",
"id": "ID: <small>optional</small>", "id": "ID: <small>optional</small>",
"properties": "Properties:", "properties": "Properties:",
"only-admins": "Only display to Admins", "only-admins": "Pokaż tylko dla administracji",
"only-global-mods-and-admins": "Only display to Global Moderators and Admins", "only-global-mods-and-admins": "Pokaż tylko dla globalnych moderatorów oraz administracji",
"only-logged-in": "Only display to logged in users", "only-logged-in": "Pokaż tylko dla zalogowanych użytkowników",
"open-new-window": "Open in a new window", "open-new-window": "Otwórz w nowym oknie",
"installed-plugins-required": "Installed Plugins Required:", "installed-plugins-required": "Installed Plugins Required:",
"search-plugin": "Search plugin", "search-plugin": "Search plugin",
"btn.delete": "Delete", "btn.delete": "Usunąć",
"btn.disable": "Disable", "btn.disable": "Wyłącz",
"btn.enable": "Enable", "btn.enable": "Włącz",
"available-menu-items": "Available Menu Items", "available-menu-items": "Available Menu Items",
"custom-route": "Custom Route", "custom-route": "Custom Route",

View File

@@ -1,5 +1,5 @@
{ {
"post-sharing": "Post Sharing", "post-sharing": "Udostępnianie postów",
"info-plugins-additional": "Plugins can add additional networks for sharing posts.", "info-plugins-additional": "Plugins can add additional networks for sharing posts.",
"save-success": "Successfully saved Post Sharing Networks!" "save-success": "Successfully saved Post Sharing Networks!"
} }

View File

@@ -1,9 +1,9 @@
{ {
"notifications": "Powiadomienia", "notifications": "Powiadomienia",
"chat-messages": "Chat Messages", "chat-messages": "Wiadomości Czatu",
"play-sound": "Play", "play-sound": "Otwórz",
"incoming-message": "Incoming Message", "incoming-message": "Przychodzące Wiadomości",
"outgoing-message": "Outgoing Message", "outgoing-message": "Wychodzące Wiadomości",
"upload-new-sound": "Upload New Sound", "upload-new-sound": "Prześlij Nowy Dźwięk",
"saved": "Settings Saved" "saved": "Ustawienia Zapisane"
} }

View File

@@ -1,68 +1,68 @@
{ {
"settings": "Ustawienia kategorii", "settings": "Ustawienia kategorii",
"privileges": "Privileges", "privileges": "Przywileje",
"name": "Nazwa Kategorii", "name": "Nazwa Kategorii",
"description": "Category Description", "description": "Opis kategorii",
"bg-color": "Background Colour", "bg-color": "Kolor tła",
"text-color": "Text Colour", "text-color": "Kolor tekstu",
"bg-image-size": "Background Image Size", "bg-image-size": "Wielkość obrazka tła",
"custom-class": "Custom Class", "custom-class": "Niestandardowa klasa",
"num-recent-replies": "# of Recent Replies", "num-recent-replies": "# z Ostatnich Odpowiedzi",
"ext-link": "External Link", "ext-link": "Zewnętrzny Link",
"upload-image": "Upload Image", "upload-image": "Prześlij Obrazek",
"delete-image": "Remove", "delete-image": "Usunąć",
"category-image": "Category Image", "category-image": "Obrazek Kategorii",
"parent-category": "Parent Category", "parent-category": "Kategoria nadrzędna",
"optional-parent-category": "(Optional) Parent Category", "optional-parent-category": "(Opcjonalne) Kategoria nadrzędna",
"parent-category-none": "(None)", "parent-category-none": "(Żadna)",
"copy-settings": "Copy Settings From", "copy-settings": "Skopiować ustawienia z",
"optional-clone-settings": "(Optional) Clone Settings From Category", "optional-clone-settings": "(Opcjonalnie) Spoiowanie ustawień z kategorii",
"purge": "Purge Category", "purge": "Usuń kategorie",
"enable": "Enable", "enable": "Włączona",
"disable": "Disable", "disable": "Wyłączona",
"edit": "Edit", "edit": "Edytuj",
"select-category": "Select Category", "select-category": "Wybierz Kategorie",
"set-parent-category": "Set Parent Category", "set-parent-category": "Ustaw nadrzędną kategorie",
"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.description": "Można skonfigurować uprawnienia kontroli dostępu do tej kategorii w tej sekcji. Uprawnienia mogą być przyznawane dla każdego użytkownika lub dla poszczególnych grup. Możesz dodać nowego użytkownika do tej tabeli, wyszukując je w poniższym formularzu.",
"privileges.warning": "<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting these settings.", "privileges.warning": "<strong>Uwaga</strong>: Przywileje zapisują się natychmiastowo. Nie ma znaczenie czy klikniesz zapisz.",
"privileges.section-viewing": "Viewing Privileges", "privileges.section-viewing": "Lista Przywilejów",
"privileges.section-posting": "Posting Privileges", "privileges.section-posting": "Przywileje do pisania",
"privileges.section-moderation": "Moderation Privileges", "privileges.section-moderation": "Przywileje do moderowania",
"privileges.section-user": "User", "privileges.section-user": "Użytkownik",
"privileges.search-user": "Add User", "privileges.search-user": "Dodaj użytkownika",
"privileges.no-users": "No user-specific privileges in this category.", "privileges.no-users": "No user-specific privileges in this category.",
"privileges.section-group": "Group", "privileges.section-group": "Grupa",
"privileges.group-private": "This group is private", "privileges.group-private": "Ta grupa jest prywatna",
"privileges.search-group": "Add Group", "privileges.search-group": "Dodaj grupę",
"privileges.copy-to-children": "Copy to Children", "privileges.copy-to-children": "Skopiuj z podrzędnej",
"privileges.copy-from-category": "Copy from Category", "privileges.copy-from-category": "Skopiuj z kategorii",
"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.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.",
"analytics.back": "Back to Categories List", "analytics.back": "Wróć do listy kategorii",
"analytics.title": "Analytics for \"%1\" category", "analytics.title": "Analityka dla \"%1\" kategorii",
"analytics.pageviews-hourly": "<strong>Figure 1</strong> &ndash; Hourly page views for this category</small>", "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.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.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.posts-daily": "<strong>Figure 4</strong> &ndash; Daily posts made in this category</small>",
"alert.created": "Created", "alert.created": "Stworzony",
"alert.create-success": "Category successfully created!", "alert.create-success": "Kategoria pomyślnie dodana!",
"alert.none-active": "You have no active categories.", "alert.none-active": "Nie masz aktywnych kategorii.",
"alert.create": "Create a Category", "alert.create": "Stwórz kategorie",
"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-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.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.purge-success": "Kategoria usunięta!",
"alert.copy-success": "Settings Copied!", "alert.copy-success": "Ustawienie skopiowane!",
"alert.set-parent-category": "Set Parent Category", "alert.set-parent-category": "Ustaw nadrzędną kategorie",
"alert.updated": "Updated Categories", "alert.updated": "Zaktualizuj kategorie",
"alert.updated-success": "ID kategorii %1 pomyślnie zaktualizowano.", "alert.updated-success": "ID kategorii %1 pomyślnie zaktualizowano.",
"alert.upload-image": "Upload category image", "alert.upload-image": "Prześlij obrazek kategorii",
"alert.find-user": "Find a User", "alert.find-user": "Znajdź użytkownika",
"alert.user-search": "Search for a user here...", "alert.user-search": "Szukaj użytkownika tutaj...",
"alert.find-group": "Find a Group", "alert.find-group": "Szukaj grupę",
"alert.group-search": "Search for a group here..." "alert.group-search": "Szukaj grupę tutaj..."
} }

View File

@@ -1,34 +1,34 @@
{ {
"name": "Nazwa Grupy", "name": "Nazwa Grupy",
"description": "Group Description", "description": "Opis Grupy",
"system": "System Grup", "system": "System Grup",
"edit": "Edit", "edit": "Edytuj",
"search-placeholder": "Search", "search-placeholder": "Szukaj",
"create": "Create Group", "create": "Stwórz Grupę",
"description-placeholder": "A short description about your group", "description-placeholder": "Krótki opisz grupy",
"create-button": "Create", "create-button": "Stwórz",
"alerts.create-failure": "<strong>Uh-Oh</strong><p>There was a problem creating your group. Please try again later!</p>", "alerts.create-failure": "<strong>Uh-Oh</strong><p>Wystąpił problem podczas tworzenia grupy. Spróbuj ponownie później</p>",
"alerts.confirm-delete": "Are you sure you wish to delete this group?", "alerts.confirm-delete": "Czy na pewno chcesz usunąć tę grupę?",
"edit.name": "Name", "edit.name": "Nazwa",
"edit.description": "Description", "edit.description": "Opis",
"edit.user-title": "Title of Members", "edit.user-title": "Tytuł Członków ",
"edit.icon": "Group Icon", "edit.icon": "Ikona Grupy",
"edit.label-color": "Group Label Color", "edit.label-color": "Kolor Etykiety Grupy",
"edit.show-badge": "Show Badge", "edit.show-badge": "Pokaż Etykietę",
"edit.private-details": "If enabled, joining of groups requires approval from a group owner.", "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.private-override": "Ostrzeżenie: Prywatne grupy są wyłączone w ustawieniach, co powoduje przesłonięcia opcji.",
"edit.disable-requests": "Disable join requests", "edit.disable-requests": "Wyłącz prośby o dołączenie",
"edit.hidden": "Hidden", "edit.hidden": "Ukryta",
"edit.hidden-details": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually", "edit.hidden-details": "Jeśli opcja jest włączona, grupa ta nie będzie widoczna dla użytkowników.",
"edit.add-user": "Add User to Group", "edit.add-user": "Dodaj użytkownika do grupy",
"edit.add-user-search": "Search Users", "edit.add-user-search": "Szukaj Użytkownika",
"edit.members": "Member List", "edit.members": "Lista Członków",
"control-panel": "Groups Control Panel", "control-panel": "Panel sterowania",
"revert": "Revert", "revert": "Cofnij",
"edit.no-users-found": "No Users Found", "edit.no-users-found": "Nie znaleziono użytkowników",
"edit.confirm-remove-user": "Are you sure you want to remove this user?", "edit.confirm-remove-user": "Jesteś pewny, że chcesz usunąć tego użytkownika?",
"edit.save-success": "Changes saved!" "edit.save-success": "Zmiany zapisane!"
} }

View File

@@ -1,75 +1,75 @@
{ {
"section-general": "General", "section-general": "Ogólne",
"general/dashboard": "Dashboard", "general/dashboard": "Główna",
"general/homepage": "Home Page", "general/homepage": "Strona Startowa",
"general/navigation": "Navigation", "general/navigation": "Nawigacja",
"general/languages": "Languages", "general/languages": "Język",
"general/sounds": "Sounds", "general/sounds": "Dźwięki",
"general/social": "Social", "general/social": "Social",
"section-manage": "Manage", "section-manage": "Zarządzanie",
"manage/categories": "Categories", "manage/categories": "Kategorie",
"manage/tags": "Tags", "manage/tags": "Tagi",
"manage/users": "Users", "manage/users": "Użytkownicy",
"manage/registration": "Registration Queue", "manage/registration": "Kolejka Rejestracji",
"manage/groups": "Groups", "manage/groups": "Grupy",
"manage/flags": "Flags", "manage/flags": "Flagi",
"manage/ip-blacklist": "IP Blacklist", "manage/ip-blacklist": "Czarna Lista IP",
"section-settings": "Settings", "section-settings": "Ustawienia",
"settings/general": "General", "settings/general": "Ogólne",
"settings/reputation": "Reputation", "settings/reputation": "Reputacja",
"settings/email": "Email", "settings/email": "Email",
"settings/user": "User", "settings/user": "Użytkownik",
"settings/group": "Group", "settings/group": "Grupa",
"settings/guest": "Guests", "settings/guest": "Gość",
"settings/uploads": "Uploads", "settings/uploads": "Przesłane",
"settings/post": "Post", "settings/post": "Posty",
"settings/chat": "Chat", "settings/chat": "Czat",
"settings/pagination": "Pagination", "settings/pagination": "Paginacja",
"settings/tags": "Tags", "settings/tags": "Tagi",
"settings/notifications": "Notifications", "settings/notifications": "Powiadomienia",
"settings/cookies": "Cookies", "settings/cookies": "Ciasteczka",
"settings/web-crawler": "Web Crawler", "settings/web-crawler": "Web Crawler",
"settings/sockets": "Sockets", "settings/sockets": "Sockets",
"settings/advanced": "Advanced", "settings/advanced": "Zaawansowane",
"settings.page-title": "%1 Settings", "settings.page-title": "%1 Ustawienia",
"section-appearance": "Appearance", "section-appearance": "Wygląd",
"appearance/themes": "Themes", "appearance/themes": "Style",
"appearance/skins": "Skins", "appearance/skins": "Skórki",
"appearance/customise": "Custom HTML & CSS", "appearance/customise": "Niestandardowy HTML & CSS",
"section-extend": "Extend", "section-extend": "Extend",
"extend/plugins": "Plugins", "extend/plugins": "Pluginy",
"extend/widgets": "Widgets", "extend/widgets": "Widgety",
"extend/rewards": "Rewards", "extend/rewards": "Nagrody",
"section-social-auth": "Social Authentication", "section-social-auth": "Alternatywne Logowanie",
"section-plugins": "Plugins", "section-plugins": "Pluginy",
"extend/plugins.install": "Install Plugins", "extend/plugins.install": "Zainstalowane Pluginy",
"section-advanced": "Advanced", "section-advanced": "Zaawansowane",
"advanced/database": "Database", "advanced/database": "Baza Danych",
"advanced/events": "Events", "advanced/events": "Wydarzenia",
"advanced/logs": "Logs", "advanced/logs": "Logi",
"advanced/errors": "Errors", "advanced/errors": "Błędy",
"advanced/cache": "Cache", "advanced/cache": "Pamięć",
"development/logger": "Logger", "development/logger": "Logger",
"development/info": "Info", "development/info": "Informacja",
"reload-forum": "Reload Forum", "reload-forum": "Przeładuj Forum",
"restart-forum": "Restart Forum", "restart-forum": "Restartuj Forum",
"logout": "Log out", "logout": "Wyloguj się",
"view-forum": "View Forum", "view-forum": "Zobacz Forum",
"search.placeholder": "Search...", "search.placeholder": "Szukaj...",
"search.no-results": "No results...", "search.no-results": "Brak rezultatów...",
"search.search-forum": "Search the forum for <strong></strong>", "search.search-forum": "Szukaj w forum <strong></strong>",
"search.keep-typing": "Type more to see results...", "search.keep-typing": "Wpisz więcej, aby zobaczyć wyniki ...",
"search.start-typing": "Start typing to see results...", "search.start-typing": "Zacznij pisać, aby zobaczyć wyniki ...",
"connection-lost": "Connection to %1 has been lost, attempting to reconnect..." "connection-lost": "Połączenie z %1 zostało utracone, próba ponownego połączenia..."
} }

View File

@@ -1,8 +1,8 @@
{ {
"maintenance-mode": "Tryb Konserwacji", "maintenance-mode": "Tryb Konserwacji",
"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.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", "maintenance-mode.message": "Wiadomość podczas konserwacji",
"headers": "Headers", "headers": "Nagłówek",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
"headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB", "headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB",
"headers.acao": "Access-Control-Allow-Origin", "headers.acao": "Access-Control-Allow-Origin",

View File

@@ -1,7 +1,7 @@
{ {
"reputation": "Ustawienia Reputacji", "reputation": "Ustawienia Reputacji",
"disable": "Disable Reputation System", "disable": "Wyłącz System Reputacji",
"disable-down-voting": "Disable Down Voting", "disable-down-voting": "Wyłącz System \"Głosów przeciw\"",
"thresholds": "Activity Thresholds", "thresholds": "Activity Thresholds",
"min-rep-downvote": "Minimum reputation to downvote posts", "min-rep-downvote": "Minimum reputation to downvote posts",
"min-rep-flag": "Minimum reputation to flag posts" "min-rep-flag": "Minimum reputation to flag posts"

View File

@@ -1,38 +1,38 @@
{ {
"authentication": "Authentication", "authentication": "Autoryzacja",
"allow-local-login": "Allow local login", "allow-local-login": "Pozwól na lokalne logowanie",
"require-email-confirmation": "Require Email Confirmation", "require-email-confirmation": "Wymagaj Potwierdzenie Emailu",
"email-confirm-interval": "User may not resend a confirmation email until", "email-confirm-interval": "Użytkownik nie może ponownie wysłać email z potwierdzeniem, aż",
"email-confirm-email2": "minutes have elapsed", "email-confirm-email2": "minut upłynęło",
"allow-login-with": "Allow login with", "allow-login-with": "Pozwól na logowanie przy użyciu",
"allow-login-with.username-email": "Username or Email", "allow-login-with.username-email": "Nazwy użytkownika oraz Emailu",
"allow-login-with.username": "Username Only", "allow-login-with.username": "Tylko Nazwy Użytkownia",
"allow-login-with.email": "Email Only", "allow-login-with.email": "Tylko Emailu",
"account-settings": "Account Settings", "account-settings": "Ustawienia Konta",
"disable-username-changes": "Disable username changes", "disable-username-changes": "Wyłącz możliwość zmiany nazwy użytkownika",
"disable-email-changes": "Disable email changes", "disable-email-changes": "Wyłącz możliwość zmiany emaila",
"disable-password-changes": "Disable password changes", "disable-password-changes": "Wyłącz możliwość zmiany hasła",
"allow-account-deletion": "Allow account deletion", "allow-account-deletion": "Pozwól na możliwość usunięcia konta",
"user-info-private": "Make user info private", "user-info-private": "Informację użytkownika są prywatne",
"themes": "Themes", "themes": "Style",
"disable-user-skins": "Prevent users from choosing a custom skin", "disable-user-skins": "Uniemożliwić użytkownikom wybranie niestandardowej skórę",
"account-protection": "Account Protection", "account-protection": "Ochrona Konta",
"login-attempts": "Login attempts per hour", "login-attempts": "Prób logowania na godzinę",
"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", "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": "Czas trwania blokady konta (minuty)",
"login-days": "Days to remember user login sessions", "login-days": "Ilość dni zapamiętywania sesji logowania użytkownika",
"password-expiry-days": "Force password reset after a set number of days", "password-expiry-days": "Wymuś restotwanie hasła po określonej liczbie dni",
"registration": "User Registration", "registration": "Rejestracja Użytkownika",
"registration-type": "Registration Type", "registration-type": "Typ Rejestracji",
"registration-type.normal": "Normal", "registration-type.normal": "Normalna",
"registration-type.admin-approval": "Admin Approval", "registration-type.admin-approval": "Zatwierdzania przez administratora",
"registration-type.admin-approval-ip": "Admin Approval for IPs", "registration-type.admin-approval-ip": "Zatwierdzania przez administratora dla IP",
"registration-type.invite-only": "Invite Only", "registration-type.invite-only": "Zaproszenia",
"registration-type.admin-invite-only": "Admin Invite Only", "registration-type.admin-invite-only": "Zaproszenie przez administracje",
"registration-type.disabled": "No registration", "registration-type.disabled": "Brak możliwości rejestracji",
"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-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", "registration.max-invites": "Maksymalnie ilość zaproszeń przez użytkownika",
"max-invites": "Maximum Invitations per User", "max-invites": "Maksymalnie ilość zaproszeń przez użytkownika",
"max-invites-help": "0 for no restriction. Admins get infinite invitations<br>Only applicable for \"Invite Only\"", "max-invites-help": "0 for no restriction. Admins get infinite invitations<br>Only applicable for \"Invite Only\"",
"min-username-length": "Minimum Username Length", "min-username-length": "Minimum Username Length",
"max-username-length": "Maximum Username Length", "max-username-length": "Maximum Username Length",
@@ -41,19 +41,19 @@
"terms-of-use": "Forum Terms of Use <small>(Leave blank to disable)</small>", "terms-of-use": "Forum Terms of Use <small>(Leave blank to disable)</small>",
"user-search": "User Search", "user-search": "User Search",
"user-search-results-per-page": "Number of results to display", "user-search-results-per-page": "Number of results to display",
"default-user-settings": "Default User Settings", "default-user-settings": "Domyślne ustawienie użytkownia",
"show-email": "Show email", "show-email": "Pokaż email",
"show-fullname": "Show fullname", "show-fullname": "Pokaż imię",
"restrict-chat": "Only allow chat messages from users I follow", "restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab", "outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching", "topic-search": "Enable In-Topic Searching",
"digest-freq": "Subscribe to Digest", "digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off", "digest-freq.off": "Off",
"digest-freq.daily": "Daily", "digest-freq.daily": "Dzienny ",
"digest-freq.weekly": "Weekly", "digest-freq.weekly": "Tygodniowy",
"digest-freq.monthly": "Monthly", "digest-freq.monthly": "Miesięczny",
"email-chat-notifs": "Send an email if a new chat message arrives and I am not online", "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", "email-post-notif": "Send an email when replies are made to topics I am subscribed to",
"follow-created-topics": "Follow topics you create", "follow-created-topics": "Śledź tematy, które stworzyłeś",
"follow-replied-topics": "Follow topics that you reply to" "follow-replied-topics": "Śledź tematy, w których się wypowiedziałeś "
} }

View File

@@ -6,7 +6,7 @@
"popular-month": "Tematy popularne w tym miesiącu", "popular-month": "Tematy popularne w tym miesiącu",
"popular-alltime": "Wszystkie popularne tematy", "popular-alltime": "Wszystkie popularne tematy",
"recent": "Ostatnie Tematy", "recent": "Ostatnie Tematy",
"flagged-content": "Flagged Content", "flagged-content": "Treść oflagowanego posta",
"ip-blacklist": "Czarna lista adresów IP", "ip-blacklist": "Czarna lista adresów IP",
"users/online": "Dostępni Użytkownicy", "users/online": "Dostępni Użytkownicy",
"users/latest": "Nowi Użytkownicy", "users/latest": "Nowi Użytkownicy",
@@ -27,8 +27,8 @@
"group": "Grupa %1", "group": "Grupa %1",
"chats": "Rozmowy", "chats": "Rozmowy",
"chat": "Rozmowa z %1", "chat": "Rozmowa z %1",
"flags": "Flags", "flags": "Flagi",
"flag-details": "Flag %1 Details", "flag-details": "Flag %1 Szczegóły",
"account/edit": "Edytowanie \"%1\"", "account/edit": "Edytowanie \"%1\"",
"account/edit/password": "Edytowanie hasła \"%1\"", "account/edit/password": "Edytowanie hasła \"%1\"",
"account/edit/username": "Edytowanie nazwy \"%1\"", "account/edit/username": "Edytowanie nazwy \"%1\"",

View File

@@ -6,7 +6,7 @@
"popular-month": "Populárne témy za tento mesiac", "popular-month": "Populárne témy za tento mesiac",
"popular-alltime": "Populárne témy za celé obdobie", "popular-alltime": "Populárne témy za celé obdobie",
"recent": "Nedávne témy", "recent": "Nedávne témy",
"flagged-content": "Flagged Content", "flagged-content": "Označený obsah",
"ip-blacklist": "IP Blacklist", "ip-blacklist": "IP Blacklist",
"users/online": "Online užívatelia", "users/online": "Online užívatelia",
"users/latest": "Najnovší užívatelia", "users/latest": "Najnovší užívatelia",
@@ -27,8 +27,8 @@
"group": "%1 skupina", "group": "%1 skupina",
"chats": "Konverzácie", "chats": "Konverzácie",
"chat": "Rozprávate sa s %1", "chat": "Rozprávate sa s %1",
"flags": "Flags", "flags": "Značky",
"flag-details": "Flag %1 Details", "flag-details": "Detaily značky %1",
"account/edit": "Úprava \"%1\"", "account/edit": "Úprava \"%1\"",
"account/edit/password": "Úprava hesla \"%1\"", "account/edit/password": "Úprava hesla \"%1\"",
"account/edit/username": "Úprava užívateľského mena \"%1\"", "account/edit/username": "Úprava užívateľského mena \"%1\"",

View File

@@ -11,7 +11,7 @@
"chat.no-users-in-room": "Нема корисника у овој соби", "chat.no-users-in-room": "Нема корисника у овој соби",
"chat.recent-chats": "Недавна ћаскања", "chat.recent-chats": "Недавна ћаскања",
"chat.contacts": "Контакти", "chat.contacts": "Контакти",
"chat.message-history": "Историјат порука", "chat.message-history": "Историја порука",
"chat.pop-out": "Истакни ћаскање", "chat.pop-out": "Истакни ћаскање",
"chat.minimize": "Умањи", "chat.minimize": "Умањи",
"chat.maximize": "Увећај", "chat.maximize": "Увећај",

View File

@@ -6,7 +6,7 @@
"popular-month": "Популарне теме овог месеца", "popular-month": "Популарне теме овог месеца",
"popular-alltime": "Популарне теме свих времена", "popular-alltime": "Популарне теме свих времена",
"recent": "Недавне теме", "recent": "Недавне теме",
"flagged-content": "Flagged Content", "flagged-content": "Садржај означен заставицом",
"ip-blacklist": "Црна листа IP адреса", "ip-blacklist": "Црна листа IP адреса",
"users/online": "Корисници на мрежи", "users/online": "Корисници на мрежи",
"users/latest": "Најновији корисници", "users/latest": "Најновији корисници",
@@ -27,8 +27,8 @@
"group": "%1 група", "group": "%1 група",
"chats": "Ћаскања", "chats": "Ћаскања",
"chat": "Ћаскање са %1", "chat": "Ћаскање са %1",
"flags": "Flags", "flags": "Заставице",
"flag-details": "Flag %1 Details", "flag-details": "Означи %1 детаље",
"account/edit": "Уређивање \"%1\"", "account/edit": "Уређивање \"%1\"",
"account/edit/password": "Уређивање лозинке од \"%1\"", "account/edit/password": "Уређивање лозинке од \"%1\"",
"account/edit/username": "Уређивање корисничког имена од \"%1\"", "account/edit/username": "Уређивање корисничког имена од \"%1\"",
@@ -46,7 +46,7 @@
"account/downvoted": "Поруке које је негативно гласао %1", "account/downvoted": "Поруке које је негативно гласао %1",
"account/best": "Најбоље поруке од %1", "account/best": "Најбоље поруке од %1",
"confirm": "Е-пошта је потврђена.", "confirm": "Е-пошта је потврђена.",
"maintenance.text": "%1 је тренутно у фази одржавања. Молимо, вратите се други пут.", "maintenance.text": "%1 је тренутно у фази одржавања. Молимо, навратите касније.",
"maintenance.messageIntro": "Додатно, администратор је оставио ову поруку:", "maintenance.messageIntro": "Додатно, администратор је оставио ову поруку:",
"throttled.text": "%1 је тренутно недоступан због прекомерног оптерећења. Молимо, вратите се други пут." "throttled.text": "%1 је тренутно недоступан због прекомерног оптерећења. Молимо, навратите касније."
} }

View File

@@ -38,7 +38,7 @@
"flag_manage_assignee": "Заступник", "flag_manage_assignee": "Заступник",
"flag_manage_state": "Стање", "flag_manage_state": "Стање",
"flag_manage_state_open": "Ново/Отвори", "flag_manage_state_open": "Ново/Отвори",
"flag_manage_state_wip": "Посао у току", "flag_manage_state_wip": "Рад у току",
"flag_manage_state_resolved": "Решено", "flag_manage_state_resolved": "Решено",
"flag_manage_state_rejected": "Одбијено", "flag_manage_state_rejected": "Одбијено",
"flag_manage_notes": "Дељене белешке", "flag_manage_notes": "Дељене белешке",

View File

@@ -6,7 +6,7 @@
"popular-month": "Bu ayki popüler başlıklar", "popular-month": "Bu ayki popüler başlıklar",
"popular-alltime": "En popüler başlıklar", "popular-alltime": "En popüler başlıklar",
"recent": "Güncel Konular", "recent": "Güncel Konular",
"flagged-content": "Flagged Content", "flagged-content": "Bayraklanan İçerik",
"ip-blacklist": "IP Karaliste", "ip-blacklist": "IP Karaliste",
"users/online": "Çevrimiçi Kullanıcılar", "users/online": "Çevrimiçi Kullanıcılar",
"users/latest": "En Yeni Kullanıcılar", "users/latest": "En Yeni Kullanıcılar",
@@ -27,8 +27,8 @@
"group": "%1 grubu", "group": "%1 grubu",
"chats": "Sohbetler", "chats": "Sohbetler",
"chat": "%1 ile sohbet", "chat": "%1 ile sohbet",
"flags": "Flags", "flags": "Bayraklar",
"flag-details": "Flag %1 Details", "flag-details": "Bayrak %1 Detay",
"account/edit": "\"%1\" düzenleniyor", "account/edit": "\"%1\" düzenleniyor",
"account/edit/password": "\"%1\" parolayı düzenliyor", "account/edit/password": "\"%1\" parolayı düzenliyor",
"account/edit/username": "\"%1\" kullanıcı adını düzenliyor", "account/edit/username": "\"%1\" kullanıcı adını düzenliyor",

View File

@@ -14,7 +14,7 @@
"manage/registration": "注册队列", "manage/registration": "注册队列",
"manage/groups": "用户组", "manage/groups": "用户组",
"manage/flags": "举报", "manage/flags": "举报",
"manage/ip-blacklist": "IP黑名单", "manage/ip-blacklist": "IP 黑名单",
"section-settings": "设置", "section-settings": "设置",
"settings/general": "通用", "settings/general": "通用",

View File

@@ -8,8 +8,8 @@
"restrictions": "发帖限制", "restrictions": "发帖限制",
"restrictions.seconds-between": "发帖间隔", "restrictions.seconds-between": "发帖间隔",
"restrictions.seconds-between-new": "对于新用户的发帖间隔", "restrictions.seconds-between-new": "对于新用户的发帖间隔",
"restrictions.rep-threshold": "取消此限制之前的威望阈值", "restrictions.rep-threshold": "取消发帖限制所需的声望值",
"restrictions.seconds-defore-new": "在新用户可以发帖之前的间隔", "restrictions.seconds-defore-new": "见习时间",
"restrictions.seconds-edit-after": "用户在发布后允许编辑帖子的秒数。 (0为禁用) ", "restrictions.seconds-edit-after": "用户在发布后允许编辑帖子的秒数。 (0为禁用) ",
"restrictions.seconds-delete-after": "允许在发布后删除帖子的秒数。 (0为禁用) ", "restrictions.seconds-delete-after": "允许在发布后删除帖子的秒数。 (0为禁用) ",
"restrictions.replies-no-delete": "在用户被禁止删除自己的主题后的回复数。 (0为禁用) ", "restrictions.replies-no-delete": "在用户被禁止删除自己的主题后的回复数。 (0为禁用) ",
@@ -21,7 +21,7 @@
"restrictions.stale-help": "如果某个主题被视为“过时”,则会向尝试回复该主题的用户显示警告。", "restrictions.stale-help": "如果某个主题被视为“过时”,则会向尝试回复该主题的用户显示警告。",
"timestamp": "时间戳", "timestamp": "时间戳",
"timestamp.cut-off": "日期截止日期 (天) ", "timestamp.cut-off": "日期截止日期 (天) ",
"timestamp.cut-off-help": "日期&amp;时间将以相对方式 (例如“3小时前” / “5天前”) 显示,并且被本地化为各种各样的\n\\t\\t\\t\\t\\t语言。在某一之后,可以切换该文本以显示本地化日期本身\n\\t\\t\\t\\t\\t (例如2016年11月5日15:30) 。<br /> <em> (默认值:<code> 30 </code>或一个月) 。 设置为0可始终显示日期留空以始终显示相对时间。</em>", "timestamp.cut-off-help": "日期&amp;时间将以相对方式 (例如“3小时前” / “5天前”) 显示,并且会依照访客语言时区转换。在某一时刻之后,可以切换该文本以显示本地化日期本身 (例如2016年11月5日15:30) 。<br /> <em> (默认值:<code> 30 </code>或一个月) 。 设置为0可始终显示日期留空以始终显示相对时间。</em>",
"teaser": "预览帖子", "teaser": "预览帖子",
"teaser.last-post": "最后&ndash; 显示最新的帖子,包括原帖,如果没有回复", "teaser.last-post": "最后&ndash; 显示最新的帖子,包括原帖,如果没有回复",
"teaser.last-reply": "最后&ndash; 显示最新回复,如果没有回复,则显示“无回复”占位符", "teaser.last-reply": "最后&ndash; 显示最新回复,如果没有回复,则显示“无回复”占位符",

View File

@@ -5,7 +5,7 @@
"greeting_no_name": "您好", "greeting_no_name": "您好",
"greeting_with_name": "%1您好", "greeting_with_name": "%1您好",
"welcome.text1": "感谢您注册 %1 帐户!", "welcome.text1": "感谢您注册 %1 帐户!",
"welcome.text2": "需要在校验您注册时填写的电子邮箱地址后,才能全面激活您的帐户。", "welcome.text2": "我们需要在校验您注册时填写的电子邮箱地址后,才能激活您的帐户。",
"welcome.text3": "管理员接受了您的注册请求,请用您的用户名和密码登陆。", "welcome.text3": "管理员接受了您的注册请求,请用您的用户名和密码登陆。",
"welcome.cta": "点击这里确认您的电子邮箱地址", "welcome.cta": "点击这里确认您的电子邮箱地址",
"invitation.text1": "%1 邀请您加入%2", "invitation.text1": "%1 邀请您加入%2",
@@ -14,7 +14,7 @@
"reset.text2": "如需继续重置密码,请点击下面的链接:", "reset.text2": "如需继续重置密码,请点击下面的链接:",
"reset.cta": "点击这里重置您的密码", "reset.cta": "点击这里重置您的密码",
"reset.notify.subject": "更改密码成功", "reset.notify.subject": "更改密码成功",
"reset.notify.text1": "您在 %1 上的密码成功修改。", "reset.notify.text1": "您在 %1 上的密码已经成功修改。",
"reset.notify.text2": "如果你没有授权此操作,请立即联系管理员。", "reset.notify.text2": "如果你没有授权此操作,请立即联系管理员。",
"digest.notifications": "您有来自 %1 的未读通知:", "digest.notifications": "您有来自 %1 的未读通知:",
"digest.latest_topics": "来自 %1 的最新主题", "digest.latest_topics": "来自 %1 的最新主题",

View File

@@ -6,12 +6,12 @@
"popular-month": "当月热门话题", "popular-month": "当月热门话题",
"popular-alltime": "热门主题", "popular-alltime": "热门主题",
"recent": "最新主题", "recent": "最新主题",
"flagged-content": "Flagged Content", "flagged-content": "已举报的内容",
"ip-blacklist": "IP 黑名单", "ip-blacklist": "IP 黑名单",
"users/online": "在线会员", "users/online": "在线会员",
"users/latest": "最新会员", "users/latest": "最新会员",
"users/sort-posts": "最多发帖的会员", "users/sort-posts": "发帖最多的会员",
"users/sort-reputation": "最多积分的会员", "users/sort-reputation": "积分最多的会员",
"users/banned": "被封禁的用户", "users/banned": "被封禁的用户",
"users/most-flags": "被举报次数最多的用户", "users/most-flags": "被举报次数最多的用户",
"users/search": "会员搜索", "users/search": "会员搜索",
@@ -27,8 +27,8 @@
"group": "%1 的用户组", "group": "%1 的用户组",
"chats": "聊天", "chats": "聊天",
"chat": "与 %1 聊天", "chat": "与 %1 聊天",
"flags": "Flags", "flags": "举报",
"flag-details": "Flag %1 Details", "flag-details": "举报 %1 详情",
"account/edit": "正在编辑 \"%1\"", "account/edit": "正在编辑 \"%1\"",
"account/edit/password": "正在编辑 \"%1\" 的密码", "account/edit/password": "正在编辑 \"%1\" 的密码",
"account/edit/username": "正在编辑 \"%1\" 的用户名", "account/edit/username": "正在编辑 \"%1\" 的用户名",

View File

@@ -135,4 +135,14 @@
.admin .ban-modal .units { .admin .ban-modal .units {
line-height: 1.846; line-height: 1.846;
} }
#crop-picture-modal {
.cropped-image {
max-width: 100%;
}
.cropper-container.cropper-bg {
max-width: 100%;
}
}

View File

@@ -1,5 +1,5 @@
"use strict"; "use strict";
/*global config, componentHandler, socket, app, bootbox, Slideout, NProgress*/ /*global config, componentHandler, socket, app, bootbox, Slideout, NProgress, utils*/
(function () { (function () {
var logoutTimer = 0; var logoutTimer = 0;
@@ -176,13 +176,19 @@
} }
function configureSlidemenu() { function configureSlidemenu() {
var env = utils.findBootstrapEnvironment();
var slideout = new Slideout({ var slideout = new Slideout({
'panel': document.getElementById('panel'), 'panel': document.getElementById('panel'),
'menu': document.getElementById('menu'), 'menu': document.getElementById('menu'),
'padding': 256, 'padding': 256,
'tolerance': 70 'tolerance': 70
}); });
if (env === 'md' || env === 'lg') {
slideout.disableTouch();
}
$('#mobile-menu').on('click', function () { $('#mobile-menu').on('click', function () {
slideout.toggle(); slideout.toggle();
}); });
@@ -193,6 +199,20 @@
$(window).on('resize', function () { $(window).on('resize', function () {
slideout.close(); slideout.close();
env = utils.findBootstrapEnvironment();
if (env === 'md' || env === 'lg') {
slideout.disableTouch();
$('#header').css({
'position': 'relative'
});
} else {
slideout.enableTouch();
$('#header').css({
'position': 'fixed'
});
}
}); });
function onOpeningMenu() { function onOpeningMenu() {
@@ -202,10 +222,8 @@
}); });
} }
slideout.on('beforeopen', onOpeningMenu);
slideout.on('open', onOpeningMenu); slideout.on('open', onOpeningMenu);
slideout.on('translate', onOpeningMenu);
slideout.on('close', function () { slideout.on('close', function () {
$('#header').css({ $('#header').css({
'top': '0px', 'top': '0px',

View File

@@ -2,7 +2,7 @@
/* globals define, ajaxify, socket, app, config, templates, bootbox */ /* globals define, ajaxify, socket, app, config, templates, bootbox */
define('forum/account/edit', ['forum/account/header', 'uploader', 'translator', 'components'], function (header, uploader, translator, components) { define('forum/account/edit', ['forum/account/header', 'uploader', 'translator', 'components', 'cropper'], function (header, uploader, translator, components, cropper) {
var AccountEdit = {}; var AccountEdit = {};
AccountEdit.init = function () { AccountEdit.init = function () {
@@ -210,6 +210,58 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator',
updateHeader(); updateHeader();
} }
} }
function handleImageCrop(data) {
$('#crop-picture-modal').remove();
templates.parse('modals/crop_picture', {url: data.url}, function (cropperHtml) {
translator.translate(cropperHtml, function (translated) {
var cropperModal = $(translated);
cropperModal.modal('show');
var img = document.getElementById('cropped-image');
var cropperTool = new cropper.default(img, {
aspectRatio: 1 / 1,
viewMode: 1
});
cropperModal.find('.rotate').on('click', function () {
var degrees = this.getAttribute("data-degrees");
cropperTool.rotate(degrees);
});
cropperModal.find('.flip').on('click', function () {
var option = this.getAttribute("data-option");
var method = this.getAttribute("data-method");
method === 'scaleX' ? cropperTool.scaleX(option) : cropperTool.scaleY(option);
this.setAttribute("data-option", option * -1);
});
cropperModal.find('.reset').on('click', function () {
cropperTool.reset();
});
cropperModal.find('.crop-btn').on('click', function () {
$(this).addClass('disabled');
var imageData = data.imageType ? cropperTool.getCroppedCanvas().toDataURL(data.imageType) : cropperTool.getCroppedCanvas().toDataURL();
cropperModal.find('#upload-progress-bar').css('width', '100%');
cropperModal.find('#upload-progress-box').show().removeClass('hide');
socket.emit('user.uploadCroppedPicture', {
uid: ajaxify.data.theirid,
imageData: imageData
}, function (err, imageData) {
if (err) {
app.alertError(err.message);
}
onUploadComplete(imageData.url);
cropperModal.modal('hide');
});
});
});
});
}
modal.find('[data-action="upload"]').on('click', function () { modal.find('[data-action="upload"]').on('click', function () {
modal.modal('hide'); modal.modal('hide');
@@ -221,8 +273,8 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator',
title: '[[user:upload_picture]]', title: '[[user:upload_picture]]',
description: '[[user:upload_a_picture]]', description: '[[user:upload_a_picture]]',
accept: '.png,.jpg,.bmp' accept: '.png,.jpg,.bmp'
}, function (imageUrlOnServer) { }, function (data) {
onUploadComplete(imageUrlOnServer); handleImageCrop(data);
}); });
return false; return false;
@@ -240,15 +292,10 @@ define('forum/account/edit', ['forum/account/header', 'uploader', 'translator',
if (!url) { if (!url) {
return; return;
} }
socket.emit('user.uploadProfileImageFromUrl', {url: url, uid: ajaxify.data.theirid}, function (err, imageUrlOnServer) {
if (err) { uploadModal.modal('hide');
return app.alertError(err.message); handleImageCrop({url: url});
}
onUploadComplete(imageUrlOnServer);
uploadModal.modal('hide');
});
return false; return false;
}); });
}); });

View File

@@ -99,6 +99,11 @@ define('forum/topic/posts', [
function onNewPostInfiniteScroll(data) { function onNewPostInfiniteScroll(data) {
var direction = config.topicPostSort === 'oldest_to_newest' || config.topicPostSort === 'most_votes' ? 1 : -1; var direction = config.topicPostSort === 'oldest_to_newest' || config.topicPostSort === 'most_votes' ? 1 : -1;
var isPreviousPostAdded = $('[component="post"][data-index="' + (data.posts[0].index - 1) + '"]').length;
if (!isPreviousPostAdded && (!data.posts[0].selfPost || !ajaxify.data.scrollToMyPost)) {
return;
}
createNewPosts(data, components.get('post').not('[data-index=0]'), direction, function (html) { createNewPosts(data, components.get('post').not('[data-index=0]'), direction, function (html) {
if (html) { if (html) {
html.addClass('new'); html.addClass('new');
@@ -109,11 +114,7 @@ define('forum/topic/posts', [
} }
function scrollToPostIfSelf(post) { function scrollToPostIfSelf(post) {
if (!ajaxify.data.scrollToMyPost) { if (post.selfPost && ajaxify.data.scrollToMyPost) {
return;
}
var isSelfPost = parseInt(post.uid, 10) === parseInt(app.user.uid, 10);
if (isSelfPost) {
navigator.scrollBottom(post.index); navigator.scrollBottom(post.index);
} }
} }

View File

@@ -1,8 +1,8 @@
'use strict'; 'use strict';
/* globals define, templates */ /* globals define, ajaxify, socket, app, templates */
define('uploader', ['translator'], function (translator) { define('uploader', ['translator', 'cropper'], function (translator, cropper) {
var module = {}; var module = {};
@@ -61,46 +61,27 @@ define('uploader', ['translator'], function (translator) {
uploadModal.find('#alert-' + type).translateText(message).removeClass('hide'); uploadModal.find('#alert-' + type).translateText(message).removeClass('hide');
} }
showAlert('status', '[[uploads:uploading-file]]');
uploadModal.find('#upload-progress-bar').css('width', '0%');
uploadModal.find('#upload-progress-box').show().removeClass('hide');
var fileInput = uploadModal.find('#fileInput'); var fileInput = uploadModal.find('#fileInput');
if (!fileInput.val()) { if (!fileInput.val()) {
return showAlert('error', '[[uploads:select-file-to-upload]]'); return showAlert('error', '[[uploads:select-file-to-upload]]');
} }
if (!hasValidFileSize(fileInput[0], fileSize)) {
return showAlert('error', '[[error:file-too-big, ' + fileSize + ']]'); var file = fileInput[0].files[0];
var reader = new FileReader();
var imageUrl;
var imageType = file.type;
reader.addEventListener("load", function () {
imageUrl = reader.result;
uploadModal.modal('hide');
callback({url: imageUrl, imageType: imageType});
}, false);
if (file) {
reader.readAsDataURL(file);
} }
uploadModal.find('#uploadForm').ajaxSubmit({
headers: {
'x-csrf-token': config.csrf_token
},
error: function (xhr) {
xhr = maybeParse(xhr);
showAlert('error', xhr.responseJSON ? (xhr.responseJSON.error || xhr.statusText) : 'error uploading, code : ' + xhr.status);
},
uploadProgress: function (event, position, total, percent) {
uploadModal.find('#upload-progress-bar').css('width', percent + '%');
},
success: function (response) {
response = maybeParse(response);
if (response.error) {
return showAlert('error', response.error);
}
callback(response[0].url);
showAlert('success', '[[uploads:upload-success]]');
setTimeout(function () {
module.hideAlerts(uploadModal);
uploadModal.modal('hide');
}, 750);
}
});
} }
function parseModal(tplVals, callback) { function parseModal(tplVals, callback) {
@@ -109,23 +90,5 @@ define('uploader', ['translator'], function (translator) {
}); });
} }
function maybeParse(response) {
if (typeof response === 'string') {
try {
return $.parseJSON(response);
} catch (e) {
return {error: '[[error:parse-error]]'};
}
}
return response;
}
function hasValidFileSize(fileElement, maxSize) {
if (window.FileReader && maxSize) {
return fileElement.files[0].size <= maxSize * 1000;
}
return true;
}
return module; return module;
}); });

File diff suppressed because one or more lines are too long

View File

@@ -14,9 +14,9 @@ exports.buildAll = function (callback) {
exports.build = function build(targets, callback) { exports.build = function build(targets, callback) {
buildStart = Date.now(); buildStart = Date.now();
var db = require('./src/database'); var db = require('../database');
var meta = require('./src/meta'); var meta = require('../meta');
var plugins = require('./src/plugins'); var plugins = require('../plugins');
targets = (targets === true ? valid : targets.split(',').filter(function (target) { targets = (targets === true ? valid : targets.split(',').filter(function (target) {
@@ -43,7 +43,7 @@ exports.build = function build(targets, callback) {
}; };
exports.buildTargets = function (targets, callback) { exports.buildTargets = function (targets, callback) {
var meta = require('./src/meta'); var meta = require('../meta');
buildStart = buildStart || Date.now(); buildStart = buildStart || Date.now();
var step = function (startTime, target, next) { var step = function (startTime, target, next) {
@@ -88,7 +88,7 @@ exports.buildTargets = function (targets, callback) {
startTime = Date.now(); startTime = Date.now();
meta.templates.compile(step.bind(this, startTime, target, next)); meta.templates.compile(step.bind(this, startTime, target, next));
break; break;
case 'lang': case 'lang':
winston.info('[build] Building language files'); winston.info('[build] Building language files');
startTime = Date.now(); startTime = Date.now();

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