mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-12-27 09:36:09 +08:00
OpenPGP improvements (first step)
openpgpjs: 0.7.2 -> 0.10.1 additional fixes
This commit is contained in:
parent
09334159c2
commit
34a9b8cbc5
28 changed files with 1363 additions and 644 deletions
|
@ -109,6 +109,7 @@
|
|||
'Settings': 'settings',
|
||||
'Menu': 'menu',
|
||||
'PopupComposeOpenPGP': 'compose-open-pgp',
|
||||
'PopupMessageOpenPGP': 'message-open-pgp',
|
||||
'PopupKeyboardShortcutsHelp': 'popup-keyboard-shortcuts-help',
|
||||
'PopupAsk': 'popup-ask'
|
||||
};
|
||||
|
|
|
@ -390,7 +390,7 @@
|
|||
*/
|
||||
Links.prototype.openPgpJs = function ()
|
||||
{
|
||||
return this.sStaticPrefix + 'js/min/openpgp.js';
|
||||
return this.sStaticPrefix + 'js/min/openpgp.js';
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
10
dev/External/ko.js
vendored
10
dev/External/ko.js
vendored
|
@ -7,6 +7,7 @@
|
|||
window = require('window'),
|
||||
_ = require('_'),
|
||||
$ = require('$'),
|
||||
JSON = require('JSON'),
|
||||
Opentip = require('Opentip'),
|
||||
|
||||
fDisposalTooltipHelper = function (oElement) {
|
||||
|
@ -63,6 +64,15 @@
|
|||
}
|
||||
};
|
||||
|
||||
ko.bindingHandlers.json = {
|
||||
'init': function (oElement, fValueAccessor) {
|
||||
$(oElement).text(JSON.stringify(ko.unwrap(fValueAccessor())));
|
||||
},
|
||||
'update': function (oElement, fValueAccessor) {
|
||||
$(oElement).text(JSON.stringify(ko.unwrap(fValueAccessor())));
|
||||
}
|
||||
};
|
||||
|
||||
ko.bindingHandlers.tooltip = {
|
||||
'init': function (oElement, fValueAccessor) {
|
||||
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
Globals = require('Common/Globals'),
|
||||
Links = require('Common/Links'),
|
||||
|
||||
PgpStore = require('Stores/User/Pgp'),
|
||||
|
||||
AttachmentModel = require('Model/Attachment'),
|
||||
|
||||
MessageHelper = require('Helper/Message'),
|
||||
|
@ -82,7 +80,6 @@
|
|||
}, this);
|
||||
|
||||
this.body = null;
|
||||
this.plainRaw = '';
|
||||
|
||||
this.isHtml = ko.observable(false);
|
||||
this.hasImages = ko.observable(false);
|
||||
|
@ -984,25 +981,6 @@
|
|||
{
|
||||
this.body.data('rl-is-html', !!this.isHtml());
|
||||
this.body.data('rl-has-images', !!this.hasImages());
|
||||
|
||||
this.body.data('rl-plain-raw', this.plainRaw);
|
||||
|
||||
if (require('Stores/User/Pgp').capaOpenPGP())
|
||||
{
|
||||
this.body.data('rl-plain-pgp-signed', !!this.isPgpSigned());
|
||||
this.body.data('rl-plain-pgp-encrypted', !!this.isPgpEncrypted());
|
||||
this.body.data('rl-pgp-verify-status', this.pgpSignedVerifyStatus());
|
||||
this.body.data('rl-pgp-verify-user', this.pgpSignedVerifyUser());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
MessageModel.prototype.storePgpVerifyDataInDom = function ()
|
||||
{
|
||||
if (this.body && require('Stores/User/Pgp').capaOpenPGP())
|
||||
{
|
||||
this.body.data('rl-pgp-verify-status', this.pgpSignedVerifyStatus());
|
||||
this.body.data('rl-pgp-verify-user', this.pgpSignedVerifyUser());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1012,157 +990,6 @@
|
|||
{
|
||||
this.isHtml(!!this.body.data('rl-is-html'));
|
||||
this.hasImages(!!this.body.data('rl-has-images'));
|
||||
|
||||
this.plainRaw = Utils.pString(this.body.data('rl-plain-raw'));
|
||||
|
||||
if (require('Stores/User/Pgp').capaOpenPGP())
|
||||
{
|
||||
this.isPgpSigned(!!this.body.data('rl-plain-pgp-signed'));
|
||||
this.isPgpEncrypted(!!this.body.data('rl-plain-pgp-encrypted'));
|
||||
this.pgpSignedVerifyStatus(this.body.data('rl-pgp-verify-status'));
|
||||
this.pgpSignedVerifyUser(this.body.data('rl-pgp-verify-user'));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.isPgpSigned(false);
|
||||
this.isPgpEncrypted(false);
|
||||
this.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.None);
|
||||
this.pgpSignedVerifyUser('');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
MessageModel.prototype.verifyPgpSignedClearMessage = function ()
|
||||
{
|
||||
if (this.isPgpSigned())
|
||||
{
|
||||
var
|
||||
aRes = [],
|
||||
mPgpMessage = null,
|
||||
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
|
||||
aPublicKeys = PgpStore.findPublicKeysByEmail(sFrom),
|
||||
oValidKey = null,
|
||||
oValidSysKey = null,
|
||||
sPlain = ''
|
||||
;
|
||||
|
||||
this.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.Error);
|
||||
this.pgpSignedVerifyUser('');
|
||||
|
||||
try
|
||||
{
|
||||
mPgpMessage = PgpStore.openpgp.cleartext.readArmored(this.plainRaw);
|
||||
if (mPgpMessage && mPgpMessage.getText)
|
||||
{
|
||||
this.pgpSignedVerifyStatus(
|
||||
aPublicKeys.length ? Enums.SignedVerifyStatus.Unverified : Enums.SignedVerifyStatus.UnknownPublicKeys);
|
||||
|
||||
aRes = mPgpMessage.verify(aPublicKeys);
|
||||
if (aRes && 0 < aRes.length)
|
||||
{
|
||||
oValidKey = _.find(aRes, function (oItem) {
|
||||
return oItem && oItem.keyid && oItem.valid;
|
||||
});
|
||||
|
||||
if (oValidKey)
|
||||
{
|
||||
oValidSysKey = PgpStore.findPublicKeyByHex(oValidKey.keyid.toHex());
|
||||
if (oValidSysKey)
|
||||
{
|
||||
sPlain = mPgpMessage.getText();
|
||||
|
||||
this.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.Success);
|
||||
this.pgpSignedVerifyUser(oValidSysKey.user);
|
||||
|
||||
sPlain =
|
||||
Globals.$div.empty().append(
|
||||
$('<pre class="b-plain-openpgp signed verified"></pre>').text(sPlain)
|
||||
).html()
|
||||
;
|
||||
|
||||
Globals.$div.empty();
|
||||
|
||||
this.replacePlaneTextBody(sPlain);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (oExc) {}
|
||||
|
||||
this.storePgpVerifyDataInDom();
|
||||
}
|
||||
};
|
||||
|
||||
MessageModel.prototype.decryptPgpEncryptedMessage = function (sPassword)
|
||||
{
|
||||
if (this.isPgpEncrypted())
|
||||
{
|
||||
var
|
||||
aRes = [],
|
||||
mPgpMessage = null,
|
||||
mPgpMessageDecrypted = null,
|
||||
sFrom = this.from && this.from[0] && this.from[0].email ? this.from[0].email : '',
|
||||
aPublicKey = PgpStore.findPublicKeysByEmail(sFrom),
|
||||
oPrivateKey = PgpStore.findSelfPrivateKey(sPassword),
|
||||
oValidKey = null,
|
||||
oValidSysKey = null,
|
||||
sPlain = ''
|
||||
;
|
||||
|
||||
this.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.Error);
|
||||
this.pgpSignedVerifyUser('');
|
||||
|
||||
if (!oPrivateKey)
|
||||
{
|
||||
this.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.UnknownPrivateKey);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
mPgpMessage = PgpStore.openpgp.message.readArmored(this.plainRaw);
|
||||
if (mPgpMessage && oPrivateKey && mPgpMessage.decrypt)
|
||||
{
|
||||
this.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.Unverified);
|
||||
|
||||
mPgpMessageDecrypted = mPgpMessage.decrypt(oPrivateKey);
|
||||
if (mPgpMessageDecrypted)
|
||||
{
|
||||
aRes = mPgpMessageDecrypted.verify(aPublicKey);
|
||||
if (aRes && 0 < aRes.length)
|
||||
{
|
||||
oValidKey = _.find(aRes, function (oItem) {
|
||||
return oItem && oItem.keyid && oItem.valid;
|
||||
});
|
||||
|
||||
if (oValidKey)
|
||||
{
|
||||
oValidSysKey = PgpStore.findPublicKeyByHex(oValidKey.keyid.toHex());
|
||||
if (oValidSysKey)
|
||||
{
|
||||
this.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.Success);
|
||||
this.pgpSignedVerifyUser(oValidSysKey.user);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sPlain = mPgpMessageDecrypted.getText();
|
||||
|
||||
sPlain =
|
||||
Globals.$div.empty().append(
|
||||
$('<pre class="b-plain-openpgp signed verified"></pre>').text(sPlain)
|
||||
).html()
|
||||
;
|
||||
|
||||
Globals.$div.empty();
|
||||
|
||||
this.replacePlaneTextBody(sPlain);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (oExc) {}
|
||||
|
||||
this.storePgpVerifyDataInDom();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
_ = require('_'),
|
||||
ko = require('ko'),
|
||||
|
||||
PgpStore = require('Stores/User/Pgp'),
|
||||
|
||||
AbstractModel = require('Knoin/AbstractModel')
|
||||
;
|
||||
|
||||
|
@ -45,6 +47,22 @@
|
|||
OpenPgpKeyModel.prototype.armor = '';
|
||||
OpenPgpKeyModel.prototype.isPrivate = false;
|
||||
|
||||
OpenPgpKeyModel.prototype.getNativeKeys = function ()
|
||||
{
|
||||
var oKey = null;
|
||||
try
|
||||
{
|
||||
oKey = PgpStore.openpgp.key.readArmored(this.armor);
|
||||
if (oKey && !oKey.err && oKey.keys && oKey.keys[0])
|
||||
{
|
||||
return oKey.keys;
|
||||
}
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
module.exports = OpenPgpKeyModel;
|
||||
|
||||
}());
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
AppStore = require('Stores/User/App'),
|
||||
FolderStore = require('Stores/User/Folder'),
|
||||
PgpStore = require('Stores/User/Pgp'),
|
||||
SettingsStore = require('Stores/User/Settings'),
|
||||
|
||||
Remote = require('Remote/User/Ajax'),
|
||||
|
@ -502,6 +503,19 @@
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Object} oMessageTextBody
|
||||
*/
|
||||
MessageUserStore.prototype.initOpenPgpControls = function (oMessageTextBody)
|
||||
{
|
||||
if (oMessageTextBody && oMessageTextBody.find)
|
||||
{
|
||||
oMessageTextBody.find('.b-plain-openpgp:not(.inited)').each(function () {
|
||||
PgpStore.initMessageBodyControls($(this));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
MessageUserStore.prototype.setMessage = function (oData, bCached)
|
||||
{
|
||||
var
|
||||
|
@ -512,6 +526,7 @@
|
|||
oBody = null,
|
||||
oTextBody = null,
|
||||
sId = '',
|
||||
sPlain = '',
|
||||
sResultHtml = '',
|
||||
bPgpSigned = false,
|
||||
bPgpEncrypted = false,
|
||||
|
@ -579,13 +594,13 @@
|
|||
|
||||
if ((oMessage.isPgpSigned() || oMessage.isPgpEncrypted()) && require('Stores/User/Pgp').capaOpenPGP())
|
||||
{
|
||||
oMessage.plainRaw = Utils.pString(oData.Result.Plain);
|
||||
sPlain = Utils.pString(oData.Result.Plain);
|
||||
|
||||
bPgpEncrypted = /---BEGIN PGP MESSAGE---/.test(oMessage.plainRaw);
|
||||
bPgpEncrypted = /---BEGIN PGP MESSAGE---/.test(sPlain);
|
||||
if (!bPgpEncrypted)
|
||||
{
|
||||
bPgpSigned = /-----BEGIN PGP SIGNED MESSAGE-----/.test(oMessage.plainRaw) &&
|
||||
/-----BEGIN PGP SIGNATURE-----/.test(oMessage.plainRaw);
|
||||
bPgpSigned = /-----BEGIN PGP SIGNED MESSAGE-----/.test(sPlain) &&
|
||||
/-----BEGIN PGP SIGNATURE-----/.test(sPlain);
|
||||
}
|
||||
|
||||
Globals.$div.empty();
|
||||
|
@ -593,7 +608,7 @@
|
|||
{
|
||||
sResultHtml =
|
||||
Globals.$div.append(
|
||||
$('<pre class="b-plain-openpgp signed"></pre>').text(oMessage.plainRaw)
|
||||
$('<pre class="b-plain-openpgp signed"></pre>').text(sPlain)
|
||||
).html()
|
||||
;
|
||||
}
|
||||
|
@ -601,11 +616,13 @@
|
|||
{
|
||||
sResultHtml =
|
||||
Globals.$div.append(
|
||||
$('<pre class="b-plain-openpgp encrypted"></pre>').text(oMessage.plainRaw)
|
||||
$('<pre class="b-plain-openpgp encrypted"></pre>').text(sPlain)
|
||||
).html()
|
||||
;
|
||||
}
|
||||
|
||||
sPlain = '';
|
||||
|
||||
Globals.$div.empty();
|
||||
|
||||
oMessage.isPgpSigned(bPgpSigned);
|
||||
|
@ -624,8 +641,6 @@
|
|||
|
||||
oMessage.isHtml(!!bIsHtml);
|
||||
oMessage.hasImages(!!bHasExternals);
|
||||
oMessage.pgpSignedVerifyStatus(Enums.SignedVerifyStatus.None);
|
||||
oMessage.pgpSignedVerifyUser('');
|
||||
|
||||
oMessage.body = oBody;
|
||||
if (oMessage.body)
|
||||
|
@ -663,6 +678,8 @@
|
|||
|
||||
if (oBody)
|
||||
{
|
||||
this.initOpenPgpControls(oBody);
|
||||
|
||||
this.initBlockquoteSwitcher(oBody);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
var
|
||||
_ = require('_'),
|
||||
ko = require('ko'),
|
||||
$ = require('$'),
|
||||
kn = require('Knoin/Knoin'),
|
||||
|
||||
Translator = require('Common/Translator'),
|
||||
|
||||
Utils = require('Common/Utils')
|
||||
;
|
||||
|
@ -41,32 +45,41 @@
|
|||
PgpUserStore.prototype.findPublicKeyByHex = function (sHash)
|
||||
{
|
||||
return _.find(this.openpgpkeysPublic(), function (oItem) {
|
||||
return oItem && sHash === oItem.id;
|
||||
return sHash && oItem && sHash === oItem.id;
|
||||
});
|
||||
};
|
||||
|
||||
PgpUserStore.prototype.findPrivateKeyByHex = function (sHash)
|
||||
{
|
||||
return _.find(this.openpgpkeysPrivate(), function (oItem) {
|
||||
return sHash && oItem && sHash === oItem.id;
|
||||
});
|
||||
};
|
||||
|
||||
PgpUserStore.prototype.findPublicKeysByEmail = function (sEmail)
|
||||
{
|
||||
return _.compact(_.flatten(_.map(this.openpgpkeysPublic(), function (oItem) {
|
||||
var oKey = oItem && sEmail === oItem.email ? oItem : null;
|
||||
return oKey ? oKey.getNativeKeys() : [null];
|
||||
}), true));
|
||||
};
|
||||
|
||||
PgpUserStore.prototype.findPublicKeysBySigningKeyIds = function (aSigningKeyIds)
|
||||
{
|
||||
var self = this;
|
||||
return _.compact(_.map(this.openpgpkeysPublic(), function (oItem) {
|
||||
return _.compact(_.flatten(_.map(aSigningKeyIds, function (oId) {
|
||||
var oKey = oId && oId.toHex ? self.findPublicKeyByHex(oId.toHex()) : null;
|
||||
return oKey ? oKey.getNativeKeys() : [null];
|
||||
}), true));
|
||||
};
|
||||
|
||||
var oKey = null;
|
||||
if (oItem && sEmail === oItem.email)
|
||||
{
|
||||
try
|
||||
{
|
||||
oKey = self.openpgp.key.readArmored(oItem.armor);
|
||||
if (oKey && !oKey.err && oKey.keys && oKey.keys[0])
|
||||
{
|
||||
return oKey.keys[0];
|
||||
}
|
||||
}
|
||||
catch (e) {}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}));
|
||||
PgpUserStore.prototype.findPrivateKeysByEncryptionKeyIds = function (aEncryptionKeyIds, bReturnWrapKeys)
|
||||
{
|
||||
var self = this;
|
||||
return _.compact(_.flatten(_.map(aEncryptionKeyIds, function (oId) {
|
||||
var oKey = oId && oId.toHex ? self.findPrivateKeyByHex(oId.toHex()) : null;
|
||||
return oKey ? (bReturnWrapKeys ? [oKey] : oKey.getNativeKeys()) : [null];
|
||||
}), true));
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -77,6 +90,7 @@
|
|||
PgpUserStore.prototype.findPrivateKeyByEmail = function (sEmail, sPassword)
|
||||
{
|
||||
var
|
||||
oPrivateKeys = [],
|
||||
oPrivateKey = null,
|
||||
oKey = _.find(this.openpgpkeysPrivate(), function (oItem) {
|
||||
return oItem && sEmail === oItem.email;
|
||||
|
@ -85,18 +99,15 @@
|
|||
|
||||
if (oKey)
|
||||
{
|
||||
oPrivateKeys = oKey.getNativeKeys();
|
||||
oPrivateKey = oPrivateKeys[0] || null;
|
||||
|
||||
try
|
||||
{
|
||||
oPrivateKey = this.openpgp.key.readArmored(oKey.armor);
|
||||
if (oPrivateKey && !oPrivateKey.err && oPrivateKey.keys && oPrivateKey.keys[0])
|
||||
if (oPrivateKey)
|
||||
{
|
||||
oPrivateKey = oPrivateKey.keys[0];
|
||||
oPrivateKey.decrypt(Utils.pString(sPassword));
|
||||
}
|
||||
else
|
||||
{
|
||||
oPrivateKey = null;
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
|
@ -116,6 +127,259 @@
|
|||
return this.findPrivateKeyByEmail(require('Stores/User/Account').email(), sPassword);
|
||||
};
|
||||
|
||||
PgpUserStore.prototype.decryptMessage = function (oMessage, fCallback)
|
||||
{
|
||||
var self = this, aPrivateKeys = [], aEncryptionKeyIds = [];
|
||||
if (oMessage && oMessage.getSigningKeyIds)
|
||||
{
|
||||
aEncryptionKeyIds = oMessage.getEncryptionKeyIds();
|
||||
if (aEncryptionKeyIds)
|
||||
{
|
||||
aPrivateKeys = this.findPrivateKeysByEncryptionKeyIds(aEncryptionKeyIds, true);
|
||||
if (aPrivateKeys && 0 < aPrivateKeys.length)
|
||||
{
|
||||
kn.showScreenPopup(require('View/Popup/MessageOpenPgp'), [function (oDecriptedKey) {
|
||||
|
||||
if (oDecriptedKey)
|
||||
{
|
||||
var oPrivateKey = null, oDecryptedMessage = null;
|
||||
try
|
||||
{
|
||||
oDecryptedMessage = oMessage.decrypt(oDecriptedKey);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
oDecryptedMessage = null;
|
||||
}
|
||||
|
||||
if (oDecryptedMessage)
|
||||
{
|
||||
oPrivateKey = self.findPrivateKeyByHex(oDecriptedKey.primaryKey.keyid.toHex());
|
||||
if (oPrivateKey)
|
||||
{
|
||||
self.verifyMessage(oDecryptedMessage, function (oValidKey, aSigningKeyIds) {
|
||||
fCallback(oPrivateKey, oDecryptedMessage, oValidKey || null, aSigningKeyIds || null);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
fCallback(oPrivateKey, oDecryptedMessage);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fCallback(oPrivateKey, oDecryptedMessage);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fCallback(null, null);
|
||||
}
|
||||
|
||||
}, aPrivateKeys]);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fCallback(null, null);
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
PgpUserStore.prototype.verifyMessage = function (oMessage, fCallback)
|
||||
{
|
||||
var oValid = null, aResult = [], aPublicKeys = [], aSigningKeyIds = [];
|
||||
if (oMessage && oMessage.getSigningKeyIds)
|
||||
{
|
||||
aSigningKeyIds = oMessage.getSigningKeyIds();
|
||||
if (aSigningKeyIds && 0 < aSigningKeyIds.length)
|
||||
{
|
||||
aPublicKeys = this.findPublicKeysBySigningKeyIds(aSigningKeyIds);
|
||||
if (aPublicKeys && 0 < aPublicKeys.length)
|
||||
{
|
||||
try
|
||||
{
|
||||
aResult = oMessage.verify(aPublicKeys);
|
||||
oValid = _.find(_.isArray(aResult) ? aResult : [], function (oItem) {
|
||||
return oItem && oItem.valid && oItem.keyid;
|
||||
});
|
||||
|
||||
if (oValid && oValid.keyid && oValid.keyid && oValid.keyid.toHex)
|
||||
{
|
||||
fCallback(this.findPublicKeyByHex(oValid.keyid.toHex()));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (e) {}
|
||||
}
|
||||
|
||||
fCallback(null, aSigningKeyIds);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
fCallback(null);
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {*} mDom
|
||||
*/
|
||||
PgpUserStore.prototype.controlsHelper = function (mDom, oVerControl, bSuccess, sTitle, sText)
|
||||
{
|
||||
if (bSuccess)
|
||||
{
|
||||
mDom.removeClass('error').addClass('success').attr('title', sTitle);
|
||||
oVerControl.removeClass('error').addClass('success').attr('title', sTitle);
|
||||
}
|
||||
else
|
||||
{
|
||||
mDom.removeClass('success').addClass('error').attr('title', sTitle);
|
||||
oVerControl.removeClass('success').addClass('error').attr('title', sTitle);
|
||||
}
|
||||
|
||||
if (undefined !== sText)
|
||||
{
|
||||
mDom.text(Utils.trim(sText.replace(/(\u200C|\u0002)/g, '')));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {*} mDom
|
||||
*/
|
||||
PgpUserStore.prototype.initMessageBodyControls = function (mDom)
|
||||
{
|
||||
if (mDom && !mDom.hasClass('inited'))
|
||||
{
|
||||
mDom.addClass('inited');
|
||||
|
||||
var
|
||||
self = this,
|
||||
bEncrypted = mDom.hasClass('encrypted'),
|
||||
bSigned = mDom.hasClass('signed'),
|
||||
oVerControl = null,
|
||||
sData = ''
|
||||
;
|
||||
|
||||
if (bEncrypted || bSigned)
|
||||
{
|
||||
sData = mDom.text();
|
||||
mDom.data('openpgp-original', sData);
|
||||
|
||||
if (bEncrypted)
|
||||
{
|
||||
oVerControl = $('<div class="b-openpgp-control"><i class="icon-lock"></i></div>')
|
||||
.attr('title', Translator.i18n('MESSAGE/PGP_ENCRYPTED_MESSAGE_DESC'));
|
||||
|
||||
oVerControl.on('click', function () {
|
||||
if ($(this).hasClass('success'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var oMessage = self.openpgp.message.readArmored(sData);
|
||||
if (oMessage && oMessage.getText && oMessage.verify && oMessage.decrypt)
|
||||
{
|
||||
self.decryptMessage(oMessage, function (oValidPrivateKey, oDecriptedMessage, oValidPublicKey, aSigningKeyIds) {
|
||||
|
||||
if (oDecriptedMessage)
|
||||
{
|
||||
if (oValidPublicKey)
|
||||
{
|
||||
self.controlsHelper(mDom, oVerControl, true, Translator.i18n('PGP_NOTIFICATIONS/GOOD_SIGNATURE', {
|
||||
'USER': oValidPublicKey.user + ' (' + oValidPublicKey.id + ')'
|
||||
}), oDecriptedMessage.getText());
|
||||
}
|
||||
else if (oValidPrivateKey)
|
||||
{
|
||||
var
|
||||
aKeyIds = Utils.isNonEmptyArray(aSigningKeyIds) ? aSigningKeyIds : null,
|
||||
sAdditional = aKeyIds ? _.compact(_.map(aKeyIds, function (oItem) {
|
||||
return oItem && oItem.toHex ? oItem.toHex() : null;
|
||||
})).join(', ') : ''
|
||||
;
|
||||
|
||||
self.controlsHelper(mDom, oVerControl, false,
|
||||
Translator.i18n('PGP_NOTIFICATIONS/UNVERIFIRED_SIGNATURE') +
|
||||
(sAdditional ? ' (' + sAdditional + ')' : ''),
|
||||
oDecriptedMessage.getText());
|
||||
}
|
||||
else
|
||||
{
|
||||
self.controlsHelper(mDom, oVerControl, false,
|
||||
Translator.i18n('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
self.controlsHelper(mDom, oVerControl, false,
|
||||
Translator.i18n('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
self.controlsHelper(mDom, oVerControl, false, Translator.i18n('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
|
||||
return false;
|
||||
|
||||
});
|
||||
}
|
||||
else if (bSigned)
|
||||
{
|
||||
oVerControl = $('<div class="b-openpgp-control"><i class="icon-lock"></i></div>')
|
||||
.attr('title', Translator.i18n('MESSAGE/PGP_SIGNED_MESSAGE_DESC'));
|
||||
|
||||
oVerControl.on('click', function () {
|
||||
|
||||
if ($(this).hasClass('success') || $(this).hasClass('error'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var oMessage = self.openpgp.cleartext.readArmored(sData);
|
||||
if (oMessage && oMessage.getText && oMessage.verify)
|
||||
{
|
||||
self.verifyMessage(oMessage, function (oValidKey, aSigningKeyIds) {
|
||||
if (oValidKey)
|
||||
{
|
||||
self.controlsHelper(mDom, oVerControl, true, Translator.i18n('PGP_NOTIFICATIONS/GOOD_SIGNATURE', {
|
||||
'USER': oValidKey.user + ' (' + oValidKey.id + ')'
|
||||
}), oMessage.getText());
|
||||
}
|
||||
else
|
||||
{
|
||||
var
|
||||
aKeyIds = Utils.isNonEmptyArray(aSigningKeyIds) ? aSigningKeyIds : null,
|
||||
sAdditional = aKeyIds ? _.compact(_.map(aKeyIds, function (oItem) {
|
||||
return oItem && oItem.toHex ? oItem.toHex() : null;
|
||||
})).join(', ') : ''
|
||||
;
|
||||
|
||||
self.controlsHelper(mDom, oVerControl, false,
|
||||
Translator.i18n('PGP_NOTIFICATIONS/UNVERIFIRED_SIGNATURE') +
|
||||
(sAdditional ? ' (' + sAdditional + ')' : ''));
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
self.controlsHelper(mDom, oVerControl, false, Translator.i18n('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
if (oVerControl)
|
||||
{
|
||||
mDom.before(oVerControl).before('<div></div>');
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = new PgpUserStore();
|
||||
|
||||
}());
|
||||
|
|
|
@ -407,6 +407,16 @@ html.rl-no-preview-pane {
|
|||
display: inline-block;
|
||||
padding: 6px 10px;
|
||||
border: 1px dashed #666;
|
||||
background: #fff;
|
||||
|
||||
&.success {
|
||||
border-color: green;
|
||||
background-color: rgba(0, 255, 0, 0.03);
|
||||
}
|
||||
&.error {
|
||||
border-color: red;
|
||||
background-color: rgba(255, 0, 0, 0.03);
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
|
@ -424,6 +434,27 @@ html.rl-no-preview-pane {
|
|||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
.b-openpgp-control {
|
||||
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
color: #777;
|
||||
/*float: left;*/
|
||||
|
||||
&:hover {
|
||||
color: #111;
|
||||
}
|
||||
|
||||
&.success {
|
||||
color: green;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
&.error {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.popups {
|
||||
.b-open-pgp-key-view-content, .b-open-pgp-key-generate-content, .b-open-pgp-key-add-content, .b-compose-open-pgp-content {
|
||||
.b-open-pgp-key-view-content, .b-open-pgp-key-generate-content, .b-open-pgp-key-add-content, .b-compose-open-pgp-content, .b-message-open-pgp-content {
|
||||
|
||||
.modal-header {
|
||||
background-color: #fff;
|
||||
|
@ -18,4 +18,35 @@
|
|||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.b-message-open-pgp-content {
|
||||
&.modal {
|
||||
width: 700px;
|
||||
}
|
||||
|
||||
.key-list {
|
||||
|
||||
margin-top: 5px;
|
||||
overflow: hidden;
|
||||
|
||||
&__item {
|
||||
|
||||
color: #555;
|
||||
cursor: pointer;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
&__radio {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
&__name {
|
||||
|
||||
&:hover {
|
||||
border-bottom: 1px dashed #555;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -632,7 +632,7 @@
|
|||
oEditor.setPlain(sResult);
|
||||
});
|
||||
},
|
||||
this.oEditor.getData(),
|
||||
this.oEditor.getData(false, true),
|
||||
this.currentIdentity(),
|
||||
this.to(),
|
||||
this.cc(),
|
||||
|
|
|
@ -109,25 +109,20 @@
|
|||
|
||||
if (self.resultCallback && bResult)
|
||||
{
|
||||
try {
|
||||
|
||||
var oPromise = null;
|
||||
try
|
||||
{
|
||||
if (oPrivateKey && 0 === aPublicKeys.length)
|
||||
{
|
||||
self.resultCallback(
|
||||
PgpStore.openpgp.signClearMessage([oPrivateKey], self.text())
|
||||
);
|
||||
oPromise = PgpStore.openpgp.signClearMessage([oPrivateKey], self.text());
|
||||
}
|
||||
else if (oPrivateKey && 0 < aPublicKeys.length)
|
||||
{
|
||||
self.resultCallback(
|
||||
PgpStore.openpgp.signAndEncryptMessage(aPublicKeys, oPrivateKey, self.text())
|
||||
);
|
||||
oPromise = PgpStore.openpgp.signAndEncryptMessage(aPublicKeys, oPrivateKey, self.text());
|
||||
}
|
||||
else if (!oPrivateKey && 0 < aPublicKeys.length)
|
||||
{
|
||||
self.resultCallback(
|
||||
PgpStore.openpgp.encryptMessage(aPublicKeys, self.text())
|
||||
);
|
||||
oPromise = PgpStore.openpgp.encryptMessage(aPublicKeys, self.text());
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
|
@ -135,14 +130,30 @@
|
|||
self.notification(Translator.i18n('PGP_NOTIFICATIONS/PGP_ERROR', {
|
||||
'ERROR': '' + e
|
||||
}));
|
||||
|
||||
bResult = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (bResult)
|
||||
{
|
||||
self.cancelCommand();
|
||||
if (oPromise)
|
||||
{
|
||||
try
|
||||
{
|
||||
oPromise.then(function (mData) {
|
||||
|
||||
self.resultCallback(mData);
|
||||
self.cancelCommand();
|
||||
|
||||
})['catch'](function (e) {
|
||||
self.notification(Translator.i18n('PGP_NOTIFICATIONS/PGP_ERROR', {
|
||||
'ERROR': '' + e
|
||||
}));
|
||||
});
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
self.notification(Translator.i18n('PGP_NOTIFICATIONS/PGP_ERROR', {
|
||||
'ERROR': '' + e
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.submitRequest(false);
|
||||
|
|
179
dev/View/Popup/MessageOpenPgp.js
Normal file
179
dev/View/Popup/MessageOpenPgp.js
Normal file
|
@ -0,0 +1,179 @@
|
|||
|
||||
(function () {
|
||||
|
||||
'use strict';
|
||||
|
||||
var
|
||||
_ = require('_'),
|
||||
ko = require('ko'),
|
||||
key = require('key'),
|
||||
|
||||
Utils = require('Common/Utils'),
|
||||
Enums = require('Common/Enums'),
|
||||
|
||||
kn = require('Knoin/Knoin'),
|
||||
AbstractView = require('Knoin/AbstractView')
|
||||
;
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractView
|
||||
*/
|
||||
function MessageOpenPgpPopupView()
|
||||
{
|
||||
AbstractView.call(this, 'Popups', 'PopupsMessageOpenPgp');
|
||||
|
||||
this.notification = ko.observable('');
|
||||
|
||||
this.selectedKey = ko.observable(null);
|
||||
this.privateKeys = ko.observableArray([]);
|
||||
|
||||
this.password = ko.observable('');
|
||||
this.password.focus = ko.observable(false);
|
||||
this.buttonFocus = ko.observable(false);
|
||||
|
||||
this.resultCallback = null;
|
||||
|
||||
this.submitRequest = ko.observable(false);
|
||||
|
||||
// commands
|
||||
this.doCommand = Utils.createCommand(this, function () {
|
||||
|
||||
this.submitRequest(true);
|
||||
|
||||
_.delay(_.bind(function() {
|
||||
|
||||
var
|
||||
oPrivateKeys = [],
|
||||
oPrivateKey = null
|
||||
;
|
||||
|
||||
try
|
||||
{
|
||||
if (this.resultCallback && this.selectedKey())
|
||||
{
|
||||
oPrivateKeys = this.selectedKey().getNativeKeys();
|
||||
oPrivateKey = oPrivateKeys && oPrivateKeys[0] ? oPrivateKeys[0] : null;
|
||||
|
||||
if (oPrivateKey)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!oPrivateKey.decrypt(Utils.pString(this.password())))
|
||||
{
|
||||
oPrivateKey = null;
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
oPrivateKey = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (oExc)
|
||||
{
|
||||
oPrivateKey = null;
|
||||
}
|
||||
|
||||
this.submitRequest(false);
|
||||
|
||||
this.cancelCommand();
|
||||
this.resultCallback(oPrivateKey);
|
||||
|
||||
}, this), 100);
|
||||
|
||||
}, function () {
|
||||
return !this.submitRequest();
|
||||
});
|
||||
|
||||
this.sDefaultKeyScope = Enums.KeyState.PopupMessageOpenPGP;
|
||||
|
||||
kn.constructorEnd(this);
|
||||
}
|
||||
|
||||
kn.extendAsViewModel(['View/Popup/MessageOpenPgp'], MessageOpenPgpPopupView);
|
||||
_.extend(MessageOpenPgpPopupView.prototype, AbstractView.prototype);
|
||||
|
||||
MessageOpenPgpPopupView.prototype.clearPopup = function ()
|
||||
{
|
||||
this.notification('');
|
||||
|
||||
this.password('');
|
||||
this.password.focus(false);
|
||||
this.buttonFocus(false);
|
||||
|
||||
this.selectedKey(false);
|
||||
this.submitRequest(false);
|
||||
|
||||
this.resultCallback = null;
|
||||
this.privateKeys([]);
|
||||
};
|
||||
|
||||
MessageOpenPgpPopupView.prototype.onBuild = function (oDom)
|
||||
{
|
||||
key('tab,shift+tab', Enums.KeyState.PopupMessageOpenPGP, _.bind(function () {
|
||||
|
||||
switch (true)
|
||||
{
|
||||
case this.password.focus():
|
||||
this.buttonFocus(true);
|
||||
break;
|
||||
case this.buttonFocus():
|
||||
this.password.focus(true);
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}, this));
|
||||
|
||||
var self = this;
|
||||
|
||||
oDom
|
||||
.on('click', '.key-list__item', function () {
|
||||
|
||||
oDom.find('.key-list__item .key-list__item__radio')
|
||||
.addClass('icon-radio-unchecked')
|
||||
.removeClass('icon-radio-checked')
|
||||
;
|
||||
|
||||
$(this).find('.key-list__item__radio')
|
||||
.removeClass('icon-radio-unchecked')
|
||||
.addClass('icon-radio-checked')
|
||||
;
|
||||
|
||||
self.selectedKey(ko.dataFor(this));
|
||||
|
||||
self.password.focus(true);
|
||||
})
|
||||
;
|
||||
};
|
||||
|
||||
MessageOpenPgpPopupView.prototype.onHideWithDelay = function ()
|
||||
{
|
||||
this.clearPopup();
|
||||
};
|
||||
|
||||
MessageOpenPgpPopupView.prototype.onShowWithDelay = function ()
|
||||
{
|
||||
this.password.focus(true);
|
||||
// this.buttonFocus(true);
|
||||
};
|
||||
|
||||
MessageOpenPgpPopupView.prototype.onShow = function (fCallback, aPrivateKeys)
|
||||
{
|
||||
this.clearPopup();
|
||||
|
||||
this.resultCallback = fCallback;
|
||||
this.privateKeys(aPrivateKeys);
|
||||
|
||||
if (this.viewModelDom)
|
||||
{
|
||||
this.viewModelDom.find('.key-list__item').first().click();
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = MessageOpenPgpPopupView;
|
||||
|
||||
}());
|
|
@ -62,29 +62,36 @@
|
|||
|
||||
_.delay(function () {
|
||||
|
||||
mKeyPair = false;
|
||||
var mPromise = false;
|
||||
|
||||
try {
|
||||
mKeyPair = PgpStore.openpgp.generateKeyPair({
|
||||
|
||||
mPromise = PgpStore.openpgp.generateKeyPair({
|
||||
'userId': sUserID,
|
||||
'numBits': Utils.pInt(self.keyBitLength()),
|
||||
'passphrase': Utils.trim(self.password())
|
||||
});
|
||||
} catch (e) {
|
||||
// window.console.log(e);
|
||||
}
|
||||
|
||||
if (mKeyPair && mKeyPair.privateKeyArmored)
|
||||
{
|
||||
oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored);
|
||||
oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored);
|
||||
oOpenpgpKeyring.store();
|
||||
mPromise.then(function () {
|
||||
|
||||
require('App/User').reloadOpenPgpKeys();
|
||||
Utils.delegateRun(self, 'cancelCommand');
|
||||
}
|
||||
self.submitRequest(false);
|
||||
|
||||
if (mKeyPair && mKeyPair.privateKeyArmored)
|
||||
{
|
||||
oOpenpgpKeyring.privateKeys.importKey(mKeyPair.privateKeyArmored);
|
||||
oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored);
|
||||
oOpenpgpKeyring.store();
|
||||
|
||||
require('App/User').reloadOpenPgpKeys();
|
||||
Utils.delegateRun(self, 'cancelCommand');
|
||||
}
|
||||
|
||||
})['catch'](function() {
|
||||
self.submitRequest(false);
|
||||
});
|
||||
|
||||
} catch (e) {}
|
||||
|
||||
self.submitRequest(false);
|
||||
|
||||
}, 100);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -303,16 +303,6 @@
|
|||
this.viewIsImportant = ko.observable(false);
|
||||
this.viewIsFlagged = ko.observable(false);
|
||||
|
||||
// PGP
|
||||
this.viewPgpPassword = ko.observable('');
|
||||
this.viewPgpSignedVerifyStatus = ko.computed(function () {
|
||||
return this.message() ? this.message().pgpSignedVerifyStatus() : Enums.SignedVerifyStatus.None;
|
||||
}, this);
|
||||
|
||||
this.viewPgpSignedVerifyUser = ko.computed(function () {
|
||||
return this.message() ? this.message().pgpSignedVerifyUser() : '';
|
||||
}, this);
|
||||
|
||||
this.viewFromDkimStatusIconClass = ko.computed(function () {
|
||||
|
||||
var sResult = 'icon-none iconcolor-display-none';
|
||||
|
@ -361,8 +351,6 @@
|
|||
|
||||
this.messageActiveDom(null);
|
||||
|
||||
this.viewPgpPassword('');
|
||||
|
||||
if (oMessage)
|
||||
{
|
||||
this.showAttachmnetControls(false);
|
||||
|
@ -523,48 +511,6 @@
|
|||
return sResult;
|
||||
};
|
||||
|
||||
MessageViewMailBoxUserView.prototype.isPgpActionVisible = function ()
|
||||
{
|
||||
return Enums.SignedVerifyStatus.Success !== this.viewPgpSignedVerifyStatus();
|
||||
};
|
||||
|
||||
MessageViewMailBoxUserView.prototype.isPgpStatusVerifyVisible = function ()
|
||||
{
|
||||
return Enums.SignedVerifyStatus.None !== this.viewPgpSignedVerifyStatus();
|
||||
};
|
||||
|
||||
MessageViewMailBoxUserView.prototype.isPgpStatusVerifySuccess = function ()
|
||||
{
|
||||
return Enums.SignedVerifyStatus.Success === this.viewPgpSignedVerifyStatus();
|
||||
};
|
||||
|
||||
MessageViewMailBoxUserView.prototype.pgpStatusVerifyMessage = function ()
|
||||
{
|
||||
var sResult = '';
|
||||
switch (this.viewPgpSignedVerifyStatus())
|
||||
{
|
||||
case Enums.SignedVerifyStatus.UnknownPublicKeys:
|
||||
sResult = Translator.i18n('PGP_NOTIFICATIONS/NO_PUBLIC_KEYS_FOUND');
|
||||
break;
|
||||
case Enums.SignedVerifyStatus.UnknownPrivateKey:
|
||||
sResult = Translator.i18n('PGP_NOTIFICATIONS/NO_PRIVATE_KEY_FOUND');
|
||||
break;
|
||||
case Enums.SignedVerifyStatus.Unverified:
|
||||
sResult = Translator.i18n('PGP_NOTIFICATIONS/UNVERIFIRED_SIGNATURE');
|
||||
break;
|
||||
case Enums.SignedVerifyStatus.Error:
|
||||
sResult = Translator.i18n('PGP_NOTIFICATIONS/DECRYPTION_ERROR');
|
||||
break;
|
||||
case Enums.SignedVerifyStatus.Success:
|
||||
sResult = Translator.i18n('PGP_NOTIFICATIONS/GOOD_SIGNATURE', {
|
||||
'USER': this.viewPgpSignedVerifyUser()
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
return sResult;
|
||||
};
|
||||
|
||||
MessageViewMailBoxUserView.prototype.fullScreen = function ()
|
||||
{
|
||||
this.fullScreenMode(true);
|
||||
|
@ -1256,31 +1202,6 @@
|
|||
return 0 < iCnt ? (100 > iCnt ? iCnt : '99+') : '';
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {MessageModel} oMessage
|
||||
*/
|
||||
MessageViewMailBoxUserView.prototype.verifyPgpSignedClearMessage = function (oMessage)
|
||||
{
|
||||
if (oMessage)
|
||||
{
|
||||
oMessage.verifyPgpSignedClearMessage();
|
||||
}
|
||||
|
||||
this.checkHeaderHeight();
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {MessageModel} oMessage
|
||||
*/
|
||||
MessageViewMailBoxUserView.prototype.decryptPgpEncryptedMessage = function (oMessage)
|
||||
{
|
||||
if (oMessage)
|
||||
{
|
||||
oMessage.decryptPgpEncryptedMessage(this.viewPgpPassword());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {MessageModel} oMessage
|
||||
*/
|
||||
|
|
66
gulpfile.js
66
gulpfile.js
|
@ -11,6 +11,7 @@ var
|
|||
devVersion: '0.0.0',
|
||||
releasesPath: 'build/dist/releases',
|
||||
community: true,
|
||||
watch: false,
|
||||
|
||||
rainloopBuilded: false,
|
||||
destPath: '',
|
||||
|
@ -30,17 +31,22 @@ var
|
|||
}
|
||||
},
|
||||
|
||||
_ = require('lodash'),
|
||||
fs = require('node-fs'),
|
||||
path = require('path'),
|
||||
notifier = require('node-notifier'),
|
||||
|
||||
gulp = require('gulp'),
|
||||
concat = require('gulp-concat-util'),
|
||||
header = require('gulp-header'),
|
||||
eol = require('gulp-eol'),
|
||||
stripbom = require('gulp-stripbom'),
|
||||
rename = require('gulp-rename'),
|
||||
replace = require('gulp-replace'),
|
||||
uglify = require('gulp-uglify'),
|
||||
notify = require("gulp-notify"),
|
||||
plumber = require('gulp-plumber'),
|
||||
gulpif = require('gulp-if'),
|
||||
eol = require('gulp-eol'),
|
||||
gutil = require('gulp-util')
|
||||
;
|
||||
|
||||
|
@ -136,7 +142,7 @@ cfg.paths.js = {
|
|||
openpgp: {
|
||||
name: 'openpgp.js',
|
||||
src: [
|
||||
'vendors/openpgp/openpgp-0.7.2.min.js'
|
||||
'vendors/openpgp/openpgp-0.10.1.min.js'
|
||||
]
|
||||
},
|
||||
encrypt: {
|
||||
|
@ -201,14 +207,17 @@ cfg.paths.js = {
|
|||
// CSS
|
||||
gulp.task('less:main', function() {
|
||||
var less = require('gulp-less');
|
||||
|
||||
return gulp.src(cfg.paths.less.main.src)
|
||||
.pipe(gulpif(cfg.watch, plumber({errorHandler: notify.onError("Error: <%= error.message %>")})))
|
||||
.pipe(less({
|
||||
'paths': cfg.paths.less.main.options.paths
|
||||
}))
|
||||
.pipe(rename(cfg.paths.less.main.name))
|
||||
.pipe(eol('\n', true))
|
||||
.pipe(gulp.dest(cfg.paths.staticCSS))
|
||||
.on('error', gutil.log);
|
||||
.on('error', gutil.log)
|
||||
;
|
||||
});
|
||||
|
||||
gulp.task('css:main-begin', ['less:main'], function() {
|
||||
|
@ -220,7 +229,6 @@ gulp.task('css:main-begin', ['less:main'], function() {
|
|||
;
|
||||
|
||||
return gulp.src(cfg.paths.css.main.src)
|
||||
.pipe(plumber())
|
||||
.pipe(concat(cfg.paths.css.main.name))
|
||||
.pipe(autoprefixer('last 3 versions', '> 1%', 'ie 9', 'Firefox ESR', 'Opera 12.1'))
|
||||
// .pipe(csscomb())
|
||||
|
@ -252,7 +260,6 @@ gulp.task('css:main', ['css:clear-less']);
|
|||
gulp.task('css:main:min', ['css:main'], function() {
|
||||
var minifyCss = require('gulp-minify-css');
|
||||
return gulp.src(cfg.paths.staticCSS + cfg.paths.css.main.name)
|
||||
.pipe(plumber())
|
||||
.pipe(minifyCss({
|
||||
'keepSpecialComments': 0
|
||||
}))
|
||||
|
@ -330,10 +337,51 @@ gulp.task('js:webpack', ['js:webpack:clear'], function(callback) {
|
|||
}
|
||||
|
||||
webpack(webpackCfg, function(err, stats) {
|
||||
if (err) {
|
||||
throw new gutil.PluginError('webpack', err);
|
||||
|
||||
var
|
||||
fN = function (err) {
|
||||
if (err)
|
||||
{
|
||||
gutil.log('[webpack]', '---');
|
||||
gutil.log('[webpack]', err.error ? err.error.toString() : '');
|
||||
gutil.log('[webpack]', err.message || '');
|
||||
gutil.log('[webpack]', '---');
|
||||
|
||||
notifier.notify({
|
||||
'sound': true,
|
||||
'title': 'webpack',
|
||||
'message': err.error ? err.error.toString() : err.message
|
||||
});
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
if (err)
|
||||
{
|
||||
if (cfg.watch)
|
||||
{
|
||||
fN(err);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new gutil.PluginError('webpack', err);
|
||||
}
|
||||
}
|
||||
gutil.log('[webpack]', stats.toString({}));
|
||||
else if (stats && stats.compilation && stats.compilation.errors &&
|
||||
stats.compilation.errors[0])
|
||||
{
|
||||
if (cfg.watch)
|
||||
{
|
||||
_.each(stats.compilation.errors, function (err) {
|
||||
fN(err);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new gutil.PluginError('webpack', stats.compilation.errors[0]);
|
||||
}
|
||||
}
|
||||
|
||||
callback();
|
||||
});
|
||||
});
|
||||
|
@ -616,11 +664,13 @@ gulp.task('owncloud+', ['package:community-off', 'owncloud-']);
|
|||
|
||||
//WATCH
|
||||
gulp.task('watch', ['fast'], function() {
|
||||
cfg.watch = true;
|
||||
gulp.watch(cfg.paths.globjs, {interval: 1000}, ['js:app', 'js:admin']);
|
||||
gulp.watch(cfg.paths.less.main.watch, {interval: 1000}, ['css:main']);
|
||||
});
|
||||
|
||||
gulp.task('watch+', ['fast+'], function() {
|
||||
cfg.watch = true;
|
||||
gulp.watch(cfg.paths.globjs, {interval: 1000}, ['js:app', 'js:admin']);
|
||||
gulp.watch(cfg.paths.less.main.watch, {interval: 1000}, ['css:main']);
|
||||
});
|
||||
|
|
150
package.json
150
package.json
|
@ -1,76 +1,78 @@
|
|||
{
|
||||
"name": "RainLoop",
|
||||
"title": "RainLoop Webmail",
|
||||
"version": "1.9.1",
|
||||
"release": "335",
|
||||
"description": "Simple, modern & fast web-based email client",
|
||||
"homepage": "http://rainloop.net",
|
||||
"main": "gulpfile.js",
|
||||
"author": {
|
||||
"name": "RainLoop Team",
|
||||
"email": "support@rainloop.net",
|
||||
"web": "http://rainloop.net"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/RainLoop/rainloop-webmail.git"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"type": "AGPL 3.0",
|
||||
"ulr": "http://www.gnu.org/licenses/agpl-3.0.html"
|
||||
},
|
||||
{
|
||||
"type": "RainLoop Software License",
|
||||
"ulr": "http://www.rainloop.net/licensing/"
|
||||
}
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/RainLoop/rainloop-webmail/issues"
|
||||
},
|
||||
"keywords": [
|
||||
"webmail",
|
||||
"php",
|
||||
"simple",
|
||||
"modern",
|
||||
"mail",
|
||||
"web-based",
|
||||
"email",
|
||||
"client",
|
||||
"plugins"
|
||||
],
|
||||
"readmeFilename": "README.md",
|
||||
"ownCloudPackageVersion": "4.3",
|
||||
"engines": {
|
||||
"node": ">= 0.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
"node-fs": "*",
|
||||
"rimraf": "*",
|
||||
"jshint-summary": "*",
|
||||
|
||||
"webpack": "*",
|
||||
|
||||
"gulp": "*",
|
||||
"gulp-util": "*",
|
||||
"gulp-uglify": "*",
|
||||
"gulp-rimraf": "*",
|
||||
"gulp-jshint": "*",
|
||||
"gulp-less": "1.3.6",
|
||||
"gulp-zip": "*",
|
||||
"gulp-rename": "*",
|
||||
"gulp-replace": "*",
|
||||
"gulp-header": "*",
|
||||
"gulp-eol": "*",
|
||||
"gulp-stripbom": "*",
|
||||
"gulp-minify-css": "*",
|
||||
"gulp-autoprefixer": "*",
|
||||
"gulp-csscomb": "*",
|
||||
"gulp-closure-compiler": "*",
|
||||
"gulp-csslint": "*",
|
||||
"gulp-beautify": "*",
|
||||
"gulp-plumber": "*",
|
||||
"gulp-concat-util": "*"
|
||||
}
|
||||
"name": "RainLoop",
|
||||
"title": "RainLoop Webmail",
|
||||
"version": "1.9.1",
|
||||
"release": "335",
|
||||
"description": "Simple, modern & fast web-based email client",
|
||||
"homepage": "http://rainloop.net",
|
||||
"main": "gulpfile.js",
|
||||
"author": {
|
||||
"name": "RainLoop Team",
|
||||
"email": "support@rainloop.net",
|
||||
"web": "http://rainloop.net"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/RainLoop/rainloop-webmail.git"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"type": "AGPL 3.0",
|
||||
"ulr": "http://www.gnu.org/licenses/agpl-3.0.html"
|
||||
},
|
||||
{
|
||||
"type": "RainLoop Software License",
|
||||
"ulr": "http://www.rainloop.net/licensing/"
|
||||
}
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/RainLoop/rainloop-webmail/issues"
|
||||
},
|
||||
"keywords": [
|
||||
"webmail",
|
||||
"php",
|
||||
"simple",
|
||||
"modern",
|
||||
"mail",
|
||||
"web-based",
|
||||
"email",
|
||||
"client",
|
||||
"plugins"
|
||||
],
|
||||
"readmeFilename": "README.md",
|
||||
"ownCloudPackageVersion": "4.3",
|
||||
"engines": {
|
||||
"node": ">= 0.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"node-fs": "*",
|
||||
"rimraf": "*",
|
||||
"jshint-summary": "*",
|
||||
"webpack": "*",
|
||||
"gulp": "*",
|
||||
"gulp-util": "*",
|
||||
"gulp-uglify": "*",
|
||||
"gulp-rimraf": "*",
|
||||
"gulp-jshint": "*",
|
||||
"gulp-less": "1.3.6",
|
||||
"gulp-zip": "*",
|
||||
"gulp-rename": "*",
|
||||
"gulp-replace": "*",
|
||||
"gulp-header": "*",
|
||||
"gulp-eol": "*",
|
||||
"gulp-stripbom": "*",
|
||||
"gulp-minify-css": "*",
|
||||
"gulp-autoprefixer": "*",
|
||||
"gulp-csscomb": "*",
|
||||
"gulp-closure-compiler": "*",
|
||||
"gulp-csslint": "*",
|
||||
"gulp-beautify": "*",
|
||||
"gulp-plumber": "*",
|
||||
"gulp-concat-util": "*",
|
||||
"gulp-notify": "~2.2.0",
|
||||
"gulp-through": "~0.3.0",
|
||||
"lodash": "~3.9.3",
|
||||
"gulp-if": "~1.2.5",
|
||||
"node-notifier": "~4.2.3"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -460,6 +460,7 @@ class PdoAddressBook
|
|||
|
||||
$this->oLogger->Write('PROPFIND '.$sPath, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
|
||||
$aResponse = null;
|
||||
try
|
||||
{
|
||||
$aResponse = $oClient->propFind($sPath, array(
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
</div>
|
||||
</form>
|
||||
<div class="e-powered thm-powered" data-bind="visible: logoPowered">
|
||||
Powered by <a href="http://rainloop.net" target="_blank">RainLoop</a>
|
||||
Powered by <a href="http://www.rainloop.net" target="_blank">RainLoop</a>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
<span data-i18n="TAB_LICENSING/BUTTON_ACTIVATE"></span>
|
||||
</a>
|
||||
|
||||
<a class="btn" href="http://rainloop.net/purchase/" target="_black">
|
||||
<a class="btn" href="http://www.rainloop.net/purchase/" target="_black">
|
||||
<i class="icon-purchase"></i>
|
||||
|
||||
<span data-i18n="TAB_LICENSING/BUTTON_PURCHASE"></span>
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
</form>
|
||||
</div>
|
||||
<div class="e-powered thm-powered" data-bind="visible: logoPowered">
|
||||
Powered by <a href="http://rainloop.net" target="_blank">RainLoop</a>
|
||||
Powered by <a href="http://www.rainloop.net" target="_blank">RainLoop</a>
|
||||
</div>
|
||||
<div class="e-languages thm-languages" data-bind="visible: allowLanguagesOnLogin() && socialLoginEnabled()">
|
||||
<label class="flag-selector">
|
||||
|
|
|
@ -330,25 +330,6 @@
|
|||
|
||||
<span class="i18n text" data-i18n="MESSAGE/BUTTON_NOTIFY_READ_RECEIPT"></span>
|
||||
</div>
|
||||
<div class="pgpInfo" data-bind="visible: isPgpStatusVerifyVisible(), css: {'success': isPgpStatusVerifySuccess()}">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span data-bind="text: pgpStatusVerifyMessage()"></span>
|
||||
</div>
|
||||
<div class="pgpSigned" data-bind="visible: message() && message().isPgpSigned() && isPgpActionVisible(), click: function() { verifyPgpSignedClearMessage(message()); }">
|
||||
<i class="icon-lock"></i>
|
||||
|
||||
<span class="i18n" data-i18n="MESSAGE/PGP_SIGNED_MESSAGE_DESC"></span>
|
||||
</div>
|
||||
<div class="pgpEncrypted" data-bind="visible: message() && message().isPgpEncrypted() && isPgpActionVisible()">
|
||||
<i class="icon-lock"></i>
|
||||
|
||||
<span class="i18n" data-i18n="MESSAGE/PGP_ENCRYPTED_MESSAGE_DESC" data-bind="click: function() { decryptPgpEncryptedMessage(message()); }"></span>
|
||||
|
||||
<input type="password" class="i18n span3 inputPgpPassword"
|
||||
autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
style="margin-bottom: 0" data-i18n="[placeholder]MESSAGE/PGP_PASSWORD_INPUT_PLACEHOLDER" data-bind="value: viewPgpPassword, onEnter: function() { decryptPgpEncryptedMessage(message()); }" />
|
||||
</div>
|
||||
<div class="attachmentsPlace" data-bind="visible: message() && message().hasVisibleAttachments(),
|
||||
css: {'selection-mode' : showAttachmnetControls, 'unselectedAttachmentsError': highlightUnselectedAttachments}">
|
||||
<ul class="attachmentList" data-bind="foreach: message() ? message().attachments() : []">
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
<div class="popups">
|
||||
<div class="modal hide b-message-open-pgp-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
||||
<div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||
<h3>
|
||||
<span class="i18n" data-i18n="POPUPS_MESSAGE_OPEN_PGP/TITLE_MESSAGE_OPEN_PGP"></span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="alert" data-bind="visible: '' !== notification()">
|
||||
<span data-bind="text: notification"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_KEY"></label>
|
||||
<div class="controls key-list" data-bind="foreach: privateKeys" style="margin-top: 5px">
|
||||
<div class="key-list__item">
|
||||
<i class="key-list__item__radio icon-radio-unchecked"></i>
|
||||
<span class="key-list__item__name">
|
||||
<span data-bind="text: user"></span>
|
||||
|
||||
<span>[<span data-bind="text: id"></span>]</span>
|
||||
</span>
|
||||
</div>
|
||||
<!--<div data-bind="json: $data"></div>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="i18n control-label" data-i18n="POPUPS_MESSAGE_OPEN_PGP/LABEL_PASSWORD"></label>
|
||||
<div class="controls">
|
||||
<input type="password" class="inputPassword input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||
data-bind="value: password, hasfocus: password.focus, onEnter: doCommand" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn buttonDo" data-bind="command: doCommand, hasfocus: buttonFocus">
|
||||
<i data-bind="css: {'icon-key': !submitRequest(), 'icon-spinner animated': submitRequest()}"></i>
|
||||
|
||||
<span class="i18n" data-i18n="POPUPS_MESSAGE_OPEN_PGP/BUTTON_DECRYPT"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -9,12 +9,12 @@
|
|||
|
||||
<span class="i18n" data-i18n="SETTINGS_OPEN_PGP/BUTTON_ADD_OPEN_PGP_KEY"></span>
|
||||
</a>
|
||||
|
||||
<!--
|
||||
<a class="btn" data-bind="click: generateOpenPgpKey">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span class="i18n" data-i18n="SETTINGS_OPEN_PGP/BUTTON_GENERATE_OPEN_PGP_KEYS"></span>
|
||||
</a>
|
||||
</a>-->
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
|
|
321
rainloop/v/0.0.0/langs/admin/pl.ini
Normal file
321
rainloop/v/0.0.0/langs/admin/pl.ini
Normal file
|
@ -0,0 +1,321 @@
|
|||
|
||||
[LOGIN]
|
||||
LABEL_LOGIN = "Login"
|
||||
LABEL_PASSWORD = "Hasło"
|
||||
BUTTON_LOGIN = "Zaloguj"
|
||||
|
||||
[TOP_PANEL]
|
||||
LABEL_PREMIUM = "Premium"
|
||||
LABEL_ADMIN_PANEL = "Panel administracyjny"
|
||||
|
||||
[TABS_LABELS]
|
||||
LABEL_GENERAL_NAME = "Ogólne"
|
||||
LABEL_LOGIN_NAME = "Login"
|
||||
LABEL_BRANDING_NAME = "Personalizacja"
|
||||
LABEL_CONTACTS_NAME = "Kontakty"
|
||||
LABEL_DOMAINS_NAME = "Domeny"
|
||||
LABEL_SECURITY_NAME = "Bezpieczeństwo"
|
||||
LABEL_INTEGRATION_NAME = "Integracja"
|
||||
LABEL_PLUGINS_NAME = "Wtyczki"
|
||||
LABEL_PACKAGES_NAME = "Zarządzanie wtyczkami"
|
||||
LABEL_LICENSING_NAME = "Licencjonowanie"
|
||||
LABEL_ABOUT_NAME = "O skrypcie"
|
||||
|
||||
[TAB_GENERAL]
|
||||
LEGEND_INTERFACE = "Interfejs"
|
||||
LABEL_LANGUAGE = "Język:"
|
||||
LABEL_LANGUAGE_ADMIN = "Język (admin):"
|
||||
LABEL_THEME = "Motyw:"
|
||||
LABEL_ALLOW_LANGUAGES_ON_SETTINGS = "Zezwól użytkownikowi na wybór języka"
|
||||
LABEL_ALLOW_THEMES_ON_SETTINGS = "Zezwól użytkownikowi na zmianę motywu"
|
||||
LABEL_ALLOW_BACKGROUND_ON_SETTINGS = "Zezwól użytkownikowi na użycie własnego tła"
|
||||
LABEL_SHOW_THUMBNAILS = "Pokaż miniatury (załączniki)"
|
||||
LABEL_ALLOW_GRAVATAR = "Zezwól na używanie gravatarów"
|
||||
LEGEND_MAIN = "Główne"
|
||||
LABEL_ATTACHMENT_SIZE_LIMIT = "Maks. rozmiar zał.:"
|
||||
LABEL_ALLOW_ADDITIONAL_ACCOUNTS = "Zezwól na dodatkowe konta"
|
||||
LABEL_ALLOW_IDENTITIES = "Zezwól na posiadanie wielu tożsamości"
|
||||
LABEL_ALLOW_TEMPLATES = "Zezwól na używanie szablonów"
|
||||
ALERT_WARNING = "Ostrzeżenie!"
|
||||
HTML_ALERT_WEAK_PASSWORD = "Korzystasz z domyślnego hasła administratora.
|
||||
<br />
|
||||
Ze względów bezpieczeństwa, proszę
|
||||
<strong><a href=\"#/security\">zmienić hasło</a></strong>
|
||||
na inne."
|
||||
|
||||
[TAB_LOGIN]
|
||||
LEGEND_LOGIN_SCREEN = "Logowanie"
|
||||
LABEL_DEFAULT_DOMAIN = "Domyślna domena:"
|
||||
LABEL_DETERMINE_USER_DOMAIN = "Spróbuj określić domenę użytkownika"
|
||||
LABEL_ALLOW_LANGUAGES_ON_LOGIN = "Zezwól na zmianę języka podczas logowania"
|
||||
LABEL_DETERMINE_USER_LANGUAGE = "Spróbuj określić język użytkownika"
|
||||
|
||||
[TAB_BRANDING]
|
||||
LEGEND_BRANDING = "Personalizacja"
|
||||
LABEL_PAGE_TITLE = "Tytuł strony:"
|
||||
LABEL_LOADING_DESCRIPTION = "Komunikat ład. strony:"
|
||||
LEGEND_LOGIN = "Login"
|
||||
LABEL_LOGIN_LOGO = "Logo:"
|
||||
LABEL_LOGIN_DESCRIPTION = "Opis:"
|
||||
LABEL_LOGIN_BACKGROUND = "Tło:"
|
||||
LABEL_LOGIN_CUSTOM_CSS = "Własny arkusz stylów:"
|
||||
LABEL_LOGIN_SHOW_POWERED_LINK = "Pokaż link: \"Powered by RainLoop\""
|
||||
LEGEND_USER = "Użytkownik"
|
||||
LABEL_USER_LOGO = "Logo:"
|
||||
LABEL_USER_LOGO_TITLE = "Tytuł loga:"
|
||||
LABEL_USER_LOGO_MESSAGE = "Logo (widok wiad.)"
|
||||
LABEL_USER_CUSTOM_CSS = "Własny arkusz stylów:"
|
||||
LEGEND_WELCOME_PAGE = "Str. główna"
|
||||
LABEL_WELCOME_PAGE_TITLE = "Tytuł:"
|
||||
LABEL_WELCOME_PAGE_URL = "Adres URL:"
|
||||
LABEL_WELCOME_PAGE_DISPLAY = "Wyświetl:"
|
||||
OPTION_WELCOME_PAGE_DISPLAY_NONE = "nigdy"
|
||||
OPTION_WELCOME_PAGE_DISPLAY_ONCE = "raz"
|
||||
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS = "zawsze"
|
||||
HTML_ALERT_PREMIUM = "Ta opcja jest dostępna tylko dla licencji <strong><a href=\"#/licensing\">premium</a></strong>."
|
||||
|
||||
[TAB_CONTACTS]
|
||||
LEGEND_CONTACTS = "Kontakty"
|
||||
LEGEND_STORAGE = "Baza danych (PDO)"
|
||||
LABEL_ENABLE_CONTACTS = "Włącz kontakty"
|
||||
LABEL_ALLOW_SYNC = "Zezwól na synchronizację kontaktów (przy użyciu zewnętrznego serwera CardDAV)"
|
||||
LABEL_STORAGE_TYPE = "Typ:"
|
||||
LABEL_STORAGE_DSN = "Adres DSN:"
|
||||
LABEL_STORAGE_USER = "Użytkownik:"
|
||||
LABEL_STORAGE_PASSWORD = "Hasło:"
|
||||
BUTTON_TEST = "Testuj"
|
||||
ALERT_NOTICE = "Powiadomienie!"
|
||||
HTML_ALERT_DO_NOT_USE_THIS_DATABASE = "Nie używaj tej bazy danych z dużą ilością aktywnych użytkowników."
|
||||
HTML_ALERT_DOES_NOT_SUPPORTED = "Twój system nie zawiera wsparcia dla obsługi kontaktów.
|
||||
<br />
|
||||
Musisz zainstalować lub uruchomić na serwerze jedno z <strong>rozszerzeń PDO (SQLite / MySQL / PostgreSQL)</strong>."
|
||||
|
||||
[TAB_DOMAINS]
|
||||
LEGEND_DOMAINS = "Domeny"
|
||||
BUTTON_ADD_DOMAIN = "Dodaj domenę"
|
||||
DELETE_ARE_YOU_SURE = "Czy na pewno?"
|
||||
HTML_DOMAINS_HELPER = "Lista domen, do których można uzyskać dostęp poprzez tego klienta.
|
||||
<br />Kliknij na nazwę, aby skonfigurować domenę."
|
||||
|
||||
[TAB_SECURITY]
|
||||
LEGEND_SECURITY = "Bezpieczeństwo"
|
||||
LABEL_ALLOW_TWO_STEP = "Zezwól na dwuskładnikową autoryzację"
|
||||
LABEL_FORCE_TWO_STEP = "Wymuś dwuskładnikową autoryzację"
|
||||
LABEL_USE_IMAGE_PROXY = "Użyj lokalnego serwera proxy dla zewnętrznych obrazów"
|
||||
LABEL_ALLOW_OPEN_PGP = "Zezwól na użycie OpenPGP"
|
||||
LABEL_SHOW_PHP_INFO = "Pokaż informacje o wersji PHP"
|
||||
LEGEND_ADMIN_PANEL_ACCESS_CREDENTIALS = "Dane dostępowe panelu administracyjnego"
|
||||
LABEL_CURRENT_PASSWORD = "Bieżące hasło:"
|
||||
LABEL_NEW_LOGIN = "Nowy login:"
|
||||
LABEL_NEW_PASSWORD = "Nowe hasło:"
|
||||
LABEL_REPEAT_PASSWORD = "Powtórz hasło:"
|
||||
BUTTON_UPDATE_PASSWORD = "Zaktualizuj hasło"
|
||||
LEGEND_SSL = "SSL"
|
||||
LABEL_REQUIRE_VERIFICATION = "Wymagaj sprawdzania poprawności certyfikatów SSL (IMAP/SMTP)"
|
||||
LABEL_ALLOW_SELF_SIGNED = "Zezwól na używanie certyfikatów podpisanych przez siebie"
|
||||
|
||||
[TAB_INTEGRATIONS]
|
||||
LEGEND_GOOGLE = "Google"
|
||||
LABEL_ENABLE_GOOGLE = "Włącz obsługę platformy Google"
|
||||
LABEL_GOOGLE_AUTH = "Autoryzacja"
|
||||
LABEL_GOOGLE_DRIVE = "Obsługa dysku Google (widok tworz. wiadomości)"
|
||||
LABEL_GOOGLE_PREVIEW = "Obsługa przeglądarki Google (podgląd dla plików: Microsoft Word, Excel i PowerPoint)"
|
||||
LABEL_GOOGLE_CLIENT_ID = "Identyfikator:"
|
||||
LABEL_GOOGLE_CLIENT_SECRET = "Hasło:"
|
||||
LABEL_GOOGLE_API_KEY = "Klucz API:"
|
||||
HINT_GOOGLE_API_KEY = "Wymagane dla obsługi interfejsu usługi: 'Dysk Google'"
|
||||
LEGEND_FACEBOOK = "Facebook"
|
||||
LABEL_ENABLE_FACEBOOK = "Włącz obsługę platformy Facebook (autoryzacja)"
|
||||
LABEL_FACEBOOK_APP_ID = "Identyfikator aplikacji:"
|
||||
LABEL_FACEBOOK_APP_SECRET = "Hasło aplikacji:"
|
||||
LEGEND_TWITTER = "Twitter"
|
||||
LABEL_ENABLE_TWITTER = "Włącz obsługę platformy Twitter (autoryzacja)"
|
||||
LABEL_TWITTER_CONSUMER_KEY = "Klucz użytkownika:"
|
||||
LABEL_TWITTER_CONSUMER_SECRET = "Hasło użytkownika:"
|
||||
LEGEND_DROPBOX = "Dropbox"
|
||||
LABEL_ENABLE_DROPBOX = "Włącz obsługę platformy Dropbox"
|
||||
LABEL_DROPBOX_API_KEY = "Klucz API:"
|
||||
TOP_ALERT = "Szczegółowe informacje na temat obsługi platform, można znaleźść pod adresem: "
|
||||
|
||||
[TAB_PLUGINS]
|
||||
LEGEND_PLUGINS = "Wtyczki"
|
||||
LABEL_ENABLE_PLUGINS = "Włącz obsługę wtyczek"
|
||||
ALERT_NO_PLUGINS = "Nie zainstalowano żadnych wtyczek."
|
||||
LINK_INSTALL_NEW = "Kliknij tutaj, aby zainstalować nowe wtyczki!"
|
||||
HINT_CLICK_NAME = "Kliknij na nazwę, aby skonfigurować wtyczkę."
|
||||
|
||||
[TAB_PACKAGES]
|
||||
LEGEND_AVAILABLE_FOR_UPDATE = "Aktualizacja"
|
||||
LEGEND_AVAILABLE_FOR_INSTALLATION = "Do zainstalowania"
|
||||
LEGEND_INSTALLED_PACKAGES = "Zainstalowane"
|
||||
ALERT_CANNOT_ACCESS_REPOSITORY = "Nie można uzyskać dostępu do repozytorium."
|
||||
|
||||
[TAB_LICENSING]
|
||||
LABEL_YOUR_DOMAIN = "Domena:"
|
||||
LABEL_VERSION = "Wersja:"
|
||||
LABEL_CHECKING = "sprawdzanie..."
|
||||
TYPE_BASIC_HINT = "Ta domena nie jest licencjonowana do użytku komercyjnego."
|
||||
TYPE_BASIC_HINT_2 = "Nie można dodać licencji dla tej domeny."
|
||||
HTML_ALERT_TOP_1 = "RainLoop Webmail korzysta z licencji:"
|
||||
HTML_ALERT_TOP_2 = "Możesz używać tego klienta <b>za darmo</b>, tylko dla prywatnych <b>(własnych)</b> projektów."
|
||||
HTML_ALERT_TOP_3 = "Do komercyjnego użytku (używania dodatkowych opcji) <b>RainLoop Webmail</b>, wymagane jest posiadanie
|
||||
<a href=http://www.rainloop.net/purchase/ target=_blank>ważnej subskrypcji</a>."
|
||||
TYPE_PREMIUM_LIFETIME = "Dożywotnia"
|
||||
TYPE_PREMIUM_HINT = "Ta domena nie jest licencjonowana dla użytku komercyjnego."
|
||||
LABEL_SUB_EXPIRES = "Subskrypcja wygasa:"
|
||||
BUTTON_ACTIVATE = "Aktywuj klucz"
|
||||
BUTTON_PURCHASE = "Kup klucz"
|
||||
BUTTON_TRIAL = "Wersja testowa"
|
||||
|
||||
[TAB_ABOUT]
|
||||
LEGEND_ABOUT = "O skrypcie"
|
||||
LABEL_TAG_HINT = "Prosty, nowoczesny i szybki klient pocztowy"
|
||||
LABEL_ALL_RIGHTS_RESERVED = "Wszystkie prawa zastrzeżone."
|
||||
HINT_READ_CHANGE_LOG = "Przed aktualizacją, proszę przeczytać listę zmian."
|
||||
HINT_IS_UP_TO_DATE = "Klient RainLoop jest aktualny."
|
||||
HTML_NEW_VERSION = "Dostępna jest nowa wersja: <b>%VERSION%</b>."
|
||||
LABEL_UPDATING = "Aktualizowanie..."
|
||||
LABEL_CHECKING = "Szukanie aktualizacji..."
|
||||
BUTTON_UPDATE = "Zaktualizuj"
|
||||
BUTTON_DOWNLOAD = "Pobierz"
|
||||
BUTTON_CHANGELOG = "Lista zmian"
|
||||
|
||||
[POPUPS_ACTIVATE]
|
||||
TITLE_ACTIVATE = "Aktywacja klucza subskrypcji"
|
||||
TITLE_ACTIVATION = "Aktywowanie..."
|
||||
LABEL_DOMAIN = "Domena:"
|
||||
LABEL_SUB_KEY = "Klucz subskrypcji:"
|
||||
BUTTON_ACTIVATE = "Aktywuj"
|
||||
LABEL_ACTIVATED = "Aktywowano"
|
||||
ERROR_INVALID_SUBS_KEY = "Niepoprawny klucz subskrypcji"
|
||||
SUBS_KEY_ACTIVATED = "Aktywowano klucz subskrypcji"
|
||||
HTML_DESC = "Subskrypcja premium dla domeny: <b>%DOMAIN%</b>, zostanie przedłużona po aktywacji.
|
||||
<br />
|
||||
Zwróc uwagę, że klucz subskrypcji może być aktywowany tylko dla jednej domeny.
|
||||
<br /><br />
|
||||
Po uruchomieniu aktywacji, nie można jej przerwac lub anulować."
|
||||
|
||||
[POPUPS_DOMAIN]
|
||||
TITLE_ADD_DOMAIN = "Dodawanie domeny"
|
||||
TITLE_ADD_DOMAIN_WITH_NAME = "Dodawanie domeny: \"%NAME%\""
|
||||
TITLE_EDIT_DOMAIN = "Edycja domeny: \"%NAME%\""
|
||||
LABEL_NAME = "Nazwa"
|
||||
NAME_HELPER = "obsługiwany znak wieloznaczności - *"
|
||||
LABEL_IMAP = "IMAP"
|
||||
LABEL_SMTP = "SMTP"
|
||||
LABEL_SIEVE = "SIEVE"
|
||||
LABEL_SERVER = "Serwer:"
|
||||
LABEL_PORT = "Port:"
|
||||
LABEL_SECURE = "Rodzaj połączenia:"
|
||||
LABEL_WHITE_LIST = "Biała lista"
|
||||
SECURE_OPTION_NONE = "Bez zabezpieczeń"
|
||||
SECURE_OPTION_SSL = "SSL/TLS"
|
||||
SECURE_OPTION_STARTTLS = "STARTTLS"
|
||||
LABEL_ALLOW_SIEVE_SCRIPTS = "Zezwól na skrypty sieve"
|
||||
LABEL_ALLOW_USER_SCRIPT = "Zezwól na spersonalizowany skrypt użytkownika"
|
||||
LABEL_USE_SHORT_LOGIN = "Użyj krótkiego loginu"
|
||||
LABEL_USE_AUTH = "Użyj autoryzacji"
|
||||
LABEL_USE_PHP_MAIL = "Użyj funkcji php: 'mail()'"
|
||||
BUTTON_TEST = "Test"
|
||||
BUTTON_WHITE_LIST = "Biała lista"
|
||||
BUTTON_SIEVE_CONFIGURATION = "Konfiguracja sieve"
|
||||
BUTTON_BACK_TO_IMAP = "Powrót do ustawień serwera IMAP"
|
||||
BUTTON_BACK = "Wstecz"
|
||||
BUTTON_CLOSE = "Zamknij"
|
||||
BUTTON_ADD = "Dodaj"
|
||||
BUTTON_UPDATE = "Zaktualizuj"
|
||||
WHITE_LIST_ALERT = "Lista użytkowników domeny, którzy mogą uzyskać dostęp poprzez tego klienta.
|
||||
Użyj spacji do rozdzielenia."
|
||||
|
||||
[POPUPS_PLUGIN]
|
||||
TITLE_PLUGIN = "Wtyczka: "
|
||||
DESC_NOTHING_TO_CONFIGURE = "Brak opcji do skonfigurowania"
|
||||
BUTTON_CLOSE = "Zamknij"
|
||||
BUTTON_SAVE = "Zapisz"
|
||||
TOOLTIP_ABOUT_TITLE = "O wtyczce"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Tak"
|
||||
BUTTON_NO = "Nie"
|
||||
DESC_WANT_CLOSE_THIS_WINDOW = "Czy na pewno chcesz zamknąć to okno?"
|
||||
DESC_WANT_DELETE_MESSAGES = "Czy na pewno chcesz usunąć tą wiadomość(-i)?"
|
||||
|
||||
[POPUPS_LANGUAGES]
|
||||
TITLE_LANGUAGES = "Wybierz swój język"
|
||||
|
||||
[HINTS]
|
||||
BETA = "Beta"
|
||||
UNSTABLE = "Niestabilna"
|
||||
WARNING = "Ostrzeżenie!"
|
||||
NOT_SUPPORTED = "nieobsługiwana"
|
||||
REQUIRES_PHP_54 = "Wymaga PHP w wersji 5.4 lub wyższej"
|
||||
|
||||
[ERRORS]
|
||||
DOMAIN_ALREADY_EXISTS = "Ta domena już istnieje"
|
||||
UNKNOWN_ERROR = "Nieznany błąd"
|
||||
|
||||
[NOTIFICATIONS]
|
||||
INVALID_TOKEN = "Nieważny token"
|
||||
AUTH_ERROR = "Autoryzacja zakończona niepowodzeniem"
|
||||
ACCESS_ERROR = "Błąd dostępu"
|
||||
CONNECTION_ERROR = "Nie można połączyć się z serwerem"
|
||||
CAPTCHA_ERROR = "Niepoprawny kod CAPTCHA."
|
||||
SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "Logowanie poprzez tą platformę, nie zostało jeszcze aktywowane dla żadnego z kont e-mail. Zaloguj się używając loginu i hasła, a następnie włącz tą funkcję w ustawieniach konta."
|
||||
SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "Logowanie poprzez tą platformę, nie zostało jeszcze aktywowane dla żadnego z kont e-mail. Zaloguj się używając loginu i hasła, a następnie włącz tą funkcję w ustawieniach konta."
|
||||
SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "Logowanie poprzez tą platformę, nie zostało jeszcze aktywowane dla żadnego z kont e-mail. Zaloguj się używając loginu i hasła, a następnie włącz tą funkcję w ustawieniach konta."
|
||||
DOMAIN_NOT_ALLOWED = "Brak zezwolenia na użycie tej domeny"
|
||||
ACCOUNT_NOT_ALLOWED = "Brak zezwolenia dla tego konta"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Wymagana dwuskładnikowa autoryzacja"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Błąd autoryzacji dwuskładnikowej"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Nie można było zapisać nowego hasła"
|
||||
CURRENT_PASSWORD_INCORRECT = "Bieżące hasło jest niepoprawne"
|
||||
NEW_PASSWORD_SHORT = "Wybrane hasło jest za krótkie"
|
||||
NEW_PASSWORD_WEAK = "Wybrane hasło jest zbyt proste"
|
||||
NEW_PASSWORD_FORBIDDENT = "Wybrane hasło zawiera zakazane znaki"
|
||||
CONTACTS_SYNC_ERROR = "Błąd synchronizacji kontaktów"
|
||||
CANT_GET_MESSAGE_LIST = "Nie można pobrać listy wiadomości"
|
||||
CANT_GET_MESSAGE = "Nie można pobrać wiadomości"
|
||||
CANT_DELETE_MESSAGE = "Nie można usunąć wiadomości"
|
||||
CANT_MOVE_MESSAGE = "Nie można przenieść wiadomości"
|
||||
CANT_SAVE_MESSAGE = "Nie można zapisać wiadomości"
|
||||
CANT_SEND_MESSAGE = "Nie można wysłać wiadomości"
|
||||
INVALID_RECIPIENTS = "Niepoprawny adres odbiorcy"
|
||||
CANT_SAVE_FILTERS = "Nie można zapisać filtrów"
|
||||
CANT_GET_FILTERS = "Nie można pobrać filtrów"
|
||||
FILTERS_ARE_NOT_CORRECT = "Brak poprawności filtrów"
|
||||
CANT_CREATE_FOLDER = "Nie można utworzyć folderu"
|
||||
CANT_RENAME_FOLDER = "Nie można zmienić nazwy folderu"
|
||||
CANT_DELETE_FOLDER = "Nie można usunąć folderu"
|
||||
CANT_DELETE_NON_EMPTY_FOLDER = "Nie można usunąć folderu, w którym znajduje się zawartość"
|
||||
CANT_SUBSCRIBE_FOLDER = "Nie można zasubskrybować folderu"
|
||||
CANT_UNSUBSCRIBE_FOLDER = "Nie można usunąć subskrypcji folderu"
|
||||
CANT_SAVE_SETTINGS = "Nie można zapisać ustawień"
|
||||
CANT_SAVE_PLUGIN_SETTINGS = "Nie można zapisać ustawień wtyczki"
|
||||
DOMAIN_ALREADY_EXISTS = "Ta domena już istnieje"
|
||||
CANT_INSTALL_PACKAGE = "Instalacja wtyczki zakończona niepowodzeniem"
|
||||
CANT_DELETE_PACKAGE = "Usunięcie wtyczki zakończone niepowodzeniem"
|
||||
INVALID_PLUGIN_PACKAGE = "Niepoprawna wtyczka"
|
||||
UNSUPPORTED_PLUGIN_PACKAGE = "Nieobsługiwana wtyczka"
|
||||
LICENSING_SERVER_IS_UNAVAILABLE = "Serwer aktywacji subskrypcji jest niedostępny"
|
||||
LICENSING_DOMAIN_EXPIRED = "Subskrypcja dla tej domeny wygasła."
|
||||
LICENSING_DOMAIN_BANNED = "Subskrypcja dla tej domeny została zawieszona."
|
||||
DEMO_SEND_MESSAGE_ERROR = "Ze względów bezpieczeństwa, to konto nie posiada zezwolenia na wysyłanie wiadomości na zewnętrzne adresy e-mail!"
|
||||
DEMO_ACCOUNT_ERROR = "Ze względów bezpieczeństwa, to konto nie posiada uprawnień do wykonania tego zadania!"
|
||||
ACCOUNT_ALREADY_EXISTS = "To konto już istnieje"
|
||||
MAIL_SERVER_ERROR = "Wystąpił błąd podczas dostępu do serwera"
|
||||
INVALID_INPUT_ARGUMENT = "Niepoprawny argument wejścia"
|
||||
UNKNOWN_ERROR = "Nieznany błąd"
|
||||
|
||||
[STATIC]
|
||||
BACK_LINK = "Odśwież"
|
||||
DOMAIN_LIST_DESC = "Lista domen, do których można uzyskać dostęp za pomocą tego klienta."
|
||||
PHP_EXSTENSIONS_ERROR_DESC = "Brak wymaganych rozszerzeń w konfiguracji PHP!"
|
||||
PHP_VERSION_ERROR_DESC = "Twoja wersja PHP: (%VERSION%), jest niższa niż minimalna: 5.3.0!"
|
||||
NO_SCRIPT_TITLE = "Ta aplikacja do poprawnej pracy wymaga javascript-u."
|
||||
NO_SCRIPT_DESC = "Twoja przeglądarka nie obsługuje javascript-u.
|
||||
Proszę o jego włączenie i ponowną próbę."
|
||||
NO_COOKIE_TITLE = "Obsługa plików cookies jest wymagana dla poprawnego działania skryptu."
|
||||
NO_COOKIE_DESC = "Twoja przeglądarka nie obsługuje plików cookies.
|
||||
Proszę o ich włączenie i ponowną próbę."
|
||||
BAD_BROWSER_TITLE = "Posiadasz nieaktualną wersję przeglądarki."
|
||||
BAD_BROWSER_DESC = "Aby korzystać ze wszyskich funkcji tego skryptu, pobierz i zainstaluj jedną z niżej wymienionych przeglądarek:"
|
|
@ -320,6 +320,12 @@ BUTTON_SIGN = "Sign"
|
|||
BUTTON_ENCRYPT = "Encrypt"
|
||||
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
|
||||
|
||||
[POPUPS_MESSAGE_OPEN_PGP]
|
||||
TITLE_MESSAGE_OPEN_PGP = "OpenPGP Decrypt"
|
||||
LABEL_KEY = "Private Key"
|
||||
LABEL_PASSWORD = "Password"
|
||||
BUTTON_DECRYPT = "Decrypt"
|
||||
|
||||
[POPUPS_TWO_FACTOR_TEST]
|
||||
TITLE_TEST_CODE = "2-Step verification test"
|
||||
LABEL_CODE = "Code"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
[LOGIN]
|
||||
LABEL_EMAIL = "E-mail"
|
||||
LABEL_EMAIL = "Adres e-mail"
|
||||
LABEL_LOGIN = "Login"
|
||||
LABEL_PASSWORD = "Hasło"
|
||||
LABEL_SIGN_ME = "Zapamiętaj mnie"
|
||||
|
@ -10,34 +10,34 @@ BUTTON_SIGN_IN = "Zaloguj"
|
|||
TITLE_SIGN_IN_GOOGLE = "Zaloguj się przez Google"
|
||||
TITLE_SIGN_IN_FACEBOOK = "Zaloguj się przez Facebook"
|
||||
TITLE_SIGN_IN_TWITTER = "Zaloguj się przez Twitter"
|
||||
LABEL_FORGOT_PASSWORD = "Zapomniane hasło"
|
||||
LABEL_FORGOT_PASSWORD = "Zapomniałem hasło"
|
||||
LABEL_REGISTRATION = "Rejestracja"
|
||||
|
||||
[TOP_TOOLBAR]
|
||||
BUTTON_ADD_ACCOUNT = "Dodaj konto"
|
||||
BUTTON_SETTINGS = "Ustawienia"
|
||||
BUTTON_HELP = "Pomoc"
|
||||
BUTTON_LOGOUT = "Wyloguj się"
|
||||
BUTTON_LOGOUT = "Wyloguj"
|
||||
|
||||
[SEARCH]
|
||||
MAIN_INPUT_PLACEHOLDER = "Szukaj"
|
||||
TITLE_ADV = "Wyszukiwanie zaawansowane"
|
||||
LABEL_ADV_FROM = "Od"
|
||||
LABEL_ADV_TO = "Do"
|
||||
LABEL_ADV_SUBJECT = "Temat"
|
||||
LABEL_ADV_TEXT = "Tekst"
|
||||
LABEL_ADV_HAS_ATTACHMENT = "Z załącznikiem"
|
||||
LABEL_ADV_HAS_ATTACHMENTS = "Z załącznikami"
|
||||
LABEL_ADV_FROM = "Od:"
|
||||
LABEL_ADV_TO = "Do:"
|
||||
LABEL_ADV_SUBJECT = "Temat:"
|
||||
LABEL_ADV_TEXT = "Tekst:"
|
||||
LABEL_ADV_HAS_ATTACHMENT = "Załącznik"
|
||||
LABEL_ADV_HAS_ATTACHMENTS = "Ma załączniki"
|
||||
LABEL_ADV_FLAGGED = "Oznaczona"
|
||||
LABEL_ADV_UNSEEN = "Nieprzeczytana"
|
||||
LABEL_ADV_DATE = "Data"
|
||||
LABEL_ADV_DATE_ALL = "Wszystkie"
|
||||
LABEL_ADV_DATE_3_DAYS = "Do 3 dni"
|
||||
LABEL_ADV_DATE_7_DAYS = "Do 1 tygodnia"
|
||||
LABEL_ADV_DATE_MONTH = "Do 1 miesiąca"
|
||||
LABEL_ADV_DATE_3_MONTHS = "Do 3 miesięcy"
|
||||
LABEL_ADV_DATE_6_MONTHS = "Do 6 miesięcy"
|
||||
LABEL_ADV_DATE_YEAR = "Do 1 roku"
|
||||
LABEL_ADV_DATE = "Data:"
|
||||
LABEL_ADV_DATE_ALL = "wszystkie"
|
||||
LABEL_ADV_DATE_3_DAYS = "do 3 dni"
|
||||
LABEL_ADV_DATE_7_DAYS = "do tygodnia"
|
||||
LABEL_ADV_DATE_MONTH = "do miesiąca"
|
||||
LABEL_ADV_DATE_3_MONTHS = "do 3 miesięcy"
|
||||
LABEL_ADV_DATE_6_MONTHS = "do 6 miesięcy"
|
||||
LABEL_ADV_DATE_YEAR = "do roku"
|
||||
BUTTON_ADV_SEARCH = "Szukaj"
|
||||
|
||||
[PREVIEW_POPUP]
|
||||
|
@ -47,9 +47,9 @@ CLOSE = "Zamknij (Esc)"
|
|||
LOADING = "Ładowanie..."
|
||||
GALLERY_PREV = "Poprzedni (strzałka w lewo)"
|
||||
GALLERY_NEXT = "Następny (strzałka w prawo)"
|
||||
GALLERY_COUNTER = "%curr% z %total%"
|
||||
IMAGE_ERROR = "Nie można było załadować <a href=\"%url%\" target=\"_blank\">obrazu</a>."
|
||||
AJAX_ERROR = "Nie można było załadować <a href=\"%url%\" target=\"_blank\">zawartości</a>."
|
||||
GALLERY_COUNTER = "%curr% z: %total%"
|
||||
IMAGE_ERROR = "Nie można załadować <a href=\"%url%\" target=\"_blank\">obrazu</a>."
|
||||
AJAX_ERROR = "Nie można załadować <a href=\"%url%\" target=\"_blank\">zawartości</a>."
|
||||
|
||||
[FOLDER_LIST]
|
||||
BUTTON_COMPOSE = "Utwórz"
|
||||
|
@ -57,23 +57,23 @@ BUTTON_CONTACTS = "Kontakty"
|
|||
INBOX_NAME = "Odebrane"
|
||||
SENT_NAME = "Wysłane"
|
||||
DRAFTS_NAME = "Wersje robocze"
|
||||
SPAM_NAME = "Spam"
|
||||
SPAM_NAME = "Niechciane"
|
||||
TRASH_NAME = "Kosz"
|
||||
ARCHIVE_NAME = "Archiwum"
|
||||
|
||||
[QUOTA]
|
||||
TITLE = "Wykorzystane miejsce"
|
||||
TITLE = "Wykorzystanie miejsca"
|
||||
|
||||
[MESSAGE_LIST]
|
||||
BUTTON_RELOAD = "Odśwież"
|
||||
BUTTON_MOVE_TO = "Przenieś do"
|
||||
BUTTON_MOVE_TO = "Przenieś"
|
||||
BUTTON_DELETE = "Usuń"
|
||||
BUTTON_ARCHIVE = "Archiwum"
|
||||
BUTTON_SPAM = "Oznacz jako spam"
|
||||
BUTTON_NOT_SPAM = "Oznacz jako wiarygodną"
|
||||
BUTTON_EMPTY_FOLDER = "Wyczyść folder"
|
||||
BUTTON_ARCHIVE = "Archiwizuj"
|
||||
BUTTON_SPAM = "Oznacz jako niechciane"
|
||||
BUTTON_NOT_SPAM = "Oznacz jako pożądane"
|
||||
BUTTON_EMPTY_FOLDER = "Usuń zawartość folderu"
|
||||
BUTTON_MULTY_FORWARD = "Przekaż dalej"
|
||||
BUTTON_DELETE_WITHOUT_MOVE = "Usuń na stałe"
|
||||
BUTTON_DELETE_WITHOUT_MOVE = "Usuń (pernamentnie)"
|
||||
BUTTON_MORE = "Więcej"
|
||||
MENU_SET_SEEN = "Oznacz jako przeczytane"
|
||||
MENU_SET_ALL_SEEN = "Oznacz wszystkie jako przeczytane"
|
||||
|
@ -82,7 +82,7 @@ MENU_SET_FLAG = "Oznacz jako ważne"
|
|||
MENU_UNSET_FLAG = "Oznacz jako nieważne"
|
||||
MENU_SELECT_ALL = "Wszystkie"
|
||||
MENU_SELECT_NONE = "Żadne"
|
||||
MENU_SELECT_INVERT = "Odwróć"
|
||||
MENU_SELECT_INVERT = "Odwróć zaznaczenie"
|
||||
MENU_SELECT_UNSEEN = "Nieprzeczytane"
|
||||
MENU_SELECT_SEEN = "Przeczytane"
|
||||
MENU_SELECT_FLAGGED = "Oznaczone jako ważne"
|
||||
|
@ -90,15 +90,15 @@ MENU_SELECT_UNFLAGGED = "Oznaczone jako nieważne"
|
|||
EMPTY_LIST = "Pusta lista"
|
||||
EMPTY_SEARCH_LIST = "Brak wiadomości spełniających kryteria wyszukiwania"
|
||||
SEARCH_RESULT_FOR = "Wyniki wyszukiwania dla: \"%SEARCH%\""
|
||||
BACK_TO_MESSAGE_LIST = "powrót do listy wiadomości"
|
||||
LIST_LOADING = "Ładowanie"
|
||||
BACK_TO_MESSAGE_LIST = "Powrót do listy wiadomości"
|
||||
LIST_LOADING = "Ładowanie..."
|
||||
EMPTY_SUBJECT_TEXT = "(Brak tematu)"
|
||||
PUT_MESSAGE_HERE = "Przeciągnij tutaj wiadomość, żeby zobaczyć ją na liście"
|
||||
TODAY_AT = "Dzisiaj: %TIME%"
|
||||
YESTERDAY_AT = "Wczoraj: %TIME%"
|
||||
SEARCH_PLACEHOLDER = "Szukaj"
|
||||
NEW_MESSAGE_NOTIFICATION = "Masz: %COUNT% now(-ą,-e,-ych) wiadomości!"
|
||||
QUOTA_SIZE = "Wykorzystano: <strong>%SIZE% (%PROC%%)</strong> z przyznanych: <strong>%LIMIT%</strong>"
|
||||
QUOTA_SIZE = "Wykorzystano: <strong>%SIZE% (%PROC%%)</strong> z: <strong>%LIMIT%</strong>"
|
||||
|
||||
[MESSAGE]
|
||||
BUTTON_EDIT = "Edytuj"
|
||||
|
@ -106,15 +106,15 @@ BUTTON_BACK = "Wstecz"
|
|||
BUTTON_CLOSE = "Zamknij"
|
||||
BUTTON_DELETE = "Usuń"
|
||||
BUTTON_ARCHIVE = "Archiwizuj"
|
||||
BUTTON_SPAM = "Oznacz jako spam"
|
||||
BUTTON_NOT_SPAM = "Oznacz jako wiarygodną"
|
||||
BUTTON_MOVE_TO = "Przenieś do"
|
||||
BUTTON_SPAM = "Oznacz jako niechcianą"
|
||||
BUTTON_NOT_SPAM = "Oznacz jako pożądaną"
|
||||
BUTTON_MOVE_TO = "Przenieś"
|
||||
BUTTON_MORE = "Więcej"
|
||||
BUTTON_REPLY = "Odpowiedz"
|
||||
BUTTON_REPLY_ALL = "Odpowiedz wszystkim"
|
||||
BUTTON_FORWARD = "Przekaż dalej"
|
||||
BUTTON_FORWARD_AS_ATTACHMENT = "Przekaż jako załącznik"
|
||||
BUTTON_EDIT_AS_NEW = "Edytuj jako nową wiadomość"
|
||||
BUTTON_EDIT_AS_NEW = "Zredaguj jako nową wiadomość"
|
||||
BUTTON_SHOW_IMAGES = "Wyświetl obrazy"
|
||||
BUTTON_NOTIFY_READ_RECEIPT = "Nadawca prosi o potwierdzenie odczytania tej wiadomości"
|
||||
BUTTON_IN_NEW_WINDOW = "Wyświetl w osobnym oknie"
|
||||
|
@ -123,8 +123,8 @@ BUTTON_THREAD_PREV = "Poprzedni"
|
|||
BUTTON_THREAD_NEXT = "Następny"
|
||||
BUTTON_THREAD_MORE = "Więcej wiadomości"
|
||||
MENU_HEADERS = "Pokaż nagłówki wiadomości"
|
||||
MENU_VIEW_ORIGINAL = "Pokaż oryginał"
|
||||
MENU_DOWNLOAD_ORIGINAL = "Pobież jako plik - .eml"
|
||||
MENU_VIEW_ORIGINAL = "Pokaż zródło"
|
||||
MENU_DOWNLOAD_ORIGINAL = "Pobież jako plik eml"
|
||||
MENU_FILTER_SIMILAR = "Filtruj podobne wiadomości"
|
||||
MENU_PRINT = "Drukuj"
|
||||
EMPTY_SUBJECT_TEXT = "(Brak tematu)"
|
||||
|
@ -134,32 +134,32 @@ LABEL_FROM = "Od"
|
|||
LABEL_FROM_SHORT = "Od"
|
||||
LABEL_TO = "Do"
|
||||
LABEL_TO_SHORT = "Do"
|
||||
LABEL_CC = "Kopia do"
|
||||
LABEL_BCC = "Ukryci odbiorcy"
|
||||
LABEL_REPLY_TO = "Reply-To"
|
||||
LABEL_CC = "Kopia"
|
||||
LABEL_BCC = "Ukr. kopia"
|
||||
LABEL_REPLY_TO = "Zwrot"
|
||||
PRINT_LABEL_FROM = "Od"
|
||||
PRINT_LABEL_TO = "Do"
|
||||
PRINT_LABEL_CC = "Kopia do"
|
||||
PRINT_LABEL_BCC = "Ukryci odbiorcy"
|
||||
PRINT_LABEL_REPLY_TO = "Reply-To"
|
||||
PRINT_LABEL_CC = "Kopia"
|
||||
PRINT_LABEL_BCC = "Ukr. kopia"
|
||||
PRINT_LABEL_REPLY_TO = "Zwrot"
|
||||
PRINT_LABEL_DATE = "Data"
|
||||
PRINT_LABEL_SUBJECT = "Temat"
|
||||
PRINT_LABEL_ATTACHMENTS = "Załączniki"
|
||||
MESSAGE_LOADING = "Ładowanie..."
|
||||
MESSAGE_VIEW_DESC = "Wybierz wiadomość z listy w celu jej wyświetlenia"
|
||||
MESSAGE_LOADING = "Ładowanie wiadomości..."
|
||||
MESSAGE_VIEW_DESC = "Wybierz wiadomość do wyświetlenia"
|
||||
PGP_PASSWORD_INPUT_PLACEHOLDER = "Hasło"
|
||||
PGP_SIGNED_MESSAGE_DESC = "Wiadomość podpisana za pomocą OpenPGP (kliknij, aby zweryfikować)"
|
||||
PGP_ENCRYPTED_MESSAGE_DESC = "Wiadomość zaszyfrowana za pomocą OpenPGP (kliknij, aby odszyfrować)"
|
||||
LINK_DOWNLOAD_AS_ZIP = "Pobierz jako zip"
|
||||
LINK_SAVE_TO_OWNCLOUD = "Zapisz na ownCloud"
|
||||
LINK_SAVE_TO_DROPBOX = "Zapisz na Dropbox"
|
||||
PGP_SIGNED_MESSAGE_DESC = "Podpisana"
|
||||
PGP_ENCRYPTED_MESSAGE_DESC = "Zaszyfrowana"
|
||||
LINK_DOWNLOAD_AS_ZIP = "Pobierz jako plik zip"
|
||||
LINK_SAVE_TO_OWNCLOUD = "Zapisz w ownCloud"
|
||||
LINK_SAVE_TO_DROPBOX = "Zapisz w Dropbox-ie"
|
||||
|
||||
[READ_RECEIPT]
|
||||
SUBJECT = "Potwierdzenie odbioru (wyświetlenia) - %SUBJECT%"
|
||||
BODY = "To jest potwierdzenie odbioru wiadomości wysłanej do: %READ-RECEIPT%.
|
||||
SUBJECT = "Potwierdzenie wyświetlenia wiadomości o tytule: %SUBJECT%"
|
||||
BODY = "Potwierdzenie wyświetlenia wiadomości wysłanej na adres: %READ-RECEIPT%.
|
||||
|
||||
Uwaga: Potwierdzenie odbioru wiadomości przez odbiorcę informuję tylko o tym, że wiadomość została wyświetlona na komputerze odbiorcy.
|
||||
Nie ma żadnej gwarancji, że odbiorca odczytał wiadomość i zapoznał się z jej treścią."
|
||||
Uwaga: Otrzymanie tego potwierdzenia jest dowodem na to, że wiadomość została wyświetlona na komputerze odbiorcy.
|
||||
Nie ma jednak żadnej gwarancji, że odbiorca faktycznie zapoznał się z jej treścią."
|
||||
|
||||
[SUGGESTIONS]
|
||||
SEARCHING_DESC = "Wyszukiwanie..."
|
||||
|
@ -174,20 +174,20 @@ BUTTON_IMPORT = "Importuj (csv, vcf, vCard)"
|
|||
BUTTON_EXPORT_VCARD = "Eksportuj (vcf, vCard)"
|
||||
BUTTON_EXPORT_CSV = "Eksportuj (csv)"
|
||||
ERROR_IMPORT_FILE = "Błąd importu (nieprawidłowy format pliku)"
|
||||
LIST_LOADING = "Ładowanie"
|
||||
LIST_LOADING = "Ładowanie..."
|
||||
EMPTY_LIST = "Brak kontaktów"
|
||||
EMPTY_SEARCH = "Nie znaleziono żadnych kontaktów"
|
||||
CLEAR_SEARCH = "Wyczyść wyszukiwanie"
|
||||
CONTACT_VIEW_DESC = "Wybierz kontakt z listy w celu jego wyświetlenia"
|
||||
LABEL_DISPLAY_NAME = "Wyświetlana nazwa"
|
||||
LABEL_EMAIL = "E-mail"
|
||||
LABEL_PHONE = "Telefon"
|
||||
LABEL_WEB = "Strona WWW"
|
||||
LABEL_BIRTHDAY = "Urodziny"
|
||||
CLEAR_SEARCH = "Wyczyść wyniki"
|
||||
CONTACT_VIEW_DESC = "Wybierz kontakt do wyświetlenia"
|
||||
LABEL_DISPLAY_NAME = "Nazwa:"
|
||||
LABEL_EMAIL = "Adres e-mail:"
|
||||
LABEL_PHONE = "Telefon:"
|
||||
LABEL_WEB = "Strona WWW:"
|
||||
LABEL_BIRTHDAY = "Urodziny:"
|
||||
LINK_ADD_EMAIL = "Dodaj adres e-mail"
|
||||
LINK_ADD_PHONE = "Dodaj nr telefonu"
|
||||
LINK_BIRTHDAY = "Urodziny"
|
||||
PLACEHOLDER_ENTER_DISPLAY_NAME = "Nazwa wyświetlana"
|
||||
PLACEHOLDER_ENTER_DISPLAY_NAME = "Nazwa"
|
||||
PLACEHOLDER_ENTER_LAST_NAME = "Nazwisko"
|
||||
PLACEHOLDER_ENTER_FIRST_NAME = "Imię"
|
||||
PLACEHOLDER_ENTER_NICK_NAME = "Pseudonim"
|
||||
|
@ -196,9 +196,9 @@ LABEL_SHARE = "Udostępnij kontakt"
|
|||
ADD_MENU_LABEL = "Dodaj"
|
||||
ADD_MENU_NICKNAME = "Pseudonim"
|
||||
ADD_MENU_NOTES = "Notatki"
|
||||
ADD_MENU_EMAIL = "E-mail"
|
||||
ADD_MENU_EMAIL = "Adres e-mail"
|
||||
ADD_MENU_PHONE = "Telefon"
|
||||
ADD_MENU_URL = "Adres URL"
|
||||
ADD_MENU_URL = "Adres www"
|
||||
ADD_MENU_ADDRESS = "Adres"
|
||||
ADD_MENU_BIRTHDAY = "Urodziny"
|
||||
ADD_MENU_TAGS = "Tagi"
|
||||
|
@ -209,9 +209,9 @@ BUTTON_SYNC = "Synchronizacja (CardDAV)"
|
|||
[COMPOSE]
|
||||
TITLE_FROM = "Od"
|
||||
TITLE_TO = "Do"
|
||||
TITLE_CC = "DW"
|
||||
TITLE_BCC = "UDW"
|
||||
TITLE_REPLY_TO = "Odpowiedź do"
|
||||
TITLE_CC = "Kopia"
|
||||
TITLE_BCC = "Ukr. kopia"
|
||||
TITLE_REPLY_TO = "Zwrot"
|
||||
TITLE_SUBJECT = "Temat"
|
||||
LINK_SHOW_INPUTS = "Pokaż wszystkie pola"
|
||||
BUTTON_SEND = "Wyślij"
|
||||
|
@ -222,29 +222,29 @@ BUTTON_MINIMIZE = "Minimalizuj"
|
|||
SAVED_TIME = "Zapisane: %TIME%"
|
||||
SAVED_ERROR_ON_SEND = "Wiadomość została wysłana, ale nie została zapisana w folderze: Wysłane"
|
||||
DISCARD_UNSAVED_DATA = "Odrzucić niezapisane dane?"
|
||||
ATTACH_FILES = "Dołącz pliki"
|
||||
ATTACH_FILES = "Dodaj załącznik"
|
||||
ATTACH_DROP_FILES_DESC = "Przeciągnij pliki tutaj"
|
||||
ATTACH_ITEM_CANCEL = "Anuluj"
|
||||
DROPBOX = "Dropbox"
|
||||
GOOGLE_DRIVE = "Dysk Google"
|
||||
REPLY_MESSAGE_TITLE = "%DATETIME% - %EMAIL%:"
|
||||
REPLY_MESSAGE_TITLE = "%DATETIME% - %EMAIL%"
|
||||
FORWARD_MESSAGE_TOP_TITLE = "-------- Przekierowana wiadomość -------"
|
||||
FORWARD_MESSAGE_TOP_FROM = "Od"
|
||||
FORWARD_MESSAGE_TOP_TO = "Do"
|
||||
FORWARD_MESSAGE_TOP_CC = "DW"
|
||||
FORWARD_MESSAGE_TOP_SENT = "Wysłany"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Temat"
|
||||
FORWARD_MESSAGE_TOP_FROM = "Od:"
|
||||
FORWARD_MESSAGE_TOP_TO = "Do:"
|
||||
FORWARD_MESSAGE_TOP_CC = "Kopia do:"
|
||||
FORWARD_MESSAGE_TOP_SENT = "Wysłany:"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Temat:"
|
||||
EMPTY_TO_ERROR_DESC = "Wprowadź co najmniej jednego odbiorcę"
|
||||
NO_ATTACHMENTS_HERE_DESC = "Brak załączników."
|
||||
ATTACHMENTS_ERROR_DESC = "Ostrzeżenie! Nie wszystkie załaczniki zostały przesłane."
|
||||
NO_ATTACHMENTS_HERE_DESC = "Brak załączników"
|
||||
ATTACHMENTS_ERROR_DESC = "Ostrzeżenie! Nie wszystkie załaczniki zostały przesłane"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Nie przesłano jeszcze wszystkich załączników"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Żądaj potwierdzenia odbioru"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Potwierdzenie wyświetlenia wiadomości"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Oznacz jako ważną"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Tylko zwykły tekst)"
|
||||
BUTTON_REQUEST_DSN = "Żądaj potwierdzenia dostarczenia"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (tylko wiadomości tekstowe)"
|
||||
BUTTON_REQUEST_DSN = "Potwierdzenie dostarczenia wiadomości"
|
||||
|
||||
[POPUPS_WELCOME_PAGE]
|
||||
BUTTON_CLOSE = "Close"
|
||||
BUTTON_CLOSE = "Zamknij"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Tak"
|
||||
|
@ -258,7 +258,7 @@ TITLE_LANGUAGES = "Wybierz język"
|
|||
[POPUPS_ADD_ACCOUNT]
|
||||
TITLE_ADD_ACCOUNT = "Dodawanie konta"
|
||||
BUTTON_ADD_ACCOUNT = "Dodaj"
|
||||
TITLE_UPDATE_ACCOUNT = "Zaktualizować konto?"
|
||||
TITLE_UPDATE_ACCOUNT = "Aktualizacja konta"
|
||||
BUTTON_UPDATE_ACCOUNT = "Aktualizuj"
|
||||
|
||||
[POPUPS_IDENTITY]
|
||||
|
@ -266,32 +266,32 @@ TITLE_ADD_IDENTITY = "Dodawanie tożsamości"
|
|||
TITLE_UPDATE_IDENTITY = "Aktualizacja tożsamości"
|
||||
BUTTON_ADD_IDENTITY = "Dodaj"
|
||||
BUTTON_UPDATE_IDENTITY = "Aktualizuj"
|
||||
LABEL_EMAIL = "E-mail"
|
||||
LABEL_NAME = "Nazwa"
|
||||
LABEL_REPLY_TO = "Odpowiedz do"
|
||||
LABEL_SIGNATURE = "Podpis"
|
||||
LABEL_CC = "DW"
|
||||
LABEL_BCC = "Ukryci odbiorcy"
|
||||
LABEL_SIGNATURE_INSERT_BEFORE = "Umieść podpis przed cytowanym tekstem w odpowiedziach"
|
||||
LABEL_EMAIL = "Adres e-mail:"
|
||||
LABEL_NAME = "Nazwa:"
|
||||
LABEL_REPLY_TO = "Zwrot"
|
||||
LABEL_SIGNATURE = "Podpis:"
|
||||
LABEL_CC = "Kopia"
|
||||
LABEL_BCC = "Ukr. kopia"
|
||||
LABEL_SIGNATURE_INSERT_BEFORE = "Umieść podpis przed cytowanym tekstem"
|
||||
|
||||
[POPUPS_CREATE_FOLDER]
|
||||
TITLE_CREATE_FOLDER = "Tworzenie folderu"
|
||||
SELECT_NO_PARENT = ""
|
||||
LABEL_NAME = "Nazwa folderu"
|
||||
LABEL_PARENT = "Folder nadrzędny"
|
||||
LABEL_NAME = "Nazwa folderu:"
|
||||
LABEL_PARENT = "Folder nadrzędny:"
|
||||
BUTTON_CREATE = "Utwórz"
|
||||
BUTTON_CANCEL = "Anuluj"
|
||||
BUTTON_CLOSE = "Zamknij"
|
||||
TITLE_CREATING_PROCESS = "Trwa dodawanie folderu"
|
||||
TITLE_CREATING_PROCESS = "Tworzenie folderu"
|
||||
|
||||
[POPUPS_CLEAR_FOLDER]
|
||||
TITLE_CLEAR_FOLDER = "Czy chcesz usunąć wszystkie wiadomości z folderu?"
|
||||
BUTTON_CLEAR = "Usuń"
|
||||
TITLE_CLEAR_FOLDER = "Usuwanie wszystkich wiadomości z folderu"
|
||||
BUTTON_CLEAR = "Usuń wszystkie"
|
||||
BUTTON_CANCEL = "Anuluj"
|
||||
BUTTON_CLOSE = "Zamknij"
|
||||
DANGER_DESC_WARNING = "Ostrzeżenie!"
|
||||
DANGER_DESC_HTML_1 = "Wszystkie wiadomości w folderze: <strong>%FOLDER%</strong>, zostaną bezpowrotnie usunięte!"
|
||||
DANGER_DESC_HTML_2 = "Po rozpoczęciu, proces nie może zostać przerwany lub anulowany."
|
||||
DANGER_DESC_HTML_2 = "Po rozpoczęciu, nie można przerwać lub anulować zadania."
|
||||
TITLE_CLEARING_PROCESS = "Trwa usuwanie wszystkich wiadomości z folderu..."
|
||||
|
||||
[POPUPS_IMPORT_OPEN_PGP_KEY]
|
||||
|
@ -305,112 +305,112 @@ BUTTON_CLOSE = "Zamknij"
|
|||
|
||||
[POPUPS_GENERATE_OPEN_PGP_KEYS]
|
||||
TITLE_GENERATE_OPEN_PGP_KEYS = "Generowanie klucza OpenPGP"
|
||||
LABEL_EMAIL = "E-mail"
|
||||
LABEL_NAME = "Imię i nazwisko"
|
||||
LABEL_PASSWORD = "Hasło"
|
||||
LABEL_KEY_BIT_LENGTH = "Długość klucza"
|
||||
LABEL_EMAIL = "Adres e-mail:"
|
||||
LABEL_NAME = "Imię i nazwisko:"
|
||||
LABEL_PASSWORD = "Hasło:"
|
||||
LABEL_KEY_BIT_LENGTH = "Długość klucza:"
|
||||
BUTTON_GENERATE_OPEN_PGP_KEYS = "Generuj"
|
||||
|
||||
[POPUPS_COMPOSE_OPEN_PGP]
|
||||
TITLE_COMPOSE_OPEN_PGP = "Podpisz/Zaszyfruj"
|
||||
TITLE_COMPOSE_OPEN_PGP = "Podpisywanie/szyfrowanie"
|
||||
LABEL_SIGN = "Podpisz"
|
||||
LABEL_ENCRYPT = "Zaszyfruj"
|
||||
LABEL_PASSWORD = "Hasło"
|
||||
LABEL_ENCRYPT = "Szyfruj"
|
||||
LABEL_PASSWORD = "Hasło:"
|
||||
BUTTON_SIGN = "Podpisz"
|
||||
BUTTON_ENCRYPT = "Zaszyfruj"
|
||||
BUTTON_SIGN_AND_ENCRYPT = "Podpisz i zaszyfruj"
|
||||
BUTTON_ENCRYPT = "Szyfruj"
|
||||
BUTTON_SIGN_AND_ENCRYPT = "Podpisz i szyfruj"
|
||||
|
||||
[POPUPS_TWO_FACTOR_TEST]
|
||||
TITLE_TEST_CODE = "Test weryfikacji 2-stopniowej"
|
||||
TITLE_TEST_CODE = "Test autoryzacji dwuskładnikowej"
|
||||
LABEL_CODE = "Kod"
|
||||
BUTTON_TEST = "Testuj"
|
||||
|
||||
[POPUPS_FILTER]
|
||||
TITLE_CREATE_FILTER = "Utwórz filtr?"
|
||||
TITLE_EDIT_FILTER = "Zaktualizuj filtr?"
|
||||
TITLE_CREATE_FILTER = "Tworzenie filtra"
|
||||
TITLE_EDIT_FILTER = "Aktualizacja filtra"
|
||||
FILTER_NAME = "Nazwa"
|
||||
LEGEND_CONDITIONS = "Warunki"
|
||||
LEGEND_ACTIONS = "Akcje"
|
||||
LEGEND_ACTIONS = "Działania"
|
||||
BUTTON_DONE = "Gotowe"
|
||||
BUTTON_ADD_CONDITION = "Dodaj warunek"
|
||||
SELECT_ACTION_NONE = "Brak"
|
||||
SELECT_ACTION_MOVE_TO = "Przenieś do"
|
||||
SELECT_ACTION_FORWARD_TO = "Przekaż do"
|
||||
SELECT_ACTION_MOVE_TO = "Przenieś"
|
||||
SELECT_ACTION_FORWARD_TO = "Prześlij dalej"
|
||||
SELECT_ACTION_REJECT = "Odrzuć"
|
||||
SELECT_ACTION_VACATION_MESSAGE = "Wiadomość o nieobecności"
|
||||
SELECT_ACTION_VACATION_MESSAGE = "Wiadomość urlopowa"
|
||||
SELECT_ACTION_DISCARD = "Usuń"
|
||||
SELECT_FIELD_FROM = "Od"
|
||||
SELECT_FIELD_RECIPIENTS = "Odbiorcy (Do lub DW)"
|
||||
SELECT_FIELD_SUBJECT = "Temat"
|
||||
SELECT_FIELD_FROM = "Pole 'Od'"
|
||||
SELECT_FIELD_RECIPIENTS = "Pole 'Kopia' lub 'Ukr. kopia'"
|
||||
SELECT_FIELD_SUBJECT = "Pole 'Temat'"
|
||||
SELECT_FIELD_HEADER = "Nagłówek"
|
||||
SELECT_FIELD_SIZE = "Rozmiar"
|
||||
SELECT_TYPE_CONTAINS = "Zawiera"
|
||||
SELECT_TYPE_NOT_CONTAINS = "Nie zawiera"
|
||||
SELECT_TYPE_MATCHES = "Pasuje (wspierane * oraz ?)"
|
||||
SELECT_TYPE_NOT_MATCHES = "Nie pasuje (wspierane * oraz ?)"
|
||||
SELECT_TYPE_REGEXP = "Regexp"
|
||||
SELECT_TYPE_NOT_REGEXP = "Nie Regexp"
|
||||
SELECT_TYPE_EQUAL_TO = "To"
|
||||
SELECT_TYPE_NOT_EQUAL_TO = "To nie"
|
||||
SELECT_TYPE_OVER = "Większy"
|
||||
SELECT_TYPE_UNDER = "Mniejszy"
|
||||
SELECT_TYPE_CONTAINS = "zawiera"
|
||||
SELECT_TYPE_NOT_CONTAINS = "nie zawiera"
|
||||
SELECT_TYPE_MATCHES = "zawiera (*,?)"
|
||||
SELECT_TYPE_NOT_MATCHES = "nie zawiera (*,?)"
|
||||
SELECT_TYPE_REGEXP = "Wyrażenie regularne:"
|
||||
SELECT_TYPE_NOT_REGEXP = "Niepoprawne wyrażenie regularne:"
|
||||
SELECT_TYPE_EQUAL_TO = "Zawiera:"
|
||||
SELECT_TYPE_NOT_EQUAL_TO = "Nie zawiera:"
|
||||
SELECT_TYPE_OVER = "powyżej"
|
||||
SELECT_TYPE_UNDER = "poniżej"
|
||||
SELECT_MATCH_ANY = "Spełnia dowolny z warunków"
|
||||
SELECT_MATCH_ALL = "Spełnia wszystkie warunki"
|
||||
MARK_AS_READ_LABEL = "Oznacz jako przeczytane"
|
||||
REPLY_INTERVAL_LABEL = "Odpowiedź po (dni)"
|
||||
REPLY_INTERVAL_LABEL = "Liczba dni, po których wysłać odp."
|
||||
KEEP_LABEL = "Zachowaj"
|
||||
STOP_LABEL = "Nie zatrzymuj wykonywania reguł"
|
||||
EMAIL_LABEL = "Email"
|
||||
STOP_LABEL = "Nie zatrzymuj przetwarzania reguł"
|
||||
EMAIL_LABEL = "Adres e-mail"
|
||||
VACATION_SUBJECT_LABEL = "Temat (opcjonalnie)"
|
||||
VACATION_MESSAGE_LABEL = "Wiadomość"
|
||||
REJECT_MESSAGE_LABEL = "Odrzuć wiadomość"
|
||||
REJECT_MESSAGE_LABEL = "Powód odrzucenia"
|
||||
ALL_INCOMING_MESSAGES_DESC = "Wszystkie przychodzące wiadomości"
|
||||
|
||||
[POPUPS_SYSTEM_FOLDERS]
|
||||
TITLE_SYSTEM_FOLDERS = "Wybierz foldery systemowe"
|
||||
SELECT_CHOOSE_ONE = "Wybierz"
|
||||
SELECT_UNUSE_NAME = "Nie używaj"
|
||||
LABEL_SENT = "Wysłane"
|
||||
LABEL_DRAFTS = "Wersje robocze"
|
||||
LABEL_SPAM = "Spam"
|
||||
LABEL_TRASH = "Kosz"
|
||||
LABEL_ARCHIVE = "Archiwum"
|
||||
TITLE_SYSTEM_FOLDERS = "Wybieranie folderów systemowych"
|
||||
SELECT_CHOOSE_ONE = "wybierz"
|
||||
SELECT_UNUSE_NAME = "nie używaj"
|
||||
LABEL_SENT = "Wysłane:"
|
||||
LABEL_DRAFTS = "Wersje robocze:"
|
||||
LABEL_SPAM = "Niechciane:"
|
||||
LABEL_TRASH = "Kosz:"
|
||||
LABEL_ARCHIVE = "Archiwum:"
|
||||
BUTTON_CANCEL = "Anuluj"
|
||||
BUTTON_CLOSE = "Zamknij"
|
||||
NOTIFICATION_SENT = "Nie został wybrany folder \"Wysłane\", do którego przenoszone są wiadomości po wysłaniu.
|
||||
Jeżeli wysłane wiadomości nie mają być przechowywane, proszę o zaznaczenie opcji: \"Nie używaj\"."
|
||||
NOTIFICATION_DRAFTS = "Nie został wybrany folder \"Wersje robocze\", do którego są zapisywane wiadomości w trakcie ich tworzenia."
|
||||
NOTIFICATION_SPAM = "Nie został wybrany folder \"Spam\", do którego przenoszone są wiadomości oznaczone jako SPAM.
|
||||
Jeżeli wiadomości oznaczone jako spam mają być usuwane na stałe, proszę o zaznaczenie opcji: \"Nie używaj\"."
|
||||
NOTIFICATION_TRASH = "Nie został wybrany folder \"Kosz\", do którego przenoszone są wszystkie usunięte wiadomości.
|
||||
Jeżeli wiadomości usunięte mają być usuwane na stałe, proszę o zaznaczenie opcji: \"Nie używaj\"."
|
||||
NOTIFICATION_ARCHIVE = "Nie został wybrany folder \"Archiwum\", zostanie użyty systemowy folder archiwizowanych wiadomości."
|
||||
NOTIFICATION_SENT = "Nie wybrano folderu: \"Wysłane\", do którego przenoszone są wysłane wiadomości.
|
||||
Jeżeli wysyłane wiadomości nie mają być przechowywane, proszę zaznaczyć opcję: \"Nie używaj\"."
|
||||
NOTIFICATION_DRAFTS = "Nie wybrano folderu: \"Wersje robocze\", do którego są zapisywane wiadomości w trakcie ich tworzenia."
|
||||
NOTIFICATION_SPAM = "Nie wybrano folderu: \"Niechciane\", do którego przenoszone są niepożadane wiadomości.
|
||||
Jeżeli niechciane wiadomości mają być usuwane na stałe, proszę o zaznaczenie opcji: \"Nie używaj\"."
|
||||
NOTIFICATION_TRASH = "Nie wybrano folderu: \"Kosz\", do którego przenoszone są wszystkie usunięte wiadomości.
|
||||
Jeżeli wiadomości mają być usuwane na stałe, proszę o zaznaczenie opcji: \"Nie używaj\"."
|
||||
NOTIFICATION_ARCHIVE = "Nie został wybrany folder \"Archiwum\", zostanie użyty systemowy folder archiwizacji wiadomości."
|
||||
|
||||
[POPUPS_TWO_FACTOR_CFG]
|
||||
LEGEND_TWO_FACTOR_AUTH = "Weryfikacja 2-stopniowa"
|
||||
LABEL_ENABLE_TWO_FACTOR = "Włącz 2-stopniową weryfikację"
|
||||
LABEL_TWO_FACTOR_USER = "Użytkownik"
|
||||
LABEL_TWO_FACTOR_STATUS = "Status"
|
||||
LABEL_TWO_FACTOR_SECRET = "Tajna fraza"
|
||||
LABEL_TWO_FACTOR_BACKUP_CODES = "Kody zapasowe"
|
||||
LEGEND_TWO_FACTOR_AUTH = "Dwuskładnikowa autoryzacja"
|
||||
LABEL_ENABLE_TWO_FACTOR = "Włącz dwuskładnikową autoryzację"
|
||||
LABEL_TWO_FACTOR_USER = "Użytkownik:"
|
||||
LABEL_TWO_FACTOR_STATUS = "Status:"
|
||||
LABEL_TWO_FACTOR_SECRET = "Tajna fraza:"
|
||||
LABEL_TWO_FACTOR_BACKUP_CODES = "Kody zapasowe:"
|
||||
BUTTON_CREATE = "Utwórz nową frazę"
|
||||
BUTTON_ACTIVATE = "Activate"
|
||||
BUTTON_ACTIVATE = "Aktywuj"
|
||||
BUTTON_CLEAR = "Wyczyść"
|
||||
BUTTON_LOGOUT = "Logout"
|
||||
BUTTON_DONE = "Done"
|
||||
BUTTON_LOGOUT = "Wyloguj"
|
||||
BUTTON_DONE = "Zamknij"
|
||||
BUTTON_TEST = "Testuj"
|
||||
LINK_TEST = "test"
|
||||
LINK_TEST = "Test"
|
||||
BUTTON_SHOW_SECRET = "Pokaż frazę"
|
||||
BUTTON_HIDE_SECRET = "Ukryj frazę"
|
||||
TWO_FACTOR_REQUIRE_DESC = "Your account requires 2-Step verification configuration."
|
||||
TWO_FACTOR_SECRET_CONFIGURED_DESC = "Skonfigurowane"
|
||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nie skonfigurowane"
|
||||
TWO_FACTOR_SECRET_DESC = "Zaimportuj te informacje do swojego klienta usługi Google Authenticator (lub innego klienta TOTP), używając poniższego kodu QR lub wpisując kod ręcznie."
|
||||
TWO_FACTOR_BACKUP_CODES_DESC = "Jeżeli nie możesz otrzymać kodu poprzez apikację Google Authenticator, możesz użyć kodów zapasowych. Po zużyciu kodów, opcja ta będzie nieaktywna."
|
||||
TWO_FACTOR_REQUIRE_DESC = "Twoje konto wymaga skonfigurowania dwuskładnikowej autoryzacji ."
|
||||
TWO_FACTOR_SECRET_CONFIGURED_DESC = "Skonfigurowana"
|
||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nie skonfigurowana"
|
||||
TWO_FACTOR_SECRET_DESC = "Użyj tych informacji w usłudze Google Authenticator (lub innym kliencie TOTP), używając poniższego kodu QR lub wpisując kod ręcznie."
|
||||
TWO_FACTOR_BACKUP_CODES_DESC = "Jeżeli nie możesz otrzymać kodu poprzez usługę Google Authenticator, możesz użyć kodów zapasowych. Po zużyciu kodów, opcja ta będzie nieaktywna."
|
||||
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "Nie możesz zmienić tego ustawienia przed jego przetestowaniem."
|
||||
|
||||
[TITLES]
|
||||
LOADING = "Ładowanie"
|
||||
LOADING = "Ładowanie..."
|
||||
LOGIN = "Login"
|
||||
MAILBOX = "Skrzynka Pocztowa"
|
||||
SETTINGS = "Ustawienia"
|
||||
|
@ -442,7 +442,7 @@ LABEL_FILTERS_NAME = "Filtry"
|
|||
LABEL_TEMPLATES_NAME = "Szablony"
|
||||
LABEL_SECURITY_NAME = "Bezpieczeństwo"
|
||||
LABEL_SOCIAL_NAME = "Sieci społecznościowe"
|
||||
LABEL_THEMES_NAME = "Skórki"
|
||||
LABEL_THEMES_NAME = "Motywy"
|
||||
LABEL_CHANGE_PASSWORD_NAME = "Hasło"
|
||||
LABEL_OPEN_PGP_NAME = "OpenPGP"
|
||||
BUTTON_BACK = "Wstecz"
|
||||
|
@ -453,56 +453,56 @@ BUTTON_SAVE = "Zapisz"
|
|||
BUTTON_ADD_FILTER = "Dodaj filtr"
|
||||
BUTTON_DELETE = "Usuń"
|
||||
BUTTON_RAW_SCRIPT = "Utwórz własny skrypt użytkownika"
|
||||
SUBNAME_NONE = "None"
|
||||
SUBNAME_NONE = "Brak"
|
||||
SUBNAME_MOVE_TO = "Przenieś do \"%FOLDER%\""
|
||||
SUBNAME_FORWARD_TO = "Przekaż do \"%EMAIL%\""
|
||||
SUBNAME_REJECT = "Odrzuć"
|
||||
SUBNAME_VACATION_MESSAGE = "Wiadomość o nieobecności"
|
||||
SUBNAME_VACATION_MESSAGE = "Wiadomość urlopowa"
|
||||
SUBNAME_DISCARD = "Usuń"
|
||||
CAPABILITY_LABEL = "Możliwości"
|
||||
LOADING_PROCESS = "Aktualizowanie listy filtrów"
|
||||
DELETING_ASK = "Czy jesteś pewny(a)?"
|
||||
CHACHES_NEED_TO_BE_SAVED_DESC = "Zmiany muszą zostać zapisane na serwerze."
|
||||
CHACHES_NEED_TO_BE_SAVED_DESC = "Zmiany te muszą zostać zapisane na serwerze."
|
||||
|
||||
[SETTINGS_IDENTITY]
|
||||
LEGEND_IDENTITY = "Tożsamość"
|
||||
LABEL_DISPLAY_NAME = "Imię i nazwisko"
|
||||
LABEL_REPLY_TO = "Zwrotny adres e-mail"
|
||||
LABEL_REPLY_TO = "Zwrot do"
|
||||
LABEL_SIGNATURE = "Podpis"
|
||||
LABEL_ADD_SIGNATURE_TO_ALL = "Dadawaj podpis do wszystkich wysyłanych wiadomości"
|
||||
LABEL_ADD_SIGNATURE_TO_ALL = "Dadawaj podpis do wszystkich wiadomości"
|
||||
|
||||
[SETTINGS_SECURITY]
|
||||
LEGEND_SECURITY = "Bezpieczeństwo"
|
||||
LABEL_CONFIGURATE_TWO_FACTOR = "Configurate 2-Step verification"
|
||||
LABEL_AUTOLOGOUT = "Automatyczne wylogowanie"
|
||||
LABEL_CONFIGURATE_TWO_FACTOR = "Konfiguracja dwuskładnikowej autoryzacji"
|
||||
LABEL_AUTOLOGOUT = "Auto. wylogowanie:"
|
||||
AUTOLOGIN_NEVER_OPTION_NAME = "Nidgy"
|
||||
AUTOLOGIN_MINUTES_OPTION_NAME = "%MINUTES% minut"
|
||||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Ogólne"
|
||||
LABEL_LANGUAGE = "Język"
|
||||
LABEL_IDENTITY = "Tożsamość"
|
||||
LABEL_LAYOUT = "Układ"
|
||||
LABEL_LAYOUT_NO_SPLIT = "Bez podziału"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Podział w pionie"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Poział w poziomie"
|
||||
LABEL_EDITOR = "Format wiadomości"
|
||||
LABEL_LANGUAGE = "Język:"
|
||||
LABEL_IDENTITY = "Tożsamość:"
|
||||
LABEL_LAYOUT = "Układ:"
|
||||
LABEL_LAYOUT_NO_SPLIT = "bez podziału"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "podział w pionie"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "podział w poziomie"
|
||||
LABEL_EDITOR = "Format wiadomości:"
|
||||
LABEL_EDITOR_HTML = "HTML"
|
||||
LABEL_EDITOR_PLAIN = "Zwykły tekst"
|
||||
LABEL_EDITOR_PLAIN = "zwykły tekst"
|
||||
LABEL_EDITOR_HTML_FORCED = "HTML (wymuszony)"
|
||||
LABEL_EDITOR_PLAIN_FORCED = "Zwykły tekst (wymuszony)"
|
||||
LABEL_EDITOR_PLAIN_FORCED = "zwykły tekst (wymuszony)"
|
||||
LABEL_ANIMATION = "Animacja interfejsu"
|
||||
LABEL_ANIMATION_FULL = "Pełna"
|
||||
LABEL_ANIMATION_NORMAL = "Zwykła"
|
||||
LABEL_ANIMATION_NONE = "Brak"
|
||||
LABEL_ANIMATION_FULL = "pełna"
|
||||
LABEL_ANIMATION_NORMAL = "zwykła"
|
||||
LABEL_ANIMATION_NONE = "brak"
|
||||
LABEL_VIEW_OPTIONS = "Opcje wyświetlania"
|
||||
LABEL_USE_PREVIEW_PANE = "Wyświetl okno podglądu"
|
||||
LABEL_USE_CHECKBOXES_IN_LIST = "Wyświetl pola zaznaczenia w listach"
|
||||
LABEL_USE_THREADS = "Używaj wątków"
|
||||
LABEL_REPLY_SAME_FOLDER = "Umieść odpowiedź w folderze wiadomości, na którą udzielana jest odpowiedź"
|
||||
LABEL_REPLY_SAME_FOLDER = "Umieść odpowiedzi w folderach, z których pochodzą wiadomości"
|
||||
LABEL_SHOW_IMAGES = "Zawsze wyświetlaj obrazy w wiadomościach"
|
||||
LABEL_SHOW_ANIMATION = "Odtwarzaj animacje"
|
||||
LABEL_MESSAGE_PER_PAGE = "Wiadomości na stronie"
|
||||
LABEL_SHOW_ANIMATION = "Użyj animacji"
|
||||
LABEL_MESSAGE_PER_PAGE = "Wiad. na stronie:"
|
||||
LABEL_NOTIFICATIONS = "Powiadomienia"
|
||||
LABEL_SOUND_NOTIFICATION = "Powiadomienia dźwiękowe"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Wyświetlaj powiadomienia o nowych wiadomościach"
|
||||
|
@ -513,14 +513,14 @@ LEGEND_CONTACTS = "Kontakty"
|
|||
LABEL_CONTACTS_AUTOSAVE = "Automatycznie dodaj nieznanych nadawców i odbiorców do książki adresowej"
|
||||
LEGEND_CONTACTS_SYNC = "Zdalna synchronizacja (CardDAV)"
|
||||
LABEL_CONTACTS_SYNC_ENABLE = "Włącz zdalną synchronizację"
|
||||
LABEL_CONTACTS_SYNC_SERVER = "Serwer"
|
||||
LABEL_CONTACTS_SYNC_AB_URL = "Adres URL"
|
||||
LABEL_CONTACTS_SYNC_USER = "Użytkownik"
|
||||
LABEL_CONTACTS_SYNC_PASSWORD = "Hasło"
|
||||
LABEL_CONTACTS_SYNC_SERVER = "Serwer:"
|
||||
LABEL_CONTACTS_SYNC_AB_URL = "Adres URL:"
|
||||
LABEL_CONTACTS_SYNC_USER = "Użytkownik:"
|
||||
LABEL_CONTACTS_SYNC_PASSWORD = "Hasło:"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
LEGEND_THEMES = "Skórki"
|
||||
LEGEND_THEMES_CUSTOM = "Konfiguracja indywidualnego wyglądu"
|
||||
LEGEND_THEMES = "Motyw"
|
||||
LEGEND_THEMES_CUSTOM = "Własny motyw"
|
||||
LABEL_CUSTOM_TYPE = "Typ"
|
||||
LABEL_CUSTOM_TYPE_LIGHT = "Jasny"
|
||||
LABEL_CUSTOM_TYPE_DARK = "Ciemny"
|
||||
|
@ -534,15 +534,15 @@ ERROR_UNKNOWN = "Wystąpił nieznany błąd w trakcie przesyłania"
|
|||
LEGEND_GOOGLE = "Konto Google"
|
||||
BUTTON_GOOGLE_CONNECT = "Połącz z Google"
|
||||
BUTTON_GOOGLE_DISCONNECT = "Odłącz"
|
||||
MAIN_GOOGLE_DESC = "Po zezwoleniu na logowanie przez Google, możesz zalogować się na to konto używając przycisku: \"Google\" w panelu logowania."
|
||||
MAIN_GOOGLE_DESC = "Po zezwoleniu na logowanie przez: Google, możesz zalogować się na to konto używając przycisku: \"Google\" w panelu logowania."
|
||||
LEGEND_FACEBOOK = "Facebook"
|
||||
BUTTON_FACEBOOK_CONNECT = "Połącz z Facebook"
|
||||
BUTTON_FACEBOOK_DISCONNECT = "Odłącz"
|
||||
MAIN_FACEBOOK_DESC = "Po zezwoleniu na logowanie przez Facebook, możesz zalogować się na to konto używając przycisku: \"Facebook\" w panelu logowania."
|
||||
MAIN_FACEBOOK_DESC = "Po zezwoleniu na logowanie przez: Facebook, możesz zalogować się na to konto używając przycisku: \"Facebook\" w panelu logowania."
|
||||
LEGEND_TWITTER = "Twitter"
|
||||
BUTTON_TWITTER_CONNECT = "Połącz z Twitter"
|
||||
BUTTON_TWITTER_DISCONNECT = "Odłącz"
|
||||
MAIN_TWITTER_DESC = "Po zezwoleniu na logowanie przez Twitter, możesz zalogować się na to konto używając przycisku: \"Twitter\" w panelu logowania."
|
||||
MAIN_TWITTER_DESC = "Po zezwoleniu na logowanie przez: Twitter, możesz zalogować się na to konto używając przycisku: \"Twitter\" w panelu logowania."
|
||||
|
||||
[SETTINGS_FOLDERS]
|
||||
LEGEND_FOLDERS = "Lista Folderów"
|
||||
|
@ -551,7 +551,7 @@ BUTTON_SYSTEM = "Wybierz foldery systemowe"
|
|||
BUTTON_DELETE = "Usuń"
|
||||
BUTTON_SUBSCRIBE = "Subskrybuj"
|
||||
BUTTON_UNSUBSCRIBE = "Zrezygnuj z subskrypcji"
|
||||
LOADING_PROCESS = "Trwa aktualizacja listy folderów"
|
||||
LOADING_PROCESS = "Aktualizacja listy folderów"
|
||||
CREATING_PROCESS = "Tworzenie folderu"
|
||||
DELETING_PROCESS = "Usuwanie folderu"
|
||||
RENAMING_PROCESS = "Zmiana nazwy folderu"
|
||||
|
@ -563,7 +563,7 @@ HELP_SHOW_HIDE_FOLDER = "Pokaż/ukryj folder"
|
|||
HELP_CHECK_FOR_NEW_MESSAGES = "Sprawdzaj/nie sprawdzaj nowych wiadomości"
|
||||
|
||||
[SETTINGS_ACCOUNTS]
|
||||
LEGEND_ACCOUNTS = "Lista kont"
|
||||
LEGEND_ACCOUNTS = "Konta"
|
||||
LEGEND_IDENTITIES = "Tożsamości"
|
||||
LEGEND_ACCOUNTS_AND_IDENTITIES = "Konta i tożsamości"
|
||||
BUTTON_ADD_ACCOUNT = "Dodaj konto"
|
||||
|
@ -577,9 +577,9 @@ DEFAULT_IDENTITY_LABEL = "domyślna"
|
|||
LEGEND_IDENTITY = "Tożsamość"
|
||||
LEGEND_IDENTITIES = "Dodatkowe tożsamości"
|
||||
LABEL_DEFAULT = "Domyślna"
|
||||
LABEL_DISPLAY_NAME = "Nazwa"
|
||||
LABEL_REPLY_TO = "Odpowiedź do"
|
||||
LABEL_SIGNATURE = "Podpis"
|
||||
LABEL_DISPLAY_NAME = "Nazwa:"
|
||||
LABEL_REPLY_TO = "Odpowiedź do:"
|
||||
LABEL_SIGNATURE = "Podpis:"
|
||||
LABEL_ADD_SIGNATURE_TO_ALL = "Dodaj podpis do wszystkich wysyłanych wiadomości"
|
||||
BUTTON_ADD_IDENTITY = "Dodaj tożsamość"
|
||||
BUTTON_DELETE = "Usuń"
|
||||
|
@ -588,9 +588,9 @@ DELETING_ASK = "Czy na pewno chcesz usunąć?"
|
|||
|
||||
[SETTINGS_CHANGE_PASSWORD]
|
||||
LEGEND_CHANGE_PASSWORD = "Zmiana hasła"
|
||||
LABEL_CURRENT_PASSWORD = "Aktualne hasło"
|
||||
LABEL_NEW_PASSWORD = "Nowe hasło"
|
||||
LABEL_REPEAT_PASSWORD = "Powtórz nowe hasło"
|
||||
LABEL_CURRENT_PASSWORD = "Aktualne hasło:"
|
||||
LABEL_NEW_PASSWORD = "Nowe hasło:"
|
||||
LABEL_REPEAT_PASSWORD = "Powtórz nowe hasło:"
|
||||
BUTTON_UPDATE_PASSWORD = "Zmień hasło na nowe"
|
||||
ERROR_PASSWORD_MISMATCH = "Wpisane hasła nie pasują do siebie, proszę spróbować ponownie"
|
||||
|
||||
|
@ -643,13 +643,13 @@ LABEL_SEND_MESSAGE = "Wyślij wiadomość"
|
|||
LABEL_CLOSE_COMPOSE = "Zamknij okno tworzenia wiadomości"
|
||||
|
||||
[PGP_NOTIFICATIONS]
|
||||
NO_PUBLIC_KEYS_FOUND = "Nie znaleziono kluczy publicznych"
|
||||
NO_PUBLIC_KEYS_FOUND_FOR = "Nie znaleziono kluczy publicznych dla adresu: \"%EMAIL%\""
|
||||
NO_PRIVATE_KEY_FOUND = "Nie znaleziono kluczy prywatnych"
|
||||
NO_PRIVATE_KEY_FOUND_FOR = "Nie znaleziono kluczy prywatnych dla adresu: \"%EMAIL%\""
|
||||
UNVERIFIRED_SIGNATURE = "Niezweryfikowana sygnatura"
|
||||
NO_PUBLIC_KEYS_FOUND = "Nie znaleziono klucza publicznego"
|
||||
NO_PUBLIC_KEYS_FOUND_FOR = "Nie znaleziono klucza publicznego dla adresu: \"%EMAIL%\""
|
||||
NO_PRIVATE_KEY_FOUND = "Nie znaleziono klucza prywatnego"
|
||||
NO_PRIVATE_KEY_FOUND_FOR = "Nie znaleziono klucza prywatnego dla adresu: \"%EMAIL%\""
|
||||
UNVERIFIRED_SIGNATURE = "Niezweryfikowana"
|
||||
DECRYPTION_ERROR = "Błąd deszyfrowania OpenPGP"
|
||||
GOOD_SIGNATURE = "Wiadomość podpisana przez: %USER%"
|
||||
GOOD_SIGNATURE = "Podpisana przez: %USER%"
|
||||
PGP_ERROR = "Błąd OpenPGP: %ERROR%"
|
||||
SPECIFY_FROM_EMAIL = "Proszę podać adres e-mail w polu: OD"
|
||||
SPECIFY_AT_LEAST_ONE_RECIPIENT = "Proszę podać przynajmniej jednego odbiorcę"
|
||||
|
@ -665,8 +665,8 @@ SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "To społecznościowe ID (Twitter), nie je
|
|||
SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "To społecznościowe ID (Konto Google), nie jest powiązane z żadnym kontem pocztowym. Zaloguj się używając danych swojego konta e-mail i skonfiguruj tę opcję w: Ustawienia > Sieci społecznościowe"
|
||||
DOMAIN_NOT_ALLOWED = "Domena niedozwolona"
|
||||
ACCOUNT_NOT_ALLOWED = "Konto nie jest dozwolone"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Wymagana 2-stopniowa weryfikacja"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Błąd 2-stopniowej weryfikacji"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Wymagana dwuskładnikowa autoryzacja"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Błąd dwuskładnikowej autoryzacji"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Nie można było zapisać nowego hasła"
|
||||
CURRENT_PASSWORD_INCORRECT = "Obecne hasło jest niepoprawne"
|
||||
NEW_PASSWORD_SHORT = "Hasło jest za krótkie"
|
||||
|
|
8
vendors/openpgp/openpgp-0.9.0.min.js
vendored
8
vendors/openpgp/openpgp-0.9.0.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -12,6 +12,7 @@ module.exports = {
|
|||
publicPath: 'rainloop/v/0.0.0/static/js/',
|
||||
chunkFilename: '[chunkhash].subapp.js'
|
||||
},
|
||||
// devtool: "#source-map",
|
||||
plugins: [
|
||||
// new webpack.optimize.CommonsChunkPlugin('common.js'),
|
||||
new webpack.optimize.OccurenceOrderPlugin()
|
||||
|
|
Loading…
Reference in a new issue