From be00a1c01372861f6754a9639a5bd6770a46b82a Mon Sep 17 00:00:00 2001 From: Peter Jaszkowiak Date: Wed, 20 Dec 2017 13:56:14 -0700 Subject: [PATCH 01/18] Support for using yarn instead of npm, include unread counts on cold load (#6179) * Close #6178 * Support for package managers besides npm - Also fixes issue where upgrade-plugins wouldn't work --- public/src/client/footer.js | 1 + src/cli/index.js | 13 +++++--- src/{meta => cli}/package-install.js | 18 +++++++++-- src/cli/upgrade-plugins.js | 26 +++++++++------ src/cli/upgrade.js | 4 +-- src/middleware/header.js | 47 +++++++++++++++++++++++++++- src/navigation/index.js | 11 ++++--- src/plugins/install.js | 29 ++++++++++++++--- 8 files changed, 121 insertions(+), 28 deletions(-) rename src/{meta => cli}/package-install.js (86%) diff --git a/public/src/client/footer.js b/public/src/client/footer.js index 7dcdade78b..7bc187921e 100644 --- a/public/src/client/footer.js +++ b/public/src/client/footer.js @@ -75,6 +75,7 @@ define('forum/footer', ['notifications', 'chat', 'components', 'translator'], fu socket.on('event:new_post', onNewPost); } + // DEPRECATED: remove in 1.8.0 if (app.user.uid) { socket.emit('user.getUnreadCounts', function (err, data) { if (err) { diff --git a/src/cli/index.js b/src/cli/index.js index 0bc95a7c6d..aa7ef2c257 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -3,7 +3,7 @@ var fs = require('fs'); var path = require('path'); -var packageInstall = require('../meta/package-install'); +var packageInstall = require('./package-install'); var dirname = require('./paths').baseDir; // check to make sure dependencies are installed @@ -12,12 +12,17 @@ try { } catch (e) { if (e.code === 'ENOENT') { console.warn('package.json not found.'); - console.log('Populating package.json...\n'); + console.log('Populating package.json...'); packageInstall.updatePackageFile(); packageInstall.preserveExtraneousPlugins(); - console.log('OK'.green + '\n'.reset); + try { + require('colors'); + console.log('OK'.green); + } catch (e) { + console.log('OK'); + } } else { throw e; } @@ -33,7 +38,7 @@ try { console.warn('Dependencies not yet installed.'); console.log('Installing them now...\n'); - packageInstall.npmInstallProduction(); + packageInstall.installAll(); require('colors'); console.log('OK'.green + '\n'.reset); diff --git a/src/meta/package-install.js b/src/cli/package-install.js similarity index 86% rename from src/meta/package-install.js rename to src/cli/package-install.js index 4dba482b70..5f6f9917a5 100644 --- a/src/meta/package-install.js +++ b/src/cli/package-install.js @@ -29,15 +29,27 @@ function updatePackageFile() { exports.updatePackageFile = updatePackageFile; -function npmInstallProduction() { +function installAll() { process.stdout.write('\n'); - cproc.execSync('npm i --production', { + + var prod = global.env !== 'development'; + var command = 'npm install'; + try { + var packageManager = require('nconf').get('package_manager'); + if (packageManager === 'yarn') { + command = 'yarn'; + } + } catch (e) { + // ignore + } + + cproc.execSync(command + (prod ? ' --production' : ''), { cwd: path.join(__dirname, '../../'), stdio: [0, 1, 2], }); } -exports.npmInstallProduction = npmInstallProduction; +exports.installAll = installAll; function preserveExtraneousPlugins() { // Skip if `node_modules/` is not found or inaccessible diff --git a/src/cli/upgrade-plugins.js b/src/cli/upgrade-plugins.js index e67f634f31..3be00cb5d1 100644 --- a/src/cli/upgrade-plugins.js +++ b/src/cli/upgrade-plugins.js @@ -7,9 +7,18 @@ var cproc = require('child_process'); var semver = require('semver'); var fs = require('fs'); var path = require('path'); +var nconf = require('nconf'); var paths = require('./paths'); +var packageManager = nconf.get('package_manager'); +var packageManagerExecutable = packageManager === 'yarn' ? 'yarn' : 'npm'; +var packageManagerInstallArgs = packageManager === 'yarn' ? ['add'] : ['install', '--save']; + +if (process.platform === 'win32') { + packageManagerExecutable += '.cmd'; +} + var dirname = paths.baseDir; function getModuleVersions(modules, callback) { @@ -85,7 +94,7 @@ function getInstalledPlugins(callback) { } function getCurrentVersion(callback) { - fs.readFile(path.join(dirname, 'package.json'), { encoding: 'utf-8' }, function (err, pkg) { + fs.readFile(path.join(dirname, 'install/package.json'), { encoding: 'utf-8' }, function (err, pkg) { if (err) { return callback(err); } @@ -106,8 +115,8 @@ function checkPlugins(standalone, callback) { async.waterfall([ async.apply(async.parallel, { - plugins: async.apply(getInstalledPlugins), - version: async.apply(getCurrentVersion), + plugins: getInstalledPlugins, + version: getCurrentVersion, }), function (payload, next) { var toCheck = Object.keys(payload.plugins); @@ -194,13 +203,12 @@ function upgradePlugins(callback) { if (['y', 'Y', 'yes', 'YES'].indexOf(result.upgrade) !== -1) { console.log('\nUpgrading packages...'); - var args = ['i']; - found.forEach(function (suggestObj) { - args.push(suggestObj.name + '@' + suggestObj.suggested); - }); + var args = packageManagerInstallArgs.concat(found.map(function (suggestObj) { + return suggestObj.name + '@' + suggestObj.suggested; + })); - cproc.execFile((process.platform === 'win32') ? 'npm.cmd' : 'npm', args, { stdio: 'ignore' }, function (err) { - callback(err, true); + cproc.execFile(packageManagerExecutable, args, { stdio: 'ignore' }, function (err) { + callback(err, false); }); } else { console.log('Package upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade -p'.green + '".'.reset); diff --git a/src/cli/upgrade.js b/src/cli/upgrade.js index 783681bb10..e5ab2b6c0c 100644 --- a/src/cli/upgrade.js +++ b/src/cli/upgrade.js @@ -3,7 +3,7 @@ var async = require('async'); var nconf = require('nconf'); -var packageInstall = require('../meta/package-install'); +var packageInstall = require('./package-install'); var upgrade = require('../upgrade'); var build = require('../meta/build'); var db = require('../database'); @@ -22,7 +22,7 @@ var steps = { install: { message: 'Bringing base dependencies up to date...', handler: function (next) { - packageInstall.npmInstallProduction(); + packageInstall.installAll(); next(); }, }, diff --git a/src/middleware/header.js b/src/middleware/header.js index 3824ff6fc3..5a896fcdd7 100644 --- a/src/middleware/header.js +++ b/src/middleware/header.js @@ -6,6 +6,8 @@ var jsesc = require('jsesc'); var db = require('../database'); var user = require('../user'); +var topics = require('../topics'); +var messaging = require('../messaging'); var meta = require('../meta'); var plugins = require('../plugins'); var navigation = require('../navigation'); @@ -109,10 +111,16 @@ module.exports = function (middleware) { next(null, translated); }); }, - navigation: async.apply(navigation.get), + navigation: navigation.get, tags: async.apply(meta.tags.parse, req, data, res.locals.metaTags, res.locals.linkTags), banned: async.apply(user.isBanned, req.uid), banReason: async.apply(user.getBannedReason, req.uid), + + unreadTopicCount: async.apply(topics.getTotalUnread, req.uid), + unreadNewTopicCount: async.apply(topics.getTotalUnread, req.uid, 'new'), + unreadWatchedTopicCount: async.apply(topics.getTotalUnread, req.uid, 'watched'), + unreadChatCount: async.apply(messaging.getUnreadCount, req.uid), + unreadNotificationCount: async.apply(user.notifications.getUnreadCount, req.uid), }, next); }, function (results, next) { @@ -131,8 +139,45 @@ module.exports = function (middleware) { setBootswatchCSS(templateValues, res.locals.config); + var unreadCount = { + topic: results.unreadTopicCount || 0, + newTopic: results.unreadNewTopicCount || 0, + watchedTopic: results.unreadWatchedTopicCount || 0, + chat: results.unreadChatCount || 0, + notification: results.unreadNotificationCount || 0, + }; + Object.keys(unreadCount).forEach(function (key) { + if (unreadCount[key] > 99) { + unreadCount[key] = '99+'; + } + }); + + results.navigation = results.navigation.map(function (item) { + if (item.originalRoute === '/unread' && results.unreadTopicCount > 0) { + return Object.assign({}, item, { + content: unreadCount.topic, + iconClass: item.iconClass + ' unread-count', + }); + } + if (item.originalRoute === '/unread/new' && results.unreadNewTopicCount > 0) { + return Object.assign({}, item, { + content: unreadCount.newTopic, + iconClass: item.iconClass + ' unread-count', + }); + } + if (item.originalRoute === '/unread/watched' && results.unreadWatchedTopicCount > 0) { + return Object.assign({}, item, { + content: unreadCount.watchedTopic, + iconClass: item.iconClass + ' unread-count', + }); + } + + return item; + }); + templateValues.browserTitle = results.browserTitle; templateValues.navigation = results.navigation; + templateValues.unreadCount = unreadCount; templateValues.metaTags = results.tags.meta; templateValues.linkTags = results.tags.link; templateValues.isAdmin = results.user.isAdmin; diff --git a/src/navigation/index.js b/src/navigation/index.js index 9aec34dd25..0712ce79f5 100644 --- a/src/navigation/index.js +++ b/src/navigation/index.js @@ -19,15 +19,16 @@ navigation.get = function (callback) { data = data.filter(function (item) { return item && item.enabled; }).map(function (item) { + item.originalRoute = item.route; + if (!item.route.startsWith('http')) { item.route = nconf.get('relative_path') + item.route; } - for (var i in item) { - if (item.hasOwnProperty(i)) { - item[i] = translator.unescape(item[i]); - } - } + Object.keys(item).forEach(function (key) { + item[key] = translator.unescape(item[key]); + }); + return item; }); diff --git a/src/plugins/install.js b/src/plugins/install.js index 7bd407ca08..da03fd8d71 100644 --- a/src/plugins/install.js +++ b/src/plugins/install.js @@ -13,6 +13,23 @@ var meta = require('../meta'); var pubsub = require('../pubsub'); var events = require('../events'); +var packageManager = nconf.get('package_manager') === 'yarn' ? 'yarn' : 'npm'; +var packageManagerExecutable = packageManager; +var packageManagerCommands = { + yarn: { + install: 'add', + uninstall: 'remove', + }, + npm: { + install: 'install', + uninstall: 'uninstall', + }, +}; + +if (process.platform === 'win32') { + packageManagerExecutable += '.cmd'; +} + module.exports = function (Plugins) { if (nconf.get('isPrimary') === 'true') { pubsub.on('plugins:toggleInstall', function (data) { @@ -95,7 +112,7 @@ module.exports = function (Plugins) { setImmediate(next); }, function (next) { - runNpmCommand(type, id, version || 'latest', next); + runPackageManagerCommand(type, id, version || 'latest', next); }, function (next) { Plugins.get(id, next); @@ -107,8 +124,12 @@ module.exports = function (Plugins) { ], callback); } - function runNpmCommand(command, pkgName, version, callback) { - cproc.execFile((process.platform === 'win32') ? 'npm.cmd' : 'npm', [command, pkgName + (command === 'install' ? '@' + version : ''), '--save'], function (err, stdout) { + function runPackageManagerCommand(command, pkgName, version, callback) { + cproc.execFile(packageManagerExecutable, [ + packageManagerCommands[packageManager][command], + pkgName + (command === 'install' ? '@' + version : ''), + '--save', + ], function (err, stdout) { if (err) { return callback(err); } @@ -125,7 +146,7 @@ module.exports = function (Plugins) { function upgrade(id, version, callback) { async.waterfall([ - async.apply(runNpmCommand, 'install', id, version || 'latest'), + async.apply(runPackageManagerCommand, 'install', id, version || 'latest'), function (next) { Plugins.isActive(id, next); }, From c12b42180d084ebcf2105130b2d14872cda42a76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 20 Dec 2017 22:08:44 -0500 Subject: [PATCH 02/18] closes #6189 --- public/src/modules/notifications.js | 16 ++++++------- public/src/modules/translator.js | 36 +++++++++++++++++------------ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/public/src/modules/notifications.js b/public/src/modules/notifications.js index a215c19475..8ce876eebe 100644 --- a/public/src/modules/notifications.js +++ b/public/src/modules/notifications.js @@ -137,14 +137,14 @@ define('notifications', ['sounds', 'translator', 'components', 'navigator', 'ben return parseInt(a.datetime, 10) > parseInt(b.datetime, 10) ? -1 : 1; }); - translator.toggleTimeagoShorthand(); - for (var i = 0; i < notifs.length; i += 1) { - notifs[i].timeago = $.timeago(new Date(parseInt(notifs[i].datetime, 10))); - } - translator.toggleTimeagoShorthand(); - - Benchpress.parse('partials/notifications_list', { notifications: notifs }, function (html) { - notifList.translateHtml(html); + translator.toggleTimeagoShorthand(function () { + for (var i = 0; i < notifs.length; i += 1) { + notifs[i].timeago = $.timeago(new Date(parseInt(notifs[i].datetime, 10))); + } + translator.toggleTimeagoShorthand(); + Benchpress.parse('partials/notifications_list', { notifications: notifs }, function (html) { + notifList.translateHtml(html); + }); }); }); }; diff --git a/public/src/modules/translator.js b/public/src/modules/translator.js index 817f6095b6..6376d9e4d0 100644 --- a/public/src/modules/translator.js +++ b/public/src/modules/translator.js @@ -576,23 +576,29 @@ adaptor.getTranslations(language, namespace, callback); }, - toggleTimeagoShorthand: function toggleTimeagoShorthand() { - var tmp = assign({}, jQuery.timeago.settings.strings); - jQuery.timeago.settings.strings = assign({}, adaptor.timeagoShort); - adaptor.timeagoShort = assign({}, tmp); + toggleTimeagoShorthand: function toggleTimeagoShorthand(callback) { + function toggle() { + var tmp = assign({}, jQuery.timeago.settings.strings); + jQuery.timeago.settings.strings = assign({}, adaptor.timeagoShort); + adaptor.timeagoShort = assign({}, tmp); + if (typeof callback === 'function') { + callback(); + } + } + + if (!adaptor.timeagoShort) { + var languageCode = utils.userLangToTimeagoCode(config.userLang); + var originalSettings = assign({}, jQuery.timeago.settings.strings); + jQuery.getScript(config.relative_path + '/assets/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '-short.js').done(function () { + adaptor.timeagoShort = assign({}, jQuery.timeago.settings.strings); + jQuery.timeago.settings.strings = assign({}, originalSettings); + toggle(); + }); + } else { + toggle(); + } }, prepareDOM: function prepareDOM() { - // Load the appropriate timeago locale file, - // and correct NodeBB language codes to timeago codes, if necessary - var languageCode = utils.userLangToTimeagoCode(config.userLang); - - adaptor.timeagoShort = assign({}, jQuery.timeago.settings.strings); - - jQuery.getScript(config.relative_path + '/assets/vendor/jquery/timeago/locales/jquery.timeago.' + languageCode + '-short.js').done(function () { - // Switch back to long-form - adaptor.toggleTimeagoShorthand(); - }); - // Add directional code if necessary adaptor.translate('[[language:dir]]', function (value) { if (value && !$('html').attr('data-dir')) { From 75f97c1180a885f4e2e0089a6ea0a1b5a14fb0a8 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 21 Dec 2017 12:55:07 -0500 Subject: [PATCH 03/18] bump persona --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index af744e25b6..f87313afed 100644 --- a/install/package.json +++ b/install/package.json @@ -69,7 +69,7 @@ "nodebb-plugin-spam-be-gone": "0.5.1", "nodebb-rewards-essentials": "0.0.9", "nodebb-theme-lavender": "5.0.0", - "nodebb-theme-persona": "7.2.7", + "nodebb-theme-persona": "7.2.8", "nodebb-theme-slick": "1.1.2", "nodebb-theme-vanilla": "8.1.4", "nodebb-widget-essentials": "4.0.1", From 23dbb42130a4cb0a43dc4abdb4131715721a6edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 25 Dec 2017 11:06:52 -0500 Subject: [PATCH 04/18] closes #6182 --- src/socket.io/user/ban.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/socket.io/user/ban.js b/src/socket.io/user/ban.js index a61a9b83ee..66f98eb061 100644 --- a/src/socket.io/user/ban.js +++ b/src/socket.io/user/ban.js @@ -1,6 +1,7 @@ 'use strict'; var async = require('async'); +var winston = require('winston'); var user = require('../../user'); var meta = require('../../meta'); @@ -112,7 +113,12 @@ module.exports = function (SocketUser) { reason: reason, }; - emailer.send('banned', uid, data, next); + emailer.send('banned', uid, data, function (err) { + if (err) { + winston.error('[emailer.send] ' + err.message); + } + next(); + }); }, function (next) { user.ban(uid, until, reason, next); From c3f56e2ab584ebbd292686cb2c93f2845fd314ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 25 Dec 2017 22:26:24 -0500 Subject: [PATCH 05/18] closes #6197 --- src/upgrade.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/upgrade.js b/src/upgrade.js index ae0d70a4c0..f30a5f43d4 100644 --- a/src/upgrade.js +++ b/src/upgrade.js @@ -205,7 +205,7 @@ Upgrade.incrementProgress = function (value) { if (this.total) { percentage = Math.floor((this.current / this.total) * 100) + '%'; filled = Math.floor((this.current / this.total) * 15); - unfilled = Math.min(0, 15 - filled); + unfilled = Math.max(0, 15 - filled); } readline.cursorTo(process.stdout, 0); From 4217d06ad0d876e02cc60240089434aefc5a7f16 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Tue, 26 Dec 2017 09:24:52 +0000 Subject: [PATCH 06/18] Latest translations and fallbacks --- public/language/vi/admin/admin.json | 2 +- public/language/vi/admin/advanced/cache.json | 2 +- public/language/vi/admin/settings/email.json | 2 +- public/language/vi/category.json | 6 +- public/language/vi/email.json | 10 ++-- public/language/vi/error.json | 20 +++---- public/language/vi/global.json | 4 +- public/language/vi/language.json | 4 +- public/language/vi/notifications.json | 58 ++++++++++---------- public/language/vi/pages.json | 4 +- public/language/vi/search.json | 4 +- public/language/vi/success.json | 2 +- public/language/vi/topic.json | 20 +++---- public/language/vi/unread.json | 6 +- public/language/vi/user.json | 46 ++++++++-------- 15 files changed, 95 insertions(+), 95 deletions(-) diff --git a/public/language/vi/admin/admin.json b/public/language/vi/admin/admin.json index 726cef0e8b..8fdf8c210a 100644 --- a/public/language/vi/admin/admin.json +++ b/public/language/vi/admin/admin.json @@ -1,5 +1,5 @@ { - "alert.confirm-reload": "Bạn có thật sự muốn tải lại NodeBB", + "alert.confirm-reload": "Bạn có thật sự muốn xác lập lại NodeBB", "alert.confirm-restart": "Bạn có thật sự muốn khởi động lại NodeBB", "acp-title": "%1 | Bảng điểu khiển", diff --git a/public/language/vi/admin/advanced/cache.json b/public/language/vi/admin/advanced/cache.json index 505b1a4510..d8b94de7a9 100644 --- a/public/language/vi/admin/advanced/cache.json +++ b/public/language/vi/admin/advanced/cache.json @@ -1,5 +1,5 @@ { - "post-cache": "Cache bài viết", + "post-cache": "Bộ nhớ đệm bài viết", "posts-in-cache": "Cache cho bài viết", "average-post-size": "Kích thước bài viết", "length-to-max": "Độ dài / Tối Đa", diff --git a/public/language/vi/admin/settings/email.json b/public/language/vi/admin/settings/email.json index 50ad2e06ea..96fb624791 100644 --- a/public/language/vi/admin/settings/email.json +++ b/public/language/vi/admin/settings/email.json @@ -1,5 +1,5 @@ { - "email-settings": "Email Settings", + "email-settings": "Thiết lập Email", "address": "Email Address", "address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.", "from": "From Name", diff --git a/public/language/vi/category.json b/public/language/vi/category.json index 494fa8b153..f9cf6a500a 100644 --- a/public/language/vi/category.json +++ b/public/language/vi/category.json @@ -8,13 +8,13 @@ "no_replies": "Chưa có bình luận nào", "no_new_posts": "Không có bài mới.", "share_this_category": "Chia sẻ chuyên mục này", - "watch": "Theo dõi", + "watch": "Quan tâm", "ignore": "Bỏ qua", - "watching": "Đang theo dõi", + "watching": "Đang quan tâm", "ignoring": "Bỏ qua", "watching.description": "Hiện các chủ đề chưa đọc", "ignoring.description": "Không hiện những chủ đề chưa đọc", "watch.message": "Bạn đang theo dõi các cập nhật ở chuyên mục này và các chuyên mục con", "ignore.message": "Bạn đang bỏ qua các cập nhật ở chuyên mục này và các chuyên mục con", - "watched-categories": "Các chuyên mục đã xem" + "watched-categories": "Các chuyên mục đã quan tâm" } \ No newline at end of file diff --git a/public/language/vi/email.json b/public/language/vi/email.json index 5199f136a5..0dc0cc8be6 100644 --- a/public/language/vi/email.json +++ b/public/language/vi/email.json @@ -30,12 +30,12 @@ "notif.chat.unsub.info": "Thông báo tin nhắn này được gửi tới dựa theo cài đặt theo dõi của bạn.", "notif.post.cta": "Nhấn vào đây để đọc toàn bộ chủ đề", "notif.post.unsub.info": "Thông báo bài viết này được gửi cho bạn dựa tên thiết lập nhận thông báo của bạn", - "notif.cta": "Click here to go to forum", + "notif.cta": "Click vào đây để đi đến diễn đàn", "test.text1": "Đây là email kiểm tra xem chức năng gửi mail trên hệ thống NodeBB của bạn có hoạt động tốt hay không.", "unsub.cta": "Nhấn vào đây để thay đổi cài đặt.", - "banned.subject": "You have been banned from %1", - "banned.text1": "The user %1 has been banned from %2.", - "banned.text2": "This ban will last until %1.", - "banned.text3": "This is the reason why you have been banned:", + "banned.subject": "Bạn đã bị cấm khỏi %1", + "banned.text1": "Người dùng %1 đã bị cấm khỏi %2", + "banned.text2": "Lệnh cấm sẽ kéo dài đến %1.", + "banned.text3": "Đây là lý do tại sao bạn bị cấm:", "closing": "Xin cảm ơn!" } \ No newline at end of file diff --git a/public/language/vi/error.json b/public/language/vi/error.json index 894ab8a3c6..490b661dd3 100644 --- a/public/language/vi/error.json +++ b/public/language/vi/error.json @@ -1,20 +1,20 @@ { "invalid-data": "Dữ liệu không hợp lệ", - "invalid-json": "Invalid JSON", + "invalid-json": "JSON không hợp lệ", "not-logged-in": "Có vẻ bạn chưa đăng nhập.", "account-locked": "Tài khoản của bạn đang tạm thời bị khóa", "search-requires-login": "Bạn cần phải có tài khoản để tìm kiếm - vui lòng đăng nhập hoặc đăng ký.", - "goback": "Press back to return to the previous page", + "goback": "Nhấn back để quay về trang trước", "invalid-cid": "ID chuyên mục không hợp lệ", "invalid-tid": "ID chủ đề không hợp lệ", "invalid-pid": "ID bài viết không hợp lệ", "invalid-uid": "ID tài khoản không hợp lệ", "invalid-username": "Tên đăng nhập không hợp lệ", "invalid-email": "Email không hợp lệ", - "invalid-title": "Invalid title", + "invalid-title": "Tiêu đề không hợp lệ", "invalid-user-data": "Dữ liệu tài khoản không hợp lệ", "invalid-password": "Mật khẩu không hợp lệ", - "invalid-login-credentials": "Invalid login credentials", + "invalid-login-credentials": "Thông tin đăng nhập không hợp lệ", "invalid-username-or-password": "Xin hãy nhập cả tên đăng nhập và mật khẩu", "invalid-search-term": "Từ khóa không hợp lệ", "csrf-invalid": "Hệ thống không cho phép bạn đăng nhập, có vẻ như phiên đăng nhập cũ đã hết hạn. Hãy thử đăng nhập lại", @@ -33,7 +33,7 @@ "password-too-long": "Mật khẩu quá dài", "user-banned": "Tài khoản bị ban", "user-banned-reason": "Xin lỗi, tài khoản này đã bị khóa (Lí do: %1)", - "user-banned-reason-until": "Sorry, this account has been banned until %1 (Reason: %2)", + "user-banned-reason-until": "Rất tiếc, tài khoản này đã bị cấm cho đến %1 (Lý do: %2)", "user-too-new": "Rất tiếc, bạn phải chờ %1 giây để đăng bài viết đầu tiên.", "blacklisted-ip": "Rất tiếc, địa chỉ IP của bạn đã bị cấm khỏi cộng đồng. Nếu bạn cảm thấy có gì không đúng, hãy liên lạc với người quản trị.", "ban-expiry-missing": "Vui lòng cung cấp ngày hết hạn của lệnh cấm", @@ -81,7 +81,7 @@ "cant-ban-other-admins": "Bạn không thể cấm được các quản trị viên khác", "cant-remove-last-admin": "Bạn là quản trị viên duy nhất. Hãy cho thành viên khác làm quản trị viên trước khi huỷ bỏ quyền quản trị của bạn.", "cant-delete-admin": "Hủy quyền quản trị của tài khoản này trước khi xóa", - "invalid-image": "Invalid image", + "invalid-image": "Hình ảnh không hợp lệ", "invalid-image-type": "Định dạng ảnh không hợp lệ. Những định dạng được cho phép là: %1", "invalid-image-extension": "Định dạng ảnh không hợp lệ", "invalid-file-type": "Định dạng file không hợp lệ. Những định dạng được cho phép là: %1", @@ -109,7 +109,7 @@ "chat-disabled": "Hệ thống chat đã bị vô hiệu hoá", "too-many-messages": "Bạn đã gửi quá nhiều tin nhắn, vui lòng đợi trong giây lát.", "invalid-chat-message": "Tin nhắn không hợp lệ", - "chat-message-too-long": "Chat messages can not be longer than %1 characters.", + "chat-message-too-long": "Thông điệp không thể dài hơn %1 chữ.", "cant-edit-chat-message": "Bạn không được phép chỉnh sửa tin nhắn này", "cant-remove-last-user": "Bạn không thể xoá thành viên cuối cùng", "cant-delete-chat-message": "Bạn không được phép xoá tin nhắn này", @@ -119,13 +119,13 @@ "not-enough-reputation-to-downvote": "Bạn không có đủ phiếu tín nhiệm để downvote bài này", "not-enough-reputation-to-flag": "Bạn không đủ tín nhiệm để đánh dấu bài viết này", "already-flagged": "Bạn đã gắn cờ cho bài viết này", - "self-vote": "You cannot vote on your own post", + "self-vote": "Bạn không thể tự bầu cho bài đăng của mình", "reload-failed": "NodeBB gặp lỗi trong khi tải lại: \"%1\". NodeBB sẽ tiếp tục hoạt động với dữ liệu trước đó, tuy nhiên bạn nên tháo gỡ những gì bạn vừa thực hiện trước khi tải lại.", "registration-error": "Lỗi đăng kí", "parse-error": "Có gì không ổn khi nhận kết quả từ máy chủ", "wrong-login-type-email": "Xin vui lòng sửa dụng email của bạn để đăng nhập", "wrong-login-type-username": "Vui lòng sử dụng tên đăng nhập của bạn để đăng nhập", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", + "sso-registration-disabled": "Không thể đăng ký với tài khoản %1, vui lòng đăng ký với địa chỉ email của bạn", "invite-maximum-met": "Bạn đã sử dụng hết số lượng lời mời bạn có thể gửi (%1 đã gửi trên tổng số %2 được cho phép)", "no-session-found": "Không tìm thấy phiên đăng nhập!", "not-in-room": "Thành viên không có trong phòng", @@ -135,5 +135,5 @@ "invalid-home-page-route": "Đường dẫn trang chủ không hợp lệ", "invalid-session": "Không đúng session", "invalid-session-text": "Có vẻ như phiên đăng nhập của bạn đã không còn hoạt động nữa, hoặc không còn đúng với thông tin trên máy chủ. Vui lòng tải lại trang này", - "no-topics-selected": "No topics selected!" + "no-topics-selected": "Không có chủ đề nào đang được chọn!" } \ No newline at end of file diff --git a/public/language/vi/global.json b/public/language/vi/global.json index bca009cd8c..5049b7bed2 100644 --- a/public/language/vi/global.json +++ b/public/language/vi/global.json @@ -104,6 +104,6 @@ "cookies.accept": "Đã rõ!", "cookies.learn_more": "Xem thêm", "edited": "Đã cập nhật", - "disabled": "Disabled", - "select": "Select" + "disabled": "Bị khóa", + "select": "Chọn" } \ No newline at end of file diff --git a/public/language/vi/language.json b/public/language/vi/language.json index f0787f748a..e6b933b8af 100644 --- a/public/language/vi/language.json +++ b/public/language/vi/language.json @@ -1,5 +1,5 @@ { - "name": "Tiếng Việt", + "name": "Tiếng Anh (Anh Quốc/Ca-na-da)", "code": "vi", - "dir": "ltr" + "dir": "Trái qua phải" } \ No newline at end of file diff --git a/public/language/vi/notifications.json b/public/language/vi/notifications.json index 1f3e674954..3605d52d4a 100644 --- a/public/language/vi/notifications.json +++ b/public/language/vi/notifications.json @@ -9,17 +9,17 @@ "continue_to": "Tiếp tục tới %1", "return_to": "Quay lại %1", "new_notification": "Thông báo mới", - "new_notification_from": "You have a new Notification from %1", + "new_notification_from": "Bạn nhận được 1 thông báo từ %1", "you_have_unread_notifications": "Bạn có thông báo chưa đọc", - "all": "All", - "topics": "Topics", - "replies": "Replies", - "chat": "Chats", - "follows": "Follows", - "upvote": "Upvotes", - "new-flags": "New Flags", - "my-flags": "Flags assigned to me", - "bans": "Bans", + "all": "Toàn bộ", + "topics": "Chủ đề", + "replies": "Phản hồi", + "chat": "Thông điệp", + "follows": "Lượt theo dõi", + "upvote": "Lượt thích", + "new-flags": "Cảnh báo mới", + "my-flags": "Cảnh báo dành cho tôi", + "bans": "Cấm", "new_message_from": "Tin nhắn mới từ %1", "upvoted_your_post_in": "%1 đã bình chọn bài của bạn trong %2.", "upvoted_your_post_in_dual": "%1%2 đã tán thành với bài viết của bạn trong %3.", @@ -29,9 +29,9 @@ "user_flagged_post_in": "%1 gắn cờ 1 bài trong %2", "user_flagged_post_in_dual": "%1%2 đã gắn cờ một bài viết trong %3", "user_flagged_post_in_multiple": "%1 và %2 người khác đã gắn cờ bài viết của bạn trong %3", - "user_flagged_user": "%1 flagged a user profile (%2)", - "user_flagged_user_dual": "%1 and %2 flagged a user profile (%3)", - "user_flagged_user_multiple": "%1 and %2 others flagged a user profile (%3)", + "user_flagged_user": "%1 đã cảnh báo một người dùng (%2)", + "user_flagged_user_dual": "%1%2 đã cảnh báo một người dùng (%3)", + "user_flagged_user_multiple": "%1 và %2 người khác đã cảnh báo người dùng (%3)", "user_posted_to": "%1 đã trả lời %2", "user_posted_to_dual": "%1%2 đã trả lời: %3", "user_posted_to_multiple": "%1 và %2 người khác đã trả lời: %3", @@ -41,24 +41,24 @@ "user_started_following_you_multiple": "%1 và %2 người khác đã bắt đầu theo dõi bạn.", "new_register": "%1 đã gửi một yêu cầu tham gia.", "new_register_multiple": "Có %1 đơn đăng ký đang chờ xem xét.", - "flag_assigned_to_you": "Flag %1 has been assigned to you", - "post_awaiting_review": "Post awaiting review", + "flag_assigned_to_you": "Cảnh báo %1 đã được ghi nhận đối với bạn", + "post_awaiting_review": "Bài đăng đang chờ xét duyệt", "email-confirmed": "Đã xác nhận email", "email-confirmed-message": "Cảm ơn bạn đã xác nhận địa chỉ email của bạn. Tài khoản của bạn đã được kích hoạt đầy đủ.", "email-confirm-error-message": "Đã có lỗi khi xác nhận địa chỉ email. Có thể đoạn mã không đúng hoặc đã hết hạn.", "email-confirm-sent": "Email xác nhận đã gửi.", - "none": "None", - "notification_only": "Notification Only", - "email_only": "Email Only", - "notification_and_email": "Notification & Email", - "notificationType_upvote": "When someone upvotes your post", - "notificationType_new-topic": "When someone you follow posts a topic", - "notificationType_new-reply": "When a new reply is posted in a topic you are watching", - "notificationType_follow": "When someone starts following you", - "notificationType_new-chat": "When you receive a chat message", - "notificationType_group-invite": "When you receive a group invite", - "notificationType_new-register": "When someone gets added to registration queue", - "notificationType_post-queue": "When a new post is queued", - "notificationType_new-post-flag": "When a post is flagged", - "notificationType_new-user-flag": "When a user is flagged" + "none": "Hoàn toàn không", + "notification_only": "Chỉ thông báo", + "email_only": "Chỉ email", + "notification_and_email": "Cả thông báo & email", + "notificationType_upvote": "Khi ai đó thích bài đăng của bạn", + "notificationType_new-topic": "Khi người bạn theo dõi đăng một chủ đề", + "notificationType_new-reply": "Khi phản hồi được đăng trong chủ đề bạn đang quan tâm", + "notificationType_follow": "Khi ai đó theo dõi bạn", + "notificationType_new-chat": "Khi bạn nhận được thông điệp chat", + "notificationType_group-invite": "Khi bạn nhận được lời mời gia nhập nhóm", + "notificationType_new-register": "Khi ai đó được thêm vào lượt chờ đăng ký", + "notificationType_post-queue": "Khi bài đăng được thêm vào lượt chờ", + "notificationType_new-post-flag": "Khi bài đăng được cảnh báo", + "notificationType_new-user-flag": "Khi người dùng bị cảnh báo" } \ No newline at end of file diff --git a/public/language/vi/pages.json b/public/language/vi/pages.json index febfef2060..c70ca5e399 100644 --- a/public/language/vi/pages.json +++ b/public/language/vi/pages.json @@ -43,8 +43,8 @@ "account/groups": "Nhóm của %1", "account/bookmarks": "Đã bookmark %1's chủ đề", "account/settings": "Thiết lập", - "account/watched": "Chủ đề %1 đang theo dõi", - "account/ignored": "Topics ignored by %1", + "account/watched": "Chủ đề được quan tâm bởi %1", + "account/ignored": "Các chủ đề đã bị phớt lờ bởi %1", "account/upvoted": "Bài viết %1 tán thành", "account/downvoted": "Bài viết %1 phản đối", "account/best": "Bài viết hay nhất của %1", diff --git a/public/language/vi/search.json b/public/language/vi/search.json index 7e4211c2c8..fc4e78954b 100644 --- a/public/language/vi/search.json +++ b/public/language/vi/search.json @@ -8,11 +8,11 @@ "posted-by": "Đăng bởi", "in-categories": "Nằm trong chuyên mục", "search-child-categories": "Tìm kiếm chuyên mục con", - "has-tags": "Has tags", + "has-tags": "Có thẻ bên trong", "reply-count": "Số lượt trả lời", "at-least": "Tối thiểu", "at-most": "Tối đa", - "relevance": "Relevance", + "relevance": "Mức độ liên quan", "post-time": "Thời điểm đăng bài", "newer-than": "Mới hơn", "older-than": "Cũ hơn", diff --git a/public/language/vi/success.json b/public/language/vi/success.json index aff07d84ad..5b5e438697 100644 --- a/public/language/vi/success.json +++ b/public/language/vi/success.json @@ -1,7 +1,7 @@ { "success": "Thành công", "topic-post": "Bạn đã gửi bài thành công", - "post-queued": "Your post is queued for approval.", + "post-queued": "Bài đăng của bạn đang được chờ xét duyệt.", "authentication-successful": "Xác thực thành công", "settings-saved": "Đã lưu thiết lập" } \ No newline at end of file diff --git a/public/language/vi/topic.json b/public/language/vi/topic.json index 6f8290fa75..c59553269d 100644 --- a/public/language/vi/topic.json +++ b/public/language/vi/topic.json @@ -14,7 +14,7 @@ "quote": "Trích dẫn", "reply": "Trả lời", "replies_to_this_post": "%1 trả lời", - "one_reply_to_this_post": "1 Reply", + "one_reply_to_this_post": "1 Phản hồi", "last_reply_time": "Trả lời cuối cùng", "reply-as-topic": "Trả lời dưới dạng chủ đề", "guest-login-reply": "Hãy đăng nhập để trả lời", @@ -40,13 +40,13 @@ "markAsUnreadForAll.success": "Chủ đề đã được đánh dấu là chưa đọc toàn bộ", "mark_unread": "Đánh dấu chưa đọc", "mark_unread.success": "Chủ đề đã được đánh dấu chưa đọc.", - "watch": "Theo dõi", - "unwatch": "Ngừng theo dõi", + "watch": "Quan tâm", + "unwatch": "Ngừng quan tâm", "watch.title": "Được thông báo khi có trả lời mới trong chủ đề này", - "unwatch.title": "Ngừng theo dõi chủ đề này", + "unwatch.title": "Ngừng quan tâm chủ đề này", "share_this_post": "Chia sẻ bài viết này", - "watching": "Đang xem", - "not-watching": "Không xem", + "watching": "Đang quan tâm", + "not-watching": "Không để ý", "ignoring": "Bỏ qua", "watching.description": "Thông báo cho tôi các trả lời mới.
Hiển thị các mục chưa đọc", "not-watching.description": "Không thông báo tôi các trả lời mới.
Hiển thị mục chưa đọc nếu danh mục bị bỏ qua.", @@ -59,7 +59,7 @@ "thread_tools.unlock": "Mở khóa chủ đề", "thread_tools.move": "Chuyển chủ đề", "thread_tools.move_all": "Chuyển tất cả", - "thread_tools.select_category": "Select Category", + "thread_tools.select_category": "Chọn chuyện mục", "thread_tools.fork": "Tạo bản sao chủ đề", "thread_tools.delete": "Xóa chủ đề", "thread_tools.delete-posts": "Xoá bài viết", @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Bạn có muốn phục hồi chủ đề này?", "thread_tools.purge": "Xóa hẳn chủ đề", "thread_tools.purge_confirm": "Bạn có muốn xóa hẳn chủ đề này?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Xác nhập chủ đề", + "thread_tools.merge": "Xác nhập", "topic_move_success": "Đã chuyển thành công chủ đề này sang %1", "post_delete_confirm": "Bạn có chắc là muốn xóa bài gửi này không?", "post_restore_confirm": "Bạn có chắc là muốn phục hồi bài gửi này không?", @@ -91,7 +91,7 @@ "fork_pid_count": "%1 bài viết(s) đã được gửi", "fork_success": "Tạo bản sao thành công! Nhấn vào đây để chuyển tới chủ đề vừa tạo.", "delete_posts_instruction": "Chọn những bài viết bạn muốn xoá", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Click vào các chủ đề bạn muốn xác nhập", "composer.title_placeholder": "Nhập tiêu đề cho chủ đề của bạn tại đây...", "composer.handle_placeholder": "Tên", "composer.discard": "Huỷ bỏ", diff --git a/public/language/vi/unread.json b/public/language/vi/unread.json index e0609d5e04..3c9d149bac 100644 --- a/public/language/vi/unread.json +++ b/public/language/vi/unread.json @@ -9,7 +9,7 @@ "topics_marked_as_read.success": "Chủ đề được đánh dấu đã đọc", "all-topics": "Toàn bộ chủ đề", "new-topics": "Các chủ đề mới", - "watched-topics": "Các chủ đề đã xem", - "unreplied-topics": "Unreplied Topics", - "multiple-categories-selected": "Multiple Selected" + "watched-topics": "Các chủ đề đuợc quan tâm", + "unreplied-topics": "Chủ đề chưa có phản hồi nào", + "multiple-categories-selected": "Chọn nhiều cùng lúc" } \ No newline at end of file diff --git a/public/language/vi/user.json b/public/language/vi/user.json index fb7413330f..03fb99398e 100644 --- a/public/language/vi/user.json +++ b/public/language/vi/user.json @@ -24,17 +24,17 @@ "profile_views": "Số lượt người ghé thăm", "reputation": "Mức uy tín", "bookmarks": "Bookmarks", - "watched": "Đã theo dõi", - "ignored": "Ignored", + "watched": "Đã quan tâm", + "ignored": "Phớt lờ", "followers": "Số người theo dõi", "following": "Đang theo dõi", "aboutme": "Giới thiệu bản thân", "signature": "Chữ ký", "birthday": "Ngày sinh ", "chat": "Chat", - "chat_with": "Continue chat with %1", - "new_chat_with": "Start new chat with %1", - "flag-profile": "Flag Profile", + "chat_with": "Tiếp tục chat với %1", + "new_chat_with": "Bắt đầu chat với %1", + "flag-profile": "Cảnh báo người dùng", "follow": "Theo dõi", "unfollow": "Hủy theo dõi", "more": "Xem thêm", @@ -61,14 +61,14 @@ "username_taken_workaround": "Tên truy cập này đã tồn tại, vì vậy chúng tôi đã sửa đổi nó một chút. Tên truy cập của bạn giờ là %1", "password_same_as_username": "Mật khẩu của bạn trùng với tên đăng nhập, vui lòng chọn một mật khẩu khác.", "password_same_as_email": "Mật khẩu của bạn trùng với email của bạn, hãy chọn mật khẩu khác.", - "weak_password": "Weak password.", + "weak_password": "Mật khẩu yếu", "upload_picture": "Tải lên hình ảnh", "upload_a_picture": "Tải lên một hình ảnh", "remove_uploaded_picture": "Xoá ảnh đã tải lên", "upload_cover_picture": "Tải ảnh bìa lên", - "remove_cover_picture_confirm": "Are you sure you want to remove the cover picture?", - "crop_picture": "Crop picture", - "upload_cropped_picture": "Crop and upload", + "remove_cover_picture_confirm": "Bạn có thật sự muốn xóa hình ảnh này?", + "crop_picture": "Cắt nhỏ hình ảnh", + "upload_cropped_picture": "Cắt nhỏ và đăng tải", "settings": "Thiết lập", "show_email": "Hiện Email của tôi", "show_fullname": "Hiện tên đầy đủ", @@ -84,8 +84,8 @@ "follows_no_one": "Người dùng này hiện chưa theo dõi ai :(", "has_no_posts": "Thành viên này chưa đăng bài viết nào cả.", "has_no_topics": "Thành viên này chưa đăng chủ đề nào cả.", - "has_no_watched_topics": "Thành viên này chưa theo dõi chủ đề nào cả.", - "has_no_ignored_topics": "This user hasn't ignored any topics yet.", + "has_no_watched_topics": "Thành viên này chưa quan tâm chủ đề nào cả.", + "has_no_ignored_topics": "Người dùng này chưa bỏ qua bất cứ chủ đề nào.", "has_no_upvoted_posts": "Thành viên này chưa tán thành bài viết nào cả.", "has_no_downvoted_posts": "Thành viên này chưa phản đối bài viết nào cả.", "has_no_voted_posts": "Thành viên này không có bài viết nào được tán thành.", @@ -94,18 +94,18 @@ "paginate_description": "Phân trang chủ đề và bài viết thay vì sử dụng cuộn vô hạn", "topics_per_page": "Số chủ đề trong một trang", "posts_per_page": "Số bài viết trong một trang", - "max_items_per_page": "Maximum %1", + "max_items_per_page": "Tối đa %1", "notification_sounds": "Phát âm thanh khi bạn nhận được thông báo mới", "notifications_and_sounds": "Thông báo & Âm thanh", "incoming-message-sound": "Âm báo tin nhắn tới", "outgoing-message-sound": "Âm báo tin nhắn đi", "notification-sound": "Âm thanh thông báo", "no-sound": "Không có âm thanh", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Tần suất thông báo lượt thích", + "upvote-notif-freq.all": "Toàn bộ lượt thích", + "upvote-notif-freq.everyTen": "Mỗi 10 lượt thích", + "upvote-notif-freq.logarithmic": "Cứ mỗi 10, 100, 1000...", + "upvote-notif-freq.disabled": "Bị khóa", "browsing": "Đang xem cài đặt", "open_links_in_new_tab": "Mở link trong tab mới.", "enable_topic_searching": "Bật In-topic Searching", @@ -113,8 +113,8 @@ "delay_image_loading": "Việc tải ảnh đang bị chậm", "image_load_delay_help": "Nếu được bật, toàn bộ ảnh trong chủ đề sẽ chỉ được tải khi người dùng kéo chuột tới", "scroll_to_my_post": "Sau khi đăng một trả lời thì hiển thị bài viết mới", - "follow_topics_you_reply_to": "Theo dõi những chủ đề mà bạn đã bình luận", - "follow_topics_you_create": "Theo dõi những chủ đề do bạn t", + "follow_topics_you_reply_to": "Những chủ đề bạn quan tâm và từng bình luận", + "follow_topics_you_create": "Theo dõi chủ đề bạn tạo", "grouptitle": "Tên nhóm", "no-group-title": "Không có tên nhóm", "select-skin": "Chọn một giao diện", @@ -126,9 +126,9 @@ "sso.title": "Đăng nhập một lần", "sso.associated": "Đã liên kết với", "sso.not-associated": "Nhấn vào đây để liên kết với", - "sso.dissociate": "Dissociate", - "sso.dissociate-confirm-title": "Confirm Dissociation", - "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", + "sso.dissociate": "Tách khỏi", + "sso.dissociate-confirm-title": "Xác nhận việc tách khỏi", + "sso.dissociate-confirm": "Bạn có chắc chắn muốn tách tài khoản của mình khỏi %1?", "info.latest-flags": "Cờ mới nhất", "info.no-flags": "Không có bài viết nào bị gắn c", "info.ban-history": "Lịch sử khóa tài khoản gần đây", @@ -141,5 +141,5 @@ "info.email-history": "Lịch sử email", "info.moderation-note": "Ghi chú quản lí", "info.moderation-note.success": "Đã lưu ghi chú quản l", - "info.moderation-note.add": "Add note" + "info.moderation-note.add": "Thêm ghi chú" } \ No newline at end of file From 783d2eb073fc1c58c367790d571e0523154cd3ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 26 Dec 2017 12:00:06 -0500 Subject: [PATCH 07/18] remove console.log --- public/src/modules/alerts.js | 1 - 1 file changed, 1 deletion(-) diff --git a/public/src/modules/alerts.js b/public/src/modules/alerts.js index 62f6da940e..0094c88f96 100644 --- a/public/src/modules/alerts.js +++ b/public/src/modules/alerts.js @@ -117,7 +117,6 @@ define('alerts', ['translator', 'components', 'benchpress'], function (translato alert .on('mouseenter', function () { $(this).css('transition-duration', 0); - console.log(this); }); } From 9628956a561c1597e6783bda8cd1dce5b0e3788d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 27 Dec 2017 11:55:45 -0500 Subject: [PATCH 08/18] closes #6199 global widgets will appear after page widgets --- src/widgets/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/index.js b/src/widgets/index.js index 968a5e7a9e..1d60664247 100644 --- a/src/widgets/index.js +++ b/src/widgets/index.js @@ -31,7 +31,7 @@ widgets.render = function (uid, options, callback) { var returnData = {}; async.each(locations, function (location, done) { - widgetsByLocation[location] = (data.global[location] || []).concat(data[options.template][location] || []); + widgetsByLocation[location] = (data[options.template][location] || []).concat(data.global[location] || []); if (!widgetsByLocation[location].length) { return done(null, { location: location, widgets: [] }); From 53e7aa0e70a358c9546cfed1e104eea505fa5e92 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 27 Dec 2017 14:12:52 -0500 Subject: [PATCH 09/18] bump emoji plugin @pitaj --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index f87313afed..5192c5a862 100644 --- a/install/package.json +++ b/install/package.json @@ -61,7 +61,7 @@ "nconf": "^0.9.1", "nodebb-plugin-composer-default": "6.0.7", "nodebb-plugin-dbsearch": "2.0.9", - "nodebb-plugin-emoji": "2.0.7", + "nodebb-plugin-emoji": "2.0.8", "nodebb-plugin-emoji-android": "2.0.0", "nodebb-plugin-markdown": "8.2.2", "nodebb-plugin-mentions": "2.2.2", From f9202aeb05d4f12ec92881737ae31cb702a523df Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 27 Dec 2017 14:14:10 -0500 Subject: [PATCH 10/18] reading_comprehension--; @pitaj --- install/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/package.json b/install/package.json index 5192c5a862..edb46a26f7 100644 --- a/install/package.json +++ b/install/package.json @@ -61,7 +61,7 @@ "nconf": "^0.9.1", "nodebb-plugin-composer-default": "6.0.7", "nodebb-plugin-dbsearch": "2.0.9", - "nodebb-plugin-emoji": "2.0.8", + "nodebb-plugin-emoji": "2.0.9", "nodebb-plugin-emoji-android": "2.0.0", "nodebb-plugin-markdown": "8.2.2", "nodebb-plugin-mentions": "2.2.2", From cadea35cff311dcba106edf7c2b411ac9da37dab Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Wed, 27 Dec 2017 21:48:01 +0000 Subject: [PATCH 11/18] Incremented version number - v1.7.3 --- install/package.json | 168 +++++++++++++++++++++---------------------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/install/package.json b/install/package.json index edb46a26f7..c51992816c 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "1.7.2", + "version": "1.7.3", "homepage": "http://www.nodebb.org", "repository": { "type": "git", @@ -17,89 +17,89 @@ "coveralls": "nyc report --reporter=text-lcov | coveralls && rm -r coverage" }, "dependencies": { - "ace-builds": "^1.2.9", - "async": "2.6.0", - "autoprefixer": "7.1.6", - "bcryptjs": "2.4.3", - "benchpressjs": "^1.2.0", - "body-parser": "^1.18.2", - "bootstrap": "^3.3.7", - "chart.js": "^2.7.0", - "colors": "^1.1.2", - "compression": "^1.7.1", - "commander": "^2.11.0", - "connect-ensure-login": "^0.1.1", - "connect-flash": "^0.1.1", - "connect-mongo": "2.0.0", - "connect-multiparty": "^2.1.0", - "connect-redis": "3.3.2", - "cookie-parser": "^1.4.3", - "cron": "^1.3.0", - "cropperjs": "^1.1.3", - "csurf": "^1.9.0", - "daemon": "^1.1.0", - "express": "^4.16.2", - "express-session": "^1.15.6", - "express-useragent": "1.0.8", - "graceful-fs": "^4.1.11", - "html-to-text": "3.3.0", - "ipaddr.js": "^1.5.4", - "jimp": "0.2.28", - "jquery": "^3.2.1", - "jsesc": "2.5.1", - "json-2-csv": "^2.1.2", - "less": "^2.7.2", - "lodash": "^4.17.4", - "logrotate-stream": "^0.2.5", - "lru-cache": "4.1.1", - "material-design-lite": "^1.3.0", - "mime": "^2.0.3", - "mkdirp": "^0.5.1", - "mongodb": "2.2.33", - "morgan": "^1.9.0", - "mousetrap": "^1.6.1", - "nconf": "^0.9.1", - "nodebb-plugin-composer-default": "6.0.7", - "nodebb-plugin-dbsearch": "2.0.9", - "nodebb-plugin-emoji": "2.0.9", - "nodebb-plugin-emoji-android": "2.0.0", - "nodebb-plugin-markdown": "8.2.2", - "nodebb-plugin-mentions": "2.2.2", - "nodebb-plugin-soundpack-default": "1.0.0", - "nodebb-plugin-spam-be-gone": "0.5.1", - "nodebb-rewards-essentials": "0.0.9", - "nodebb-theme-lavender": "5.0.0", - "nodebb-theme-persona": "7.2.8", - "nodebb-theme-slick": "1.1.2", - "nodebb-theme-vanilla": "8.1.4", - "nodebb-widget-essentials": "4.0.1", - "nodemailer": "4.4.0", - "passport": "^0.4.0", - "passport-local": "1.0.0", - "postcss": "6.0.14", - "postcss-clean": "1.1.0", - "promise-polyfill": "^6.0.2", - "prompt": "^1.0.0", - "redis": "2.8.0", - "request": "2.83.0", - "rimraf": "2.6.2", - "rss": "^1.2.2", - "sanitize-html": "^1.14.1", - "semver": "^5.4.1", - "serve-favicon": "^2.4.5", - "sitemap": "^1.13.0", - "socket.io": "2.0.4", - "socket.io-client": "2.0.4", - "socket.io-redis": "5.2.0", - "socketio-wildcard": "2.0.0", - "spdx-license-list": "^3.0.1", - "toobusy-js": "^0.5.1", - "uglify-js": "^3.1.5", - "validator": "9.1.2", - "winston": "^2.4.0", - "xml": "^1.0.1", - "xregexp": "3.2.0", - "zxcvbn": "^4.4.2" + "ace-builds": "^1.2.9", + "async": "2.6.0", + "autoprefixer": "7.1.6", + "bcryptjs": "2.4.3", + "benchpressjs": "^1.2.0", + "body-parser": "^1.18.2", + "bootstrap": "^3.3.7", + "chart.js": "^2.7.0", + "colors": "^1.1.2", + "compression": "^1.7.1", + "commander": "^2.11.0", + "connect-ensure-login": "^0.1.1", + "connect-flash": "^0.1.1", + "connect-mongo": "2.0.0", + "connect-multiparty": "^2.1.0", + "connect-redis": "3.3.2", + "cookie-parser": "^1.4.3", + "cron": "^1.3.0", + "cropperjs": "^1.1.3", + "csurf": "^1.9.0", + "daemon": "^1.1.0", + "express": "^4.16.2", + "express-session": "^1.15.6", + "express-useragent": "1.0.8", + "graceful-fs": "^4.1.11", + "html-to-text": "3.3.0", + "ipaddr.js": "^1.5.4", + "jimp": "0.2.28", + "jquery": "^3.2.1", + "jsesc": "2.5.1", + "json-2-csv": "^2.1.2", + "less": "^2.7.2", + "lodash": "^4.17.4", + "logrotate-stream": "^0.2.5", + "lru-cache": "4.1.1", + "material-design-lite": "^1.3.0", + "mime": "^2.0.3", + "mkdirp": "^0.5.1", + "mongodb": "2.2.33", + "morgan": "^1.9.0", + "mousetrap": "^1.6.1", + "nconf": "^0.9.1", + "nodebb-plugin-composer-default": "6.0.7", + "nodebb-plugin-dbsearch": "2.0.9", + "nodebb-plugin-emoji": "2.0.9", + "nodebb-plugin-emoji-android": "2.0.0", + "nodebb-plugin-markdown": "8.2.2", + "nodebb-plugin-mentions": "2.2.2", + "nodebb-plugin-soundpack-default": "1.0.0", + "nodebb-plugin-spam-be-gone": "0.5.1", + "nodebb-rewards-essentials": "0.0.9", + "nodebb-theme-lavender": "5.0.0", + "nodebb-theme-persona": "7.2.8", + "nodebb-theme-slick": "1.1.2", + "nodebb-theme-vanilla": "8.1.4", + "nodebb-widget-essentials": "4.0.1", + "nodemailer": "4.4.0", + "passport": "^0.4.0", + "passport-local": "1.0.0", + "postcss": "6.0.14", + "postcss-clean": "1.1.0", + "promise-polyfill": "^6.0.2", + "prompt": "^1.0.0", + "redis": "2.8.0", + "request": "2.83.0", + "rimraf": "2.6.2", + "rss": "^1.2.2", + "sanitize-html": "^1.14.1", + "semver": "^5.4.1", + "serve-favicon": "^2.4.5", + "sitemap": "^1.13.0", + "socket.io": "2.0.4", + "socket.io-client": "2.0.4", + "socket.io-redis": "5.2.0", + "socketio-wildcard": "2.0.0", + "spdx-license-list": "^3.0.1", + "toobusy-js": "^0.5.1", + "uglify-js": "^3.1.5", + "validator": "9.1.2", + "winston": "^2.4.0", + "xml": "^1.0.1", + "xregexp": "3.2.0", + "zxcvbn": "^4.4.2" }, "devDependencies": { "coveralls": "^3.0.0", From e563e8ac82ad44ee113da20a0eaa0e83a6cc22f8 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Fri, 29 Dec 2017 09:24:50 +0000 Subject: [PATCH 12/18] Latest translations and fallbacks --- .../cs/admin/appearance/customise.json | 8 ++--- .../language/cs/admin/manage/post-queue.json | 2 +- public/language/cs/admin/menu.json | 4 +-- .../cs/admin/settings/notifications.json | 2 +- .../cs/admin/settings/pagination.json | 4 +-- public/language/cs/admin/settings/post.json | 4 +-- public/language/cs/admin/settings/user.json | 4 +-- public/language/cs/email.json | 2 +- public/language/cs/error.json | 10 +++--- public/language/cs/flags.json | 8 ++--- public/language/cs/notifications.json | 32 +++++++++---------- public/language/cs/pages.json | 2 +- public/language/cs/topic.json | 6 ++-- public/language/cs/unread.json | 4 +-- public/language/cs/user.json | 20 ++++++------ public/language/nl/email.json | 4 +-- public/language/nl/error.json | 6 ++-- public/language/nl/notifications.json | 30 ++++++++--------- public/language/nl/topic.json | 6 ++-- public/language/nl/user.json | 10 +++--- 20 files changed, 84 insertions(+), 84 deletions(-) diff --git a/public/language/cs/admin/appearance/customise.json b/public/language/cs/admin/appearance/customise.json index c22a869f80..0cd4e0f8da 100644 --- a/public/language/cs/admin/appearance/customise.json +++ b/public/language/cs/admin/appearance/customise.json @@ -3,12 +3,12 @@ "custom-css.description": "Zadejte vlastní deklarace CSS, které budou použity na všechny ostatních styly.", "custom-css.enable": "Povolit uživatelské CSS", - "custom-js": "Custom Javascript", - "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", - "custom-js.enable": "Enable Custom Javascript", + "custom-js": "Uživatelský Javascript", + "custom-js.description": "Zadejte zde váš javascriptový kód. Bude spuštěn, jakmile se stránka plně načte.", + "custom-js.enable": "Povolit uživatelský Javascript", "custom-header": "Uživatelská hlavička", - "custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <head> section of your forum's markup. Script tags are allowed, but are discouraged, as the Custom Javascript tab is available.", + "custom-header.description": "Zde zadejte uživatelské HTML (mimo Meta Tags, atd.), které bude připojeno k části značek <head> vašeho fóra.. Značky pro „script” jsou povoleny, ale nedoporučujeme je, neboť je dostupný Uživatelský Javascript .", "custom-header.enable": "Povolit uživatelskou hlavičku", "custom-css.livereload": "Povolit aktuální znovu načtení", diff --git a/public/language/cs/admin/manage/post-queue.json b/public/language/cs/admin/manage/post-queue.json index 57fe1f8ab7..e46490b1b7 100644 --- a/public/language/cs/admin/manage/post-queue.json +++ b/public/language/cs/admin/manage/post-queue.json @@ -7,5 +7,5 @@ "content": "Obsah", "posted": "Přidáno", "reply-to": "Odpovědět na \"%1\"", - "content-editable": "You can click on individual content to edit before posting." + "content-editable": "Kvůli úpravám a před odesláním příspěvku můžete klikat na obsah." } \ No newline at end of file diff --git a/public/language/cs/admin/menu.json b/public/language/cs/admin/menu.json index 8b9812e514..7de94b7a5c 100644 --- a/public/language/cs/admin/menu.json +++ b/public/language/cs/admin/menu.json @@ -39,7 +39,7 @@ "section-appearance": "Vzhled", "appearance/themes": "Motivy", "appearance/skins": "Vzhledy", - "appearance/customise": "Custom Content (HTML/JS/CSS)", + "appearance/customise": "Uživatelský obsah (HTML/JS/CSS)", "section-extend": "Rozšířit", "extend/plugins": "Rozšíření", @@ -65,7 +65,7 @@ "logout": "Odhlásit", "view-forum": "Zobrazit fórum", - "search.placeholder": "Search for settings", + "search.placeholder": "Hledat nastavení", "search.no-results": "Žádné výsledky…", "search.search-forum": "Prohledat fórum pro ", "search.keep-typing": "Pište dále pro zobrazení výsledků…", diff --git a/public/language/cs/admin/settings/notifications.json b/public/language/cs/admin/settings/notifications.json index fd95917606..39bc83bdcb 100644 --- a/public/language/cs/admin/settings/notifications.json +++ b/public/language/cs/admin/settings/notifications.json @@ -2,5 +2,5 @@ "notifications": "Oznámení", "welcome-notification": "Uvítání", "welcome-notification-link": "Odkaz na uvítání", - "welcome-notification-uid": "Welcome Notification User (UID)" + "welcome-notification-uid": "Uvítání uživatele (UID)" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/pagination.json b/public/language/cs/admin/settings/pagination.json index dc1faf68da..34052b2a9c 100644 --- a/public/language/cs/admin/settings/pagination.json +++ b/public/language/cs/admin/settings/pagination.json @@ -3,9 +3,9 @@ "enable": "Stránkovat témata a příspěvky namísto nekonečného posouvání", "topics": "Stránkování témat", "posts-per-page": "Příspěvků na stránku", - "max-posts-per-page": "Maximum posts per page", + "max-posts-per-page": "Maximální množství příspěvků na stránku", "categories": "Stránkování kategorii", "topics-per-page": "Témat na stránku", - "max-topics-per-page": "Maximum topics per page", + "max-topics-per-page": "Maximální množství témat na stránku", "initial-num-load": "Počáteční počet témat pro načtení u nepřečtených, posledních a polulárních" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/post.json b/public/language/cs/admin/settings/post.json index 67d297b33b..de8832b501 100644 --- a/public/language/cs/admin/settings/post.json +++ b/public/language/cs/admin/settings/post.json @@ -3,8 +3,8 @@ "sorting.post-default": "Výchozí třídění příspěvků", "sorting.oldest-to-newest": "Od nejstarších po nejnovější", "sorting.newest-to-oldest": "Od nejnovějších po nejstarší", - "sorting.most-votes": "Dle hlasování", - "sorting.most-posts": "Most Posts", + "sorting.most-votes": "Dle počtu hlasů", + "sorting.most-posts": "Dle počtu příspěvků", "sorting.topic-default": "Výchozí třídění tématu", "restrictions": "Omezení příspěvků", "restrictions.post-queue": "Povolit frontu pro příspěvky", diff --git a/public/language/cs/admin/settings/user.json b/public/language/cs/admin/settings/user.json index 2ad41f23cf..e683492860 100644 --- a/public/language/cs/admin/settings/user.json +++ b/public/language/cs/admin/settings/user.json @@ -19,8 +19,8 @@ "themes": "Motivy", "disable-user-skins": "Zabránit uživateli ve výběru vlastního vzhledu", "account-protection": "Ochrana účtu", - "admin-relogin-duration": "Admin relogin duration (minutes)", - "admin-relogin-duration-help": "After a set amount of time accessing the admin section will require re-login, set to 0 to disable", + "admin-relogin-duration": "Doba pro opětovné přihlášení správce (minuty)", + "admin-relogin-duration-help": "Po nastavení počtu přístupu do správcovské části, bude vyžadováno opětovné přihlášení. Pro zakázání, nastavte na 0.", "login-attempts": "Počet pokusů o přihlášení za hodinu", "login-attempts-help": "Překročí-li pokusy o přihlášení uživatele/ů tuto hranici, účet bude uzamknut na určený čas", "lockout-duration": "Délka blokování účtu (v minutách)", diff --git a/public/language/cs/email.json b/public/language/cs/email.json index 1d1efa10e9..b330291160 100644 --- a/public/language/cs/email.json +++ b/public/language/cs/email.json @@ -30,7 +30,7 @@ "notif.chat.unsub.info": "Toto upozornění na chat vám bylo odesláno na základě vašeho nastavení odběru.", "notif.post.cta": "Klikněte zde pro přečtené celého tématu", "notif.post.unsub.info": "Toto upozornění na příspěvek vám bylo odesláno na základě vašeho nastavení odběru.", - "notif.cta": "Click here to go to forum", + "notif.cta": "Pro přejití na fórum, klikněte zde", "test.text1": "Tento testovací e-mail slouží k ověření, že je e-mailer správně nastaven pro práci s NodeBB.", "unsub.cta": "Chcete-li změnit tyto nastavení, klikněte zde.", "banned.subject": "Byl jste zablokován od %1", diff --git a/public/language/cs/error.json b/public/language/cs/error.json index 43ea641999..18576ee9bc 100644 --- a/public/language/cs/error.json +++ b/public/language/cs/error.json @@ -11,7 +11,7 @@ "invalid-uid": "Neplatné ID uživatele", "invalid-username": "Neplatné uživatelské jméno", "invalid-email": "Neplatný e-mail", - "invalid-title": "Invalid title", + "invalid-title": "Neplatný název", "invalid-user-data": "Neplatná uživatelská data", "invalid-password": "Neplatné heslo", "invalid-login-credentials": "Neplatné přihlašovací údaje", @@ -81,7 +81,7 @@ "cant-ban-other-admins": "Nemůžete zablokovat jiné správce.", "cant-remove-last-admin": "Jste jediným správcem. Před vlastním odebráním oprávnění správce nejdříve přidejte jiného uživatele jako správce", "cant-delete-admin": "Před odstraněním účtu mu nejprve odeberte oprávnění správce.", - "invalid-image": "Invalid image", + "invalid-image": "Neplatný obrázek", "invalid-image-type": "Neplatný typ obrázku. Povolené typy jsou: %1", "invalid-image-extension": "Neplatná přípona obrázku", "invalid-file-type": "Neplatný typ souboru. Povolené typy jsou: %1", @@ -119,13 +119,13 @@ "not-enough-reputation-to-downvote": "Nemáte dostatečnou reputaci pro vyjádření nesouhlasu u tohoto příspěvku", "not-enough-reputation-to-flag": "Pro označení tohoto příspěvku nemáte dostatečnou reputaci", "already-flagged": "Tento příspěvek jste již označil", - "self-vote": "You cannot vote on your own post", + "self-vote": "U svého vlastního příspěvku nemůžete hlasovat", "reload-failed": "Vyskytla se chyba v NodeBB při znovu načtení: \"%1\". NodeBB bude pokračovat v běhu na straně klienta, nicméně byste měl/a přenastavit zpět to, co jste udělal/a před opětovným načtením.", "registration-error": "Chyba při registraci", "parse-error": "Při analýze odpovědi serveru nastala chyba", "wrong-login-type-email": "Pro přihlášení použijte vaši e-mailovou adresu", "wrong-login-type-username": "Pro přihlášení použijte vaše uživatelské jméno", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", + "sso-registration-disabled": "Registrace byla zakázána pro účty - %1. Nejprve si zaregistrujte e-mailovou adresu", "invite-maximum-met": "Již jste pozval/a maximálně možný počet lidí (%1 z %2).", "no-session-found": "Nebyla nalezena relace s přihlášením.", "not-in-room": "Uživatel není přítomen v místnosti", @@ -135,5 +135,5 @@ "invalid-home-page-route": "Neplatná cesta k domovské stránkce", "invalid-session": "Nesoulad v relacích", "invalid-session-text": "Zdá se, že vše relace s přihlášením již není aktivní nebo již neodpovídá s relací na serveru. Obnovte prosím tuto stránku.", - "no-topics-selected": "No topics selected!" + "no-topics-selected": "Žádná vybraná témata." } \ No newline at end of file diff --git a/public/language/cs/flags.json b/public/language/cs/flags.json index e221f6965b..eb37572f8a 100644 --- a/public/language/cs/flags.json +++ b/public/language/cs/flags.json @@ -54,11 +54,11 @@ "modal-body": "Zadejte váš důvod k označení %1 %2 pro kontrolu. Nebo použijte tlačítko je-li dostupné.", "modal-reason-spam": "Spam", "modal-reason-offensive": "Urážlivé", - "modal-reason-other": "Other (specify below)", + "modal-reason-other": "Jiné (popište níže)", "modal-reason-custom": "Důvod ohlášení tohoto obsahu…", "modal-submit": "Předat hlášení", "modal-submit-success": "Obsah byl označen pro moderaci.", - "modal-submit-confirm": "Confirm Submission", - "modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?", - "modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined." + "modal-submit-confirm": "Potvrdit hlášení", + "modal-submit-confirm-text": "Již jste zadal/a nějaký důvod. Jste si jist/a, že chcete nahlásit pomocí rychlé zprávy?", + "modal-submit-confirm-text-help": "Zaslání rychlé zprávy přepíše jiné zadané důvody." } \ No newline at end of file diff --git a/public/language/cs/notifications.json b/public/language/cs/notifications.json index 8182ae3f47..284b394c6f 100644 --- a/public/language/cs/notifications.json +++ b/public/language/cs/notifications.json @@ -8,8 +8,8 @@ "outgoing_link_message": "Opouštíte %1", "continue_to": "Pokračovat na %1", "return_to": "Vrátit se na %1", - "new_notification": "Nové upozornění", - "new_notification_from": "You have a new Notification from %1", + "new_notification": "Nové oznámení", + "new_notification_from": "Máte nové upozornění od %1", "you_have_unread_notifications": "Máte nepřečtená upozornění.", "all": "Vše", "topics": "Témata", @@ -47,18 +47,18 @@ "email-confirmed-message": "Děkujeme za ověření vaší e-mailové adresy. Váš účet je nyní aktivní.", "email-confirm-error-message": "Nastal problém s ověřením vaší e-mailové adresy. Kód je pravděpodobně neplatný nebo jeho platnost vypršela.", "email-confirm-sent": "Ověřovací e-mail odeslán.", - "none": "None", - "notification_only": "Notification Only", - "email_only": "Email Only", - "notification_and_email": "Notification & Email", - "notificationType_upvote": "When someone upvotes your post", - "notificationType_new-topic": "When someone you follow posts a topic", - "notificationType_new-reply": "When a new reply is posted in a topic you are watching", - "notificationType_follow": "When someone starts following you", - "notificationType_new-chat": "When you receive a chat message", - "notificationType_group-invite": "When you receive a group invite", - "notificationType_new-register": "When someone gets added to registration queue", - "notificationType_post-queue": "When a new post is queued", - "notificationType_new-post-flag": "When a post is flagged", - "notificationType_new-user-flag": "When a user is flagged" + "none": "Nic", + "notification_only": "Jen oznámení", + "email_only": "Jen e-mail", + "notification_and_email": "Oznámení a e-mail", + "notificationType_upvote": "Vyjádří-li někdo souhlas s vaším příspěvkem", + "notificationType_new-topic": "Začne-li někdo sledovat příspěvky a téma", + "notificationType_new-reply": "Bude-li přidán nový příspěvek v tématu, které sledujete", + "notificationType_follow": "Začne-li vás někdo sledovat", + "notificationType_new-chat": "Obdržíte-li novou konverzační zprávu", + "notificationType_group-invite": "Obdržíte-li pozvání ke skupině", + "notificationType_new-register": "Bude-li někdo přidán do registrační fronty", + "notificationType_post-queue": "Bude-li přidán nový příspěvek do fronty", + "notificationType_new-post-flag": "Bude-li příspěvek označen", + "notificationType_new-user-flag": "Bude-li uživatel označen" } \ No newline at end of file diff --git a/public/language/cs/pages.json b/public/language/cs/pages.json index 8a0270a9db..befc7ceba3 100644 --- a/public/language/cs/pages.json +++ b/public/language/cs/pages.json @@ -44,7 +44,7 @@ "account/bookmarks": "%1's zazáložkované příspěvky", "account/settings": "Uživatelské nastavení", "account/watched": "Témata sledovaná uživatelem %1", - "account/ignored": "Topics ignored by %1", + "account/ignored": "Témata ignorovaná uživatelem %1", "account/upvoted": "Souhlasí s příspěvkem %1", "account/downvoted": "Nesouhlasí s příspěvkem %1", "account/best": "Nejlepší příspěvky od %1", diff --git a/public/language/cs/topic.json b/public/language/cs/topic.json index 7cedca5e24..80e7561e26 100644 --- a/public/language/cs/topic.json +++ b/public/language/cs/topic.json @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Jste si jist/a, že chcete toto téma obnovit?", "thread_tools.purge": "Vyčistit téma", "thread_tools.purge_confirm": "Jste si jist/a, že chcete vyčistit toto téma?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Sloučit témata", + "thread_tools.merge": "Sloučit", "topic_move_success": "Toto téma bylo úspěšně přesunuto do %1", "post_delete_confirm": "Jste si jist/a, že chcete odstranit tento příspěvek?", "post_restore_confirm": "Jste si jist/a, že chcete obnovit tento příspěvek?", @@ -91,7 +91,7 @@ "fork_pid_count": "Vybráno %1 příspěvek/ů", "fork_success": "Téma úspěšně rozděleno. Pro přejití na rozdělené téma, zde klikněte.", "delete_posts_instruction": "Klikněte na příspěvek, který chcete odstranit/vyčistit", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Pro sloučení témat, klikněte na ně", "composer.title_placeholder": "Zadejte název tématu…", "composer.handle_placeholder": "Jméno", "composer.discard": "Zrušit", diff --git a/public/language/cs/unread.json b/public/language/cs/unread.json index 60381d5efd..35035c5cb0 100644 --- a/public/language/cs/unread.json +++ b/public/language/cs/unread.json @@ -10,6 +10,6 @@ "all-topics": "Všechna témata", "new-topics": "Nová témata", "watched-topics": "Sledovaná témata", - "unreplied-topics": "Unreplied Topics", - "multiple-categories-selected": "Multiple Selected" + "unreplied-topics": "Neodpovězené témata", + "multiple-categories-selected": "Vícenásobný výběr" } \ No newline at end of file diff --git a/public/language/cs/user.json b/public/language/cs/user.json index 0042eb8ec6..8fce80c61c 100644 --- a/public/language/cs/user.json +++ b/public/language/cs/user.json @@ -25,7 +25,7 @@ "reputation": "Reputace", "bookmarks": "Záložky", "watched": "Sledován", - "ignored": "Ignored", + "ignored": "Ignorován", "followers": "Sledují ho", "following": "Sleduje", "aboutme": "O mně", @@ -85,7 +85,7 @@ "has_no_posts": "Tento uživatel ještě nic nenapsal.", "has_no_topics": "Tento uživatel ještě nezaložil žádné téma.", "has_no_watched_topics": "Tento uživatel zatím nesleduje žádná témata.", - "has_no_ignored_topics": "This user hasn't ignored any topics yet.", + "has_no_ignored_topics": "Tento uživatel ještě neignoruje žádné témata.", "has_no_upvoted_posts": "Tento uživatel zatím nevyjádřil souhlas u žádného příspěvku.", "has_no_downvoted_posts": "Tento uživatel zatím nevyjádřil nesouhlas u žádného příspěvku.", "has_no_voted_posts": "Tento uživatel nemá žádné hlasovací příspěvky", @@ -101,11 +101,11 @@ "outgoing-message-sound": "Zvuk odchozí zprávy", "notification-sound": "Zvuk oznámení", "no-sound": "Bez zvuku", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Frekvence upozornění na souhlasy", + "upvote-notif-freq.all": "Všechny souhlasy", + "upvote-notif-freq.everyTen": "Každý desátý souhlas", + "upvote-notif-freq.logarithmic": "Dle 10, 100, 1000...", + "upvote-notif-freq.disabled": "Zakázáno", "browsing": "Nastavení prohlížení", "open_links_in_new_tab": "Otevřít odchozí odkaz v nové záložce", "enable_topic_searching": "Povolit vyhledávání v tématu", @@ -126,9 +126,9 @@ "sso.title": "Služby jednotného přihlášení", "sso.associated": "Přiřazeno k", "sso.not-associated": "Zde klikněte pro přiřazení k", - "sso.dissociate": "Dissociate", - "sso.dissociate-confirm-title": "Confirm Dissociation", - "sso.dissociate-confirm": "Are you sure you wish to dissociate your account from %1?", + "sso.dissociate": "Odloučit", + "sso.dissociate-confirm-title": "Potvrdit odloučení", + "sso.dissociate-confirm": "Jste si jist/a, že chcete odloučit váš účet z %1?", "info.latest-flags": "Poslední označené", "info.no-flags": "Nebyly nalezeny žádné označené příspěvky", "info.ban-history": "Poslední historie blokovaných", diff --git a/public/language/nl/email.json b/public/language/nl/email.json index 48f35a2c6f..bd474f945e 100644 --- a/public/language/nl/email.json +++ b/public/language/nl/email.json @@ -18,7 +18,7 @@ "reset.notify.text2": "Neem onmiddellijk contact met een beheerder op wanneer je hiervoor geen toestemming hebt gegeven.", "digest.notifications": "Er zijn ongelezen notificaties van %1:", "digest.latest_topics": "De meest recente onderwerpen van %1", - "digest.cta": "Klik hier om deze website te bezoeken %1 ", + "digest.cta": "Klik hier om %1 te bezoeken ", "digest.unsub.info": "Deze samenvatting hebben we naar je verzonden omdat je dat hebt ingesteld.", "digest.no_topics": "In de afgelopen %1 zijn er geen actieve onderwerpen geweest.", "digest.day": "dag", @@ -30,7 +30,7 @@ "notif.chat.unsub.info": "Deze notificatie is verzonden vanwege de gebruikersinstellingen voor abonnementen.", "notif.post.cta": "Klik hier om het volledige bericht te lezen", "notif.post.unsub.info": "Deze notificatie is door ons verzonden vanwege gebruikersinstellingen voor abonnementen en berichten.", - "notif.cta": "Click here to go to forum", + "notif.cta": "Klik hier om naar het forum te gaan", "test.text1": "Dit is een testbericht om te verifiëren dat NodeBB de e-mailberichtservice correct heeft opgezet.", "unsub.cta": "Klik hier om deze instellingen te wijzigen", "banned.subject": "U bent verbannen van %1", diff --git a/public/language/nl/error.json b/public/language/nl/error.json index 460254c097..48931aa461 100644 --- a/public/language/nl/error.json +++ b/public/language/nl/error.json @@ -119,13 +119,13 @@ "not-enough-reputation-to-downvote": "Je hebt onvoldoende reputatie om een negatieve stem uit te mogen brengen", "not-enough-reputation-to-flag": "Je hebt onvoldoende reputatie om dit bericht aan de beheerders te mogen melden", "already-flagged": "Je hebt deze post al gerapporteerd", - "self-vote": "You cannot vote on your own post", + "self-vote": "Het is niet mogelijk om op je eigen bericht te stemmen", "reload-failed": "Tijdens het herladen van \"%1\" is NodeBB een fout of probleem tegengekomen. NodeBB blijft operationeel. Echter het is verstandig om de oorzaak te onderzoeken en wellicht de vorige actie, voor het herladen, ongedaan te maken.", "registration-error": "Fout tijdens registratie", "parse-error": "Tijdens het verwerken van het antwoord van de server is er iets misgegaan.", "wrong-login-type-email": "Gebruik je e-mailadres om in te loggen", "wrong-login-type-username": "Gebruik je gebruikersnaam om in te loggen", - "sso-registration-disabled": "Registration has been disabled for %1 accounts, please register with an email address first", + "sso-registration-disabled": "Registratie is uitgeschakeld voor %1 accounts, registreer eerst met een e-mailadres", "invite-maximum-met": "Je heb het maximum aantal mensen uitgenodigd (%1 van de %2).", "no-session-found": "Geen login sessie gevonden!", "not-in-room": "Gebruiker niet in de chat", @@ -135,5 +135,5 @@ "invalid-home-page-route": "Onbekende homepage route", "invalid-session": "Verkeerde sessie combinatie", "invalid-session-text": "Het lijkt erop dat je login sessie niet meer actief is of niet langer synchroon is met de server. Ververs de pagina.", - "no-topics-selected": "No topics selected!" + "no-topics-selected": "Geen onderwerpen geselecteerd!" } \ No newline at end of file diff --git a/public/language/nl/notifications.json b/public/language/nl/notifications.json index c19dbaef83..78ec3289b5 100644 --- a/public/language/nl/notifications.json +++ b/public/language/nl/notifications.json @@ -9,7 +9,7 @@ "continue_to": "Door naar %1", "return_to": "Terug naar %1", "new_notification": "Nieuwe notificatie", - "new_notification_from": "You have a new Notification from %1", + "new_notification_from": "Je hebt een nieuwe notificatie van %1", "you_have_unread_notifications": "Je hebt nieuwe notificaties.", "all": "Alles", "topics": "Onderwerpen", @@ -47,18 +47,18 @@ "email-confirmed-message": "Bedankt voor het bevestigen van je e-mailadres. Je account is nu volledig geactiveerd.", "email-confirm-error-message": "Er was een probleem met het bevestigen van dit e-mailadres. Misschien is de code niet goed ingevoerd of was de beschikbare tijd inmiddels verstreken.", "email-confirm-sent": "Bevestigingsmail verstuurd.", - "none": "None", - "notification_only": "Notification Only", - "email_only": "Email Only", - "notification_and_email": "Notification & Email", - "notificationType_upvote": "When someone upvotes your post", - "notificationType_new-topic": "When someone you follow posts a topic", - "notificationType_new-reply": "When a new reply is posted in a topic you are watching", - "notificationType_follow": "When someone starts following you", - "notificationType_new-chat": "When you receive a chat message", - "notificationType_group-invite": "When you receive a group invite", - "notificationType_new-register": "When someone gets added to registration queue", - "notificationType_post-queue": "When a new post is queued", - "notificationType_new-post-flag": "When a post is flagged", - "notificationType_new-user-flag": "When a user is flagged" + "none": "Geen", + "notification_only": "Alleen notificatie", + "email_only": "Alleen e-mail", + "notification_and_email": "Notificatie & e-mail", + "notificationType_upvote": "Als iemand positief stemt voor je bericht", + "notificationType_new-topic": "Wanneer iemand die jij volgt een onderwerp post", + "notificationType_new-reply": "Als een nieuwe reactie komt op een onderwerp dat je volgt", + "notificationType_follow": "Als iemand begint met jou te volgen", + "notificationType_new-chat": "Als je een chat-bericht ontvangt", + "notificationType_group-invite": "Als je een uitnodiging voor een groep ontvangt", + "notificationType_new-register": "Als iemand wordt toegevoegd aan een registratiewachtrij", + "notificationType_post-queue": "Als een bericht aan de wachtrij wordt toegevoegd", + "notificationType_new-post-flag": "Als een bericht wordt gevlagd", + "notificationType_new-user-flag": "Als een gebruiker wordt gevlagd" } \ No newline at end of file diff --git a/public/language/nl/topic.json b/public/language/nl/topic.json index b1d33fd9da..29b4eb9e75 100644 --- a/public/language/nl/topic.json +++ b/public/language/nl/topic.json @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Zeker weten dit onderwerp te herstellen?", "thread_tools.purge": "Wis onderwerp ", "thread_tools.purge_confirm": "Weet je zeker dat je dit onderwerp wil verwijderen?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Onderwerpen samenvoegen", + "thread_tools.merge": "Samenvoegen", "topic_move_success": "Verplaatsen van onderwerp naar %1 succesvol", "post_delete_confirm": "Is het absoluut de bedoeling dit bericht te verwijderen?", "post_restore_confirm": "Is het de bedoeling dit bericht te herstellen?", @@ -91,7 +91,7 @@ "fork_pid_count": "%1 bericht(en) geselecteerd", "fork_success": "Onderwerp is succesvol afgesplitst. Klik hier om het nieuwe onderwerp te zien.", "delete_posts_instruction": "Klik op de berichten die verwijderd moeten worden", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Klik op de onderwerpen die samengevoegd moeten worden", "composer.title_placeholder": "Voer hier de titel van het onderwerp in...", "composer.handle_placeholder": "Naam", "composer.discard": "Annuleren", diff --git a/public/language/nl/user.json b/public/language/nl/user.json index 6351ae8827..9c2af5d6f5 100644 --- a/public/language/nl/user.json +++ b/public/language/nl/user.json @@ -101,11 +101,11 @@ "outgoing-message-sound": "Uitgaand bericht geluid", "notification-sound": "Notificatie geluid", "no-sound": "Geen geluid", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Notificatie frequentie voor Upvotes", + "upvote-notif-freq.all": "Alle Upvotes", + "upvote-notif-freq.everyTen": "Elke tien Upvotes", + "upvote-notif-freq.logarithmic": "Bij 10, 100, 1000...", + "upvote-notif-freq.disabled": "Uitgeschakeld", "browsing": "Instellingen voor bladeren", "open_links_in_new_tab": "Open uitgaande links naar een externe site in een nieuw tabblad", "enable_topic_searching": "Inschakelen mogelijkheid op onderwerp te kunnen zoeken", From 2661a31227c54c6a2716f2d41d4ff644a3652a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 29 Dec 2017 13:27:07 -0500 Subject: [PATCH 13/18] closes #6202 --- src/notifications.js | 2 +- src/topics/follow.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/notifications.js b/src/notifications.js index 6a7940d50d..4bf9782e61 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -220,7 +220,7 @@ function pushToUids(uids, notification, callback) { async.eachLimit(uids, 3, function (uid, next) { emailer.send('notification', uid, { path: notification.path, - subject: '[[notifications:new_notification_from, ' + meta.config.title + ']]', + subject: notification.subject || '[[notifications:new_notification_from, ' + meta.config.title + ']]', intro: utils.stripHTMLTags(notification.bodyShort), body: utils.stripHTMLTags(notification.bodyLong || ''), showUnsubscribe: true, diff --git a/src/topics/follow.js b/src/topics/follow.js index cf8754bcc5..aad9c0f079 100644 --- a/src/topics/follow.js +++ b/src/topics/follow.js @@ -9,6 +9,7 @@ var notifications = require('../notifications'); var privileges = require('../privileges'); var plugins = require('../plugins'); var utils = require('../utils'); +var meta = require('../meta'); module.exports = function (Topics) { Topics.toggleFollow = function (tid, uid, callback) { @@ -219,6 +220,7 @@ module.exports = function (Topics) { notifications.create({ type: 'new-reply', + subject: '[' + (meta.config.title || 'NodeBB') + '] ' + title, bodyShort: '[[notifications:user_posted_to, ' + postData.user.username + ', ' + titleEscaped + ']]', bodyLong: postData.content, pid: postData.pid, From 1fd0b760b15945a418c338e3a0d2a36f5b02bedb Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sat, 30 Dec 2017 09:25:45 +0000 Subject: [PATCH 14/18] Latest translations and fallbacks --- public/language/fr/admin/appearance/customise.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/language/fr/admin/appearance/customise.json b/public/language/fr/admin/appearance/customise.json index ada04f6546..187f799efb 100644 --- a/public/language/fr/admin/appearance/customise.json +++ b/public/language/fr/admin/appearance/customise.json @@ -3,9 +3,9 @@ "custom-css.description": "Entrez vos propres déclarations de CSS ici, elles seront appliquées après tous les autres styles.", "custom-css.enable": "Activer les CSS personnalisés", - "custom-js": "Custom Javascript", - "custom-js.description": "Enter your own javascript here. It will be executed after the page is loaded completely.", - "custom-js.enable": "Enable Custom Javascript", + "custom-js": "Javascript personnalisé", + "custom-js.description": "Entrez votre Javascript ici. Celui-ci sera exécute après le chargement complet de la page.", + "custom-js.enable": "Activer le Javascript personnalisé", "custom-header": "En-tête personnalisé", "custom-header.description": "Enter custom HTML here (ex. Meta Tags, etc.), which will be appended to the <head> section of your forum's markup. Script tags are allowed, but are discouraged, as the Custom Javascript tab is available.", From cbaa9772336fc2355d2767727949fff1104edfb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sat, 30 Dec 2017 11:41:31 -0500 Subject: [PATCH 15/18] fix type on mongodb if key has expireAt --- src/database/mongo/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/database/mongo/main.js b/src/database/mongo/main.js index 278ae6c413..509f19006b 100644 --- a/src/database/mongo/main.js +++ b/src/database/mongo/main.js @@ -108,6 +108,7 @@ module.exports = function (db, module) { if (!data) { return callback(null, null); } + delete data.expireAt; var keys = Object.keys(data); if (keys.length === 4 && data.hasOwnProperty('_key') && data.hasOwnProperty('score') && data.hasOwnProperty('value')) { return callback(null, 'zset'); From 64cbb331b7a093f1423a995692b211d42a1c5ea1 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sun, 31 Dec 2017 09:24:49 +0000 Subject: [PATCH 16/18] Latest translations and fallbacks --- public/language/it/email.json | 10 +++++----- public/language/it/error.json | 18 +++++++++--------- public/language/it/flags.json | 26 +++++++++++++------------- public/language/it/global.json | 4 ++-- public/language/it/groups.json | 4 ++-- public/language/it/notifications.json | 8 ++++---- public/language/it/pages.json | 4 ++-- public/language/it/register.json | 2 +- public/language/it/search.json | 2 +- public/language/it/success.json | 2 +- public/language/it/topic.json | 14 +++++++------- public/language/it/unread.json | 4 ++-- public/language/it/user.json | 22 +++++++++++----------- 13 files changed, 60 insertions(+), 60 deletions(-) diff --git a/public/language/it/email.json b/public/language/it/email.json index bcada51df4..f6fdaef532 100644 --- a/public/language/it/email.json +++ b/public/language/it/email.json @@ -13,7 +13,7 @@ "reset.text1": "Abbiamo ricevuto una richiesta di reset della tua password, probabilmente perché l'hai dimenticata. Se non è così si prega di ignorare questa email.", "reset.text2": "Per confermare il reset della password per favore clicca il seguente link:", "reset.cta": "Clicca qui per resettare la tua password", - "reset.notify.subject": "Possword modificata con successo.", + "reset.notify.subject": "Password modificata con successo.", "reset.notify.text1": "Ti informiamo che in data %1, la password è stata cambiata con successo.", "reset.notify.text2": "Se non hai autorizzato questo, per favore notifica immediatamente un amministratore.", "digest.notifications": "Hai una notifica non letta da %1:", @@ -33,9 +33,9 @@ "notif.cta": "Vai alla discussione", "test.text1": "Questa è una email di test per verificare che il servizio di invio email è configurato correttamente sul tuo NodeBB.", "unsub.cta": "Clicca qui per modificare queste impostazioni", - "banned.subject": "You have been banned from %1", - "banned.text1": "The user %1 has been banned from %2.", - "banned.text2": "This ban will last until %1.", - "banned.text3": "This is the reason why you have been banned:", + "banned.subject": "Sei stato bannato da %1", + "banned.text1": "%1 è stato bannato da %2", + "banned.text2": "Questo ban durerà fino a %1.", + "banned.text3": "Il motivo del ban è:", "closing": "Grazie!" } \ No newline at end of file diff --git a/public/language/it/error.json b/public/language/it/error.json index 9fa55ff42e..0ad1f963ca 100644 --- a/public/language/it/error.json +++ b/public/language/it/error.json @@ -11,10 +11,10 @@ "invalid-uid": "ID Utente non valido", "invalid-username": "Nome utente non valido", "invalid-email": "Email non valida", - "invalid-title": "Invalid title", + "invalid-title": "Titolo non Valido", "invalid-user-data": "Dati Utente non validi", "invalid-password": "Password non valida", - "invalid-login-credentials": "Invalid login credentials", + "invalid-login-credentials": "Credenziali non Valide", "invalid-username-or-password": "Si prega di specificare sia un nome utente che una password", "invalid-search-term": "Termine di ricerca non valido", "csrf-invalid": "Non siamo riusciti a farti connettere, probabilmente perché la sessione è scaduta. Per favore riprova.", @@ -66,7 +66,7 @@ "content-too-long": "Inserisci un post più breve. I post non possono essere più lunghi di %1 caratteri.", "title-too-short": "Inserisci un titolo più lungo. I titoli devono contenere almeno %1 caratteri.", "title-too-long": "Inserisci un titolo più corto. I titoli non possono essere più lunghi di %1 caratteri.", - "category-not-selected": "Category not selected.", + "category-not-selected": "Categoria non selezionata.", "too-many-posts": "È possibile inserire un Post ogni %1 secondi - si prega di attendere prima di postare di nuovo", "too-many-posts-newbie": "Come nuovo utente puoi postare solamente una volta ogni %1 secondi finché non hai raggiunto un livello di reputazione %2 - per favore attendi prima di scrivere ancora", "tag-too-short": "Inserisci un tag più lungo. I tag devono contenere almeno %1 caratteri.", @@ -76,12 +76,12 @@ "still-uploading": "Per favore attendere il completamento degli uploads.", "file-too-big": "La dimensione massima consentita è di %1 kB - si prega di caricare un file più piccolo", "guest-upload-disabled": "Il caricamento da ospite è stato disattivato", - "already-bookmarked": "You have already bookmarked this post", - "already-unbookmarked": "You have already unbookmarked this post", + "already-bookmarked": "Hai già aggiunto questa discussione ai preferiti.", + "already-unbookmarked": "Hai già rimosso questa discussione dai preferiti", "cant-ban-other-admins": "Non puoi bannare altri amministratori!", "cant-remove-last-admin": "Sei l'unico Amministratore. Aggiungi un altro amministratore prima di rimuovere il tuo ruolo", "cant-delete-admin": "Togli i privilegi amministrativi da questo account prima di provare ad eliminarlo.", - "invalid-image": "Invalid image", + "invalid-image": "Immagine non Valida", "invalid-image-type": "Tipo dell'immagine non valido. I tipi permessi sono: %1", "invalid-image-extension": "Estensione immagine non valida", "invalid-file-type": "Tipo di file non valido. I formati consentiti sono: %1", @@ -109,7 +109,7 @@ "chat-disabled": "Il sistema di chat è stato disabilitato", "too-many-messages": "Hai inviato troppi messaggi, aspetta un attimo.", "invalid-chat-message": "Messaggio chat non valido", - "chat-message-too-long": "Chat messages can not be longer than %1 characters.", + "chat-message-too-long": "I messaggi in chat non possono superare i %1 caratteri.", "cant-edit-chat-message": "Non ti è permesso di modificare questo messaggio", "cant-remove-last-user": "Non puoi rimuovere l'ultimo utente", "cant-delete-chat-message": "Non ti è permesso di eliminare questo messaggio", @@ -119,7 +119,7 @@ "not-enough-reputation-to-downvote": "Non hai i privilegi per votare negativamente questo post", "not-enough-reputation-to-flag": "Tu non hai abbastanza reputazione per segnalare questo Post", "already-flagged": "Hai già messo marcato questo post", - "self-vote": "You cannot vote on your own post", + "self-vote": "Non puoi votare la tua stessa discussione", "reload-failed": "NodeBB ha incontrato un problema durante il ricaricamento: \"%1\". NodeBB continuerà a servire gli assets esistenti lato client, così puoi annullare quello che hai fatto prima di ricaricare.", "registration-error": "Errore nella registrazione", "parse-error": "Qualcosa è andato storto durante l'analisi della risposta proveniente dal server", @@ -135,5 +135,5 @@ "invalid-home-page-route": "Percorso della pagina iniziale non valido", "invalid-session": "Discrepanza della sessione", "invalid-session-text": "Sembra che la tua sessione non sia più attiva, oppure non corrisponde con il server. Per favore ricarica la pagina.", - "no-topics-selected": "No topics selected!" + "no-topics-selected": "Nessuna discussione selezionata!" } \ No newline at end of file diff --git a/public/language/it/flags.json b/public/language/it/flags.json index d05a5b25a8..14aaf7af02 100644 --- a/public/language/it/flags.json +++ b/public/language/it/flags.json @@ -27,12 +27,12 @@ "quick-links": "Quick Links", "flagged-user": "Flagged User", - "view-profile": "View Profile", + "view-profile": "Vedi Profilo", "start-new-chat": "Start New Chat", "go-to-target": "View Flag Target", - "user-view": "View Profile", - "user-edit": "Edit Profile", + "user-view": "Vedi Profilo", + "user-edit": "Modifica Profilo", "notes": "Flag Notes", "add-note": "Add Note", @@ -44,21 +44,21 @@ "state-all": "All states", "state-open": "New/Open", - "state-wip": "Work in Progress", - "state-resolved": "Resolved", + "state-wip": "Lavori in Corso", + "state-resolved": "Risolto", "state-rejected": "Rejected", - "no-assignee": "Not Assigned", + "no-assignee": "Non Assegnato", "note-added": "Note Added", - "modal-title": "Report Inappropriate Content", + "modal-title": "Segnala Contenuto Inappropriato", "modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.", "modal-reason-spam": "Spam", - "modal-reason-offensive": "Offensive", - "modal-reason-other": "Other (specify below)", - "modal-reason-custom": "Reason for reporting this content...", - "modal-submit": "Submit Report", - "modal-submit-success": "Content has been flagged for moderation.", - "modal-submit-confirm": "Confirm Submission", + "modal-reason-offensive": "Offensivo", + "modal-reason-other": "Altro (Specificare di seguito)", + "modal-reason-custom": "Motivazione della segnalazione...", + "modal-submit": "Invia la Segnalazione", + "modal-submit-success": "Il contenuto è stato segnalato.", + "modal-submit-confirm": "Conferma la Segnalazione", "modal-submit-confirm-text": "You have a custom reason specified already. Are you sure you wish to submit via quick-report?", "modal-submit-confirm-text-help": "Submitting a quick report will overwrite any custom reasons defined." } \ No newline at end of file diff --git a/public/language/it/global.json b/public/language/it/global.json index 7325219082..4279338d8d 100644 --- a/public/language/it/global.json +++ b/public/language/it/global.json @@ -104,6 +104,6 @@ "cookies.accept": "Ho capito!", "cookies.learn_more": "Scopri di più", "edited": "Modificato", - "disabled": "Disabled", - "select": "Select" + "disabled": "Disabilitato", + "select": "Seleziona" } \ No newline at end of file diff --git a/public/language/it/groups.json b/public/language/it/groups.json index 835ada672f..53f27c12c4 100644 --- a/public/language/it/groups.json +++ b/public/language/it/groups.json @@ -27,7 +27,7 @@ "details.disableJoinRequests": "Disabilita le richieste d'adesione", "details.grant": "Concedi / Rimuovi la Proprietà", "details.kick": "Espelli", - "details.kick_confirm": "Are you sure you want to remove this member from the group?", + "details.kick_confirm": "Sei sicuro di voler rimuovere questo membro dal gruppo?", "details.owner_options": "Amministratore del Grupo", "details.group_name": "Nome Gruppo", "details.member_count": "Totale Membri", @@ -53,6 +53,6 @@ "new-group.group_name": "Nome Gruppo:", "upload-group-cover": "Carica copertina del gruppo", "bulk-invite-instructions": "Inserisci una lista di nomi utente da invitare in questo gruppo separati da virgole", - "bulk-invite": "Bulk Invite", + "bulk-invite": "Invita in Massa", "remove_group_cover_confirm": "Sei sicuro di voler rimuovere l'immagine copertina?" } \ No newline at end of file diff --git a/public/language/it/notifications.json b/public/language/it/notifications.json index 5aa5225d1b..338a970c00 100644 --- a/public/language/it/notifications.json +++ b/public/language/it/notifications.json @@ -47,10 +47,10 @@ "email-confirmed-message": "Grazie per aver validato la tua email. Il tuo account è ora completamente attivato.", "email-confirm-error-message": "C'è stato un problema nella validazione del tuo indirizzo email. Potrebbe essere il codice non valido o scaduto.", "email-confirm-sent": "Email di conferma inviata.", - "none": "None", - "notification_only": "Notification Only", - "email_only": "Email Only", - "notification_and_email": "Notification & Email", + "none": "Nessuna Notifica", + "notification_only": "Solo Notifiche", + "email_only": "Solo Email", + "notification_and_email": "Email e Notifica", "notificationType_upvote": "When someone upvotes your post", "notificationType_new-topic": "When someone you follow posts a topic", "notificationType_new-reply": "When a new reply is posted in a topic you are watching", diff --git a/public/language/it/pages.json b/public/language/it/pages.json index 0b1be5dc1e..0be5a17a98 100644 --- a/public/language/it/pages.json +++ b/public/language/it/pages.json @@ -7,7 +7,7 @@ "popular-alltime": "Discussioni più popolari di sempre", "recent": "Discussioni Recenti", "moderator-tools": "Moderator Tools", - "flagged-content": "Flagged Content", + "flagged-content": "Contenuti Segnalati", "ip-blacklist": "Lista nera degli IP", "post-queue": "Post Queue", "users/online": "Utenti Online", @@ -44,7 +44,7 @@ "account/bookmarks": "%1 Post tra i favoriti", "account/settings": "Impostazioni Utente", "account/watched": "Discussioni osservate da %1", - "account/ignored": "Topics ignored by %1", + "account/ignored": "Discussioni ignorate da %1", "account/upvoted": "Post apprezzati da %1", "account/downvoted": "Post votati negativamente da %1", "account/best": "I migliori post di %1", diff --git a/public/language/it/register.json b/public/language/it/register.json index e3afd5aed2..49de769d43 100644 --- a/public/language/it/register.json +++ b/public/language/it/register.json @@ -1,5 +1,5 @@ { - "register": "Registrazione", + "register": "Registrati", "cancel_registration": "Cancella Registrazione", "help.email": "Come opzione predefinita, il tuo indirizzo email non verrà reso pubblico.", "help.username_restrictions": "Un nome utente unico, di almeno %1 caratteri e al massimo di %2. Gli altri utenti ti possono menzionare usando @username.", diff --git a/public/language/it/search.json b/public/language/it/search.json index 980e2c28ba..dc33a58737 100644 --- a/public/language/it/search.json +++ b/public/language/it/search.json @@ -12,7 +12,7 @@ "reply-count": "Numero Risposte", "at-least": "Almeno", "at-most": "Al massimo", - "relevance": "Relevance", + "relevance": "Rilevanza", "post-time": "Ora invio", "newer-than": "Più nuovi di", "older-than": "Più vecchi di", diff --git a/public/language/it/success.json b/public/language/it/success.json index cf8dd4cad5..35f6d5b2a9 100644 --- a/public/language/it/success.json +++ b/public/language/it/success.json @@ -1,7 +1,7 @@ { "success": "Riuscito", "topic-post": "Hai postato correttamente.", - "post-queued": "Your post is queued for approval.", + "post-queued": "La tua discussione è in attesa di approvazione.", "authentication-successful": "Autenticazione Riuscita", "settings-saved": "Impostazioni salvate!" } \ No newline at end of file diff --git a/public/language/it/topic.json b/public/language/it/topic.json index 747ba4876b..5b15970770 100644 --- a/public/language/it/topic.json +++ b/public/language/it/topic.json @@ -13,9 +13,9 @@ "notify_me": "Ricevi notifiche di nuove risposte in questa discussione", "quote": "Cita", "reply": "Rispondi", - "replies_to_this_post": "%1 Replies", - "one_reply_to_this_post": "1 Reply", - "last_reply_time": "Last reply", + "replies_to_this_post": "%1 Risposte", + "one_reply_to_this_post": "1 Risposta", + "last_reply_time": "Ultima Risposta", "reply-as-topic": "Topic risposta", "guest-login-reply": "Effettua il Log in per rispondere", "edit": "Modifica", @@ -59,7 +59,7 @@ "thread_tools.unlock": "Sblocca Discussione", "thread_tools.move": "Sposta Discussione", "thread_tools.move_all": "Sposta Tutto", - "thread_tools.select_category": "Select Category", + "thread_tools.select_category": "Seleziona Categoria", "thread_tools.fork": "Dividi Discussione", "thread_tools.delete": "Elimina Discussione", "thread_tools.delete-posts": "Cancella post", @@ -68,8 +68,8 @@ "thread_tools.restore_confirm": "Sei sicuro di voler ripristinare questa discussione?", "thread_tools.purge": "Svuota Discussione", "thread_tools.purge_confirm": "Sei sicuro di voler svuotare questa discussione?", - "thread_tools.merge_topics": "Merge Topics", - "thread_tools.merge": "Merge", + "thread_tools.merge_topics": "Unisci le Discussioni", + "thread_tools.merge": "Unisci", "topic_move_success": "Questa discussione è stata correttamente spostata in %1", "post_delete_confirm": "Sei sicuro di voler cancellare questo post?", "post_restore_confirm": "Sei sicuro di voler ripristinare questo post?", @@ -91,7 +91,7 @@ "fork_pid_count": "%1 post selezionati", "fork_success": "Topic Diviso con successo ! Clicca qui per andare al Topic Diviso.", "delete_posts_instruction": "Clicca sui post che vuoi cancellare/eliminare", - "merge_topics_instruction": "Click the topics you want to merge", + "merge_topics_instruction": "Clicca sulle discussioni che vuoi unire", "composer.title_placeholder": "Inserisci qui il titolo della discussione...", "composer.handle_placeholder": "Nome", "composer.discard": "Annulla", diff --git a/public/language/it/unread.json b/public/language/it/unread.json index c1244d0fe3..2f2afebd23 100644 --- a/public/language/it/unread.json +++ b/public/language/it/unread.json @@ -10,6 +10,6 @@ "all-topics": "Tutte le Discussioni", "new-topics": "Nuova Discussione", "watched-topics": "Discussioni seguite", - "unreplied-topics": "Nessuna Risposta", - "multiple-categories-selected": "Multiple Selected" + "unreplied-topics": "Discussioni Senza Risposta", + "multiple-categories-selected": "Più Categorie" } \ No newline at end of file diff --git a/public/language/it/user.json b/public/language/it/user.json index a24f325d24..d3b66bfa4a 100644 --- a/public/language/it/user.json +++ b/public/language/it/user.json @@ -19,13 +19,13 @@ "location": "Località", "age": "Età", "joined": "Iscrizione", - "lastonline": "Ultima volta in linea", + "lastonline": "Ultimo Accesso", "profile": "Profilo", "profile_views": "Visite al profilo", "reputation": "Reputazione", - "bookmarks": "Favoriti", + "bookmarks": "Preferiti", "watched": "Osservati", - "ignored": "Ignored", + "ignored": "Ignorati", "followers": "Da chi è seguito", "following": "Chi segue", "aboutme": "Su di me", @@ -61,7 +61,7 @@ "username_taken_workaround": "Il nome utente che hai richiesto era già stato utilizzato, quindi lo abbiamo modificato leggermente. Ora il tuo è %1", "password_same_as_username": "La tua password è uguale al tuo username, per piacere scegli un'altra password", "password_same_as_email": "La tua password sembra coincidere con la tua email, per favore fornisci un'altra password.", - "weak_password": "Weak password.", + "weak_password": "Password debole.", "upload_picture": "Carica foto", "upload_a_picture": "Carica una foto", "remove_uploaded_picture": "Elimina foto caricata", @@ -85,7 +85,7 @@ "has_no_posts": "Questo utente non ha ancora scritto niente.", "has_no_topics": "Questo utente non ha ancora avviato discussioni.", "has_no_watched_topics": "Questo utente non sta osservando discussioni.", - "has_no_ignored_topics": "This user hasn't ignored any topics yet.", + "has_no_ignored_topics": "Questo utente non sta ignorando discussioni.", "has_no_upvoted_posts": "Questo utente non ha ancora apprezzato nessun post.", "has_no_downvoted_posts": "Questo utente non ha ancora votato negativamente alcun post", "has_no_voted_posts": "Questo utente non ha post votati", @@ -94,18 +94,18 @@ "paginate_description": "Non utilizzare lo scroll infinito per discussioni e messaggi", "topics_per_page": "Discussioni per Pagina", "posts_per_page": "Post per Pagina", - "max_items_per_page": "Maximum %1", + "max_items_per_page": "Massimo %1", "notification_sounds": "Riproduci un suono quando si riceve una notifica", "notifications_and_sounds": "Notifiche e Suoni", "incoming-message-sound": "Suono messaggio in entrata", "outgoing-message-sound": "Suono messaggio in uscita", "notification-sound": "Suono di notifica", "no-sound": "Nessun suono", - "upvote-notif-freq": "Upvote Notification Frequency", - "upvote-notif-freq.all": "All Upvotes", - "upvote-notif-freq.everyTen": "Every Ten Upvotes", - "upvote-notif-freq.logarithmic": "On 10, 100, 1000...", - "upvote-notif-freq.disabled": "Disabled", + "upvote-notif-freq": "Frequenza Notifiche dei Mi Piace ", + "upvote-notif-freq.all": "Tutti i Mi Piace", + "upvote-notif-freq.everyTen": "Ogni Dieci Mi Piace", + "upvote-notif-freq.logarithmic": "Ogni 10, 100, 1000...", + "upvote-notif-freq.disabled": "Disabilitate", "browsing": "Impostazioni di Navigazione", "open_links_in_new_tab": "Apri i link web in una nuova pagina", "enable_topic_searching": "Abilita la ricerca negli argomenti", From a524f9b55ffe6efe027a4c3a610f4053b0d3654e Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Mon, 1 Jan 2018 09:25:13 +0000 Subject: [PATCH 17/18] Latest translations and fallbacks --- public/language/it/modules.json | 2 +- public/language/it/notifications.json | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/public/language/it/modules.json b/public/language/it/modules.json index 5fcef5d582..d379688576 100644 --- a/public/language/it/modules.json +++ b/public/language/it/modules.json @@ -20,7 +20,7 @@ "chat.three_months": "3 Mesi", "chat.delete_message_confirm": "Sei sicuro di voler eliminare questo messaggio?", "chat.add-users-to-room": "Aggiungi utenti alla stanza", - "chat.confirm-chat-with-dnd-user": "This user has set their status to DnD(Do not disturb). Do you still want to chat with them?", + "chat.confirm-chat-with-dnd-user": "Questo utente ha impostato il suo stato su Non Disturbare. Sei sicuro di voler iniziare una conversazione?", "composer.compose": "Componi", "composer.show_preview": "Visualizza Anteprima", "composer.hide_preview": "Nascondi Anteprima", diff --git a/public/language/it/notifications.json b/public/language/it/notifications.json index 338a970c00..7a1b0c4b36 100644 --- a/public/language/it/notifications.json +++ b/public/language/it/notifications.json @@ -29,9 +29,9 @@ "user_flagged_post_in": "%1 ha segnalato un post in %2", "user_flagged_post_in_dual": "%1 e %2 hanno segnalato un post in %3", "user_flagged_post_in_multiple": "%1 ed altri %2 hanno segnalato un post in %3", - "user_flagged_user": "%1 flagged a user profile (%2)", - "user_flagged_user_dual": "%1 and %2 flagged a user profile (%3)", - "user_flagged_user_multiple": "%1 and %2 others flagged a user profile (%3)", + "user_flagged_user": "%1 ha segnalato un utente (%2)", + "user_flagged_user_dual": "%1 e %2 hanno segnalato un utente (%3)", + "user_flagged_user_multiple": "%1 e altri %2 hanno segnalato un utente (%3)", "user_posted_to": "%1 ha postato una risposta a: %2", "user_posted_to_dual": "%1 e %2 hanno postato una risposta su: %3", "user_posted_to_multiple": "%1 ed altri %2 hanno postato una risposta su: %3", @@ -42,7 +42,7 @@ "new_register": "%1 ha inviato una richiesta di registrazione.", "new_register_multiple": "Ci sono %1 richieste di registrazione che attendono di essere esaminate.", "flag_assigned_to_you": "Flag %1 has been assigned to you", - "post_awaiting_review": "Post awaiting review", + "post_awaiting_review": "Post in attesa di revisione", "email-confirmed": "Email Confermata", "email-confirmed-message": "Grazie per aver validato la tua email. Il tuo account è ora completamente attivato.", "email-confirm-error-message": "C'è stato un problema nella validazione del tuo indirizzo email. Potrebbe essere il codice non valido o scaduto.", @@ -51,14 +51,14 @@ "notification_only": "Solo Notifiche", "email_only": "Solo Email", "notification_and_email": "Email e Notifica", - "notificationType_upvote": "When someone upvotes your post", + "notificationType_upvote": "Quando il tuo post riceve un Mi Piace", "notificationType_new-topic": "When someone you follow posts a topic", "notificationType_new-reply": "When a new reply is posted in a topic you are watching", "notificationType_follow": "When someone starts following you", "notificationType_new-chat": "When you receive a chat message", "notificationType_group-invite": "When you receive a group invite", "notificationType_new-register": "When someone gets added to registration queue", - "notificationType_post-queue": "When a new post is queued", - "notificationType_new-post-flag": "When a post is flagged", - "notificationType_new-user-flag": "When a user is flagged" + "notificationType_post-queue": "Quando un nuovo post è in attesa di revisione", + "notificationType_new-post-flag": "Quando un post viene segnalato", + "notificationType_new-user-flag": "Quando un utente viene segnalato" } \ No newline at end of file From 9b5e0f9e95ca4d44c15ea388bea4abc715bac446 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 2 Jan 2018 14:45:21 -0500 Subject: [PATCH 18/18] updated upgrade logic to not break ACP restart flow --- src/cli/package-install.js | 2 +- src/cli/upgrade-plugins.js | 2 +- src/cli/upgrade.js | 6 ++---- src/meta/build.js | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/cli/package-install.js b/src/cli/package-install.js index 5f6f9917a5..e923094b05 100644 --- a/src/cli/package-install.js +++ b/src/cli/package-install.js @@ -30,7 +30,7 @@ function updatePackageFile() { exports.updatePackageFile = updatePackageFile; function installAll() { - process.stdout.write('\n'); + process.stdout.write(' started\n'.green); var prod = global.env !== 'development'; var command = 'npm install'; diff --git a/src/cli/upgrade-plugins.js b/src/cli/upgrade-plugins.js index 3be00cb5d1..a61a711bf7 100644 --- a/src/cli/upgrade-plugins.js +++ b/src/cli/upgrade-plugins.js @@ -212,7 +212,7 @@ function upgradePlugins(callback) { }); } else { console.log('Package upgrades skipped'.yellow + '. Check for upgrades at any time by running "'.reset + './nodebb upgrade -p'.green + '".'.reset); - callback(null, true); + callback(); } }); }); diff --git a/src/cli/upgrade.js b/src/cli/upgrade.js index e5ab2b6c0c..2462f1f168 100644 --- a/src/cli/upgrade.js +++ b/src/cli/upgrade.js @@ -16,6 +16,7 @@ var steps = { handler: function (next) { packageInstall.updatePackageFile(); packageInstall.preserveExtraneousPlugins(); + process.stdout.write(' OK\n'.green); next(); }, }, @@ -54,11 +55,8 @@ function runSteps(tasks) { tasks = tasks.map(function (key, i) { return function (next) { process.stdout.write('\n' + ((i + 1) + '. ').bold + steps[key].message.yellow); - return steps[key].handler(function (err, inhibitOk) { + return steps[key].handler(function (err) { if (err) { return next(err); } - if (!inhibitOk) { - process.stdout.write(' OK'.green + '\n'.reset); - } next(); }); }; diff --git a/src/meta/build.js b/src/meta/build.js index 2beb5f8af9..552c9aa55c 100644 --- a/src/meta/build.js +++ b/src/meta/build.js @@ -212,7 +212,7 @@ function build(targets, callback) { } winston.info('[build] Asset compilation successful. Completed in ' + totalTime + 'sec.'); - callback(null, true); + callback(); }); }