Verify S/MIME signed messages #259

This commit is contained in:
the-djmaze 2024-02-19 15:14:11 +01:00
parent 4df3766231
commit f53d9ed6c3
56 changed files with 769 additions and 433 deletions

View file

@ -292,6 +292,8 @@ viewMessage = (oMessage, popup) => {
class:'b-text-part' class:'b-text-part'
+ (oMessage.pgpSigned() ? ' openpgp-signed' : '') + (oMessage.pgpSigned() ? ' openpgp-signed' : '')
+ (oMessage.pgpEncrypted() ? ' openpgp-encrypted' : '') + (oMessage.pgpEncrypted() ? ' openpgp-encrypted' : '')
+ (oMessage.smimeSigned() ? ' smime-signed' : '')
+ (oMessage.smimeEncrypted() ? ' smime-encrypted' : '')
}); });
MessageUserStore.purgeCache(); MessageUserStore.purgeCache();
} }

View file

@ -122,6 +122,10 @@ export class MessageModel extends AbstractModel {
pgpEncrypted: null, pgpEncrypted: null,
pgpDecrypted: false, pgpDecrypted: false,
smimeSigned: null,
smimeVerified: null,
smimeEncrypted: null,
// rfc8621 // rfc8621
id: '', id: '',
// threadId: '' // threadId: ''

View file

@ -14,11 +14,11 @@ import { AskPopupView } from 'View/Popup/Ask';
import { Passphrases } from 'Storage/Passphrases'; import { Passphrases } from 'Storage/Passphrases';
const const
askPassphrase = async (privateKey, btnTxt = 'LABEL_SIGN') => { askPassphrase = async (privateKey, btnTxt = 'SIGN') => {
const key = privateKey.id, const key = privateKey.id,
pass = Passphrases.has(key) pass = Passphrases.has(key)
? {password:Passphrases.get(key), remember:false} ? {password:Passphrases.get(key), remember:false}
: await AskPopupView.password('GnuPG key<br>' + key + ' ' + privateKey.emails[0], 'OPENPGP/'+btnTxt); : await AskPopupView.password('GnuPG key<br>' + key + ' ' + privateKey.emails[0], 'CRYPTO/'+btnTxt);
pass && pass.remember && Passphrases.set(key, pass.password); pass && pass.remember && Passphrases.set(key, pass.password);
return pass?.password; return pass?.password;
}, },
@ -180,7 +180,7 @@ export const GnuPGUserStore = new class {
uid: message.uid, uid: message.uid,
partId: pgpInfo.partId, partId: pgpInfo.partId,
keyId: key.id, keyId: key.id,
passphrase: await askPassphrase(key, 'BUTTON_DECRYPT'), passphrase: await askPassphrase(key, 'DECRYPT'),
data: '' // message.plain() optional data: '' // message.plain() optional
} }
if (null !== params.passphrase) { if (null !== params.passphrase) {

View file

@ -20,7 +20,7 @@ const
key.emails.includes(query) || query == key.id || query == key.fingerprint key.emails.includes(query) || query == key.id || query == key.fingerprint
), ),
decryptKey = async (privateKey, btnTxt = 'LABEL_SIGN') => { decryptKey = async (privateKey, btnTxt = 'SIGN') => {
if (privateKey.key.isDecrypted()) { if (privateKey.key.isDecrypted()) {
return privateKey.key; return privateKey.key;
} }
@ -29,7 +29,7 @@ const
? {password:Passphrases.get(key), remember:false} ? {password:Passphrases.get(key), remember:false}
: await AskPopupView.password( : await AskPopupView.password(
'OpenPGP.js key<br>' + key + ' ' + privateKey.emails[0], 'OpenPGP.js key<br>' + key + ' ' + privateKey.emails[0],
'OPENPGP/'+btnTxt 'CRYPTO/'+btnTxt
); );
if (pass) { if (pass) {
const passphrase = pass.password, const passphrase = pass.password,
@ -210,7 +210,7 @@ export const OpenPGPUserStore = new class {
} }
} }
if (privateKey) try { if (privateKey) try {
const decryptedKey = await decryptKey(privateKey, 'BUTTON_DECRYPT'); const decryptedKey = await decryptKey(privateKey, 'DECRYPT');
if (decryptedKey) { if (decryptedKey) {
const publicKey = findOpenPGPKey(this.publicKeys, sender/*, sign*/); const publicKey = findOpenPGPKey(this.publicKeys, sender/*, sign*/);
return await openpgp.decrypt({ return await openpgp.decrypt({

View file

@ -1538,7 +1538,7 @@ export class ComposePopupView extends AbstractViewPopup {
} else if (this.canSMimeSign()) { } else if (this.canSMimeSign()) {
params.signCertificate = identity.smimeCertificate(); params.signCertificate = identity.smimeCertificate();
params.signPrivateKey = identity.smimeKey(); params.signPrivateKey = identity.smimeKey();
const pass = await AskPopupView.password('S/MIME key', 'OPENPGP/LABEL_SIGN'); const pass = await AskPopupView.password('S/MIME key', 'CRYPTO/SIGN');
params.signPassphrase = pass?.password; params.signPassphrase = pass?.password;
} }
} }

View file

@ -600,7 +600,7 @@ export class MailMessageView extends AbstractViewRight {
} }
/* /*
if (result?.success) { if (result?.success) {
i18n('OPENPGP/GOOD_SIGNATURE', { i18n('CRYPTO/GOOD_SIGNATURE', {
USER: validKey.user + ' (' + validKey.id + ')' USER: validKey.user + ' (' + validKey.id + ')'
}); });
message.getText() message.getText()
@ -610,7 +610,8 @@ export class MailMessageView extends AbstractViewRight {
? keyIds.map(item => item?.toHex?.()).filter(v => v).join(', ') ? keyIds.map(item => item?.toHex?.()).filter(v => v).join(', ')
: ''; : '';
i18n('OPENPGP/ERROR', { i18n('CRYPTO/ERROR', {
TYPE: 'OpenPGP',
ERROR: 'message' ERROR: 'message'
}) + (additional ? ' (' + additional + ')' : ''); }) + (additional ? ' (' + additional + ')' : '');
} }
@ -618,4 +619,25 @@ export class MailMessageView extends AbstractViewRight {
}); });
} }
smimeVerify(/*self, event*/) {
const message = currentMessage();
let data = message.smimeSigned(); // { partId: "1", micAlg: "pgp-sha256" }
if (data) {
data = { ...data }; // clone
data.folder = message.folder;
data.uid = message.uid;
data.bodyPart = data.bodyPart?.raw;
Remote.post('MessageSMimeVerify', null, data).then(response => {
if (response?.Result) {
if (response.Result.body) {
MimeToMessage(response.Result.body, message);
message.html() ? message.viewHtml() : message.viewPlain();
response.Result.body = null;
}
message.smimeVerified(response.Result);
}
});
}
}
} }

View file

@ -328,8 +328,9 @@ class Message implements \JsonSerializable
]; ];
} else if ($oPart->isSMimeSigned()) { } else if ($oPart->isSMimeSigned()) {
$oMessage->smimeSigned = [ $oMessage->smimeSigned = [
'sigPartId' => $oPart->PartID(), 'partId' => $oPart->PartID(),
'micAlg' => $oHeaders ? (string) $oHeaders->ParameterValue(MimeHeader::CONTENT_TYPE, 'micalg') : '' 'micAlg' => $oHeaders ? (string) $oHeaders->ParameterValue(MimeHeader::CONTENT_TYPE, 'micalg') : '',
'detached' => false
]; ];
} }
} }
@ -346,9 +347,9 @@ class Message implements \JsonSerializable
]; ];
} else if ($oPart->isSMimeSigned()) { } else if ($oPart->isSMimeSigned()) {
$oMessage->smimeSigned = [ $oMessage->smimeSigned = [
'bodyPartId' => $oPart->SubParts()[0]->PartID(), 'partId' => $oPart->PartID(),
'sigPartId' => $oPart->SubParts()[1]->PartID(), 'micAlg' => $oHeaders ? (string) $oHeaders->ParameterValue(MimeHeader::CONTENT_TYPE, 'micalg') : '',
'micAlg' => $oHeaders ? (string) $oHeaders->ParameterValue(MimeHeader::CONTENT_TYPE, 'micalg') : '' 'detached' => true
]; ];
} }
/* /*
@ -549,6 +550,13 @@ class Message implements \JsonSerializable
$result['pgpEncrypted'] = $this->pgpEncrypted; $result['pgpEncrypted'] = $this->pgpEncrypted;
} }
if ($this->smimeSigned) {
$result['smimeSigned'] = $this->smimeSigned;
}
if ($this->smimeEncrypted) {
$result['smimeEncrypted'] = $this->smimeEncrypted;
}
if ($this->aThreadUIDs) { if ($this->aThreadUIDs) {
$result['threads'] = $this->aThreadUIDs; $result['threads'] = $this->aThreadUIDs;
} }

View file

@ -7,7 +7,6 @@ use RainLoop\Exceptions\ClientException;
use RainLoop\Model\Account; use RainLoop\Model\Account;
use RainLoop\Notifications; use RainLoop\Notifications;
use MailSo\Imap\SequenceSet; use MailSo\Imap\SequenceSet;
use MailSo\Imap\Enumerations\FetchType;
use MailSo\Imap\Enumerations\MessageFlag; use MailSo\Imap\Enumerations\MessageFlag;
use MailSo\Mime\Part as MimePart; use MailSo\Mime\Part as MimePart;
use MailSo\Mime\Enumerations\Header as MimeEnumHeader; use MailSo\Mime\Enumerations\Header as MimeEnumHeader;
@ -650,122 +649,6 @@ trait Messages
return $this->DefaultResponse($aAttachments); return $this->DefaultResponse($aAttachments);
} }
/**
* https://datatracker.ietf.org/doc/html/rfc3156#section-5
*/
public function DoMessagePgpVerify() : array
{
$sFolderName = $this->GetActionParam('folder', '');
$iUid = (int) $this->GetActionParam('uid', 0);
$sBodyPart = $this->GetActionParam('bodyPart', '');
$sSigPart = $this->GetActionParam('sigPart', '');
if ($sBodyPart) {
$result = [
'text' => \preg_replace('/\\r?\\n/su', "\r\n", $sBodyPart),
'signature' => $this->GetActionParam('sigPart', '')
];
} else {
$sBodyPartId = $this->GetActionParam('bodyPartId', '');
$sSigPartId = $this->GetActionParam('sigPartId', '');
// $sMicAlg = $this->GetActionParam('micAlg', '');
$oAccount = $this->initMailClientConnection();
$oImapClient = $this->ImapClient();
$oImapClient->FolderExamine($sFolderName);
$aParts = [
FetchType::BODY_PEEK.'['.$sBodyPartId.']',
// An empty section specification refers to the entire message, including the header.
// But Dovecot does not return it with BODY.PEEK[1], so we also use BODY.PEEK[1.MIME].
FetchType::BODY_PEEK.'['.$sBodyPartId.'.MIME]'
];
if ($sSigPartId) {
$aParts[] = FetchType::BODY_PEEK.'['.$sSigPartId.']';
}
$oFetchResponse = $oImapClient->Fetch($aParts, $iUid, true)[0];
$sBodyMime = $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sBodyPartId.'.MIME]');
if ($sSigPartId) {
$result = [
'text' => \preg_replace('/\\r?\\n/su', "\r\n",
$sBodyMime . $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sBodyPartId.']')
),
'signature' => preg_replace('/[^\x00-\x7F]/', '',
$oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sSigPartId.']')
)
];
} else {
// clearsigned text
$result = [
'text' => $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sBodyPartId.']'),
'signature' => ''
];
$decode = (new \MailSo\Mime\HeaderCollection($sBodyMime))->ValueByName(MimeEnumHeader::CONTENT_TRANSFER_ENCODING);
if ('base64' === $decode) {
$result['text'] = \base64_decode($result['text']);
} else if ('quoted-printable' === $decode) {
$result['text'] = \quoted_printable_decode($result['text']);
}
}
}
// Try by default as OpenPGP.js sets useGnuPG to 0
if ($this->GetActionParam('tryGnuPG', 1)) {
$GPG = $this->GnuPG();
if ($GPG) {
$info = $this->GnuPG()->verify($result['text'], $result['signature']);
// $info = $this->GnuPG()->verifyStream($fp, $result['signature']);
if (empty($info[0])) {
$result = false;
} else {
$info = $info[0];
/**
* https://code.woboq.org/qt5/include/gpg-error.h.html
* status:
0 = GPG_ERR_NO_ERROR
1 = GPG_ERR_GENERAL
9 = GPG_ERR_NO_PUBKEY
117440513 = General error
117440520 = Bad signature
*/
$summary = \defined('GNUPG_SIGSUM_VALID') ? [
GNUPG_SIGSUM_VALID => 'The signature is fully valid.',
GNUPG_SIGSUM_GREEN => 'The signature is good but one might want to display some extra information. Check the other bits.',
GNUPG_SIGSUM_RED => 'The signature is bad. It might be useful to check other bits and display more information, i.e. a revoked certificate might not render a signature invalid when the message was received prior to the cause for the revocation.',
GNUPG_SIGSUM_KEY_REVOKED => 'The key or at least one certificate has been revoked.',
GNUPG_SIGSUM_KEY_EXPIRED => 'The key or one of the certificates has expired. It is probably a good idea to display the date of the expiration.',
GNUPG_SIGSUM_SIG_EXPIRED => 'The signature has expired.',
GNUPG_SIGSUM_KEY_MISSING => 'Cant verify due to a missing key or certificate.',
GNUPG_SIGSUM_CRL_MISSING => 'The CRL (or an equivalent mechanism) is not available.',
GNUPG_SIGSUM_CRL_TOO_OLD => 'Available CRL is too old.',
GNUPG_SIGSUM_BAD_POLICY => 'A policy requirement was not met.',
GNUPG_SIGSUM_SYS_ERROR => 'A system error occurred.',
// GNUPG_SIGSUM_TOFU_CONFLICT = 'A TOFU conflict was detected.',
] : [];
// Verified, so no need to return $result['text'] and $result['signature']
$result = [
'fingerprint' => $info['fingerprint'],
'validity' => $info['validity'],
'status' => $info['status'],
'summary' => $info['summary'],
'message' => \implode("\n", \array_filter($summary, function($k) use ($info) {
return $info['summary'] & $k;
}, ARRAY_FILTER_USE_KEY))
];
}
} else {
$result = false;
}
}
return $this->DefaultResponse($result);
}
/** /**
* @throws \RainLoop\Exceptions\ClientException * @throws \RainLoop\Exceptions\ClientException
* @throws \MailSo\Net\Exceptions\ConnectionException * @throws \MailSo\Net\Exceptions\ConnectionException

View file

@ -5,6 +5,8 @@ namespace RainLoop\Actions;
use SnappyMail\PGP\Backup; use SnappyMail\PGP\Backup;
use SnappyMail\PGP\Keyservers; use SnappyMail\PGP\Keyservers;
use SnappyMail\PGP\GnuPG; use SnappyMail\PGP\GnuPG;
use MailSo\Imap\Enumerations\FetchType;
use MailSo\Mime\Enumerations\Header as MimeEnumHeader;
trait Pgp trait Pgp
{ {
@ -289,4 +291,119 @@ trait Pgp
$keyId = $this->GetActionParam('keyId', ''); $keyId = $this->GetActionParam('keyId', '');
return $this->DefaultResponse(($key && $keyId && Backup::PGPKey($key, $keyId))); return $this->DefaultResponse(($key && $keyId && Backup::PGPKey($key, $keyId)));
} }
/**
* https://datatracker.ietf.org/doc/html/rfc3156#section-5
*/
public function DoMessagePgpVerify() : array
{
$sFolderName = $this->GetActionParam('folder', '');
$iUid = (int) $this->GetActionParam('uid', 0);
$sBodyPart = $this->GetActionParam('bodyPart', '');
$sSigPart = $this->GetActionParam('sigPart', '');
if ($sBodyPart) {
$result = [
'text' => \preg_replace('/\\r?\\n/su', "\r\n", $sBodyPart),
'signature' => $this->GetActionParam('sigPart', '')
];
} else {
$sBodyPartId = $this->GetActionParam('bodyPartId', '');
$sSigPartId = $this->GetActionParam('sigPartId', '');
// $sMicAlg = $this->GetActionParam('micAlg', '');
$this->initMailClientConnection();
$oImapClient = $this->ImapClient();
$oImapClient->FolderExamine($sFolderName);
$aParts = [
FetchType::BODY_PEEK.'['.$sBodyPartId.']',
// An empty section specification refers to the entire message, including the header.
// But Dovecot does not return it with BODY.PEEK[1], so we also use BODY.PEEK[1.MIME].
FetchType::BODY_PEEK.'['.$sBodyPartId.'.MIME]'
];
if ($sSigPartId) {
$aParts[] = FetchType::BODY_PEEK.'['.$sSigPartId.']';
}
$oFetchResponse = $oImapClient->Fetch($aParts, $iUid, true)[0];
$sBodyMime = $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sBodyPartId.'.MIME]');
if ($sSigPartId) {
$result = [
'text' => \preg_replace('/\\r?\\n/su', "\r\n",
$sBodyMime . $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sBodyPartId.']')
),
'signature' => preg_replace('/[^\x00-\x7F]/', '',
$oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sSigPartId.']')
)
];
} else {
// clearsigned text
$result = [
'text' => $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sBodyPartId.']'),
'signature' => ''
];
$decode = (new \MailSo\Mime\HeaderCollection($sBodyMime))->ValueByName(MimeEnumHeader::CONTENT_TRANSFER_ENCODING);
if ('base64' === $decode) {
$result['text'] = \base64_decode($result['text']);
} else if ('quoted-printable' === $decode) {
$result['text'] = \quoted_printable_decode($result['text']);
}
}
}
// Try by default as OpenPGP.js sets useGnuPG to 0
if ($this->GetActionParam('tryGnuPG', 1)) {
$GPG = $this->GnuPG();
if ($GPG) {
$info = $this->GnuPG()->verify($result['text'], $result['signature']);
// $info = $this->GnuPG()->verifyStream($fp, $result['signature']);
if (empty($info[0])) {
$result = false;
} else {
$info = $info[0];
/**
* https://code.woboq.org/qt5/include/gpg-error.h.html
* status:
0 = GPG_ERR_NO_ERROR
1 = GPG_ERR_GENERAL
9 = GPG_ERR_NO_PUBKEY
117440513 = General error
117440520 = Bad signature
*/
$summary = \defined('GNUPG_SIGSUM_VALID') ? [
GNUPG_SIGSUM_VALID => 'The signature is fully valid.',
GNUPG_SIGSUM_GREEN => 'The signature is good but one might want to display some extra information. Check the other bits.',
GNUPG_SIGSUM_RED => 'The signature is bad. It might be useful to check other bits and display more information, i.e. a revoked certificate might not render a signature invalid when the message was received prior to the cause for the revocation.',
GNUPG_SIGSUM_KEY_REVOKED => 'The key or at least one certificate has been revoked.',
GNUPG_SIGSUM_KEY_EXPIRED => 'The key or one of the certificates has expired. It is probably a good idea to display the date of the expiration.',
GNUPG_SIGSUM_SIG_EXPIRED => 'The signature has expired.',
GNUPG_SIGSUM_KEY_MISSING => 'Cant verify due to a missing key or certificate.',
GNUPG_SIGSUM_CRL_MISSING => 'The CRL (or an equivalent mechanism) is not available.',
GNUPG_SIGSUM_CRL_TOO_OLD => 'Available CRL is too old.',
GNUPG_SIGSUM_BAD_POLICY => 'A policy requirement was not met.',
GNUPG_SIGSUM_SYS_ERROR => 'A system error occurred.',
// GNUPG_SIGSUM_TOFU_CONFLICT = 'A TOFU conflict was detected.',
] : [];
// Verified, so no need to return $result['text'] and $result['signature']
$result = [
'fingerprint' => $info['fingerprint'],
'validity' => $info['validity'],
'status' => $info['status'],
'summary' => $info['summary'],
'message' => \implode("\n", \array_filter($summary, function($k) use ($info) {
return $info['summary'] & $k;
}, ARRAY_FILTER_USE_KEY))
];
}
} else {
$result = false;
}
}
return $this->DefaultResponse($result);
}
} }

