From 2c2a28c5b6d4bd2f1585543a96951b6360a55438 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 8 Sep 2017 11:37:51 -0400 Subject: [PATCH 01/50] closes #5919 --- src/meta/blacklist.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/meta/blacklist.js b/src/meta/blacklist.js index 4a1eeeb71f..6d408d538b 100644 --- a/src/meta/blacklist.js +++ b/src/meta/blacklist.js @@ -20,7 +20,7 @@ Blacklist.load = function (callback) { Blacklist.get, Blacklist.validate, function (rules, next) { - winston.verbose('[meta/blacklist] Loading ' + rules.valid.length + ' blacklist rules'); + winston.verbose('[meta/blacklist] Loading ' + rules.valid.length + ' blacklist rule(s)' + (rules.duplicateCount > 0 ? ', ignored ' + rules.duplicateCount + ' duplicate(s)' : '')); if (rules.invalid.length) { winston.warn('[meta/blacklist] ' + rules.invalid.length + ' invalid blacklist rule(s) were ignored.'); } @@ -44,8 +44,8 @@ Blacklist.save = function (rules, callback) { db.set('ip-blacklist-rules', rules, next); }, function (next) { - Blacklist.load(next); pubsub.publish('blacklist:reload'); + setImmediate(next); }, ], callback); }; @@ -101,6 +101,7 @@ Blacklist.validate = function (rules, callback) { var ipv6 = []; var cidr = []; var invalid = []; + var duplicateCount = 0; var inlineCommentMatch = /#.*$/; var whitelist = ['127.0.0.1', '::1', '::ffff:0:127.0.0.1']; @@ -112,6 +113,16 @@ Blacklist.validate = function (rules, callback) { return rule.length && !rule.startsWith('#') ? rule : null; }).filter(Boolean); + // Filter out duplicates + rules = rules.filter(function (rule, index) { + const pass = rules.indexOf(rule) === index; + if (!pass) { + duplicateCount += 1; + } + + return pass; + }); + // Filter out invalid rules rules = rules.filter(function (rule) { var addr; @@ -157,6 +168,7 @@ Blacklist.validate = function (rules, callback) { cidr: cidr, valid: rules, invalid: invalid, + duplicateCount: duplicateCount, }); }; From a6b993ef6cd73b2cb903caeb15190f2ae47f6c70 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 8 Sep 2017 11:55:37 -0400 Subject: [PATCH 02/50] updating 500-embed to load after page is fully loaded, #5733 --- src/views/500-embed.tpl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/views/500-embed.tpl b/src/views/500-embed.tpl index b1045d431f..474e99a973 100644 --- a/src/views/500-embed.tpl +++ b/src/views/500-embed.tpl @@ -1,12 +1,14 @@ \ No newline at end of file From b56d6f8b5008f3b516c680525d3261aecab7d794 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Fri, 8 Sep 2017 14:39:50 -0400 Subject: [PATCH 03/50] make call to db in /ping and /sping --- src/webserver.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/webserver.js b/src/webserver.js index 26f4820c15..7b5198378f 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -180,8 +180,15 @@ function setupExpressApp(app, callback) { setupAutoLocale(app, callback); } -function ping(req, res) { - res.status(200).send(req.path === '/sping' ? 'healthy' : '200'); +function ping(req, res, next) { + async.waterfall([ + function (next) { + db.getObject('config', next); + }, + function () { + res.status(200).send(req.path === '/sping' ? 'healthy' : '200'); + }, + ], next); } function setupFavicon(app) { From 9f4e92fa13a55fd89686282fa5da387a5c8578ce Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 12 Sep 2017 13:46:51 -0400 Subject: [PATCH 04/50] closes #5925 --- src/controllers/errors.js | 65 ++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/src/controllers/errors.js b/src/controllers/errors.js index 177bcaa769..a0d8faad21 100644 --- a/src/controllers/errors.js +++ b/src/controllers/errors.js @@ -3,6 +3,7 @@ var nconf = require('nconf'); var winston = require('winston'); var validator = require('validator'); +var plugins = require('../plugins'); exports.handleURIErrors = function (err, req, res, next) { // Handle cases where malformed URIs are passed in @@ -35,30 +36,50 @@ exports.handleURIErrors = function (err, req, res, next) { // this needs to have four arguments or express treats it as `(req, res, next)` // don't remove `next`! exports.handleErrors = function (err, req, res, next) { // eslint-disable-line no-unused-vars - switch (err.code) { - case 'EBADCSRFTOKEN': - winston.error(req.path + '\n', err.message); - return res.sendStatus(403); - case 'blacklisted-ip': - return res.status(403).type('text/plain').send(err.message); - } + var cases = { + EBADCSRFTOKEN: function () { + winston.error(req.path + '\n', err.message); + res.sendStatus(403); + }, + 'blacklisted-ip': function () { + res.status(403).type('text/plain').send(err.message); + }, + }; + var defaultHandler = function () { + // Display NodeBB error page + var status = parseInt(err.status, 10); + if ((status === 302 || status === 308) && err.path) { + return res.locals.isAPI ? res.set('X-Redirect', err.path).status(200).json(err.path) : res.redirect(err.path); + } - var status = parseInt(err.status, 10); - if ((status === 302 || status === 308) && err.path) { - return res.locals.isAPI ? res.set('X-Redirect', err.path).status(200).json(err.path) : res.redirect(err.path); - } + winston.error(req.path + '\n', err.stack); - winston.error(req.path + '\n', err.stack); + res.status(status || 500); - res.status(status || 500); + var path = String(req.path || ''); + if (res.locals.isAPI) { + res.json({ path: validator.escape(path), error: err.message }); + } else { + var middleware = require('../middleware'); + middleware.buildHeader(req, res, function () { + res.render('500', { path: validator.escape(path), error: validator.escape(String(err.message)) }); + }); + } + }; - var path = String(req.path || ''); - if (res.locals.isAPI) { - res.json({ path: validator.escape(path), error: err.message }); - } else { - var middleware = require('../middleware'); - middleware.buildHeader(req, res, function () { - res.render('500', { path: validator.escape(path), error: validator.escape(String(err.message)) }); - }); - } + plugins.fireHook('filter:error.handle', { + cases: cases, + }, function (_err, data) { + if (_err) { + // Assume defaults + winston.warn('[errors/handle] Unable to retrieve plugin handlers for errors: ' + _err.message); + data.cases = cases; + } + + if (data.cases.hasOwnProperty(err.code)) { + data.cases[err.code](err, res, res, defaultHandler); + } else { + defaultHandler(); + } + }); }; From 8b0e6611d954ffac554577b0ebe2021a8badcaba Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 12 Sep 2017 18:55:47 -0400 Subject: [PATCH 05/50] fixed incorrect parameter passed into hook --- src/controllers/errors.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/errors.js b/src/controllers/errors.js index a0d8faad21..96bfda203c 100644 --- a/src/controllers/errors.js +++ b/src/controllers/errors.js @@ -77,7 +77,7 @@ exports.handleErrors = function (err, req, res, next) { // eslint-disable-line n } if (data.cases.hasOwnProperty(err.code)) { - data.cases[err.code](err, res, res, defaultHandler); + data.cases[err.code](err, req, res, defaultHandler); } else { defaultHandler(); } From 211482bbc0f5218d0d96657b9da3a1a42e8676b1 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 13 Sep 2017 12:09:31 -0400 Subject: [PATCH 06/50] fixes #5927 --- public/src/app.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/public/src/app.js b/public/src/app.js index 913360c615..d6acad4554 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -439,6 +439,9 @@ app.cacheBuster = null; .replace('{pageTitle}', function () { return title; }) .replace('{browserTitle}', function () { return config.browserTitle; }); + // Allow translation strings in title on ajaxify (#5927) + title = title.replace(/[/g, '[').replace(/]/g, ']'); + translator.translate(title, function (translated) { titleObj.titles[0] = translated; app.alternatingTitle(''); From 514317ab20c625bb703dc26fab05e1d372e6697f Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 13 Sep 2017 17:06:00 -0400 Subject: [PATCH 07/50] using translator.unescape instead of replaces --- public/src/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/app.js b/public/src/app.js index d6acad4554..421cf71943 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -440,7 +440,7 @@ app.cacheBuster = null; .replace('{browserTitle}', function () { return config.browserTitle; }); // Allow translation strings in title on ajaxify (#5927) - title = title.replace(/[/g, '[').replace(/]/g, ']'); + title = translator.unescape(title); translator.translate(title, function (translated) { titleObj.titles[0] = translated; From dea372a5c56f8dadfd79b4ef7c28768feb1a5586 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 14 Sep 2017 10:15:05 -0400 Subject: [PATCH 08/50] fixes #5932 --- src/middleware/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/middleware/index.js b/src/middleware/index.js index 511ae1ddd4..d7f1ce1a73 100644 --- a/src/middleware/index.js +++ b/src/middleware/index.js @@ -9,6 +9,7 @@ var nconf = require('nconf'); var ensureLoggedIn = require('connect-ensure-login'); var toobusy = require('toobusy-js'); var Benchpress = require('benchpressjs'); +var LRU = require('lru-cache'); var plugins = require('../plugins'); var meta = require('../meta'); @@ -23,6 +24,10 @@ var controllers = { helpers: require('../controllers/helpers'), }; +var delayCache = LRU({ + maxAge: 1000 * 60, +}); + var middleware = module.exports; middleware.applyCSRF = csrf(); @@ -186,6 +191,14 @@ middleware.processTimeagoLocales = function (req, res, next) { middleware.delayLoading = function (req, res, next) { // Introduces an artificial delay during load so that brute force attacks are effectively mitigated + + // Add IP to cache so if too many requests are made, subsequent requests are blocked for a minute + var timesSeen = delayCache.get(req.ip) || 0; + if (timesSeen > 10) { + return res.sendStatus(429); + } + delayCache.set(req.ip, timesSeen += 1); + setTimeout(next, 1000); }; From c2ef5ed8f5fe748755a72c6a23a41e90beadf2b8 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Thu, 14 Sep 2017 18:04:13 +0000 Subject: [PATCH 09/50] Incremented version number - v1.6.0 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 89b28d180f..e09a50a27c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "1.5.3", + "version": "1.6.0", "homepage": "http://www.nodebb.org", "repository": { "type": "git", @@ -136,4 +136,4 @@ "url": "https://github.com/barisusakli" } ] -} +} \ No newline at end of file From a2508161c6eeb715a2ea6e626d1697df76641547 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Thu, 14 Sep 2017 15:57:15 -0400 Subject: [PATCH 10/50] fix hover bg color --- public/src/admin/general/dashboard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/admin/general/dashboard.js b/public/src/admin/general/dashboard.js index 9bc29a2ceb..e0c17ef25e 100644 --- a/public/src/admin/general/dashboard.js +++ b/public/src/admin/general/dashboard.js @@ -208,7 +208,7 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress' backgroundColor: 'rgba(151,187,205,0.2)', borderColor: 'rgba(151,187,205,1)', pointBackgroundColor: 'rgba(151,187,205,1)', - pointHoverBackgroundColor: '#fff', + pointHoverBackgroundColor: 'rgba(151,187,205,1)', pointBorderColor: '#fff', pointHoverBorderColor: 'rgba(151,187,205,1)', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], From b840b96a4a0460886b45209969912d29d5209a4a Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Fri, 15 Sep 2017 09:23:50 +0000 Subject: [PATCH 11/50] Latest translations and fallbacks --- public/language/cs/admin/manage/users.json | 96 ++++++++++---------- public/language/de/admin/settings/email.json | 2 +- public/language/ko/error.json | 2 +- public/language/sr/error.json | 2 +- 4 files changed, 51 insertions(+), 51 deletions(-) diff --git a/public/language/cs/admin/manage/users.json b/public/language/cs/admin/manage/users.json index f1651a814b..3e97528437 100644 --- a/public/language/cs/admin/manage/users.json +++ b/public/language/cs/admin/manage/users.json @@ -1,43 +1,43 @@ { - "users": "Users", - "edit": "Edit", - "make-admin": "Make Admin", - "remove-admin": "Remove Admin", - "validate-email": "Validate Email", - "send-validation-email": "Send Validation Email", - "password-reset-email": "Send Password Reset Email", - "ban": "Ban User(s)", - "temp-ban": "Ban User(s) Temporarily", - "unban": "Unban User(s)", + "users": "Uživatelé", + "edit": "Upravit", + "make-admin": "Učinit adminem", + "remove-admin": "Odebrat admina", + "validate-email": "Ověřit e-mail", + "send-validation-email": "Poslat ověřovací e-mail", + "password-reset-email": "Poslat e-mail pro resetování hesla", + "ban": "Zabanovat uživatele", + "temp-ban": "Dočasně zabanovat uživatele", + "unban": "Odbanovat uživatele", "reset-lockout": "Reset Lockout", "reset-flags": "Reset Flags", - "delete": "Delete User(s)", - "purge": "Delete User(s) and Content", - "download-csv": "Download CSV", - "invite": "Invite", - "new": "New User", + "delete": "Odstranit uživatele", + "purge": "Odstranit uživatele a obsah", + "download-csv": "Stáhnout jako CSV", + "invite": "Pozvat", + "new": "Nový uživatel", - "pills.latest": "Latest Users", - "pills.unvalidated": "Not Validated", - "pills.no-posts": "No Posts", + "pills.latest": "Poslední uživatelé", + "pills.unvalidated": "Neověřeno", + "pills.no-posts": "Žádné příspěvky", "pills.top-posters": "Top Posters", "pills.top-rep": "Most Reputation", - "pills.inactive": "Inactive", + "pills.inactive": "Neaktivní", "pills.flagged": "Most Flagged", "pills.banned": "Banned", "pills.search": "User Search", "search.username": "By User Name", - "search.username-placeholder": "Enter a username to search", - "search.email": "By Email", - "search.email-placeholder": "Enter a email to search", - "search.ip": "By IP Address", - "search.ip-placeholder": "Enter an IP Address to search", - "search.not-found": "User not found!", + "search.username-placeholder": "Zadejte hledané uživatelské jméno", + "search.email": "Podle e-mailu", + "search.email-placeholder": "Zadejte hledaný e-mail", + "search.ip": "Podle IP adresy", + "search.ip-placeholder": "Zadejte hledanou IP adresu", + "search.not-found": "Uživatel nenalezen.", - "inactive.3-months": "3 months", - "inactive.6-months": "6 months", - "inactive.12-months": "12 months", + "inactive.3-months": "3 měsíce", + "inactive.6-months": "6 měsíců", + "inactive.12-months": "12 měsíců", "users.uid": "uid", "users.username": "username", @@ -49,16 +49,16 @@ "users.last-online": "last online", "users.banned": "banned", - "create.username": "User Name", - "create.email": "Email", - "create.email-placeholder": "Email of this user", - "create.password": "Password", - "create.password-confirm": "Confirm Password", + "create.username": "Uživatelské jméno", + "create.email": "E-mail", + "create.email-placeholder": "E-mail tohoto uživatele", + "create.password": "Heslo", + "create.password-confirm": "Potvrzení hesla", - "temp-ban.length": "Ban Length", - "temp-ban.reason": "Reason (Optional)", - "temp-ban.hours": "Hours", - "temp-ban.days": "Days", + "temp-ban.length": "Délka banu", + "temp-ban.reason": "Důvod (volitelné)", + "temp-ban.hours": "Hodiny", + "temp-ban.days": "Dny", "temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.", "alerts.confirm-ban": "Do you really want to ban this user permanently?", @@ -73,19 +73,19 @@ "alerts.confirm-remove-admin": "Do you really want to remove admins?", "alerts.remove-admin-success": "User(s) are no longer administrators.", "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", - "alerts.validate-email-success": "Emails validated", - "alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?", + "alerts.validate-email-success": "E-maily ověřeny", + "alerts.password-reset-confirm": "Chcete poslat těmto uživatelům e-mail pro resetování hesla?", "alerts.confirm-delete": "Warning!
Do you really want to delete user(s)?
This action is not reversable! Only the user account will be deleted, their posts and topics will remain.", "alerts.delete-success": "User(s) Deleted!", "alerts.confirm-purge": "Warning!
Do you really want to delete user(s) and their content?
This action is not reversable! All user data and content will be erased!", - "alerts.create": "Create User", - "alerts.button-create": "Create", - "alerts.button-cancel": "Cancel", - "alerts.error-passwords-different": "Passwords must match!", - "alerts.error-x": "Error

%1

", - "alerts.create-success": "User created!", + "alerts.create": "Vytvořit uživatele", + "alerts.button-create": "Vytvořit", + "alerts.button-cancel": "Zrušit", + "alerts.error-passwords-different": "Hesla musí souhlasit.", + "alerts.error-x": "Chyba

%1

