Merge branch 'the-djmaze:master' into master

This commit is contained in:
Justyn Freeman 2023-02-07 10:33:47 -05:00 committed by GitHub
commit 919acff536
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
59 changed files with 283 additions and 212 deletions

View file

@ -1,4 +1,4 @@
import { doc, createElement } from 'Common/Globals'; import { createElement } from 'Common/Globals';
import { forEachObjectEntry, pInt } from 'Common/Utils'; import { forEachObjectEntry, pInt } from 'Common/Utils';
import { SettingsUserStore } from 'Stores/User/Settings'; import { SettingsUserStore } from 'Stores/User/Settings';
@ -14,27 +14,13 @@ const
"'": ''' "'": '''
}, },
// eslint-disable-next-line max-len
hcont = Element.fromHTML('<div area="hidden" style="position:absolute;top:0;left:-200vw;max-width:max(50vw,400px);max-height:50vh"></div>'),
blockquoteSwitcher = () => { blockquoteSwitcher = () => {
SettingsUserStore.collapseBlockquotes() && SettingsUserStore.collapseBlockquotes() &&
// tpl.content.querySelectorAll('blockquote').forEach(node => { // tpl.content.querySelectorAll('blockquote').forEach(node => {
[...tpl.content.querySelectorAll('blockquote')].reverse().forEach(node => { [...tpl.content.querySelectorAll('blockquote')].reverse().forEach(node => {
let h = node.scrollHeight;
/*
if (!h) {
// Attempt to get height
hcont.innerHTML = node.outerHTML;
h = hcont.scrollHeight;
hcont.innerHTML = '';
}
*/
if (0 === h || 100 < h) {
const el = Element.fromHTML('<details class="sm-bq-switcher"><summary>•••</summary></details>'); const el = Element.fromHTML('<details class="sm-bq-switcher"><summary>•••</summary></details>');
node.replaceWith(el); node.replaceWith(el);
el.append(node); el.append(node);
}
}); });
}, },
@ -103,8 +89,6 @@ const
return url; return url;
}; };
doc.body.append(hcont);
export const export const
/** /**
@ -119,6 +103,7 @@ export const
* @returns {string} * @returns {string}
*/ */
cleanHtml = (html, oAttachments) => { cleanHtml = (html, oAttachments) => {
let aColor;
const const
debug = false, // Config()->Get('debug', 'enable', false); debug = false, // Config()->Get('debug', 'enable', false);
detectHiddenImages = true, // !!SettingsGet('try_to_detect_hidden_images'), detectHiddenImages = true, // !!SettingsGet('try_to_detect_hidden_images'),
@ -137,11 +122,7 @@ export const
// convert body attributes to CSS // convert body attributes to CSS
tasks = { tasks = {
link: value => { link: value => aColor = value,
if (/^#[a-fA-Z0-9]{3,6}$/.test(value)) {
tpl.content.querySelectorAll('a').forEach(node => node.style.color || (node.style.color = value))
}
},
text: (value, node) => node.style.color = value, text: (value, node) => node.style.color = value,
topmargin: (value, node) => node.style.marginTop = pInt(value) + 'px', topmargin: (value, node) => node.style.marginTop = pInt(value) + 'px',
leftmargin: (value, node) => node.style.marginLeft = pInt(value) + 'px', leftmargin: (value, node) => node.style.marginLeft = pInt(value) + 'px',
@ -178,9 +159,11 @@ export const
'colspan', 'rowspan', 'headers' 'colspan', 'rowspan', 'headers'
], ],
disallowedTags = [ disallowedTags = [
'HEAD','STYLE','SVG','SCRIPT','TITLE','LINK','BASE','META', 'STYLE','SVG','SCRIPT','TITLE','LINK','BASE','META',
'INPUT','OUTPUT','SELECT','BUTTON','TEXTAREA', 'INPUT','OUTPUT','SELECT','BUTTON','TEXTAREA',
'BGSOUND','KEYGEN','SOURCE','OBJECT','EMBED','APPLET','IFRAME','FRAME','FRAMESET','VIDEO','AUDIO','AREA','MAP' 'BGSOUND','KEYGEN','SOURCE','OBJECT','EMBED','APPLET','IFRAME','FRAME','FRAMESET','VIDEO','AUDIO','AREA','MAP'
// Not supported by <template> element
// ,'HTML','HEAD','BODY'
], ],
nonEmptyTags = [ nonEmptyTags = [
'A','B','EM','I','SPAN','STRONG' 'A','B','EM','I','SPAN','STRONG'
@ -188,11 +171,11 @@ export const
tpl.innerHTML = html tpl.innerHTML = html
// .replace(/<pre[^>]*>[\s\S]*?<\/pre>/gi, pre => pre.replace(/\n/g, '\n<br>')) // .replace(/<pre[^>]*>[\s\S]*?<\/pre>/gi, pre => pre.replace(/\n/g, '\n<br>'))
.replace(/<!doctype[^>]*>/gi, '')
.replace(/<\?xml[^>]*\?>/gi, '')
// Not supported by <template> element // Not supported by <template> element
// .replace(/<!doctype[^>]*>/gi, '')
// .replace(/<\?xml[^>]*\?>/gi, '')
.replace(/<(\/?)body(\s[^>]*)?>/gi, '<$1div class="mail-body"$2>') .replace(/<(\/?)body(\s[^>]*)?>/gi, '<$1div class="mail-body"$2>')
.replace(/<\/?(html|head)[^>]*>/gi, '') // .replace(/<\/?(html|head)[^>]*>/gi, '')
// Fix Reddit https://github.com/the-djmaze/snappymail/issues/540 // Fix Reddit https://github.com/the-djmaze/snappymail/issues/540
.replace(/<span class="preview-text"[\s\S]+?<\/span>/, '') .replace(/<span class="preview-text"[\s\S]+?<\/span>/, '')
// https://github.com/the-djmaze/snappymail/issues/900 // https://github.com/the-djmaze/snappymail/issues/900
@ -303,6 +286,7 @@ export const
// setAttribute('rel', 'external nofollow noopener noreferrer'); // setAttribute('rel', 'external nofollow noopener noreferrer');
} }
setAttribute('tabindex', '-1'); setAttribute('tabindex', '-1');
aColor && !oElement.style.color && (oElement.style.color = aColor);
} }
// if (['CENTER','FORM'].includes(name)) { // if (['CENTER','FORM'].includes(name)) {

View file