View file

@ -4,6 +4,7 @@ namespace RainLoop\Actions;
use SnappyMail\SMime\OpenSSL; use SnappyMail\SMime\OpenSSL;
use SnappyMail\SMime\Certificate; use SnappyMail\SMime\Certificate;
use MailSo\Imap\Enumerations\FetchType;
trait SMime trait SMime
{ {
@ -38,4 +39,41 @@ trait SMime
$result = $cert->createSelfSigned('demo'); $result = $cert->createSelfSigned('demo');
return $this->DefaultResponse($result ?: false); return $this->DefaultResponse($result ?: false);
} }
public function DoMessageSMimeVerify() : array
{
$sFolderName = $this->GetActionParam('folder', '');
$iUid = (int) $this->GetActionParam('uid', 0);
$sPartId = $this->GetActionParam('partId', '');
$sMicAlg = $this->GetActionParam('micAlg', '');
$bDetached = !empty($this->GetActionParam('detached', 0));
$this->initMailClientConnection();
$oImapClient = $this->ImapClient();
$oImapClient->FolderExamine($sFolderName);
if ('TEXT' === $sPartId) {
$oFetchResponse = $oImapClient->Fetch([
FetchType::BODY_PEEK.'['.$sPartId.']',
// An empty section specification refers to the entire message, including the header.
// But Dovecot does not return it with BODY.PEEK[1], so we also use BODY.PEEK[1.MIME].
FetchType::BODY_HEADER_PEEK
], $iUid, true)[0];
$sBody = $oFetchResponse->GetFetchValue(FetchType::BODY_HEADER);
} else {
$oFetchResponse = $oImapClient->Fetch([
FetchType::BODY_PEEK.'['.$sPartId.']',
// An empty section specification refers to the entire message, including the header.
// But Dovecot does not return it with BODY.PEEK[1], so we also use BODY.PEEK[1.MIME].
FetchType::BODY_PEEK.'['.$sPartId.'.MIME]'
], $iUid, true)[0];
$sBody = $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sPartId.'.MIME]');
}
$sBody .= $oFetchResponse->GetFetchValue(FetchType::BODY.'['.$sPartId.']');
$SMIME = new \SnappyMail\SMime\OpenSSL;
$result = $SMIME->verify($sBody, null, !$bDetached);
return $this->DefaultResponse($result);
}
} }

View file

@ -18,7 +18,7 @@ class Temporary
// throw new \Exception("Failed to access directory {$tmpdir}"); // throw new \Exception("Failed to access directory {$tmpdir}");
} }
if ($prefix) { if ($prefix) {
$this->filename = \tempnam($tmpdir, $name); $this->filename = @\tempnam($tmpdir, $name);
} else { } else {
$this->filename = $tmpdir . '/' . $name; $this->filename = $tmpdir . '/' . $name;
} }
@ -31,7 +31,7 @@ class Temporary
function __toString() : string function __toString() : string
{ {
$this->filename; return $this->filename;
} }
public function filename() : string public function filename() : string

View file