", + "alerts.create-success": "Uživatel vytvořen.", - "alerts.prompt-email": "Email: ", - "alerts.email-sent-to": "An invitation email has been sent to %1", - "alerts.x-users-found": "%1 user(s) found! Search took %2 ms." + "alerts.prompt-email": "E-mail:", + "alerts.email-sent-to": "E-mail s pozvánkou byl odeslán na %1", + "alerts.x-users-found": "Počet nalezených uživatelů: %1 (hledání trvalo %2 ms)" } \ No newline at end of file diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json index 280bd4209b..ec6833e469 100644 --- a/public/language/de/admin/settings/email.json +++ b/public/language/de/admin/settings/email.json @@ -11,7 +11,7 @@ "smtp-transport.service": "Wähle einen Provider", "smtp-transport.service-custom": "Benutzerdefiniert...", "smtp-transport.service-help": "Wähle oben einen Provider aus um die bekannten informationen über diesen zu verwenden. Falls dein Provider nicht in der Liste sein sollte, wähle 'Benutzerdefiniert...' aus und gib die details manuell ein.", - "smtp-transport.gmail-warning1": "Es gab Berichte darüber, dass Gmail nicht mit Accounts mit erhöhten Sicherheitseinstellungen funktioniert. In diesem Fall wirst du deinen Gmail-Account configurieren müssen um den 'Zugriff weniger sicherer Apps' auf dein Konto zuzulassen.", + "smtp-transport.gmail-warning1": "Es gab Berichte darüber, dass Gmail nicht mit Accounts mit erhöhten Sicherheitseinstellungen funktioniert. In diesem Fall wirst du deinen Gmail-Account konfigurieren müssen um den 'Zugriff weniger sicherer Apps' auf dein Konto zuzulassen.", "smtp-transport.gmail-warning2": "Um mehr zu diesem Workaround zu erfahren, ließ dir bitten diesen NodeMailer Artikel zu diesem Problem durch. Eine Alternative wäre, Emailer-Plugins von dritten wie etwa SendGrid, Mailgun usw. zu verwenden. Verfügbare Plugins durchsuchen.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", diff --git a/public/language/ko/error.json b/public/language/ko/error.json index 3b8e4fa788..4f85de5933 100644 --- a/public/language/ko/error.json +++ b/public/language/ko/error.json @@ -4,7 +4,7 @@ "not-logged-in": "로그인하지 않았습니다.", "account-locked": "임시로 잠긴 계정입니다.", "search-requires-login": "검색을 하기 위해서는 계정이 필요합니다. 로그인하거나 가입해 주십시오.", - "goback": "Press back to return to the previous page", + "goback": "이전 페이지로 돌아가려면 뒤로 가기 버튼을 누르세요.", "invalid-cid": "올바르지 않은 게시판 ID입니다.", "invalid-tid": "올바르지 않은 게시물 ID입니다.", "invalid-pid": "올바르지 않은 포스트 ID입니다.", diff --git a/public/language/sr/error.json b/public/language/sr/error.json index 11bffa6a72..52e393ae6b 100644 --- a/public/language/sr/error.json +++ b/public/language/sr/error.json @@ -4,7 +4,7 @@ "not-logged-in": "Изгледа да нисте пријављени.", "account-locked": "Ваш налог је привремено закључан", "search-requires-login": "Претраживање захтева налог — пријавите се или се региструјте.", - "goback": "Press back to return to the previous page", + "goback": "Притисните назад за повратак на претходну страну", "invalid-cid": "Неисправан ID категорије", "invalid-tid": "Неисправан ID теме", "invalid-pid": "Неисправан ID поруке", From 4c0d4308192d754d51ef4f9a0b831cb2f64ca81d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 15 Sep 2017 17:07:43 -0400 Subject: [PATCH 12/50] only return minimal info for pending and invited users --- src/groups.js | 4 ++-- src/groups/user.js | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/groups.js b/src/groups.js index ed96f415b0..3ac8f36914 100644 --- a/src/groups.js +++ b/src/groups.js @@ -121,10 +121,10 @@ Groups.get = function (groupName, options, callback) { Groups.getOwnersAndMembers(groupName, options.uid, 0, stop, next); }, pending: function (next) { - Groups.getUsersFromSet('group:' + groupName + ':pending', next); + Groups.getUsersFromSet('group:' + groupName + ':pending', ['username', 'userslug', 'picture'], next); }, invited: function (next) { - Groups.getUsersFromSet('group:' + groupName + ':invited', next); + Groups.getUsersFromSet('group:' + groupName + ':invited', ['username', 'userslug', 'picture'], next); }, isMember: async.apply(Groups.isMember, options.uid, groupName), isPending: async.apply(Groups.isPending, options.uid, groupName), diff --git a/src/groups/user.js b/src/groups/user.js index fb524a87b9..c959add132 100644 --- a/src/groups/user.js +++ b/src/groups/user.js @@ -6,13 +6,21 @@ var db = require('../database'); var user = require('../user'); module.exports = function (Groups) { - Groups.getUsersFromSet = function (set, callback) { + Groups.getUsersFromSet = function (set, fields, callback) { + if (typeof fields === 'function') { + callback = fields; + fields = null; + } async.waterfall([ function (next) { db.getSetMembers(set, next); }, function (uids, next) { - user.getUsersData(uids, next); + if (fields) { + user.getUsersFields(uids, fields, callback); + } else { + user.getUsersData(uids, next); + } }, ], callback); }; From ce59a78aa4b06a25ba9b4b0c8d8afc9cdf8e94ce Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sat, 16 Sep 2017 09:27:37 +0000 Subject: [PATCH 13/50] Latest translations and fallbacks --- public/language/cs/admin/advanced/errors.json | 2 +- .../cs/admin/appearance/customise.json | 2 +- .../language/cs/admin/development/info.json | 2 +- .../language/cs/admin/manage/categories.json | 2 +- .../cs/admin/manage/registration.json | 2 +- public/language/cs/admin/manage/users.json | 36 +++++++++---------- .../language/cs/admin/settings/advanced.json | 4 +-- public/language/cs/admin/settings/email.json | 4 +-- public/language/cs/admin/settings/guest.json | 2 +- public/language/cs/admin/settings/post.json | 4 +-- public/language/de/admin/extend/plugins.json | 2 +- public/language/fa-IR/admin/admin.json | 2 +- .../language/fa-IR/admin/advanced/cache.json | 4 +-- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/public/language/cs/admin/advanced/errors.json b/public/language/cs/admin/advanced/errors.json index b8a92d25a6..55b40cba32 100644 --- a/public/language/cs/admin/advanced/errors.json +++ b/public/language/cs/admin/advanced/errors.json @@ -10,5 +10,5 @@ "count": "Počet", "no-routes-not-found": "Huráá. Žádná chyba 404.", "clear404-confirm": "Jste si jist/a, že si přejete smazat protokol s chybami 404?", - "clear404-success": "Chyby \"404 – nenalezeno\" byly smazány" + "clear404-success": "Chyby „404 – nenalezeno” byly smazány" } \ No newline at end of file diff --git a/public/language/cs/admin/appearance/customise.json b/public/language/cs/admin/appearance/customise.json index 681bd901de..03ee9c5652 100644 --- a/public/language/cs/admin/appearance/customise.json +++ b/public/language/cs/admin/appearance/customise.json @@ -8,5 +8,5 @@ "custom-header.enable": "Povolit uživatelskou hlavičku", "custom-css.livereload": "Povolit aktuální znovu načtení", - "custom-css.livereload.description": "Povolením si vynutíte, aby všechny relace na každém zařízení pod vaším účtem se kdykoliv obnovili při kliknutí na tlačítko \"Uložit\"." + "custom-css.livereload.description": "Povolením si vynutíte, aby všechny relace na každém zařízení pod vaším účtem se kdykoliv obnovili při kliknutí na tlačítko „Uložit”." } \ No newline at end of file diff --git a/public/language/cs/admin/development/info.json b/public/language/cs/admin/development/info.json index 2187d532b8..542b9a628a 100644 --- a/public/language/cs/admin/development/info.json +++ b/public/language/cs/admin/development/info.json @@ -1,5 +1,5 @@ { - "you-are-on": "Informace – jste na %1%2", + "you-are-on": "Informace – jste na %1:%2", "nodes-responded": "%1 vazeb odpovědělo během %2ms.", "host": "host", "pid": "pid", diff --git a/public/language/cs/admin/manage/categories.json b/public/language/cs/admin/manage/categories.json index a4af2423f8..76a013444c 100644 --- a/public/language/cs/admin/manage/categories.json +++ b/public/language/cs/admin/manage/categories.json @@ -55,7 +55,7 @@ "alert.none-active": "Nemáte žádné aktivní kategorie.", "alert.create": "Vytvořit kategorii", "alert.confirm-moderate": "Jste si jist/a, že chcete umožnit oprávnění moderovat této skupině uživatelů? Tato skupina je veřejná a uživatelé se k ní mohou připojit dle libosti.", - "alert.confirm-purge": "

Opravdu chcete vyčistit tuto kategorii \"%1\"?

UpozorněníVšechny témata a příspěvky v této kategorii budou smazána.

Smazání kategorie vyjme všechny témata a příspěvky a odstraní kategorii z databáze. Pokud chcete vyjmout kategorii dočasně, raději místo toho kategorii \"zakažte\" .

", + "alert.confirm-purge": "

Opravdu chcete vyčistit tuto kategorii \"%1\"?

UpozorněníVšechny témata a příspěvky v této kategorii budou smazána.

Smazání kategorie vyjme všechny témata a příspěvky a odstraní kategorii z databáze. Pokud chcete vyjmout kategorii dočasně, raději místo toho kategorii „zakažte”.

", "alert.purge-success": "Kategorie byla vyčištěna.", "alert.copy-success": "Nastavení bylo zkopírováno.", "alert.set-parent-category": "Nastavit nadřazenou kategorii", diff --git a/public/language/cs/admin/manage/registration.json b/public/language/cs/admin/manage/registration.json index 6b4364d3ff..1958d5d957 100644 --- a/public/language/cs/admin/manage/registration.json +++ b/public/language/cs/admin/manage/registration.json @@ -1,6 +1,6 @@ { "queue": "Fronta", - "description": "V registrační frontě nejsou žádní uživatelé.
Pro povolit tuto funkci, přejděte do nabídky Nastavení → Uživatel → Registrace uživatele a nastavte Typ registrace na \"Schválení správcem\".", + "description": "V registrační frontě nejsou žádní uživatelé.
Pro povolení této funkce, přejděte do nabídky Nastavení → Uživatel → Registrace uživatele a nastavte Typ registrace na „Schválení správcem”.", "list.name": "Jméno", "list.email": "E-mail", diff --git a/public/language/cs/admin/manage/users.json b/public/language/cs/admin/manage/users.json index 3e97528437..ce46543f3a 100644 --- a/public/language/cs/admin/manage/users.json +++ b/public/language/cs/admin/manage/users.json @@ -1,16 +1,16 @@ { "users": "Uživatelé", "edit": "Upravit", - "make-admin": "Učinit adminem", - "remove-admin": "Odebrat admina", + "make-admin": "Učinit správcem", + "remove-admin": "Odebrat správce", "validate-email": "Ověřit e-mail", "send-validation-email": "Poslat ověřovací e-mail", "password-reset-email": "Poslat e-mail pro resetování hesla", - "ban": "Zabanovat uživatele", - "temp-ban": "Dočasně zabanovat uživatele", - "unban": "Odbanovat uživatele", + "ban": "Zakázat uživatele", + "temp-ban": "Dočasně zakázat uživatele", + "unban": "Zrušit zákaz uživatele", "reset-lockout": "Reset Lockout", - "reset-flags": "Reset Flags", + "reset-flags": "Obnovit označení", "delete": "Odstranit uživatele", "purge": "Odstranit uživatele a obsah", "download-csv": "Stáhnout jako CSV", @@ -20,28 +20,28 @@ "pills.latest": "Poslední uživatelé", "pills.unvalidated": "Neověřeno", "pills.no-posts": "Žádné příspěvky", - "pills.top-posters": "Top Posters", - "pills.top-rep": "Most Reputation", + "pills.top-posters": "Nejvíce příspěvků", + "pills.top-rep": "Nejvíce reputace", "pills.inactive": "Neaktivní", - "pills.flagged": "Most Flagged", - "pills.banned": "Banned", - "pills.search": "User Search", + "pills.flagged": "Nejoznačovanější", + "pills.banned": "Zakázán", + "pills.search": "Hledat uživatele", - "search.username": "By User Name", + "search.username": "Dle jména uživatele", "search.username-placeholder": "Zadejte hledané uživatelské jméno", "search.email": "Podle e-mailu", "search.email-placeholder": "Zadejte hledaný e-mail", "search.ip": "Podle IP adresy", "search.ip-placeholder": "Zadejte hledanou IP adresu", - "search.not-found": "Uživatel nenalezen.", + "search.not-found": "Uživatel nebyl nalezen.", "inactive.3-months": "3 měsíce", "inactive.6-months": "6 měsíců", "inactive.12-months": "12 měsíců", "users.uid": "uid", - "users.username": "username", - "users.email": "email", + "users.username": "jméno", + "users.email": "e-mail", "users.postcount": "postcount", "users.reputation": "reputation", "users.flags": "flags", @@ -55,7 +55,7 @@ "create.password": "Heslo", "create.password-confirm": "Potvrzení hesla", - "temp-ban.length": "Délka banu", + "temp-ban.length": "Trvání zákazu", "temp-ban.reason": "Důvod (volitelné)", "temp-ban.hours": "Hodiny", "temp-ban.days": "Dny", @@ -73,7 +73,7 @@ "alerts.confirm-remove-admin": "Do you really want to remove admins?", "alerts.remove-admin-success": "User(s) are no longer administrators.", "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", - "alerts.validate-email-success": "E-maily ověřeny", + "alerts.validate-email-success": "E-maily byly ověřeny", "alerts.password-reset-confirm": "Chcete poslat těmto uživatelům e-mail pro resetování hesla?", "alerts.confirm-delete": "Warning!
Do you really want to delete user(s)?
This action is not reversable! Only the user account will be deleted, their posts and topics will remain.", "alerts.delete-success": "User(s) Deleted!", @@ -83,7 +83,7 @@ "alerts.button-cancel": "Zrušit", "alerts.error-passwords-different": "Hesla musí souhlasit.", "alerts.error-x": "Chyba

%1

", - "alerts.create-success": "Uživatel vytvořen.", + "alerts.create-success": "Uživatel byl vytvořen.", "alerts.prompt-email": "E-mail:", "alerts.email-sent-to": "E-mail s pozvánkou byl odeslán na %1", diff --git a/public/language/cs/admin/settings/advanced.json b/public/language/cs/admin/settings/advanced.json index 569536e81f..7796c4a1ae 100644 --- a/public/language/cs/admin/settings/advanced.json +++ b/public/language/cs/admin/settings/advanced.json @@ -4,7 +4,7 @@ "maintenance-mode.message": "Zpráva údržby", "headers": "Hlavičky", "headers.allow-from": "Nastavte ALLOW-FROM pro umístění NodeBB do iFrame", - "headers.powered-by": "Upravte si hlavičku \"Powered by\" odesílanou NodeBB", + "headers.powered-by": "Upravte si hlavičku „Powered by” odesílanou NodeBB", "headers.acao": "Access-Control-Allow-Origin", "headers.acao-help": "Pro zakázání přístupu na všechny stránky, zanechte prázdné", "headers.acam": "Access-Control-Allow-Methods", @@ -13,7 +13,7 @@ "traffic.help": "NodeBB obsahuje modul, který automaticky zamítá požadavky při vysokém vytížení. Toto nastavení můžete zde upravit, ačkoliv výchozí hodnoty jsou zaručením úspěchu.", "traffic.enable": "Povolit správu provozu", "traffic.event-lag": "Hranice prodlevy smyčky události (v milisekundách)", - "traffic.event-lag-help": "Snížení této hodnoty sníží čas pro načtení stránky, ale taky zobrazí více uživatelům zprávu o \"přetížení stránek\". (je vyžadován restart)", + "traffic.event-lag-help": "Snížení této hodnoty sníží čas pro načtení stránky, ale taky zobrazí více uživatelům zprávu o „přetížení stránek”. (je vyžadován restart)", "traffic.lag-check-interval": "Kontrola intervalů (v milisekundách)", "traffic.lag-check-interval-help": "Snížení této hodnoty způsobí, že NodeBB bude citlivější na zatížení načítání stránek a na kontrolu tohoto zatížení. (je vyžadován restart)" } \ No newline at end of file diff --git a/public/language/cs/admin/settings/email.json b/public/language/cs/admin/settings/email.json index 899074e00b..4b6dbb5b1e 100644 --- a/public/language/cs/admin/settings/email.json +++ b/public/language/cs/admin/settings/email.json @@ -1,7 +1,7 @@ { "email-settings": "Nastavení e-mailu", "address": "E-mailové adresy", - "address-help": "Následující e-mailové adresy budou zobrazeny příjemci v políčkách \"Od\" a \"Odpovědět\".", + "address-help": "Následující e-mailové adresy budou zobrazeny příjemci v políčkách „Od” a „Odpovědět”.", "from": "Jméno – od", "from-help": "Zobrazené jméno v e-mailu v – Od", @@ -10,7 +10,7 @@ "smtp-transport-help": "Ze seznamu můžete vybrat známé služby nebo zadat vlastní.", "smtp-transport.service": "Vyberte službu", "smtp-transport.service-custom": "Uživatelský služba", - "smtp-transport.service-help": "Pro použití známých informací, vyberte název služby. Nebo vyberte \"uživatelskou službu\" a zadejte detaily níže.", + "smtp-transport.service-help": "Pro použití známých informací, vyberte název služby. Nebo vyberte „uživatelskou službu” a zadejte detaily níže.", "smtp-transport.gmail-warning1": "Někdy služba Gmail nefunguje správně s účty s nejvyšším zabezpečením. V těchto případech, musíte nakonfigurovat váš Gmail účet pro méně zabezpečené aplikace.", "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "Hostitel SMTP", diff --git a/public/language/cs/admin/settings/guest.json b/public/language/cs/admin/settings/guest.json index 4b42e8530c..f9178c69c9 100644 --- a/public/language/cs/admin/settings/guest.json +++ b/public/language/cs/admin/settings/guest.json @@ -1,7 +1,7 @@ { "handles": "Zacházení s hosty", "handles.enabled": "Povolit upravení zacházení s hosty", - "handles.enabled-help": "Tato možnost odkryje nové pole, které umožňuje hostům vybrat jméno, které se připojí ke každému příspěvku, který vytvoří. Bude-li zakázáno, budou jednoduše nazýváni \"Host\"", + "handles.enabled-help": "Tato možnost odkryje nové pole, které umožňuje hostům vybrat jméno, které se připojí ke každému příspěvku, který vytvoří. Bude-li zakázáno, budou jednoduše nazýváni „Host”", "privileges": "Oprávnění hostů", "privileges.can-search": "Povolit hostům bez přihlášení používat hledání", "privileges.can-search-users": "Povolit hostům bez přihlášení hledat uživatele" diff --git a/public/language/cs/admin/settings/post.json b/public/language/cs/admin/settings/post.json index c96cad0f68..c12559df24 100644 --- a/public/language/cs/admin/settings/post.json +++ b/public/language/cs/admin/settings/post.json @@ -26,7 +26,7 @@ "timestamp.cut-off-help": "Datum a čas bude zobrazen relativně (tj. „před 3 hodinami” / „před 5 dny”), a dle toho lokalizován do různých\n\t\t\t\t\tjazyků. Za určitých okolností, může tento text být přepnut na lokalizované datum\n\t\t\t\t\t(tj. 5 Led 2017 15:30)
(výchozí: 30,nebo měsíc). Nastavte na 0, pro zobrazení datumů, zanecháte-li prázdné, bude vždy zobrazen relativní čas.", "teaser": "Ukázka příspěvku", "teaser.last-post": "Poslední – zobrazení posledního příspěvku, včetně hlavního příspěvku, nejsou-li odpovědi", - "teaser.last-reply": "Poslední – zobrazení poslední odpovědi, nebo nejsou-li žádné odpovědi textu \"Bez odpovědi\"", + "teaser.last-reply": "Poslední – zobrazení poslední odpovědi, nebo nejsou-li žádné odpovědi textu „Bez odpovědi”", "teaser.first": "První", "unread": "Nastavení nepřečtených", "unread.cutoff": "Dny ukončení nepřečtených", @@ -40,7 +40,7 @@ "signature.max-length": "Maximální délka podpisu", "composer": "Nastavení kompozice", "composer-help": "Následující nastavení kontroluje funkčnost a/nebo vzhled zobrazených příspěvků\n\t\t\t\tpro uživatele, kteří vytvoří nové téma nebo odpovídají na existující téma.", - "composer.show-help": "Zobrazit záložku \"Nápověda\"", + "composer.show-help": "Zobrazit záložku „Nápověda”", "composer.enable-plugin-help": "Povolit rozšíření přidat obsah do záložky nápovědy", "composer.custom-help": "Uživatelský text nápovědy", "ip-tracking": "Sledování IP", diff --git a/public/language/de/admin/extend/plugins.json b/public/language/de/admin/extend/plugins.json index 0a5309af6f..10f8077f44 100644 --- a/public/language/de/admin/extend/plugins.json +++ b/public/language/de/admin/extend/plugins.json @@ -46,6 +46,6 @@ "alert.possibly-incompatible": "

Keine Kompatibilitätsinformationen gefunden

Dieses Plugin legte keine spezifische NodeBB version fest, welche für die Installation benötigt wird. Volle Kompatibilität kann nicht gewährleistet werden, was dazu führen könnte, dass ihr NodeBB nicht mehr korrekt startet.

Für den Fall, dass NodeBB nicht mehr ordnungsgemäß startet:

$ ./nodebb reset plugin=\"%1\"

Soll mit der installation der neuesten Version dieses Plugins fortgefahren werden?

", "license.title": "Plugin-Lizenzinformation", - "license.intro": "Das Plugin %1is unter der %2 Lizenz lizenziert. Bitte ließ dir diese durch bevor du dieses Plugin aktivierst.", + "license.intro": "Das Plugin %1is unter der %2 lizenziert. Bitte ließ dir diese durch bevor du dieses Plugin aktivierst.", "license.cta": "Willst du dieses Plugin wirklich aktivieren?" } diff --git a/public/language/fa-IR/admin/admin.json b/public/language/fa-IR/admin/admin.json index 27d17b9273..6b898588cf 100644 --- a/public/language/fa-IR/admin/admin.json +++ b/public/language/fa-IR/admin/admin.json @@ -3,5 +3,5 @@ "alert.confirm-restart": "آیا از راه اندازی مجدد نود‌بی‌بی مطمئن هستید؟", "acp-title": "%1 | کنترل پنل مدیر کل نود‌بی‌بی", - "settings-header-contents": "Contents" + "settings-header-contents": "محتوا" } \ No newline at end of file diff --git a/public/language/fa-IR/admin/advanced/cache.json b/public/language/fa-IR/admin/advanced/cache.json index b9ed5aaae6..5e657ea5f5 100644 --- a/public/language/fa-IR/admin/advanced/cache.json +++ b/public/language/fa-IR/admin/advanced/cache.json @@ -5,7 +5,7 @@ "length-to-max": "Length / Max", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", - "items-in-cache": "Items in Cache", + "items-in-cache": "موارد موجود در کش", "control-panel": "کنترل پنل", - "update-settings": "Update Cache Settings" + "update-settings": "به روز رسانی تنظیمات کش" } \ No newline at end of file From 6ea82515ccded30355d6ebd9e0cfdb5aefc8351f Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sun, 17 Sep 2017 09:23:31 +0000 Subject: [PATCH 14/50] Latest translations and fallbacks --- public/language/hu/admin/admin.json | 6 ++--- public/language/hu/admin/advanced/cache.json | 6 ++--- .../language/hu/admin/advanced/database.json | 18 ++++++------- .../language/zh-CN/admin/extend/plugins.json | 2 +- .../zh-CN/admin/manage/ip-blacklist.json | 4 +-- .../language/zh-CN/admin/settings/email.json | 26 +++++++++---------- .../language/zh-CN/admin/settings/post.json | 4 +-- public/language/zh-CN/error.json | 2 +- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/public/language/hu/admin/admin.json b/public/language/hu/admin/admin.json index 70e7a5f055..35f482d4b1 100644 --- a/public/language/hu/admin/admin.json +++ b/public/language/hu/admin/admin.json @@ -1,7 +1,7 @@ { - "alert.confirm-reload": "Biztosan szeretnéd újratölteni a NodeBB-t?", - "alert.confirm-restart": "Biztosan szeretnéd újraindítani a NodeBB-t?", + "alert.confirm-reload": "Biztosan újra szeretnéd tölteni a NodeBB-t?", + "alert.confirm-restart": "Biztosan újra szeretnéd indítani a NodeBB-t?", - "acp-title": "%1 | NodeBB Admin Kezelőpanel", + "acp-title": "%1 | NodeBB Admin Vezérlőpult", "settings-header-contents": "Tartalmak" } \ No newline at end of file diff --git a/public/language/hu/admin/advanced/cache.json b/public/language/hu/admin/advanced/cache.json index ee9cbd53a8..a0e7f07c8f 100644 --- a/public/language/hu/admin/advanced/cache.json +++ b/public/language/hu/admin/advanced/cache.json @@ -1,7 +1,7 @@ { - "post-cache": "Bejegyzés Gyorsítótár", - "posts-in-cache": "Bejegyzések a Gyorsítótárban", - "average-post-size": "Átlagos Bejegyzés Méret", + "post-cache": "Poszt gyorsítótár", + "posts-in-cache": "Posztok a gyorsítótárban", + "average-post-size": "Átlag posztméret", "length-to-max": "Hossz / Max", "percent-full": "%1% Tele", "post-cache-size": "Bejegyzés Gyorsítótár Mérete", diff --git a/public/language/hu/admin/advanced/database.json b/public/language/hu/admin/advanced/database.json index 8aef4ee116..c7b2fda4c9 100644 --- a/public/language/hu/admin/advanced/database.json +++ b/public/language/hu/admin/advanced/database.json @@ -2,21 +2,21 @@ "x-b": "%1 b", "x-mb": "%1 mb", "x-gb": "%1 gb", - "uptime-seconds": "Működési Idő Másodpercben", - "uptime-days": "Működési Idő Napban", + "uptime-seconds": "Üzemidő másodpercben", + "uptime-days": "Üzemidő napban", "mongo": "Mongo", "mongo.version": "MongoDB Verzió", "mongo.storage-engine": "Tároló Motor", "mongo.collections": "Gyűjtemények", - "mongo.objects": "Tárgyak", - "mongo.avg-object-size": "Átl. Tárgy Méret", - "mongo.data-size": "Data Size", - "mongo.storage-size": "Storage Size", - "mongo.index-size": "Index Size", - "mongo.file-size": "File Size", + "mongo.objects": "Objektum", + "mongo.avg-object-size": "Átl. objektumméret", + "mongo.data-size": "Adatméret", + "mongo.storage-size": "Tárolóméret", + "mongo.index-size": "Indexméret", + "mongo.file-size": "Fájlméret", "mongo.resident-memory": "Rezidens Memória", - "mongo.virtual-memory": "Virtuális Memória", + "mongo.virtual-memory": "Virtuális memória", "mongo.mapped-memory": "Leképezett Memória", "mongo.raw-info": "MongoDB Nyers Infó", diff --git a/public/language/zh-CN/admin/extend/plugins.json b/public/language/zh-CN/admin/extend/plugins.json index 3a86470581..8bc3065ed6 100644 --- a/public/language/zh-CN/admin/extend/plugins.json +++ b/public/language/zh-CN/admin/extend/plugins.json @@ -46,6 +46,6 @@ "alert.possibly-incompatible": "

未找到兼容性信息

此插件未注明对应的 NodeBB 版本。可能会产生兼容问题,导致 NodeBB 无法正常启动。

NodeBB 无法正常启动时请运行以下命令:

$ ./nodebb reset plugin=\"%1\"

是否继续安装此插件的最新版本?

", "license.title": "插件许可证信息", - "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", + "license.intro": "插件 %1 在 %2 下获得许可。请在激活此插件之前阅读和理解许可条款。", "license.cta": "你希望继续使用这个插件吗?" } diff --git a/public/language/zh-CN/admin/manage/ip-blacklist.json b/public/language/zh-CN/admin/manage/ip-blacklist.json index 7cce4570a7..531a048006 100644 --- a/public/language/zh-CN/admin/manage/ip-blacklist.json +++ b/public/language/zh-CN/admin/manage/ip-blacklist.json @@ -13,6 +13,6 @@ "alerts.applied-success": "黑名单生效", - "analytics.blacklist-hourly": "Figure 1 – Blacklist hits per hour", - "analytics.blacklist-daily": "Figure 2 – Blacklist hits per day" + "analytics.blacklist-hourly": "图 1 – 每小时触发黑名单数", + "analytics.blacklist-daily": "图 2– 每日触发黑名单数" } \ No newline at end of file diff --git a/public/language/zh-CN/admin/settings/email.json b/public/language/zh-CN/admin/settings/email.json index 1c41cdfb43..fe6941b412 100644 --- a/public/language/zh-CN/admin/settings/email.json +++ b/public/language/zh-CN/admin/settings/email.json @@ -5,19 +5,19 @@ "from": "发送者", "from-help": "用于邮件中显示的发送者", - "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", - "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", - "smtp-transport.service": "Select a service", - "smtp-transport.service-custom": "Custom Service", - "smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select 'Custom Service' and enter the details below.", - "smtp-transport.gmail-warning1": "There have been reports of the Gmail service not working on accounts with heightened security. In those scenarios, you will have to configure your GMail account to allow less secure apps.", - "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", - "smtp-transport.host": "SMTP Host", - "smtp-transport.port": "SMTP Port", - "smtp-transport.username": "Username", - "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", - "smtp-transport.password": "Password", + "smtp-transport": "SMTP 通信", + "smtp-transport.enabled": "使用一个外部邮箱系统来发送邮件", + "smtp-transport-help": "你可以从列表中选取一个已知的服务或自定义。", + "smtp-transport.service": "选择服务", + "smtp-transport.service-custom": "自定义", + "smtp-transport.service-help": "选取一个上方服务以便使用已知的信息。此外,还可以选取 “自定义”并在下方输入配置细节。", + "smtp-transport.gmail-warning1": "有报告称,Gmail 代发在安全性更高的账户上不工作。在这种情况中,你需要将您的Gmail帐户设为允许安全性较低的应用程式。", + "smtp-transport.gmail-warning2": "有关此解决方法的更多信息,请参阅有关该问题的NodeMailer 文章。 另一种方法是利用 SendGrid,Mailgun 等第三方电子邮件插件。点这儿以浏览可用的插件。", + "smtp-transport.host": "SMTP 主机名", + "smtp-transport.port": "SMTP 端口", + "smtp-transport.username": "用户名", + "smtp-transport.username-help": "对于Gmail服务,请在这里输入完整的电子邮件地址,尤其是如果你使用的是 Google Apps 托管的域名。", + "smtp-transport.password": "密码", "template": "编辑电子邮件模板", "template.select": "选择电子邮件模板", diff --git a/public/language/zh-CN/admin/settings/post.json b/public/language/zh-CN/admin/settings/post.json index 3e020e96f2..6fd9894103 100644 --- a/public/language/zh-CN/admin/settings/post.json +++ b/public/language/zh-CN/admin/settings/post.json @@ -6,8 +6,8 @@ "sorting.most-votes": "最多投票", "sorting.topic-default": "默认主题排序", "restrictions": "发帖限制", - "restrictions.post-queue": "Enable post queue", - "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", + "restrictions.post-queue": "启用发布队列", + "restrictions.post-queue-help": "启用发布队列将会使新用户的发布内容进入批准队列", "restrictions.seconds-between": "发帖间隔(单位:秒)", "restrictions.seconds-between-new": "对于新用户的发帖间隔(单位:秒)", "restrictions.rep-threshold": "取消发帖限制所需的声望值", diff --git a/public/language/zh-CN/error.json b/public/language/zh-CN/error.json index 6c89583748..4711bf6034 100644 --- a/public/language/zh-CN/error.json +++ b/public/language/zh-CN/error.json @@ -4,7 +4,7 @@ "not-logged-in": "您还没有登录。", "account-locked": "您的帐号已被临时锁定", "search-requires-login": "搜索功能仅限会员使用 - 请先登录或者注册。", - "goback": "Press back to return to the previous page", + "goback": "按返回以后退至前一页", "invalid-cid": "无效版块 ID", "invalid-tid": "无效主题 ID", "invalid-pid": "无效帖子 ID", From bb65ecd8b847f88665e5bf6c2dda3005270acf30 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Mon, 18 Sep 2017 09:23:51 +0000 Subject: [PATCH 15/50] Latest translations and fallbacks --- public/language/hu/admin/advanced/database.json | 8 ++++---- .../language/pt-BR/admin/manage/post-queue.json | 16 ++++++++-------- public/language/pt-BR/error.json | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/public/language/hu/admin/advanced/database.json b/public/language/hu/admin/advanced/database.json index c7b2fda4c9..7cdc85ea74 100644 --- a/public/language/hu/admin/advanced/database.json +++ b/public/language/hu/admin/advanced/database.json @@ -15,13 +15,13 @@ "mongo.storage-size": "Tárolóméret", "mongo.index-size": "Indexméret", "mongo.file-size": "Fájlméret", - "mongo.resident-memory": "Rezidens Memória", + "mongo.resident-memory": "Rezidens memória", "mongo.virtual-memory": "Virtuális memória", - "mongo.mapped-memory": "Leképezett Memória", - "mongo.raw-info": "MongoDB Nyers Infó", + "mongo.mapped-memory": "Leképezett memória", + "mongo.raw-info": "MongoDB nyers infó", "redis": "Redis", - "redis.version": "Redis Verzió", + "redis.version": "Redis verzió", "redis.connected-clients": "Connected Clients", "redis.connected-slaves": "Connected Slaves", "redis.blocked-clients": "Blocked Clients", diff --git a/public/language/pt-BR/admin/manage/post-queue.json b/public/language/pt-BR/admin/manage/post-queue.json index f748fb0ee2..9d83642f32 100644 --- a/public/language/pt-BR/admin/manage/post-queue.json +++ b/public/language/pt-BR/admin/manage/post-queue.json @@ -1,10 +1,10 @@ { - "post-queue": "Post Queue", - "description": "There are no posts in the post queue.
To enable this feature, go to Settings → Post → Posting Restrictions and enable Post Queue.", - "user": "User", - "category": "Category", - "title": "Title", - "content": "Content", - "posted": "Posted", - "reply-to": "Reply to \"%1\"" + "post-queue": "Fila de Posts", + "description": "Não há posts na fila de posts.
Para habilitar esta função, vá paraConfigurações → Post → Restrições de Postageme habilite Fila de Posts.", + "user": "Usuário", + "category": "Categoria", + "title": "Título", + "content": "Conteúdo", + "posted": "Postado", + "reply-to": "Resposta para \"%1\"" } \ No newline at end of file diff --git a/public/language/pt-BR/error.json b/public/language/pt-BR/error.json index 7eeee49047..fd4b1914cb 100644 --- a/public/language/pt-BR/error.json +++ b/public/language/pt-BR/error.json @@ -4,7 +4,7 @@ "not-logged-in": "Você não parece estar logado.", "account-locked": "Sua conta foi temporariamente bloqueada ", "search-requires-login": "É necessário ter uma conta para pesquisar - por favor efetue o login ou cadastre-se.", - "goback": "Press back to return to the previous page", + "goback": "Pressione voltar para retornar à página anterior", "invalid-cid": "ID de Categoria Inválido", "invalid-tid": "ID de Tópico Inválido", "invalid-pid": "ID de Post Inválido", From 8f0e48aa4058e5be9d2eb63b18eae7f7d1ac098e Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Tue, 19 Sep 2017 09:23:49 +0000 Subject: [PATCH 16/50] Latest translations and fallbacks --- .../language/pl/admin/appearance/skins.json | 2 +- .../language/pl/admin/appearance/themes.json | 2 +- .../language/pl/admin/development/logger.json | 2 +- public/language/pl/admin/extend/plugins.json | 56 +++---- public/language/pl/admin/extend/rewards.json | 4 +- public/language/pl/admin/extend/widgets.json | 10 +- .../language/pl/admin/general/dashboard.json | 36 ++-- .../language/pl/admin/general/homepage.json | 8 +- .../language/pl/admin/general/languages.json | 6 +- .../language/pl/admin/general/navigation.json | 18 +- public/language/pl/admin/general/social.json | 4 +- public/language/pl/admin/general/sounds.json | 8 +- .../language/pl/admin/manage/categories.json | 46 +++--- public/language/pl/admin/manage/groups.json | 20 +-- .../pl/admin/manage/ip-blacklist.json | 26 +-- .../language/pl/admin/manage/post-queue.json | 16 +- .../pl/admin/manage/registration.json | 24 +-- public/language/pl/admin/manage/tags.json | 28 ++-- public/language/pl/admin/manage/users.json | 154 +++++++++--------- public/language/pl/admin/menu.json | 24 +-- .../language/pl/admin/settings/advanced.json | 24 +-- public/language/pl/admin/settings/chat.json | 12 +- .../language/pl/admin/settings/cookies.json | 16 +- public/language/pl/admin/settings/email.json | 54 +++--- .../language/pl/admin/settings/general.json | 64 ++++---- public/language/pl/admin/settings/group.json | 18 +- public/language/pl/admin/settings/guest.json | 12 +- .../pl/admin/settings/notifications.json | 2 +- .../pl/admin/settings/pagination.json | 14 +- public/language/pl/admin/settings/post.json | 92 +++++------ .../pl/admin/settings/reputation.json | 14 +- .../language/pl/admin/settings/sockets.json | 8 +- public/language/pl/admin/settings/tags.json | 18 +- .../language/pl/admin/settings/uploads.json | 50 +++--- public/language/pl/admin/settings/user.json | 90 +++++----- .../pl/admin/settings/web-crawler.json | 16 +- public/language/pl/category.json | 4 +- public/language/pl/email.json | 18 +- public/language/pl/error.json | 36 ++-- public/language/pl/flags.json | 98 +++++------ public/language/pl/global.json | 20 +-- public/language/pl/groups.json | 14 +- public/language/pl/modules.json | 2 +- public/language/pl/notifications.json | 22 +-- public/language/pl/pages.json | 12 +- public/language/pl/register.json | 4 +- public/language/pl/reset_password.json | 2 +- public/language/pl/search.json | 10 +- public/language/pl/success.json | 2 +- public/language/pl/topic.json | 42 ++--- public/language/pl/uploads.json | 4 +- public/language/pl/user.json | 10 +- public/language/pl/users.json | 8 +- 53 files changed, 653 insertions(+), 653 deletions(-) diff --git a/public/language/pl/admin/appearance/skins.json b/public/language/pl/admin/appearance/skins.json index 8009b420b6..05c898c195 100644 --- a/public/language/pl/admin/appearance/skins.json +++ b/public/language/pl/admin/appearance/skins.json @@ -1,6 +1,6 @@ { "loading": "Ładowania skórki...", - "homepage": "Strona główna", + "homepage": "Strona startowa", "select-skin": "Wybierz Skórkę", "current-skin": "Obecna skórka", "skin-updated": "Skórka zaktualizowana", diff --git a/public/language/pl/admin/appearance/themes.json b/public/language/pl/admin/appearance/themes.json index eca6731adc..70f0f304f0 100644 --- a/public/language/pl/admin/appearance/themes.json +++ b/public/language/pl/admin/appearance/themes.json @@ -1,6 +1,6 @@ { "checking-for-installed": "Sprawdzanie zainstalowanego stylu...", - "homepage": "Strona główna", + "homepage": "Strona startowa", "select-theme": "Wybierz Styl", "current-theme": "Aktualny Styl", "no-themes": "Brak zainstalowanych stylów", diff --git a/public/language/pl/admin/development/logger.json b/public/language/pl/admin/development/logger.json index 2dc0c6fca8..5f76474579 100644 --- a/public/language/pl/admin/development/logger.json +++ b/public/language/pl/admin/development/logger.json @@ -1,6 +1,6 @@ { "logger-settings": "Ustawienia dziennika", - "description": "By enabling the check boxes, you will receive logs to your terminal. If you specify a path, logs will then be saved to a file instead. HTTP logging is useful for collecting statistics about who, when, and what people access on your forum. In addition to logging HTTP requests, we can also log socket.io events. Socket.io logging, in combination with redis-cli monitor, can be very helpful for learning NodeBB's internals.", + "description": "Poprzez zaznaczenie tych pól wyboru otrzymasz na twój terminal. Zamiast tego jeśli podasz ścieżkę, logi zostaną tam zapisane. Logowanie HTTP jest przydatne dla zbierania statystyk o tym kto, kiedy i co czytali na twoim forum. W dodatku do logowania żądań HTTP, możemy też zapisywać zdarzenia socket.io. Logowanie Socket.io, w powiązaniu z monitorowaniem redis-cli, może być bardzo przydatne podczas poznawania mechanizmów wewnętrznych NodeBB.", "explanation": "Zaznacz/odznacz aby właczyc albo wyłączyć dziennik. Restart nie jest wymagany.", "enable-http": "Zapisuj wydarzenia HTTP", "enable-socket": "Zapisuj wydarzenia Socket.io", diff --git a/public/language/pl/admin/extend/plugins.json b/public/language/pl/admin/extend/plugins.json index f9396c05a8..99801f0b18 100644 --- a/public/language/pl/admin/extend/plugins.json +++ b/public/language/pl/admin/extend/plugins.json @@ -1,21 +1,21 @@ { "installed": "Zainstalowane", "active": "Aktywne", - "inactive": "Nieaktywny", + "inactive": "Nieaktywne", "out-of-date": "Nieaktualne", - "none-found": "Nie znaleziono pluginów", - "none-active": "Brak aktywnych pluginów", - "find-plugins": "Znajdź plugin", + "none-found": "Nie znaleziono wtyczek", + "none-active": "Brak aktywnych wtyczek", + "find-plugins": "Znajdź wtyczkę", - "plugin-search": "Szukaj pluginów", - "plugin-search-placeholder": "Szukaj pluginów...", - "reorder-plugins": "Posortuj Pluginy", - "order-active": "Posortuj Aktywne Pluginy", - "dev-interested": "Zainteresowany pisanie pluginów do NodeBB??", - "docs-info": "Full documentation regarding plugin authoring can be found in the NodeBB Docs Portal.", + "plugin-search": "Szukaj wtyczek", + "plugin-search-placeholder": "Szukaj wtyczki...", + "reorder-plugins": "Posortuj wtyczki", + "order-active": "Posortuj aktywne wtyczki", + "dev-interested": "Zainteresowany pisaniem wtyczek do NodeBB?", + "docs-info": "Pełna dokumentacja dotycząca tworzenia wtyczek może być znaleziona w NodeBB Docs Portal.", - "order.description": "Pewne pluginy działają idealnie kiedy są zainicjalizowane przed/po innymi pluginami.", - "order.explanation": "Pluginy ładują się tutaj w określonej kolejności, od góry do dołu.", + "order.description": "Pewne wtyczki działają idealnie kiedy są zainicjalizowane przed/po innymi/innych wtyczkami/wtyczkach.", + "order.explanation": "Wtyczki ładują się tutaj w określonej kolejności, od góry do dołu.", "plugin-item.themes": "Style", "plugin-item.deactivate": "Dezaktywuj", @@ -28,24 +28,24 @@ "plugin-item.upgrade": "Zaktualizuj", "plugin-item.more-info": "Po więcej informacji:", "plugin-item.unknown": "Nieznane", - "plugin-item.unknown-explanation": "Stan tego pluginu nie może być ustalony, prawdopodobnie z powodu błędu konfiguracji błędów.", + "plugin-item.unknown-explanation": "Stan tej wtyczki nie może być ustalony, prawdopodobnie z powodu błędu konfiguracji.", - "alert.enabled": "Plugin Włączony", - "alert.disabled": "Plugin Wyłączony", - "alert.upgraded": "Plugin Zaktualizowany", - "alert.installed": "Plugin Zainstalowany", - "alert.uninstalled": "Plugin Odinstalowany", - "alert.activate-success": "Proszę zrestartować NodeBB, aby poprawnie działał plugin.", - "alert.deactivate-success": "Plugin pomyślnie dezaktywowany", - "alert.upgrade-success": "Proszę przeładować NodeBB, aby poprawnie działał plugin", - "alert.install-success": "Plugin pomyślnie zainstalowany, proszę aktywować go.", - "alert.uninstall-success": "Plugin został pomyślnie zdezaktywowany oraz odinstalowany.", + "alert.enabled": "Wtyczka włączona", + "alert.disabled": "Wtyczka wyłączona", + "alert.upgraded": "Wtyczka zaktualizowana", + "alert.installed": "Wtyczka zainstalowana", + "alert.uninstalled": "Wtyczka odinstalowana", + "alert.activate-success": "Proszę zrestartować NodeBB, aby w pełni aktywować tą wtyczkę", + "alert.deactivate-success": "Wtyczka pomyślnie dezaktywowana", + "alert.upgrade-success": "Proszę przeładować NodeBB, aby w pełni aktualizować tą wtyczkę", + "alert.install-success": "Wtyczka została pomyślnie zainstalowana, proszę ją aktywować.", + "alert.uninstall-success": "Wtyczka została pomyślnie zdezaktywowana oraz odinstalowana.", "alert.suggest-error": "

NodeBB nie może dostać się do menedżera pakietów, kontynuować instalacji ostatniej wersji?

Serwer zwrócił (%1): %2
", "alert.package-manager-unreachable": "

NodeBB nie może dostać się do menedżera pakietów, aktualizacja nie jest sugerowana w tym momencie.

", - "alert.incompatible": "

Twoja wersja NodeBB (v%1) jest usuwana w celu uaktualnienia do v%2 tego pluginu. Proszę zaktualizuj twoje NodeBB jeżeli chcesz zainstalować nowszą wersję tego pluginu.

", - "alert.possibly-incompatible": "

No Compatibility Information Found

This plugin did not specify a specific version for installation given your NodeBB version. Full compatibility cannot be guaranteed, and may cause your NodeBB to no longer start properly.

In the event that NodeBB cannot boot properly:

$ ./nodebb reset plugin=\"%1\"

Continue installation of latest version of this plugin?

", + "alert.incompatible": "

Twoja wersja NodeBB (v%1) umożliwia uaktualnienie jedynie do v%2 tej wtyczki. Proszę zaktualizuj twoje NodeBB, jeżeli chcesz zainstalować nowszą wersję tej wtyczki.

", + "alert.possibly-incompatible": "

Nie znaleziono informacji o kompatybilności

Ta wtyczka nie specyfikuje konkretnej wersji NodeBB. Pełna zgodność nie może być zagwarantowana oraz może się zdarzyć, że NodeBB nie będzie uruchamiać się prawidłowo.

W przypadku, gdy NodeBB nie możne się poprawnie uruchomić:

$ ./nodebb reset plugin=\"%1\"

Kontynuować instalacje ostatniej wersji tej wtyczki?

", - "license.title": "Informacje o licencji pluginu", - "license.intro": "The plugin %1 is licensed under the %2. Please read and understand the license terms prior to activating this plugin.", - "license.cta": "Do you wish to continue with activating this plugin?" + "license.title": "Informacje o licencji wtyczki", + "license.intro": "Wtyczka %1 jest licencjonowana według %2. Proszę zapoznać się z warunkami licencji przed aktywacją tej wtyczki.", + "license.cta": "Czy chcesz kontynuować aktywację tej wtyczki?" } diff --git a/public/language/pl/admin/extend/rewards.json b/public/language/pl/admin/extend/rewards.json index d4bf572396..ab3c0b8dfe 100644 --- a/public/language/pl/admin/extend/rewards.json +++ b/public/language/pl/admin/extend/rewards.json @@ -1,10 +1,10 @@ { "rewards": "Nagrody", - "condition-if-users": "Jeżeli Użytkownik", + "condition-if-users": "Jeżeli użytkownik", "condition-is": "Jest:", "condition-then": "To:", "max-claims": "Ile razy nagroda może zostać przyznana", - "zero-infinite": "Wpisz 0, aby nieskończona ilość razy", + "zero-infinite": "Wpisz 0, aby nieskończona liczbę razy", "delete": "Usuń", "enable": "Włącz", "disable": "Wyłącz", diff --git a/public/language/pl/admin/extend/widgets.json b/public/language/pl/admin/extend/widgets.json index c5178fe143..5a64819d71 100644 --- a/public/language/pl/admin/extend/widgets.json +++ b/public/language/pl/admin/extend/widgets.json @@ -1,16 +1,16 @@ { "available": "Dostępne Widgety", "explanation": "Wybierz widget z menu rozwijalnego i przeciągnij go na wybrane pole z lewej strony.", - "none-installed": "No widgets found! Activate the essential widgets plugin in the plugins control panel.", - "containers.available": "Available Containers", - "containers.explanation": "Drag and drop on top of any active widget", + "none-installed": "Nie odnaleziono widżetów! Aktywuj wtyczkę \"essential widgets\" w panelu sterowania wtyczek.", + "containers.available": "Dostępne kontenery", + "containers.explanation": "Przeciągnij i upuść na dowolnym, aktywnym widżecie", "containers.none": "Żadna", "container.well": "Well", "container.jumbotron": "Jumbotron", "container.panel": "Panel", "container.panel-header": "Panel nagłówka", - "container.panel-body": "Panel Body", - "container.alert": "Alert", + "container.panel-body": "Zawartość panelu", + "container.alert": "Alarm", "alert.confirm-delete": "Czy na pewno chcesz usunąć ten widget?", "alert.updated": "Widżety zaktualizowane", diff --git a/public/language/pl/admin/general/dashboard.json b/public/language/pl/admin/general/dashboard.json index 205e9f8209..3068b90618 100644 --- a/public/language/pl/admin/general/dashboard.json +++ b/public/language/pl/admin/general/dashboard.json @@ -8,11 +8,11 @@ "page-views-seven": "Ostatnie 7 dni", "page-views-thirty": "Ostatnie 30 dni", "page-views-last-day": "Ostatnie 24 godziny", - "page-views-custom": "Custom Date Range", - "page-views-custom-start": "Range Start", - "page-views-custom-end": "Range End", - "page-views-custom-help": "Enter a date range of page views you would like to view. If no date picker is available, the accepted format is YYYY-MM-DD", - "page-views-custom-error": "Please enter a valid date range in the format YYYY-MM-DD", + "page-views-custom": "Własna zakres dat", + "page-views-custom-start": "Początek zakresu", + "page-views-custom-end": "Koniec zakresu", + "page-views-custom-help": "Wprowadź zakres dat dla wyświetl strony, które chciałbyś zobaczyć. Jeśli brakuje możliwości wybory daty, akceptowalny format to YYYY-MM-DD", + "page-views-custom-error": "Proszę wprowadzić poprawny zakres dat w formacie YYYY-MM-DD", "stats.day": "Dzień", "stats.week": "Tydzień", @@ -21,26 +21,26 @@ "updates": "Aktualizacje", "running-version": "Forum działa dzięki NodeBB v%1", - "keep-updated": "Regularnie sprawdzaj najnowsze aktualizacji i poprawki NodeBB i celu poprawy zabezpieczenia i optymalizacji.", + "keep-updated": "Regularnie sprawdzaj najnowsze aktualizacji i poprawki NodeBB, w celu poprawy bezpieczeństwa i optymalizacji.", "up-to-date": "

NodeBB jest aktualny

", "upgrade-available": "

Nowa wersja (v%1) jest już dostępna. Zaktualizuj do nowej wersji NodeBB .

", - "prerelease-upgrade-available": "

This is an outdated pre-release version of NodeBB. A new version (v%1) has been released. Consider upgrading your NodeBB.

", - "prerelease-warning": "

This is a pre-release version of NodeBB. Unintended bugs may occur.

", - "running-in-development": "Forum is running in development mode. The forum may be open to potential vulnerabilities; please contact your system administrator.", + "prerelease-upgrade-available": "

To jest nieaktualna wersja pre-release NodeBB. Nowa wersja (v%1) została opublikowana. Rozważ aktualizację NodeBB.

", + "prerelease-warning": "

To jest wersja pre-release NodeBB. Mogą występować błędy.

", + "running-in-development": "Forum pracuje w trybie programistyczny, może być ono podatne na potencjalne zagrożenia; proszę skontaktuj się z administratorem.", "notices": "Powiadomienia", - "restart-not-required": "Restart nie jest potrzebny", + "restart-not-required": "Restart nie jest wymagany", "restart-required": "Wymagany restart", "search-plugin-installed": "Wyszukiwarka jest zainstalowana", "search-plugin-not-installed": "Wyszukiwarka nie jest zainstalowana", - "search-plugin-tooltip": "Install a search plugin from the plugin page in order to activate search functionality", + "search-plugin-tooltip": "Zainstaluj wtyczkę wyszukiwania ze strony wtyczek, aby aktywować funkcjonalność szukania", "control-panel": "Zarządzanie systemem", "reload": "Odśwież", "restart": "Restart", "restart-warning": "Przeładowanie lub Restart NodeBB spowoduje przerwanie wszystkich istniejących połączeń na kilka sekund.", - "maintenance-mode": "Tryb Konserwacji", - "maintenance-mode-title": "Kliknij tutaj aby skonfigurować Tryb Konserwacji NodeBB", + "maintenance-mode": "Tryb konserwacji", + "maintenance-mode-title": "Kliknij tutaj aby skonfigurować tryb konserwacji dla NodeBB", "realtime-chart-updates": "Wykresy aktualizowane na żywo", "active-users": "Aktywni użytkownicy", @@ -53,14 +53,14 @@ "anonymous": "Anonimowi", "registered": "Zarejestrowani", - "user-presence": "User Presence", - "on-categories": "On categories list", - "reading-posts": "Reading posts", - "browsing-topics": "Browsing topics", + "user-presence": "Obecność użytkownika", + "on-categories": "Na liście kategorii", + "reading-posts": "Czytanie postów", + "browsing-topics": "Przeglądanie tematów", "recent": "Ostatnie", "unread": "Nieprzeczytane", - "high-presence-topics": "High Presence Topics", + "high-presence-topics": "Tematy wysokiej obecności", "graphs.page-views": "Wyświetlenia strony", "graphs.unique-visitors": "Unikalni Użytkownicy", diff --git a/public/language/pl/admin/general/homepage.json b/public/language/pl/admin/general/homepage.json index 204f166db1..8f5360c47b 100644 --- a/public/language/pl/admin/general/homepage.json +++ b/public/language/pl/admin/general/homepage.json @@ -1,7 +1,7 @@ { - "home-page": "Strona Główna", - "description": "Wybierz stronę główną dla Twojego forum.", - "home-page-route": "Strona Główna", + "home-page": "Strona startowa", + "description": "Wybierz stronę startową dla twojego forum.", + "home-page-route": "Ścieżka strony startowej", "custom-route": "Niestandardowy Adres", - "allow-user-home-pages": "Pozwól użytkownikom na zmienienie strony głownej" + "allow-user-home-pages": "Zezwalaj na strony startowe użytkowników" } \ No newline at end of file diff --git a/public/language/pl/admin/general/languages.json b/public/language/pl/admin/general/languages.json index 1b7d377fcc..0fcddf876f 100644 --- a/public/language/pl/admin/general/languages.json +++ b/public/language/pl/admin/general/languages.json @@ -1,6 +1,6 @@ { - "language-settings": "Ustawienia Językowe", - "description": "Domyślnym językiem określa ustawienia języka dla wszystkich użytkowników, którzy odwiedzają forum.
Użytkownicy mogą zmienić domyślny język, w ustawieniach konta.", - "default-language": "Domyślny Język", + "language-settings": "Ustawienia językowe", + "description": "Domyślny język określa ustawienia języka dla wszystkich użytkowników, którzy odwiedzają forum.
Użytkownicy mogą zmienić domyślny język, w ustawieniach swojego konta.", + "default-language": "Domyślny język", "auto-detect": "Automatycznie wykrywaj język gości" } \ No newline at end of file diff --git a/public/language/pl/admin/general/navigation.json b/public/language/pl/admin/general/navigation.json index 757403edf3..e112b8c67c 100644 --- a/public/language/pl/admin/general/navigation.json +++ b/public/language/pl/admin/general/navigation.json @@ -4,25 +4,25 @@ "route": "Ścieżka:", "tooltip": "Tooltip:", "text": "Tekst:", - "text-class": "Text Class: optional", - "id": "ID: optional", + "text-class": "Klasa tekstu opcjonalnie", + "id": "ID: opcjonalnie", "properties": "Ustawienia:", - "only-admins": "Pokaż tylko dla administracji", - "only-global-mods-and-admins": "Pokaż tylko dla globalnych moderatorów oraz administracji", - "only-logged-in": "Pokaż tylko dla zalogowanych użytkowników", + "only-admins": "Pokazuj tylko administracji", + "only-global-mods-and-admins": "Pokazuj tylko globalnym moderatorom oraz administracji", + "only-logged-in": "Pokazuj tylko zalogowanym użytkownikom", "only-guest": "Pokazuj tylko gościom", "open-new-window": "Otwórz w nowym oknie", - "installed-plugins-required": "Installed Plugins Required:", + "installed-plugins-required": "Wymagane zainstalowane wtyczki:", "search-plugin": "Wyszukiwarka", "btn.delete": "Usunąć", "btn.disable": "Wyłącz", "btn.enable": "Włącz", - "available-menu-items": "Available Menu Items", - "custom-route": "Custom Route", + "available-menu-items": "Dostępne obiekty menu", + "custom-route": "Niestandardowa ścieżka", "core": "core", - "plugin": "plugin" + "plugin": "wtyczka" } \ No newline at end of file diff --git a/public/language/pl/admin/general/social.json b/public/language/pl/admin/general/social.json index a3b9bd0377..92cf244d04 100644 --- a/public/language/pl/admin/general/social.json +++ b/public/language/pl/admin/general/social.json @@ -1,5 +1,5 @@ { "post-sharing": "Udostępnianie postów", - "info-plugins-additional": "Plugins can add additional networks for sharing posts.", - "save-success": "Successfully saved Post Sharing Networks!" + "info-plugins-additional": "Wtyczki mogą dodać dodatkowe platformy do udostępniania postów", + "save-success": "Pomyślnie zapisano sieci udostępniania postów!" } \ No newline at end of file diff --git a/public/language/pl/admin/general/sounds.json b/public/language/pl/admin/general/sounds.json index f979492b45..26b4e83918 100644 --- a/public/language/pl/admin/general/sounds.json +++ b/public/language/pl/admin/general/sounds.json @@ -1,9 +1,9 @@ { "notifications": "Powiadomienia", - "chat-messages": "Wiadomości Czatu", + "chat-messages": "Wiadomości czatu", "play-sound": "Otwórz", - "incoming-message": "Przychodzące Wiadomości", - "outgoing-message": "Wychodzące Wiadomości", - "upload-new-sound": "Prześlij Nowy Dźwięk", + "incoming-message": "Przychodzące wiadomości", + "outgoing-message": "Wychodzące wiadomości", + "upload-new-sound": "Prześlij nowy dźwięk", "saved": "Ustawienia Zapisane" } \ No newline at end of file diff --git a/public/language/pl/admin/manage/categories.json b/public/language/pl/admin/manage/categories.json index 00699d30ac..eed88dd8aa 100644 --- a/public/language/pl/admin/manage/categories.json +++ b/public/language/pl/admin/manage/categories.json @@ -1,61 +1,61 @@ { "settings": "Ustawienia kategorii", - "privileges": "Przywileje", + "privileges": "Uprawnienia", - "name": "Nazwa Kategorii", + "name": "Nazwa kategorii", "description": "Opis kategorii", "bg-color": "Kolor tła", "text-color": "Kolor tekstu", "bg-image-size": "Wielkość obrazka tła", "custom-class": "Niestandardowa klasa", - "num-recent-replies": "# z Ostatnich Odpowiedzi", - "ext-link": "Zewnętrzny Link", - "is-section": "Treat this category as a section", - "upload-image": "Prześlij Obrazek", + "num-recent-replies": "# z ostatnich odpowiedzi", + "ext-link": "Zewnętrzny odnośnik", + "is-section": "Traktuj tą kategorię jako sekcję", + "upload-image": "Prześlij obrazek", "delete-image": "Usunąć", - "category-image": "Obrazek Kategorii", + "category-image": "Obrazek kategorii", "parent-category": "Kategoria nadrzędna", "optional-parent-category": "(Opcjonalne) Kategoria nadrzędna", "parent-category-none": "(Żadna)", - "copy-settings": "Skopiować ustawienia z", + "copy-settings": "Skopiuj ustawienia z", "optional-clone-settings": "(Opcjonalnie) Spoiowanie ustawień z kategorii", - "purge": "Usuń kategorie", + "purge": "Usuń kategorię", "enable": "Włączona", "disable": "Wyłączona", "edit": "Edytuj", - "select-category": "Wybierz Kategorie", + "select-category": "Wybierz kategorię", "set-parent-category": "Ustaw nadrzędną kategorie", - "privileges.description": "Można skonfigurować uprawnienia kontroli dostępu do tej kategorii w tej sekcji. Uprawnienia mogą być przyznawane dla każdego użytkownika lub dla poszczególnych grup. Możesz dodać nowego użytkownika do tej tabeli, wyszukując je w poniższym formularzu.", - "privileges.warning": "Uwaga: Przywileje zapisują się natychmiastowo. Nie ma znaczenie czy klikniesz zapisz.", - "privileges.section-viewing": "Lista Przywilejów", - "privileges.section-posting": "Przywileje do pisania", - "privileges.section-moderation": "Przywileje do moderowania", + "privileges.description": "W tej sekcji możesz skonfigurować uprawnienia kontroli dostępu dla tej kategorii. Uprawnienia mogą być przyznawane dla każdego użytkownika lub dla poszczególnych grup. Możesz dodać nowego użytkownika do tej tabeli, wyszukując je w formularzu poniżej.", + "privileges.warning": "Uwaga: Uprawnienia zapisują się natychmiastowo. Nie ma potrzeby zapisywania kategorii po zmianie ustawień.", + "privileges.section-viewing": "Lista uprawnień", + "privileges.section-posting": "Uprawnienia pisania", + "privileges.section-moderation": "Uprawnienia moderowania", "privileges.section-user": "Użytkownik", "privileges.search-user": "Dodaj użytkownika", - "privileges.no-users": "No user-specific privileges in this category.", + "privileges.no-users": "Brak uprawnień specyficznych dla użytkowników w tej kategorii", "privileges.section-group": "Grupa", "privileges.group-private": "Ta grupa jest prywatna", "privileges.search-group": "Dodaj grupę", "privileges.copy-to-children": "Skopiuj z podrzędnej", "privileges.copy-from-category": "Skopiuj z kategorii", - "privileges.inherit": "If the registered-users group is granted a specific privilege, all other groups receive an implicit privilege, even if they are not explicitly defined/checked. This implicit privilege is shown to you because all users are part of the registered-users user group, and so, privileges for additional groups need not be explicitly granted.", + "privileges.inherit": "W przypadku, gdy grupie registered-users zostaje nadane specyficzne uprawnienia, wszystkie inne grupy otrzymują to bezwarunkowe uprawnienie, nawet jeśli ów nie zostało zdefiniowane/zaznaczone. Bezwarunkowe uprawnienie jest wyświetlane ponieważ wszyscy użytkownicy są częścią grupy registered-users, więc uprawnienia dla dodatkowych grup nie mogą się wykluczać.", "analytics.back": "Wróć do listy kategorii", "analytics.title": "Analityka dla \"%1\" kategorii", - "analytics.pageviews-hourly": "Figure 1 – Hourly page views for this category", - "analytics.pageviews-daily": "Figure 2 – Daily page views for this category", - "analytics.topics-daily": "Figure 3 – Daily topics created in this category", - "analytics.posts-daily": "Figure 4 – Daily posts made in this category", + "analytics.pageviews-hourly": "Ilustracja 1– Godzinowe wyświetlenia stron dla tej kategorii", + "analytics.pageviews-daily": "Ilustracja – Dzienne wyświetlenie strony dla tej kategorii", + "analytics.topics-daily": "Ilustracja 3– Dzienne tematy tworzone w tej kategorii", + "analytics.posts-daily": "Ilustracja 4 – Dzienne posty pisane w tej kategorii", "alert.created": "Stworzony", "alert.create-success": "Kategoria pomyślnie dodana!", "alert.none-active": "Nie masz aktywnych kategorii.", "alert.create": "Stwórz kategorie", - "alert.confirm-moderate": "Are you sure you wish to grant the moderation privilege to this user group? This group is public, and any users can join at will.", - "alert.confirm-purge": "

Do you really want to purge this category \"%1\"?

Warning! All topics and posts in this category will be purged!

Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category temporarily, you'll want to \"disable\" the category instead.

", + "alert.confirm-moderate": "Czy jesteś pewien, że chcesz udzielić uprawnień moderatorskich dla tej grupy użytkowników?Ta grupa jest publiczna i każdy użytkownik może do niej dołączyć.", + "alert.confirm-purge": "

Czy na pewno chcesz wymazać tą kategorię \"%1\"?

Uwaga! Wszystkie tematy oraz posty z tej kategorii zostaną wymazane!

Wymazanie kategorii skasuje wszystkie tematy, posty oraz skasuję kategorię z bazy danych. Jeśli chcesz tymczasowousunąć kategorię, będziesz musiał \"wyłączyć\" kategorię.

", "alert.purge-success": "Kategoria usunięta!", "alert.copy-success": "Ustawienie skopiowane!", "alert.set-parent-category": "Ustaw nadrzędną kategorie", diff --git a/public/language/pl/admin/manage/groups.json b/public/language/pl/admin/manage/groups.json index b5438179bd..19e1b7c70f 100644 --- a/public/language/pl/admin/manage/groups.json +++ b/public/language/pl/admin/manage/groups.json @@ -1,8 +1,8 @@ { - "name": "Nazwa Grupy", - "description": "Opis Grupy", - "member-count": "Member Count", - "system": "System Grup", + "name": "Nazwa grupy", + "description": "Opis grupy", + "member-count": "Liczba użytkowników", + "system": "System grup", "edit": "Edytuj", "search-placeholder": "Szukaj", "create": "Stwórz Grupę", @@ -14,18 +14,18 @@ "edit.name": "Nazwa", "edit.description": "Opis", - "edit.user-title": "Tytuł Członków ", - "edit.icon": "Ikona Grupy", + "edit.user-title": "Tytuł członków ", + "edit.icon": "Ikona grupy", "edit.label-color": "Kolor Etykiety Grupy", - "edit.show-badge": "Pokaż Etykietę", - "edit.private-details": "If enabled, joining of groups requires approval from a group owner.", + "edit.show-badge": "Pokazuj odznakę", + "edit.private-details": "Jeśli włączone, przystępowanie do grup wymaga zatwierdzenia przez właściciela grupy", "edit.private-override": "Ostrzeżenie: Prywatne grupy są wyłączone w ustawieniach, co powoduje przesłonięcia opcji.", "edit.disable-requests": "Wyłącz prośby o dołączenie", "edit.hidden": "Ukryta", "edit.hidden-details": "Jeśli opcja jest włączona, grupa ta nie będzie widoczna dla użytkowników.", "edit.add-user": "Dodaj użytkownika do grupy", - "edit.add-user-search": "Szukaj Użytkownika", - "edit.members": "Lista Członków", + "edit.add-user-search": "Szukaj użytkownika", + "edit.members": "Lista członków", "control-panel": "Panel sterowania", "revert": "Cofnij", diff --git a/public/language/pl/admin/manage/ip-blacklist.json b/public/language/pl/admin/manage/ip-blacklist.json index 4b9c733170..9cf6a3e6f5 100644 --- a/public/language/pl/admin/manage/ip-blacklist.json +++ b/public/language/pl/admin/manage/ip-blacklist.json @@ -1,18 +1,18 @@ { - "lead": "Configure your IP blacklist here.", - "description": "Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and they will be prevented from logging in to or registering a new account.", - "active-rules": "Aktywne Zasady", - "validate": "Validate Blacklist", - "apply": "Apply Blacklist", - "hints": "Syntax Hints", - "hint-1": "Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g. 192.168.100.0/22).", - "hint-2": "You can add in comments by starting lines with the # symbol.", + "lead": "Tutaj skonfigurują swoją czarną listę IP.", + "description": "Czasami ban konta użytkownika nie jest wystarczającym odstraszaczem i wtedy ograniczanie dostępu do forum dla konkretnego adresu IP lub zakresu adresów IP, są najlepszymi metodami ochrony forum. W tym przypadkach, możesz dodać adresy UP lub całe bloki CIDR do tej czarnej listy i będą one ograniczały możliwość logowania na forum lub rejestracji nowych kont.", + "active-rules": "Aktywne reguły", + "validate": "Sprawdzanie czarnej listy", + "apply": "Zastosuj czarną listę", + "hints": "Podpowiedzi składni", + "hint-1": "W każdej linii zdefiniuj pojedynczy adres IP. Możesz dodać bloki IP pod warunkiem, że spełniają one wymagania formatu CIDR (np. 192.168.100.0/22).", + "hint-2": "Możesz dodawać komentarze porze rozpoczęcie linii symbolem #.", - "validate.x-valid": "%1 out of %2 rule(s) valid.", - "validate.x-invalid": "The following %1 rules are invalid:", + "validate.x-valid": "%1 z %2 reguła(-u) są poprawne.", + "validate.x-invalid": "Następujące %1 reguły są niewłaściwe:", - "alerts.applied-success": "Blacklist Applied", + "alerts.applied-success": "Zastosowano czarną listę", - "analytics.blacklist-hourly": "Figure 1 – Blacklist hits per hour", - "analytics.blacklist-daily": "Figure 2 – Blacklist hits per day" + "analytics.blacklist-hourly": "Ilustracja 1 – Wpisy z czarnej listy na godzinę", + "analytics.blacklist-daily": "Ilustracja 2 – Wpisy z czarnej listy na dzień" } \ No newline at end of file diff --git a/public/language/pl/admin/manage/post-queue.json b/public/language/pl/admin/manage/post-queue.json index f748fb0ee2..82947b6085 100644 --- a/public/language/pl/admin/manage/post-queue.json +++ b/public/language/pl/admin/manage/post-queue.json @@ -1,10 +1,10 @@ { - "post-queue": "Post Queue", - "description": "There are no posts in the post queue.
To enable this feature, go to Settings → Post → Posting Restrictions and enable Post Queue.", - "user": "User", - "category": "Category", - "title": "Title", - "content": "Content", - "posted": "Posted", - "reply-to": "Reply to \"%1\"" + "post-queue": "Kolejka postów", + "description": "Brak postów w kolejce.
W celu włączenia tej funkcji, odwiedź Ustawienia → Posty → Ograniczenia pisania i włącz Kolejkę postów . ", + "user": "Użytkownik", + "category": "Kategoria", + "title": "Tytuł", + "content": "Zawartość", + "posted": "Napisano", + "reply-to": "Odpowiedz do \"%1\"" } \ No newline at end of file diff --git a/public/language/pl/admin/manage/registration.json b/public/language/pl/admin/manage/registration.json index 0626047cff..1915b97a44 100644 --- a/public/language/pl/admin/manage/registration.json +++ b/public/language/pl/admin/manage/registration.json @@ -1,20 +1,20 @@ { "queue": "Kolejka", - "description": "There are no users in the registration queue.
To enable this feature, go to Settings → User → User Registration and set Registration Type to \"Admin Approval\".", + "description": "Brak użytkowników w kolejce rejestracji.
W celu włączenia tej funkcji, odwiedź Ustawienia → Użytkownik → Rejestracja Użytkownika i ustaw Typ Rejestracji na \"Zatwierdzenie administratora\". ", "list.name": "Nazwa", - "list.email": "Email", + "list.email": "Adres email", "list.ip": "IP", - "list.time": "Time", - "list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3", - "list.email-spam": "Frequency: %1 Appears: %2", - "list.ip-spam": "Frequency: %1 Appears: %2", + "list.time": "Czas", + "list.username-spam": "Częstotliwość: %1 Występowanie: %2 Pewność: %3", + "list.email-spam": "Częstotliwość: %1 Występowanie: %2", + "list.ip-spam": "Częstotliwość: %1 Występowanie: %2", - "invitations": "Invitations", - "invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username.

The username will be displayed to the right of the emails for users who have redeemed their invitations.", - "invitations.inviter-username": "Inviter Username", - "invitations.invitee-email": "Invitee Email", - "invitations.invitee-username": "Invitee Username (if registered)", + "invitations": "Zaproszenia", + "invitations.description": "Poniżej jest pełna lista wysłanych zaproszeń. Użyj CTRL-f , aby przeszukiwać listę poprzez adres email lub nazwę użytkownika.

Ten użytkownik będzie wyświetlony po prawej od wiadomości do użytkowników, którzy wykorzystali zaproszenia.", + "invitations.inviter-username": "Nazwa użytkownika zapraszającego", + "invitations.invitee-email": "Adres email zaproszonego(-ej)", + "invitations.invitee-username": "Nazwa użytkownika zapraszającego (jeśli zarejestrowany)", - "invitations.confirm-delete": "Are you sure you wish to delete this invitation?" + "invitations.confirm-delete": "Czy na pewno skasować to zaproszenie?" } \ No newline at end of file diff --git a/public/language/pl/admin/manage/tags.json b/public/language/pl/admin/manage/tags.json index aa6bdef80b..144423046a 100644 --- a/public/language/pl/admin/manage/tags.json +++ b/public/language/pl/admin/manage/tags.json @@ -1,18 +1,18 @@ { - "none": "Your forum does not have any topics with tags yet.", - "bg-color": "Background Colour", + "none": "Twoje forum nie ma jeszcze żadnych tematów z tagami.", + "bg-color": "Kolor tła", "text-color": "Kolor Tekstu", - "create-modify": "Create & Modify Tags", - "description": "Select tags via clicking and/or dragging, use shift to select multiple.", - "create": "Create Tag", - "modify": "Modify Tags", - "delete": "Delete Selected Tags", - "search": "Search for tags...", - "settings": "Click here to visit the tag settings page.", - "name": "Tag Name", + "create-modify": "Utwórz oraz modyfikuj tagi", + "description": "Wybierz tagi poprzez klikanie oraz/lub przeciąganie, użyj przycisku shift do zaznaczenia wielu.", + "create": "Utwórz tag", + "modify": "Modyfikuj tagi", + "delete": "Usuń zaznaczone tagi", + "search": "Szukanie tagów...", + "settings": "Kliknij tutaj, aby odwiedzić stronę zarządzania tagami.", + "name": "Nazwa taga", - "alerts.editing-multiple": "Editing multiple tags", - "alerts.editing-x": "Editing \"%1\" tag", - "alerts.confirm-delete": "Do you want to delete the selected tags?", - "alerts.update-success": "Tag Updated!" + "alerts.editing-multiple": "Edycja wielu tagów", + "alerts.editing-x": "Edytowanie tagu \"%1\"", + "alerts.confirm-delete": "Czy na pewno chcesz skasować zaznaczone tagi?", + "alerts.update-success": "Zaktualizowano tag-a!" } \ No newline at end of file diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json index 75497def1c..492793e4a1 100644 --- a/public/language/pl/admin/manage/users.json +++ b/public/language/pl/admin/manage/users.json @@ -2,90 +2,90 @@ "users": "Użytkownicy", "edit": "Edytuj", "make-admin": "Nadaj Admina", - "remove-admin": "Remove Admin", - "validate-email": "Validate Email", - "send-validation-email": "Send Validation Email", - "password-reset-email": "Send Password Reset Email", - "ban": "Ban User(s)", - "temp-ban": "Ban User(s) Temporarily", - "unban": "Unban User(s)", - "reset-lockout": "Reset Lockout", - "reset-flags": "Reset Flags", - "delete": "Delete User(s)", - "purge": "Delete User(s) and Content", - "download-csv": "Download CSV", - "invite": "Invite", - "new": "New User", + "remove-admin": "Odbierz Admin", + "validate-email": "Zweryfikuj email", + "send-validation-email": "Wyślij email weryfikacyjny", + "password-reset-email": "Wyślij email resetowania hasła", + "ban": "Zbanuj użytkownika(-ów)", + "temp-ban": "Tymczasowo zbanuj użytkownika(-ów)", + "unban": "Odbanuj użytkownika(-ów)", + "reset-lockout": "Zresetuj blokadę", + "reset-flags": "Zresetuj flagi", + "delete": "Skasuj użytkownika(-ów)", + "purge": "Usuń użytkownika(-ów) oraz zawartość", + "download-csv": "Pobierz CSV", + "invite": "Zaproś", + "new": "Nowy użytkownik", - "pills.latest": "Latest Users", - "pills.unvalidated": "Not Validated", - "pills.no-posts": "No Posts", - "pills.top-posters": "Top Posters", - "pills.top-rep": "Most Reputation", - "pills.inactive": "Inactive", - "pills.flagged": "Most Flagged", - "pills.banned": "Banned", - "pills.search": "User Search", + "pills.latest": "Nowi użytkownicy", + "pills.unvalidated": "Niezweryfikowany", + "pills.no-posts": "Brak postów", + "pills.top-posters": "Najwięcej postów", + "pills.top-rep": "Największa reputacja", + "pills.inactive": "Nieaktywny(-a)", + "pills.flagged": "Najwięcej flag", + "pills.banned": "Zbanowany(-a)", + "pills.search": "Wyszukiwanie użytkownków", - "search.username": "By User Name", - "search.username-placeholder": "Enter a username to search", - "search.email": "By Email", - "search.email-placeholder": "Enter a email to search", - "search.ip": "By IP Address", - "search.ip-placeholder": "Enter an IP Address to search", - "search.not-found": "User not found!", + "search.username": "Po nazwie użytkownika", + "search.username-placeholder": "Wpisz nazwę użytkownika, aby wyszukać", + "search.email": "Po adresie email", + "search.email-placeholder": "Wprowadź adres email, aby wyszukać", + "search.ip": "Po adresie IP", + "search.ip-placeholder": "Wprowadź adres IP, aby wyszukać", + "search.not-found": "Nie znaleziono użytkownika!", - "inactive.3-months": "3 months", - "inactive.6-months": "6 months", - "inactive.12-months": "12 months", + "inactive.3-months": "3 miesiące", + "inactive.6-months": "6 miesięcy", + "inactive.12-months": "12 miesięcy", "users.uid": "uid", - "users.username": "username", - "users.email": "email", - "users.postcount": "postcount", - "users.reputation": "reputation", - "users.flags": "flags", - "users.joined": "joined", - "users.last-online": "last online", - "users.banned": "banned", + "users.username": "Nazwa użytkownika", + "users.email": "Adres e-mail", + "users.postcount": "Liczba postów", + "users.reputation": "Reputacja", + "users.flags": "Flagi", + "users.joined": "Dołączono", + "users.last-online": "Ostatnio online", + "users.banned": "Zbanowany(-a)", - "create.username": "User Name", - "create.email": "Email", - "create.email-placeholder": "Email of this user", - "create.password": "Password", - "create.password-confirm": "Confirm Password", + "create.username": "Nazwa użytkownika", + "create.email": "Adres e-mail", + "create.email-placeholder": "Adres email tego użytkownika", + "create.password": "Hasło", + "create.password-confirm": "Powtórz hasło", - "temp-ban.length": "Ban Length", - "temp-ban.reason": "Reason (Optional)", - "temp-ban.hours": "Hours", - "temp-ban.days": "Days", - "temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.", + "temp-ban.length": "Długość bana", + "temp-ban.reason": "Powód (Opcjonalnie)", + "temp-ban.hours": "Godzin(-a/-y)", + "temp-ban.days": "Dzień/Dni", + "temp-ban.explanation": "Wprowadzać długość (czas trwania) bana. Długość równa 0 będzie traktowana jako ban permanentny,", - "alerts.confirm-ban": "Do you really want to ban this user permanently?", - "alerts.confirm-ban-multi": "Do you really want to ban these users permanently?", - "alerts.ban-success": "User(s) banned!", - "alerts.button-ban-x": "Ban %1 user(s)", - "alerts.unban-success": "User(s) unbanned!", - "alerts.lockout-reset-success": "Lockout(s) reset!", - "alerts.flag-reset-success": "Flags(s) reset!", - "alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", - "alerts.make-admin-success": "User(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", - "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", - "alerts.validate-email-success": "Emails validated", - "alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?", - "alerts.confirm-delete": "Warning!
Do you really want to delete user(s)?
This action is not reversable! Only the user account will be deleted, their posts and topics will remain.", - "alerts.delete-success": "User(s) Deleted!", - "alerts.confirm-purge": "Warning!
Do you really want to delete user(s) and their content?
This action is not reversable! All user data and content will be erased!", - "alerts.create": "Create User", - "alerts.button-create": "Create", - "alerts.button-cancel": "Cancel", - "alerts.error-passwords-different": "Passwords must match!", - "alerts.error-x": "Error

%1

", - "alerts.create-success": "User created!", + "alerts.confirm-ban": "Czy na pewno chcesz zbanować tego użytkownika pernamentnie?", + "alerts.confirm-ban-multi": "\nCzy na pewno chcesz zbanować tych użytkowników pernamentnie?", + "alerts.ban-success": "Użytkownik(-cy) zostali zbanowani!", + "alerts.button-ban-x": "Zbanowano %1 użytkownika (-ów)", + "alerts.unban-success": "Użytkownik(-cy) nie są już zbanowani!", + "alerts.lockout-reset-success": "Zresetowano blokadę (-dy)!", + "alerts.flag-reset-success": "Zresetowano flagę(-gi)!", + "alerts.no-remove-yourself-admin": "Nie możesz odebrać sobie samemu praw administratora.", + "alerts.make-admin-success": "Użytkownik(-cy) są teraz administratorami.", + "alerts.confirm-remove-admin": "Czy na pewno usunąć uprawnienia administracyjne?", + "alerts.remove-admin-success": "Użytkownik(-cy) nie są już administratorami.", + "alerts.confirm-validate-email": "Czy chcesz zweryfikować email(-e) tego użytkownika (-ów)?", + "alerts.validate-email-success": "Zweryfikowano adresy email", + "alerts.password-reset-confirm": "Czy chcesz wysłać email (-e) resetujące hasło tego użytkownika(-ów)?", + "alerts.confirm-delete": "Uwaga!
Czy na pewno chcesz skasować użytkownika(-ów)?
Ta akcja jest nieodwracalna! Zostanie skasowane tylko konto użytkownika, jego posty oraz tematy pozostaną niezmienione.", + "alerts.delete-success": "Użytkownik(-cy) zostali skasowani!", + "alerts.confirm-purge": "Uwaga!
Czy na pewno chcesz skasować użytkownika(-ów) oraz ich zawartość?
Ta akcja jest nieodwracalna! Wszystkie dane użytkownika oraz jego zawartość zostaną wymazane.", + "alerts.create": "Stwórz użytkownika", + "alerts.button-create": "Stwórz", + "alerts.button-cancel": "Anuluj", + "alerts.error-passwords-different": "Hasła muszą być takie same!", + "alerts.error-x": "Błąd

%1

", + "alerts.create-success": "Utworzono użytkownika!", - "alerts.prompt-email": "Email: ", - "alerts.email-sent-to": "An invitation email has been sent to %1", - "alerts.x-users-found": "%1 user(s) found! Search took %2 ms." + "alerts.prompt-email": "Adres e-mail", + "alerts.email-sent-to": "Wysłano zaproszenie do %1", + "alerts.x-users-found": "Znaleziono %1 użytkownika(-ów)! Szukanie zajęło %2 ms." } \ No newline at end of file diff --git a/public/language/pl/admin/menu.json b/public/language/pl/admin/menu.json index 0dc4dce5be..a9af8dd2b3 100644 --- a/public/language/pl/admin/menu.json +++ b/public/language/pl/admin/menu.json @@ -1,9 +1,9 @@ { "section-general": "Ogólne", - "general/dashboard": "Główna", - "general/homepage": "Strona Startowa", + "general/dashboard": "Deska rozdzielcza", + "general/homepage": "Strona startowa", "general/navigation": "Nawigacja", - "general/languages": "Język", + "general/languages": "Języki", "general/sounds": "Dźwięki", "general/social": "Social", @@ -11,10 +11,10 @@ "manage/categories": "Kategorie", "manage/tags": "Tagi", "manage/users": "Użytkownicy", - "manage/registration": "Kolejka Rejestracji", - "manage/post-queue": "Post Queue", + "manage/registration": "Kolejka rejestracji", + "manage/post-queue": "Kolejka postów", "manage/groups": "Grupy", - "manage/ip-blacklist": "Czarna Lista IP", + "manage/ip-blacklist": "Czarna lista IP", "section-settings": "Ustawienia", "settings/general": "Ogólne", @@ -30,7 +30,7 @@ "settings/tags": "Tagi", "settings/notifications": "Powiadomienia", "settings/cookies": "Ciasteczka", - "settings/web-crawler": "Web Crawler", + "settings/web-crawler": "Roboty internetowe", "settings/sockets": "Sockets", "settings/advanced": "Zaawansowane", @@ -42,14 +42,14 @@ "appearance/customise": "Niestandardowy HTML & CSS", "section-extend": "Rozszerzenia", - "extend/plugins": "Pluginy", + "extend/plugins": "Wtyczki", "extend/widgets": "Widgety", "extend/rewards": "Nagrody", "section-social-auth": "Alternatywne Logowanie", - "section-plugins": "Pluginy", - "extend/plugins.install": "Zainstalowane Pluginy", + "section-plugins": "Wtyczki", + "extend/plugins.install": "Zainstalowane wtyczki", "section-advanced": "Zaawansowane", "advanced/database": "Baza Danych", @@ -57,11 +57,11 @@ "advanced/logs": "Logi", "advanced/errors": "Błędy", "advanced/cache": "Pamięć", - "development/logger": "Logger", + "development/logger": "Loger", "development/info": "Informacja", "reload-forum": "Przeładuj Forum", - "restart-forum": "Restartuj Forum", + "restart-forum": "Restartuj forum", "logout": "Wyloguj się", "view-forum": "Zobacz Forum", diff --git a/public/language/pl/admin/settings/advanced.json b/public/language/pl/admin/settings/advanced.json index 6269f725a1..42f6fe6ca1 100644 --- a/public/language/pl/admin/settings/advanced.json +++ b/public/language/pl/admin/settings/advanced.json @@ -1,19 +1,19 @@ { - "maintenance-mode": "Tryb Konserwacji", - "maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.", + "maintenance-mode": "Tryb konserwacji", + "maintenance-mode.help": "Kiedy forum jest w trybie konserwacji, wszystkie żądania będą przekierowane do statycznej strony oczekiwania. Administratorzy nie są objęci tym przekierowaniem i mogą normalnie korzystać ze strony.", "maintenance-mode.message": "Wiadomość podczas konserwacji", "headers": "Nagłówek", - "headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame", - "headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB", + "headers.allow-from": "Ustaw ALLOW-FROM, aby umieścić NodeBB w ramce iFrame", + "headers.powered-by": "Dopasuj nagłówek \"Powered By\" wysyłany przez NodeBB", "headers.acao": "Access-Control-Allow-Origin", - "headers.acao-help": "To deny access to all sites, leave empty", + "headers.acao-help": "Aby zablokować dostęp do wszystkich stron, pozostaw puste.", "headers.acam": "Access-Control-Allow-Methods", "headers.acah": "Access-Control-Allow-Headers", - "traffic-management": "Traffic Management", - "traffic.help": "NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.", - "traffic.enable": "Enable Traffic Management", - "traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)", - "traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)", - "traffic.lag-check-interval": "Check Interval (in milliseconds)", - "traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)" + "traffic-management": "Zarządzanie ruchem", + "traffic.help": "NodeBB jest dostarczane z modułem, który automatycznie blokuje żądania w sytuacjach wysokiego ruchu. Tutaj możesz zmienić te ustawienia, ale ustawienia początkowe są dobrym punktem wyjścia w większości sytuacji.", + "traffic.enable": "Włącz zarządzanie ruchem", + "traffic.event-lag": "Próg opóźnienia pętli zdarzeń (w milisekundach)", + "traffic.event-lag-help": "Obniżenie tej wartości spowoduje krótsze ładowanie stron, ale równocześnie wyświetli komunikat \"excessive load\" dla większej liczby użytkowników (wymagany restart).", + "traffic.lag-check-interval": "Interwał sprawdzenia (w milisekundach)", + "traffic.lag-check-interval-help": "Obniżenie tej wartości sprawi, że NodeBB będzie bardziej czuły na skoki obciążenia, ale może też spowodować, że sprawdzanie będzie za bardzo dokładne (wymagany restart)." } \ No newline at end of file diff --git a/public/language/pl/admin/settings/chat.json b/public/language/pl/admin/settings/chat.json index 29bfb7c4b1..ec2b4f9448 100644 --- a/public/language/pl/admin/settings/chat.json +++ b/public/language/pl/admin/settings/chat.json @@ -1,9 +1,9 @@ { - "chat-settings": "Ustawienie Czatu", + "chat-settings": "Ustawienia czatu", "disable": "Wyłącz czat", - "disable-editing": "Disable chat message editing/deletion", - "disable-editing-help": "Administrators and global moderators are exempt from this restriction", - "max-length": "Maximum length of chat messages", - "max-room-size": "Maximum number of users in chat rooms", - "delay": "Time between chat messages in milliseconds" + "disable-editing": "Wyłącz edycję/kasowanie wiadomości czat", + "disable-editing-help": "Administratorzy oraz moderatorzy globalni są wyjęci spod tego ograniczenia", + "max-length": "Maksymalna długość wiadomości czat", + "max-room-size": "Maksymalna liczba użytkowników w pokojach czatu.", + "delay": "Czas pomiędzy wiadomościami czat (w milisekundach)" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/cookies.json b/public/language/pl/admin/settings/cookies.json index f1d317ac07..dd8791169a 100644 --- a/public/language/pl/admin/settings/cookies.json +++ b/public/language/pl/admin/settings/cookies.json @@ -1,11 +1,11 @@ { - "eu-consent": "EU Consent", + "eu-consent": "Wymaganie EU", "consent.enabled": "Włączone", - "consent.message": "Notification message", - "consent.acceptance": "Acceptance message", - "consent.link-text": "Policy Link Text", - "consent.blank-localised-default": "Leave blank to use NodeBB localised defaults", - "settings": "Settings", - "cookie-domain": "Session cookie domain", - "blank-default": "Leave blank for default" + "consent.message": "Wiadomość powiadomienia", + "consent.acceptance": "Wiadomość o zaakceptowaniu", + "consent.link-text": "Tekst odnośnika do polityki", + "consent.blank-localised-default": "Pozostaw puste, aby użyć tłumaczone informacje domyślne NodeBB ", + "settings": "Ustawienia", + "cookie-domain": "Domena plików cookie sesji", + "blank-default": "Pozostaw puste, aby użyć wartości domyślnej" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/email.json b/public/language/pl/admin/settings/email.json index 4995bfa2b3..6a21b28645 100644 --- a/public/language/pl/admin/settings/email.json +++ b/public/language/pl/admin/settings/email.json @@ -1,33 +1,33 @@ { "email-settings": "Ustawienia Poczty", "address": "Adres Email", - "address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.", - "from": "From Name", - "from-help": "The from name to display in the email.", + "address-help": "Ten adres email referuje do adresu, który odbiora zobaczy w polach \"Od\" oraz \"Odpowiedz do\" wiadomości email.", + "from": "Pole Od", + "from-help": "Nazwa \"Od\" widoczna w wiadomościach email", - "smtp-transport": "SMTP Transport", - "smtp-transport.enabled": "Use an external email server to send emails", - "smtp-transport-help": "You can select from a list of well-known services or enter a custom one.", - "smtp-transport.service": "Select a service", - "smtp-transport.service-custom": "Custom Service", - "smtp-transport.service-help": "Select a service name above in order to use the known information about it. Alternatively, select 'Custom Service' and enter the details below.", - "smtp-transport.gmail-warning1": "There have been reports of the Gmail service not working on accounts with heightened security. In those scenarios, you will have to configure your GMail account to allow less secure apps.", - "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", - "smtp-transport.host": "SMTP Host", - "smtp-transport.port": "SMTP Port", - "smtp-transport.username": "Username", - "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", - "smtp-transport.password": "Password", + "smtp-transport": "Transport SMTP", + "smtp-transport.enabled": "Używaj zewnętrznego serwera email, aby wysyłać wiadomości email.", + "smtp-transport-help": "Możesz wybrać z listy dobrze znanych usług lub wprowadzić własne.", + "smtp-transport.service": "Wybierz usługę", + "smtp-transport.service-custom": "Własna usługa", + "smtp-transport.service-help": "Wybierz nazwę usługi powyżej w celu wykorzystania jej parametrów. Alternatywnie, wybierz \"Własna usługa\" i wpisz szczegóły poniżej.", + "smtp-transport.gmail-warning1": "Zdarzały się raporty dot. usługi Gmail nie działającej na kontach z podwyższonym bezpieczeństwem. W takim przypadku będziesz musiał skonfigurować swoje konto Gmail, aby dopuszczało mniej bezpieczne aplikacji. ", + "smtp-transport.gmail-warning2": "W celu uzyskania dalszych informacji o tym rozwiązaniu, proszę zapoznać się z artykułem NodeMailer dot. tego zagadnienia.Alternatywą byłoby wykorzystanie zewnętrznej wtyczki obsługi email np. SendGrid, Mailgun itp. Przeglądaj dostępne wtyczki tyutaj.", + "smtp-transport.host": "Host SMTP", + "smtp-transport.port": "Port SMTP", + "smtp-transport.username": "Nazwa użytkownika", + "smtp-transport.username-help": "Dla usługi Gmail wprowadź tutaj pełny adres email, w szczególności jeśli korzystasz z domeny zrządzanej przez G Suite.", + "smtp-transport.password": "Hasło", - "template": "Edit Email Template", - "template.select": "Select Email Template", - "template.revert": "Revert to Original", - "testing": "Email Testing", - "testing.select": "Select Email Template", - "testing.send": "Send Test Email", - "testing.send-help": "The test email will be sent to the currently logged in user's email address.", - "subscriptions": "Email Subscriptions", - "subscriptions.disable": "Disable subscriber notification emails", - "subscriptions.hour": "Digest Hour", - "subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. 0 for midnight, 17 for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.
The approximate server time is:
The next daily digest is scheduled to be sent " + "template": "Edytuj szablon email-a", + "template.select": "Wybierz szablon email-a", + "template.revert": "Przywróć orginał", + "testing": "Testowanie email", + "testing.select": "Wybierz szablon email-a", + "testing.send": "Wyślij testowy email", + "testing.send-help": "Wiadomość testowa email zostanie wysłana na adres aktualnie zalogowanego użytkownika.", + "subscriptions": "Subskrypcje email", + "subscriptions.disable": "Wyłącz emaile powiadomień subskrybentów", + "subscriptions.hour": "Godzina podsumowania", + "subscriptions.hour-help": "Proszę wprowadzić liczbę odpowiadającej godzinie, o które ma być planowane wysłanie mailowego przeglądu (np. 0 dla północy lub 17 dla 17:00). Należy pamiętać, że godzina jest godziną serwera i nie koniecznie musi odpowiadać czasowi lokalnemu administratora. Przybliżony czas serwera teraz to:
Następny przegląd mailowy jest zaplanowany do wysłania o " } \ No newline at end of file diff --git a/public/language/pl/admin/settings/general.json b/public/language/pl/admin/settings/general.json index 11abf6ff68..d0f251406d 100644 --- a/public/language/pl/admin/settings/general.json +++ b/public/language/pl/admin/settings/general.json @@ -1,35 +1,35 @@ { - "site-settings": "Ustawienia Strony", - "title": "Tytuł Strony", + "site-settings": "Ustawienia strony", + "title": "Tytuł strony", "title.url": "URL", - "title.url-placeholder": "The URL of the site title", - "title.url-help": "When the title is clicked, send users to this address. If left blank, user will be sent to the forum index.", - "title.name": "Your Community Name", - "title.show-in-header": "Show Site Title in Header", - "browser-title": "Browser Title", - "browser-title-help": "If no browser title is specified, the site title will be used", - "title-layout": "Title Layout", - "title-layout-help": "Define how the browser title will be structured ie. {pageTitle} | {browserTitle}", - "description.placeholder": "A short description about your community", - "description": "Site Description", - "keywords": "Site Keywords", - "keywords-placeholder": "Keywords describing your community, comma-separated", - "logo": "Site Logo", - "logo.image": "Image", - "logo.image-placeholder": "Path to a logo to display on forum header", - "logo.upload": "Upload", - "logo.url": "URL", - "logo.url-placeholder": "The URL of the site logo", - "logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.", - "logo.alt-text": "Alt Text", - "log.alt-text-placeholder": "Alternative text for accessibility", - "favicon": "Favicon", - "favicon.upload": "Upload", - "touch-icon": "Homescreen/Touch Icon", - "touch-icon.upload": "Upload", - "touch-icon.help": "Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.", - "outgoing-links": "Outgoing Links", - "outgoing-links.warning-page": "Use Outgoing Links Warning Page", - "search-default-sort-by": "Search default sort by", - "outgoing-links.whitelist": "Domains to whitelist for bypassing the warning page" + "title.url-placeholder": "Adres URL strony tytułowej", + "title.url-help": "W momencie kliknięcia na tytule, wysyłaj użytkownika na ten adres. Jeśli pozostawione puste, użytkownik będzie wysyłany do indeksu forum.", + "title.name": "Nazwa twojej społeczności", + "title.show-in-header": "Pokazuj tytuł strony w nagłówku", + "browser-title": "Tytuł karty przeglądarki", + "browser-title-help": "Jeśli nie wyspecyfikowano tytułu karty przeglądarki, zostanie użyty tytuł strony", + "title-layout": "Ułożenie tytułu", + "title-layout-help": "Zdefiniuj strukturę, jaką będzie miał tytuł karty przeglądarki np. {pageTitle} | {browserTitle}", + "description.placeholder": "Krótki opis twojej społeczności", + "description": "Opis strony", + "keywords": "Słowa kluczowe strony", + "keywords-placeholder": "Słowa kluczowe opisujące twoją społeczność, oddzielone przecinkami.", + "logo": "Logo strony", + "logo.image": "Obraz", + "logo.image-placeholder": "Ścieżka do logo, które ma być wyświetlane w nagłówku forum", + "logo.upload": "Prześlij", + "logo.url": "Adres URL", + "logo.url-placeholder": "Adres URL logo strony", + "logo.url-help": "W momencie kliknięcia na logo, wysyłaj użytkownika na ten adres. Jeśli pozostawione puste, użytkownik będzie wysyłany do indeksu forum.", + "logo.alt-text": "Cały tekst", + "log.alt-text-placeholder": "Alternatywny tekst dla dostępności", + "favicon": "Favikona", + "favicon.upload": "Prześlij", + "touch-icon": "Ikona ekranu startowego/dotykowa", + "touch-icon.upload": "Prześlij", + "touch-icon.help": "Zalecany rozmiar oraz format: 192x192, PNG. Jeśli ikona dotykowa nie została wyspecyfikowania, NodeBB będzie zastępczo używać favikony.", + "outgoing-links": "Odnośniki wychodzące", + "outgoing-links.warning-page": "Używaj strony ostrzegawczej o odnośnikach wychodzących", + "search-default-sort-by": "Domyślne sortowanie wyników wyszukiwania ", + "outgoing-links.whitelist": "Domeny na białej liście pozwalającej ominąć stronę ostrzegawczą" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/group.json b/public/language/pl/admin/settings/group.json index c5900c2a39..e956b24295 100644 --- a/public/language/pl/admin/settings/group.json +++ b/public/language/pl/admin/settings/group.json @@ -1,12 +1,12 @@ { "general": "Ogólne", - "private-groups": "Prywatne Grupy", - "private-groups.help": "If enabled, joining of groups requires the approval of the group owner (Default: enabled)", - "private-groups.warning": "Beware! If this option is disabled and you have private groups, they automatically become public.", - "allow-creation": "Allow Group Creation", - "allow-creation-help": "If enabled, users can create groups (Default: disabled)", - "max-name-length": "Maximum Group Name Length", - "cover-image": "Group Cover Image", - "default-cover": "Default Cover Images", - "default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image" + "private-groups": "Prywatne grupy", + "private-groups.help": "Jeśli włączone, dołączenie do grup wymaga zatwierdzenia przez właściciela grupy (domyślnie: włączone)", + "private-groups.warning": "Uwaga!Jeśli ta opcja jest wyłączona i masz prywatne grupy, automatycznie stają się one publiczne.", + "allow-creation": "Zezwalaj na tworzeni grup", + "allow-creation-help": "Jeśli włączone, użytkownicy mogą tworzyć grupy (domyślnie: wyłączone)", + "max-name-length": "Maksymalna długość nazwy grupy", + "cover-image": "Obraz profilowy grupy", + "default-cover": "Domyślne obrazy profilowe", + "default-cover-help": "Dodaj rozdzielone kropką domyślne obrazy profili grup, które nie wysłały własnych " } \ No newline at end of file diff --git a/public/language/pl/admin/settings/guest.json b/public/language/pl/admin/settings/guest.json index 6b2ac2c8b2..1793cd3b5e 100644 --- a/public/language/pl/admin/settings/guest.json +++ b/public/language/pl/admin/settings/guest.json @@ -1,8 +1,8 @@ { - "handles": "Guest Handles", - "handles.enabled": "Allow guest handles", - "handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"", - "privileges": "Guest Privileges", - "privileges.can-search": "Allow guests to search without logging in", - "privileges.can-search-users": "Allow guests to search users without logging in" + "handles": "Uchwyty gości", + "handles.enabled": "Zezwalaj na uchwyty gości", + "handles.enabled-help": "Ta opcja udostępnia gościom nowe pole, które umożliwia wybranie nazwy, pod którą będą publikowane ich posty. Jeśli wyłączone, będą po prostu nazywani \"Gość\"", + "privileges": "Uprawnienia gości", + "privileges.can-search": "Zezwalaj gościom na szukanie bez logowania", + "privileges.can-search-users": "Zezwalaj gościom na szukanie bez logowania" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/notifications.json b/public/language/pl/admin/settings/notifications.json index 9552e79b66..9f00578b0f 100644 --- a/public/language/pl/admin/settings/notifications.json +++ b/public/language/pl/admin/settings/notifications.json @@ -1,5 +1,5 @@ { "notifications": "Powiadomienia", "welcome-notification": "Powiadomienie na przywitanie", - "welcome-notification-link": "Welcome Notification Link" + "welcome-notification-link": "Odnośnik powiadomienia powitalnego" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/pagination.json b/public/language/pl/admin/settings/pagination.json index b60a29ff7b..78de8e2b29 100644 --- a/public/language/pl/admin/settings/pagination.json +++ b/public/language/pl/admin/settings/pagination.json @@ -1,9 +1,9 @@ { - "pagination": "Ustawienia Paginacji", - "enable": "Paginate topics and posts instead of using infinite scroll.", - "topics": "Topic Pagination", - "posts-per-page": "Posts per Page", - "categories": "Category Pagination", - "topics-per-page": "Topics per Page", - "initial-num-load": "Initial Number of Topics to Load on Unread, Recent, and Popular" + "pagination": "Ustawienia paginacji", + "enable": "Paginuj tematy oraz posty zamiast używać nieskończonego przewijania", + "topics": "Paginacja tematów", + "posts-per-page": "Postów na stronie", + "categories": "Paginacja kategorii", + "topics-per-page": "Tematów na stronę", + "initial-num-load": "Początkowa liczba pozycji do załadowania w Nieprzeczytanych, Ostatnich oraz Popularnych tematów" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/post.json b/public/language/pl/admin/settings/post.json index a789025597..fed3404a0f 100644 --- a/public/language/pl/admin/settings/post.json +++ b/public/language/pl/admin/settings/post.json @@ -1,48 +1,48 @@ { - "sorting": "Post Sorting", - "sorting.post-default": "Default Post Sorting", - "sorting.oldest-to-newest": "Oldest to Newest", - "sorting.newest-to-oldest": "Newest to Oldest", - "sorting.most-votes": "Most Votes", - "sorting.topic-default": "Default Topic Sorting", - "restrictions": "Posting Restrictions", - "restrictions.post-queue": "Enable post queue", - "restrictions.post-queue-help": "Enabling post queue will put the posts of new users in a queue for approval.", - "restrictions.seconds-between": "Seconds between Posts", - "restrictions.seconds-between-new": "Seconds between Posts for New Users", - "restrictions.rep-threshold": "Reputation threshold before this restriction is lifted", - "restrictions.seconds-defore-new": "Seconds before new user can post", - "restrictions.seconds-edit-after": "Number of seconds users are allowed to edit posts after posting. (0 disabled)", - "restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)", - "restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)", - "restrictions.min-title-length": "Minimum Title Length", - "restrictions.max-title-length": "Maximum Title Length", - "restrictions.min-post-length": "Minimum Post Length", - "restrictions.max-post-length": "Maximum Post Length", - "restrictions.days-until-stale": "Days until Topic is considered stale", - "restrictions.stale-help": "If a topic is considered \"stale\", then a warning will be shown to users who attempt to reply to that topic.", - "timestamp": "Timestamp", - "timestamp.cut-off": "Date cut-off (in days)", - "timestamp.cut-off-help": "Dates & times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).
(Default: 30, or one month). Set to 0 to always display dates, leave blank to always display relative times.", - "teaser": "Teaser Post", - "teaser.last-post": "Last – Show the latest post, including the original post, if no replies", - "teaser.last-reply": "Last – Show the latest reply, or a \"No replies\" placeholder if no replies", - "teaser.first": "First", - "unread": "Unread Settings", - "unread.cutoff": "Unread cutoff days", - "unread.min-track-last": "Minimum posts in topic before tracking last read", - "recent": "Recent Settings", - "recent.categoryFilter.disable": "Disable filtering of topics in ignored categories on the /recent page", - "signature": "Signature Settings", - "signature.disable": "Disable signatures", - "signature.no-links": "Disable links in signatures", - "signature.no-images": "Disable images in signatures", - "signature.max-length": "Maximum Signature Length", - "composer": "Composer Settings", - "composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.", - "composer.show-help": "Show \"Help\" tab", - "composer.enable-plugin-help": "Allow plugins to add content to the help tab", - "composer.custom-help": "Custom Help Text", - "ip-tracking": "IP Tracking", - "ip-tracking.each-post": "Track IP Address for each post" + "sorting": "Sortowanie postów", + "sorting.post-default": "Domyślne sortowanie postów", + "sorting.oldest-to-newest": "Najstarsze do Najnowszych", + "sorting.newest-to-oldest": "Najnowsze do Najstarszych", + "sorting.most-votes": "Najwięcej głosów", + "sorting.topic-default": "Domyślne sortowanie tematów", + "restrictions": "Ograniczenia pistania", + "restrictions.post-queue": "Włącz kolejkę postów", + "restrictions.post-queue-help": "Włączenie kolejki postów będzie dodawało posty nowych użytkowników do kolejki w celu zatwierdzenia.", + "restrictions.seconds-between": "Sekund pomiędzy postami", + "restrictions.seconds-between-new": "Sekund pomiędzy postami dla nowych użytkowników", + "restrictions.rep-threshold": "Próg reputacji powyżej, którego restrykcja jest zdjęta", + "restrictions.seconds-defore-new": "Sekundy, po których nowy użytkownik może wysyłać posty", + "restrictions.seconds-edit-after": "Liczba sekund, przez które użytkownicy mogą edytować post po jego wysłaniu (0 wyłącza).", + "restrictions.seconds-delete-after": "Liczba sekund przez, które użytkownicy mogą skasować post po jego wysłaniu (0 wyłącza).", + "restrictions.replies-no-delete": "Liczba odpowiedzi, po których użytkownicy nie mogą edytować własnych tematów (0 wyłącza).", + "restrictions.min-title-length": "Minimalna długość tematu", + "restrictions.max-title-length": "Maksymalna długość tematu", + "restrictions.min-post-length": "Minimalna długość posta", + "restrictions.max-post-length": "Maksymalna długość posta", + "restrictions.days-until-stale": "Dni, po których temat jest uznawany za przeterminowany", + "restrictions.stale-help": "Jeśli temat jest uznawany za \"przeterminowany\", wtedy użytkownikom próbującym na niego odpowiedzieć wyświetli się stosowany komunikat.", + "timestamp": "Znacznik czasowy", + "timestamp.cut-off": "Termin odcięcia (w dniach)", + "timestamp.cut-off-help": "Daty oraz godziny będą wyświetlane w sposób relatywny (np. \"3 godziny temu\" / \"5 dni temu\"), oraz przetłumaczone na różne\n\t\t\t\t\tjęzyki. Po określonym czasie, ten tekst może zostać zmieniony, aby wyświetlać sformatowane daty.\n\t\t\t\t\t(np. 4 Lut 2017 12:45).
(domyślnie: 30, lub jeden miesiąc). Ustaw 0, aby zawsze wyświetlać daty; pozostaw puste, aby korzystać z tylko z relatywnych opisów.", + "teaser": "Zwiastun posta", + "teaser.last-post": "Ostatni – Pokazuj ostatni post, włączając pierwszy post, jeśli brak odpowiedzi", + "teaser.last-reply": "Ostatni – Pokazuj ostatnią odpowiedzieć lub komunikat \"Brak odpowiedzi\" w przypadku ich braku", + "teaser.first": "Pierwszy", + "unread": "Ustawienia nieprzeczytanych", + "unread.cutoff": "Dni do odcięcie nieprzeczytanych ", + "unread.min-track-last": "Minimalna liczna postów w temacie przed śledzeniem ostatnio przeczytanego", + "recent": "Ustawienia ostatnich", + "recent.categoryFilter.disable": "Wyłącz filtrowanie tematów w ignorowanych kategoriach na stronie /recent", + "signature": "Ustawienia podpisów", + "signature.disable": "Wyłącz podpisy", + "signature.no-links": "Wyłącz odnośniki w podpisach", + "signature.no-images": "Wyłącz obrazy w podpisach", + "signature.max-length": "Maksymalna długość stopki", + "composer": "Ustawienia okna pisania", + "composer-help": "Następujące ustawienia zarządzają funkcjonalnością oraz/lub wyglądem okna pisania postów wyświetlanego\n\t\t\t\tużytkownikom kiedy tworzą nowe tematy lub odpowiadają w istniejących.", + "composer.show-help": "Pokazuj zakładkę \"Pomoc\"", + "composer.enable-plugin-help": "Zezwalaj wtyczką na dodawanie zawartości do zakładki pomocy", + "composer.custom-help": "Własny tekst pomocy", + "ip-tracking": "Śledzenie IP", + "ip-tracking.each-post": "Śledź adres IP każdego z postów" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/reputation.json b/public/language/pl/admin/settings/reputation.json index 1fdcb2622a..7be597f408 100644 --- a/public/language/pl/admin/settings/reputation.json +++ b/public/language/pl/admin/settings/reputation.json @@ -1,9 +1,9 @@ { - "reputation": "Ustawienia Reputacji", - "disable": "Wyłącz System Reputacji", - "disable-down-voting": "Wyłącz System \"Głosów przeciw\"", - "votes-are-public": "All Votes Are Public", - "thresholds": "Activity Thresholds", - "min-rep-downvote": "Minimum reputation to downvote posts", - "min-rep-flag": "Minimum reputation to flag posts" + "reputation": "Ustawienia reputacji", + "disable": "Wyłącz system reputacji", + "disable-down-voting": "Wyłącz system \"głosów przeciw\"", + "votes-are-public": "Wszystkie głosy są publiczne", + "thresholds": "Progi aktywności", + "min-rep-downvote": "Minimalna reputacja, aby negatywnie oceniać posty", + "min-rep-flag": "Minimalna reputacja, aby flagować posty" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/sockets.json b/public/language/pl/admin/settings/sockets.json index d04ee42fcf..f6c918752e 100644 --- a/public/language/pl/admin/settings/sockets.json +++ b/public/language/pl/admin/settings/sockets.json @@ -1,6 +1,6 @@ { - "reconnection": "Reconnection Settings", - "max-attempts": "Max Reconnection Attempts", - "default-placeholder": "Default: %1", - "delay": "Reconnection Delay" + "reconnection": "Ustawienia ponownego łączenia", + "max-attempts": "Maksymalna liczna prób połączenia", + "default-placeholder": "Domyślnie: %1", + "delay": "Opóźnienie ponownego łączenia" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/tags.json b/public/language/pl/admin/settings/tags.json index ef8efabbcd..35bba518c0 100644 --- a/public/language/pl/admin/settings/tags.json +++ b/public/language/pl/admin/settings/tags.json @@ -1,12 +1,12 @@ { "tag": "Ustawienia Tagów", - "min-per-topic": "Minimalna ilość Tagów na Temat", - "max-per-topic": "Maximum Tags per Topic", - "min-length": "Minimum Tag Length", - "max-length": "Maximum Tag Length", - "goto-manage": "Click here to visit the tag management page.", - "privacy": "Privacy", - "list-private": "Make the tags list private", - "related-topics": "Related Topics", - "max-related-topics": "Maximum related topics to display (if supported by theme)" + "min-per-topic": "Minimalna liczba tagów na temat", + "max-per-topic": "Maksymalna liczba tagów na temat", + "min-length": "Minimalna długość taga", + "max-length": "Maksymalna długość taga", + "goto-manage": "Kliknij tutaj, aby odwiedzić stronę zarządzania tagami.", + "privacy": "Prywatność", + "list-private": "Uczyń listę tagów prywatną", + "related-topics": "Powiązane tematy", + "max-related-topics": "Maksymalna liczba powiązanych tematów do wyświetlenia (jeśli wspierane przez szablon)" } \ No newline at end of file diff --git a/public/language/pl/admin/settings/uploads.json b/public/language/pl/admin/settings/uploads.json index 55d37318c2..240707820b 100644 --- a/public/language/pl/admin/settings/uploads.json +++ b/public/language/pl/admin/settings/uploads.json @@ -1,28 +1,28 @@ { "posts": "Posty", - "allow-files": "Pozwolić użytkownikom wgrywać pliki", - "private": "Make uploaded files private", - "max-image-width": "Resize images down to specified width (in pixels)", - "max-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)", - "max-file-size": "Maximum File Size (in KiB)", - "max-file-size-help": "(in kibibytes, default: 2048 KiB)", - "allow-topic-thumbnails": "Allow users to upload topic thumbnails", - "topic-thumb-size": "Topic Thumb Size", - "allowed-file-extensions": "Allowed File Extensions", - "allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. pdf,xls,doc). An empty list means all extensions are allowed.", - "profile-avatars": "Profile Avatars", - "allow-profile-image-uploads": "Allow users to upload profile images", - "convert-profile-image-png": "Convert profile image uploads to PNG", - "default-avatar": "Custom Default Avatar", - "upload": "Upload", - "profile-image-dimension": "Profile Image Dimension", - "profile-image-dimension-help": "(in pixels, default: 128 pixels)", - "max-profile-image-size": "Maximum Profile Image File Size", - "max-profile-image-size-help": "(in kibibytes, default: 256 KiB)", - "max-cover-image-size": "Maximum Cover Image File Size", - "max-cover-image-size-help": "(in kibibytes, default: 2,048 KiB)", - "keep-all-user-images": "Keep old versions of avatars and profile covers on the server", - "profile-covers": "Profile Covers", - "default-covers": "Default Cover Images", - "default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image" + "allow-files": "Zezwalaj użytkownikom wysyłać pliki", + "private": "Rób wysyłane pliki prywatnymi", + "max-image-width": "Zmniejszaj obrazy do specyficznej szerokości (w pikselach)", + "max-image-width-help": "(w pikselach, domyślnie: 760px; ustaw 0, aby wyłączyć)", + "max-file-size": "Maksymalny rozmiar plików (w KiB)", + "max-file-size-help": "(w kilobajtach, domyślnie: 2,048 KiB)", + "allow-topic-thumbnails": "Zezwalaj użytkownikom na wysyłanie obrazków tematów", + "topic-thumb-size": "Rozmiar miniatury tematu", + "allowed-file-extensions": "Dozwolone typy plików", + "allowed-file-extensions-help": "Tutaj wprowadź oddzielone kropką rozszerzenia plików (np. pdf,xls,doc). Pusta lista oznacza, że wszystkie rozszerzenia są dozwolone.", + "profile-avatars": "Profilowe awatary", + "allow-profile-image-uploads": "Zezwalaj użytkownikom na ładowanie obrazów profilowych", + "convert-profile-image-png": "Konwertuj przesłane obrazy profilowe na PNG", + "default-avatar": "Własny domyślny awatar", + "upload": "Prześlij", + "profile-image-dimension": "Rozmiary obrazka profilowego", + "profile-image-dimension-help": "(w pikselach, domyślnie: 128px)", + "max-profile-image-size": "Maksymalny rozmiar obrazka profilowego", + "max-profile-image-size-help": "(w kilobajtach, domyślnie: 256 KiB)", + "max-cover-image-size": "Maksymalny rozmiar obrazka profilowego", + "max-cover-image-size-help": "(w kilobajtach, domyślnie: 2,048 KiB)", + "keep-all-user-images": "Zachowaj stare wersje awatarów oraz okładek profili na serwerze", + "profile-covers": "Okładki profili", + "default-covers": "Domyślne obrazy profilowe", + "default-covers-help": "Dodaj udzieloną kropkami listę domyślnych obrazów dla kont użytkowników, którzy nie wysłali swoich własnych obrazów profilowych." } diff --git a/public/language/pl/admin/settings/user.json b/public/language/pl/admin/settings/user.json index 35d1a79b5c..8bfdd67a27 100644 --- a/public/language/pl/admin/settings/user.json +++ b/public/language/pl/admin/settings/user.json @@ -1,64 +1,64 @@ { "authentication": "Autoryzacja", - "allow-local-login": "Pozwól na lokalne logowanie", - "require-email-confirmation": "Wymagaj Potwierdzenie Emailu", - "email-confirm-interval": "Użytkownik nie może ponownie wysłać email z potwierdzeniem, aż", + "allow-local-login": "Zezwalaj na lokalne logowanie", + "require-email-confirmation": "Wymagaj potwierdzenia adresu email", + "email-confirm-interval": "Użytkownik nie może ponownie wysłać email z potwierdzeniem, dopóki", "email-confirm-email2": "minut upłynęło", - "allow-login-with": "Pozwól na logowanie przy użyciu", - "allow-login-with.username-email": "Nazwy użytkownika oraz Emailu", + "allow-login-with": "Zezwalaj na logowanie przy użyciu", + "allow-login-with.username-email": "Nazwy użytkownika lub adresu email", "allow-login-with.username": "Tylko Nazwy Użytkownia", - "allow-login-with.email": "Tylko Emailu", - "account-settings": "Ustawienia Konta", + "allow-login-with.email": "Tylko adresu email", + "account-settings": "Ustawienia konta", "disable-username-changes": "Wyłącz możliwość zmiany nazwy użytkownika", - "disable-email-changes": "Wyłącz możliwość zmiany emaila", + "disable-email-changes": "Wyłącz możliwość zmiany adresu email", "disable-password-changes": "Wyłącz możliwość zmiany hasła", - "allow-account-deletion": "Pozwól na możliwość usunięcia konta", - "user-info-private": "Hide user list and data from guests", - "hide-fullname": "Hide fullname from users", - "hide-email": "Hide email from users", + "allow-account-deletion": "Zezwalaj na usunięcie konta", + "user-info-private": "Ukrywaj listę oraz dane użytkowników przed goścmi", + "hide-fullname": "Ukrywaj pełne imię i nazwisko przed innymi użytkownikami", + "hide-email": "Ukryj adresy email użytkowników.", "themes": "Style", "disable-user-skins": "Uniemożliwić użytkownikom wybranie niestandardowej skórę", - "account-protection": "Ochrona Konta", + "account-protection": "Ochrona konta", "login-attempts": "Prób logowania na godzinę", - "login-attempts-help": "If login attempts to a user's account exceeds this threshold, that account will be locked for a pre-configured amount of time", + "login-attempts-help": "Jeśli liczba prób logowania na konto użytkownika przekroczy ten próg, to konto zostanie zablokowane na zdefiniowany wcześniej czas", "lockout-duration": "Czas trwania blokady konta (minuty)", - "login-days": "Ilość dni zapamiętywania sesji logowania użytkownika", - "password-expiry-days": "Wymuś restotwanie hasła po określonej liczbie dni", + "login-days": "Liczba dni zapamiętywania sesji logowania użytkownika", + "password-expiry-days": "Wymuś resetowanie hasła po określonej liczbie dni", "registration": "Rejestracja Użytkownika", - "registration-type": "Typ Rejestracji", + "registration-type": "Typ rejestracji", "registration-type.normal": "Normalna", - "registration-type.admin-approval": "Zatwierdzania przez administratora", - "registration-type.admin-approval-ip": "Zatwierdzania przez administratora dla IP", - "registration-type.invite-only": "Zaproszenia", - "registration-type.admin-invite-only": "Zaproszenie przez administracje", - "registration-type.disabled": "Brak możliwości rejestracji", - "registration-type.help": "Normal - Users can register from the /register page.
\nAdmin Approval - User registrations are placed in an approval queue for administrators.
\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.
\nInvite Only - Users can invite others from the users page.
\nAdmin Invite Only - Only administrators can invite others from users and admin/manage/users pages.
\nNo registration - No user registration.
", - "registration.max-invites": "Maksymalnie ilość zaproszeń przez użytkownika", - "max-invites": "Maksymalnie ilość zaproszeń przez użytkownika", - "max-invites-help": "0 for no restriction. Admins get infinite invitations
Only applicable for \"Invite Only\"", - "invite-expiration": "Invite expiration", - "invite-expiration-help": "# of days invitations expire in.", - "min-username-length": "Minimum Username Length", - "max-username-length": "Maximum Username Length", - "min-password-length": "Minimum Password Length", - "min-password-strength": "Minimum Password Strength", - "max-about-me-length": "Maximum About Me Length", - "terms-of-use": "Forum Terms of Use (Leave blank to disable)", - "user-search": "User Search", - "user-search-results-per-page": "Number of results to display", + "registration-type.admin-approval": "Zatwierdzenie Admina", + "registration-type.admin-approval-ip": "Zatwierdzenie Admina dla IP", + "registration-type.invite-only": "Tylko zaproszenia", + "registration-type.admin-invite-only": "Tylko zaproszenia Admina", + "registration-type.disabled": "Brak rejestracji", + "registration-type.help": "Normalna - Użytkownicy mogą się rejestrować na stronie /register.
\nZatwierdzenie Admina - Rejestracja użytkowników trafia do kolejki zatwierdzeń for administrators.
\nZatwierdzenie Admina dla IP - Normalna dla nowych użytkowników, Zatwierdzenie Admina dla adresów IP, które mają już konta.
\nTylko zaproszenia - Użytkownicy mogą zapraszać innych poprzez stronę users.
\nTylko zaproszenia Admina - Tylko admini mogą zapraszać innych poprzez stronę users oraz admin/manage/users.
\nBrak rejestracji - Brak rejestracji użytkowników.
", + "registration.max-invites": "Maksymalnie liczba zaproszeń na użytkownika", + "max-invites": "Maksymalnie liczba zaproszeń na użytkownika", + "max-invites-help": "0 dla braku ograniczeń. Administratorzy otrzymują nieskończoną liczbę zaproszeń
Aplikowane tylko dla \"Tylko zaproszeni\"", + "invite-expiration": "Wygasanie zaproszeń", + "invite-expiration-help": "Liczba dni, po których wygasają zaproszenia.", + "min-username-length": "Minimalna długość nazwy użytkownika", + "max-username-length": "Maksymalna długość nazwy użytkownika", + "min-password-length": "Maksymalna długość hasła", + "min-password-strength": "Minimalna długość hasła", + "max-about-me-length": "Maksymalna długość pola O mnie", + "terms-of-use": "Warunki użytkowania forum (Pozostaw puste, aby wyłączyć)", + "user-search": "Wyszukiwanie użytkownków", + "user-search-results-per-page": "Liczba wyników do wyświetlenia", "default-user-settings": "Domyślne ustawienie użytkownia", - "show-email": "Pokaż email", - "show-fullname": "Pokaż imię", - "restrict-chat": "Only allow chat messages from users I follow", - "outgoing-new-tab": "Open outgoing links in new tab", - "topic-search": "Enable In-Topic Searching", - "digest-freq": "Subscribe to Digest", - "digest-freq.off": "Off", + "show-email": "Pokazuj adres email", + "show-fullname": "Pokazuj imię", + "restrict-chat": "Pozwalaj tylko wiadomości chat od użytkowników, których śledzę", + "outgoing-new-tab": "Otwieraj odnośniki wychodzące w nowej karcie", + "topic-search": "Włącz wyszukiwanie wewnątrz tematów", + "digest-freq": "Zapisz się do podsumowań", + "digest-freq.off": "Wyłączone", "digest-freq.daily": "Dzienny ", "digest-freq.weekly": "Tygodniowy", "digest-freq.monthly": "Miesięczny", - "email-chat-notifs": "Send an email if a new chat message arrives and I am not online", - "email-post-notif": "Send an email when replies are made to topics I am subscribed to", + "email-chat-notifs": "Wyślij e-maila, jeśli dostanę nową wiadomość, a nie jestem on-line", + "email-post-notif": "Wyślij email, kiedy w tematach, które subskrybuję, pojawią się odpowiedzi", "follow-created-topics": "Śledź tematy, które stworzyłeś", "follow-replied-topics": "Śledź tematy, w których się wypowiedziałeś " } \ No newline at end of file diff --git a/public/language/pl/admin/settings/web-crawler.json b/public/language/pl/admin/settings/web-crawler.json index 2e0d31d12b..a20647224d 100644 --- a/public/language/pl/admin/settings/web-crawler.json +++ b/public/language/pl/admin/settings/web-crawler.json @@ -1,10 +1,10 @@ { - "crawlability-settings": "Crawlability Settings", - "robots-txt": "Custom Robots.txt Leave blank for default", - "sitemap-feed-settings": "Sitemap & Feed Settings", - "disable-rss-feeds": "Disable RSS Feeds", - "disable-sitemap-xml": "Disable Sitemap.xml", - "sitemap-topics": "Number of Topics to display in the Sitemap", - "clear-sitemap-cache": "Clear Sitemap Cache", - "view-sitemap": "View Sitemap" + "crawlability-settings": "Ustawienia robotów sieciowych", + "robots-txt": "Własny Robots.txtPozostaw puste, aby użyć domyślnego", + "sitemap-feed-settings": "Ustawienia mapy strony oraz kanału", + "disable-rss-feeds": "Wyłącz kanały RSS", + "disable-sitemap-xml": "Wyłącz Sitemap.xml", + "sitemap-topics": "Liczba tematów do wyświetlenia w mapie strony", + "clear-sitemap-cache": "Wyczyść pamięć podręczną map strony", + "view-sitemap": "Zobacz mapę strony" } \ No newline at end of file diff --git a/public/language/pl/category.json b/public/language/pl/category.json index 9781c8448c..00b953bfe3 100644 --- a/public/language/pl/category.json +++ b/public/language/pl/category.json @@ -1,7 +1,7 @@ { "category": "Kategoria", "subcategories": "Podkategorie", - "new_topic_button": "Nowy Temat", + "new_topic_button": "Nowy temat", "guest-login-post": "Zaloguj się, aby napisać.", "no_topics": "W tej kategorii nie ma jeszcze żadnych tematów.
Może pora na napisanie pierwszego?", "browsing": "przegląda", @@ -12,7 +12,7 @@ "ignore": "Ignoruj", "watching": "Obserwowanie", "ignoring": "Ignorowanie", - "watching.description": "Pokaż tematy jako nieprzeczytane", + "watching.description": "Pokazuj tematy jako nieprzeczytane", "ignoring.description": "Nie pokazuj tematów jako nieprzeczytane", "watch.message": "Włączyłeś powiadomienia dla tej kategorii oraz subkategorii.", "ignore.message": "Wyłączyłeś powiadomienia dla tej kategorii oraz subkategorii.", diff --git a/public/language/pl/email.json b/public/language/pl/email.json index 65434dd2d4..025a861c0c 100644 --- a/public/language/pl/email.json +++ b/public/language/pl/email.json @@ -6,12 +6,12 @@ "greeting_with_name": "Witaj %1", "welcome.text1": "Dziękujemy za rejestrację w %1", "welcome.text2": "Aby aktywować swoje konto, musisz potwierdzić, że skorzystałeś z własnego adresu e-mail.", - "welcome.text3": "Administrator zaakceptował Twoje podanie o rejestrację. Możesz się zalogować, używając swojej nazwy użytkownika i hasła.", + "welcome.text3": "Administrator zaakceptował twoje podanie o rejestrację. Możesz się zalogować, używając swojej nazwy użytkownika i hasła.", "welcome.cta": "Kliknij tutaj, by potwierdzić swój adres", "invitation.text1": "%1 zaprasza do dołączenia do %2", "invitation.ctr": "Kliknij tutaj, aby utworzyć konto.", - "reset.text1": "Otrzymaliśmy żądanie przywrócenia Twojego hasła. Jeśli nie żądałeś przywrócenia hasła, zignoruj ten e-mail.", - "reset.text2": "Aby przywrócić swoje hasło, skorzystaj z poniższego linku:", + "reset.text1": "Otrzymaliśmy żądanie przywrócenia twojego hasła. Jeśli nie żądałeś przywrócenia hasła, zignoruj ten e-mail.", + "reset.text2": "Aby przywrócić swoje hasło, skorzystaj z poniższego odnośnika:", "reset.cta": "Kliknij tu, by przywrócić swoje hasło", "reset.notify.subject": "Hasło pomyślnie zmienione", "reset.notify.text1": "Informujemy, że %1, twoje hasło zostało pomyślnie zmienione.", @@ -27,14 +27,14 @@ "digest.subject": "Digest for %1", "notif.chat.subject": "Nowa wiadomość czatu od %1", "notif.chat.cta": "Kliknij tutaj, by kontynuować konwersację", - "notif.chat.unsub.info": "To powiadomienie o czacie zostało Ci wysłane zgodnie z ustawieniami Twojego konta.", + "notif.chat.unsub.info": "To powiadomienie o czacie zostało Ci wysłane zgodnie z ustawieniami twojego konta.", "notif.post.cta": "Kliknij tutaj, aby przeczytać cały temat.", - "notif.post.unsub.info": "To powiadomienie o poście zostało Ci wysłane zgodnie z ustawieniami Twojego konta.", + "notif.post.unsub.info": "To powiadomienie o poście zostało Ci wysłane zgodnie z ustawieniami twojego konta.", "test.text1": "To jest e-mail testowy, aby sprawdzić, czy poprawnie skonfigurowałeś e-mailer w swoim NodeBB.", "unsub.cta": "Kliknij tutaj, by zmienić te ustawienia", - "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": "Zostałeś zbanowany przez %1", + "banned.text1": "Użytkownik %1 został zbanowany przez %2.", + "banned.text2": "Ban potrwa do %1", + "banned.text3": "To jest powód, dla którego zostałeś zbanowany:", "closing": "Dziękujemy!" } \ No newline at end of file diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 820ed29343..6d4c4f58f0 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -1,28 +1,28 @@ { "invalid-data": "Błędne Dane", - "invalid-json": "Invalid JSON", + "invalid-json": "Niewłaściwy JSON", "not-logged-in": "Nie jesteś zalogowany/a.", "account-locked": "Twoje konto zostało tymczasowo zablokowane", "search-requires-login": "Wyszukiwanie wymaga konta - zaloguj się lub zarejestruj.", - "goback": "Press back to return to the previous page", - "invalid-cid": "Błędne ID Kategorii", - "invalid-tid": "Błędne ID Tematu", + "goback": "Wciśnij wstecz, aby powrócić do poprzedniej strony", + "invalid-cid": "Błędne ID kategorii", + "invalid-tid": "Błędne ID tematu", "invalid-pid": "Błędne ID Postu", - "invalid-uid": "Błędne ID Użytkownika", + "invalid-uid": "Błędne ID użytkownika", "invalid-username": "Błędny Login", "invalid-email": "Błędny Email", "invalid-title": "Błędny tytuł!", "invalid-user-data": "Błędne Dane Użytkownika", "invalid-password": "Błędne Hasło", - "invalid-login-credentials": "Invalid login credentials", + "invalid-login-credentials": "Niewłaściwe dane logowania", "invalid-username-or-password": "Proszę podać nazwę użytkownika i hasło", "invalid-search-term": "Błędne wyszukiwane wyrażenie", - "csrf-invalid": "Nie mogliśmy Cię zalogować. Zapewne przyczyną jest wygasła sesja. Proszę spróbować ponownie.", + "csrf-invalid": "Nie mogliśmy cię zalogować. Zapewne przyczyną jest wygasła sesja. Proszę spróbować ponownie.", "invalid-pagination-value": "Błędna wartość paginacji, zakres od %1 do %2", "username-taken": "Login zajęty", "email-taken": "Email zajęty", "email-not-confirmed": "Twój email nie został jeszcze potwierdzony. Proszę kliknąć tutaj, by go potwierdzić.", - "email-not-confirmed-chat": "Nie możesz prowadzić rozmów, dopóki Twój email nie zostanie potwierdzony. Kliknij tutaj, aby potwierdzić swój email.", + "email-not-confirmed-chat": "Nie możesz prowadzić rozmów, dopóki twój email nie zostanie potwierdzony. Kliknij tutaj, aby potwierdzić swój email.", "email-not-confirmed-email-sent": "Twój e-mail jeszcze nie został potwierdzony, proszę sprawdzić swoją skrzynkę odbiorczą.", "no-email-to-confirm": "To forum wymaga weryfikacji przez email. Proszę kliknąć tutaj, aby wprowadzić adres.", "email-confirm-failed": "Nie byliśmy w stanie potwierdzić twojego email-a. Proszę spróbować później.", @@ -33,7 +33,7 @@ "password-too-long": "Hasło jest za długie", "user-banned": "Użytkownik zbanowany", "user-banned-reason": "Twoje konto zostało zablokowane (Powód: %1)", - "user-banned-reason-until": "Sorry, this account has been banned until %1 (Reason: %2)", + "user-banned-reason-until": "Przepraszamy, to konto zostało zbanowane do %1 (Powód: %2)", "user-too-new": "Przepraszamy, musisz odczekać %1 sekund(y) przed utworzeniem pierwszego posta", "blacklisted-ip": "Twój adres IP został zablokowany na tej społeczności. Jeśli uważasz to za błąd, zgłoś to administratorowi", "ban-expiry-missing": "Wprowadź datę końca blokady", @@ -73,9 +73,9 @@ "tag-too-long": "Prosimy wprowadzić krótszy tag. Tagi nie mogą być dłuższe niż %1 znak(ów)", "not-enough-tags": "Zbyt mało tagów. Tematy muszą posiadać przynajmniej %1 tag(ów)", "too-many-tags": "Zbyt wiele tagów. Tematy nie mogą posiadać więcej niż %1 tag(ów)", - "still-uploading": "Poczekaj na pełne załadowanie", + "still-uploading": "Poczekaj na zakończenie przesyłania", "file-too-big": "Maksymalny dopuszczalny rozmiar pliku to %1kB - prosimy przesłać mniejszy plik", - "guest-upload-disabled": "Guest uploading has been disabled", + "guest-upload-disabled": "Przesyłanie plików przez gości zostało wyłączone", "already-bookmarked": "Już dodałeś ten post do zakładek", "already-unbookmarked": "Już usunąłeś ten post z zakładek", "cant-ban-other-admins": "Nie możesz zbanować innych adminów!", @@ -101,14 +101,14 @@ "topic-thumbnails-are-disabled": "Miniatury tematów są wyłączone.", "invalid-file": "Błędny Plik", "uploads-are-disabled": "Przesyłanie plików jest wyłączone", - "signature-too-long": "Przepraszamy, Twój podpis nie może być dłuższy niż %1 znaków.", - "about-me-too-long": "Przepraszamy, Twoja informacja o sobie nie może być dłuższa niż %1 znaków.", + "signature-too-long": "Przepraszamy, twój podpis nie może być dłuższy niż %1 znaków.", + "about-me-too-long": "Przepraszamy, twoja informacja o sobie nie może być dłuższa niż %1 znaków.", "cant-chat-with-yourself": "Nie możesz rozmawiać sam ze sobą!", - "chat-restricted": "Ten użytkownik ograniczył swoje rozmowy. Musi Cię śledzić, aby kontakt z nim był możliwy", + "chat-restricted": "Ten użytkownik ograniczył swoje rozmowy. Musi cię śledzić, aby kontakt z nim był możliwy", "chat-disabled": "System rozmów jest wyłączony", "too-many-messages": "Wysłałeś zbyt wiele wiadomości, prosimy chwilę poczekać.", "invalid-chat-message": "Nieprawidłowa wiadomość", - "chat-message-too-long": "Chat messages can not be longer than %1 characters.", + "chat-message-too-long": "Wiadomości czatu nie mogą być dłuższe niż %1 znaków.", "cant-edit-chat-message": "Nie jesteś upoważniony do edycji tej wiadomości", "cant-remove-last-user": "You can't remove the last user", "cant-delete-chat-message": "Nie jesteś upoważniony do usunięcia tej wiadomości", @@ -119,11 +119,11 @@ "not-enough-reputation-to-flag": "Nie masz dość reputacji, by flagować ten post", "already-flagged": "Ten post jest już przez Ciebie oznaczony", "reload-failed": "NodeBB napotkało problem w czasie przeładowywania \"%1\". Forum będzie nadal dostarczać istniejące zasoby strony klienta, jednak powinieneś cofnąć ostatnią akcję.", - "registration-error": "Błąd Rejestracji", + "registration-error": "Błąd rejestracji", "parse-error": "Coś poszło nie tak podczas przetwarzania odpowiedzi serwera", "wrong-login-type-email": "Zaloguj się, używając adresu email", "wrong-login-type-username": "Zaloguj się używając nazwy użytkownika", - "invite-maximum-met": "Zaprosiłeś maksymalną ilość osób (%1 z %2).", + "invite-maximum-met": "Zaprosiłeś maksymalną liczba osób (%1 z %2).", "no-session-found": "Nie znaleziono sesji logowania", "not-in-room": "Użytkownik nie jest w pokoju", "no-users-in-room": "Brak użytkowników w pokoju", @@ -131,5 +131,5 @@ "no-users-selected": "Nie wybrano żadnych użytkowników", "invalid-home-page-route": "Niepoprawny odnośnik strony domowej", "invalid-session": "Niewłaściwa sesja", - "invalid-session-text": "Wygląda na to, że Twoja sesja jest nieaktywna lub nie zgadza się z serwerem. Proszę odświeżyć tę stronę." + "invalid-session-text": "Wygląda na to, że twoja sesja jest nieaktywna lub nie zgadza się z serwerem. Proszę odświeżyć tę stronę." } \ No newline at end of file diff --git a/public/language/pl/flags.json b/public/language/pl/flags.json index c4bfed6f23..0749ce4e6e 100644 --- a/public/language/pl/flags.json +++ b/public/language/pl/flags.json @@ -1,60 +1,60 @@ { - "state": "State", - "reporter": "Reporter", - "reported-at": "Reported At", - "description": "Description", - "no-flags": "Hooray! No flags found.", - "assignee": "Assignee", - "update": "Update", - "updated": "Updated", - "target-purged": "The content this flag referred to has been purged and is no longer available.", + "state": "Stan", + "reporter": "Zgłaszający", + "reported-at": "Zaraportowano o", + "description": "Opis", + "no-flags": "Hura! Nie znaleziono flag.", + "assignee": "Przypisany(-a)", + "update": "Zaktualizuj", + "updated": "Zaaktualizowano", + "target-purged": "Zawartość, do której referuje ta flaga została wymazana i nie jest już dostępna.", - "quick-filters": "Quick Filters", - "filter-active": "There are one or more filters active in this list of flags", - "filter-reset": "Remove Filters", - "filters": "Filter Options", - "filter-reporterId": "Reporter UID", - "filter-targetUid": "Flagged UID", - "filter-type": "Flag Type", - "filter-type-all": "All Content", + "quick-filters": "Szybkie filtry", + "filter-active": "Istnieje co najmniej jeden aktywny filtr w tej liście flag", + "filter-reset": "Usuń filtry", + "filters": "Opcje filtrowania", + "filter-reporterId": "UID zgłaszającego", + "filter-targetUid": "Oflagowany UID", + "filter-type": "Typ flagi", + "filter-type-all": "Cała zawartość", "filter-type-post": "Post", - "filter-state": "State", - "filter-assignee": "Assignee UID", - "filter-cid": "Category", - "filter-quick-mine": "Assigned to me", - "filter-cid-all": "All categories", - "apply-filters": "Apply Filters", + "filter-state": "Stan", + "filter-assignee": "UID Przypisanego(-ej)", + "filter-cid": "Kategoria", + "filter-quick-mine": "Przypisane do mnie", + "filter-cid-all": "Wszystkie kategorie", + "apply-filters": "Zastosuj filtry", - "quick-links": "Quick Links", - "flagged-user": "Flagged User", - "view-profile": "View Profile", - "start-new-chat": "Start New Chat", - "go-to-target": "View Flag Target", + "quick-links": "Szybkie odnośniki", + "flagged-user": "Oflagowany użytkownik", + "view-profile": "Zobacz profil", + "start-new-chat": "Rozpocznij nowy czat", + "go-to-target": "Zobacz cel flagowania", - "user-view": "View Profile", - "user-edit": "Edit Profile", + "user-view": "Zobacz profil", + "user-edit": "Edytuj profil", - "notes": "Flag Notes", - "add-note": "Add Note", - "no-notes": "No shared notes.", + "notes": "Notki flagi", + "add-note": "Dodaj notkę", + "no-notes": "Brak udostępnionych notek.", - "history": "Flag History", - "back": "Back to Flags List", - "no-history": "No flag history.", + "history": "Historia flag", + "back": "Wróć do listy flag", + "no-history": "Brak historii oflagowania.", - "state-all": "All states", - "state-open": "New/Open", - "state-wip": "Work in Progress", - "state-resolved": "Resolved", - "state-rejected": "Rejected", - "no-assignee": "Not Assigned", - "note-added": "Note Added", + "state-all": "Wszystkie stany", + "state-open": "Nowy/Otwarty", + "state-wip": "W trakcie prac", + "state-resolved": "Rozwiązany", + "state-rejected": "Odrzucono", + "no-assignee": "Nie przypisano", + "note-added": "Dodano notatkę", - "modal-title": "Report Inappropriate Content", - "modal-body": "Please specify your reason for flagging %1 %2 for review. Alternatively, use one of the quick report buttons if applicable.", + "modal-title": "Zaraportuj niewłaściwą zawartość", + "modal-body": "Prosimy o opisanie powodu oflagowania %1 %2 do przeglądów. Alternatywnie, jeśli to możliwe użyj jednego z przycisków szybkiego raportowania.", "modal-reason-spam": "Spam", - "modal-reason-offensive": "Offensive", - "modal-reason-custom": "Reason for reporting this content...", - "modal-submit": "Submit Report", - "modal-submit-success": "Content has been flagged for moderation." + "modal-reason-offensive": "Obraźliwy", + "modal-reason-custom": "Powód raportowania tej zawartości.", + "modal-submit": "Wyślij raport", + "modal-submit-success": "Zawartość została oflagowana do moderacji." } \ No newline at end of file diff --git a/public/language/pl/global.json b/public/language/pl/global.json index 14dc633e53..2a1ecc81ec 100644 --- a/public/language/pl/global.json +++ b/public/language/pl/global.json @@ -1,16 +1,16 @@ { - "home": "Strona główna", + "home": "Strona startowa", "search": "Szukaj", "buttons.close": "Zamknij", "403.title": "Dostęp zabroniony", "403.message": "Wygląda na to, że trafiłeś na stronę, do której nie masz dostępu.", "403.login": "Może powinieneś się zalogować?", "404.title": "Nie znaleziono", - "404.message": "Wygląda na to, że trafiłeś na stronę, która nie istnieje. Wróć do strony głównej.", + "404.message": "Wygląda na to, że trafiłeś na stronę, która nie istnieje. Wróć do strony startowej.", "500.title": "Wewnętrzny błąd.", "500.message": "Ups! Coś poszło nie tak.", "400.title": "Złe zapytanie.", - "400.message": "Wygląda na to, że ten link jest niepoprawny, proszę go sprawdzić i spróbować ponownie. W przeciwnym wypadku wróć do strona domowa.", + "400.message": "Wygląda na to, że to łącze jest niepoprawne, proszę go sprawdzić i spróbować ponownie. W przeciwnym wypadku wróć do strona domowa.", "register": "Zarejestruj się", "login": "Zaloguj się", "please_log_in": "Proszę się zalogować", @@ -58,7 +58,7 @@ "downvoters": "Głosujący przeciw", "downvoted": "Oddane głosy przeciw", "views": "Wyświetleń", - "reputation": "Punkty reputacji", + "reputation": "Reputacja", "read_more": "czytaj więcej", "more": "Więcej", "posted_ago_by_guest": "wysłany %1 przez Gościa", @@ -72,7 +72,7 @@ "guest_posted_ago": "Gość wysłał %1", "last_edited_by": "ostatnio edytowany przez %1", "norecentposts": "Brak ostatnich postów", - "norecenttopics": "Brak Ostatnich Tematów", + "norecenttopics": "Brak Ostatnich tematów", "recentposts": "Ostatnie posty", "recentips": "Adresy IP ostatnich logowań", "moderator_tools": "Narzędzia dla moderatorów", @@ -94,16 +94,16 @@ "sessions": "Sesje logowania", "ip_address": "Adres IP", "enter_page_number": "Wpisz numer strony", - "upload_file": "Załaduj plik", - "upload": "Załaduj", + "upload_file": "Prześlij plik", + "upload": "Prześlij", "allowed-file-types": "Dozwolone typy plików %1", "unsaved-changes": "Posiadasz niezapisane zmiany. Jesteś pewien, że chcesz opuścić stronę?", - "reconnecting-message": "Wygląda na to, że Twoje połączenie z %1 zostało przerwane. Proszę czekać, gdy staramy się je odnowić.", + "reconnecting-message": "Wygląda na to, że twoje połączenie z %1 zostało przerwane. Proszę czekać, gdy staramy się je odnowić.", "play": "Odtwórz", "cookies.message": "Ta strona używa plików cookies, by zapewnić Ci najlepsze działanie naszej strony.", "cookies.accept": "Mam to!", "cookies.learn_more": "Dowiedz się więcej", "edited": "Edytowany", - "disabled": "Disabled", - "select": "Select" + "disabled": "Wyłączony", + "select": "Wybierz" } \ No newline at end of file diff --git a/public/language/pl/groups.json b/public/language/pl/groups.json index 59b297af7c..028b25803c 100644 --- a/public/language/pl/groups.json +++ b/public/language/pl/groups.json @@ -10,10 +10,10 @@ "pending.reject_all": "Odrzuć Wszystkie", "pending.none": "Nie ma w tym momencie żadnych oczekujących członków", "invited.none": "Nie ma w tym momencie żadnych zaproszonych członków", - "invited.uninvite": "Cofnij Zaproszenie", + "invited.uninvite": "Cofnij zaproszenie", "invited.search": "Wyszukaj użytkownika, aby zaprosić go do tej grupy", "invited.notification_title": "Otrzymano zaproszenie do dołączenia do %1", - "request.notification_title": "Podanie Członkostwa Grupy od %1", + "request.notification_title": "Żądanie członkostwa w grupie od %1", "request.notification_text": "%1 chce zostać członkiem %2", "cover-save": "Zapisz", "cover-saving": "Zapisuję", @@ -33,11 +33,11 @@ "details.member_count": "Liczba Członków", "details.creation_date": "Data Utworzenia", "details.description": "Opis", - "details.badge_preview": "Podgląd plakietki", + "details.badge_preview": "Podgląd odznaki", "details.change_icon": "Zmień ikonę", "details.change_colour": "Zmień kolor", - "details.badge_text": "Treść plakietki", - "details.userTitleEnabled": "Pokaż plakietkę", + "details.badge_text": "Treść odznaki", + "details.userTitleEnabled": "Pokazuj odznakę", "details.private_help": "Jeśli aktywowane, przystępowanie do grup wymaga zatwierdzenia przez właściciela grupy", "details.hidden": "Ukryty", "details.hidden_help": "Jeśli aktywowane, ta grupa nie będzie widoczna w wykazie grup, a użytkownicy będą musieli być zapraszani manualnie.", @@ -50,8 +50,8 @@ "membership.join-group": "Dołącz do grupy", "membership.leave-group": "Opuść grupę", "membership.reject": "Odrzuć", - "new-group.group_name": "Nazwa Grupy:", - "upload-group-cover": "Załaduj zdjęcie tła grupy", + "new-group.group_name": "Nazwa grupy:", + "upload-group-cover": "Prześlij zdjęcie tła grupy", "bulk-invite-instructions": "Wprowadź listę oddzielonych przecinkami nazw użytkowników, których chcesz zaprosić do tej grupy", "bulk-invite": "Masowe zaproszenie", "remove_group_cover_confirm": "Czy chcesz usunąć tło profilu?" diff --git a/public/language/pl/modules.json b/public/language/pl/modules.json index 222a9ef591..bcf0c67bff 100644 --- a/public/language/pl/modules.json +++ b/public/language/pl/modules.json @@ -22,7 +22,7 @@ "chat.add-users-to-room": "Dodaj użytkownika do pokoju czatu", "chat.confirm-chat-with-dnd-user": "Ten użytkownik ustawił swój status na \"nie przeszkadzać\". Czy wciąż chcesz z nim rozmawiać?", "composer.compose": "Twórz", - "composer.show_preview": "Pokaż Podgląd", + "composer.show_preview": "Pokazuj podgląd", "composer.hide_preview": "Ukryj Podgląd", "composer.user_said_in": "%1 powiedział w %2:", "composer.user_said": "%1 powiedział:", diff --git a/public/language/pl/notifications.json b/public/language/pl/notifications.json index d973255ee8..0cd5c83cee 100644 --- a/public/language/pl/notifications.json +++ b/public/language/pl/notifications.json @@ -4,14 +4,14 @@ "see_all": "Zobacz wszystkie powiadomienia", "mark_all_read": "Oznacz wszystkie powiadomienia jako przeczytane", "back_to_home": "Wróć do %1", - "outgoing_link": "Łącze wychodzące", + "outgoing_link": "Odnośnik wychodzący", "outgoing_link_message": "Opuszczasz %1", "continue_to": "Kontynuuj do %1", "return_to": "Wróć do %1", "new_notification": "Nowe powiadomienie", "you_have_unread_notifications": "Masz nieprzeczytane powiadomienia.", "all": "Wszystko", - "topics": "Topics", + "topics": "Tematy", "replies": "Odpowiedzi", "chat": "Rozmowy", "follows": "Obserwowani", @@ -20,28 +20,28 @@ "my-flags": "Flagi przypisane mnie", "bans": "Bany", "new_message_from": "Nowa wiadomość od %1", - "upvoted_your_post_in": "%1 zagłosował na Twój post w %2", + "upvoted_your_post_in": "%1 zagłosował na twój post w %2", "upvoted_your_post_in_dual": "%1 oraz%2 za na twój post w %3.", "upvoted_your_post_in_multiple": "%1 oraz %2 innych zagłosowało za na twój post w%3.", - "moved_your_post": "%1 przeniósł Twój post do %2", + "moved_your_post": "%1 przeniósł twój post do %2", "moved_your_topic": "%1 przeniósł %2", - "user_flagged_post_in": "%1 oflagował Twój post w %2", + "user_flagged_post_in": "%1 oflagował twój post w %2", "user_flagged_post_in_dual": "%1 oraz %2 oflagowali post w %3", "user_flagged_post_in_multiple": "%1 oraz %2 innych oflagowali post w %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 oflagował (-ała) profil użytkownika (%2)", + "user_flagged_user_dual": "%1 oraz %2 oflagowali profil użytkownika (%3)", + "user_flagged_user_multiple": "%1 and %2 innych oflagowało profil użytkownika (%3)", "user_posted_to": "%1 dodał odpowiedź do %2", "user_posted_to_dual": "%1 oraz %2 dodali odpowiedzi do %3", "user_posted_to_multiple": "%1 oraz %2 innych dodali odpowiedzi do %3", "user_posted_topic": "%1 wysłał nowy temat: %2", - "user_started_following_you": "%1 zaczął Cię obserwować.", + "user_started_following_you": "%1 zaczął cię obserwować.", "user_started_following_you_dual": "%1 oraz %2 obserwuje ciebie.", "user_started_following_you_multiple": "%1 oraz %2 innych Ciebie obserwuje.", "new_register": "%1 wysłał żądanie rejestracji.", "new_register_multiple": "Są %1 nowe żądania rejestracji.", - "flag_assigned_to_you": "Flag %1 has been assigned to you", - "post_awaiting_review": "Post awaiting review", + "flag_assigned_to_you": "Flaga %1 została przypisana do ciebie", + "post_awaiting_review": "Posty oczkujące na sprawdzenie", "email-confirmed": "E-mail potwierdzony", "email-confirmed-message": "Dziękujemy za potwierdzenie maila. Twoje konto zostało aktywowane.", "email-confirm-error-message": "Wystąpił problem przy aktywacji - kod jest błędny lub przestarzały", diff --git a/public/language/pl/pages.json b/public/language/pl/pages.json index 694cbfde04..9bc1b7b4cd 100644 --- a/public/language/pl/pages.json +++ b/public/language/pl/pages.json @@ -1,15 +1,15 @@ { - "home": "Strona główna", - "unread": "Nieprzeczytane Tematy", + "home": "Strona startowa", + "unread": "Nieprzeczytane tematy", "popular-day": "Tematy popularne dzisiaj", "popular-week": "Tematy popularne w tym tygodniu", "popular-month": "Tematy popularne w tym miesiącu", "popular-alltime": "Wszystkie popularne tematy", - "recent": "Ostatnie Tematy", - "moderator-tools": "Moderator Tools", + "recent": "Ostatnie tematy", + "moderator-tools": "Narzędzia dla moderatorów", "flagged-content": "Treść oflagowanego posta", "ip-blacklist": "Czarna lista adresów IP", - "post-queue": "Post Queue", + "post-queue": "Kolejka postów", "users/online": "Dostępni Użytkownicy", "users/latest": "Nowi Użytkownicy", "users/sort-posts": "Użytkownicy z największą liczbą postów", @@ -42,7 +42,7 @@ "account/topics": "Tematy stworzone przez %1", "account/groups": "Grupy %1", "account/bookmarks": "Posty w zakładkach %1", - "account/settings": "Ustawienia Użytkownika", + "account/settings": "Ustawienia użytkownika", "account/watched": "Tematy obserwowane przez %1", "account/upvoted": "Posty za głosowane za przez %1", "account/downvoted": "Posty za głosowane przeciw przez %1", diff --git a/public/language/pl/register.json b/public/language/pl/register.json index cc6a78a5f3..4f20a4a4db 100644 --- a/public/language/pl/register.json +++ b/public/language/pl/register.json @@ -1,7 +1,7 @@ { "register": "Rejestracja", "cancel_registration": "Anuluj rejestrację", - "help.email": "Domyślnie Twój adres e-mail będzie ukryty.", + "help.email": "Domyślnie twój adres e-mail będzie ukryty.", "help.username_restrictions": "Unikalna nazwa użytkownika z min. %1 i maks. %2 znaków. Inni użytkownicy mogą Ciebie zawołać, pisząc @nazwa użytkownika.", "help.minimum_password_length": "Hasło musi mieć co najmniej %1 znaków.", "email_address": "Adres e-mail", @@ -18,6 +18,6 @@ "agree_to_terms_of_use": "Zgadzam się na powyższe warunki", "terms_of_use_error": "Musisz zaakceptować Terms of Use", "registration-added-to-queue": "Twoja rejestracja została dodana do kolejki oczekujących na akceptację. Otrzymasz email, kiedy zostanie zatwierdzona przez administratora.", - "interstitial.intro": "Potrzebujemy dodatkowych informacji, zanim przejdziemy dalej do utworzenia Twojego konta.", + "interstitial.intro": "Potrzebujemy dodatkowych informacji, zanim przejdziemy dalej do utworzenia twojego konta.", "interstitial.errors-found": "Nie mogliśmy ukończyć procesu rejestracji:" } \ No newline at end of file diff --git a/public/language/pl/reset_password.json b/public/language/pl/reset_password.json index 40cf36b5f0..6855f273c9 100644 --- a/public/language/pl/reset_password.json +++ b/public/language/pl/reset_password.json @@ -13,5 +13,5 @@ "invalid_email": "Niepoprawny adres e-mail.", "password_too_short": "Wprowadzone hasło jest zbyt krótkie, proszę wybrać inne hasło.", "passwords_do_not_match": "Wprowadzone hasła nie pasują do siebie", - "password_expired": "Twoje hasło wygasło, prosimy wybrać nowe hasło" + "password_expired": "Twoje hasło wygasło, proszę wybrać nowe hasło" } \ No newline at end of file diff --git a/public/language/pl/search.json b/public/language/pl/search.json index 5ae90bc96e..5e9cae1ae1 100644 --- a/public/language/pl/search.json +++ b/public/language/pl/search.json @@ -9,10 +9,10 @@ "in-categories": "W kategoriach", "search-child-categories": "Przeszukaj podkategorie", "has-tags": "Ma tagi", - "reply-count": "Ilość odpowiedzi", + "reply-count": "Liczba odpowiedzi", "at-least": "Przynajmniej", "at-most": "Co najwyżej", - "relevance": "Relevance", + "relevance": "Stosowność", "post-time": "Napisano", "newer-than": "Nowsze niż", "older-than": "Starsze niż", @@ -27,8 +27,8 @@ "sort-by": "Sortuj po", "last-reply-time": "Odpowiedziano ostatnio", "topic-title": "Tytuł tematu", - "number-of-replies": "Ilość odpowiedzi", - "number-of-views": "Ilość wyświetleń", + "number-of-replies": "Liczba odpowiedzi", + "number-of-views": "Liczba wyświetleń", "topic-start-date": "Data utworzenia tematu", "username": "Nazwa użytkownika", "category": "Kategoria", @@ -38,5 +38,5 @@ "clear-preferences": "Wyczyść ustawienia", "search-preferences-saved": "Ustawienia wyszukiwania zapisane", "search-preferences-cleared": "Ustawienia wyszukiwania wyczyszczone", - "show-results-as": "Pokaż wyniki jako" + "show-results-as": "Pokazuj wyniki jako" } \ No newline at end of file diff --git a/public/language/pl/success.json b/public/language/pl/success.json index b52a3bb88a..2145c329c9 100644 --- a/public/language/pl/success.json +++ b/public/language/pl/success.json @@ -1,7 +1,7 @@ { "success": "Sukces!", "topic-post": "Twój post został wysłany.", - "post-queued": "Your post is queued for approval.", + "post-queued": "Post został dodany do kolejki oczekiwania na zatwierdzania.", "authentication-successful": "Zostałeś pomyślnie zalogowany.", "settings-saved": "Ustawienia zostały zapisane." } \ No newline at end of file diff --git a/public/language/pl/topic.json b/public/language/pl/topic.json index 2848c928b6..4c98e16213 100644 --- a/public/language/pl/topic.json +++ b/public/language/pl/topic.json @@ -1,6 +1,6 @@ { "topic": "Temat", - "topic_id": "Identyfikator Tematu", + "topic_id": "Identyfikator tematu", "topic_id_placeholder": "Podaj identyfikator tematu", "no_topics_found": "Nie znaleziono żadnych tematów!", "no_posts_found": "Nie znaleziono żadnych postów.", @@ -24,18 +24,18 @@ "restore": "Przywróć", "move": "Przenieś", "fork": "Skopiuj", - "link": "Link", + "link": "Odnośnik", "share": "Udostępnij", "tools": "Narzędzia", "locked": "Zablokowany", "pinned": "Przypięte", "moved": "Przeniesione", - "bookmark_instructions": "Kliknij tutaj, by powrócić do ostatniego przeczytanego postu w tym wątku.", + "bookmark_instructions": "Kliknij tutaj, by powrócić do ostatniego przeczytanego postu w tym temacie.", "flag_title": "Zgłoś post do moderacji", "deleted_message": "Ten temat został skasowany. Tylko użytkownicy z uprawnieniami do zarządzania mogą go zobaczyć.", "following_topic.message": "Będziesz od teraz otrzymywał powiadomienia, gdy ktoś odpowie w tym temacie.", "not_following_topic.message": "Zobaczysz ten temat na liście nieprzeczytanych, ale nie otrzymasz żadnego powiadomienia dotyczącego tego tematu.", - "ignoring_topic.message": "Nie zobaczysz już tego tematu na liście nieprzeczytanych. Otrzymasz powiadomienie, kiedy zostaniesz wspomniany lub ktoś odda głos na Twój post.", + "ignoring_topic.message": "Nie zobaczysz już tego tematu na liście nieprzeczytanych. Otrzymasz powiadomienie, kiedy zostaniesz wspomniany lub ktoś odda głos na twój post.", "login_to_subscribe": "Zaloguj się, aby subskrybować ten temat.", "markAsUnreadForAll.success": "Temat oznaczony jako nieprzeczytany dla wszystkich.", "mark_unread": "Oznacz jako nieprzeczytany", @@ -48,25 +48,25 @@ "watching": "Obserwuj", "not-watching": "Nie obserwuj", "ignoring": "Ignoruj", - "watching.description": "Powiadom mnie o nowych odpowiedziach
Pokaż temat w nieprzeczytanych.", - "not-watching.description": "Nie informuj mnie o nowych odpowiedziach
Pokaż temat w nieprzeczytanych, jeśli kategoria nie jest ignorowana.", + "watching.description": "Powiadom mnie o nowych odpowiedziach
Pokazuj temat w nieprzeczytanych.", + "not-watching.description": "Nie informuj mnie o nowych odpowiedziach
Pokazuj temat w nieprzeczytanych, jeśli kategoria nie jest ignorowana.", "ignoring.description": "Nie informuj mnie o nowych odpowiedziach.
Nie pokazuj tematu w nieprzeczytanych.", - "thread_tools.title": "Narzędzia Tematu", + "thread_tools.title": "Narzędzia tematu", "thread_tools.markAsUnreadForAll": "Zaznacz wszystkie jako nieprzeczytane", - "thread_tools.pin": "Przypnij Temat", - "thread_tools.unpin": "Odepnij Temat", - "thread_tools.lock": "Zablokuj Temat", - "thread_tools.unlock": "Odblokuj Temat", - "thread_tools.move": "Przenieś Temat", + "thread_tools.pin": "Przypnij temat", + "thread_tools.unpin": "Odepnij temat", + "thread_tools.lock": "Zablokuj temat", + "thread_tools.unlock": "Odblokuj temat", + "thread_tools.move": "Przenieś temat", "thread_tools.move_all": "Przenieś wszystko", "thread_tools.select_category": "Wybierz kategorię", - "thread_tools.fork": "Skopiuj Temat", - "thread_tools.delete": "Usuń Temat", + "thread_tools.fork": "Skopiuj temat", + "thread_tools.delete": "Usuń temat", "thread_tools.delete-posts": "Usuń posty", "thread_tools.delete_confirm": "Na pewno chcesz skasować ten temat?", - "thread_tools.restore": "Przywróć Temat", + "thread_tools.restore": "Przywróć temat", "thread_tools.restore_confirm": "Na pewno chcesz przywrócić ten temat?", - "thread_tools.purge": "Wymaż Temat", + "thread_tools.purge": "Wymaż temat", "thread_tools.purge_confirm": "Na pewno chcesz wymazać ten temat?", "topic_move_success": "Temat przeniesiono do %1", "post_delete_confirm": "Na pewno chcesz usunąć ten post?", @@ -79,11 +79,11 @@ "bookmarks": "Zakładki", "bookmarks.has_no_bookmarks": "Nie dodałeś jeszcze żadnego postu do zakładek.", "loading_more_posts": "Załaduj więcej postów", - "move_topic": "Przenieś Temat", - "move_topics": "Przenieś Tematy", + "move_topic": "Przenieś temat", + "move_topics": "Przenieś tematy", "move_post": "Przenieś post", "post_moved": "Post przeniesiony!", - "fork_topic": "Skopiuj Temat", + "fork_topic": "Skopiuj temat", "fork_topic_instruction": "Zaznacz posty, które chcesz sklonować", "fork_no_pids": "Nie zaznaczyłeś żadnych postów!", "fork_pid_count": "wybrano %1 post(-ów)", @@ -94,7 +94,7 @@ "composer.discard": "Odrzuć", "composer.submit": "Wyślij", "composer.replying_to": "Odpowiadanie na %1", - "composer.new_topic": "Nowy Temat", + "composer.new_topic": "Nowy temat", "composer.uploading": "wysyłanie...", "composer.thumb_url_label": "Wklej adres miniaturki tematu", "composer.thumb_title": "Dodaj miniaturkę do tego tematu", @@ -112,7 +112,7 @@ "most_votes": "Najwięcej głosów", "most_posts": "Najwięcej postów", "stale.title": "Stworzyć nowy temat?", - "stale.warning": "Wątek, na który chcesz udzielić odpowiedzi, jest przestarzały. Czy nie chciałbyś utworzyć nowego tematu, zamiast udzielać się w tym?", + "stale.warning": "Temat, na który chcesz udzielić odpowiedzi, jest przestarzały. Czy nie chciałbyś utworzyć nowego tematu, zamiast udzielać się w tym?", "stale.create": "Stwórz nowy temat", "stale.reply_anyway": "Odpowiedź na ten temat mimo tego", "link_back": "Re: [%1](%2)" diff --git a/public/language/pl/uploads.json b/public/language/pl/uploads.json index f29dc364f2..8049542494 100644 --- a/public/language/pl/uploads.json +++ b/public/language/pl/uploads.json @@ -1,6 +1,6 @@ { "uploading-file": "Wysyłanie pliku...", - "select-file-to-upload": "Zaznacz plik do wgrania!", - "upload-success": "Pomyślnie załadowano plik!", + "select-file-to-upload": "Zaznacz plik do wysłania!", + "upload-success": "Pomyślnie wysłano plik!", "maximum-file-size": "Maksymalna wielkość %1 kb" } \ No newline at end of file diff --git a/public/language/pl/user.json b/public/language/pl/user.json index 6eee599fba..d15b6a6394 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -22,7 +22,7 @@ "lastonline": "Ostatnio online", "profile": "Profil", "profile_views": "Wyświetleń", - "reputation": "Reputacji", + "reputation": "Reputacja", "bookmarks": "Zakładki", "watched": "Obserwowane", "followers": "Śledzących", @@ -46,7 +46,7 @@ "default_picture": "Domyślna ikona", "uploaded_picture": "Przesłane zdjęcie", "upload_new_picture": "Prześlij nowe zdjęcie", - "upload_new_picture_from_url": "Wgraj zdjęcie z adresu URL", + "upload_new_picture_from_url": "Prześlij nowe zdjęcie z adresu URL", "current_password": "Obecne hasło", "change_password": "Zmień hasło", "change_password_error": "Błędne hasło!", @@ -63,11 +63,11 @@ "weak_password": "Słabe hasło.", "upload_picture": "Prześlij zdjęcie", "upload_a_picture": "Prześlij zdjęcie", - "remove_uploaded_picture": "Usuń Przesłane Zdjęcie", + "remove_uploaded_picture": "Usuń przesłane zdjęcie", "upload_cover_picture": "Prześlij zdjęcie tła", "remove_cover_picture_confirm": "Czy jesteś pewny, że chcesz usunąć zdjęcie okładki?", "crop_picture": "Przytnij obrazek", - "upload_cropped_picture": "Przytnij i wrzuć", + "upload_cropped_picture": "Przytnij i prześlij", "settings": "Ustawienia", "show_email": "Wyświetlaj mój adres e-mail", "show_fullname": "Wyświetlaj moją pełną nazwę", @@ -101,7 +101,7 @@ "notification-sound": "Dźwięk powiadomienia", "no-sound": "Bez dźwięku", "browsing": "Ustawienia szukania", - "open_links_in_new_tab": "Otwieraj linki wychodzące w nowej karcie", + "open_links_in_new_tab": "Otwieraj odnośniki wychodzące w nowej karcie", "enable_topic_searching": "Włącz szukanie w temacie", "topic_search_help": "Jeśli włączone, wyszukiwanie w tematach zastąpi przeglądarkowe przeszukiwanie strony i pozwoli na przeszukanie całego tematu, zamiast ograniczonej zawartości aktualnie wyświetlonej na ekranie", "delay_image_loading": "Opóźnienie ładowania zdjęcia", diff --git a/public/language/pl/users.json b/public/language/pl/users.json index fbe4957dbe..65898ab645 100644 --- a/public/language/pl/users.json +++ b/public/language/pl/users.json @@ -11,10 +11,10 @@ "online-only": "Tylko dostępny", "invite": "Zaproś", "invitation-email-sent": "Email z zaproszeniem został wysłany do %1", - "user_list": "Lista Użytkowników", - "recent_topics": "Ostatnie Tematy", - "popular_topics": "Popularne Tematy", - "unread_topics": "Nieprzeczytane Tematy", + "user_list": "Lista użytkowników", + "recent_topics": "Ostatnie tematy", + "popular_topics": "Popularne tematy", + "unread_topics": "Nieprzeczytane tematy", "categories": "Kategorie", "tags": "Tagi", "no-users-found": "Nie znaleziono pasujących użytkowników!" From 3227e778a262453106ca0592b6dd912d4f7e51a0 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Wed, 20 Sep 2017 09:23:50 +0000 Subject: [PATCH 17/50] Latest translations and fallbacks --- public/language/cs/admin/manage/users.json | 48 ++++++++++---------- public/language/cs/admin/settings/email.json | 4 +- public/language/pl/admin/manage/users.json | 4 +- public/language/pl/error.json | 2 +- public/language/pl/global.json | 6 +-- public/language/pl/modules.json | 10 ++-- public/language/pl/notifications.json | 8 ++-- public/language/pl/pages.json | 4 +- public/language/pl/search.json | 2 +- public/language/pl/user.json | 6 +-- public/language/pl/users.json | 2 +- 11 files changed, 48 insertions(+), 48 deletions(-) diff --git a/public/language/cs/admin/manage/users.json b/public/language/cs/admin/manage/users.json index ce46543f3a..c3d62a8f28 100644 --- a/public/language/cs/admin/manage/users.json +++ b/public/language/cs/admin/manage/users.json @@ -9,7 +9,7 @@ "ban": "Zakázat uživatele", "temp-ban": "Dočasně zakázat uživatele", "unban": "Zrušit zákaz uživatele", - "reset-lockout": "Reset Lockout", + "reset-lockout": "Obnovit uzamčení", "reset-flags": "Obnovit označení", "delete": "Odstranit uživatele", "purge": "Odstranit uživatele a obsah", @@ -42,42 +42,42 @@ "users.uid": "uid", "users.username": "jméno", "users.email": "e-mail", - "users.postcount": "postcount", - "users.reputation": "reputation", - "users.flags": "flags", - "users.joined": "joined", - "users.last-online": "last online", - "users.banned": "banned", + "users.postcount": "počet příspěvků", + "users.reputation": "reputace", + "users.flags": "označení", + "users.joined": "připojil", + "users.last-online": "poslední přihlášení", + "users.banned": "zakázán", "create.username": "Uživatelské jméno", "create.email": "E-mail", "create.email-placeholder": "E-mail tohoto uživatele", "create.password": "Heslo", - "create.password-confirm": "Potvrzení hesla", + "create.password-confirm": "Potvrdit heslo", "temp-ban.length": "Trvání zákazu", "temp-ban.reason": "Důvod (volitelné)", "temp-ban.hours": "Hodiny", "temp-ban.days": "Dny", - "temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.", + "temp-ban.explanation": "Zadejte délku trvání pro zákaz. Nezapomeňte, že 0 je považována jako trvalý zákaz.", - "alerts.confirm-ban": "Do you really want to ban this user permanently?", - "alerts.confirm-ban-multi": "Do you really want to ban these users permanently?", - "alerts.ban-success": "User(s) banned!", - "alerts.button-ban-x": "Ban %1 user(s)", - "alerts.unban-success": "User(s) unbanned!", - "alerts.lockout-reset-success": "Lockout(s) reset!", - "alerts.flag-reset-success": "Flags(s) reset!", - "alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!", - "alerts.make-admin-success": "User(s) are now administrators.", - "alerts.confirm-remove-admin": "Do you really want to remove admins?", - "alerts.remove-admin-success": "User(s) are no longer administrators.", - "alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?", + "alerts.confirm-ban": "Opravdu chcete trvale zakázat tohoto uživatele?", + "alerts.confirm-ban-multi": "Opravdu chcete trvale zakázat tyto uživatele?", + "alerts.ban-success": "Uživatel byl zakázán.", + "alerts.button-ban-x": "Zakázat %1 uživatele.", + "alerts.unban-success": "Zákaz uživatele byl zrušen.", + "alerts.lockout-reset-success": "Uzamčení bylo obnoveno.", + "alerts.flag-reset-success": "Označení bylo obnoveno.", + "alerts.no-remove-yourself-admin": "Sebe jako správce nemůžete vyjmout.", + "alerts.make-admin-success": "Uživatel/é je/jsou nyní jako správce/i.", + "alerts.confirm-remove-admin": "Opravdu chcete vyjmout správce?", + "alerts.remove-admin-success": "Uživatel není nadále správcem.", + "alerts.confirm-validate-email": "Chcete schválit e-mailové adresy těchto uživatelů?", "alerts.validate-email-success": "E-maily byly ověřeny", "alerts.password-reset-confirm": "Chcete poslat těmto uživatelům e-mail pro resetování hesla?", - "alerts.confirm-delete": "Warning!
Do you really want to delete user(s)?
This action is not reversable! Only the user account will be deleted, their posts and topics will remain.", - "alerts.delete-success": "User(s) Deleted!", - "alerts.confirm-purge": "Warning!
Do you really want to delete user(s) and their content?
This action is not reversable! All user data and content will be erased!", + "alerts.confirm-delete": "Upozornění
Opravdu chcete odstranit uživatele?
Tento úkon se nedá vrátit. Budou odstraněni jen uživatelé jako takový, jejich příspěvky a témata zůstanou.", + "alerts.delete-success": "Uživatel byl odstraněn.", + "alerts.confirm-purge": "Upozornění
Opravdu chcete odstranit uživatele a jeho obsah?
Tento úkon je nevratný. Všechna uživatelská data a obsah bude smazán.", "alerts.create": "Vytvořit uživatele", "alerts.button-create": "Vytvořit", "alerts.button-cancel": "Zrušit", diff --git a/public/language/cs/admin/settings/email.json b/public/language/cs/admin/settings/email.json index 4b6dbb5b1e..db1ac67c25 100644 --- a/public/language/cs/admin/settings/email.json +++ b/public/language/cs/admin/settings/email.json @@ -12,11 +12,11 @@ "smtp-transport.service-custom": "Uživatelský služba", "smtp-transport.service-help": "Pro použití známých informací, vyberte název služby. Nebo vyberte „uživatelskou službu” a zadejte detaily níže.", "smtp-transport.gmail-warning1": "Někdy služba Gmail nefunguje správně s účty s nejvyšším zabezpečením. V těchto případech, musíte nakonfigurovat váš Gmail účet pro méně zabezpečené aplikace.", - "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", + "smtp-transport.gmail-warning2": "Další informace o tomto řešení, konzultujte s NodeMailer.Alternativou je použití e-mailového rozšíření třetích stran jako je SendGrid, Mailgun atd.Dostupné rozšíření zde.", "smtp-transport.host": "Hostitel SMTP", "smtp-transport.port": "Port SMTP", "smtp-transport.username": "Uživatelské jméno", - "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", + "smtp-transport.username-help": "Pro službu Gmail, zadejte plnou e-mailovou adresu, zvláště, používáte-li spravovanou doménu Google Apps.", "smtp-transport.password": "Heslo", "template": "Upravit šablonu e-mailu", diff --git a/public/language/pl/admin/manage/users.json b/public/language/pl/admin/manage/users.json index 492793e4a1..4732e62cf6 100644 --- a/public/language/pl/admin/manage/users.json +++ b/public/language/pl/admin/manage/users.json @@ -21,7 +21,7 @@ "pills.unvalidated": "Niezweryfikowany", "pills.no-posts": "Brak postów", "pills.top-posters": "Najwięcej postów", - "pills.top-rep": "Największa reputacja", + "pills.top-rep": "Najlepsza reputacja", "pills.inactive": "Nieaktywny(-a)", "pills.flagged": "Najwięcej flag", "pills.banned": "Zbanowany(-a)", @@ -43,7 +43,7 @@ "users.username": "Nazwa użytkownika", "users.email": "Adres e-mail", "users.postcount": "Liczba postów", - "users.reputation": "Reputacja", + "users.reputation": "reputacja", "users.flags": "Flagi", "users.joined": "Dołączono", "users.last-online": "Ostatnio online", diff --git a/public/language/pl/error.json b/public/language/pl/error.json index 6d4c4f58f0..2fb786d466 100644 --- a/public/language/pl/error.json +++ b/public/language/pl/error.json @@ -104,7 +104,7 @@ "signature-too-long": "Przepraszamy, twój podpis nie może być dłuższy niż %1 znaków.", "about-me-too-long": "Przepraszamy, twoja informacja o sobie nie może być dłuższa niż %1 znaków.", "cant-chat-with-yourself": "Nie możesz rozmawiać sam ze sobą!", - "chat-restricted": "Ten użytkownik ograniczył swoje rozmowy. Musi cię śledzić, aby kontakt z nim był możliwy", + "chat-restricted": "Ten użytkownik ograniczył swoje wiadomości czat. Musi cię śledzić, aby kontakt z nim był możliwy", "chat-disabled": "System rozmów jest wyłączony", "too-many-messages": "Wysłałeś zbyt wiele wiadomości, prosimy chwilę poczekać.", "invalid-chat-message": "Nieprawidłowa wiadomość", diff --git a/public/language/pl/global.json b/public/language/pl/global.json index 2a1ecc81ec..dff135f319 100644 --- a/public/language/pl/global.json +++ b/public/language/pl/global.json @@ -32,7 +32,7 @@ "header.popular": "Popularne", "header.users": "Użytkownicy", "header.groups": "Grupy", - "header.chats": "Rozmowy", + "header.chats": "Czaty", "header.notifications": "Powiadomienia", "header.search": "Szukaj", "header.profile": "Profil", @@ -68,8 +68,8 @@ "posted_in_by": "napisane w %1 przez %2", "posted_in_ago": "wysłany w %1 %2", "posted_in_ago_by": "wysłany w %1 %2 przez %3", - "user_posted_ago": "%1 wysłał %2", - "guest_posted_ago": "Gość wysłał %1", + "user_posted_ago": "%1 napisał %2", + "guest_posted_ago": "Gość napisał %1", "last_edited_by": "ostatnio edytowany przez %1", "norecentposts": "Brak ostatnich postów", "norecenttopics": "Brak Ostatnich tematów", diff --git a/public/language/pl/modules.json b/public/language/pl/modules.json index bcf0c67bff..1e027f8db6 100644 --- a/public/language/pl/modules.json +++ b/public/language/pl/modules.json @@ -5,14 +5,14 @@ "chat.no_active": "Nie prowadzisz obecnie żadnych rozmów.", "chat.user_typing": "%1 pisze...", "chat.user_has_messaged_you": "%1 napisał do Ciebie", - "chat.see_all": "Zobacz wszystkie rozmowy", - "chat.mark_all_read": "Oznacz wszystkie rozmowy jako przeczytane", + "chat.see_all": "Zobacz wszystkie czaty", + "chat.mark_all_read": "Oznacz wszystkie czaty jako przeczytane", "chat.no-messages": "Wybierz odbiorcę, by wyświetlić historię rozmów.", "chat.no-users-in-room": "Brak użytkowników w tym pokoju", - "chat.recent-chats": "Ostatnie rozmowy", + "chat.recent-chats": "Ostatnie czaty", "chat.contacts": "Kontakty", "chat.message-history": "Historia wiadomości", - "chat.pop-out": "Otwórz rozmowę w nowym oknie", + "chat.pop-out": "Otwórz czat w nowym oknie", "chat.minimize": "Ukryj", "chat.maximize": "Maksymalizuj", "chat.seven_days": "7 dni", @@ -21,7 +21,7 @@ "chat.delete_message_confirm": "Jesteś pewny, że chcesz usunąć tą wiadomość?", "chat.add-users-to-room": "Dodaj użytkownika do pokoju czatu", "chat.confirm-chat-with-dnd-user": "Ten użytkownik ustawił swój status na \"nie przeszkadzać\". Czy wciąż chcesz z nim rozmawiać?", - "composer.compose": "Twórz", + "composer.compose": "Skomponuj", "composer.show_preview": "Pokazuj podgląd", "composer.hide_preview": "Ukryj Podgląd", "composer.user_said_in": "%1 powiedział w %2:", diff --git a/public/language/pl/notifications.json b/public/language/pl/notifications.json index 0cd5c83cee..594ad62bb4 100644 --- a/public/language/pl/notifications.json +++ b/public/language/pl/notifications.json @@ -13,7 +13,7 @@ "all": "Wszystko", "topics": "Tematy", "replies": "Odpowiedzi", - "chat": "Rozmowy", + "chat": "Czaty", "follows": "Obserwowani", "upvote": "Głosy na tak", "new-flags": "Nowe flagi", @@ -34,12 +34,12 @@ "user_posted_to": "%1 dodał odpowiedź do %2", "user_posted_to_dual": "%1 oraz %2 dodali odpowiedzi do %3", "user_posted_to_multiple": "%1 oraz %2 innych dodali odpowiedzi do %3", - "user_posted_topic": "%1 wysłał nowy temat: %2", + "user_posted_topic": "%1 stworzył(-a) nowy temat: %2", "user_started_following_you": "%1 zaczął cię obserwować.", "user_started_following_you_dual": "%1 oraz %2 obserwuje ciebie.", "user_started_following_you_multiple": "%1 oraz %2 innych Ciebie obserwuje.", - "new_register": "%1 wysłał żądanie rejestracji.", - "new_register_multiple": "Są %1 nowe żądania rejestracji.", + "new_register": "%1 wysłał(-a) żądanie rejestracji.", + "new_register_multiple": "%1 żądania rejestracji oczekują na sprawdzenie.", "flag_assigned_to_you": "Flaga %1 została przypisana do ciebie", "post_awaiting_review": "Posty oczkujące na sprawdzenie", "email-confirmed": "E-mail potwierdzony", diff --git a/public/language/pl/pages.json b/public/language/pl/pages.json index 9bc1b7b4cd..e8d7be8ef3 100644 --- a/public/language/pl/pages.json +++ b/public/language/pl/pages.json @@ -27,8 +27,8 @@ "categories": "Kategorie", "groups": "Grupy", "group": "Grupa %1", - "chats": "Rozmowy", - "chat": "Rozmowa z %1", + "chats": "Czaty", + "chat": "Czat z %1", "flags": "Flagi", "flag-details": "Flag %1 Szczegóły", "account/edit": "Edytowanie \"%1\"", diff --git a/public/language/pl/search.json b/public/language/pl/search.json index 5e9cae1ae1..b801028dca 100644 --- a/public/language/pl/search.json +++ b/public/language/pl/search.json @@ -1,7 +1,7 @@ { "results_matching": "%1 wyników pasujących do \"%2\", (%3 sekund)", "no-matches": "Nie znaleziono pasujących wyników", - "advanced-search": "Wyszukiwanie Zaawansowane", + "advanced-search": "Wyszukiwanie zaawansowane", "in": "w", "titles": "Tytuły", "titles-posts": "Tytuły i posty", diff --git a/public/language/pl/user.json b/public/language/pl/user.json index d15b6a6394..b9cadc2434 100644 --- a/public/language/pl/user.json +++ b/public/language/pl/user.json @@ -31,8 +31,8 @@ "signature": "Sygnatura", "birthday": "Urodziny", "chat": "Rozmawiaj", - "chat_with": "Kontynuuj rozmowę z %1", - "new_chat_with": "Rozpocznij rozmowę z %1", + "chat_with": "Kontynuuj czat z %1", + "new_chat_with": "Rozpocznij czat z %1", "flag-profile": "Zgłoś profil", "follow": "Śledź", "unfollow": "Przestań śledzić", @@ -71,7 +71,7 @@ "settings": "Ustawienia", "show_email": "Wyświetlaj mój adres e-mail", "show_fullname": "Wyświetlaj moją pełną nazwę", - "restrict_chats": "Pozwalaj tylko na rozmowy z użytkownikami, których śledzę", + "restrict_chats": "Pozwalaj tylko na wiadomości czat użytkownikami, których śledzę", "digest_label": "Przysyłaj okresowe podsumowanie wiadomości na forum", "digest_description": "Subskrybuj, aby otrzymywać maile dla tego forum (nowe powiadomienia i tematy) zgodnie z ustalonym harmonogramem", "digest_off": "Wyłączone", diff --git a/public/language/pl/users.json b/public/language/pl/users.json index 65898ab645..c18334f21e 100644 --- a/public/language/pl/users.json +++ b/public/language/pl/users.json @@ -1,7 +1,7 @@ { "latest_users": "Nowi użytkownicy", "top_posters": "Najwięcej postów", - "most_reputation": "Największa reputacja", + "most_reputation": "Najlepsza reputacja", "most_flags": "Najwięcej flag", "search": "Szukaj", "enter_username": "Wpisz wyszukiwaną nazwę użytkownika", From 852396e60ddd22c7430874999939c8f650e28e44 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Thu, 21 Sep 2017 13:50:24 -0400 Subject: [PATCH 18/50] closes #5903 --- src/controllers/recent.js | 9 ++++++++- src/routes/feeds.js | 31 +++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/controllers/recent.js b/src/controllers/recent.js index 0849c4f576..7d95c2db2b 100644 --- a/src/controllers/recent.js +++ b/src/controllers/recent.js @@ -22,7 +22,7 @@ recentController.get = function (req, res, next) { var cid = req.query.cid; var filter = req.params.filter || ''; var categoryData; - + var rssToken; if (!validFilter[filter]) { return next(); } @@ -36,9 +36,13 @@ recentController.get = function (req, res, next) { watchedCategories: function (next) { helpers.getWatchedCategories(req.uid, cid, next); }, + rssToken: function (next) { + user.auth.getFeedToken(req.uid, next); + }, }, next); }, function (results, next) { + rssToken = results.rssToken; settings = results.settings; categoryData = results.watchedCategories; @@ -54,6 +58,9 @@ recentController.get = function (req, res, next) { data.set = 'topics:recent'; data['feeds:disableRSS'] = parseInt(meta.config['feeds:disableRSS'], 10) === 1; data.rssFeedUrl = nconf.get('relative_path') + '/recent.rss'; + if (req.uid) { + data.rssFeedUrl += '?uid=' + req.uid + '&token=' + rssToken; + } data.title = '[[pages:recent]]'; data.filters = [{ name: '[[unread:all-topics]]', diff --git a/src/routes/feeds.js b/src/routes/feeds.js index 4cfa52c373..5aaf3590c2 100644 --- a/src/routes/feeds.js +++ b/src/routes/feeds.js @@ -185,13 +185,28 @@ function generateForRecent(req, res, next) { if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) { return controllers404.send404(req, res); } - generateForTopics({ - uid: req.uid, - title: 'Recently Active Topics', - description: 'A list of topics that have been active within the past 24 hours', - feed_url: '/recent.rss', - site_url: '/recent', - }, 'topics:recent', req, res, next); + + async.waterfall([ + function (next) { + if (req.query.token && req.query.uid) { + db.getObjectField('user:' + req.query.uid, 'rss_token', next); + } else { + next(null, null); + } + }, + function (token, next) { + next(null, token && token === req.query.token ? req.query.uid : req.uid); + }, + function (uid, next) { + generateForTopics({ + uid: uid, + title: 'Recently Active Topics', + description: 'A list of topics that have been active within the past 24 hours', + feed_url: '/recent.rss', + site_url: '/recent', + }, 'topics:recent', req, res, next); + }, + ], next); } function generateForPopular(req, res, next) { @@ -230,7 +245,7 @@ function generateForTopics(options, set, req, res, next) { var stop = options.hasOwnProperty('stop') ? options.stop : 19; async.waterfall([ function (next) { - topics.getTopicsFromSet(set, req.uid, start, stop, next); + topics.getTopicsFromSet(set, options.uid, start, stop, next); }, function (data, next) { generateTopicsFeed(options, data.topics, next); From 8276e202544ed3ea8328b4169fc275078e182c79 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Thu, 21 Sep 2017 14:30:12 -0400 Subject: [PATCH 19/50] closes #5937 --- public/src/admin/extend/widgets.js | 31 ++++++++++++++---------------- src/socket.io/admin.js | 4 ++-- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/public/src/admin/extend/widgets.js b/public/src/admin/extend/widgets.js index 4394ee9a04..be7bf72e83 100644 --- a/public/src/admin/extend/widgets.js +++ b/public/src/admin/extend/widgets.js @@ -75,8 +75,7 @@ define('admin/extend/widgets', ['jqueryui'], function () { $('#save').on('click', saveWidgets); function saveWidgets() { - var total = $('#widgets [data-template][data-location]').length; - + var saveData = []; $('#widgets [data-template][data-location]').each(function (i, el) { el = $(el); @@ -112,26 +111,24 @@ define('admin/extend/widgets', ['jqueryui'], function () { }); }); - socket.emit('admin.widgets.set', { + saveData.push({ template: template, location: location, widgets: widgets, - }, function (err) { - total -= 1; + }); + }); - if (err) { - app.alertError(err.message); - } + socket.emit('admin.widgets.set', saveData, function (err) { + if (err) { + app.alertError(err.message); + } - if (total === 0) { - app.alert({ - alert_id: 'admin:widgets', - type: 'success', - title: '[[admin/extend/widgets:alert.updated]]', - message: '[[admin/extend/widgets:alert.update-success]]', - timeout: 2500, - }); - } + app.alert({ + alert_id: 'admin:widgets', + type: 'success', + title: '[[admin/extend/widgets:alert.updated]]', + message: '[[admin/extend/widgets:alert.update-success]]', + timeout: 2500, }); }); } diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index 322108330b..7e0eb64d98 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -149,11 +149,11 @@ SocketAdmin.plugins.upgrade = function (socket, data, callback) { }; SocketAdmin.widgets.set = function (socket, data, callback) { - if (!data) { + if (!Array.isArray(data)) { return callback(new Error('[[error:invalid-data]]')); } - widgets.setArea(data, callback); + async.eachSeries(data, widgets.setArea, callback); }; SocketAdmin.config.set = function (socket, data, callback) { From 859b353097b119ba3f9723231f4341e350e901af Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Thu, 21 Sep 2017 14:32:40 -0400 Subject: [PATCH 20/50] up widget essentials --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e09a50a27c..1ffc42720e 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "nodebb-theme-persona": "6.0.1", "nodebb-theme-slick": "1.1.1", "nodebb-theme-vanilla": "7.0.1", - "nodebb-widget-essentials": "3.0.4", + "nodebb-widget-essentials": "3.0.5", "nodemailer": "4.1.0", "passport": "^0.3.0", "passport-local": "1.0.0", From c49837143cbe38e42660371032bb8ce0501fef25 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Thu, 21 Sep 2017 14:51:00 -0400 Subject: [PATCH 21/50] fix test --- test/socket.io.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/socket.io.js b/test/socket.io.js index 547895f970..76f7ae6a72 100644 --- a/test/socket.io.js +++ b/test/socket.io.js @@ -513,7 +513,7 @@ describe('socket.io', function () { }); it('should error with invalid data', function (done) { - var data = { template: 'global', location: 'sidebar', widgets: [{ widget: 'html', data: { html: 'test', title: 'test', container: '' } }] }; + var data = [{ template: 'global', location: 'sidebar', widgets: [{ widget: 'html', data: { html: 'test', title: 'test', container: '' } }] }]; socketAdmin.widgets.set({ uid: adminUid }, data, function (err) { assert.ifError(err); db.getObjectField('widgets:global', 'sidebar', function (err, widgetData) { From 2185480c4e352a61980030693bbd9073a5612e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 21 Sep 2017 19:25:54 -0400 Subject: [PATCH 22/50] switch to eachSeries --- src/privileges/categories.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/privileges/categories.js b/src/privileges/categories.js index 9c5c9f9f51..69aec85135 100644 --- a/src/privileges/categories.js +++ b/src/privileges/categories.js @@ -307,7 +307,7 @@ module.exports = function (privileges) { }; function giveOrRescind(method, privileges, cid, groupName, callback) { - async.each(privileges, function (privilege, next) { + async.eachSeries(privileges, function (privilege, next) { method('cid:' + cid + ':privileges:groups:' + privilege, groupName, next); }, callback); } From f9899881789f71cdcd667c840c708a8ff19149eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 22 Sep 2017 10:26:03 -0400 Subject: [PATCH 23/50] closes #1668 --- src/controllers/topics.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/controllers/topics.js b/src/controllers/topics.js index d560fbcb2a..347ae8e847 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -293,6 +293,10 @@ function addTags(topicData, req, res) { type: 'application/rss+xml', href: topicData.rssFeedUrl, }, + { + rel: 'canonical', + href: nconf.get('url') + '/topic/' + topicData.slug, + }, ]; if (topicData.category) { From dc87d7fc0f86d282553e40ba0f50d1bd4de9c3c1 Mon Sep 17 00:00:00 2001 From: Peter Jaszkowiak Date: Sat, 23 Sep 2017 12:51:20 -0600 Subject: [PATCH 24/50] Use .js instead of .jst Fix #5934 --- public/src/ajaxify.js | 2 +- src/admin/search.js | 4 ++-- src/controllers/admin/settings.js | 4 ++-- src/meta/templates.js | 2 +- src/middleware/index.js | 4 ++-- src/views/500-embed.tpl | 2 +- src/webserver.js | 2 +- test/search-admin.js | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index c655cdca96..c18922485b 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -330,7 +330,7 @@ $(document).ready(function () { }; ajaxify.loadTemplate = function (template, callback) { - require([config.relative_path + '/assets/templates/' + template + '.jst'], callback, function (err) { + require([config.relative_path + '/assets/templates/' + template + '.js'], callback, function (err) { console.error('Unable to load template: ' + template); throw err; }); diff --git a/src/admin/search.js b/src/admin/search.js index dfc9034658..1803f3298c 100644 --- a/src/admin/search.js +++ b/src/admin/search.js @@ -14,11 +14,11 @@ function filterDirectories(directories) { // get the relative path return dir.replace(/^.*(admin.*?).tpl$/, '$1'); }).filter(function (dir) { - // exclude .jst files + // exclude .js files // exclude partials // only include subpaths // exclude category.tpl, group.tpl, category-analytics.tpl - return !dir.endsWith('.jst') && + return !dir.endsWith('.js') && !dir.includes('/partials/') && /\/.*\//.test(dir) && !/manage\/(category|group|category-analytics)$/.test(dir); diff --git a/src/controllers/admin/settings.js b/src/controllers/admin/settings.js index 0410d4ea9e..28322892f3 100644 --- a/src/controllers/admin/settings.js +++ b/src/controllers/admin/settings.js @@ -35,9 +35,9 @@ function renderEmail(req, res, next) { file.walk(emailsPath, next); }, function (emails, next) { - // exclude .jst files + // exclude .js files emails = emails.filter(function (email) { - return !email.endsWith('.jst'); + return !email.endsWith('.js'); }); async.map(emails, function (email, next) { diff --git a/src/meta/templates.js b/src/meta/templates.js index 18991fc149..4f9f59d861 100644 --- a/src/meta/templates.js +++ b/src/meta/templates.js @@ -76,7 +76,7 @@ Templates.compile = function (callback) { }, next); }, function (next) { - rimraf(path.join(viewsPath, '*.jst'), next); + rimraf(path.join(viewsPath, '*.js'), next); }, function (next) { winston.verbose('[meta/templates] Successfully compiled templates.'); diff --git a/src/middleware/index.js b/src/middleware/index.js index 511ae1ddd4..507878dc0c 100644 --- a/src/middleware/index.js +++ b/src/middleware/index.js @@ -192,7 +192,7 @@ middleware.delayLoading = function (req, res, next) { var viewsDir = nconf.get('views_dir'); middleware.templatesOnDemand = function (req, res, next) { var filePath = req.filePath || path.join(viewsDir, req.path); - if (!filePath.endsWith('.jst')) { + if (!filePath.endsWith('.js')) { return next(); } @@ -205,7 +205,7 @@ middleware.templatesOnDemand = function (req, res, next) { return next(); } - fs.readFile(filePath.replace(/\.jst$/, '.tpl'), cb); + fs.readFile(filePath.replace(/\.js$/, '.tpl'), cb); }, function (source, cb) { Benchpress.precompile({ diff --git a/src/views/500-embed.tpl b/src/views/500-embed.tpl index b1045d431f..f5258cb8db 100644 --- a/src/views/500-embed.tpl +++ b/src/views/500-embed.tpl @@ -1,5 +1,5 @@ habitant morbi'), - 'Pellentesque tristique senectus' + - ' habitant morbi' - ); + search.sanitize('Pellentesque tristique senectus' + + ' habitant morbi'), + 'Pellentesque tristique senectus' + + ' habitant morbi' + ); done(); }); it('should remove all tags', function (done) { assert.equal( - search.sanitize('

Pellentesque habitant morbi tristique senectus' + - 'Aenean vitae est.Mauris eleifend leo.

'), - 'Pellentesque habitant morbi tristique senectus' + - 'Aenean vitae est.Mauris eleifend leo.' - ); + search.sanitize('

Pellentesque habitant morbi tristique senectus' + + 'Aenean vitae est.Mauris eleifend leo.

'), + 'Pellentesque habitant morbi tristique senectus' + + 'Aenean vitae est.Mauris eleifend leo.' + ); done(); }); }); @@ -67,24 +67,20 @@ describe('admin search', function () { describe('simplify', function () { it('should remove all mustaches', function (done) { assert.equal( - search.simplify( - 'Pellentesque tristique {{senectus}}habitant morbi' + - 'liquam tincidunt {mauris.eu}risus' - ), - 'Pellentesque tristique habitant morbi' + - 'liquam tincidunt risus' - ); + search.simplify('Pellentesque tristique {{senectus}}habitant morbi' + + 'liquam tincidunt {mauris.eu}risus'), + 'Pellentesque tristique habitant morbi' + + 'liquam tincidunt risus' + ); done(); }); it('should collapse all whitespace', function (done) { assert.equal( - search.simplify( - 'Pellentesque tristique habitant morbi' + - ' \n\n liquam tincidunt mauris eu risus.' - ), - 'Pellentesque tristique habitant morbi' + - '\nliquam tincidunt mauris eu risus.' - ); + search.simplify('Pellentesque tristique habitant morbi' + + ' \n\n liquam tincidunt mauris eu risus.'), + 'Pellentesque tristique habitant morbi' + + '\nliquam tincidunt mauris eu risus.' + ); done(); }); }); diff --git a/test/socket.io.js b/test/socket.io.js index 76f7ae6a72..eb7489ef8a 100644 --- a/test/socket.io.js +++ b/test/socket.io.js @@ -72,7 +72,8 @@ describe('socket.io', function () { helpers.connectSocketIO(res, function (err, _io) { io = _io; assert.ifError(err); - done(err); + + done(); }); }); }); diff --git a/test/topics.js b/test/topics.js index 0592b9d030..f8c1ee5d16 100644 --- a/test/topics.js +++ b/test/topics.js @@ -654,8 +654,8 @@ describe('Topic\'s', function () { function (next) { topicPids = replies.map(function (reply) { return reply.pid; }); socketTopics.bookmark({ uid: topic.userId }, { tid: newTopic.tid, index: originalBookmark }, next); - }], - done); + }, + ], done); }); it('should fail with invalid data', function (done) { @@ -711,7 +711,8 @@ describe('Topic\'s', function () { 'Fork test, no bookmark update', topicPids.slice(1, 3), newTopic.tid, - next); + next + ); }, function (forkedTopicData, next) { topics.getUserBookmark(newTopic.tid, topic.userId, next); From b70f3285209dc0db2d8cf46604bc9f3c9a92a286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 2 Oct 2017 19:27:42 -0400 Subject: [PATCH 29/50] closes #5948 --- src/meta/blacklist.js | 7 +++++-- test/blacklist.js | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/meta/blacklist.js b/src/meta/blacklist.js index 20f0e441ff..31af5f9eee 100644 --- a/src/meta/blacklist.js +++ b/src/meta/blacklist.js @@ -71,8 +71,11 @@ Blacklist.test = function (clientIp, callback) { Blacklist._rules.ipv4.indexOf(clientIp) === -1 && // not explicitly specified in ipv4 list Blacklist._rules.ipv6.indexOf(clientIp) === -1 && // not explicitly specified in ipv6 list !Blacklist._rules.cidr.some(function (subnet) { - return addr.match(ipaddr.parseCIDR(subnet)); - // return ip.cidrSubnet(subnet).contains(clientIp); + var cidr = ipaddr.parseCIDR(subnet); + if (addr.kind() !== cidr[0].kind()) { + return false; + } + return addr.match(cidr); }) // not in a blacklisted IPv4 or IPv6 cidr range ) { plugins.fireHook('filter:blacklist.test', { // To return test failure, pass back an error in callback diff --git a/test/blacklist.js b/test/blacklist.js index d003739d8f..763c5364f7 100644 --- a/test/blacklist.js +++ b/test/blacklist.js @@ -72,4 +72,9 @@ describe('blacklist', function () { assert(blacklist.test('1.1.1.1')); done(); }); + + it('should pass ip test and not crash with ipv6 address', function (done) { + assert(!blacklist.test('2001:db8:85a3:0:0:8a2e:370:7334')); + done(); + }); }); From 2086a64a5eda4d67ad69e0acc78611c0d6ca7fb2 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 3 Oct 2017 09:40:52 -0400 Subject: [PATCH 30/50] fixes #5947 --- src/upgrades/1.6.0/generate-email-logo.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/upgrades/1.6.0/generate-email-logo.js b/src/upgrades/1.6.0/generate-email-logo.js index 2f713f675f..0e95c3b384 100644 --- a/src/upgrades/1.6.0/generate-email-logo.js +++ b/src/upgrades/1.6.0/generate-email-logo.js @@ -26,7 +26,7 @@ module.exports = { } fs.access(sourcePath, function (err) { - if (err) { + if (err || path.extname(sourcePath) === '.svg') { skip = true; return setImmediate(next); } @@ -46,6 +46,7 @@ module.exports = { meta.configs.setMultiple({ 'brand:logo': path.join(nconf.get('upload_path'), 'system', path.basename(meta.config['brand:logo'])), + 'brand:emailLogo': '/assets/uploads/system/site-logo-x50.png', }, next); }, ], callback); From 1fd160a4e63d3c7372e24ebc35a4ebc0dcf1a15c Mon Sep 17 00:00:00 2001 From: RoiEX <8350879+RoiEXLab@users.noreply.github.com> Date: Thu, 21 Sep 2017 23:55:46 +0200 Subject: [PATCH 31/50] Add Support for Firefox OSD --- public/src/modules/helpers.js | 3 ++- src/controllers/osd.js | 25 +++++++++++++++++++++---- src/meta/tags.js | 1 + 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/public/src/modules/helpers.js b/public/src/modules/helpers.js index 28f853ed60..736926101d 100644 --- a/public/src/modules/helpers.js +++ b/public/src/modules/helpers.js @@ -77,8 +77,9 @@ var type = tag.type ? 'type="' + tag.type + '" ' : ''; var href = tag.href ? 'href="' + tag.href + '" ' : ''; var sizes = tag.sizes ? 'sizes="' + tag.sizes + '" ' : ''; + var title = tag.title ? 'title="' + tag.title + '" ' : ''; - return '\n\t'; + return '\n\t'; } function stringify(obj) { diff --git a/src/controllers/osd.js b/src/controllers/osd.js index c83f7f142c..856d956ef5 100644 --- a/src/controllers/osd.js +++ b/src/controllers/osd.js @@ -8,7 +8,7 @@ var meta = require('../meta'); module.exports.handle = function (req, res, next) { if (plugins.hasListeners('filter:search.query')) { - res.type('application/xml').send(generateXML()); + res.type('application/opensearchdescription+xml').send(generateXML()); } else { next(); } @@ -17,9 +17,21 @@ module.exports.handle = function (req, res, next) { function generateXML() { return xml([{ OpenSearchDescription: [ - { _attr: { xmlns: 'http://a9.com/-/spec/opensearch/1.1/' } }, - { ShortName: String(meta.config.title || meta.config.browserTitle || 'NodeBB') }, - { Description: String(meta.config.description || '') }, + { _attr: { + xmlns: 'http://a9.com/-/spec/opensearch/1.1/', + 'xmlns:moz': 'http://www.mozilla.org/2006/browser/search/', + } }, + { ShortName: trimToLength(String(meta.config.title || meta.config.browserTitle || 'NodeBB'), 16) }, + { Description: trimToLength(String(meta.config.description || ''), 1024) }, + { InputEncoding: 'UTF-8' }, + { Image: [ + { _attr: { + width: '16', + height: '16', + type: 'image/x-icon', + } }, + nconf.get('url') + '/favicon.ico', + ] }, { Url: { _attr: { type: 'text/html', @@ -27,6 +39,11 @@ function generateXML() { template: nconf.get('url') + '/search?term={searchTerms}&in=titlesposts', }, } }, + { 'moz:SearchForm': nconf.get('url') + '/search' }, ], }], { declaration: true, indent: '\t' }); } + +function trimToLength(string, length) { + return string.trim().substring(0, length).trim(); +} diff --git a/src/meta/tags.js b/src/meta/tags.js index c347b18d4e..79cb04cded 100644 --- a/src/meta/tags.js +++ b/src/meta/tags.js @@ -66,6 +66,7 @@ Tags.parse = function (req, data, meta, link, callback) { defaultLinks.push({ rel: 'search', type: 'application/opensearchdescription+xml', + title: validator.escape(String(Meta.config.title || Meta.config.browserTitle || 'NodeBB')), href: nconf.get('relative_path') + '/osd.xml', }); } From 5e4e5231988058d5ec13a30e5cd2ca7cdaa2c01e Mon Sep 17 00:00:00 2001 From: RoiEX Date: Tue, 5 Sep 2017 18:31:01 +0200 Subject: [PATCH 32/50] Make progress bar finer --- public/src/modules/navigator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js index d8b8cb4fe2..df5621f287 100644 --- a/public/src/modules/navigator.js +++ b/public/src/modules/navigator.js @@ -165,7 +165,7 @@ define('navigator', ['forum/pagination', 'components'], function (pagination, co index = index > count ? count : index; $('.pagination-block .pagination-text').translateHtml('[[global:pagination.out_of, ' + index + ', ' + count + ']]'); - $('.pagination-block .progress-bar').width((index / count * 100) + '%'); + $('.pagination-block .progress-bar').width(($(window).scrollTop() / ($(document).height() - $(window).height()) * 100) + '%'); }; navigator.scrollUp = function () { From ce9a3f20c5a49628fa10aa19e8eee27496c32fb9 Mon Sep 17 00:00:00 2001 From: RoiEX Date: Tue, 5 Sep 2017 22:41:40 +0200 Subject: [PATCH 33/50] Optimize transition --- public/src/modules/navigator.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js index df5621f287..2f2a79a05a 100644 --- a/public/src/modules/navigator.js +++ b/public/src/modules/navigator.js @@ -4,7 +4,7 @@ define('navigator', ['forum/pagination', 'components'], function (pagination, co var navigator = {}; var index = 1; var count = 0; - var navigatorUpdateTimeoutId = 0; + var navigatorUpdateTimeoutId = undefined; navigator.scrollActive = false; @@ -91,11 +91,12 @@ define('navigator', ['forum/pagination', 'components'], function (pagination, co } navigator.delayedUpdate = function () { - if (navigatorUpdateTimeoutId) { - clearTimeout(navigatorUpdateTimeoutId); - navigatorUpdateTimeoutId = 0; + if (!navigatorUpdateTimeoutId) { + navigatorUpdateTimeoutId = setTimeout(function () { + navigator.update(); + navigatorUpdateTimeoutId = undefined; + }, 100); } - navigatorUpdateTimeoutId = setTimeout(navigator.update, 100); }; navigator.update = function (threshold) { @@ -165,7 +166,9 @@ define('navigator', ['forum/pagination', 'components'], function (pagination, co index = index > count ? count : index; $('.pagination-block .pagination-text').translateHtml('[[global:pagination.out_of, ' + index + ', ' + count + ']]'); - $('.pagination-block .progress-bar').width(($(window).scrollTop() / ($(document).height() - $(window).height()) * 100) + '%'); + var fraction = $(window).scrollTop() / ($(document).height() - $(window).height()); + $('.pagination-block meter').val(fraction); + $('.pagination-block .progress-bar').width((fraction * 100) + '%'); }; navigator.scrollUp = function () { From e1f180ea3ffc969ad76aed39b056529dcdd5d2bf Mon Sep 17 00:00:00 2001 From: RoiEX Date: Tue, 5 Sep 2017 23:10:38 +0200 Subject: [PATCH 34/50] Remove uneccessary undefined declaration --- public/src/modules/navigator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js index 2f2a79a05a..ac6c06ac88 100644 --- a/public/src/modules/navigator.js +++ b/public/src/modules/navigator.js @@ -4,7 +4,7 @@ define('navigator', ['forum/pagination', 'components'], function (pagination, co var navigator = {}; var index = 1; var count = 0; - var navigatorUpdateTimeoutId = undefined; + var navigatorUpdateTimeoutId; navigator.scrollActive = false; From d0ec7fdaef5afc80022803d3c5004598dde7d875 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 3 Oct 2017 14:19:29 -0400 Subject: [PATCH 35/50] update themes to support #5733 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 0707481f2e..766ab87ee0 100644 --- a/package.json +++ b/package.json @@ -65,10 +65,10 @@ "nodebb-plugin-soundpack-default": "1.0.0", "nodebb-plugin-spam-be-gone": "0.5.1", "nodebb-rewards-essentials": "0.0.9", - "nodebb-theme-lavender": "4.0.5", - "nodebb-theme-persona": "6.0.1", + "nodebb-theme-lavender": "4.1.0", + "nodebb-theme-persona": "6.1.0", "nodebb-theme-slick": "1.1.1", - "nodebb-theme-vanilla": "7.0.1", + "nodebb-theme-vanilla": "7.1.0", "nodebb-widget-essentials": "3.0.5", "nodemailer": "4.1.1", "passport": "^0.4.0", From dd5651b859153353b44a25505f3024f77da07ba2 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 3 Oct 2017 14:29:45 -0400 Subject: [PATCH 36/50] bump composer to test new composer submit behaviour --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 766ab87ee0..91573a77c1 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "morgan": "^1.9.0", "mousetrap": "^1.6.1", "nconf": "^0.8.5", - "nodebb-plugin-composer-default": "6.0.0", + "nodebb-plugin-composer-default": "6.0.1", "nodebb-plugin-dbsearch": "2.0.6", "nodebb-plugin-emoji-extended": "1.1.1", "nodebb-plugin-emoji-one": "1.2.1", From 38900a996452a2f1147e8955d20f9a38697a2e2c Mon Sep 17 00:00:00 2001 From: Dravere Date: Thu, 5 Oct 2017 00:26:44 +0200 Subject: [PATCH 37/50] Smtp emailer issue 5951 (#5954) * Fixed typo at emailer.js line 66 (serice -> service) * When custom SMTP user and password is empty no authentication is attempted * Added options to choose custom smtp connection security * Made custom smtp connection security strings translatable * Changed switch to if-else for custom smtp security option * Fixed emailer.js lint errors * Move custom setting to top of list --- .../language/en-GB/admin/settings/email.json | 4 +++ src/emailer.js | 28 +++++++++++++++---- src/views/admin/settings/email.tpl | 15 +++++++--- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/public/language/en-GB/admin/settings/email.json b/public/language/en-GB/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/en-GB/admin/settings/email.json +++ b/public/language/en-GB/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/src/emailer.js b/src/emailer.js index d82228d712..b1ed617445 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -56,17 +56,33 @@ Emailer.registerApp = function (expressApp) { // Enable Gmail transport if enabled in ACP if (parseInt(meta.config['email:smtpTransport:enabled'], 10) === 1) { - var smtpOptions = { - auth: { + var smtpOptions = {}; + + if (meta.config['email:smtpTransport:user'] || meta.config['email:smtpTransport:pass']) { + smtpOptions.auth = { user: meta.config['email:smtpTransport:user'], pass: meta.config['email:smtpTransport:pass'], - }, - }; + }; + } - if (meta.config['email:smtpTransport:serice'] === 'nodebb-custom-smtp') { + if (meta.config['email:smtpTransport:service'] === 'nodebb-custom-smtp') { smtpOptions.port = meta.config['email:smtpTransport:port']; smtpOptions.host = meta.config['email:smtpTransport:host']; - smtpOptions.secure = true; + + if (meta.config['email:smtpTransport:security'] === 'NONE') { + smtpOptions.secure = false; + smtpOptions.requireTLS = false; + smtpOptions.ignoreTLS = true; + } else if (meta.config['email:smtpTransport:security'] === 'STARTTLS') { + smtpOptions.secure = false; + smtpOptions.requireTLS = true; + smtpOptions.ignoreTLS = false; + } else { + // meta.config['email:smtpTransport:security'] === 'ENCRYPTED' or undefined + smtpOptions.secure = true; + smtpOptions.requireTLS = true; + smtpOptions.ignoreTLS = false; + } } else { smtpOptions.service = meta.config['email:smtpTransport:service']; } diff --git a/src/views/admin/settings/email.tpl b/src/views/admin/settings/email.tpl index 50a3423ece..7315564f1b 100644 --- a/src/views/admin/settings/email.tpl +++ b/src/views/admin/settings/email.tpl @@ -40,12 +40,12 @@

[[admin/settings/email:smtp-transport.service-help]] @@ -63,6 +63,13 @@ + + +

@@ -136,4 +143,4 @@
- \ No newline at end of file + From 0de692188f9f341444307ad361d0aac03fd7ed8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 5 Oct 2017 11:39:35 -0400 Subject: [PATCH 38/50] check topic.cid --- src/topics/recent.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/topics/recent.js b/src/topics/recent.js index 135a15859b..7242f6bb06 100644 --- a/src/topics/recent.js +++ b/src/topics/recent.js @@ -83,7 +83,7 @@ module.exports = function (Topics) { }, function (results, next) { tids = results.topicData.filter(function (topic) { - if (topic) { + if (topic && topic.cid) { return results.ignoredCids.indexOf(topic.cid.toString()) === -1; } return false; From 098b8d99711d114f8c1018885d131a1b0ba28134 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Fri, 6 Oct 2017 09:25:55 +0000 Subject: [PATCH 39/50] Latest translations and fallbacks --- public/language/ar/admin/settings/email.json | 4 ++++ public/language/bg/admin/settings/email.json | 4 ++++ public/language/bn/admin/settings/email.json | 4 ++++ public/language/cs/admin/settings/email.json | 4 ++++ public/language/da/admin/settings/email.json | 4 ++++ public/language/de/admin/settings/email.json | 4 ++++ public/language/el/admin/settings/email.json | 4 ++++ public/language/en-US/admin/settings/email.json | 4 ++++ public/language/en-x-pirate/admin/settings/email.json | 4 ++++ public/language/es/admin/settings/email.json | 4 ++++ public/language/et/admin/settings/email.json | 4 ++++ public/language/fa-IR/admin/settings/email.json | 4 ++++ public/language/fi/admin/settings/email.json | 4 ++++ public/language/fr/admin/settings/email.json | 4 ++++ public/language/gl/admin/settings/email.json | 4 ++++ public/language/he/admin/settings/email.json | 4 ++++ public/language/hr/admin/settings/email.json | 4 ++++ public/language/hu/admin/settings/email.json | 4 ++++ public/language/id/admin/settings/email.json | 4 ++++ public/language/it/admin/settings/email.json | 4 ++++ public/language/ja/admin/settings/email.json | 4 ++++ public/language/ko/admin/settings/email.json | 4 ++++ public/language/lt/admin/settings/email.json | 4 ++++ public/language/ms/admin/settings/email.json | 4 ++++ public/language/nb/admin/settings/email.json | 4 ++++ public/language/nl/admin/settings/email.json | 4 ++++ public/language/pl/admin/settings/email.json | 4 ++++ public/language/pt-BR/admin/settings/email.json | 4 ++++ public/language/pt-PT/admin/settings/email.json | 4 ++++ public/language/ro/admin/settings/email.json | 4 ++++ public/language/ru/admin/settings/email.json | 4 ++++ public/language/rw/admin/settings/email.json | 4 ++++ public/language/sc/admin/settings/email.json | 4 ++++ public/language/sk/admin/settings/email.json | 4 ++++ public/language/sl/admin/settings/email.json | 4 ++++ public/language/sr/admin/settings/email.json | 4 ++++ public/language/sv/admin/settings/email.json | 4 ++++ public/language/th/admin/settings/email.json | 4 ++++ public/language/tr/admin/settings/email.json | 4 ++++ public/language/uk/admin/settings/email.json | 4 ++++ public/language/vi/admin/settings/email.json | 4 ++++ public/language/zh-CN/admin/settings/email.json | 4 ++++ public/language/zh-TW/admin/settings/email.json | 4 ++++ 43 files changed, 172 insertions(+) diff --git a/public/language/ar/admin/settings/email.json b/public/language/ar/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/ar/admin/settings/email.json +++ b/public/language/ar/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/bg/admin/settings/email.json b/public/language/bg/admin/settings/email.json index 2006b53886..45ed71b88b 100644 --- a/public/language/bg/admin/settings/email.json +++ b/public/language/bg/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "За повече информация относно това обиколно решение, моля, прегледайте тази статия за проблема в „NodeMailer“. Друго решение би било използването на добавка за е-поща от трета страна, като например „SendGrid“, „Mailgun“ и т.н. Вижте наличните добавки тук.", "smtp-transport.host": "SMTP сървър", "smtp-transport.port": "SMTP порт", + "smtp-transport.security": "Сигурност на връзката", + "smtp-transport.security-encrypted": "Шифрована", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "Няма", "smtp-transport.username": "Потребителско име", "smtp-transport.username-help": "За услугата на Gmail, въведете пълния адрес на е-пощата тук, особено ако използвате управляван домейн на „Google Apps“.", "smtp-transport.password": "Парола", diff --git a/public/language/bn/admin/settings/email.json b/public/language/bn/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/bn/admin/settings/email.json +++ b/public/language/bn/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/cs/admin/settings/email.json b/public/language/cs/admin/settings/email.json index db1ac67c25..5a82b3aad5 100644 --- a/public/language/cs/admin/settings/email.json +++ b/public/language/cs/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "Další informace o tomto řešení, konzultujte s NodeMailer.Alternativou je použití e-mailového rozšíření třetích stran jako je SendGrid, Mailgun atd.Dostupné rozšíření zde.", "smtp-transport.host": "Hostitel SMTP", "smtp-transport.port": "Port SMTP", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Uživatelské jméno", "smtp-transport.username-help": "Pro službu Gmail, zadejte plnou e-mailovou adresu, zvláště, používáte-li spravovanou doménu Google Apps.", "smtp-transport.password": "Heslo", diff --git a/public/language/da/admin/settings/email.json b/public/language/da/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/da/admin/settings/email.json +++ b/public/language/da/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/de/admin/settings/email.json b/public/language/de/admin/settings/email.json index ec6833e469..3fd5c2e343 100644 --- a/public/language/de/admin/settings/email.json +++ b/public/language/de/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "Um mehr zu diesem Workaround zu erfahren, ließ dir bitten diesen NodeMailer Artikel zu diesem Problem durch. Eine Alternative wäre, Emailer-Plugins von dritten wie etwa SendGrid, Mailgun usw. zu verwenden. Verfügbare Plugins durchsuchen.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Benutzername", "smtp-transport.username-help": "Bitte füge die komplette Email-Adresse für Gmail hier ein, insbesondere wenn du eine von Google Apps gemanagete domain verwendest.", "smtp-transport.password": "Passwort", diff --git a/public/language/el/admin/settings/email.json b/public/language/el/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/el/admin/settings/email.json +++ b/public/language/el/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/en-US/admin/settings/email.json b/public/language/en-US/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/en-US/admin/settings/email.json +++ b/public/language/en-US/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/en-x-pirate/admin/settings/email.json b/public/language/en-x-pirate/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/en-x-pirate/admin/settings/email.json +++ b/public/language/en-x-pirate/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/es/admin/settings/email.json b/public/language/es/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/es/admin/settings/email.json +++ b/public/language/es/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/et/admin/settings/email.json b/public/language/et/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/et/admin/settings/email.json +++ b/public/language/et/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/fa-IR/admin/settings/email.json b/public/language/fa-IR/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/fa-IR/admin/settings/email.json +++ b/public/language/fa-IR/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/fi/admin/settings/email.json b/public/language/fi/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/fi/admin/settings/email.json +++ b/public/language/fi/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/fr/admin/settings/email.json b/public/language/fr/admin/settings/email.json index b63e61b724..06846b88cb 100644 --- a/public/language/fr/admin/settings/email.json +++ b/public/language/fr/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "Host SMTP", "smtp-transport.port": "Port SMTP", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Nom d'utilisateur", "smtp-transport.username-help": "Pour Gmail, entrer l’adresse e-mail complète ici, surtout si vous utilisez un domaine géré par Google Apps.", "smtp-transport.password": "Mot de passe", diff --git a/public/language/gl/admin/settings/email.json b/public/language/gl/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/gl/admin/settings/email.json +++ b/public/language/gl/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/he/admin/settings/email.json b/public/language/he/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/he/admin/settings/email.json +++ b/public/language/he/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/hr/admin/settings/email.json b/public/language/hr/admin/settings/email.json index 072e8508ba..e89ad58450 100644 --- a/public/language/hr/admin/settings/email.json +++ b/public/language/hr/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/hu/admin/settings/email.json b/public/language/hu/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/hu/admin/settings/email.json +++ b/public/language/hu/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/id/admin/settings/email.json b/public/language/id/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/id/admin/settings/email.json +++ b/public/language/id/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/it/admin/settings/email.json b/public/language/it/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/it/admin/settings/email.json +++ b/public/language/it/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/ja/admin/settings/email.json b/public/language/ja/admin/settings/email.json index 4439b1774d..ed1561b225 100644 --- a/public/language/ja/admin/settings/email.json +++ b/public/language/ja/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/ko/admin/settings/email.json b/public/language/ko/admin/settings/email.json index a9e349aa0c..9949482865 100644 --- a/public/language/ko/admin/settings/email.json +++ b/public/language/ko/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/lt/admin/settings/email.json b/public/language/lt/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/lt/admin/settings/email.json +++ b/public/language/lt/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/ms/admin/settings/email.json b/public/language/ms/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/ms/admin/settings/email.json +++ b/public/language/ms/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/nb/admin/settings/email.json b/public/language/nb/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/nb/admin/settings/email.json +++ b/public/language/nb/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/nl/admin/settings/email.json b/public/language/nl/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/nl/admin/settings/email.json +++ b/public/language/nl/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/pl/admin/settings/email.json b/public/language/pl/admin/settings/email.json index 6a21b28645..5133071ae2 100644 --- a/public/language/pl/admin/settings/email.json +++ b/public/language/pl/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "W celu uzyskania dalszych informacji o tym rozwiązaniu, proszę zapoznać się z artykułem NodeMailer dot. tego zagadnienia.Alternatywą byłoby wykorzystanie zewnętrznej wtyczki obsługi email np. SendGrid, Mailgun itp. Przeglądaj dostępne wtyczki tyutaj.", "smtp-transport.host": "Host SMTP", "smtp-transport.port": "Port SMTP", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Nazwa użytkownika", "smtp-transport.username-help": "Dla usługi Gmail wprowadź tutaj pełny adres email, w szczególności jeśli korzystasz z domeny zrządzanej przez G Suite.", "smtp-transport.password": "Hasło", diff --git a/public/language/pt-BR/admin/settings/email.json b/public/language/pt-BR/admin/settings/email.json index 5831b45bea..4b1b67d94e 100644 --- a/public/language/pt-BR/admin/settings/email.json +++ b/public/language/pt-BR/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "Para mais informação sobre este workaround, por gentileza consulte este artigo no NodeMailer sobre o assunto.. Uma alternativa seria utilizar um plugin de email terceirizado como o SendGrid, Maigun etc. . Explore pelos plugins disponíveis aqui.", "smtp-transport.host": "Host SMTP", "smtp-transport.port": "Porta SMTP", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Nome de usuário", "smtp-transport.username-help": "Para o serviço do Gmail, entre com o endereço de email completo aqui, especiamente se você estiver usando um domínio administrado pelo Google Apps.", "smtp-transport.password": "Senha", diff --git a/public/language/pt-PT/admin/settings/email.json b/public/language/pt-PT/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/pt-PT/admin/settings/email.json +++ b/public/language/pt-PT/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/ro/admin/settings/email.json b/public/language/ro/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/ro/admin/settings/email.json +++ b/public/language/ro/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/ru/admin/settings/email.json b/public/language/ru/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/ru/admin/settings/email.json +++ b/public/language/ru/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/rw/admin/settings/email.json b/public/language/rw/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/rw/admin/settings/email.json +++ b/public/language/rw/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/sc/admin/settings/email.json b/public/language/sc/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/sc/admin/settings/email.json +++ b/public/language/sc/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/sk/admin/settings/email.json b/public/language/sk/admin/settings/email.json index 3900b02f72..97193f2618 100644 --- a/public/language/sk/admin/settings/email.json +++ b/public/language/sk/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/sl/admin/settings/email.json b/public/language/sl/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/sl/admin/settings/email.json +++ b/public/language/sl/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/sr/admin/settings/email.json b/public/language/sr/admin/settings/email.json index 98d53d0cee..680664d944 100644 --- a/public/language/sr/admin/settings/email.json +++ b/public/language/sr/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/sv/admin/settings/email.json b/public/language/sv/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/sv/admin/settings/email.json +++ b/public/language/sv/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/th/admin/settings/email.json b/public/language/th/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/th/admin/settings/email.json +++ b/public/language/th/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/tr/admin/settings/email.json b/public/language/tr/admin/settings/email.json index 30d4612b1a..ad24510a76 100644 --- a/public/language/tr/admin/settings/email.json +++ b/public/language/tr/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Kullanıcı Adı", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/uk/admin/settings/email.json b/public/language/uk/admin/settings/email.json index 595f985516..26a1a01e9b 100644 --- a/public/language/uk/admin/settings/email.json +++ b/public/language/uk/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "Щоб дізнатися більше про цей обхідний шлях, прочитайте цю статтю на NodeMailer. Альтернативою буде використання сторонніх плагінів для листування як то SendGrid, Mailgun, тощо. Переглянути наявні плагіни тут.", "smtp-transport.host": "Сервер SMTP", "smtp-transport.port": "Порт SMTP", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Ім'я користувача", "smtp-transport.username-help": "Для сервісу Gmail, вкажіть тут повну електронну адресу, особливо якщо ви використовуєте керований домен Google Apps.", "smtp-transport.password": "Пароль", diff --git a/public/language/vi/admin/settings/email.json b/public/language/vi/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/vi/admin/settings/email.json +++ b/public/language/vi/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", diff --git a/public/language/zh-CN/admin/settings/email.json b/public/language/zh-CN/admin/settings/email.json index fe6941b412..e08da21512 100644 --- a/public/language/zh-CN/admin/settings/email.json +++ b/public/language/zh-CN/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "有关此解决方法的更多信息,请参阅有关该问题的NodeMailer 文章。 另一种方法是利用 SendGrid,Mailgun 等第三方电子邮件插件。点这儿以浏览可用的插件。", "smtp-transport.host": "SMTP 主机名", "smtp-transport.port": "SMTP 端口", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "用户名", "smtp-transport.username-help": "对于Gmail服务,请在这里输入完整的电子邮件地址,尤其是如果你使用的是 Google Apps 托管的域名。", "smtp-transport.password": "密码", diff --git a/public/language/zh-TW/admin/settings/email.json b/public/language/zh-TW/admin/settings/email.json index 97696e1f44..50d210103b 100644 --- a/public/language/zh-TW/admin/settings/email.json +++ b/public/language/zh-TW/admin/settings/email.json @@ -15,6 +15,10 @@ "smtp-transport.gmail-warning2": "For more information about this workaround, please consult this NodeMailer article on the issue. An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. Browse available plugins here.", "smtp-transport.host": "SMTP Host", "smtp-transport.port": "SMTP Port", + "smtp-transport.security": "Connection security", + "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security-starttls": "StartTLS", + "smtp-transport.security-none": "None", "smtp-transport.username": "Username", "smtp-transport.username-help": "For the Gmail service, enter the full email address here, especially if you are using a Google Apps managed domain.", "smtp-transport.password": "Password", From 8d5ef79e9cc4feca96424c46dfdc8b696e37d83d Mon Sep 17 00:00:00 2001 From: Dravere Date: Fri, 6 Oct 2017 13:36:43 +0200 Subject: [PATCH 40/50] Smtp emailer change without restart (#5957) * SMTP fallback transport setup during app startup and config update * Verbose logging message to see when SMTP fallback transport is setup --- src/emailer.js | 84 +++++++++++++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/src/emailer.js b/src/emailer.js index b1ed617445..38535367b9 100644 --- a/src/emailer.js +++ b/src/emailer.js @@ -36,6 +36,48 @@ Emailer.listServices = function (callback) { Emailer._defaultPayload = {}; +Emailer.setupFallbackTransport = function (config) { + winston.verbose('[emailer] Setting up SMTP fallback transport'); + // Enable Gmail transport if enabled in ACP + if (parseInt(config['email:smtpTransport:enabled'], 10) === 1) { + var smtpOptions = {}; + + if (config['email:smtpTransport:user'] || config['email:smtpTransport:pass']) { + smtpOptions.auth = { + user: config['email:smtpTransport:user'], + pass: config['email:smtpTransport:pass'], + }; + } + + if (config['email:smtpTransport:service'] === 'nodebb-custom-smtp') { + smtpOptions.port = config['email:smtpTransport:port']; + smtpOptions.host = config['email:smtpTransport:host']; + + if (config['email:smtpTransport:security'] === 'NONE') { + smtpOptions.secure = false; + smtpOptions.requireTLS = false; + smtpOptions.ignoreTLS = true; + } else if (config['email:smtpTransport:security'] === 'STARTTLS') { + smtpOptions.secure = false; + smtpOptions.requireTLS = true; + smtpOptions.ignoreTLS = false; + } else { + // meta.config['email:smtpTransport:security'] === 'ENCRYPTED' or undefined + smtpOptions.secure = true; + smtpOptions.requireTLS = true; + smtpOptions.ignoreTLS = false; + } + } else { + smtpOptions.service = config['email:smtpTransport:service']; + } + + transports.smtp = nodemailer.createTransport(smtpOptions); + fallbackTransport = transports.smtp; + } else { + fallbackTransport = transports.sendmail; + } +}; + Emailer.registerApp = function (expressApp) { app = expressApp; @@ -54,48 +96,14 @@ Emailer.registerApp = function (expressApp) { }, }; - // Enable Gmail transport if enabled in ACP - if (parseInt(meta.config['email:smtpTransport:enabled'], 10) === 1) { - var smtpOptions = {}; - - if (meta.config['email:smtpTransport:user'] || meta.config['email:smtpTransport:pass']) { - smtpOptions.auth = { - user: meta.config['email:smtpTransport:user'], - pass: meta.config['email:smtpTransport:pass'], - }; - } - - if (meta.config['email:smtpTransport:service'] === 'nodebb-custom-smtp') { - smtpOptions.port = meta.config['email:smtpTransport:port']; - smtpOptions.host = meta.config['email:smtpTransport:host']; - - if (meta.config['email:smtpTransport:security'] === 'NONE') { - smtpOptions.secure = false; - smtpOptions.requireTLS = false; - smtpOptions.ignoreTLS = true; - } else if (meta.config['email:smtpTransport:security'] === 'STARTTLS') { - smtpOptions.secure = false; - smtpOptions.requireTLS = true; - smtpOptions.ignoreTLS = false; - } else { - // meta.config['email:smtpTransport:security'] === 'ENCRYPTED' or undefined - smtpOptions.secure = true; - smtpOptions.requireTLS = true; - smtpOptions.ignoreTLS = false; - } - } else { - smtpOptions.service = meta.config['email:smtpTransport:service']; - } - - transports.smtp = nodemailer.createTransport(smtpOptions); - fallbackTransport = transports.smtp; - } else { - fallbackTransport = transports.sendmail; - } + Emailer.setupFallbackTransport(meta.config); // Update default payload if new logo is uploaded pubsub.on('config:update', function (config) { if (config) { + if ('email:smtpTransport:enabled' in config) { + Emailer.setupFallbackTransport(config); + } Emailer._defaultPayload.logo.src = config['brand:emailLogo']; Emailer._defaultPayload.logo.height = config['brand:emailLogo:height']; Emailer._defaultPayload.logo.width = config['brand:emailLogo:width']; From ea41e39dd26c2b47c154fbb1ae31dbe42622d40d Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Sat, 7 Oct 2017 09:25:55 +0000 Subject: [PATCH 41/50] Latest translations and fallbacks --- public/language/zh-CN/admin/settings/email.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/language/zh-CN/admin/settings/email.json b/public/language/zh-CN/admin/settings/email.json index e08da21512..c9e4bc5d1f 100644 --- a/public/language/zh-CN/admin/settings/email.json +++ b/public/language/zh-CN/admin/settings/email.json @@ -6,8 +6,8 @@ "from-help": "用于邮件中显示的发送者", "smtp-transport": "SMTP 通信", - "smtp-transport.enabled": "使用一个外部邮箱系统来发送邮件", - "smtp-transport-help": "你可以从列表中选取一个已知的服务或自定义。", + "smtp-transport.enabled": "使用一个外部电子邮箱系统来发送邮件", + "smtp-transport-help": "您可以从列表中选取一个已知的服务或自定义。", "smtp-transport.service": "选择服务", "smtp-transport.service-custom": "自定义", "smtp-transport.service-help": "选取一个上方服务以便使用已知的信息。此外,还可以选取 “自定义”并在下方输入配置细节。", @@ -20,7 +20,7 @@ "smtp-transport.security-starttls": "StartTLS", "smtp-transport.security-none": "None", "smtp-transport.username": "用户名", - "smtp-transport.username-help": "对于Gmail服务,请在这里输入完整的电子邮件地址,尤其是如果你使用的是 Google Apps 托管的域名。", + "smtp-transport.username-help": "对于Gmail服务,请在这里输入完整的电子邮箱地址,尤其是如果您使用的是 Google Apps 托管的域名。", "smtp-transport.password": "密码", "template": "编辑电子邮件模板", From bb6dcf377905932596d8915c12afd1cace2dedc5 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Mon, 9 Oct 2017 09:26:12 +0000 Subject: [PATCH 42/50] Latest translations and fallbacks --- public/language/he/error.json | 4 ++-- public/language/he/notifications.json | 2 +- public/language/he/pages.json | 4 ++-- public/language/he/success.json | 2 +- public/language/he/topic.json | 8 ++++---- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/public/language/he/error.json b/public/language/he/error.json index 0599a1b34b..ecf75c2ed2 100644 --- a/public/language/he/error.json +++ b/public/language/he/error.json @@ -4,7 +4,7 @@ "not-logged-in": "נראה שאינך מחובר למערכת.", "account-locked": "חשבונך נחסם באופן זמני", "search-requires-login": "פעולת החיפוש דורשת חשבון - בבקשה התחבר או הרשם.", - "goback": "Press back to return to the previous page", + "goback": "לחץ back לחזרה לעמוד הקודם", "invalid-cid": "זהוי קטגוריה שגוי", "invalid-tid": "זהוי נושא שגוי", "invalid-pid": "זהוי פוסט שגוי", @@ -59,7 +59,7 @@ "post-delete-duration-expired-hours": "You are only allowed to delete posts for %1 hour(s) after posting", "post-delete-duration-expired-hours-minutes": "You are only allowed to delete posts for %1 hour(s) %2 minute(s) after posting", "post-delete-duration-expired-days": "You are only allowed to delete posts for %1 day(s) after posting", - "post-delete-duration-expired-days-hours": "You are only allowed to delete posts for %1 day(s) %2 hour(s) after posting", + "post-delete-duration-expired-days-hours": "אתה מורשה למחוק פוסט רק %1 ימים ו %2 שעות אחרי פרסומו", "cant-delete-topic-has-reply": "אינך יכול למחוק נושא אחרי שכבר הגיבו בו.", "cant-delete-topic-has-replies": "לא ניתן למחוק את הנושא לאחר שקיבל %1 תגובות", "content-too-short": "אנא הכנס פוסט ארוך יותר. פוסטים חייבים להכיל לפחות %1 תווים.", diff --git a/public/language/he/notifications.json b/public/language/he/notifications.json index e58a931827..1cab5188ab 100644 --- a/public/language/he/notifications.json +++ b/public/language/he/notifications.json @@ -41,7 +41,7 @@ "new_register": "%1 שלח בקשת הרשמה.", "new_register_multiple": "ישנן %1 בקשות הרשמה שמחכות לבדיקה.", "flag_assigned_to_you": "דיווח %1 הוקצה עבורך", - "post_awaiting_review": "Post awaiting review", + "post_awaiting_review": "הפוסט ממתין לאישור", "email-confirmed": "כתובת המייל אושרה", "email-confirmed-message": "תודה שאישרת את כתובת המייל שלך. החשבון שלך פעיל כעת.", "email-confirm-error-message": "אירעה שגיאה בעת אישור המייל שלך. ייתכן כי הקוד היה שגוי או פג תוקף.", diff --git a/public/language/he/pages.json b/public/language/he/pages.json index 46a3aa6a5b..617bd93223 100644 --- a/public/language/he/pages.json +++ b/public/language/he/pages.json @@ -6,10 +6,10 @@ "popular-month": "נושאים חמים החודש", "popular-alltime": "הנושאים החמים בכל הזמנים", "recent": "נושאים אחרונים", - "moderator-tools": "Moderator Tools", + "moderator-tools": "כלי מודרטור", "flagged-content": "תוכן מדווח", "ip-blacklist": "רשימת IP שחורה", - "post-queue": "Post Queue", + "post-queue": "פוסטים ממתינים", "users/online": "משתמשים מחוברים", "users/latest": "משתמשים אחרונים", "users/sort-posts": "משתמשים עם המונה הגבוה ביותר", diff --git a/public/language/he/success.json b/public/language/he/success.json index 2b24b55fac..da04fbee46 100644 --- a/public/language/he/success.json +++ b/public/language/he/success.json @@ -1,7 +1,7 @@ { "success": "הצלחה", "topic-post": "העלת פוסט בהצלחה.", - "post-queued": "Your post is queued for approval.", + "post-queued": "הפוסט שלך ממתין לאישור.", "authentication-successful": "הנתונים אומתו בהצלחה", "settings-saved": "הנתונים נשמרו!" } \ No newline at end of file diff --git a/public/language/he/topic.json b/public/language/he/topic.json index e457ea82e1..b9630978ea 100644 --- a/public/language/he/topic.json +++ b/public/language/he/topic.json @@ -59,7 +59,7 @@ "thread_tools.unlock": "הסר נעילה", "thread_tools.move": "הזז נושא", "thread_tools.move_all": "הזז הכל", - "thread_tools.select_category": "Select Category", + "thread_tools.select_category": "בחר קטגוריה", "thread_tools.fork": "שכפל נושא", "thread_tools.delete": "מחק נושא", "thread_tools.delete-posts": "מחק פוסטים", @@ -75,9 +75,9 @@ "load_categories": "טוען קטגוריות", "confirm_move": "הזז", "confirm_fork": "שכפל", - "bookmark": "Bookmark", - "bookmarks": "Bookmarks", - "bookmarks.has_no_bookmarks": "You haven't bookmarked any posts yet.", + "bookmark": "הוסף למועדפים", + "bookmarks": "מועדפים", + "bookmarks.has_no_bookmarks": "לא צירפת אף פוסט למועדפים עדיין", "loading_more_posts": "טוען פוסטים נוספים", "move_topic": "הזז נושא", "move_topics": "הזז נושאים", From 1c35213934e4c3734da34838278a6f78f591f616 Mon Sep 17 00:00:00 2001 From: Peter Jaszkowiak Date: Mon, 9 Oct 2017 09:40:36 -0600 Subject: [PATCH 43/50] Fix #5970 and forking while debugging (#5965) * Fix forking while debugging Debugger address in use no longer happens * Fix cropper error --- app.js | 2 +- public/src/modules/pictureCropper.js | 6 ++-- src/meta/debugFork.js | 41 ++++++++++++++++++++++++++++ src/meta/debugParams.js | 16 ----------- src/meta/minifier.js | 8 ++---- src/password.js | 5 ++-- test/meta.js | 27 ++++++++++++++---- 7 files changed, 71 insertions(+), 34 deletions(-) create mode 100644 src/meta/debugFork.js delete mode 100644 src/meta/debugParams.js diff --git a/app.js b/app.js index d3b4af0697..686b355602 100644 --- a/app.js +++ b/app.js @@ -37,7 +37,7 @@ var winston = require('winston'); var path = require('path'); var pkg = require('./package.json'); var file = require('./src/file'); -var debug = require('./src/meta/debugParams')().execArgv.length; +var debug = require('./src/meta/debugFork').debugging; global.env = process.env.NODE_ENV || 'production'; diff --git a/public/src/modules/pictureCropper.js b/public/src/modules/pictureCropper.js index 3bd8cf1516..5a02962d1a 100644 --- a/public/src/modules/pictureCropper.js +++ b/public/src/modules/pictureCropper.js @@ -1,7 +1,7 @@ 'use strict'; -define('pictureCropper', ['translator', 'cropper', 'benchpress'], function (translator, cropper, Benchpress) { +define('pictureCropper', ['translator', 'cropper', 'benchpress'], function (translator, Cropper, Benchpress) { var module = {}; module.show = function (data, callback) { @@ -46,7 +46,7 @@ define('pictureCropper', ['translator', 'cropper', 'benchpress'], function (tran var img = document.getElementById('cropped-image'); $(img).css('max-height', cropBoxHeight); - var cropperTool = new cropper.default(img, { + var cropperTool = new Cropper(img, { aspectRatio: data.aspectRatio, autoCropArea: 1, viewMode: 1, @@ -122,7 +122,7 @@ define('pictureCropper', ['translator', 'cropper', 'benchpress'], function (tran $(this).addClass('disabled'); cropperTool.destroy(); - cropperTool = new cropper.default(img, { + cropperTool = new Cropper(img, { viewMode: 1, autoCropArea: 1, ready: function () { diff --git a/src/meta/debugFork.js b/src/meta/debugFork.js new file mode 100644 index 0000000000..575eebd610 --- /dev/null +++ b/src/meta/debugFork.js @@ -0,0 +1,41 @@ +'use strict'; + +var fork = require('child_process').fork; + +var debugArg = process.execArgv.find(function (arg) { + return /^--(debug|inspect)/.test(arg); +}); +var debugging = !!debugArg; + +debugArg = debugArg ? debugArg.replace('-brk', '').split('=') : ['--debug', 5859]; +var lastAddress = parseInt(debugArg[1], 10); + +/** + * child-process.fork, but safe for use in debuggers + * @param {string} modulePath + * @param {string[]} [args] + * @param {any} [options] + */ +function debugFork(modulePath, args, options) { + var execArgv = []; + if (global.v8debug || debugging) { + lastAddress += 1; + + execArgv = [debugArg[0] + '=' + lastAddress, '--nolazy']; + } + + if (!Array.isArray(args)) { + options = args; + args = []; + } + + options = options || {}; + options = Object.assign({}, options, { + execArgv: execArgv, + }); + + return fork(modulePath, args, options); +} +debugFork.debugging = debugging; + +module.exports = debugFork; diff --git a/src/meta/debugParams.js b/src/meta/debugParams.js deleted file mode 100644 index 6b84500bff..0000000000 --- a/src/meta/debugParams.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -module.exports = function (execArgv) { - execArgv = execArgv || process.execArgv; - var debugArg = execArgv.find(function (arg) { - return /^--(debug|inspect)/.test(arg); - }); - if (global.v8debug || debugArg) { - debugArg = debugArg ? debugArg.split('=') : ['--debug', 5859]; - var num = parseInt(debugArg[1], 10) + 1; - - return { execArgv: [debugArg[0] + '=' + num, '--nolazy'] }; - } - - return { execArgv: [] }; -}; diff --git a/src/meta/minifier.js b/src/meta/minifier.js index 3b26f99ec5..c51f41578b 100644 --- a/src/meta/minifier.js +++ b/src/meta/minifier.js @@ -1,7 +1,6 @@ 'use strict'; var fs = require('fs'); -var childProcess = require('child_process'); var os = require('os'); var uglifyjs = require('uglify-js'); var async = require('async'); @@ -11,7 +10,7 @@ var postcss = require('postcss'); var autoprefixer = require('autoprefixer'); var clean = require('postcss-clean'); -var debugParams = require('./debugParams'); +var fork = require('./debugFork'); var Minifier = module.exports; @@ -47,13 +46,12 @@ function getChild() { return free.shift(); } - var forkProcessParams = debugParams(); - var proc = childProcess.fork(__filename, [], Object.assign({}, forkProcessParams, { + var proc = fork(__filename, [], { cwd: __dirname, env: { minifier_child: true, }, - })); + }); pool.push(proc); return proc; diff --git a/src/password.js b/src/password.js index 137382c993..6cc1e1776a 100644 --- a/src/password.js +++ b/src/password.js @@ -1,9 +1,8 @@ 'use strict'; -var fork = require('child_process').fork; var path = require('path'); -var debugParams = require('./meta/debugParams'); +var fork = require('./meta/debugFork'); exports.hash = function (rounds, password, callback) { forkChild({ type: 'hash', rounds: rounds, password: password }, callback); @@ -17,7 +16,7 @@ exports.compare = function (password, hash, callback) { }; function forkChild(message, callback) { - var child = fork(path.join(__dirname, 'bcrypt'), [], debugParams()); + var child = fork(path.join(__dirname, 'bcrypt')); child.on('message', function (msg) { if (msg.err) { diff --git a/test/meta.js b/test/meta.js index 539cb57c98..451184d63b 100644 --- a/test/meta.js +++ b/test/meta.js @@ -276,13 +276,28 @@ describe('meta', function () { }); }); - describe('debug params', function () { - it('should return fork arguments for debug', function (done) { - var debugParams = require('../src/meta/debugParams'); - var data = debugParams(['--debug=5858', '--foo=1']); - assert.equal(data.execArgv[0], '--debug=5859'); - assert.equal(data.execArgv[1], '--nolazy'); + describe('debugFork', function () { + var oldArgv; + before(function () { + oldArgv = process.execArgv; + process.execArgv = ['--debug=5858', '--foo=1']; + }); + + it('should detect debugging', function (done) { + var debugFork = require('../src/meta/debugFork'); + assert(!debugFork.debugging); + + var debugForkPath = require.resolve('../src/meta/debugFork'); + delete require.cache[debugForkPath]; + + debugFork = require('../src/meta/debugFork'); + assert(debugFork.debugging); + done(); }); + + after(function () { + process.execArgv = oldArgv; + }); }); }); From 425db49fe884249992a66614aa3b6c09efddfef3 Mon Sep 17 00:00:00 2001 From: "Misty (Bot)" Date: Tue, 10 Oct 2017 09:25:44 +0000 Subject: [PATCH 44/50] Latest translations and fallbacks --- public/language/cs/admin/settings/email.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/language/cs/admin/settings/email.json b/public/language/cs/admin/settings/email.json index 5a82b3aad5..27d14b96bc 100644 --- a/public/language/cs/admin/settings/email.json +++ b/public/language/cs/admin/settings/email.json @@ -15,10 +15,10 @@ "smtp-transport.gmail-warning2": "Další informace o tomto řešení, konzultujte s NodeMailer.Alternativou je použití e-mailového rozšíření třetích stran jako je SendGrid, Mailgun atd.Dostupné rozšíření zde.", "smtp-transport.host": "Hostitel SMTP", "smtp-transport.port": "Port SMTP", - "smtp-transport.security": "Connection security", - "smtp-transport.security-encrypted": "Encrypted", + "smtp-transport.security": "Zabezpečení připojení", + "smtp-transport.security-encrypted": "Šifrované", "smtp-transport.security-starttls": "StartTLS", - "smtp-transport.security-none": "None", + "smtp-transport.security-none": "Nic", "smtp-transport.username": "Uživatelské jméno", "smtp-transport.username-help": "Pro službu Gmail, zadejte plnou e-mailovou adresu, zvláště, používáte-li spravovanou doménu Google Apps.", "smtp-transport.password": "Heslo", From 9e9de2edd00b60ce1208e186dd93830fbbef0be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 10 Oct 2017 11:01:10 -0400 Subject: [PATCH 45/50] closes #5976 --- src/controllers/category.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controllers/category.js b/src/controllers/category.js index 8edc68d076..c7414fc096 100644 --- a/src/controllers/category.js +++ b/src/controllers/category.js @@ -187,8 +187,11 @@ function addTags(categoryData, res) { ]; if (categoryData.backgroundImage) { + if (!categoryData.backgroundImage.startsWith('http')) { + categoryData.backgroundImage = nconf.get('url') + categoryData.backgroundImage; + } res.locals.metaTags.push({ - name: 'og:image', + property: 'og:image', content: categoryData.backgroundImage, }); } From d37c0cfd6735bbfd6ddbea8a88975e7fd107879e Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 10 Oct 2017 11:16:37 -0400 Subject: [PATCH 46/50] bumping themes again to remove changes for #5733 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 19984ac8f6..3a7498ba45 100644 --- a/package.json +++ b/package.json @@ -65,10 +65,10 @@ "nodebb-plugin-soundpack-default": "1.0.0", "nodebb-plugin-spam-be-gone": "0.5.1", "nodebb-rewards-essentials": "0.0.9", - "nodebb-theme-lavender": "4.1.0", - "nodebb-theme-persona": "6.1.0", + "nodebb-theme-lavender": "4.1.1", + "nodebb-theme-persona": "6.1.2", "nodebb-theme-slick": "1.1.1", - "nodebb-theme-vanilla": "7.1.0", + "nodebb-theme-vanilla": "7.1.1", "nodebb-widget-essentials": "3.0.6", "nodemailer": "4.1.1", "passport": "^0.4.0", From 67ba6bb820fb6f689fe85b11ce03c02796232e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 10 Oct 2017 11:26:37 -0400 Subject: [PATCH 47/50] closes #5977 --- src/controllers/topics.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 347ae8e847..d3a4846390 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -227,6 +227,8 @@ function addTags(topicData, req, res) { var ogImageUrl = ''; if (topicData.thumb) { ogImageUrl = topicData.thumb; + } else if (topicData.category.backgroundImage && (!postAtIndex || !postAtIndex.index)) { + ogImageUrl = topicData.category.backgroundImage; } else if (postAtIndex && postAtIndex.user && postAtIndex.user.picture) { ogImageUrl = postAtIndex.user.picture; } else if (meta.config['og:image']) { From 5863d64d270c65f4d5f10b4ffcb84db542285106 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 10 Oct 2017 11:34:04 -0400 Subject: [PATCH 48/50] prevent inline js payloads from executing in outgoing page --- src/controllers/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/index.js b/src/controllers/index.js index dbd41d360c..aa3570b829 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -391,7 +391,7 @@ Controllers.manifest = function (req, res) { Controllers.outgoing = function (req, res, next) { var url = req.query.url || ''; - if (!url) { + if (!url || url.startsWith('javascript:')) { return next(); } From 72502ff9923ed7d467209bc398635f55bad4be2a Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 10 Oct 2017 11:48:06 -0400 Subject: [PATCH 49/50] utilising whitelist instead of blacklisting javascript protocol --- src/controllers/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controllers/index.js b/src/controllers/index.js index aa3570b829..627107b920 100644 --- a/src/controllers/index.js +++ b/src/controllers/index.js @@ -390,8 +390,10 @@ Controllers.manifest = function (req, res) { Controllers.outgoing = function (req, res, next) { var url = req.query.url || ''; + var allowedProtocols = ['http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp', 'webcal']; + var parsed = require('url').parse(url); - if (!url || url.startsWith('javascript:')) { + if (!url || !allowedProtocols.includes(parsed.protocol.slice(0, -1))) { return next(); } From df5178ce7880f0afcb07c53d1f3700881152f918 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 10 Oct 2017 12:17:39 -0400 Subject: [PATCH 50/50] fixed typo in outgoing route test, and added new test for javascript protocol --- test/controllers.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test/controllers.js b/test/controllers.js index 6f51ebf1ea..04343b6d18 100644 --- a/test/controllers.js +++ b/test/controllers.js @@ -216,7 +216,7 @@ describe('Controllers', function () { }); it('should load /outgoing?url=', function (done) { - request(nconf.get('url') + '/outgoing?url=http//youtube.com', function (err, res, body) { + request(nconf.get('url') + '/outgoing?url=http://youtube.com', function (err, res, body) { assert.ifError(err); assert.equal(res.statusCode, 200); assert(body); @@ -233,6 +233,15 @@ describe('Controllers', function () { }); }); + it('should 404 on /outgoing with javascript: protocol', function (done) { + request(nconf.get('url') + '/outgoing?url=javascript:alert(1);', function (err, res, body) { + assert.ifError(err); + assert.equal(res.statusCode, 404); + assert(body); + done(); + }); + }); + it('should load /tos', function (done) { meta.config.termsOfUse = 'please accept our tos'; request(nconf.get('url') + '/tos', function (err, res, body) {