@ -75,6 +75,7 @@ export class MessageModel extends AbstractModel {
this.messageId = ''; this.messageId = '';
this.inReplyTo = ''; this.inReplyTo = '';
this.references = ''; this.references = '';
this.autocrypt = {};
addObservablesTo(this, { addObservablesTo(this, {
subject: '', subject: '',
@ -111,7 +112,6 @@ export class MessageModel extends AbstractModel {
readReceipt: '', readReceipt: '',
autocrypt: '',
// rfc8621 // rfc8621
id: '', id: '',
// threadId: '', // threadId: '',
@ -150,8 +150,19 @@ export class MessageModel extends AbstractModel {
} }
}); });
return tagOptions return tagOptions
} },
whitelistOptions: () => {
let options = [];
if ('match' === SettingsUserStore.viewImages()) {
let from = this.from[0],
list = SettingsUserStore.viewImagesWhitelist();
from && options.push(from.email);
this.html().match(/src=["'][^"']+/g)?.forEach(m => options.push(m.replace(/^.+(:\/\/[^/]+).+$/, '$1')));
options = options.filter(txt => !list.includes(txt));
}
return options.unique();
}
}); });
} }
@ -277,22 +288,13 @@ export class MessageModel extends AbstractModel {
body.classList.toggle('plain', 0); body.classList.toggle('plain', 0);
if (!this.isSpam() && FolderUserStore.spamFolder() != this.folder) { if (!this.isSpam() && FolderUserStore.spamFolder() != this.folder) {
if ('always' === SettingsUserStore.viewImages()) { if (('dkim' === SettingsUserStore.viewImages() && 'pass' === this.dkim[0]?.[0])
|| 'always' === SettingsUserStore.viewImages()
) {
this.showExternalImages(); this.showExternalImages();
} }
if ('match' === SettingsUserStore.viewImages()) { if ('match' === SettingsUserStore.viewImages()) {
let regex = SettingsUserStore.viewImagesWhitelist() this.showExternalImages(1);
.trim()
.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&')
.replace(/[\s\r\n,;:]+/g, '|')
.replace(/\|+/g, '|');
if (regex.length) {
console.log('whitelist images = '+regex);
regex = new RegExp(regex);
this.showExternalImages(
(this.from[0]?.email.match(regex)/* || this.sender[0]?.email.match(regex)*/) ? null : regex
);
}
} }
} }
@ -384,6 +386,20 @@ export class MessageModel extends AbstractModel {
showExternalImages(regex) { showExternalImages(regex) {
const body = this.body; const body = this.body;
if (body && this.hasImages()) { if (body && this.hasImages()) {
if (regex) {
regex = SettingsUserStore.viewImagesWhitelist()
.trim()
.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&')
.replace(/[\s\r\n,;:]+/g, '|')
.replace(/\|+/g, '|');
if (regex) {
console.log('whitelist images = '+regex);
regex = new RegExp(regex);
if (this.from[0]?.email.match(regex)) {
regex = 0;
}
}
}
let hasImages = false, let hasImages = false,
isValid = src => { isValid = src => {
if (!regex || src.match(regex)) { if (!regex || src.match(regex)) {

View file

@ -840,6 +840,8 @@ export class ComposePopupView extends AbstractViewPopup {
this.aDraftInfo = ['reply', message.uid, message.folder]; this.aDraftInfo = ['reply', message.uid, message.folder];
this.sInReplyTo = message.messageId; this.sInReplyTo = message.messageId;
this.sReferences = (message.messageId + ' ' + message.references).trim(); this.sReferences = (message.messageId + ' ' + message.references).trim();
// OpenPGP “Transferable Public Key”
// message.autocrypt?.keydata
break; break;
case ComposeType.Forward: case ComposeType.Forward:

View file

@ -499,6 +499,13 @@ export class MailMessageView extends AbstractViewRight {
currentMessage().showExternalImages(); currentMessage().showExternalImages();
} }
whitelistText(txt) {
let value = (SettingsUserStore.viewImagesWhitelist().trim() + '\n' + txt).trim();
SettingsUserStore.viewImagesWhitelist(value);
Remote.saveSetting('ViewImagesWhitelist', value);
currentMessage().showExternalImages(1);
}
/** /**
* @returns {string} * @returns {string}
*/ */

View file

@ -9,8 +9,8 @@ class MailboxDetectPlugin extends \RainLoop\Plugins\AbstractPlugin
NAME = 'MailboxDetect', NAME = 'MailboxDetect',
AUTHOR = 'SnappyMail', AUTHOR = 'SnappyMail',
URL = 'https://snappymail.eu/', URL = 'https://snappymail.eu/',
VERSION = '2.2', VERSION = '2.3',
RELEASE = '2023-01-23', RELEASE = '2023-02-07',
REQUIRED = '2.25.0', REQUIRED = '2.25.0',
CATEGORY = 'General', CATEGORY = 'General',
LICENSE = 'MIT', LICENSE = 'MIT',
@ -36,7 +36,7 @@ class MailboxDetectPlugin extends \RainLoop\Plugins\AbstractPlugin
$oActions = \RainLoop\Api::Actions(); $oActions = \RainLoop\Api::Actions();
$oAccount = $oActions->getAccountFromToken(); $oAccount = $oActions->getAccountFromToken();
if (!$oAccount) { if (!$oAccount) {
\error_log('No Account'); $this->Logger()->Write('No Account');
return; return;
} }
$oSettingsLocal = $oActions->SettingsProvider(true)->Load($oAccount); $oSettingsLocal = $oActions->SettingsProvider(true)->Load($oAccount);
@ -114,8 +114,9 @@ class MailboxDetectPlugin extends \RainLoop\Plugins\AbstractPlugin
foreach ($found as $role => $folders) { foreach ($found as $role => $folders) {
if (isset($folders[0])) { if (isset($folders[0])) {
// Set the first as default // Set the first as default
// \error_log("Set role {$role}"); $aFolder = &$aResponse['Result']['@Collection'][$folders[0]];
$aResponse['Result']['@Collection'][$folders[0]]['role'] = $role; $this->Logger()->Write("Set {$role} mailbox to {$aFolder['fullName']}");
$aFolder['role'] = $role;
} else if ($this->Config()->Get('plugin', 'autocreate_system_folders', false)) { } else if ($this->Config()->Get('plugin', 'autocreate_system_folders', false)) {
try try
{ {
@ -136,19 +137,22 @@ class MailboxDetectPlugin extends \RainLoop\Plugins\AbstractPlugin
} }
} }
*/ */
// \error_log("Create mailbox {$sFolderNameToCreate}"); $this->Logger()->Write("Create {$role} mailbox {$sFolderNameToCreate}");
$oFolder = $oActions->MailClient()->FolderCreate( $aFolder = $oActions->MailClient()->FolderCreate(
$sFolderNameToCreate, $sFolderNameToCreate,
$sParent, $sParent,
true, true,
$sDelimiter $sDelimiter
); )->jsonSerialize();
$aResponse['Result']['@Collection'][] = \json_encode($oFolder); $aFolder['role'] = $role;
$aResponse['Result']['@Collection'][] = $aFolder;
} }
catch (\Throwable $oException) catch (\Throwable $oException)
{ {
$this->Logger()->WriteException($oException); $this->Logger()->WriteException($oException);
} }
} else {
$this->Logger()->Write("Mailbox for {$role} not created");
} }
} }
} }

View file

@ -478,7 +478,7 @@ class BodyStructure implements \JsonSerializable
$oStructure->sContentType = \strtolower(\trim($sContentTypeMain.'/'.$sContentTypeSub)); $oStructure->sContentType = \strtolower(\trim($sContentTypeMain.'/'.$sContentTypeSub));
$oStructure->aContentTypeParams = $aContentTypeParams; $oStructure->aContentTypeParams = $aContentTypeParams;
$oStructure->sCharset = $sCharset; $oStructure->sCharset = $sCharset;
$oStructure->sContentID = $sContentID; $oStructure->sContentID = \trim($sContentID);
$oStructure->sDescription = $sDescription; $oStructure->sDescription = $sDescription;
$oStructure->sMailEncodingName = \strtolower($sMailEncodingName); $oStructure->sMailEncodingName = \strtolower($sMailEncodingName);
$oStructure->sDisposition = \strtolower($sDisposition); $oStructure->sDisposition = \strtolower($sDisposition);

View file

@ -485,6 +485,14 @@ class Message implements \JsonSerializable
$this->aFlagsLowerCase $this->aFlagsLowerCase
)); ));
$aAutocrypt = [];
if ($this->sAutocrypt) {
foreach (\explode(';', $this->sAutocrypt) as $entry) {
$entry = \explode('=', \trim($entry), 2);
$aAutocrypt[$entry[0]] = $entry[1];
}
}
return array( return array(
'@Object' => 'Object/Message', '@Object' => 'Object/Message',
'folder' => $this->sFolder, 'folder' => $this->sFolder,
@ -512,7 +520,7 @@ class Message implements \JsonSerializable
'threads' => $this->aThreads, 'threads' => $this->aThreads,
'unsubsribeLinks' => $this->UnsubsribeLinks, 'unsubsribeLinks' => $this->UnsubsribeLinks,
'readReceipt' => '', 'readReceipt' => '',
'autocrypt' => $this->sAutocrypt, 'autocrypt' => $aAutocrypt ?: null,
'attachments' => $this->Attachments, 'attachments' => $this->Attachments,

View file

@ -1166,7 +1166,7 @@ trait Messages
foreach ($aAttachments as $sTempName => $aData) { foreach ($aAttachments as $sTempName => $aData) {
$sFileName = (string) $aData['name']; $sFileName = (string) $aData['name'];
$bIsInline = (bool) $aData['inline']; $bIsInline = (bool) $aData['inline'];
$sCID = (string) $aData['cid']; $sCID = (string) $aData['cId'];
$sContentLocation = (string) $aData['location']; $sContentLocation = (string) $aData['location'];
$sMimeType = (string) $aData['type']; $sMimeType = (string) $aData['type'];

View file

@ -226,27 +226,23 @@ abstract class Upgrade
// Prevents Apache access error due to directories being 0700 // Prevents Apache access error due to directories being 0700
public static function fixPermissions($mode = 0755) : void public static function fixPermissions($mode = 0755) : void
{ {
\umask(0022);
$target = \rtrim(APP_INDEX_ROOT_PATH, '\\/'); $target = \rtrim(APP_INDEX_ROOT_PATH, '\\/');
// Prevent Apache access error due to directories being 0700 // Prevent Apache access error due to directories being 0700
foreach (\glob("{$target}/snappymail/v/*", \GLOB_ONLYDIR) as $dir) { foreach (\glob("{$target}/snappymail/v/*", \GLOB_ONLYDIR) as $dir) {
\chmod($dir, 0755); \chmod($dir, 0755);
foreach (['static','themes'] as $folder) {
$iterator = new \RecursiveIteratorIterator( $iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator("{$dir}/static", \FilesystemIterator::SKIP_DOTS), new \RecursiveDirectoryIterator("{$dir}/{$folder}", \FilesystemIterator::SKIP_DOTS),
\RecursiveIteratorIterator::SELF_FIRST \RecursiveIteratorIterator::SELF_FIRST
); );
foreach ($items as $item) { foreach ($items as $item) {
if ($item->isDir()) { if ($item->isDir()) {
\chmod($item, 0755); \chmod($item, 0755);
} else if ($item->isFile()) {
\chmod($item, 0644);
} }
} }
$iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator("{$dir}/themes", \FilesystemIterator::SKIP_DOTS),
\RecursiveIteratorIterator::SELF_FIRST
);
foreach ($items as $item) {
if ($item->isDir()) {
\chmod($item, 0755);
}
} }
} }
} }

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -197,7 +197,7 @@
"PLACEHOLDER_ENTER_DISPLAY_NAME": "Entrez le nom à afficher", "PLACEHOLDER_ENTER_DISPLAY_NAME": "Entrez le nom à afficher",
"PLACEHOLDER_ENTER_LAST_NAME": "Entrez votre nom", "PLACEHOLDER_ENTER_LAST_NAME": "Entrez votre nom",
"PLACEHOLDER_ENTER_FIRST_NAME": "Entrez votre prénom", "PLACEHOLDER_ENTER_FIRST_NAME": "Entrez votre prénom",
"PLACEHOLDER_ENTER_NICK_NAME": "Enter le pseudonyme", "PLACEHOLDER_ENTER_NICK_NAME": "Entrez le pseudonyme",
"LABEL_READ_ONLY": "Lecture seule", "LABEL_READ_ONLY": "Lecture seule",
"ADD_MENU_LABEL": "Ajouter", "ADD_MENU_LABEL": "Ajouter",
"ADD_MENU_NICKNAME": "Pseudonyme", "ADD_MENU_NICKNAME": "Pseudonyme",
@ -400,7 +400,7 @@
"USE_CHECKBOXES_IN_LIST": "Afficher des cases à cocher dans la liste", "USE_CHECKBOXES_IN_LIST": "Afficher des cases à cocher dans la liste",
"USE_THREADS": "Regrouper en conversations", "USE_THREADS": "Regrouper en conversations",
"REPLY_SAME_FOLDER": "Placer les réponses dans le dossier du message", "REPLY_SAME_FOLDER": "Placer les réponses dans le dossier du message",
"PREFER_HTML": "Préférer le HTML au texte pur", "PREFER_HTML": "Préférer le HTML au texte brut",
"PREFER_HTML_INFO": "Les messages arrivent parfois dans les deux formats. Cette option contrôle si vous voulez que la partie HTML ou la partie texte brut soit affichée.", "PREFER_HTML_INFO": "Les messages arrivent parfois dans les deux formats. Cette option contrôle si vous voulez que la partie HTML ou la partie texte brut soit affichée.",
"REMOVE_COLORS": "Supprimer les couleurs d'arrière-plan et de texte du message", "REMOVE_COLORS": "Supprimer les couleurs d'arrière-plan et de texte du message",
"MESSAGE_PER_PAGE": "Messages par page", "MESSAGE_PER_PAGE": "Messages par page",
@ -419,8 +419,9 @@
"LIST_SIMPLE_ATTACHMENTS": "Liste simple des pièces jointes", "LIST_SIMPLE_ATTACHMENTS": "Liste simple des pièces jointes",
"LIST_MESSAGES_GROUPED": "Lister les messages groupés (lors du tri par Date ou Destinataire)", "LIST_MESSAGES_GROUPED": "Lister les messages groupés (lors du tri par Date ou Destinataire)",
"EXTERNAL_IMAGES": "Images externes", "EXTERNAL_IMAGES": "Images externes",
"IMAGES_OPTION_ASK": "Toujours demandez", "IMAGES_OPTION_ASK": "Toujours demander",
"IMAGES_OPTION_WHITELIST": "Ajouter à la liste blanche ou demander", "IMAGES_OPTION_WHITELIST": "Ajouter à la liste blanche ou demander",
"IMAGES_OPTION_DKIM": "Toujours afficher quand DKIM est valide",
"IMAGES_OPTION_ALWAYS": "Toujours afficher", "IMAGES_OPTION_ALWAYS": "Toujours afficher",
"IMAGES_WHITELIST": "Liste blanche Images" "IMAGES_WHITELIST": "Liste blanche Images"
}, },
@ -458,7 +459,7 @@
"HELP_SHOW_HIDE_FOLDER": "Afficher\/masquer le dossier", "HELP_SHOW_HIDE_FOLDER": "Afficher\/masquer le dossier",
"HELP_CHECK_FOR_NEW_MESSAGES": "Cocher\/Décocher pour les nouveaux messages", "HELP_CHECK_FOR_NEW_MESSAGES": "Cocher\/Décocher pour les nouveaux messages",
"HIDE_UNSUBSCRIBED": "Masquer les dossiers désabonnés", "HIDE_UNSUBSCRIBED": "Masquer les dossiers désabonnés",
"UNHIDE_KOLAB_FOLDERS": "Unhide Kolab folders", "UNHIDE_KOLAB_FOLDERS": "Afficher les dossiers Kolab",
"TYPE_CALENDAR": "Calendrier", "TYPE_CALENDAR": "Calendrier",
"TYPE_CONFIGURATION": "Configuration", "TYPE_CONFIGURATION": "Configuration",
"TYPE_CONTACTS": "Contacts", "TYPE_CONTACTS": "Contacts",

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -5,7 +5,7 @@
"SAVE": "Guardar", "SAVE": "Guardar",
"TEST": "Testar", "TEST": "Testar",
"UPDATE": "Atualizar", "UPDATE": "Atualizar",
"USERNAME": "Nome de usuário", "USERNAME": "Nome de utilizador",
"PASSWORD": "Palavra-passe", "PASSWORD": "Palavra-passe",
"CANCEL": "Cancelar" "CANCEL": "Cancelar"
}, },
@ -42,7 +42,7 @@
"LABEL_ATTACHMENT_SIZE_LIMIT": "Tamanho limite dos anexos", "LABEL_ATTACHMENT_SIZE_LIMIT": "Tamanho limite dos anexos",
"LABEL_ALLOW_ADDITIONAL_ACCOUNTS": "Permitir contas adicionais", "LABEL_ALLOW_ADDITIONAL_ACCOUNTS": "Permitir contas adicionais",
"LABEL_ALLOW_IDENTITIES": "Permitir múltiplas identidades", "LABEL_ALLOW_IDENTITIES": "Permitir múltiplas identidades",
"ALERT_DATA_ACCESS": "A pasta \"Data\" está acessível. Por favor, configure o seu servidor web para impedir o acesso à pasta \"data\" a partir do exterior. Leia mais aqui:", "ALERT_DATA_ACCESS": "A pasta \"data\" está acessível. Por favor, configure o seu servidor web para impedir o acesso à pasta \"data\" a partir do exterior. Leia mais aqui:",
"ALERT_WARNING": "Aviso!", "ALERT_WARNING": "Aviso!",
"HTML_ALERT_WEAK_PASSWORD": "Está a usar a palavra-passe de administração predefinida.\n<br>\nPor razões de segurança\n<strong><a href=\"#\/security\">mude<\/a><\/strong>\na palavra-passe agora.\n" "HTML_ALERT_WEAK_PASSWORD": "Está a usar a palavra-passe de administração predefinida.\n<br>\nPor razões de segurança\n<strong><a href=\"#\/security\">mude<\/a><\/strong>\na palavra-passe agora.\n"
}, },
@ -65,11 +65,11 @@
"LABEL_ENABLE_CONTACTS": "Ativar contactos", "LABEL_ENABLE_CONTACTS": "Ativar contactos",
"LABEL_ALLOW_SYNC": "Permitir sincronização de contactos (com servidor CardDAV externo)", "LABEL_ALLOW_SYNC": "Permitir sincronização de contactos (com servidor CardDAV externo)",
"LABEL_STORAGE_TYPE": "Tipo", "LABEL_STORAGE_TYPE": "Tipo",
"LABEL_STORAGE_DSN": "Dsn", "LABEL_STORAGE_DSN": "Nome da Origem de Dados (DSN)",
"LABEL_STORAGE_USER": "Utilizador", "LABEL_STORAGE_USER": "Utilizador",
"LABEL_STORAGE_PASSWORD": "Palavra-passe", "LABEL_STORAGE_PASSWORD": "Palavra-passe",
"ALERT_NOTICE": "Aviso!", "ALERT_NOTICE": "Aviso!",
"SUGGESTIONS_LIMIT": "Suggestions limit", "SUGGESTIONS_LIMIT": "Limite de sugestões",
"HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Não use este tipo de base de dados com uma grande quantidade de utilizadores ativos.", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Não use este tipo de base de dados com uma grande quantidade de utilizadores ativos.",
"HTML_ALERT_DOES_NOT_SUPPORTED": "O seu sistema não suporta contactos.\n<br>\nPrecisa instalar ou ativar a extensão <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> no seu servidor.\n" "HTML_ALERT_DOES_NOT_SUPPORTED": "O seu sistema não suporta contactos.\n<br>\nPrecisa instalar ou ativar a extensão <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> no seu servidor.\n"
}, },
@ -89,7 +89,7 @@
"LABEL_CURRENT_PASSWORD": "Palavra-passe atual", "LABEL_CURRENT_PASSWORD": "Palavra-passe atual",
"LABEL_NEW_PASSWORD": "Nova palavra-passe", "LABEL_NEW_PASSWORD": "Nova palavra-passe",
"LABEL_REPEAT_PASSWORD": "Repetir", "LABEL_REPEAT_PASSWORD": "Repetir",
"LABEL_REQUIRE_VERIFICATION": "Obrigar a verificação dos certificados SSL utilizados", "LABEL_REQUIRE_VERIFICATION": "Exigir a verificação dos certificados SSL",
"LABEL_ALLOW_SELF_SIGNED": "Permitir certificados autoassinados" "LABEL_ALLOW_SELF_SIGNED": "Permitir certificados autoassinados"
}, },
"TAB_PACKAGES": { "TAB_PACKAGES": {
@ -101,7 +101,7 @@
}, },
"TAB_ABOUT": { "TAB_ABOUT": {
"LEGEND_ABOUT": "Acerca", "LEGEND_ABOUT": "Acerca",
"LABEL_TAG_HINT": "Cliente de email moderno e rápido, baseado em tecnologia web", "LABEL_TAG_HINT": "Cliente de correio web simples, moderno e rápido",
"LABEL_ALL_RIGHTS_RESERVED": "Todos os direitos reservados.", "LABEL_ALL_RIGHTS_RESERVED": "Todos os direitos reservados.",
"HINT_READ_CHANGE_LOG": "Por favor leia a lista de modificações antes de atualizar.", "HINT_READ_CHANGE_LOG": "Por favor leia a lista de modificações antes de atualizar.",
"HINT_IS_UP_TO_DATE": "SnappyMail está atualizado.", "HINT_IS_UP_TO_DATE": "SnappyMail está atualizado.",
@ -124,11 +124,11 @@
"LABEL_SERVER": "Servidor", "LABEL_SERVER": "Servidor",
"LABEL_PORT": "Porta", "LABEL_PORT": "Porta",
"LABEL_SECURE": "Segurança", "LABEL_SECURE": "Segurança",
"TIMEOUT": "Timeout", "TIMEOUT": "Tempo de espera",
"DISABLE_CAPABILITIES": "Disable capabilities", "DISABLE_CAPABILITIES": "Desativar capacidades",
"LIMITS": "Limits", "LIMITS": "Limites",
"FOLDERS": "Folders", "FOLDERS": "Pastas",
"MESSAGES": "Messages", "MESSAGES": "Mensagens",
"LABEL_WHITE_LIST": "Lista Branca", "LABEL_WHITE_LIST": "Lista Branca",
"SECURE_OPTION_NONE": "Nenhuma", "SECURE_OPTION_NONE": "Nenhuma",
"LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts sieve", "LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts sieve",
@ -165,11 +165,11 @@
"UNKNOWN_ERROR": "Erro desconhecido" "UNKNOWN_ERROR": "Erro desconhecido"
}, },
"NOTIFICATIONS": { "NOTIFICATIONS": {
"REQUEST_ERROR": "Request failed", "REQUEST_ERROR": "A solicitação falhou",
"REQUEST_ABORTED": "Request is aborted", "REQUEST_ABORTED": "A solicitação foi abortada",
"REQUEST_TIMEOUT": "Request timed out", "REQUEST_TIMEOUT": "A solicitação expirou",
"INVALID_TOKEN": "Token inválido", "INVALID_TOKEN": "Token inválido",
"AUTH_ERROR": "Falha na autenticação", "AUTH_ERROR": "A autenticação falhou",
"DOMAIN_ALREADY_EXISTS": "O domínio já existe", "DOMAIN_ALREADY_EXISTS": "O domínio já existe",
"CANT_SAVE_PLUGIN_SETTINGS": "Não é possível guardar as definições", "CANT_SAVE_PLUGIN_SETTINGS": "Não é possível guardar as definições",
"CANT_INSTALL_PACKAGE": "Não foi possível instalar a extensão", "CANT_INSTALL_PACKAGE": "Não foi possível instalar a extensão",

View file

@ -1,9 +1,9 @@
{ {
"BACK_LINK": "Recarregar", "BACK_LINK": "Recarregar",
"NO_SCRIPT_TITLE": "É necessário JavaScript para esta aplicação.", "NO_SCRIPT_TITLE": "É necessário JavaScript para esta aplicação.",
"NO_SCRIPT_DESC": "O suporte de JavaScript não está disponível no seu navegador.\nPor favor ative o suporte de JavaScript nas definições do seu navegador e tente novamente.\n", "NO_SCRIPT_DESC": "O suporte de JavaScript não está disponível no seu navegador.\nPor favor ative o suporte de JavaScript nas definições do seu navegador e tente novamente.",
"NO_COOKIE_TITLE": "É necessário suporte de Cookies para esta aplicação.", "NO_COOKIE_TITLE": "É necessário suporte de Cookies para esta aplicação.",
"NO_COOKIE_DESC": "O suporte de Cookies não está disponível no seu navegador.\nPor favor ative o suporte de Cookies nas definições do seu navegador e tente novamente.\n", "NO_COOKIE_DESC": "O suporte de Cookies não está disponível no seu navegador.\nPor favor ative o suporte de Cookies nas definições do seu navegador e tente novamente.",
"BAD_BROWSER_TITLE": "O seu navegador está desatualizado.", "BAD_BROWSER_TITLE": "O seu navegador está desatualizado.",
"BAD_BROWSER_DESC": "Para usar todas as funções da aplicação,\ntransfira e instale um destes navegadores:\n" "BAD_BROWSER_DESC": "Para usar todas as funções da aplicação,\ntransfira e instale um navegador recente."
} }

View file

@ -22,10 +22,10 @@
"NOT_SPAM": "Não é spam", "NOT_SPAM": "Não é spam",
"USERNAME": "Nome de usuário", "USERNAME": "Nome de usuário",
"PASSWORD": "Palavra-passe", "PASSWORD": "Palavra-passe",
"REMEMBER": "Remember", "REMEMBER": "Lembrar",
"REPLY_TO": "Resp.-Para", "REPLY_TO": "Resp.-Para",
"SAVE": "Guardar", "SAVE": "Guardar",
"SAVE_CHANGES": "Save changes?", "SAVE_CHANGES": "Guardar alterações?",
"SEARCH": "Pesquisar", "SEARCH": "Pesquisar",
"SPAM": "Spam", "SPAM": "Spam",
"SUBJECT": "Assunto", "SUBJECT": "Assunto",
@ -34,7 +34,7 @@
"SERVER_MESSAGE": "Mensagem do servidor", "SERVER_MESSAGE": "Mensagem do servidor",
"YES": "Sim", "YES": "Sim",
"NO": "Não", "NO": "Não",
"INACTIVE": "Inactive", "INACTIVE": "Inativo",
"DEFAULT": "predefinida", "DEFAULT": "predefinida",
"HELP": "Ajuda" "HELP": "Ajuda"
}, },
@ -152,7 +152,7 @@
"SPAM_SCORE": "Pontuação de Spam", "SPAM_SCORE": "Pontuação de Spam",
"HAS_VIRUS_WARNING": "AVISO: vírus detetado", "HAS_VIRUS_WARNING": "AVISO: vírus detetado",
"TAGS": "Marcadores", "TAGS": "Marcadores",
"NEW_TAG": "New tag" "NEW_TAG": "Novo marcador"
}, },
"MESSAGE_TAGS": { "MESSAGE_TAGS": {
"$important": "Importante", "$important": "Importante",
@ -171,17 +171,17 @@
"SEARCHING_DESC": "A pesquisar..." "SEARCHING_DESC": "A pesquisar..."
}, },
"CONTACTS": { "CONTACTS": {
"TAB_CONTACT": "Contact", "TAB_CONTACT": "Contactos",
"TAB_LOCATIONS": "Locations", "TAB_LOCATIONS": "Localizações",
"TAB_BUSINESS": "Business", "TAB_BUSINESS": "Empresa",
"LABEL_ORGANIZATION": "Organization", "LABEL_ORGANIZATION": "Empresa",
"LABEL_DEPARTMENT": "Department", "LABEL_DEPARTMENT": "Departamento",
"LABEL_TITLE": "Title", "LABEL_TITLE": "Cargo",
"TAB_CRYPTO": "Crypto", "TAB_CRYPTO": "Criptografia",
"ASK": "Ask", "ASK": "Perguntar",
"NEVER": "Never", "NEVER": "Nunca",
"ALWAYS": "Always", "ALWAYS": "Sempre",
"ALWAYS_IF_POSSIBLE": "Always if possible", "ALWAYS_IF_POSSIBLE": "Sempre que possível",
"BUTTON_ADD_CONTACT": "Adicionar contacto", "BUTTON_ADD_CONTACT": "Adicionar contacto",
"BUTTON_CREATE_CONTACT": "Criar", "BUTTON_CREATE_CONTACT": "Criar",
"BUTTON_UPDATE_CONTACT": "Atualizar", "BUTTON_UPDATE_CONTACT": "Atualizar",
@ -203,7 +203,7 @@
"ADD_MENU_NICKNAME": "Alcunha", "ADD_MENU_NICKNAME": "Alcunha",
"ADD_MENU_NOTE": "Notas", "ADD_MENU_NOTE": "Notas",
"ADD_MENU_PHONE": "Telefone", "ADD_MENU_PHONE": "Telefone",
"ADD_MENU_URL": "URL", "ADD_MENU_URL": "Website",
"ADD_MENU_ADDRESS": "Morada", "ADD_MENU_ADDRESS": "Morada",
"ADD_MENU_BIRTHDAY": "Aniversário", "ADD_MENU_BIRTHDAY": "Aniversário",
"ADD_MENU_TAGS": "Marcadores", "ADD_MENU_TAGS": "Marcadores",
@ -226,18 +226,18 @@
"NO_ATTACHMENTS_HERE_DESC": "Sem anexos aqui.", "NO_ATTACHMENTS_HERE_DESC": "Sem anexos aqui.",
"ATTACHMENTS_ERROR_DESC": "Aviso! Nem todos os anexos foram carregados.", "ATTACHMENTS_ERROR_DESC": "Aviso! Nem todos os anexos foram carregados.",
"ATTACHMENTS_UPLOAD_ERROR_DESC": "Ainda não foram carregados todos os anexos", "ATTACHMENTS_UPLOAD_ERROR_DESC": "Ainda não foram carregados todos os anexos",
"ALLOW_SPELLCHECK": "Enable browser spelling checker", "ALLOW_SPELLCHECK": "Ativar corretor ortográfico do navegador",
"BUTTON_REQUEST_READ_RECEIPT": "Pedir um recibo de leitura", "BUTTON_REQUEST_READ_RECEIPT": "Pedir um recibo de leitura",
"BUTTON_MARK_AS_IMPORTANT": "Marcar como importante", "BUTTON_MARK_AS_IMPORTANT": "Marcar como importante",
"BUTTON_REQUEST_DSN": "Pedir um recibo de entrega", "BUTTON_REQUEST_DSN": "Pedir um recibo de entrega",
"BUTTON_REQUIRE_TLS": "Require secure delivery" "BUTTON_REQUIRE_TLS": "Exigir entrega segura"
}, },
"POPUPS_ASK": { "POPUPS_ASK": {
"DESC_WANT_CLOSE_THIS_WINDOW": "Tem a certeza de que quer fechar esta janela?", "DESC_WANT_CLOSE_THIS_WINDOW": "Tem a certeza de que quer fechar esta janela?",
"DESC_WANT_DELETE_MESSAGES": "Tem a certeza de que quer eliminar a(s) mensagem(s)?" "DESC_WANT_DELETE_MESSAGES": "Tem a certeza de que quer eliminar a(s) mensagem(s)?"
}, },
"POPUPS_LANGUAGES": { "POPUPS_LANGUAGES": {
"TITLE_LANGUAGES": "Escolha o idioma" "TITLE_LANGUAGES": "Escolha o seu idioma"
}, },
"POPUPS_ADD_ACCOUNT": { "POPUPS_ADD_ACCOUNT": {
"TITLE_ADD_ACCOUNT": "Adicionar conta?", "TITLE_ADD_ACCOUNT": "Adicionar conta?",
@ -316,7 +316,7 @@
"MARK_AS_READ_LABEL": "Marcar como lida", "MARK_AS_READ_LABEL": "Marcar como lida",
"REPLY_INTERVAL_LABEL": "Intervalo de resposta (dias)", "REPLY_INTERVAL_LABEL": "Intervalo de resposta (dias)",
"KEEP_LABEL": "Manter", "KEEP_LABEL": "Manter",
"STOP_LABEL": "Stop further processing of rules", "STOP_LABEL": "Interromper o processamento das regras",
"VACATION_SUBJECT_LABEL": "Assunto (opcional)", "VACATION_SUBJECT_LABEL": "Assunto (opcional)",
"VACATION_MESSAGE_LABEL": "Mensagem", "VACATION_MESSAGE_LABEL": "Mensagem",
"VACATION_RECIPIENTS_LABEL": "Destinatários (separados por vírgula)", "VACATION_RECIPIENTS_LABEL": "Destinatários (separados por vírgula)",
@ -356,7 +356,7 @@
}, },
"EDITOR": { "EDITOR": {
"TEXT_SWITCHER_PLAIN_TEXT": "HTML <-> TEXTO", "TEXT_SWITCHER_PLAIN_TEXT": "HTML <-> TEXTO",
"TEXT_SWITCHER_SOURCE": "HTML <-> SOURCE" "TEXT_SWITCHER_SOURCE": "HTML <-> FONTE"
}, },
"SETTINGS_LABELS": { "SETTINGS_LABELS": {
"GENERAL": "Geral", "GENERAL": "Geral",
@ -385,7 +385,7 @@
"SETTINGS_GENERAL": { "SETTINGS_GENERAL": {
"LEGEND_GENERAL": "Geral", "LEGEND_GENERAL": "Geral",
"LANGUAGE": "Idioma", "LANGUAGE": "Idioma",
"HOUR_FORMAT": "Hour format", "HOUR_FORMAT": "Formato da hora",
"IDENTITY": "Identidade", "IDENTITY": "Identidade",
"LAYOUT": "Apresentação", "LAYOUT": "Apresentação",
"LAYOUT_NO_SPLIT": "Sem separação", "LAYOUT_NO_SPLIT": "Sem separação",
@ -396,7 +396,7 @@
"EDITOR_PLAIN": "Texto simples", "EDITOR_PLAIN": "Texto simples",
"VIEW_OPTIONS": "Ver opções", "VIEW_OPTIONS": "Ver opções",
"USE_PREVIEW_PANE": "Use o painel de pré-visualização", "USE_PREVIEW_PANE": "Use o painel de pré-visualização",
"HIDE_DELETED_MESSAGES": "Ocultar mensagens marcadas para exclusão", "HIDE_DELETED_MESSAGES": "Ocultar mensagens marcadas para eliminação",
"USE_CHECKBOXES_IN_LIST": "Apresentar caixas de seleção na lista", "USE_CHECKBOXES_IN_LIST": "Apresentar caixas de seleção na lista",
"USE_THREADS": "Usar tópicos de conversa", "USE_THREADS": "Usar tópicos de conversa",
"REPLY_SAME_FOLDER": "Colocar respostas na pasta das mensagens a que responde", "REPLY_SAME_FOLDER": "Colocar respostas na pasta das mensagens a que responde",
@ -404,25 +404,26 @@
"PREFER_HTML_INFO": "Por vezes as mensagens são recebidas em ambos os formatos. Esta opção determina se prefere apresentar o conteúdo em HTML ou em texto simples.", "PREFER_HTML_INFO": "Por vezes as mensagens são recebidas em ambos os formatos. Esta opção determina se prefere apresentar o conteúdo em HTML ou em texto simples.",
"REMOVE_COLORS": "Retirar imagens de fundo e coloração de texto do corpo das mensagens", "REMOVE_COLORS": "Retirar imagens de fundo e coloração de texto do corpo das mensagens",
"MESSAGE_PER_PAGE": "Mensagens por página", "MESSAGE_PER_PAGE": "Mensagens por página",
"CHECK_MAIL_INTERVAL": "Check mail interval", "CHECK_MAIL_INTERVAL": "Intervalo de verificação do correio",
"MARK_MESSAGE_READ_AFTER": "Marcar mensagem como lida após", "MARK_MESSAGE_READ_AFTER": "Marcar mensagem como lida após",
"MSG_DEFAULT_ACTION": "Default action", "MSG_DEFAULT_ACTION": "Ação predefinida",
"SECONDS": "segundos", "SECONDS": "segundos",
"MINUTES": "minutes", "MINUTES": "minutos",
"NOTIFICATIONS": "Notificações", "NOTIFICATIONS": "Notificações",
"SOUND_NOTIFICATION": "Notificações sonoras", "SOUND_NOTIFICATION": "Notificações sonoras",
"CHROME_NOTIFICATION_DESC": "Apresentar notificações para novas mensagens", "CHROME_NOTIFICATION_DESC": "Apresentar notificações para novas mensagens",
"CHROME_NOTIFICATION_DESC_DENIED": "(Bloqueado pelo navegador)", "CHROME_NOTIFICATION_DESC_DENIED": "(Bloqueado pelo navegador)",
"COLLAPSE_BLOCKQUOTES": "Collapse quoted text", "COLLAPSE_BLOCKQUOTES": "Minimizar texto citado",
"MAX_QUOTE_LEVEL": "Maximum visible quoted text levels", "MAX_QUOTE_LEVEL": "Níveis máximos de texto citado visíveis",
"LIST_INLINE_ATTACHMENTS": "Show inline attachments in list", "LIST_INLINE_ATTACHMENTS": "Mostrar na lista de anexos os anexos integrados no corpo",
"LIST_SIMPLE_ATTACHMENTS": "Simple attachments list", "LIST_SIMPLE_ATTACHMENTS": "Lista simples de anexos",
"LIST_MESSAGES_GROUPED": "List messages grouped (when sorting by date or from)", "LIST_MESSAGES_GROUPED": "Agrupar mensagens listadas (quando ordenadas por data ou remetente)",
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "Imagens externas",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Perguntar sempre",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Lista Branca ou perguntar",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_DKIM": "Mostrar sempre que DKIM for válido",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_OPTION_ALWAYS": "Mostrar sempre",
"IMAGES_WHITELIST": "Lista Branca de imagens"
}, },
"SETTINGS_CONTACTS": { "SETTINGS_CONTACTS": {
"LABEL_CONTACTS_AUTOSAVE": "Adicionar destinatários automaticamente à sua lista de endereços", "LABEL_CONTACTS_AUTOSAVE": "Adicionar destinatários automaticamente à sua lista de endereços",
@ -436,7 +437,7 @@
"SETTINGS_THEMES": { "SETTINGS_THEMES": {
"LEGEND_THEMES": "Temas", "LEGEND_THEMES": "Temas",
"LABEL_BACKGROUND": "Imagem de fundo", "LABEL_BACKGROUND": "Imagem de fundo",
"LABEL_FONTS": "Fonts", "LABEL_FONTS": "Tipos de letra",
"BUTTON_UPLOAD_BACKGROUND_IMAGE": "Carregar imagem de fundo (JPG, PNG)", "BUTTON_UPLOAD_BACKGROUND_IMAGE": "Carregar imagem de fundo (JPG, PNG)",
"ERROR_FILE_IS_TOO_BIG": "Ficheiro muito grande", "ERROR_FILE_IS_TOO_BIG": "Ficheiro muito grande",
"ERROR_FILE_TYPE_ERROR": "Tipo de ficheiro inválido (apenas JPG e PNG)", "ERROR_FILE_TYPE_ERROR": "Tipo de ficheiro inválido (apenas JPG e PNG)",
@ -457,8 +458,8 @@
"HELP_DELETE_FOLDER": "Eliminar pasta", "HELP_DELETE_FOLDER": "Eliminar pasta",
"HELP_SHOW_HIDE_FOLDER": "Mostrar\/ocultar pasta", "HELP_SHOW_HIDE_FOLDER": "Mostrar\/ocultar pasta",
"HELP_CHECK_FOR_NEW_MESSAGES": "Procurar\/não procurar novas mensagens", "HELP_CHECK_FOR_NEW_MESSAGES": "Procurar\/não procurar novas mensagens",
"HIDE_UNSUBSCRIBED": "Esconder pastas não-subscritas", "HIDE_UNSUBSCRIBED": "Esconder pastas não subscritas",
"UNHIDE_KOLAB_FOLDERS": "Unhide Kolab folders", "UNHIDE_KOLAB_FOLDERS": "Tonar pastas Kolab visíveis",
"TYPE_CALENDAR": "Calendário", "TYPE_CALENDAR": "Calendário",
"TYPE_CONFIGURATION": "Configuração", "TYPE_CONFIGURATION": "Configuração",
"TYPE_CONTACTS": "Contactos", "TYPE_CONTACTS": "Contactos",
@ -474,7 +475,7 @@
"BUTTON_ADD_ACCOUNT": "Adicionar uma conta", "BUTTON_ADD_ACCOUNT": "Adicionar uma conta",
"BUTTON_ADD_IDENTITY": "Adicionar uma identidade", "BUTTON_ADD_IDENTITY": "Adicionar uma identidade",
"LOADING_PROCESS": "A atualizar...", "LOADING_PROCESS": "A atualizar...",
"SHOW_UNREAD": "Show unread messages count" "SHOW_UNREAD": "Mostrar contador de mensagens não lidas"
}, },
"SETTINGS_OPENPGP": { "SETTINGS_OPENPGP": {
"BUTTON_IMPORT_KEY": "Importar chave", "BUTTON_IMPORT_KEY": "Importar chave",
@ -522,11 +523,11 @@
"LABEL_CLOSE_COMPOSE": "Fechar janela de composição" "LABEL_CLOSE_COMPOSE": "Fechar janela de composição"
}, },
"NOTIFICATIONS": { "NOTIFICATIONS": {
"REQUEST_ERROR": "Request failed", "REQUEST_ERROR": "A solicitação falhou",
"REQUEST_ABORTED": "Request is aborted", "REQUEST_ABORTED": "A solicitação foi abortada",
"REQUEST_TIMEOUT": "Request timed out", "REQUEST_TIMEOUT": "A solicitação expirou",
"INVALID_TOKEN": "Token inválido", "INVALID_TOKEN": "Token inválido",
"AUTH_ERROR": "Falha na autenticação", "AUTH_ERROR": "A autenticação falhou",
"CONNECTION_ERROR": "Não foi possível ligar ao servidor", "CONNECTION_ERROR": "Não foi possível ligar ao servidor",
"DOMAIN_ALREADY_EXISTS": "O domínio já existe", "DOMAIN_ALREADY_EXISTS": "O domínio já existe",
"DOMAIN_NOT_ALLOWED": "Este domínio não é permitido", "DOMAIN_NOT_ALLOWED": "Este domínio não é permitido",

View file

@ -5,7 +5,7 @@
"SAVE": "Guardar", "SAVE": "Guardar",
"TEST": "Testar", "TEST": "Testar",
"UPDATE": "Atualizar", "UPDATE": "Atualizar",
"USERNAME": "Nome de usuário", "USERNAME": "Nome de utilizador",
"PASSWORD": "Palavra-passe", "PASSWORD": "Palavra-passe",
"CANCEL": "Cancelar" "CANCEL": "Cancelar"
}, },
@ -42,7 +42,7 @@
"LABEL_ATTACHMENT_SIZE_LIMIT": "Tamanho limite dos anexos", "LABEL_ATTACHMENT_SIZE_LIMIT": "Tamanho limite dos anexos",
"LABEL_ALLOW_ADDITIONAL_ACCOUNTS": "Permitir contas adicionais", "LABEL_ALLOW_ADDITIONAL_ACCOUNTS": "Permitir contas adicionais",
"LABEL_ALLOW_IDENTITIES": "Permitir múltiplas identidades", "LABEL_ALLOW_IDENTITIES": "Permitir múltiplas identidades",
"ALERT_DATA_ACCESS": "A pasta \"Data\" está acessível. Por favor, configure o seu servidor web para impedir o acesso à pasta \"data\" a partir do exterior. Leia mais aqui:", "ALERT_DATA_ACCESS": "A pasta \"data\" está acessível. Por favor, configure o seu servidor web para impedir o acesso à pasta \"data\" a partir do exterior. Leia mais aqui:",
"ALERT_WARNING": "Aviso!", "ALERT_WARNING": "Aviso!",
"HTML_ALERT_WEAK_PASSWORD": "Está a usar a palavra-passe de administração predefinida.\n<br>\nPor razões de segurança\n<strong><a href=\"#\/security\">mude<\/a><\/strong>\na palavra-passe agora.\n" "HTML_ALERT_WEAK_PASSWORD": "Está a usar a palavra-passe de administração predefinida.\n<br>\nPor razões de segurança\n<strong><a href=\"#\/security\">mude<\/a><\/strong>\na palavra-passe agora.\n"
}, },
@ -65,11 +65,11 @@
"LABEL_ENABLE_CONTACTS": "Ativar contactos", "LABEL_ENABLE_CONTACTS": "Ativar contactos",
"LABEL_ALLOW_SYNC": "Permitir sincronização de contactos (com servidor CardDAV externo)", "LABEL_ALLOW_SYNC": "Permitir sincronização de contactos (com servidor CardDAV externo)",
"LABEL_STORAGE_TYPE": "Tipo", "LABEL_STORAGE_TYPE": "Tipo",
"LABEL_STORAGE_DSN": "Dsn", "LABEL_STORAGE_DSN": "Nome da Origem de Dados (DSN)",
"LABEL_STORAGE_USER": "Utilizador", "LABEL_STORAGE_USER": "Utilizador",
"LABEL_STORAGE_PASSWORD": "Palavra-passe", "LABEL_STORAGE_PASSWORD": "Palavra-passe",
"ALERT_NOTICE": "Aviso!", "ALERT_NOTICE": "Aviso!",
"SUGGESTIONS_LIMIT": "Suggestions limit", "SUGGESTIONS_LIMIT": "Limite de sugestões",
"HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Não use este tipo de base de dados com uma grande quantidade de utilizadores ativos.", "HTML_ALERT_DO_NOT_USE_THIS_DATABASE": "Não use este tipo de base de dados com uma grande quantidade de utilizadores ativos.",
"HTML_ALERT_DOES_NOT_SUPPORTED": "O seu sistema não suporta contactos.\n<br>\nPrecisa instalar ou ativar a extensão <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> no seu servidor.\n" "HTML_ALERT_DOES_NOT_SUPPORTED": "O seu sistema não suporta contactos.\n<br>\nPrecisa instalar ou ativar a extensão <strong>PDO (SQLite \/ MySQL \/ PostgreSQL)<\/strong> no seu servidor.\n"
}, },
@ -89,7 +89,7 @@
"LABEL_CURRENT_PASSWORD": "Palavra-passe atual", "LABEL_CURRENT_PASSWORD": "Palavra-passe atual",
"LABEL_NEW_PASSWORD": "Nova palavra-passe", "LABEL_NEW_PASSWORD": "Nova palavra-passe",
"LABEL_REPEAT_PASSWORD": "Repetir", "LABEL_REPEAT_PASSWORD": "Repetir",
"LABEL_REQUIRE_VERIFICATION": "Obrigar a verificação dos certificados SSL utilizados", "LABEL_REQUIRE_VERIFICATION": "Exigir a verificação dos certificados SSL",
"LABEL_ALLOW_SELF_SIGNED": "Permitir certificados autoassinados" "LABEL_ALLOW_SELF_SIGNED": "Permitir certificados autoassinados"
}, },
"TAB_PACKAGES": { "TAB_PACKAGES": {
@ -101,7 +101,7 @@
}, },
"TAB_ABOUT": { "TAB_ABOUT": {
"LEGEND_ABOUT": "Acerca", "LEGEND_ABOUT": "Acerca",
"LABEL_TAG_HINT": "Cliente de email moderno e rápido, baseado em tecnologia web", "LABEL_TAG_HINT": "Cliente de correio web simples, moderno e rápido",
"LABEL_ALL_RIGHTS_RESERVED": "Todos os direitos reservados.", "LABEL_ALL_RIGHTS_RESERVED": "Todos os direitos reservados.",
"HINT_READ_CHANGE_LOG": "Por favor leia a lista de modificações antes de atualizar.", "HINT_READ_CHANGE_LOG": "Por favor leia a lista de modificações antes de atualizar.",
"HINT_IS_UP_TO_DATE": "SnappyMail está atualizado.", "HINT_IS_UP_TO_DATE": "SnappyMail está atualizado.",
@ -124,11 +124,11 @@
"LABEL_SERVER": "Servidor", "LABEL_SERVER": "Servidor",
"LABEL_PORT": "Porta", "LABEL_PORT": "Porta",
"LABEL_SECURE": "Segurança", "LABEL_SECURE": "Segurança",
"TIMEOUT": "Timeout", "TIMEOUT": "Tempo de espera",
"DISABLE_CAPABILITIES": "Disable capabilities", "DISABLE_CAPABILITIES": "Desativar capacidades",
"LIMITS": "Limits", "LIMITS": "Limites",
"FOLDERS": "Folders", "FOLDERS": "Pastas",
"MESSAGES": "Messages", "MESSAGES": "Mensagens",
"LABEL_WHITE_LIST": "Lista Branca", "LABEL_WHITE_LIST": "Lista Branca",
"SECURE_OPTION_NONE": "Nenhuma", "SECURE_OPTION_NONE": "Nenhuma",
"LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts sieve", "LABEL_ALLOW_SIEVE_SCRIPTS": "Permitir scripts sieve",
@ -165,11 +165,11 @@
"UNKNOWN_ERROR": "Erro desconhecido" "UNKNOWN_ERROR": "Erro desconhecido"
}, },
"NOTIFICATIONS": { "NOTIFICATIONS": {
"REQUEST_ERROR": "Request failed", "REQUEST_ERROR": "A solicitação falhou",
"REQUEST_ABORTED": "Request is aborted", "REQUEST_ABORTED": "A solicitação foi abortada",
"REQUEST_TIMEOUT": "Request timed out", "REQUEST_TIMEOUT": "A solicitação expirou",
"INVALID_TOKEN": "Token inválido", "INVALID_TOKEN": "Token inválido",
"AUTH_ERROR": "Falha na autenticação", "AUTH_ERROR": "A autenticação falhou",
"DOMAIN_ALREADY_EXISTS": "O domínio já existe", "DOMAIN_ALREADY_EXISTS": "O domínio já existe",
"CANT_SAVE_PLUGIN_SETTINGS": "Não é possível guardar as definições", "CANT_SAVE_PLUGIN_SETTINGS": "Não é possível guardar as definições",
"CANT_INSTALL_PACKAGE": "Não foi possível instalar a extensão", "CANT_INSTALL_PACKAGE": "Não foi possível instalar a extensão",

View file

@ -1,9 +1,9 @@
{ {
"BACK_LINK": "Recarregar", "BACK_LINK": "Recarregar",
"NO_SCRIPT_TITLE": "É necessário JavaScript para esta aplicação.", "NO_SCRIPT_TITLE": "É necessário JavaScript para esta aplicação.",
"NO_SCRIPT_DESC": "O suporte de JavaScript não está disponível no seu navegador.\nPor favor ative o suporte de JavaScript nas definições do seu navegador e tente novamente.\n", "NO_SCRIPT_DESC": "O suporte de JavaScript não está disponível no seu navegador.\nPor favor ative o suporte de JavaScript nas definições do seu navegador e tente novamente.",
"NO_COOKIE_TITLE": "É necessário suporte de Cookies para esta aplicação.", "NO_COOKIE_TITLE": "É necessário suporte de Cookies para esta aplicação.",
"NO_COOKIE_DESC": "O suporte de Cookies não está disponível no seu navegador.\nPor favor ative o suporte de Cookies nas definições do seu navegador e tente novamente.\n", "NO_COOKIE_DESC": "O suporte de Cookies não está disponível no seu navegador.\nPor favor ative o suporte de Cookies nas definições do seu navegador e tente novamente.",
"BAD_BROWSER_TITLE": "O seu navegador está desatualizado.", "BAD_BROWSER_TITLE": "O seu navegador está desatualizado.",
"BAD_BROWSER_DESC": "Para usar todas as funções da aplicação,\ntransfira e instale um destes navegadores:\n" "BAD_BROWSER_DESC": "Para usar todas as funções da aplicação,\ntransfira e instale um navegador recente."
} }

View file

@ -22,10 +22,10 @@
"NOT_SPAM": "Não é spam", "NOT_SPAM": "Não é spam",
"USERNAME": "Nome de usuário", "USERNAME": "Nome de usuário",
"PASSWORD": "Palavra-passe", "PASSWORD": "Palavra-passe",
"REMEMBER": "Remember", "REMEMBER": "Lembrar",
"REPLY_TO": "Resp.-Para", "REPLY_TO": "Resp.-Para",
"SAVE": "Guardar", "SAVE": "Guardar",
"SAVE_CHANGES": "Save changes?", "SAVE_CHANGES": "Guardar alterações?",
"SEARCH": "Pesquisar", "SEARCH": "Pesquisar",
"SPAM": "Spam", "SPAM": "Spam",
"SUBJECT": "Assunto", "SUBJECT": "Assunto",
@ -34,7 +34,7 @@
"SERVER_MESSAGE": "Mensagem do servidor", "SERVER_MESSAGE": "Mensagem do servidor",
"YES": "Sim", "YES": "Sim",
"NO": "Não", "NO": "Não",
"INACTIVE": "Inactive", "INACTIVE": "Inativo",
"DEFAULT": "predefinida", "DEFAULT": "predefinida",
"HELP": "Ajuda" "HELP": "Ajuda"
}, },
@ -152,7 +152,7 @@
"SPAM_SCORE": "Pontuação de Spam", "SPAM_SCORE": "Pontuação de Spam",
"HAS_VIRUS_WARNING": "AVISO: vírus detetado", "HAS_VIRUS_WARNING": "AVISO: vírus detetado",
"TAGS": "Marcadores", "TAGS": "Marcadores",
"NEW_TAG": "New tag" "NEW_TAG": "Novo marcador"
}, },
"MESSAGE_TAGS": { "MESSAGE_TAGS": {
"$important": "Importante", "$important": "Importante",
@ -171,17 +171,17 @@
"SEARCHING_DESC": "A pesquisar..." "SEARCHING_DESC": "A pesquisar..."
}, },
"CONTACTS": { "CONTACTS": {
"TAB_CONTACT": "Contact", "TAB_CONTACT": "Contactos",
"TAB_LOCATIONS": "Locations", "TAB_LOCATIONS": "Localizações",
"TAB_BUSINESS": "Business", "TAB_BUSINESS": "Empresa",
"LABEL_ORGANIZATION": "Organization", "LABEL_ORGANIZATION": "Empresa",
"LABEL_DEPARTMENT": "Department", "LABEL_DEPARTMENT": "Departamento",
"LABEL_TITLE": "Title", "LABEL_TITLE": "Cargo",
"TAB_CRYPTO": "Crypto", "TAB_CRYPTO": "Criptografia",
"ASK": "Ask", "ASK": "Perguntar",
"NEVER": "Never", "NEVER": "Nunca",
"ALWAYS": "Always", "ALWAYS": "Sempre",
"ALWAYS_IF_POSSIBLE": "Always if possible", "ALWAYS_IF_POSSIBLE": "Sempre que possível",
"BUTTON_ADD_CONTACT": "Adicionar contacto", "BUTTON_ADD_CONTACT": "Adicionar contacto",
"BUTTON_CREATE_CONTACT": "Criar", "BUTTON_CREATE_CONTACT": "Criar",
"BUTTON_UPDATE_CONTACT": "Atualizar", "BUTTON_UPDATE_CONTACT": "Atualizar",
@ -203,7 +203,7 @@
"ADD_MENU_NICKNAME": "Alcunha", "ADD_MENU_NICKNAME": "Alcunha",
"ADD_MENU_NOTE": "Notas", "ADD_MENU_NOTE": "Notas",
"ADD_MENU_PHONE": "Telefone", "ADD_MENU_PHONE": "Telefone",
"ADD_MENU_URL": "URL", "ADD_MENU_URL": "Website",
"ADD_MENU_ADDRESS": "Morada", "ADD_MENU_ADDRESS": "Morada",
"ADD_MENU_BIRTHDAY": "Aniversário", "ADD_MENU_BIRTHDAY": "Aniversário",
"ADD_MENU_TAGS": "Marcadores", "ADD_MENU_TAGS": "Marcadores",
@ -226,18 +226,18 @@
"NO_ATTACHMENTS_HERE_DESC": "Sem anexos aqui.", "NO_ATTACHMENTS_HERE_DESC": "Sem anexos aqui.",
"ATTACHMENTS_ERROR_DESC": "Aviso! Nem todos os anexos foram carregados.", "ATTACHMENTS_ERROR_DESC": "Aviso! Nem todos os anexos foram carregados.",
"ATTACHMENTS_UPLOAD_ERROR_DESC": "Ainda não foram carregados todos os anexos", "ATTACHMENTS_UPLOAD_ERROR_DESC": "Ainda não foram carregados todos os anexos",
"ALLOW_SPELLCHECK": "Enable browser spelling checker", "ALLOW_SPELLCHECK": "Ativar corretor ortográfico do navegador",
"BUTTON_REQUEST_READ_RECEIPT": "Pedir um recibo de leitura", "BUTTON_REQUEST_READ_RECEIPT": "Pedir um recibo de leitura",
"BUTTON_MARK_AS_IMPORTANT": "Marcar como importante", "BUTTON_MARK_AS_IMPORTANT": "Marcar como importante",
"BUTTON_REQUEST_DSN": "Pedir um recibo de entrega", "BUTTON_REQUEST_DSN": "Pedir um recibo de entrega",
"BUTTON_REQUIRE_TLS": "Require secure delivery" "BUTTON_REQUIRE_TLS": "Exigir entrega segura"
}, },
"POPUPS_ASK": { "POPUPS_ASK": {
"DESC_WANT_CLOSE_THIS_WINDOW": "Tem a certeza de que quer fechar esta janela?", "DESC_WANT_CLOSE_THIS_WINDOW": "Tem a certeza de que quer fechar esta janela?",
"DESC_WANT_DELETE_MESSAGES": "Tem a certeza de que quer eliminar a(s) mensagem(s)?" "DESC_WANT_DELETE_MESSAGES": "Tem a certeza de que quer eliminar a(s) mensagem(s)?"
}, },
"POPUPS_LANGUAGES": { "POPUPS_LANGUAGES": {
"TITLE_LANGUAGES": "Escolha o idioma" "TITLE_LANGUAGES": "Escolha o seu idioma"
}, },
"POPUPS_ADD_ACCOUNT": { "POPUPS_ADD_ACCOUNT": {
"TITLE_ADD_ACCOUNT": "Adicionar conta?", "TITLE_ADD_ACCOUNT": "Adicionar conta?",
@ -316,7 +316,7 @@
"MARK_AS_READ_LABEL": "Marcar como lida", "MARK_AS_READ_LABEL": "Marcar como lida",
"REPLY_INTERVAL_LABEL": "Intervalo de resposta (dias)", "REPLY_INTERVAL_LABEL": "Intervalo de resposta (dias)",
"KEEP_LABEL": "Manter", "KEEP_LABEL": "Manter",
"STOP_LABEL": "Stop further processing of rules", "STOP_LABEL": "Interromper o processamento das regras",
"VACATION_SUBJECT_LABEL": "Assunto (opcional)", "VACATION_SUBJECT_LABEL": "Assunto (opcional)",
"VACATION_MESSAGE_LABEL": "Mensagem", "VACATION_MESSAGE_LABEL": "Mensagem",
"VACATION_RECIPIENTS_LABEL": "Destinatários (separados por vírgula)", "VACATION_RECIPIENTS_LABEL": "Destinatários (separados por vírgula)",
@ -356,16 +356,16 @@
}, },
"EDITOR": { "EDITOR": {
"TEXT_SWITCHER_PLAIN_TEXT": "HTML <-> TEXTO", "TEXT_SWITCHER_PLAIN_TEXT": "HTML <-> TEXTO",
"TEXT_SWITCHER_SOURCE": "HTML <-> SOURCE" "TEXT_SWITCHER_SOURCE": "HTML <-> FONTE"
}, },
"SETTINGS_LABELS": { "SETTINGS_LABELS": {
"GENERAL": "General", "GENERAL": "Geral",
"CONTACTS": "Contacts", "CONTACTS": "Contactos",
"FOLDERS": "Folders", "FOLDERS": "Pastas",
"ACCOUNTS": "Accounts", "ACCOUNTS": "Contas",
"FILTERS": "Filters", "FILTERS": "Filtros",
"SECURITY": "Security", "SECURITY": "Segurança",
"THEMES": "Themes" "THEMES": "Temas"
}, },
"SETTINGS_FILTERS": { "SETTINGS_FILTERS": {
"SIMPLE": "Simples", "SIMPLE": "Simples",
@ -385,7 +385,7 @@
"SETTINGS_GENERAL": { "SETTINGS_GENERAL": {
"LEGEND_GENERAL": "Geral", "LEGEND_GENERAL": "Geral",
"LANGUAGE": "Idioma", "LANGUAGE": "Idioma",
"HOUR_FORMAT": "Hour format", "HOUR_FORMAT": "Formato da hora",
"IDENTITY": "Identidade", "IDENTITY": "Identidade",
"LAYOUT": "Apresentação", "LAYOUT": "Apresentação",
"LAYOUT_NO_SPLIT": "Sem separação", "LAYOUT_NO_SPLIT": "Sem separação",
@ -396,7 +396,7 @@
"EDITOR_PLAIN": "Texto simples", "EDITOR_PLAIN": "Texto simples",
"VIEW_OPTIONS": "Ver opções", "VIEW_OPTIONS": "Ver opções",
"USE_PREVIEW_PANE": "Use o painel de pré-visualização", "USE_PREVIEW_PANE": "Use o painel de pré-visualização",
"HIDE_DELETED_MESSAGES": "Ocultar mensagens marcadas para exclusão", "HIDE_DELETED_MESSAGES": "Ocultar mensagens marcadas para eliminação",
"USE_CHECKBOXES_IN_LIST": "Apresentar caixas de seleção na lista", "USE_CHECKBOXES_IN_LIST": "Apresentar caixas de seleção na lista",
"USE_THREADS": "Usar tópicos de conversa", "USE_THREADS": "Usar tópicos de conversa",
"REPLY_SAME_FOLDER": "Colocar respostas na pasta das mensagens a que responde", "REPLY_SAME_FOLDER": "Colocar respostas na pasta das mensagens a que responde",
@ -404,25 +404,26 @@
"PREFER_HTML_INFO": "Por vezes as mensagens são recebidas em ambos os formatos. Esta opção determina se prefere apresentar o conteúdo em HTML ou em texto simples.", "PREFER_HTML_INFO": "Por vezes as mensagens são recebidas em ambos os formatos. Esta opção determina se prefere apresentar o conteúdo em HTML ou em texto simples.",
"REMOVE_COLORS": "Retirar imagens de fundo e coloração de texto do corpo das mensagens", "REMOVE_COLORS": "Retirar imagens de fundo e coloração de texto do corpo das mensagens",
"MESSAGE_PER_PAGE": "Mensagens por página", "MESSAGE_PER_PAGE": "Mensagens por página",
"CHECK_MAIL_INTERVAL": "Check mail interval", "CHECK_MAIL_INTERVAL": "Intervalo de verificação do correio",
"MARK_MESSAGE_READ_AFTER": "Marcar mensagem como lida após", "MARK_MESSAGE_READ_AFTER": "Marcar mensagem como lida após",
"MSG_DEFAULT_ACTION": "Default action", "MSG_DEFAULT_ACTION": "Ação predefinida",
"SECONDS": "segundos", "SECONDS": "segundos",
"MINUTES": "minutes", "MINUTES": "minutos",
"NOTIFICATIONS": "Notificações", "NOTIFICATIONS": "Notificações",
"SOUND_NOTIFICATION": "Notificações sonoras", "SOUND_NOTIFICATION": "Notificações sonoras",
"CHROME_NOTIFICATION_DESC": "Apresentar notificações para novas mensagens", "CHROME_NOTIFICATION_DESC": "Apresentar notificações para novas mensagens",
"CHROME_NOTIFICATION_DESC_DENIED": "(Bloqueado pelo navegador)", "CHROME_NOTIFICATION_DESC_DENIED": "(Bloqueado pelo navegador)",
"COLLAPSE_BLOCKQUOTES": "Collapse quoted text", "COLLAPSE_BLOCKQUOTES": "Minimizar texto citado",
"MAX_QUOTE_LEVEL": "Maximum visible quoted text levels", "MAX_QUOTE_LEVEL": "Níveis máximos de texto citado visíveis",
"LIST_INLINE_ATTACHMENTS": "Show inline attachments in list", "LIST_INLINE_ATTACHMENTS": "Mostrar na lista de anexos os anexos integrados no corpo",
"LIST_SIMPLE_ATTACHMENTS": "Simple attachments list", "LIST_SIMPLE_ATTACHMENTS": "Lista simples de anexos",
"LIST_MESSAGES_GROUPED": "List messages grouped (when sorting by date or from)", "LIST_MESSAGES_GROUPED": "Agrupar mensagens listadas (quando ordenadas por data ou remetente)",
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "Imagens externas",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Perguntar sempre",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Lista Branca ou perguntar",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_DKIM": "Mostrar sempre que DKIM for válido",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_OPTION_ALWAYS": "Mostrar sempre",
"IMAGES_WHITELIST": "Lista Branca de imagens"
}, },
"SETTINGS_CONTACTS": { "SETTINGS_CONTACTS": {
"LABEL_CONTACTS_AUTOSAVE": "Adicionar destinatários automaticamente à sua lista de endereços", "LABEL_CONTACTS_AUTOSAVE": "Adicionar destinatários automaticamente à sua lista de endereços",
@ -436,7 +437,7 @@
"SETTINGS_THEMES": { "SETTINGS_THEMES": {
"LEGEND_THEMES": "Temas", "LEGEND_THEMES": "Temas",
"LABEL_BACKGROUND": "Imagem de fundo", "LABEL_BACKGROUND": "Imagem de fundo",
"LABEL_FONTS": "Fonts", "LABEL_FONTS": "Tipos de letra",
"BUTTON_UPLOAD_BACKGROUND_IMAGE": "Carregar imagem de fundo (JPG, PNG)", "BUTTON_UPLOAD_BACKGROUND_IMAGE": "Carregar imagem de fundo (JPG, PNG)",
"ERROR_FILE_IS_TOO_BIG": "Ficheiro muito grande", "ERROR_FILE_IS_TOO_BIG": "Ficheiro muito grande",
"ERROR_FILE_TYPE_ERROR": "Tipo de ficheiro inválido (apenas JPG e PNG)", "ERROR_FILE_TYPE_ERROR": "Tipo de ficheiro inválido (apenas JPG e PNG)",
@ -457,8 +458,8 @@
"HELP_DELETE_FOLDER": "Eliminar pasta", "HELP_DELETE_FOLDER": "Eliminar pasta",
"HELP_SHOW_HIDE_FOLDER": "Mostrar\/ocultar pasta", "HELP_SHOW_HIDE_FOLDER": "Mostrar\/ocultar pasta",
"HELP_CHECK_FOR_NEW_MESSAGES": "Procurar\/não procurar novas mensagens", "HELP_CHECK_FOR_NEW_MESSAGES": "Procurar\/não procurar novas mensagens",
"HIDE_UNSUBSCRIBED": "Esconder pastas não-subscritas", "HIDE_UNSUBSCRIBED": "Esconder pastas não subscritas",
"UNHIDE_KOLAB_FOLDERS": "Unhide Kolab folders", "UNHIDE_KOLAB_FOLDERS": "Tonar pastas Kolab visíveis",
"TYPE_CALENDAR": "Calendário", "TYPE_CALENDAR": "Calendário",
"TYPE_CONFIGURATION": "Configuração", "TYPE_CONFIGURATION": "Configuração",
"TYPE_CONTACTS": "Contactos", "TYPE_CONTACTS": "Contactos",
@ -474,7 +475,7 @@
"BUTTON_ADD_ACCOUNT": "Adicionar uma conta", "BUTTON_ADD_ACCOUNT": "Adicionar uma conta",
"BUTTON_ADD_IDENTITY": "Adicionar uma identidade", "BUTTON_ADD_IDENTITY": "Adicionar uma identidade",
"LOADING_PROCESS": "A atualizar...", "LOADING_PROCESS": "A atualizar...",
"SHOW_UNREAD": "Show unread messages count" "SHOW_UNREAD": "Mostrar contador de mensagens não lidas"
}, },
"SETTINGS_OPENPGP": { "SETTINGS_OPENPGP": {
"BUTTON_IMPORT_KEY": "Importar chave", "BUTTON_IMPORT_KEY": "Importar chave",
@ -522,11 +523,11 @@
"LABEL_CLOSE_COMPOSE": "Fechar janela de composição" "LABEL_CLOSE_COMPOSE": "Fechar janela de composição"
}, },
"NOTIFICATIONS": { "NOTIFICATIONS": {
"REQUEST_ERROR": "Request failed", "REQUEST_ERROR": "A solicitação falhou",
"REQUEST_ABORTED": "Request is aborted", "REQUEST_ABORTED": "A solicitação foi abortada",
"REQUEST_TIMEOUT": "Request timed out", "REQUEST_TIMEOUT": "A solicitação expirou",
"INVALID_TOKEN": "Token inválido", "INVALID_TOKEN": "Token inválido",
"AUTH_ERROR": "Falha na autenticação", "AUTH_ERROR": "A autenticação falhou",
"CONNECTION_ERROR": "Não foi possível ligar ao servidor", "CONNECTION_ERROR": "Não foi possível ligar ao servidor",
"DOMAIN_ALREADY_EXISTS": "O domínio já existe", "DOMAIN_ALREADY_EXISTS": "O domínio já existe",
"DOMAIN_NOT_ALLOWED": "Este domínio não é permitido", "DOMAIN_NOT_ALLOWED": "Este domínio não é permitido",

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -421,6 +421,7 @@
"EXTERNAL_IMAGES": "External images", "EXTERNAL_IMAGES": "External images",
"IMAGES_OPTION_ASK": "Always ask", "IMAGES_OPTION_ASK": "Always ask",
"IMAGES_OPTION_WHITELIST": "Whitelist or ask", "IMAGES_OPTION_WHITELIST": "Whitelist or ask",
"IMAGES_OPTION_DKIM": "Show always when DKIM is valid",
"IMAGES_OPTION_ALWAYS": "Show always", "IMAGES_OPTION_ALWAYS": "Show always",
"IMAGES_WHITELIST": "Images whitelist" "IMAGES_WHITELIST": "Images whitelist"
}, },

View file

@ -279,8 +279,19 @@
</span> </span>
</div> </div>
<div class="showImages" data-bind="visible: message().hasImages(), click: showImages" <div class="showImages" data-bind="visible: message().hasImages()">
data-icon="🖼" data-i18n="MESSAGE/BUTTON_SHOW_IMAGES"></div> <div class="btn" data-bind="click: showImages" data-icon="🖼" data-i18n="MESSAGE/BUTTON_SHOW_IMAGES"></div>
<div class="btn-group" data-bind="registerBootstrapDropdown: true" style="display: inline-block">
<a class="btn dropdown-toggle" id="whitelist-dropdown-id" data-icon="🖼" href="#" tabindex="-1"><span data-i18n="SETTINGS_GENERAL/IMAGES_WHITELIST"></span></a>
<menu class="dropdown-menu right-edge" role="menu" aria-labelledby="whitelist-dropdown-id">
<!-- ko foreach: message().whitelistOptions() -->
<li role="presentation">
<a href="#" tabindex="-1" data-bind="click: $root.whitelistText, text: $data"></a>
</li>
<!-- /ko -->
</menu>
</div>
</div>
</div> </div>
<div class="openpgp-control encrypted" data-bind="visible: message().pgpEncrypted(), css: {'success': message().pgpDecrypted()}"> <div class="openpgp-control encrypted" data-bind="visible: message().pgpEncrypted(), css: {'success': message().pgpDecrypted()}">

View file

@ -231,6 +231,7 @@
<select data-bind="value: viewImages"> <select data-bind="value: viewImages">
<option value="ask" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_ASK"></option> <option value="ask" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_ASK"></option>
<option value="match" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_WHITELIST"></option> <option value="match" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_WHITELIST"></option>
<option value="dkim" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_DKIM"></option>
<option value="always" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_ALWAYS"></option> <option value="always" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_ALWAYS"></option>
</select> </select>
</div> </div>

View file

@ -4,6 +4,7 @@
--main-color: #333; --main-color: #333;
--main-bg-color: #48525C; --main-bg-color: #48525C;
--main-bg-image: url("images/background.jpg"); --main-bg-image: url("images/background.jpg");
--main-bg-size: cover;
/* LOADING */ /* LOADING */
--loading-color: #fff; --loading-color: #fff;

View file

@ -4,6 +4,7 @@
--main-color: #333; --main-color: #333;
--main-bg-color: #B3274E; --main-bg-color: #B3274E;
--main-bg-image: url("images/background.jpg"); --main-bg-image: url("images/background.jpg");
--main-bg-size: cover;
/* LOADING */ /* LOADING */
--loading-color: #fff; --loading-color: #fff;

View file

@ -4,6 +4,7 @@
--main-color: #333; --main-color: #333;
--main-bg-color: #48525C; --main-bg-color: #48525C;
--main-bg-image: url("images/background.jpg"); --main-bg-image: url("images/background.jpg");
--main-bg-size: cover;
/* LOADING */ /* LOADING */
--loading-color: #fff; --loading-color: #fff;

View file

@ -6,6 +6,7 @@
--main-color: #fff; --main-color: #fff;
--main-bg-color: #48525C; --main-bg-color: #48525C;
--main-bg-image: url("images/background.jpg"); --main-bg-image: url("images/background.jpg");
--main-bg-size: cover;
/* LOADING */ /* LOADING */
--loading-color: #ddd; --loading-color: #ddd;

View file

@ -4,6 +4,7 @@
--main-color: #333; --main-color: #333;
--main-bg-color: #010101; --main-bg-color: #010101;
--main-bg-image: url("images/background.jpg"); --main-bg-image: url("images/background.jpg");
--main-bg-size: cover;
/* LOADING */ /* LOADING */
--loading-color: #fff; --loading-color: #fff;

View file

@ -1,5 +1,7 @@
:root { :root {
color-scheme: light;
/* MAIN */ /* MAIN */
--main-color: #333; --main-color: #333;
--main-bg-color: #e3e3e3; --main-bg-color: #e3e3e3;
@ -103,6 +105,3 @@
--smDialogShrink: 20px; --smDialogShrink: 20px;
--smMainShadow: 0 2px 8px rgba(0, 0, 0, 0.2); --smMainShadow: 0 2px 8px rgba(0, 0, 0, 0.2);
} }
.rl-mobile {
--smDialogShrink: 50px;
}