@ -4,6 +4,10 @@ namespace SnappyMail\SMime;
use SnappyMail\File\Temporary; use SnappyMail\File\Temporary;
/**
* PHP 8.3.0 PKCS7_NOOLDMIMETYPE
*/
class OpenSSL class OpenSSL
{ {
private array $headers = []; private array $headers = [];
@ -45,45 +49,59 @@ class OpenSSL
} }
} }
public function decrypt(string $data) : ?string public function decrypt(/*string|Temporary*/ $input) : ?string
{ {
$input = new Temporary('smimein-'); if (\is_string($input)) {
$tmp = new Temporary('smimein-');
if (!$tmp->putContents($input)) {
return null;
}
$input = $tmp;
}
$output = new Temporary('smimeout-'); $output = new Temporary('smimeout-');
return ($input->putContents($data) && \openssl_pkcs7_decrypt( if (!\openssl_pkcs7_decrypt(
$input->filename(), $input->filename(),
$output->filename(), $output->filename(),
$this->certificate, $this->certificate,
$this->privateKey $this->privateKey
)) ? $output->getContents() : null; )) {
throw new \RuntimeException('OpenSSL decrypt: ' . \openssl_error_string());
}
return $output->getContents();
} }
public function encrypt(/*string|Temporary*/$input, array $certificates) : ?string public function encrypt(/*string|Temporary*/$input, array $certificates) : ?string
{ {
if (\is_string($input)) { if (\is_string($input)) {
$input = new Temporary('smimein-'); $tmp = new Temporary('smimein-');
if (!$input->putContents($data)) { if (!$tmp->putContents($input)) {
return null; return null;
} }
$input = $tmp;
} }
$output = new Temporary('smimeout-'); $output = new Temporary('smimeout-');
$flags = \defined('PKCS7_NOOLDMIMETYPE') ? \PKCS7_NOOLDMIMETYPE : 0; $flags = \defined('PKCS7_NOOLDMIMETYPE') ? \PKCS7_NOOLDMIMETYPE : 0;
return \openssl_pkcs7_encrypt( if (!\openssl_pkcs7_encrypt(
$input->filename(), $input->filename(),
$output->filename(), $output->filename(),
$certificates, $certificates,
$this->headers, $this->headers,
$flags, $flags,
$this->cipher_algo $this->cipher_algo
) ? $output->getContents() : null; )) {
throw new \RuntimeException('OpenSSL encrypt: ' . \openssl_error_string());
}
return $output->getContents();
} }
public function sign(/*string|Temporary*/$input, bool $detached = true) public function sign(/*string|Temporary*/$input, bool $detached = true)
{ {
if (\is_string($input)) { if (\is_string($input)) {
$input = new Temporary('smimein-'); $tmp = new Temporary('smimein-');
if (!$input->putContents($data)) { if (!$tmp->putContents($input)) {
return null; return null;
} }
$input = $tmp;
} }
$output = new Temporary('smimeout-'); $output = new Temporary('smimeout-');
if (!\openssl_pkcs7_sign( if (!\openssl_pkcs7_sign(
@ -135,22 +153,31 @@ class OpenSSL
throw new \RuntimeException('OpenSSL sign: failed to find p7s'); throw new \RuntimeException('OpenSSL sign: failed to find p7s');
} }
public function verify(string $data, $signers_certificates_filename = null) public function verify(/*string|Temporary*/$input, ?string $signers_certificates_filename = null, bool $returnBody)
{ {
if (\is_string($input)) { if (\is_string($input)) {
$input = new Temporary('smimein-'); $tmp = new Temporary('smimein-');
if (!$input->putContents($data)) { if (!$tmp->putContents($input)) {
return null; return null;
} }
$input = $tmp;
} }
return true === \openssl_pkcs7_verify( $output = $returnBody ? new Temporary('smimeout-') : null;
if (true !== \openssl_pkcs7_verify(
$input->filename(), $input->filename(),
$flags = 0, // $flags = 0, // \PKCS7_NOVERIFY | \PKCS7_NOCHAIN | \PKCS7_NOSIGS
\PKCS7_NOVERIFY | \PKCS7_NOCHAIN | \PKCS7_NOSIGS,
$signers_certificates_filename ?: null, $signers_certificates_filename ?: null,
$ca_info = [], $ca_info = [],
$this->untrusted_certificates_filename, $this->untrusted_certificates_filename,
$content = null, $output ? $output->filename() : null,
$output_filename = null $output_filename = null
); )) {
throw new \RuntimeException('OpenSSL verify: ' . \openssl_error_string());
}
return [
'body' => $output ? $output->getContents() : null,
'success' => true
];
} }
} }

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "في حال بدء العملية , فلا يمكن ايقافها او الغائها", "DANGER_DESC_HTML_2": "في حال بدء العملية , فلا يمكن ايقافها او الغائها",
"TITLE_CLEARING_PROCESS": "...يتم دمج المجلد" "TITLE_CLEARING_PROCESS": "...يتم دمج المجلد"
}, },
"CRYPTO": {
"SIGN": "تسجيل",
"ENCRYPT": "تشفير",
"DECRYPT": "فك تشفير",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "توقيع جيد من %USER%",
"ERROR": "%TYPE% error: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "OpenPGP استيراد مفتاح", "POPUP_IMPORT_TITLE": "OpenPGP استيراد مفتاح",
"POPUP_IMPORT_BUTTON": "استيراد", "POPUP_IMPORT_BUTTON": "استيراد",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "OpenPGP توليد مفتاح", "POPUP_GENERATE_TITLE": "OpenPGP توليد مفتاح",
"POPUP_GENERATE_BUTTON": "قم بالتوليد", "POPUP_GENERATE_BUTTON": "قم بالتوليد",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "تسجيل",
"LABEL_ENCRYPT": "تشفير",
"BUTTON_DECRYPT": "فك تشفير",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP signed message", "SIGNED_MESSAGE": "OpenPGP signed message",
"ENCRYPTED_MESSAGE": "OpenPGP encrypted message", "ENCRYPTED_MESSAGE": "OpenPGP encrypted message",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "توقيع جيد من %USER%", },
"ERROR": "OpenPGP error: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME signed message",
"ENCRYPTED_MESSAGE": "S\/MIME encrypted message"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "إنشاء عامل تصفية؟", "TITLE_CREATE_FILTER": "إنشاء عامل تصفية؟",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Веднъж започнат, този процес не може да бъде прекратен или отказан.", "DANGER_DESC_HTML_2": "Веднъж започнат, този процес не може да бъде прекратен или отказан.",
"TITLE_CLEARING_PROCESS": "Прочистване на папката..." "TITLE_CLEARING_PROCESS": "Прочистване на папката..."
}, },
"CRYPTO": {
"SIGN": "Подпиши",
"ENCRYPT": "Шифровай",
"DECRYPT": "Дешифрирай",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Валиден подпис за %USER%",
"ERROR": "%TYPE% грешка: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Внасяне на OpenPGP ключ", "POPUP_IMPORT_TITLE": "Внасяне на OpenPGP ключ",
"POPUP_IMPORT_BUTTON": "Внеси", "POPUP_IMPORT_BUTTON": "Внеси",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Създаване на OpenPGP ключове", "POPUP_GENERATE_TITLE": "Създаване на OpenPGP ключове",
"POPUP_GENERATE_BUTTON": "Създай", "POPUP_GENERATE_BUTTON": "Създай",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Подпиши",
"LABEL_ENCRYPT": "Шифровай",
"BUTTON_DECRYPT": "Дешифрирай",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Подписано с OpenPGP", "SIGNED_MESSAGE": "Подписано с OpenPGP",
"ENCRYPTED_MESSAGE": "Шифровано с OpenPGP", "ENCRYPTED_MESSAGE": "Шифровано с OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Валиден подпис за %USER%", },
"ERROR": "OpenPGP грешка: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Подписано с S\/MIME",
"ENCRYPTED_MESSAGE": "Шифровано с S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Създай филтър?", "TITLE_CREATE_FILTER": "Създай филтър?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Tento proces není možné přerušit.", "DANGER_DESC_HTML_2": "Tento proces není možné přerušit.",
"TITLE_CLEARING_PROCESS": "Odstraňuje se složka..." "TITLE_CLEARING_PROCESS": "Odstraňuje se složka..."
}, },
"CRYPTO": {
"SIGN": "Podpis",
"ENCRYPT": "Šifrování",
"DECRYPT": "Dešifrovat",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Ověřený podpis od %USER%",
"ERROR": "%TYPE% chyba: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Import OpenPGP klíče", "POPUP_IMPORT_TITLE": "Import OpenPGP klíče",
"POPUP_IMPORT_BUTTON": "Import", "POPUP_IMPORT_BUTTON": "Import",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generovat OpenPGP klíče", "POPUP_GENERATE_TITLE": "Generovat OpenPGP klíče",
"POPUP_GENERATE_BUTTON": "Generovat", "POPUP_GENERATE_BUTTON": "Generovat",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Podpis",
"LABEL_ENCRYPT": "Šifrování",
"BUTTON_DECRYPT": "Dešifrovat",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Zpráva podepsaná OpenPGP", "SIGNED_MESSAGE": "Zpráva podepsaná OpenPGP",
"ENCRYPTED_MESSAGE": "Zpráva šifrovaná OpenPGP", "ENCRYPTED_MESSAGE": "Zpráva šifrovaná OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Ověřený podpis od %USER%", },
"ERROR": "OpenPGP chyba: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Zpráva podepsaná S\/MIME",
"ENCRYPTED_MESSAGE": "Zpráva šifrovaná S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Vytvořit filtr?", "TITLE_CREATE_FILTER": "Vytvořit filtr?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Handlingen kan ikke afbrydes når den er startet.", "DANGER_DESC_HTML_2": "Handlingen kan ikke afbrydes når den er startet.",
"TITLE_CLEARING_PROCESS": "Tømmer mappe..." "TITLE_CLEARING_PROCESS": "Tømmer mappe..."
}, },
"CRYPTO": {
"SIGN": "Signér",
"ENCRYPT": "Krypter",
"DECRYPT": "Dekrypter",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Accepteret signatur for %USER\"",
"ERROR": "%TYPE% fejl: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importer OpenPGP nøgle", "POPUP_IMPORT_TITLE": "Importer OpenPGP nøgle",
"POPUP_IMPORT_BUTTON": "Importer", "POPUP_IMPORT_BUTTON": "Importer",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generér OpenPGP nøgler", "POPUP_GENERATE_TITLE": "Generér OpenPGP nøgler",
"POPUP_GENERATE_BUTTON": "Generér", "POPUP_GENERATE_BUTTON": "Generér",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Signér",
"LABEL_ENCRYPT": "Krypter",
"BUTTON_DECRYPT": "Dekrypter",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP signeret meddelelse", "SIGNED_MESSAGE": "OpenPGP signeret meddelelse",
"ENCRYPTED_MESSAGE": "OpenPGP krypteret meddelelse", "ENCRYPTED_MESSAGE": "OpenPGP krypteret meddelelse",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Accepteret signatur for %USER\"", },
"ERROR": "OpenPGP fejl: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME signeret meddelelse",
"ENCRYPTED_MESSAGE": "S\/MIME krypteret meddelelse"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Opret filter?", "TITLE_CREATE_FILTER": "Opret filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Einmal begonnen, kann dieser Vorgang nicht mehr abgebrochen werden.", "DANGER_DESC_HTML_2": "Einmal begonnen, kann dieser Vorgang nicht mehr abgebrochen werden.",
"TITLE_CLEARING_PROCESS": "Ordner wird gelöscht ..." "TITLE_CLEARING_PROCESS": "Ordner wird gelöscht ..."
}, },
"CRYPTO": {
"SIGN": "Unterschrift",
"ENCRYPT": "Verschlüsseln",
"DECRYPT": "Entschlüsseln",
"VERIFY": "Überprüfen",
"GOOD_SIGNATURE": "Gültige Unterschrift von %USER%",
"ERROR": "%TYPE%-Fehler: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "OpenPGP-Schlüssel importieren", "POPUP_IMPORT_TITLE": "OpenPGP-Schlüssel importieren",
"POPUP_IMPORT_BUTTON": "Importieren", "POPUP_IMPORT_BUTTON": "Importieren",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "OpenPGP-Schlüssel generieren", "POPUP_GENERATE_TITLE": "OpenPGP-Schlüssel generieren",
"POPUP_GENERATE_BUTTON": "Generieren", "POPUP_GENERATE_BUTTON": "Generieren",
"LABEL_KEY_TYPE": "Typ", "LABEL_KEY_TYPE": "Typ",
"LABEL_SIGN": "Unterschrift",
"LABEL_ENCRYPT": "Verschlüsseln",
"BUTTON_DECRYPT": "Entschlüsseln",
"BUTTON_VERIFY": "Überprüfen",
"SIGNED_MESSAGE": "OpenPGP-signierte Nachricht", "SIGNED_MESSAGE": "OpenPGP-signierte Nachricht",
"ENCRYPTED_MESSAGE": "OpenPGP-verschlüsselte Nachricht", "ENCRYPTED_MESSAGE": "OpenPGP-verschlüsselte Nachricht",
"STORE_IN_GNUPG": "Auf dem Server als GnuPG speichern", "STORE_IN_GNUPG": "Auf dem Server als GnuPG speichern",
"BACKUP_ON_SERVER": "Auf dem Server verschlüsselt speichern", "BACKUP_ON_SERVER": "Auf dem Server verschlüsselt speichern"
"GOOD_SIGNATURE": "Gültige Unterschrift von %USER%", },
"ERROR": "OpenPGP-Fehler: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME-signierte Nachricht",
"ENCRYPTED_MESSAGE": "S\/MIME-verschlüsselte Nachricht"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Filter erstellen?", "TITLE_CREATE_FILTER": "Filter erstellen?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Αφού ξεκινήσει, η διαδικασία δεν σταματά ή ακυρώνεται.", "DANGER_DESC_HTML_2": "Αφού ξεκινήσει, η διαδικασία δεν σταματά ή ακυρώνεται.",
"TITLE_CLEARING_PROCESS": "Διαγραφή όλων των μηνυμάτων στο φάκελο..." "TITLE_CLEARING_PROCESS": "Διαγραφή όλων των μηνυμάτων στο φάκελο..."
}, },
"CRYPTO": {
"SIGN": "Υπογραφή",
"ENCRYPT": "Κρυπτογράφηση",
"DECRYPT": "Αποκρυπτογράφηση",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Good signature from %USER%",
"ERROR": "%TYPE% error: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Εισαγωγή κλειδιού OpenPGP", "POPUP_IMPORT_TITLE": "Εισαγωγή κλειδιού OpenPGP",
"POPUP_IMPORT_BUTTON": "Εισαγωγή", "POPUP_IMPORT_BUTTON": "Εισαγωγή",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Δημιουργία κλειδιών OpenPGP", "POPUP_GENERATE_TITLE": "Δημιουργία κλειδιών OpenPGP",
"POPUP_GENERATE_BUTTON": "Δημιουργία", "POPUP_GENERATE_BUTTON": "Δημιουργία",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Υπογραφή",
"LABEL_ENCRYPT": "Κρυπτογράφηση",
"BUTTON_DECRYPT": "Αποκρυπτογράφηση",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Μήνυμα υπογεγραμμένο με OpenPGP", "SIGNED_MESSAGE": "Μήνυμα υπογεγραμμένο με OpenPGP",
"ENCRYPTED_MESSAGE": "Μήνυμα κωδικοποιημένο με OpenPGP", "ENCRYPTED_MESSAGE": "Μήνυμα κωδικοποιημένο με OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Good signature from %USER%", },
"ERROR": "OpenPGP error: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Μήνυμα υπογεγραμμένο με S\/MIME",
"ENCRYPTED_MESSAGE": "Μήνυμα κωδικοποιημένο με S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Δημιουργία φίλτρου;", "TITLE_CREATE_FILTER": "Δημιουργία φίλτρου;",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Once started, the process cannot be aborted or cancelled.", "DANGER_DESC_HTML_2": "Once started, the process cannot be aborted or cancelled.",
"TITLE_CLEARING_PROCESS": "Purging the folder..." "TITLE_CLEARING_PROCESS": "Purging the folder..."
}, },
"CRYPTO": {
"SIGN": "Sign",
"ENCRYPT": "Encrypt",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Good signature from %USER%",
"ERROR": "%TYPE% error: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Import OpenPGP key", "POPUP_IMPORT_TITLE": "Import OpenPGP key",
"POPUP_IMPORT_BUTTON": "Import", "POPUP_IMPORT_BUTTON": "Import",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generate OpenPGP key pair", "POPUP_GENERATE_TITLE": "Generate OpenPGP key pair",
"POPUP_GENERATE_BUTTON": "Generate", "POPUP_GENERATE_BUTTON": "Generate",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Sign",
"LABEL_ENCRYPT": "Encrypt",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP signed message", "SIGNED_MESSAGE": "OpenPGP signed message",
"ENCRYPTED_MESSAGE": "OpenPGP encrypted message", "ENCRYPTED_MESSAGE": "OpenPGP encrypted message",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Good signature from %USER%", },
"ERROR": "OpenPGP error: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME signed message",
"ENCRYPTED_MESSAGE": "S\/MIME encrypted message"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Create a filter?", "TITLE_CREATE_FILTER": "Create a filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Once started, the process cannot be aborted or canceled.", "DANGER_DESC_HTML_2": "Once started, the process cannot be aborted or canceled.",
"TITLE_CLEARING_PROCESS": "Purging the folder..." "TITLE_CLEARING_PROCESS": "Purging the folder..."
}, },
"CRYPTO": {
"SIGN": "Sign",
"ENCRYPT": "Encrypt",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Good signature from %USER%",
"ERROR": "%TYPE% error: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Import OpenPGP key", "POPUP_IMPORT_TITLE": "Import OpenPGP key",
"POPUP_IMPORT_BUTTON": "Import", "POPUP_IMPORT_BUTTON": "Import",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generate OpenPGP key pair", "POPUP_GENERATE_TITLE": "Generate OpenPGP key pair",
"POPUP_GENERATE_BUTTON": "Generate", "POPUP_GENERATE_BUTTON": "Generate",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Sign",
"LABEL_ENCRYPT": "Encrypt",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP signed message", "SIGNED_MESSAGE": "OpenPGP signed message",
"ENCRYPTED_MESSAGE": "OpenPGP encrypted message", "ENCRYPTED_MESSAGE": "OpenPGP encrypted message",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Good signature from %USER%", },
"ERROR": "OpenPGP error: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S/MIME signed message",
"ENCRYPTED_MESSAGE": "S/MIME encrypted message"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Create a filter?", "TITLE_CREATE_FILTER": "Create a filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Una vez comenzado el proceso no se puede abortar ni cancelar.", "DANGER_DESC_HTML_2": "Una vez comenzado el proceso no se puede abortar ni cancelar.",
"TITLE_CLEARING_PROCESS": "Purgando carpeta..." "TITLE_CLEARING_PROCESS": "Purgando carpeta..."
}, },
"CRYPTO": {
"SIGN": "Firmar",
"ENCRYPT": "Encriptar",
"DECRYPT": "Descifrar",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Buena firma de %USER%",
"ERROR": "Error %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importar clave OpenPGP", "POPUP_IMPORT_TITLE": "Importar clave OpenPGP",
"POPUP_IMPORT_BUTTON": "Importar", "POPUP_IMPORT_BUTTON": "Importar",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generar clave OpenPGP", "POPUP_GENERATE_TITLE": "Generar clave OpenPGP",
"POPUP_GENERATE_BUTTON": "Generar", "POPUP_GENERATE_BUTTON": "Generar",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Firmar",
"LABEL_ENCRYPT": "Encriptar",
"BUTTON_DECRYPT": "Descifrar",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Mensaje firmado mediante OpenPGP", "SIGNED_MESSAGE": "Mensaje firmado mediante OpenPGP",
"ENCRYPTED_MESSAGE": "Mensaje cifrado mediante OpenPGP", "ENCRYPTED_MESSAGE": "Mensaje cifrado mediante OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Buena firma de %USER%", },
"ERROR": "Error OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Mensaje firmado mediante S\/MIME",
"ENCRYPTED_MESSAGE": "Mensaje cifrado mediante S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "¿Crear un filtro?", "TITLE_CREATE_FILTER": "¿Crear un filtro?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Juba alustatud protsessi ei saa tühistada või katkestada.", "DANGER_DESC_HTML_2": "Juba alustatud protsessi ei saa tühistada või katkestada.",
"TITLE_CLEARING_PROCESS": "Tühjendan kausta..." "TITLE_CLEARING_PROCESS": "Tühjendan kausta..."
}, },
"CRYPTO": {
"SIGN": "Allkirjasta",
"ENCRYPT": "Krüpteeri",
"DECRYPT": "Dekrüpteeri",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Korralik signatuur kasutajalt %USER%",
"ERROR": "%TYPE% viga: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Impordi OpenPGP võti", "POPUP_IMPORT_TITLE": "Impordi OpenPGP võti",
"POPUP_IMPORT_BUTTON": "Impordi", "POPUP_IMPORT_BUTTON": "Impordi",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Genereeri OpenPGP võtmed", "POPUP_GENERATE_TITLE": "Genereeri OpenPGP võtmed",
"POPUP_GENERATE_BUTTON": "Genereeri", "POPUP_GENERATE_BUTTON": "Genereeri",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Allkirjasta",
"LABEL_ENCRYPT": "Krüpteeri",
"BUTTON_DECRYPT": "Dekrüpteeri",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP abil signeeritud kiri", "SIGNED_MESSAGE": "OpenPGP abil signeeritud kiri",
"ENCRYPTED_MESSAGE": "OpenPGP abil krüpteeritud kiri", "ENCRYPTED_MESSAGE": "OpenPGP abil krüpteeritud kiri",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Korralik signatuur kasutajalt %USER%", },
"ERROR": "OpenPGP viga: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME abil signeeritud kiri",
"ENCRYPTED_MESSAGE": "S\/MIME abil krüpteeritud kiri"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Filtri loomine", "TITLE_CREATE_FILTER": "Filtri loomine",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Behin hasita, ekintza hau ezin da gelditu edo utzi.", "DANGER_DESC_HTML_2": "Behin hasita, ekintza hau ezin da gelditu edo utzi.",
"TITLE_CLEARING_PROCESS": "Karpeta garbitzen..." "TITLE_CLEARING_PROCESS": "Karpeta garbitzen..."
}, },
"CRYPTO": {
"SIGN": "Sinatu",
"ENCRYPT": "Zifratu",
"DECRYPT": "Deszifratu",
"VERIFY": "Egiaztatu",
"GOOD_SIGNATURE": "%USER%-en sinadura egokia",
"ERROR": "%TYPE% errorea: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Inportatu OpenPGP gakoa", "POPUP_IMPORT_TITLE": "Inportatu OpenPGP gakoa",
"POPUP_IMPORT_BUTTON": "Inportatu", "POPUP_IMPORT_BUTTON": "Inportatu",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Sortu OpenPGP gako parea", "POPUP_GENERATE_TITLE": "Sortu OpenPGP gako parea",
"POPUP_GENERATE_BUTTON": "Sortu", "POPUP_GENERATE_BUTTON": "Sortu",
"LABEL_KEY_TYPE": "Mota", "LABEL_KEY_TYPE": "Mota",
"LABEL_SIGN": "Sinatu",
"LABEL_ENCRYPT": "Zifratu",
"BUTTON_DECRYPT": "Deszifratu",
"BUTTON_VERIFY": "Egiaztatu",
"SIGNED_MESSAGE": "OpenPGP sinatutako mezua", "SIGNED_MESSAGE": "OpenPGP sinatutako mezua",
"ENCRYPTED_MESSAGE": "OpenPGP zifratutako mezua", "ENCRYPTED_MESSAGE": "OpenPGP zifratutako mezua",
"STORE_IN_GNUPG": "Zerbitzarian gorden GnuPG-n", "STORE_IN_GNUPG": "Zerbitzarian gorden GnuPG-n",
"BACKUP_ON_SERVER": "Zerbitzarian gorde (zifratuta)", "BACKUP_ON_SERVER": "Zerbitzarian gorde (zifratuta)"
"GOOD_SIGNATURE": "%USER%-en sinadura egokia", },
"ERROR": "OpenPGP errorea: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME sinatutako mezua",
"ENCRYPTED_MESSAGE": "S\/MIME zifratutako mezua"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Sortu iragazkia?", "TITLE_CREATE_FILTER": "Sortu iragazkia?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "زمانی که این عملیات شروع شود قابل لغو یا انصراف نیست.", "DANGER_DESC_HTML_2": "زمانی که این عملیات شروع شود قابل لغو یا انصراف نیست.",
"TITLE_CLEARING_PROCESS": "خالی کردن شاخه..." "TITLE_CLEARING_PROCESS": "خالی کردن شاخه..."
}, },
"CRYPTO": {
"SIGN": "امضاء",
"ENCRYPT": "رمزنگاری",
"DECRYPT": "رمزگشایی",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "امضای صحیح از %USER%",
"ERROR": "خطای %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "واردکردن کلید OpenPGP", "POPUP_IMPORT_TITLE": "واردکردن کلید OpenPGP",
"POPUP_IMPORT_BUTTON": "وارد‌کردن", "POPUP_IMPORT_BUTTON": "وارد‌کردن",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "تولید کلید‌های OpenPGP", "POPUP_GENERATE_TITLE": "تولید کلید‌های OpenPGP",
"POPUP_GENERATE_BUTTON": "تولید", "POPUP_GENERATE_BUTTON": "تولید",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "امضاء",
"LABEL_ENCRYPT": "رمزنگاری",
"BUTTON_DECRYPT": "رمزگشایی",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "پیام توسط OpenPGP امضاء شد", "SIGNED_MESSAGE": "پیام توسط OpenPGP امضاء شد",
"ENCRYPTED_MESSAGE": "پیام توسط OpenPGP رمزنگاری شد", "ENCRYPTED_MESSAGE": "پیام توسط OpenPGP رمزنگاری شد",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "امضای صحیح از %USER%", },
"ERROR": "خطای OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "پیام توسط S\/MIME امضاء شد",
"ENCRYPTED_MESSAGE": "پیام توسط S\/MIME رمزنگاری شد"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "یک فیلتر ایجاد شود؟", "TITLE_CREATE_FILTER": "یک فیلتر ایجاد شود؟",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Tätä toimintoa ei voi peruuttaa.", "DANGER_DESC_HTML_2": "Tätä toimintoa ei voi peruuttaa.",
"TITLE_CLEARING_PROCESS": "Tyhjennetään kansiota..." "TITLE_CLEARING_PROCESS": "Tyhjennetään kansiota..."
}, },
"CRYPTO": {
"SIGN": "Allekirjoita",
"ENCRYPT": "Salaa",
"DECRYPT": "Pura",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Oikea allekirjoitus %USER% lle",
"ERROR": "%TYPE% virhe: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Tuo OpenPGP avain", "POPUP_IMPORT_TITLE": "Tuo OpenPGP avain",
"POPUP_IMPORT_BUTTON": "Tuo", "POPUP_IMPORT_BUTTON": "Tuo",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Luo OpenPGP avain", "POPUP_GENERATE_TITLE": "Luo OpenPGP avain",
"POPUP_GENERATE_BUTTON": "Generoi", "POPUP_GENERATE_BUTTON": "Generoi",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Allekirjoita",
"LABEL_ENCRYPT": "Salaa",
"BUTTON_DECRYPT": "Pura",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP allekirjoitettu viesti", "SIGNED_MESSAGE": "OpenPGP allekirjoitettu viesti",
"ENCRYPTED_MESSAGE": "OpenPGP salattu visti", "ENCRYPTED_MESSAGE": "OpenPGP salattu visti",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Oikea allekirjoitus %USER% lle", },
"ERROR": "OpenPGP virhe: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME allekirjoitettu viesti",
"ENCRYPTED_MESSAGE": "S\/MIME salattu visti"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Luo suodatin?", "TITLE_CREATE_FILTER": "Luo suodatin?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Une fois lancé, le processus ne peut pas être interrompu ou annulé.", "DANGER_DESC_HTML_2": "Une fois lancé, le processus ne peut pas être interrompu ou annulé.",
"TITLE_CLEARING_PROCESS": "Purge du dossier..." "TITLE_CLEARING_PROCESS": "Purge du dossier..."
}, },
"CRYPTO": {
"SIGN": "Signer",
"ENCRYPT": "Chiffer",
"DECRYPT": "Déchiffrer",
"VERIFY": "Vérifier",
"GOOD_SIGNATURE": "Signature valide pour %USER%",
"ERROR": "Erreur %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importer la clef OpenPGP", "POPUP_IMPORT_TITLE": "Importer la clef OpenPGP",
"POPUP_IMPORT_BUTTON": "Importer", "POPUP_IMPORT_BUTTON": "Importer",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Générer les clés OpenPGP", "POPUP_GENERATE_TITLE": "Générer les clés OpenPGP",
"POPUP_GENERATE_BUTTON": "Générer", "POPUP_GENERATE_BUTTON": "Générer",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Signer",
"LABEL_ENCRYPT": "Chiffer",
"BUTTON_DECRYPT": "Déchiffrer",
"BUTTON_VERIFY": "Vérifier",
"SIGNED_MESSAGE": "Message signé par OpenPGP", "SIGNED_MESSAGE": "Message signé par OpenPGP",
"ENCRYPTED_MESSAGE": "Message chiffré par OpenPGP", "ENCRYPTED_MESSAGE": "Message chiffré par OpenPGP",
"STORE_IN_GNUPG": "Stocker sur le serveur dans GnuPG", "STORE_IN_GNUPG": "Stocker sur le serveur dans GnuPG",
"BACKUP_ON_SERVER": "Stocker (chiffré) sur le serveur", "BACKUP_ON_SERVER": "Stocker (chiffré) sur le serveur"
"GOOD_SIGNATURE": "Signature valide pour %USER%", },
"ERROR": "Erreur OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Message signé par S\/MIME",
"ENCRYPTED_MESSAGE": "Message chiffré par S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Créer un filtre ?", "TITLE_CREATE_FILTER": "Créer un filtre ?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Ha egyszer elindult, a folyamatot nem lehet megszakítani.", "DANGER_DESC_HTML_2": "Ha egyszer elindult, a folyamatot nem lehet megszakítani.",
"TITLE_CLEARING_PROCESS": "Mappa ürítés..." "TITLE_CLEARING_PROCESS": "Mappa ürítés..."
}, },
"CRYPTO": {
"SIGN": "Aláírás",
"ENCRYPT": "Titkosítás",
"DECRYPT": "Visszafejtés",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Jó aláírás tőle: %USER%",
"ERROR": "%TYPE% hiba: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "OpenPGP kulcs importálás", "POPUP_IMPORT_TITLE": "OpenPGP kulcs importálás",
"POPUP_IMPORT_BUTTON": "Importálás", "POPUP_IMPORT_BUTTON": "Importálás",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "OpenPGP kulcs generálás", "POPUP_GENERATE_TITLE": "OpenPGP kulcs generálás",
"POPUP_GENERATE_BUTTON": "Generálás", "POPUP_GENERATE_BUTTON": "Generálás",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Aláírás",
"LABEL_ENCRYPT": "Titkosítás",
"BUTTON_DECRYPT": "Visszafejtés",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP aláírt üzenet", "SIGNED_MESSAGE": "OpenPGP aláírt üzenet",
"ENCRYPTED_MESSAGE": "OpenPGP kódolt üzenet", "ENCRYPTED_MESSAGE": "OpenPGP kódolt üzenet",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Jó aláírás tőle: %USER%", },
"ERROR": "OpenPGP hiba: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME aláírt üzenet",
"ENCRYPTED_MESSAGE": "S\/MIME kódolt üzenet"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Szűrő létrehozás?", "TITLE_CREATE_FILTER": "Szűrő létrehozás?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Begitu dimulai, proses tidak dapat dibatalkan atau ditunda.", "DANGER_DESC_HTML_2": "Begitu dimulai, proses tidak dapat dibatalkan atau ditunda.",
"TITLE_CLEARING_PROCESS": "Membersihkan folder..." "TITLE_CLEARING_PROCESS": "Membersihkan folder..."
}, },
"CRYPTO": {
"SIGN": "Tandatangan",
"ENCRYPT": "Enkripsi",
"DECRYPT": "Deskripsi",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Tandatangan sah dari user %USER%",
"ERROR": "Kesalahan %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Impor kunci OpenPGP", "POPUP_IMPORT_TITLE": "Impor kunci OpenPGP",
"POPUP_IMPORT_BUTTON": "Impor", "POPUP_IMPORT_BUTTON": "Impor",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Buat kunci OpenPGP", "POPUP_GENERATE_TITLE": "Buat kunci OpenPGP",
"POPUP_GENERATE_BUTTON": "Buat", "POPUP_GENERATE_BUTTON": "Buat",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Tandatangan",
"LABEL_ENCRYPT": "Enkripsi",
"BUTTON_DECRYPT": "Deskripsi",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Pesan bertanda-tangan OpenPGP", "SIGNED_MESSAGE": "Pesan bertanda-tangan OpenPGP",
"ENCRYPTED_MESSAGE": "Pesan terenkripsi OpenPGP", "ENCRYPTED_MESSAGE": "Pesan terenkripsi OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Tandatangan sah dari user %USER%", },
"ERROR": "Kesalahan OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Pesan bertanda-tangan S\/MIME",
"ENCRYPTED_MESSAGE": "Pesan terenkripsi S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Buat filter?", "TITLE_CREATE_FILTER": "Buat filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Það er ekki hægt að hætta við aðgerðina eftir að búið er að keyra hana.", "DANGER_DESC_HTML_2": "Það er ekki hægt að hætta við aðgerðina eftir að búið er að keyra hana.",
"TITLE_CLEARING_PROCESS": "Tæmi möppu..." "TITLE_CLEARING_PROCESS": "Tæmi möppu..."
}, },
"CRYPTO": {
"SIGN": "Undirrita",
"ENCRYPT": "Dulrita",
"DECRYPT": "Afkóða",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Gild undirritun frá %USER%",
"ERROR": "%TYPE% villa: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Flytja inn OpenPGP-lykil", "POPUP_IMPORT_TITLE": "Flytja inn OpenPGP-lykil",
"POPUP_IMPORT_BUTTON": "Flytja inn", "POPUP_IMPORT_BUTTON": "Flytja inn",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Búa til OpenPGP-lykla", "POPUP_GENERATE_TITLE": "Búa til OpenPGP-lykla",
"POPUP_GENERATE_BUTTON": "Útbúa", "POPUP_GENERATE_BUTTON": "Útbúa",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Undirrita",
"LABEL_ENCRYPT": "Dulrita",
"BUTTON_DECRYPT": "Afkóða",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Skeyti undirritað með OpenPGP", "SIGNED_MESSAGE": "Skeyti undirritað með OpenPGP",
"ENCRYPTED_MESSAGE": "Skeyti dulritað með OpenPGP", "ENCRYPTED_MESSAGE": "Skeyti dulritað með OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Gild undirritun frá %USER%", },
"ERROR": "OpenPGP villa: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Skeyti undirritað með S\/MIME",
"ENCRYPTED_MESSAGE": "Skeyti dulritað með S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Búa til síu?", "TITLE_CREATE_FILTER": "Búa til síu?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Una volta iniziato, il processo non può più essere annullato.", "DANGER_DESC_HTML_2": "Una volta iniziato, il processo non può più essere annullato.",
"TITLE_CLEARING_PROCESS": "Eliminazione cartella..." "TITLE_CLEARING_PROCESS": "Eliminazione cartella..."
}, },
"CRYPTO": {
"SIGN": "Firma",
"ENCRYPT": "Criptazione",
"DECRYPT": "Decriptazione",
"VERIFY": "Verifica",
"GOOD_SIGNATURE": "Firma valida da %USER%",
"ERROR": "Errore di %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importa chiave OpenPGP", "POPUP_IMPORT_TITLE": "Importa chiave OpenPGP",
"POPUP_IMPORT_BUTTON": "Importa", "POPUP_IMPORT_BUTTON": "Importa",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Genera chiavi OpenPGP", "POPUP_GENERATE_TITLE": "Genera chiavi OpenPGP",
"POPUP_GENERATE_BUTTON": "Genera", "POPUP_GENERATE_BUTTON": "Genera",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Firma",
"LABEL_ENCRYPT": "Criptazione",
"BUTTON_DECRYPT": "Decriptazione",
"BUTTON_VERIFY": "Verifica",
"SIGNED_MESSAGE": "Messaggio firmato con OpenPGP", "SIGNED_MESSAGE": "Messaggio firmato con OpenPGP",
"ENCRYPTED_MESSAGE": "Messaggio cifrato con OpenPGP", "ENCRYPTED_MESSAGE": "Messaggio cifrato con OpenPGP",
"STORE_IN_GNUPG": "Salva nel server in GnuPG", "STORE_IN_GNUPG": "Salva nel server in GnuPG",
"BACKUP_ON_SERVER": "Salvataggio (criptato) sul server", "BACKUP_ON_SERVER": "Salvataggio (criptato) sul server"
"GOOD_SIGNATURE": "Firma valida da %USER%", },
"ERROR": "Errore di OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Messaggio firmato con S\/MIME",
"ENCRYPTED_MESSAGE": "Messaggio cifrato con S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Creo un filtro?", "TITLE_CREATE_FILTER": "Creo un filtro?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "一度始めると、中止やキャンセルができません。", "DANGER_DESC_HTML_2": "一度始めると、中止やキャンセルができません。",
"TITLE_CLEARING_PROCESS": "フォルダを消去しています..." "TITLE_CLEARING_PROCESS": "フォルダを消去しています..."
}, },
"CRYPTO": {
"SIGN": "署名",
"ENCRYPT": "暗号化",
"DECRYPT": "復号化",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "%USER%からの正しい署名",
"ERROR": "%TYPE% エラー: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "OpenPGPキーをインポート", "POPUP_IMPORT_TITLE": "OpenPGPキーをインポート",
"POPUP_IMPORT_BUTTON": "インポート", "POPUP_IMPORT_BUTTON": "インポート",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "OpenPGPキーを生成", "POPUP_GENERATE_TITLE": "OpenPGPキーを生成",
"POPUP_GENERATE_BUTTON": "生成", "POPUP_GENERATE_BUTTON": "生成",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "署名",
"LABEL_ENCRYPT": "暗号化",
"BUTTON_DECRYPT": "復号化",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP署名済みメッセージ", "SIGNED_MESSAGE": "OpenPGP署名済みメッセージ",
"ENCRYPTED_MESSAGE": "OpenPGP暗号化メッセージ", "ENCRYPTED_MESSAGE": "OpenPGP暗号化メッセージ",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "%USER%からの正しい署名", },
"ERROR": "OpenPGP エラー: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME署名済みメッセージ",
"ENCRYPTED_MESSAGE": "S\/MIME暗号化メッセージ"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "フィルターを作成しますか?", "TITLE_CREATE_FILTER": "フィルターを作成しますか?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "작업이 시작되면 중지하거나 취소할 수 없습니다.", "DANGER_DESC_HTML_2": "작업이 시작되면 중지하거나 취소할 수 없습니다.",
"TITLE_CLEARING_PROCESS": "폴더를 비우는 중..." "TITLE_CLEARING_PROCESS": "폴더를 비우는 중..."
}, },
"CRYPTO": {
"SIGN": "로그인",
"ENCRYPT": "암호화",
"DECRYPT": "복호화",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "%USER%(으)로부터 수신한 양호한 서명",
"ERROR": "%TYPE% 오류: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "OpenPGP 키 가져오기", "POPUP_IMPORT_TITLE": "OpenPGP 키 가져오기",
"POPUP_IMPORT_BUTTON": "가져오기", "POPUP_IMPORT_BUTTON": "가져오기",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "OpenPGP 키 생성", "POPUP_GENERATE_TITLE": "OpenPGP 키 생성",
"POPUP_GENERATE_BUTTON": "생성", "POPUP_GENERATE_BUTTON": "생성",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "로그인",
"LABEL_ENCRYPT": "암호화",
"BUTTON_DECRYPT": "복호화",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP로 서명된 메세지입니다.", "SIGNED_MESSAGE": "OpenPGP로 서명된 메세지입니다.",
"ENCRYPTED_MESSAGE": "OpenPGP로 암호화된 메세지입니다.", "ENCRYPTED_MESSAGE": "OpenPGP로 암호화된 메세지입니다.",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "%USER%(으)로부터 수신한 양호한 서명", },
"ERROR": "OpenPGP 오류: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME로 서명된 메세지입니다.",
"ENCRYPTED_MESSAGE": "S\/MIME로 암호화된 메세지입니다."
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "필터를 생성할까요?", "TITLE_CREATE_FILTER": "필터를 생성할까요?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Pradėjus veiksmą, jis nebesustabdomas.", "DANGER_DESC_HTML_2": "Pradėjus veiksmą, jis nebesustabdomas.",
"TITLE_CLEARING_PROCESS": "Valomas katalogas..." "TITLE_CLEARING_PROCESS": "Valomas katalogas..."
}, },
"CRYPTO": {
"SIGN": "Parašas",
"ENCRYPT": "Šifravimas",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Tinkamas parašas nuo %USER%",
"ERROR": "%TYPE% klaida: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importuoti OpenPGP raktą", "POPUP_IMPORT_TITLE": "Importuoti OpenPGP raktą",
"POPUP_IMPORT_BUTTON": "Importuoti", "POPUP_IMPORT_BUTTON": "Importuoti",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Sukurti OpenPGP raktą", "POPUP_GENERATE_TITLE": "Sukurti OpenPGP raktą",
"POPUP_GENERATE_BUTTON": "Sukurti", "POPUP_GENERATE_BUTTON": "Sukurti",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Parašas",
"LABEL_ENCRYPT": "Šifravimas",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP pasirašytas pranešimas", "SIGNED_MESSAGE": "OpenPGP pasirašytas pranešimas",
"ENCRYPTED_MESSAGE": "OpenPGP šifruotas pranešimas", "ENCRYPTED_MESSAGE": "OpenPGP šifruotas pranešimas",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Tinkamas parašas nuo %USER%", },
"ERROR": "OpenPGP klaida: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME pasirašytas pranešimas",
"ENCRYPTED_MESSAGE": "S\/MIME šifruotas pranešimas"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Sukurti filtrą?", "TITLE_CREATE_FILTER": "Sukurti filtrą?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Šo procesu nevarēs apturēt.", "DANGER_DESC_HTML_2": "Šo procesu nevarēs apturēt.",
"TITLE_CLEARING_PROCESS": "Mape tiek iztīrīta..." "TITLE_CLEARING_PROCESS": "Mape tiek iztīrīta..."
}, },
"CRYPTO": {
"SIGN": "Sign",
"ENCRYPT": "Encrypt",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Good signature from %USER%",
"ERROR": "%TYPE% error: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Import OpenPGP key", "POPUP_IMPORT_TITLE": "Import OpenPGP key",
"POPUP_IMPORT_BUTTON": "Import", "POPUP_IMPORT_BUTTON": "Import",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generate OpenPGP keys", "POPUP_GENERATE_TITLE": "Generate OpenPGP keys",
"POPUP_GENERATE_BUTTON": "Generate", "POPUP_GENERATE_BUTTON": "Generate",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Sign",
"LABEL_ENCRYPT": "Encrypt",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP signed message", "SIGNED_MESSAGE": "OpenPGP signed message",
"ENCRYPTED_MESSAGE": "OpenPGP encrypted message", "ENCRYPTED_MESSAGE": "OpenPGP encrypted message",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Good signature from %USER%", },
"ERROR": "OpenPGP error: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME signed message",
"ENCRYPTED_MESSAGE": "S\/MIME encrypted message"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Create a filter?", "TITLE_CREATE_FILTER": "Create a filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Hvis du går videre, blir meldingene slettet for godt.", "DANGER_DESC_HTML_2": "Hvis du går videre, blir meldingene slettet for godt.",
"TITLE_CLEARING_PROCESS": "Tømmer mappe …" "TITLE_CLEARING_PROCESS": "Tømmer mappe …"
}, },
"CRYPTO": {
"SIGN": "Signer",
"ENCRYPT": "Krypter",
"DECRYPT": "Dekrypter",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Gyldig signatur fra %USER%",
"ERROR": "%TYPE%-feil: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importer OpenPGP-nøkkel", "POPUP_IMPORT_TITLE": "Importer OpenPGP-nøkkel",
"POPUP_IMPORT_BUTTON": "Importer", "POPUP_IMPORT_BUTTON": "Importer",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Lag OpenPGP-nøkler", "POPUP_GENERATE_TITLE": "Lag OpenPGP-nøkler",
"POPUP_GENERATE_BUTTON": "Lag", "POPUP_GENERATE_BUTTON": "Lag",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Signer",
"LABEL_ENCRYPT": "Krypter",
"BUTTON_DECRYPT": "Dekrypter",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP-signert melding", "SIGNED_MESSAGE": "OpenPGP-signert melding",
"ENCRYPTED_MESSAGE": "OpenPGP-kryptert melding", "ENCRYPTED_MESSAGE": "OpenPGP-kryptert melding",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Gyldig signatur fra %USER%", },
"ERROR": "OpenPGP-feil: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME-signert melding",
"ENCRYPTED_MESSAGE": "S\/MIME-kryptert melding"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Vil du lage et filter?", "TITLE_CREATE_FILTER": "Vil du lage et filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Eens in gang gezet kan het proces niet geannuleerd worden!", "DANGER_DESC_HTML_2": "Eens in gang gezet kan het proces niet geannuleerd worden!",
"TITLE_CLEARING_PROCESS": "Folder aan het leegmaken..." "TITLE_CLEARING_PROCESS": "Folder aan het leegmaken..."
}, },
"CRYPTO": {
"SIGN": "Ondertekenen",
"ENCRYPT": "Versleutelen",
"DECRYPT": "Ontsleutelen",
"VERIFY": "Verifiëren",
"GOOD_SIGNATURE": "Juiste handtekening van %USER%",
"ERROR": "%TYPE% foutmelding: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importeer OpenPGP sleutel", "POPUP_IMPORT_TITLE": "Importeer OpenPGP sleutel",
"POPUP_IMPORT_BUTTON": "Importeer", "POPUP_IMPORT_BUTTON": "Importeer",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Genereer OpenPGP sleutels", "POPUP_GENERATE_TITLE": "Genereer OpenPGP sleutels",
"POPUP_GENERATE_BUTTON": "Genereer", "POPUP_GENERATE_BUTTON": "Genereer",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Ondertekenen",
"LABEL_ENCRYPT": "Versleutelen",
"BUTTON_DECRYPT": "Ontsleutelen",
"BUTTON_VERIFY": "Verifiëren",
"SIGNED_MESSAGE": "OpenPGP ondertekend bericht", "SIGNED_MESSAGE": "OpenPGP ondertekend bericht",
"ENCRYPTED_MESSAGE": "OpenPGP versleuteld bericht", "ENCRYPTED_MESSAGE": "OpenPGP versleuteld bericht",
"STORE_IN_GNUPG": "Bewaar op de server in GnuPG", "STORE_IN_GNUPG": "Bewaar op de server in GnuPG",
"BACKUP_ON_SERVER": "Bewaar (versleuteld) op de server", "BACKUP_ON_SERVER": "Bewaar (versleuteld) op de server"
"GOOD_SIGNATURE": "Juiste handtekening van %USER%", },
"ERROR": "OpenPGP foutmelding: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME ondertekend bericht",
"ENCRYPTED_MESSAGE": "S\/MIME versleuteld bericht"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Filter toevoegen", "TITLE_CREATE_FILTER": "Filter toevoegen",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Po rozpoczęciu nie będzie możliwe przerwanie lub anulowanie zadania.", "DANGER_DESC_HTML_2": "Po rozpoczęciu nie będzie możliwe przerwanie lub anulowanie zadania.",
"TITLE_CLEARING_PROCESS": "Trwa usuwanie wszystkich wiadomości z folderu..." "TITLE_CLEARING_PROCESS": "Trwa usuwanie wszystkich wiadomości z folderu..."
}, },
"CRYPTO": {
"SIGN": "Podpisz",
"ENCRYPT": "Zaszyfruj",
"DECRYPT": "Odszyfruj",
"VERIFY": "Weryfikuj",
"GOOD_SIGNATURE": "Poprawnie podpisana przez %USER%",
"ERROR": "Błąd %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importowanie klucza OpenPGP", "POPUP_IMPORT_TITLE": "Importowanie klucza OpenPGP",
"POPUP_IMPORT_BUTTON": "Importuj", "POPUP_IMPORT_BUTTON": "Importuj",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generowanie klucza OpenPGP", "POPUP_GENERATE_TITLE": "Generowanie klucza OpenPGP",
"POPUP_GENERATE_BUTTON": "Generuj", "POPUP_GENERATE_BUTTON": "Generuj",
"LABEL_KEY_TYPE": "Typ", "LABEL_KEY_TYPE": "Typ",
"LABEL_SIGN": "Podpisz",
"LABEL_ENCRYPT": "Zaszyfruj",
"BUTTON_DECRYPT": "Odszyfruj",
"BUTTON_VERIFY": "Weryfikuj",
"SIGNED_MESSAGE": "Wiadomość podpisana OpenPGP", "SIGNED_MESSAGE": "Wiadomość podpisana OpenPGP",
"ENCRYPTED_MESSAGE": "Wiadomość zaszyfrowana OpenPGP", "ENCRYPTED_MESSAGE": "Wiadomość zaszyfrowana OpenPGP",
"STORE_IN_GNUPG": "Przechowuj na serwerze w GnuPG", "STORE_IN_GNUPG": "Przechowuj na serwerze w GnuPG",
"BACKUP_ON_SERVER": "Przechowywanie (zaszyfrowane) na serwerze", "BACKUP_ON_SERVER": "Przechowywanie (zaszyfrowane) na serwerze"
"GOOD_SIGNATURE": "Poprawnie podpisana przez %USER%", },
"ERROR": "Błąd OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Wiadomość podpisana S\/MIME",
"ENCRYPTED_MESSAGE": "Wiadomość zaszyfrowana S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Czy stworzyć filtr?", "TITLE_CREATE_FILTER": "Czy stworzyć filtr?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Uma vez iniciado, o processo não poderá ser interrompido ou cancelado.", "DANGER_DESC_HTML_2": "Uma vez iniciado, o processo não poderá ser interrompido ou cancelado.",
"TITLE_CLEARING_PROCESS": "Excluindo a pasta..." "TITLE_CLEARING_PROCESS": "Excluindo a pasta..."
}, },
"CRYPTO": {
"SIGN": "Assinar",
"ENCRYPT": "Criptografar",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Boa assinatura de %USER%",
"ERROR": "Erro %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importar chave OpenPGP", "POPUP_IMPORT_TITLE": "Importar chave OpenPGP",
"POPUP_IMPORT_BUTTON": "Importar", "POPUP_IMPORT_BUTTON": "Importar",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Gerar chave OpenPGP", "POPUP_GENERATE_TITLE": "Gerar chave OpenPGP",
"POPUP_GENERATE_BUTTON": "Gerar", "POPUP_GENERATE_BUTTON": "Gerar",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Assinar",
"LABEL_ENCRYPT": "Criptografar",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Mensagem assinada com OpenPGP", "SIGNED_MESSAGE": "Mensagem assinada com OpenPGP",
"ENCRYPTED_MESSAGE": "Mensagem criptografada com OpenPGP", "ENCRYPTED_MESSAGE": "Mensagem criptografada com OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Boa assinatura de %USER%", },
"ERROR": "Erro OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Mensagem assinada com S\/MIME",
"ENCRYPTED_MESSAGE": "Mensagem criptografada com S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Criar um filtro?", "TITLE_CREATE_FILTER": "Criar um filtro?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Uma vez iniciado, o processo não pode ser interrompido ou cancelado.", "DANGER_DESC_HTML_2": "Uma vez iniciado, o processo não pode ser interrompido ou cancelado.",
"TITLE_CLEARING_PROCESS": "A eliminar a pasta..." "TITLE_CLEARING_PROCESS": "A eliminar a pasta..."
}, },
"CRYPTO": {
"SIGN": "Assinar",
"ENCRYPT": "Encriptar",
"DECRYPT": "Desencriptar",
"VERIFY": "Validar",
"GOOD_SIGNATURE": "Boa assinatura de %USER%",
"ERROR": "Erro %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importar chave OpenPGP", "POPUP_IMPORT_TITLE": "Importar chave OpenPGP",
"POPUP_IMPORT_BUTTON": "Importar", "POPUP_IMPORT_BUTTON": "Importar",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Gerar chaves OpenPGP", "POPUP_GENERATE_TITLE": "Gerar chaves OpenPGP",
"POPUP_GENERATE_BUTTON": "Gerar", "POPUP_GENERATE_BUTTON": "Gerar",
"LABEL_KEY_TYPE": "Tipo", "LABEL_KEY_TYPE": "Tipo",
"LABEL_SIGN": "Assinar",
"LABEL_ENCRYPT": "Encriptar",
"BUTTON_DECRYPT": "Desencriptar",
"BUTTON_VERIFY": "Validar",
"SIGNED_MESSAGE": "Mensagem assinada com OpenPGP", "SIGNED_MESSAGE": "Mensagem assinada com OpenPGP",
"ENCRYPTED_MESSAGE": "Mensagem encriptada com OpenPGP", "ENCRYPTED_MESSAGE": "Mensagem encriptada com OpenPGP",
"STORE_IN_GNUPG": "Guardar no servidor em GnuPG", "STORE_IN_GNUPG": "Guardar no servidor em GnuPG",
"BACKUP_ON_SERVER": "Guardar (encriptado) no servidor", "BACKUP_ON_SERVER": "Guardar (encriptado) no servidor"
"GOOD_SIGNATURE": "Boa assinatura de %USER%", },
"ERROR": "Erro OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Mensagem assinada com S\/MIME",
"ENCRYPTED_MESSAGE": "Mensagem encriptada com S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Criar um filtro?", "TITLE_CREATE_FILTER": "Criar um filtro?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Uma vez iniciado, o processo não pode ser interrompido ou cancelado.", "DANGER_DESC_HTML_2": "Uma vez iniciado, o processo não pode ser interrompido ou cancelado.",
"TITLE_CLEARING_PROCESS": "A eliminar a pasta..." "TITLE_CLEARING_PROCESS": "A eliminar a pasta..."
}, },
"CRYPTO": {
"SIGN": "Assinar",
"ENCRYPT": "Encriptar",
"DECRYPT": "Desencriptar",
"VERIFY": "Validar",
"GOOD_SIGNATURE": "Boa assinatura de %USER%",
"ERROR": "Erro %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importar chave OpenPGP", "POPUP_IMPORT_TITLE": "Importar chave OpenPGP",
"POPUP_IMPORT_BUTTON": "Importar", "POPUP_IMPORT_BUTTON": "Importar",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Gerar chaves OpenPGP", "POPUP_GENERATE_TITLE": "Gerar chaves OpenPGP",
"POPUP_GENERATE_BUTTON": "Gerar", "POPUP_GENERATE_BUTTON": "Gerar",
"LABEL_KEY_TYPE": "Tipo", "LABEL_KEY_TYPE": "Tipo",
"LABEL_SIGN": "Assinar",
"LABEL_ENCRYPT": "Encriptar",
"BUTTON_DECRYPT": "Desencriptar",
"BUTTON_VERIFY": "Validar",
"SIGNED_MESSAGE": "Mensagem assinada com OpenPGP", "SIGNED_MESSAGE": "Mensagem assinada com OpenPGP",
"ENCRYPTED_MESSAGE": "Mensagem encriptada com OpenPGP", "ENCRYPTED_MESSAGE": "Mensagem encriptada com OpenPGP",
"STORE_IN_GNUPG": "Guardar no servidor em GnuPG", "STORE_IN_GNUPG": "Guardar no servidor em GnuPG",
"BACKUP_ON_SERVER": "Guardar (encriptado) no servidor", "BACKUP_ON_SERVER": "Guardar (encriptado) no servidor"
"GOOD_SIGNATURE": "Boa assinatura de %USER%", },
"ERROR": "Erro OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Mensagem assinada com S\/MIME",
"ENCRYPTED_MESSAGE": "Mensagem encriptada com S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Criar um filtro?", "TITLE_CREATE_FILTER": "Criar um filtro?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "După începerea procesului de curățare <strong style=\"color:red\">nu mai puteți<\/strong> anula procesul.", "DANGER_DESC_HTML_2": "După începerea procesului de curățare <strong style=\"color:red\">nu mai puteți<\/strong> anula procesul.",
"TITLE_CLEARING_PROCESS": "Curăț dosarul..." "TITLE_CLEARING_PROCESS": "Curăț dosarul..."
}, },
"CRYPTO": {
"SIGN": "Sign",
"ENCRYPT": "Encrypt",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Good signature from %USER%",
"ERROR": "%TYPE% error: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Import OpenPGP key", "POPUP_IMPORT_TITLE": "Import OpenPGP key",
"POPUP_IMPORT_BUTTON": "Import", "POPUP_IMPORT_BUTTON": "Import",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generate OpenPGP keys", "POPUP_GENERATE_TITLE": "Generate OpenPGP keys",
"POPUP_GENERATE_BUTTON": "Generate", "POPUP_GENERATE_BUTTON": "Generate",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Sign",
"LABEL_ENCRYPT": "Encrypt",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP signed message", "SIGNED_MESSAGE": "OpenPGP signed message",
"ENCRYPTED_MESSAGE": "OpenPGP encrypted message", "ENCRYPTED_MESSAGE": "OpenPGP encrypted message",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Good signature from %USER%", },
"ERROR": "OpenPGP error: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME signed message",
"ENCRYPTED_MESSAGE": "S\/MIME encrypted message"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Create a filter?", "TITLE_CREATE_FILTER": "Create a filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "После начала очистки, процесс <strong style=\"color:red\">нельзя<\/strong> будет остановить или отменить.", "DANGER_DESC_HTML_2": "После начала очистки, процесс <strong style=\"color:red\">нельзя<\/strong> будет остановить или отменить.",
"TITLE_CLEARING_PROCESS": "Очистка папки..." "TITLE_CLEARING_PROCESS": "Очистка папки..."
}, },
"CRYPTO": {
"SIGN": "Подпись",
"ENCRYPT": "Шифрование",
"DECRYPT": "Расшифровать",
"VERIFY": "Проверить",
"GOOD_SIGNATURE": "Подтвержденная сигнатура для %USER%",
"ERROR": "%TYPE% ошибка: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Импорт OpenPGP ключа", "POPUP_IMPORT_TITLE": "Импорт OpenPGP ключа",
"POPUP_IMPORT_BUTTON": "Импорт", "POPUP_IMPORT_BUTTON": "Импорт",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Генерация OpenPGP ключа", "POPUP_GENERATE_TITLE": "Генерация OpenPGP ключа",
"POPUP_GENERATE_BUTTON": "Создать", "POPUP_GENERATE_BUTTON": "Создать",
"LABEL_KEY_TYPE": "Тип", "LABEL_KEY_TYPE": "Тип",
"LABEL_SIGN": "Подпись",
"LABEL_ENCRYPT": "Шифрование",
"BUTTON_DECRYPT": "Расшифровать",
"BUTTON_VERIFY": "Проверить",
"SIGNED_MESSAGE": "OpenPGP подписанное сообщение", "SIGNED_MESSAGE": "OpenPGP подписанное сообщение",
"ENCRYPTED_MESSAGE": "OpenPGP шифрованное сообщение", "ENCRYPTED_MESSAGE": "OpenPGP шифрованное сообщение",
"STORE_IN_GNUPG": "Хранить на сервере в GnuPG", "STORE_IN_GNUPG": "Хранить на сервере в GnuPG",
"BACKUP_ON_SERVER": "Хранить (с шифрованием) на сервере", "BACKUP_ON_SERVER": "Хранить (с шифрованием) на сервере"
"GOOD_SIGNATURE": "Подтвержденная сигнатура для %USER%", },
"ERROR": "OpenPGP ошибка: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME подписанное сообщение",
"ENCRYPTED_MESSAGE": "S\/MIME шифрованное сообщение"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Создать фильтр?", "TITLE_CREATE_FILTER": "Создать фильтр?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Tento proces nie je možné prerušiť.", "DANGER_DESC_HTML_2": "Tento proces nie je možné prerušiť.",
"TITLE_CLEARING_PROCESS": "Odstraňujem priečinok..." "TITLE_CLEARING_PROCESS": "Odstraňujem priečinok..."
}, },
"CRYPTO": {
"SIGN": "Sign",
"ENCRYPT": "Encrypt",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Good signature from %USER%",
"ERROR": "%TYPE% error: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Importovať kľúč OpenPGP", "POPUP_IMPORT_TITLE": "Importovať kľúč OpenPGP",
"POPUP_IMPORT_BUTTON": "Import", "POPUP_IMPORT_BUTTON": "Import",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generate OpenPGP keys", "POPUP_GENERATE_TITLE": "Generate OpenPGP keys",
"POPUP_GENERATE_BUTTON": "Generate", "POPUP_GENERATE_BUTTON": "Generate",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Sign",
"LABEL_ENCRYPT": "Encrypt",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Správa podpísaná s OpenPGP", "SIGNED_MESSAGE": "Správa podpísaná s OpenPGP",
"ENCRYPTED_MESSAGE": "Správa šifrovaná s OpenPGP", "ENCRYPTED_MESSAGE": "Správa šifrovaná s OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Good signature from %USER%", },
"ERROR": "OpenPGP error: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Správa podpísaná s S\/MIME",
"ENCRYPTED_MESSAGE": "Správa šifrovaná s S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Create a filter?", "TITLE_CREATE_FILTER": "Create a filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Tega postopka ne bo mogoče preklicati ali zaustaviti.", "DANGER_DESC_HTML_2": "Tega postopka ne bo mogoče preklicati ali zaustaviti.",
"TITLE_CLEARING_PROCESS": "Čistim mapo." "TITLE_CLEARING_PROCESS": "Čistim mapo."
}, },
"CRYPTO": {
"SIGN": "Podpis",
"ENCRYPT": "Šifriranje",
"DECRYPT": "Dešifriraj",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Dober podpis od %USER%",
"ERROR": "%TYPE% napaka: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Uvoz OpenPGP ključa", "POPUP_IMPORT_TITLE": "Uvoz OpenPGP ključa",
"POPUP_IMPORT_BUTTON": "Uvozi", "POPUP_IMPORT_BUTTON": "Uvozi",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Generiraj OpenPGP ključe", "POPUP_GENERATE_TITLE": "Generiraj OpenPGP ključe",
"POPUP_GENERATE_BUTTON": "Generiraj", "POPUP_GENERATE_BUTTON": "Generiraj",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Podpis",
"LABEL_ENCRYPT": "Šifriranje",
"BUTTON_DECRYPT": "Dešifriraj",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "Sporočilo, podpisano z OpenPGP", "SIGNED_MESSAGE": "Sporočilo, podpisano z OpenPGP",
"ENCRYPTED_MESSAGE": "Sporočilo, šifrirano z OpenPGP", "ENCRYPTED_MESSAGE": "Sporočilo, šifrirano z OpenPGP",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Dober podpis od %USER%", },
"ERROR": "OpenPGP napaka: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Sporočilo, podpisano z S\/MIME",
"ENCRYPTED_MESSAGE": "Sporočilo, šifrirano z S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Ustvarim filter?", "TITLE_CREATE_FILTER": "Ustvarim filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "När detta är startat kan det inte avbrytas.", "DANGER_DESC_HTML_2": "När detta är startat kan det inte avbrytas.",
"TITLE_CLEARING_PROCESS": "Rensar mappen..." "TITLE_CLEARING_PROCESS": "Rensar mappen..."
}, },
"CRYPTO": {
"SIGN": "Signera",
"ENCRYPT": "Kryptera",
"DECRYPT": "Avkryptera",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Godkänd signatur för %USER%",
"ERROR": "%TYPE%-fel: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Import av OpenPGP-nyckel", "POPUP_IMPORT_TITLE": "Import av OpenPGP-nyckel",
"POPUP_IMPORT_BUTTON": "Importera", "POPUP_IMPORT_BUTTON": "Importera",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Skapa OpenPGP-nycklar", "POPUP_GENERATE_TITLE": "Skapa OpenPGP-nycklar",
"POPUP_GENERATE_BUTTON": "Skapa", "POPUP_GENERATE_BUTTON": "Skapa",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Signera",
"LABEL_ENCRYPT": "Kryptera",
"BUTTON_DECRYPT": "Avkryptera",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP-signerat meddelande", "SIGNED_MESSAGE": "OpenPGP-signerat meddelande",
"ENCRYPTED_MESSAGE": "OpenPGP-krypterat meddelande", "ENCRYPTED_MESSAGE": "OpenPGP-krypterat meddelande",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Godkänd signatur för %USER%", },
"ERROR": "OpenPGP-fel: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME-signerat meddelande",
"ENCRYPTED_MESSAGE": "S\/MIME-krypterat meddelande"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Skapa ett filter?", "TITLE_CREATE_FILTER": "Skapa ett filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Bu işlem bir kez başladıktan sonra, işlem durdurulamaz veya iptal edilemez.", "DANGER_DESC_HTML_2": "Bu işlem bir kez başladıktan sonra, işlem durdurulamaz veya iptal edilemez.",
"TITLE_CLEARING_PROCESS": "Klasör temizleniyor..." "TITLE_CLEARING_PROCESS": "Klasör temizleniyor..."
}, },
"CRYPTO": {
"SIGN": "Giriş Yap",
"ENCRYPT": "Şifrele",
"DECRYPT": "Decrypt",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Geçerli imza %USER%",
"ERROR": "%TYPE% hatası: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "OpenPGP key'i içe aktar", "POPUP_IMPORT_TITLE": "OpenPGP key'i içe aktar",
"POPUP_IMPORT_BUTTON": "İçe aktar", "POPUP_IMPORT_BUTTON": "İçe aktar",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "OpenPGP key'leri Oluştur", "POPUP_GENERATE_TITLE": "OpenPGP key'leri Oluştur",
"POPUP_GENERATE_BUTTON": "Oluştur", "POPUP_GENERATE_BUTTON": "Oluştur",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Giriş Yap",
"LABEL_ENCRYPT": "Şifrele",
"BUTTON_DECRYPT": "Decrypt",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP imzalı mesaj", "SIGNED_MESSAGE": "OpenPGP imzalı mesaj",
"ENCRYPTED_MESSAGE": "OpenPGP şifreli mesaj", "ENCRYPTED_MESSAGE": "OpenPGP şifreli mesaj",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Geçerli imza %USER%", },
"ERROR": "OpenPGP hatası: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME imzalı mesaj",
"ENCRYPTED_MESSAGE": "S\/MIME şifreli mesaj"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Create a filter?", "TITLE_CREATE_FILTER": "Create a filter?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Після початку очищення, процес <strong style=\"color:red\">неможливо<\/strong> буде зупинити чи відмінити.", "DANGER_DESC_HTML_2": "Після початку очищення, процес <strong style=\"color:red\">неможливо<\/strong> буде зупинити чи відмінити.",
"TITLE_CLEARING_PROCESS": "Очищення теки..." "TITLE_CLEARING_PROCESS": "Очищення теки..."
}, },
"CRYPTO": {
"SIGN": "Підпис",
"ENCRYPT": "Шифрування",
"DECRYPT": "Дешифрувати",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "Підтверджена сигнатура для %USER%",
"ERROR": "%TYPE% помилка: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Імпорт OpenPGP ключа", "POPUP_IMPORT_TITLE": "Імпорт OpenPGP ключа",
"POPUP_IMPORT_BUTTON": "Імпорт", "POPUP_IMPORT_BUTTON": "Імпорт",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Генерація OpenPGP ключа", "POPUP_GENERATE_TITLE": "Генерація OpenPGP ключа",
"POPUP_GENERATE_BUTTON": "Створити", "POPUP_GENERATE_BUTTON": "Створити",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "Підпис",
"LABEL_ENCRYPT": "Шифрування",
"BUTTON_DECRYPT": "Дешифрувати",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "OpenPGP підписане повідомлення", "SIGNED_MESSAGE": "OpenPGP підписане повідомлення",
"ENCRYPTED_MESSAGE": "OpenPGP шифроване повідомлення", "ENCRYPTED_MESSAGE": "OpenPGP шифроване повідомлення",
"STORE_IN_GNUPG": "Store on server in GnuPG", "STORE_IN_GNUPG": "Store on server in GnuPG",
"BACKUP_ON_SERVER": "Store (encrypted) on server", "BACKUP_ON_SERVER": "Store (encrypted) on server"
"GOOD_SIGNATURE": "Підтверджена сигнатура для %USER%", },
"ERROR": "OpenPGP помилка: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "S\/MIME підписане повідомлення",
"ENCRYPTED_MESSAGE": "S\/MIME шифроване повідомлення"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Створити фільтер?", "TITLE_CREATE_FILTER": "Створити фільтер?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "Một khi bắt đầu, quá trình xóa này sẽ không thể ngưng giữa chừng hay hủy bỏ.", "DANGER_DESC_HTML_2": "Một khi bắt đầu, quá trình xóa này sẽ không thể ngưng giữa chừng hay hủy bỏ.",
"TITLE_CLEARING_PROCESS": "Đang xóa thư mục..." "TITLE_CLEARING_PROCESS": "Đang xóa thư mục..."
}, },
"CRYPTO": {
"SIGN": "Ký xác nhận",
"ENCRYPT": "Mã hóa",
"DECRYPT": "Gỡ mã hóa",
"VERIFY": "Xác minh",
"GOOD_SIGNATURE": "Chữ ký ổn từ %USER%",
"ERROR": "Lỗi %TYPE%: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "Nhập mật mã OpenPGP", "POPUP_IMPORT_TITLE": "Nhập mật mã OpenPGP",
"POPUP_IMPORT_BUTTON": "Nhập", "POPUP_IMPORT_BUTTON": "Nhập",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "Tạo một đôi mật mã OpenPGP", "POPUP_GENERATE_TITLE": "Tạo một đôi mật mã OpenPGP",
"POPUP_GENERATE_BUTTON": "Tạo", "POPUP_GENERATE_BUTTON": "Tạo",
"LABEL_KEY_TYPE": "Loại", "LABEL_KEY_TYPE": "Loại",
"LABEL_SIGN": "Ký xác nhận",
"LABEL_ENCRYPT": "Mã hóa",
"BUTTON_DECRYPT": "Gỡ mã hóa",
"BUTTON_VERIFY": "Xác minh",
"SIGNED_MESSAGE": "Thư đã được ký xác nhận bằng mã OpenPGP", "SIGNED_MESSAGE": "Thư đã được ký xác nhận bằng mã OpenPGP",
"ENCRYPTED_MESSAGE": "Thư đã được mã hóa bởi OpenPGP", "ENCRYPTED_MESSAGE": "Thư đã được mã hóa bởi OpenPGP",
"STORE_IN_GNUPG": "Lưu trữ trên máy chủ trong GnuPG", "STORE_IN_GNUPG": "Lưu trữ trên máy chủ trong GnuPG",
"BACKUP_ON_SERVER": "Lưu trữ (đã được mã hóa) trên máy chủ", "BACKUP_ON_SERVER": "Lưu trữ (đã được mã hóa) trên máy chủ"
"GOOD_SIGNATURE": "Chữ ký ổn từ %USER%", },
"ERROR": "Lỗi OpenPGP: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "Thư đã được ký xác nhận bằng mã S\/MIME",
"ENCRYPTED_MESSAGE": "Thư đã được mã hóa bởi S\/MIME"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "Tạo một tấm lọc mới?", "TITLE_CREATE_FILTER": "Tạo một tấm lọc mới?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "一旦操作执行,将不可中断和撤销!", "DANGER_DESC_HTML_2": "一旦操作执行,将不可中断和撤销!",
"TITLE_CLEARING_PROCESS": "文件夹清理中..." "TITLE_CLEARING_PROCESS": "文件夹清理中..."
}, },
"CRYPTO": {
"SIGN": "签名",
"ENCRYPT": "加密",
"DECRYPT": "解密",
"VERIFY": "Verify",
"GOOD_SIGNATURE": "来自 %USER% 的可用签名",
"ERROR": "%TYPE% 错误: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "导入 OpenPGP 密钥", "POPUP_IMPORT_TITLE": "导入 OpenPGP 密钥",
"POPUP_IMPORT_BUTTON": "导入", "POPUP_IMPORT_BUTTON": "导入",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "生成 OpenPGP 密钥", "POPUP_GENERATE_TITLE": "生成 OpenPGP 密钥",
"POPUP_GENERATE_BUTTON": "生成", "POPUP_GENERATE_BUTTON": "生成",
"LABEL_KEY_TYPE": "Type", "LABEL_KEY_TYPE": "Type",
"LABEL_SIGN": "签名",
"LABEL_ENCRYPT": "加密",
"BUTTON_DECRYPT": "解密",
"BUTTON_VERIFY": "Verify",
"SIGNED_MESSAGE": "由 OpenPGP 签名", "SIGNED_MESSAGE": "由 OpenPGP 签名",
"ENCRYPTED_MESSAGE": "由 OpenPGP 加密", "ENCRYPTED_MESSAGE": "由 OpenPGP 加密",
"STORE_IN_GNUPG": "以 GnuPG 存储在服务器", "STORE_IN_GNUPG": "以 GnuPG 存储在服务器",
"BACKUP_ON_SERVER": "加密存储在服务器", "BACKUP_ON_SERVER": "加密存储在服务器"
"GOOD_SIGNATURE": "来自 %USER% 的可用签名", },
"ERROR": "OpenPGP 错误: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "由 S\/MIME 签名",
"ENCRYPTED_MESSAGE": "由 S\/MIME 加密"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "创建筛选条件?", "TITLE_CREATE_FILTER": "创建筛选条件?",

View file

@ -274,6 +274,14 @@
"DANGER_DESC_HTML_2": "一旦執行操作,就無法中斷或取消。", "DANGER_DESC_HTML_2": "一旦執行操作,就無法中斷或取消。",
"TITLE_CLEARING_PROCESS": "正在清除資料夾..." "TITLE_CLEARING_PROCESS": "正在清除資料夾..."
}, },
"CRYPTO": {
"SIGN": "簽署",
"ENCRYPT": "加密",
"DECRYPT": "解密",
"VERIFY": "驗證",
"GOOD_SIGNATURE": "來自「%USER%」的良好簽署",
"ERROR": "%TYPE% 錯誤: %ERROR%"
},
"OPENPGP": { "OPENPGP": {
"POPUP_IMPORT_TITLE": "匯入 OpenPGP 金鑰", "POPUP_IMPORT_TITLE": "匯入 OpenPGP 金鑰",
"POPUP_IMPORT_BUTTON": "匯入", "POPUP_IMPORT_BUTTON": "匯入",
@ -282,16 +290,14 @@
"POPUP_GENERATE_TITLE": "產生 OpenPGP 金鑰", "POPUP_GENERATE_TITLE": "產生 OpenPGP 金鑰",
"POPUP_GENERATE_BUTTON": "產生", "POPUP_GENERATE_BUTTON": "產生",
"LABEL_KEY_TYPE": "類型", "LABEL_KEY_TYPE": "類型",
"LABEL_SIGN": "簽署",
"LABEL_ENCRYPT": "加密",
"BUTTON_DECRYPT": "解密",
"BUTTON_VERIFY": "驗證",
"SIGNED_MESSAGE": "已透過 OpenPGP 簽署郵件", "SIGNED_MESSAGE": "已透過 OpenPGP 簽署郵件",
"ENCRYPTED_MESSAGE": "已透過 OpenPGP 加密郵件", "ENCRYPTED_MESSAGE": "已透過 OpenPGP 加密郵件",
"STORE_IN_GNUPG": "以 GnuPG 儲存在伺服器上", "STORE_IN_GNUPG": "以 GnuPG 儲存在伺服器上",
"BACKUP_ON_SERVER": "在伺服器中儲存 (已加密)", "BACKUP_ON_SERVER": "在伺服器中儲存 (已加密)"
"GOOD_SIGNATURE": "來自「%USER%」的良好簽署", },
"ERROR": "OpenPGP 錯誤: %ERROR%" "SMIME": {
"SIGNED_MESSAGE": "已透過 S\/MIME 簽署郵件",
"ENCRYPTED_MESSAGE": "已透過 S\/MIME 加密郵件"
}, },
"POPUPS_FILTER": { "POPUPS_FILTER": {
"TITLE_CREATE_FILTER": "是否要建立篩選器?", "TITLE_CREATE_FILTER": "是否要建立篩選器?",

View file

@ -295,13 +295,20 @@
<div data-bind="visible: message().pgpEncrypted()"> <div data-bind="visible: message().pgpEncrypted()">
<div class="openpgp-control encrypted" data-bind="css: {success: message().pgpDecrypted()}"> <div class="openpgp-control encrypted" data-bind="css: {success: message().pgpDecrypted()}">
<span data-icon="🔒" data-i18n="OPENPGP/ENCRYPTED_MESSAGE"></span> <span data-icon="🔒" data-i18n="OPENPGP/ENCRYPTED_MESSAGE"></span>
<button class="btn" data-bind="visible: pgpSupported, click: pgpDecrypt" data-i18n="OPENPGP/BUTTON_DECRYPT"></button> <button class="btn" data-bind="visible: pgpSupported, click: pgpDecrypt" data-i18n="CRYPTO/DECRYPT"></button>
</div> </div>
</div> </div>
<div data-bind="visible: message().pgpSigned()"> <div data-bind="visible: message().pgpSigned()">
<div class="openpgp-control signed" data-bind="css: {success: message().pgpVerified() && message().pgpVerified().success, error: message().pgpVerified() && !message().pgpVerified().success}"> <div class="openpgp-control signed" data-bind="css: {success: message().pgpVerified() && message().pgpVerified().success, error: message().pgpVerified() && !message().pgpVerified().success}">
<span data-icon="✍" data-i18n="OPENPGP/SIGNED_MESSAGE"></span> <span data-icon="✍" data-i18n="OPENPGP/SIGNED_MESSAGE"></span>
<button class="btn" data-bind="visible: pgpSupported, click: pgpVerify" data-i18n="OPENPGP/BUTTON_VERIFY"></button> <button class="btn" data-bind="visible: pgpSupported, click: pgpVerify" data-i18n="CRYPTO/VERIFY"></button>
</div>
</div>
<div data-bind="visible: message().smimeSigned()">
<div class="openpgp-control signed" data-bind="css: {success: message().smimeVerified() && message().smimeVerified().success, error: message().smimeVerified() && !message().smimeVerified().success}">
<span data-icon="✍" data-i18n="SMIME/SIGNED_MESSAGE"></span>
<button class="btn" data-bind="click: smimeVerify" data-i18n="CRYPTO/VERIFY"></button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -63,13 +63,13 @@
<li data-bind="toggle: doSign, visible: canSign"> <li data-bind="toggle: doSign, visible: canSign">
<a> <a>
<i class="fontastic" data-bind="text: doSign() ? '☑' : '☐'"></i> <i class="fontastic" data-bind="text: doSign() ? '☑' : '☐'"></i>
<span data-icon="✍" data-i18n="OPENPGP/LABEL_SIGN"></span> <span data-icon="✍" data-i18n="CRYPTO/SIGN"></span>
</a> </a>
</li> </li>
<li data-bind="toggle: doEncrypt, visible: canEncrypt"> <li data-bind="toggle: doEncrypt, visible: canEncrypt">
<a> <a>
<i class="fontastic" data-bind="text: doEncrypt() || 'mailvelope' == viewArea() ? '☑' : '☐'"></i> <i class="fontastic" data-bind="text: doEncrypt() || 'mailvelope' == viewArea() ? '☑' : '☐'"></i>
<span data-icon="🔒" data-i18n="OPENPGP/LABEL_ENCRYPT"></span> <span data-icon="🔒" data-i18n="CRYPTO/ENCRYPT"></span>
</a> </a>
</li> </li>
</menu> </menu>
@ -137,10 +137,10 @@
<div style="display:flex"> <div style="display:flex">
<div class="btn-group" style="flex-grow:1"></div> <div class="btn-group" style="flex-grow:1"></div>
<div class="btn-group"> <div class="btn-group">
<a class="btn fontastic" data-bind="toggle: doSign, visible: canSign, css: {'btn-success': doSign()}" data-i18n="[title]OPENPGP/LABEL_SIGN"> <a class="btn fontastic" data-bind="toggle: doSign, visible: canSign, css: {'btn-success': doSign()}" data-i18n="[title]CRYPTO/SIGN">
</a> </a>
<a class="btn fontastic" data-bind="toggle: doEncrypt, visible: canEncrypt, css: {'btn-success': doEncrypt() || 'mailvelope' == viewArea()}" data-i18n="[title]OPENPGP/LABEL_ENCRYPT"> <a class="btn fontastic" data-bind="toggle: doEncrypt, visible: canEncrypt, css: {'btn-success': doEncrypt() || 'mailvelope' == viewArea()}" data-i18n="[title]CRYPTO/ENCRYPT">
🔒 🔒
</a> </a>
</div> </div>

View file

@ -255,7 +255,7 @@
data-i18n="CONTACTS/TAB_CRYPTO"></label> data-i18n="CONTACTS/TAB_CRYPTO"></label>
<div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false">
<div class="control-group"> <div class="control-group">
<label data-i18n="OPENPGP/LABEL_SIGN"></label> <label data-i18n="CRYPTO/SIGN"></label>
<select name="x-crypto[signpref]" data-bind="value: signpref"> <select name="x-crypto[signpref]" data-bind="value: signpref">
<option value="Ask" data-i18n="CONTACTS/ASK"></option> <option value="Ask" data-i18n="CONTACTS/ASK"></option>
<option value="Never" data-i18n="CONTACTS/NEVER"></option> <option value="Never" data-i18n="CONTACTS/NEVER"></option>
@ -264,7 +264,7 @@
</select> </select>
</div> </div>
<div class="control-group"> <div class="control-group">
<label data-i18n="OPENPGP/LABEL_ENCRYPT"></label> <label data-i18n="CRYPTO/ENCRYPT"></label>
<select name="x-crypto[encryptpref]" data-bind="value: encryptpref"> <select name="x-crypto[encryptpref]" data-bind="value: encryptpref">
<option value="Ask" data-i18n="CONTACTS/ASK"></option> <option value="Ask" data-i18n="CONTACTS/ASK"></option>
<option value="Never" data-i18n="CONTACTS/NEVER"></option> <option value="Never" data-i18n="CONTACTS/NEVER"></option>

View file

@ -59,7 +59,7 @@
<div data-bind="component: { <div data-bind="component: {
name: 'Checkbox', name: 'Checkbox',
params: { params: {
label: 'OPENPGP/LABEL_SIGN', label: 'CRYPTO/SIGN',
value: pgpSign, value: pgpSign,
name: 'pgpSign' name: 'pgpSign'
} }
@ -69,7 +69,7 @@
<div data-bind="component: { <div data-bind="component: {
name: 'Checkbox', name: 'Checkbox',
params: { params: {
label: 'OPENPGP/LABEL_ENCRYPT', label: 'CRYPTO/ENCRYPT',
value: pgpEncrypt, value: pgpEncrypt,
name: 'pgpEncrypt' name: 'pgpEncrypt'
} }
@ -77,7 +77,7 @@
</div> </div>
<!-- <!--
<div class="control-group"> <div class="control-group">
<label data-i18n="OPENPGP/LABEL_ENCRYPT"></label> <label data-i18n="CRYPTO/ENCRYPT"></label>
<select name="PgpEncrypt" data-bind="value: pgpEncrypt"> <select name="PgpEncrypt" data-bind="value: pgpEncrypt">
<option value="Ask" data-i18n="CONTACTS/ASK"></option> <option value="Ask" data-i18n="CONTACTS/ASK"></option>
<option value="Never" data-i18n="CONTACTS/NEVER"></option> <option value="Never" data-i18n="CONTACTS/NEVER"></option>

View file

@ -166,14 +166,14 @@
<div data-bind="component: { <div data-bind="component: {
name: 'Checkbox', name: 'Checkbox',
params: { params: {
label: 'OPENPGP/LABEL_SIGN', label: 'CRYPTO/SIGN',
value: pgpSign value: pgpSign
} }
}"></div> }"></div>
<div data-bind="component: { <div data-bind="component: {
name: 'Checkbox', name: 'Checkbox',
params: { params: {
label: 'OPENPGP/LABEL_ENCRYPT', label: 'CRYPTO/ENCRYPT',
value: pgpEncrypt value: pgpEncrypt
} }
}"></div> }"></div>

View file

@ -30,8 +30,8 @@
<tbody data-bind="foreach: gnupgPrivateKeys, i18nUpdate: gnupgPrivateKeys"> <tbody data-bind="foreach: gnupgPrivateKeys, i18nUpdate: gnupgPrivateKeys">
<tr> <tr>
<td data-bind="click: view"> <td data-bind="click: view">
<span data-bind="visible: can_sign" class="fontastic" data-i18n="[title]OPENPGP/LABEL_SIGN"></span> <span data-bind="visible: can_sign" class="fontastic" data-i18n="[title]CRYPTO/SIGN"></span>
<span data-bind="visible: can_decrypt" class="fontastic" data-i18n="[title]OPENPGP/BUTTON_DECRYPT">🔓</span> <span data-bind="visible: can_decrypt" class="fontastic" data-i18n="[title]CRYPTO/DECRYPT">🔓</span>
<span class="key-id" data-bind="text: id"></span> <span class="key-id" data-bind="text: id"></span>
<!-- ko foreach: emails --> <!-- ko foreach: emails -->
<span class="key-user" data-bind="text: $data"></span> <span class="key-user" data-bind="text: $data"></span>
@ -50,8 +50,8 @@
<tbody data-bind="foreach: gnupgPublicKeys, i18nUpdate: gnupgPublicKeys"> <tbody data-bind="foreach: gnupgPublicKeys, i18nUpdate: gnupgPublicKeys">
<tr> <tr>
<td data-bind="click: view"> <td data-bind="click: view">
<span data-bind="visible: can_verify" class="fontastic" data-i18n="[title]OPENPGP/BUTTON_VERIFY"></span> <span data-bind="visible: can_verify" class="fontastic" data-i18n="[title]CRYPTO/VERIFY"></span>
<span data-bind="visible: can_encrypt" class="fontastic" data-i18n="[title]OPENPGP/LABEL_ENCRYPT">🔒</span> <span data-bind="visible: can_encrypt" class="fontastic" data-i18n="[title]CRYPTO/ENCRYPT">🔒</span>
<span class="key-id" data-bind="text: id"></span> <span class="key-id" data-bind="text: id"></span>
<!-- ko foreach: emails --> <!-- ko foreach: emails -->
<span class="key-user" data-bind="text: $data"></span> <span class="key-user" data-bind="text: $data"></span>